/**
* Stellt die Funktionalität für AccessKey-Ein/Ausblendung zur Verfügung
*
* @package madChickAccessKey
* @author Ralf Glaser
*
*
* Script einbinden:
* =================
* <script language="JavaScript" type="text/JavaScript" src="madChickAccessKey.class.js" />
*	
*		
* Links mit AccessKeys einbinden:
* =======================
* <span id="accessKey_1" class="accessKey">1</span> <a accessKey="1" href="#">Punkt 1</a><br />
* <span id="accessKey_2" class="accessKey">2</span> <a accessKey="2" href="#">Punkt 2</a><br />
* <span id="accessKey_3" class="accessKey">3</span> <a accessKey="3" href="#">Punkt 3</a><br />
*
* Wenn AccessKeys standardmäßig ausgeblendet sein sollen muss in der
* CSS-Klasse "accessKey" visiblity:hidden gesetzt sein
*
*/

function madChickAccessKeyEngine()  {
	
	var machine=this;
	
	this.cookieName='madChickAccessKey';
	this.states=new Array('hidden','visible');
	this.idPrefix='accessKey_';
	
	this.accessKeyVisibility=this.states[0];
	this.timerObj=false;
	
	/*********************/
	/*    public         */
	/*********************/
	
	// --------------------------------------------------------------------------------
	this.changeVisibility= function()  {
		
		this.accessKeyVisibility=(this.accessKeyVisibility==this.states[1] ? this.states[0] : this.states[1]);
		
		this.setVisibility();
		
		this.setCookie();
		
	}
	
	
	/*********************/
	/*    private        */
	/*********************/
	
	// --------------------------------------------------------------------------------
	this.init= function()  {
		
		this.readCookie();
			
		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.setVisibility();
				
		}
			
	}
		
	// --------------------------------------------------------------------------------
	this.checkLoaded= function()  {
		
		if (document.getElementsByTagName('body')[0] && document.getElementsByTagName('body')[0].lastChild) {
				
			return true;
				
		} else {
			
			return false;
			
		}
		
	}

	// --------------------------------------------------------------------------------
	this.readCookie= function()  {
		
		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);
			this.accessKeyVisibility=(cookies.substring(cookieStart,cookieEnd).toLowerCase()==this.states[1] ? this.states[1] : this.states[0]);
						
		} else {
			
			this.accessKeyVisibility=this.states[0];
		}
	
	}
	
	//-----------------------------------------------------------------------------
	this.setCookie=function()  {
	
		if (navigator.cookieEnabled==true)	{
			
			// store in cookie
			document.cookie=this.cookieName+'='+this.accessKeyVisibility+'; path=/; domain='+location.host;	
		
		} else {
			
			alert('Ihr Browser ist so eingestellt, dass er das Setzen eines Cookies nicht zuläßt.\n\nDie Schriftgrößen-Einstellung kann deshalb nicht dauerhaft gespeichert werden.');
			
		}

	}
	
	// --------------------------------------------------------------------------------
	this.setVisibility= function()  {
		
		for (i=0;i<10;i++)  {
			
			if (this.getStyleObj(this.idPrefix+i)) {
					
				this.getStyleObj(this.idPrefix+i).visibility=this.accessKeyVisibility;
					
			}
		
		}
		
	}
	
	// --------------------------------------------------------------------------------
	this.getStyleObj= function(id)  {
		
		return (document.getElementById && document.getElementById(id) ? document.getElementById(id).style : false);
				
	}
	
	
		
	this.init();
			
}

madChickAccessKey=new madChickAccessKeyEngine();