/**
* Stellt die Funktionalität für alternative Stylesheets zur Verfügung
*
* @package madChickStyle
* @author Ralf Glaser
*
* Voraussetzungen:
* ================
* Es wird zwischen einem Basis-Style und Farb-Styles unterschieden:
*	Es wird genau ein Basis-Style definiert, dass nur Formatierungsanweisungen enthält,
* aber möglichst keine Farbangaben. Dieses Style ist immer aktiv.
* 
* In den Farb-Styles sind möglichst keine Formatierunsanweisungen enthalten sondern
* nur Farbangaben. Es ist immer nur das gewählte Farb-Style aktiv, alle anderen
* Farb-Styles werden vom Skript deaktiviert.
* Alle Farb-Styles müssen ein eindeutiges title-Attribute erhalten.
* Das Default-Farb-Style hat als rel-Attribute "stylesheet"
* die alternativen Farb-Style haben "alternate stylesheet".
*
* z.B.:
* <link rel="stylesheet" type="text/css" href="basic.css" />
*	<link rel="stylesheet" type="text/css" href="color.css" title="color" />
*	<link rel="alternate stylesheet" type="text/css" href="blackOnWhite.css" title="blackOnWhite" />
*	<link rel="alternate stylesheet" type="text/css" href="whiteOnBlack.css" title="whiteOnBlack" />
* 
*
* Script einbinden:
* =================
* <script language="JavaScript" type="text/JavaScript" src="madChickStyle.class.js" />
*	
* Steuer-Panel einbinden:
* =======================
* <a href="javascript:madChickStyle.changeStyle('blackOnWhite');">schwarz auf weiß</a><br />
* <a href="javascript:madChickStyle.changeStyle('color');">standard</a><br />
* <a href="javascript:madChickStyle.changeStyle('whiteOnBlack');">weiß auf schwarz</a><br />
*
*/


function madChickStyleEngine()  {
	
	var machine=this;
	
	this.cookieName='madChickStyle';
	this.currentStyle='';
	this.timerObj=false;
	
	/*********************/
	/*    public         */
	/*********************/
	
	
	
	//-----------------------------------------------------------------------------
	this.changeStyle= function(name)  {

		if (name) {
			
			this.useStyle(name);
						
			this.setCookie();
			
		} else {

			alert('Bitte definieren Sie den Style-Title');
						
		}
		
	}

	/*********************/
	/*    private        */
	/*********************/
	
	//-----------------------------------------------------------------------------
	this.init=function()  {
	
		
			
		this.timerObj=setInterval(this.onLoadFunction,500);
		
	}

	//-----------------------------------------------------------------------------
	this.onLoadFunction=function() {
		
		// must be defined seperate, otherwise IE5 crashes!
		// use 'machine', not 'this'
			
		if (document.getElementsByTagName('body')[0] && document.getElementsByTagName('body')[0].lastChild) {
				
			clearInterval(machine.timerObj);
			
			machine.checkCookie(); 
			if (machine.currentStyle) machine.changeStyle(machine.currentStyle);
			
		}
			
	}
		
	//-----------------------------------------------------------------------------
	this.useStyle=function(name)  {
		
		stylesheets=document.getElementsByTagName("link");

		for (i=0;i<stylesheets.length;i++) {
						
			stylesheet=stylesheets[i];
						
			if (stylesheet.getAttribute('rel') && stylesheet.getAttribute('rel').indexOf('style')>-1) {
			
				styleTitle=String((stylesheet.getAttribute("title") ? stylesheet.getAttribute("title") : ''));
				
				if (styleTitle) {
									
					if (name.toLowerCase()==styleTitle.toLowerCase()) {
				
						activeStyle=i;
						this.currentStyle=name;
      		      		
					}
				
					stylesheets[i].disabled= true;
      		
	      }

			}

		}

		stylesheets[activeStyle].disabled= false;
		//window.status=stylesheets[activeStyle].getAttribute("title");

	}
	
	//-----------------------------------------------------------------------------
	this.setCookie=function()  {
	
		if (navigator.cookieEnabled==true)	{
	
			document.cookie=this.cookieName+'='+this.currentStyle+'; path=/; domain='+location.host;	
			
		} else {
			
			alert('Ihr Browser ist so eingestellt, dass er das Setzen eines Cookies nicht zuläßt.\n\nDie Einstellung kann deshalb nicht dauerhaft gespeichert werden.');
			
		}

		return true;

	}
	
	//-----------------------------------------------------------------------------
	this.checkCookie=function(id)  {
		
		var cookieStart=document.cookie.indexOf(this.cookieName+'=');
		
		if (cookieStart>-1) {

			cookieStart+=this.cookieName.length+1;
			var cookies=document.cookie;
			var cookieEnd=cookies.indexOf(';',cookieStart);
			cookieEnd=(cookieEnd>0 ? cookieEnd : cookies.length);
			var cookieStyle=cookies.substring(cookieStart,cookieEnd);
													
			if (cookieStyle && cookieStyle!=this.currentStyle) {
			
				this.currentStyle=cookieStyle;
				
			}
	
		} 
		
	}


	this.init();
	
}
	
madChickStyle=new madChickStyleEngine();

