/*
 
 MARBLE CAKE
 useragent.js
 
 Version 1.2.1(2010-02-27)
 
 (c) Nekobungi Sumire 2009-2010
 
 */


/*
 Apple WebKit -----------------------------------------------
 
 isAppleWebkit   WebKitなら真
 isPlainSafari   デスクトップ版Safariなら真
 isWebkitTablet  iPad用Safariなら真
 isWebkitMobile  iPhone/iPod touch用Safariなら真
 isGoogleChrome  Google Chromeなら真
 kitVersion      WebKitのバージョン
                 参考:
                      532 = Chrome 3.0 = ruby要素に対応
                      525 = Safari 3.1 = webkit-transform/transition等、最新のCSSに対応
                      412 = Safari 2.0 = Mac OS X 10.4の最低バージョン
                      0   = WebKitではない
 */

var VersionPoints = new Array(')', 'a', 'b', 'p', ';', ' ');

var isWebkitTablet = false;
var isWebkitMobile = false;
var isPlainSafari = false;
var isGoogleChrome = false;
var kitVersion = 0;

var isAppleWebkit = (navigator.userAgent.indexOf('AppleWebKit/') != -1);

if(isAppleWebkit){
	kitVersion = (navigator.userAgent.split('AppleWebKit/'))[1];
	kitVersion = (kitVersion.split('.'))[0];
	for(i = 0; VersionPoints[i]; i++){
		if(kitVersion.indexOf(VersionPoints[i]) != -1){
			kitVersion = (kitVersion.split(VersionPoints[i]))[0];
		}
	}
	
	if(navigator.userAgent.indexOf('iPad') != -1){
		isWebkitTablet = true;
	}else if(navigator.userAgent.indexOf('Mobile') != -1){
		isWebkitMobile = true;
	}else if(navigator.userAgent.indexOf('Chrome/') != -1){
		isGoogleChrome = true;
	}else{
		isPlainSafari = true;
	}
}



/*
 Gecko -----------------------------------------------
 
 isGecko         Geckoなら真
 GeckoVersion    Geckoのバージョン
                 参考:
                      1090300 = 1.9.3.0 = moz-transitionに対応
                      1090100 = 1.9.1.0 = moz-transformに対応
 */

var isGecko = false;
var GeckoVersion = 0;
var GeckoVerArry = new Array();

if(!isAppleWebkit){
	isGecko = (navigator.userAgent.indexOf('Gecko/') != -1);
}
if(isGecko){
	GeckoVersion = (navigator.userAgent.split(' rv:'))[1];
	var VersionPoints = new Array(')', 'a', 'b', 'p', ';', ' ');
	
	for(i = 0; VersionPoints[i]; i++){
		if(GeckoVersion.indexOf(VersionPoints[i]) != -1){
			GeckoVersion = (GeckoVersion.split(VersionPoints[i]))[0];
		}
	}
	GeckoVerArry = GeckoVersion.split('.');
	if(GeckoVerArry.length == 1){
		GeckoVerArry[1] = 0;
	}
	if(GeckoVerArry.length == 2){
		GeckoVerArry[2] = 0;
	}
	if(GeckoVerArry.length == 3){
		GeckoVerArry[3] = 0;
	}
	for(i = 0; i <= 3; i++){
		GeckoVerArry[i] = parseInt(GeckoVerArry[i]);
	}
	GeckoVersion = GeckoVerArry[0] * 1000000 + GeckoVerArry[1] * 10000 + GeckoVerArry[2] * 100 + GeckoVerArry[3] * 1;
}



/*
 Presto -----------------------------------------------
 
 isPresto         Prestoなら真
 */

var isPresto = (navigator.userAgent.indexOf('Presto/') != -1);



/*
 Trident -----------------------------------------------
 
 isTrident         Tridentなら真
 */

var isTrident = (navigator.userAgent.indexOf('MSIE') != -1);



/*
 CSS3対応状況 -----------------------------------------------
 
 css3notransform   trueならtransform未対応
 css3notransition  trueならtransition未対応
 
 */

var css3notransform = false;
var css3notransition = false;

if((isAppleWebkit && kitVersion < 525) || (isGecko && GeckoVersion < 1090100) || isTrident || isPresto){
	css3notransform = true;
}
if((isAppleWebkit && kitVersion < 525) || (isGecko && GeckoVersion < 1090300) || isTrident || isPresto){
	css3notransition = true;
}



/*
 ブラウザ判別によるCSSクラスの設定 -----------------------------------------------
 
 body要素に各クラスが一つ、または複数付与される。
 
 webkit			WebKit系ブラウザ
 webkitdesktop	WebKit系ブラウザ＋デスクトップコンピュータ (MacやPC上のSafariなど)
 webkittablet	WebKit系ブラウザ＋タブレットコンピュータ (iPad)
 webkitmobile	WebKit系ブラウザ＋モバイルコンピュータ (iPhone、iPod touch)
 mouseUI		ポインティングデバイスとしてマウスを使うコンピュータ
 touchUI		ポインティングデバイスとしてタッチパネルを使うコンピュータ
 
 */

function SetBodyUaClass(){
	var BodyClassName = new Array();
	BodyClassName = document.getElementsByTagName('body')[0].className.split(" ");
	if(isWebkitTablet){
		BodyClassName.push('webkit');
		BodyClassName.push('webkittablet');
		BodyClassName.push('touchUI');
	}else if(isWebkitMobile){
		BodyClassName.push('webkit');
		BodyClassName.push('webkitmobile');
		BodyClassName.push('touchUI');
	}else if(isAppleWebkit){
		BodyClassName.push('webkit');
		BodyClassName.push('webkitdesktop');
		BodyClassName.push('mouseUI');
	}else{
		BodyClassName.push('mouseUI');
	}
	
	if(css3notransform){
		BodyClassName.push('css3notransform');
	}
	if(css3notransition){
		BodyClassName.push('css3notransition');
	}
	
	document.getElementsByTagName('body')[0].className = BodyClassName.join(" ");
}




/*
 Other functions -----------------------------------------------
 */

function browserLang(){
	if(navigator.language){
		return navigator.language;
	}else if(navigator.browserLanguage){
		return navigator.browserLanguage;
	}else if(navigator.userLanguage){
		return navigator.userLanguage;
	}else{
		return 'en';
	}
}