

// decrypt helper function
function decryptCharcode(n,start,end,offset)	{
	n = n + offset;
	if (offset > 0 && n > end)	{
		n = start + (n - end - 1);
	} else if (offset < 0 && n < start)	{
		n = end - (start - n - 1);
	}
	return String.fromCharCode(n);
}
// decrypt string
function decryptString(enc,offset)	{
	var dec = "";
	var len = enc.length;
	for(var i=0; i < len; i++)	{
		var n = enc.charCodeAt(i);
		if (n >= 0x2B && n <= 0x3A)	{
			dec += decryptCharcode(n,0x2B,0x3A,offset);	// 0-9 . , - + / :
		} else if (n >= 0x40 && n <= 0x5A)	{
			dec += decryptCharcode(n,0x40,0x5A,offset);	// A-Z @
		} else if (n >= 0x61 && n <= 0x7A)	{
			dec += decryptCharcode(n,0x61,0x7A,offset);	// a-z
		} else {
			dec += enc.charAt(i);
		}
	}
	return dec;
}
// decrypt spam-protected emails
function linkTo_UnCryptMailto(s)	{
	location.href = decryptString(s,-3);
}









var LoginOpener = Class.create();
LoginOpener.prototype = {
	initialize : function() {

		this.loginObj = $('login');
		this.loginFormObj = $('loginForm');

		this.openerLinkObj = $('login_openerLink');
		this.closerLinkObj = $('login_closerLink');

		this.openerObj = $('login_opener');
		this.closerObj = $('login_closer');
		
		this.emailInputObj = $('_ctl0_email');
		this.passInputObj = $('_ctl0_password');
		this.saveInputObj = $('_ctl0_RememberCheckbox');


		Event.observe(this.openerLinkObj, 'click', this.openForm.bindAsEventListener(this), false);
		Event.observe(this.closerLinkObj, 'click', this.closeForm.bindAsEventListener(this), false);

		Event.observe(this.loginFormObj, 'submit', this.submitForm.bindAsEventListener(this), false);



		if(this.getCookie('kpc_email')){
			this.emailInputObj.value = this.getCookie('kpc_email');
		}
		if(this.getCookie('kpc_pass')){
			this.passInputObj.value = this.getCookie('kpc_pass');
		}

	},


	getCookie : function(name){
		var i=0;  //Suchposition im Cookie
		var suche = name+"=";
		while (i<document.cookie.length){
			if (document.cookie.substring(i, i+suche.length)==suche){
				var ende = document.cookie.indexOf(";", i+suche.length);
				ende = (ende>-1) ? ende : document.cookie.length;
				var cook = document.cookie.substring(i+suche.length, ende);
				return unescape(cook);
			}
			i++;
		}
		return null;
	},


	openForm : function(ev){
	    Event.stop(ev);

	    Element.hide(this.openerObj);
	    Element.show(this.closerObj);


	    new Effect.Scale(this.loginObj, 240, { scaleX : false, duration: 0.5 });
	},

	closeForm : function(ev){
	    Event.stop(ev);

	    Element.hide(this.closerObj);
	    Element.show(this.openerObj);

	    new Effect.Scale(this.loginObj, 42, { scaleX : false, duration: 0.5 });
	},


	submitForm : function(ev){
	    Event.stop(ev);

	    if(this.saveInputObj.checked == true) {
		    document.cookie = 'kpc_email='+ this.emailInputObj.value  + ';'; 
		    document.cookie = 'kpc_pass='+ this.passInputObj.value +';'; 
	    } else {
		    document.cookie = 'kpc_email=;'; 
		    document.cookie = 'kpc_pass=;'; 
	    }

	    this.loginFormObj.submit();

	}



}



var Glossary = Class.create();
Glossary.prototype = {
	initialize : function() {

		this.tooltipCounter = 1;

		this.itemClassName = 'glossaryItem';
		this.tooltipClassName = 'glossaryTooltip';
		
		this.bodyObj = document.getElementsByTagName("body").item(0);
		this.torsoObj = $('torso');


		this.itemArr = this.torsoObj.getElementsByClassName(this.itemClassName);


		for(var i = 0, l = this.itemArr.length; i<l; i++)
			this.setupTooltips(this.itemArr[i]);


	},


	setupTooltips : function(itemObj){
		
		this.createTooltip(itemObj);

		Event.observe(itemObj, 'mouseover', this.showTooltip.bindAsEventListener(this), false);
		Event.observe(itemObj, 'mouseout', this.startHideTimer.bindAsEventListener(this), false);
		
	},


	findPos : function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			}
		}
		return [curleft,curtop];
	},



	createTooltip : function(itemObj){

	    var itemId = this.tooltipCounter;

	    tooltipObj = document.createElement('div');
	    Element.extend(tooltipObj);

	    itemObj.setAttribute('id', 'glossaryItem_' + itemId);
	    tooltipObj.setAttribute('id', 'glossaryTooltip_' + itemId);
	    tooltipObj.className = 'glossaryTooltip';
	    tooltipObj.setStyle({display: 'none' });

	    tooltipObj.innerHTML = itemObj.title
	    itemObj.title = '';

	    this.bodyObj.appendChild(tooltipObj);
	    this.tooltipCounter++;    

	    Event.observe(tooltipObj, 'mouseover', this.clearHideTimer.bindAsEventListener(this), false);
	    Event.observe(tooltipObj, 'mouseout', this.startHideTimer.bindAsEventListener(this), false);

	},

	
	startHideTimer : function(ev) {
		Event.stop(ev);
		
		var itemObj = Event.element(ev);
		var itemId = itemObj.id.split('_')[1];

		this.active = itemId;

		tID = window.setTimeout(this.fadeTooltip.bind(this), 100);

	},

	clearHideTimer : function(ev) {
		Event.stop(ev);
		
		if ( window.tID ) {
			clearTimeout(tID);
		}

	},


	showTooltip : function(ev){
		Event.stop(ev);

		this.clearHideTimer(ev);
		this.hideAllTooltips();

		
		var itemObj = Event.element(ev);
		var itemId = itemObj.id.split('_')[1];

		var tooltipObj = $('glossaryTooltip_' + itemId);


		var pos = this.findPos(itemObj);
		var top = pos[1] + 13;
		var left = pos[0];

		tooltipObj.setStyle({top: top + 'px', left: left + 'px'});


		new Effect.Opacity(tooltipObj,  {from: 1, to:1} );
		Element.show(tooltipObj);

	},


	hideAllTooltips : function(){
		tooltipArr = document.getElementsByClassName(this.tooltipClassName);
		tooltipArr.each(this.hideTooltip.bind(this));
	},


	hideTooltip : function(tooltipObj){
		if(tooltipObj.style.display != 'none') {
			Element.hide(tooltipObj);
		}
	},

	fadeTooltip : function(){

		var tooltipObj = $('glossaryTooltip_' + this.active);

		if(typeof tooltipObj != 'undefined'){
			if(tooltipObj.style.display != 'none') {
				//Element.hide(tooltipObj);
				new Effect.Fade(tooltipObj, {duration: 0.5, from: 1, to:0} );
			}
		}

	}


}



function addScripts(){

	if(typeof $('printButton') != 'undefined'){
		Event.observe($('printButton'), 'click', function(ev){Event.stop(ev);window.print();}, false);
	}
	

	var fo = new SWFObject('fileadmin/template/main/swf/kpc_claim.swf', 'mymovie',  '485', '139', '6', '#000000'); 		
	fo.addParam('menu', 'false');
	fo.addParam("wmode", "transparent");
	fo.write('claim');
      
	if(typeof $('videoBox') != 'undefined'){
		var fo = new SWFObject('fileadmin/template/main/swf/videoplayer.swf', 'mymovie',  '450', '280', '8', '#ffffff');
		fo.addParam('menu', 'false');
		fo.write('videoBox');
	}
}





//Event.observe(window,'load', function(){new LoginOpener()}, false);
Event.observe(window,'load', function(){new Glossary()}, false);


Event.observe(window,'load', addScripts, false);
