/*
 * SSSelector Ver.2 T&D-Edition
 * need ECMAScript 3rd edition
 * 
 * Copyright (C) ArtStaff.CO.,LTD.
 * 
 * This work is licensed for under the reversion 2.1 Japanese license of creative Commons.
 * Please refer to creative Commons for whether you check
 * [http://creativecommons.org/licenses/by/2.1/jp/] to watch this licensing condition by mail.
 * An addressF It is 559 94305, Nathan Abbott Way, Stanford, California USA.
 *
 *
 * Check by javascript function...
 * document.styleSheets [ IE4 | WinIE5 | WinIE6 | MacIE5 | Netscape6 ]
 * document.getElementById [ WinIE5 | WinIE6 | MacIE5 | Netscape6 | iCabPre 2.51]
 */
 
 /*
 	* SSSelector class
	* SSSelector( element bame , default style title, [cookie name])
	*/
function SSSelector(CamvasObj, DefaultStyleTitle, CookieName){
	//alert("Flg 14 : " + navigator.cookieEnabled);
	/* function Check */
	if(typeof(document.styleSheets)=='undefined'){
		/*
		 * too Old!
		 */
		return false;
	}else if(navigator.cookieEnabled!=true){
		/*
		 * Cookie un enabled
		 */
		return false;
	}else if (document.getElementById){
		/* OK */
		this.init(CamvasObj, DefaultStyleTitle, CookieName);
	}
}
SSSelector.prototype = {
	CookieName : 'SSSelector',
	DefaultStyleTitle : '',
	SelectorElement : '',
	UserStyleTitle : '',
	CamvasName : '',
	CamvasObj : null,
	
	init : function(CamvasObj, DefaultStyleTitle, CookieName){
		this.DefaultStyleTitle = DefaultStyleTitle;
		this.CamvasObj = CamvasObj;

		/* set cookie name */
		if(typeof(CookieName)!="undefined"){
			this.CookieName = CookieName;
		}
		
		/* get cookie value */
		this.UserStyleTitle = this.getUserStyleTitle();
		
		/* stylesheet-link set disable */
		this.initStyle();
		this.drawSelector();
	},
	
	initStyle : function (){
		var notSafariFlg = false;

		for(var i=0; i<document.styleSheets.length; i++){
			if(document.styleSheets[i].title != null && document.styleSheets[i].title.length !=0){
				document.styleSheets[i].disabled = (document.styleSheets[i].title != this.UserStyleTitle);
				notSafariFlg = true;
			}
		}
		
		if(notSafariFlg == false){
			// Safari
			for (var i = 0; i < document.getElementsByTagName("link").length; i++) {
				if(document.getElementsByTagName("link")[i].title != null && document.getElementsByTagName("link")[i].title.length !=0){
					document.getElementsByTagName("link")[i].disabled = (document.getElementsByTagName("link")[i].title != this.UserStyleTitle);
				}
			}
		}else{
			//alert("Not Safari");
		}
	},
	
	drawSelector : function (){
		var myHtmlArray= new Array();
		var notSafariFlg = false;
			
		for(var i=0; i<document.styleSheets.length; i++){
			if(document.styleSheets[i].title != null && document.styleSheets[i].title.length !=0){
				notSafariFlg = true;
				var CurrentObj = document.styleSheets[i];
			
				var myStyle = this.makeClassName(CurrentObj.href);
				if(CurrentObj.title == this.UserStyleTitle){
					myHtmlArray[myHtmlArray.length] = "<a href=\"#\" class=\""+myStyle+"-actv\"onClick=\"sss.switchStyle('"+CurrentObj.title+"');\">" <!-- + CurrentObj.title + --> "</a>";
				}else{
					myHtmlArray[myHtmlArray.length] = "<a href=\"#\" class=\""+myStyle+"\"onClick=\"sss.switchStyle('"+ CurrentObj.title+"');\">" <!-- + CurrentObj.title + --> "</a>";
				}
			}
		}
		if(notSafariFlg == false){
			// Safari
			for (var i = 0; i<document.getElementsByTagName("link").length; i++) {
				var CurrentObj = document.getElementsByTagName("link")[i];

				if(CurrentObj.title.length!=0 &&  (CurrentObj.rel=="stylesheet" || CurrentObj.rel=="alternate stylesheet")){
						
					var myStyle = this.makeClassName(CurrentObj.href);
					if(CurrentObj.title==this.UserStyleTitle){
						myHtmlArray[myHtmlArray.length] = "<a href=\"#\" class=\""+myStyle+"-actv\"onClick=\"sss.switchStyle('"+CurrentObj.title+"');\">" <!-- + CurrentObj.title + --> "</a>";
					}else{
						myHtmlArray[myHtmlArray.length] = "<a href=\"#\" class=\""+myStyle+"\"onClick=\"sss.switchStyle('"+CurrentObj.title+"');\">" <!-- + CurrentObj.title + --> "</a>";
					}
				}
			}
		}else{
			//alert("Not Safari 2");
		}
		
		var bfr = '<table width="48" border="0" cellpadding="0" cellspacing="0" summary="文字サイズ変更：レイアウトテーブル"><tr><th> </th><td>';
		var aft = '</td></tr></table>';
			
		this.CamvasObj.innerHTML = bfr + myHtmlArray.join("<span class=\"sepalator\">|</span>") + aft;
		//alert(this.CamvasObj.innerHTML);
	},
	
	switchStyle : function (StyleTitle){
		setCookie(this.CookieName, StyleTitle, 30);
		this.UserStyleTitle = StyleTitle;
		this.initStyle();
		this.drawSelector();
	},
	
	getUserStyleTitle : function (){
		/* try get cookie. if cookie is null than set dafault value */
		var TempStyleTitle = getCookie(this.CookieName);
		if(TempStyleTitle==""){
			setCookie(this.CookieName, this.DefaultStyleTitle, 30);
			window.status = this.DefaultStyleTitle;
			return this.DefaultStyleTitle;
		}
		
		/* check cookie value. if unvalied than set default value */
		var ValidFlg = false;
		var notSafariFlg = false;
		
		for(var i=0; i<document.styleSheets.length; i++){
			if(document.styleSheets[i].title!=null){
				notSafariFlg = true;
				if(document.styleSheets[i].title == TempStyleTitle){
					ValidFlg = true;
				}
			}
		}
		if(!notSafariFlg){
			// Safari
			ValidFlg = false;
			for (i = 0; i<document.getElementsByTagName("link").length; i++) {
				var CurrentTitle = document.getElementsByTagName("link")[i].title;
				if(CurrentTitle == TempStyleTitle){
					ValidFlg = true;
				}
			}
		}
		
		if(!ValidFlg){
			setCookie(this.CookieName, this.DefaultStyleTitle, 30);
			return this.DefaultStyleTitle;
		}
		return TempStyleTitle;
	},
	
	makeClassName : function(Url){
		var Start = Url.lastIndexOf("/",Url.length)+1;
		var End = Url.lastIndexOf(".",Url.length);
		return Url.substring(Start, End);
	}
}

/*
 * Cookie
 */
function getCookie(Key) {
	var myValue = "";
	var myCookie = Key + "=";
	var myStr = document.cookie + ";" ;
	var myOfst = myStr.indexOf(myCookie);
	if (myOfst != -1){
		var myStart = myOfst + myCookie.length;
    var myEnd   = myStr.indexOf(";" , myStart);
		myValue = unescape(myStr.substring(myStart,myEnd));
	}
	return myValue;
}

function setCookie(Key, Value, myDay){
	var myExp = new Date();
	myExp.setTime(myExp.getTime()+(myDay*24*60*60*1000));
	var myExpires = "expires="+myExp.toGMTString();
	
	var myItem = Key + "=" + escape(Value) + "; ";
	document.cookie =  myItem + myExpires + "; path=/";
}

function preInitStyle(CookieName){
	document.getElementsByTagName("body")[0].style.visibility = "hidden";
	
	//alert("pre");
	var notSafariFlg = false;
	if(typeof(CookieName)=="undefined"){
		CookieName = "SSSelector";
	}
	var UserStyleTitle = getCookie(CookieName);

	//alert(">>"+document.styleSheets.length);
	
	for(var i=0; i<document.styleSheets.length; i++){
		if(document.styleSheets[i].title != null && document.styleSheets[i].title.length !=0){
			document.styleSheets[i].disabled = (document.styleSheets[i].title != UserStyleTitle);
			notSafariFlg = true;
		}
	}
		
	if(notSafariFlg == false){
		// Safari
		for (var i = 0; i < document.getElementsByTagName("link").length; i++) {
			if(document.getElementsByTagName("link")[i].title != null && document.getElementsByTagName("link")[i].title.length !=0){
				document.getElementsByTagName("link")[i].disabled = (document.getElementsByTagName("link")[i].title != UserStyleTitle);
			}
		}
	}else{
		//alert("Not Safari");
	}
	
	document.getElementsByTagName("body")[0].style.visibility = "visible";;
}

/*
 * T&D customise
 * wrapping onload callback function
 */


var sss = null;
function sssLoad(NavEleID,DefaultStyleTitle){
	if(document.getElementById){
		if(document.getElementById(NavEleID)!=null){
			sss = new SSSelector(document.getElementById(NavEleID),DefaultStyleTitle);
		}else{
			alert("error:Element["+NavEleID+"] is Notfound\n@SSSelector");
		}
	}
}

