// copyright www.cg3d.de
var showing = null;
var hiding = null;
var fade_started=0;

// important
function writelog (message) {
	if (typeof writelog.element == "undefined")
		writelog.element = document.getElementById("log-paragraph");
		writelog.element.innerHTML += message + "<br>";
}

// function for Mozilla contains method
// if (window.Node && Node.prototype && !Node.prototype.contains) {
	//	Node.prototype.contains = function (arg) {
		//	return !!(this.compareDocumentPosition(arg) & 16);
		// };
// }

// fade in
function einblenden (e) {
	window.clearTimeout(hiding);

	e = e || window.event;
	var target = e.target || e.srcElement;
	var fromElement = e.relatedTarget || e.fromElement || false;
	
	// fehler -> exit
	if (this.untermenuEingeblendet) {
		// writelog("over  IGNORIERT  target:" + target.tagName + "   from:" + fromElement.tagName); 
		return;
	}
	
	// einblenden 
	var strBlendIn = document.getElementById("acc");
		// if object is fully transparent, fade in
		if (strBlendIn.style.opacity != 1 && strBlendIn.style.opacity != 100) {
			
			// if there is a fading going on exit else start fading
			if(fade_started!=0) {return;} else {fade_started=1;}
			
			// show acc, set to 100% opacity
			showing = window.setTimeout("opacity('" + strBlendIn.id + "', 0, 100, 99)", 0);
			window.setTimeout("fade_started=0", 101);
		} else { 
			fade_started =0; 
		}
	
	// required !
	this.untermenuEingeblendet = true;
	// writelog("over  >>> EINBLENDEN  target:" + target.tagName + "   from:" + fromElement.tagName);
}

// fade out
function ausblenden (e) {
	e = e || window.event;
	var target = e.target || e.srcElement;
	var toElement = e.relatedTarget || e.toElement || false;
	
	// contain fix
	if (target.tagName != "DIV") {return;} else if (toElement.tagName != "DIV" && toElement.tagName != "HTML") {return;}
	
	// fehler -> exit
	// if (this.contains(toElement)) {
		// writelog("!! out   IGNORIERT  target:" + target.tagName + "   to:" + toElement.tagName);
	 	// return;
	// }
	
	// ausblenden 
	var strBlendOut = document.getElementById("acc");
	if (strBlendOut.style.opacity != 0)  {
		// if there is a fading going on exit else start fading
		if(fade_started!=0) {return;} else {fade_started=1;}
			
		// hide acc, set to opacity 0
		hiding = window.setTimeout("opacity('" + strBlendOut.id + "', 100, 0, 350)", 700);
		window.setTimeout("fade_started=0", 1052);
	} else { 
		fade_started =0;
	}
		
	this.untermenuEingeblendet = false;
	// writelog("out   <<< AUSBLENDEN  target:" + target.tagName + "   to:" + toElement.tagName);
}

// setup events for fading
function fadeSetup () {
	// events für gMenu hover
	var Menu = document.getElementById("gMenu");
	Menu.untermenuEingeblendet = false;
	Menu.onmouseover = einblenden;
	Menu.onmouseout = ausblenden;
		
	// assign menu transparency to make calid css, change visibilty to avoid flicker on load
	var MyAcc = document.getElementById("acc")
	MyAcc.style.opacity = 0; 
	MyAcc.style.filter = "alpha(opacity=" + 0 + ")";
	MyAcc.style.visibility = "visible"; // on load fix
}

// init accordion menu links
function initAcc() {	
	// get doc url and extract html file documentname without extension
	var ur = window.location.pathname;
	var d_url = ur.substring(ur.lastIndexOf("\/")+1,ur.lastIndexOf("\."));
	d_url = d_url.toLowerCase();
	// alert("Dateiname ohne extension: " + d_url);
		
	// get acc and all li child nodes, iterate
	var MyAcc = document.getElementById("acc");
	var arrLi = MyAcc.getElementsByTagName("li");
	var strMenuTitle = MyAcc.title.toLowerCase(); MyAcc.title = "";
	var strH3 = null;
	var strA = null;
	var arrLiCn = new Array(); 
	var arr_links = new Array();
	var intSelectedIndex = -1;
		
	for (s=0;s<arrLi.length;s++) {
		// alert("s_Number: " + s + "\nCurrent tagName: " + arrLi[s].tagName);
		strH3 = arrLi[s].getElementsByTagName("h3")[0].innerHTML.toLowerCase();
		// alert(strH3);	
		arr_links = arrLi[s].getElementsByTagName("a");

		for (a=0;a<arr_links.length;a++){
			// get linktext lowercase
			strA = arr_links[a].innerHTML.toLowerCase();
			// alert("H3= " + strH3 + "\nArr_links(" +[a] +") = " + arr_links[a].innerHTML);
			// alert("/" + strMenuTitle + "/" + strH3 + "/" + strA + "/" + strA + ".shtml");
			// ssi only
			arr_links[a].href = "/" + strMenuTitle + "/" + strH3 + "/" + strA + "/" + strA + ".shtml";
			// aktives link setzen
			if (strA == d_url) {
				// alert(arr_links[a].innerHTML);
				arr_links[a].style.textDecoration = "underline";
				// nummer von aktivem h3
				intSelectedIndex = s;
			}
		}
	}
	
	// initialisiere acc
	parentAccordion.init("acc","h3",1,intSelectedIndex,"acc-selected");
	
}

// change opacity 
function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;
	if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

function changeOpac(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

// copyright www.leigeber.com thank you Michael 
var TINY={};

function T$(i){return document.getElementById(i)}
function T$$(e,p){return p.getElementsByTagName(e)}

TINY.accordion=function(){
	function slider(n){this.n=n; this.a=[]}
	slider.prototype.init=function(t,e,m,o,k){
		var a=T$(t), i=s=0, n=a.childNodes, l=n.length; this.s=k||0; this.m=m||0;
		for(i;i<l;i++){
			var v=n[i];
			if(v.nodeType!=3){
				this.a[s]={}; this.a[s].h=h=T$$(e,v)[0]; this.a[s].c=c=T$$('div',v)[0]; h.onclick=new Function(this.n+'.pr(0,'+s+')');
				if(o==s){h.className=this.s; c.style.height='auto'; c.d=1}else{c.style.height=0; c.d=-1} s++
			}
		}
		this.l=s
	};
	slider.prototype.pr=function(f,d){
		for(var i=0;i<this.l;i++){
			var h=this.a[i].h, c=this.a[i].c, k=c.style.height; k=k=='auto'?1:parseInt(k); clearInterval(c.t);
			if((k!=1&&c.d==-1)&&(f==1||i==d)){
				c.style.height=''; c.m=c.offsetHeight; c.style.height=k+'px'; c.d=1; h.className=this.s; su(c,1)
			}else if(k>0&&(f==-1||this.m||i==d)){
				c.d=-1; h.className=''; su(c,-1)
			}
		}
	};
	function su(c){c.t=setInterval(function(){sl(c)},20)};
	function sl(c){
		var h=c.offsetHeight, d=c.d==1?c.m-h:h; c.style.height=h+(Math.ceil(d/5)*c.d)+'px';
		if((c.d==1&&h>=c.m)||(c.d!=1&&h==1)){if(c.d==1){c.style.height='auto'} clearInterval(c.t)}
	};
	return{slider:slider}
}();

