/*
 
 MARBLE CAKE
 useragent.js
 
 Version 1.2.7(2010-06-03)
 
 (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];
	
	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なら真
 PrestoVersion   Prestoのバージョン
                  参考:
                  20522 = 2.5.22 = Opera 10.50
 
 */

var isPresto = false;
var isPrestoMini = false;
var PrestoVersion = 0;
var PrestoVerArry = new Array();
if(!isAppleWebkit && !isGecko){
	isPresto = (navigator.userAgent.indexOf('Presto/') != -1);
}

if(isPresto){
	PrestoVersion = (navigator.userAgent.split('Presto/'))[1];
	
	for(i = 0; VersionPoints[i]; i++){
		if(PrestoVersion.indexOf(VersionPoints[i]) != -1){
			PrestoVersion = (PrestoVersion.split(VersionPoints[i]))[0];
		}
	}
	PrestoVerArry = PrestoVersion.split('.');
	if(PrestoVerArry.length == 1){
		PrestoVerArry[1] = 0;
	}
	if(PrestoVerArry.length == 2){
		PrestoVerArry[2] = 0;
	}
	if(PrestoVerArry.length == 3){
		PrestoVerArry[3] = 0;
	}
	for(i = 0; i <= 3; i++){
		PrestoVerArry[i] = parseInt(PrestoVerArry[i]);
	}
	PrestoVersion = PrestoVerArry[0] * 10000 + PrestoVerArry[1] * 100 + PrestoVerArry[2];
	
	if(navigator.userAgent.indexOf('Opera Mini') != -1){
		isPrestoMini = true;
	}
}



/*
 Trident -----------------------------------------------
 
 isTrident       Tridentなら真
 MsieVersion       IEのバージョン
 
 */

var isTrident = false;
var MsieVersion = 0;
if(!isAppleWebkit && !isGecko && !isPresto){
	isTrident = (navigator.userAgent.indexOf('MSIE') != -1);
}
if(isTrident){
	MsieVersion = (navigator.userAgent.split('MSIE '))[1];
	MsieVersion = (MsieVersion.split(';'))[0];
	MsieVersion = parseFloat(MsieVersion);
}



/*
 そのたのUA -----------------------------------------------
 
 isUAUnknown     WebKitでもGeckoでもPrestoでもTridentでもなければ真
 */

var isUAUnknown = false;
if(!isAppleWebkit && !isGecko && !isPresto && !isTrident){
	isUAUnknown = true;
}



/*
 CSS3対応状況 -----------------------------------------------
 
 cssNoTransform  trueならtransform未対応
 cssNoTransition trueならtransition未対応
 htmlNoRuby      trueならruby未対応
 
 */

var cssNoTransform = false;
var cssNoTransition = false;
var htmlNoRuby = false;

if((isAppleWebkit && kitVersion < 525) || (isGecko && GeckoVersion < 1090100) || isTrident || (isPresto && PrestoVersion < 20522)){
	cssNoTransform = true;
}
if((isAppleWebkit && kitVersion < 525) || (isGecko && GeckoVersion < 1090300) || isTrident || (isPresto && PrestoVersion < 20522)){
	cssNoTransition = true;
}
if((isAppleWebkit && kitVersion < 532) || isWebkitMobile || isGecko || isPresto){
	htmlNoRuby = true;
}



/*
 ポインティングデバイスとスクリーンサイズの判定 -----------------------------------------------
 
 PointingDevice  'mouse' = マウスカーソル
                 'touch' = タッチパネル
 
 DeviceScreen    'desktop' = デスクトップコンピュータ
                 'tablet' = タブレット
                 'mobile' = モバイル
 
 */

var PointingDevice = 'mouse';
var DeviceScreen = 'desktop';

if(isWebkitTablet){
	PointingDevice = 'touch';
	DeviceScreen = 'tablet';
}else if(isWebkitMobile){
	PointingDevice = 'touch';
	DeviceScreen = 'mobile';
}


/*
 ブラウザ判別による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(isPrestoMini){
		BodyClassName.push('desktop');
		BodyClassName.push('touchUI');
	}else if(isWebkitTablet){
		BodyClassName.push('webkit');
		BodyClassName.push('tablet');
		BodyClassName.push('touchUI');
	}else if(isWebkitMobile){
		BodyClassName.push('webkit');
		BodyClassName.push('mobile');
		BodyClassName.push('touchUI');
	}else if(isAppleWebkit){
		BodyClassName.push('webkit');
		BodyClassName.push('desktop');
		BodyClassName.push('mouseUI');
	}else if(isGecko){
		BodyClassName.push('gecko');
		BodyClassName.push('desktop');
		BodyClassName.push('mouseUI');
	}else if(isTrident){
		BodyClassName.push('trident');
		BodyClassName.push('desktop');
		BodyClassName.push('mouseUI');
		BodyClassName.push('msie' + MsieVersion);
	}else if(isPresto){
		BodyClassName.push('presto');
		BodyClassName.push('desktop');
		BodyClassName.push('mouseUI');
	}else{
		BodyClassName.push('desktop');
		BodyClassName.push('mouseUI');
	}
	
	if(cssNoTransform){
		BodyClassName.push('cssNoTransform');
	}
	if(cssNoTransition){
		BodyClassName.push('cssNoTransition');
	}
	if(htmlNoRuby){
		BodyClassName.push('htmlNoRuby');
	}
	
	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 'ja';
	}
}