/**
 * file: tabber.js
 * the js-functions for the Main Navi
 */
naviTabBox = null;

defaultChild = null;
lastChild = null;
actTab = null;
timer = null;
timer2 = null;

childTabs = Array();
navigTabs = Array();
naviTabsBG = Array();

addOnloadEvent(initTabber);

function initTabber()	{
	naviTabBox = document.getElementById("navigation");
	setNaviTabEvents();
}

function setNaviTabEvents() {
	if(!naviTabBox) return;
	tabs = naviTabBox.getElementsByTagName("a");

	for(i=0; i<tabs.length; i++) {

        if(typeof tabs[i].id != "undefined")	{
            id = tabs[i].id+"child";
            identifier = id.substring(0, 1);

			childTabs[id] = document.getElementById(id);
			navigTabs[id] = tabs[i];

			if(tabs[i].className.indexOf("current")> -1){
                if(actTab==null)
                    actTab = lastChild = defaultChild = id;
            }

           	tabs[i].onmouseover = onTabOver;
			tabs[i].onmouseout = onTabOut;

            if(typeof childTabs[id].id != "undefined") {
                childTabs[id].onmousemove = onSubTabMoveOver;
                childTabs[id].onmouseover = onSubTabOver;
                childTabs[id].onmouseout = onSubTabOut;
			}
		}
	}
/*
    alert(lastChild+"\n"+defaultChild);
*/
}

function onTabOver()	{
	id = this.id+"child";

    childTabs[defaultChild].style.display = "none";
	childTabs[id].style.display = "block";

	if(id != lastChild) {
		childTabs[lastChild].style.display = "none";
		if(lastChild != defaultChild) {
			navigTabs[lastChild].className = replaceClass(navigTabs[lastChild], "std");
		}

		lastChild = id;
	}
	clearTimeout(timer);
	clearTimeout(timer2);
}

function onTabOut() {
	id = this.id+"child";
	timer = setTimeout("resetTabs(id)", 1);
}

function resetTabs(p_id) {
	if(p_id != defaultChild) {
		childTabs[p_id].style.display = 'none';
		navigTabs[lastChild].className = replaceClass(navigTabs[lastChild], "std");
	}
	childTabs[defaultChild].style.display = 'block';
}

function onSubTabMoveOver(e) {
	clearTimeout(timer);
	clearTimeout(timer2);

	elm = (e) ? e.target : event.srcElement;

	id =  getId(elm);

	actTab = id;
	if(defaultChild != actTab) {
		navigTabs[lastChild].className = replaceClass(navigTabs[lastChild], "over");
	}
}

function getId(elm) {
	if(!elm.id)	res = getId(elm.parentNode);
	else		res = elm.id;
	return res;
}

function onSubTabOver() {
	clearTimeout(timer);
	clearTimeout(timer2);
}

// Wartezeit in MS
function onSubTabOut() {
	timer2 = setTimeout("resetSubTabs()" , 2000);
}

function resetSubTabs() {
	if(actTab != defaultChild) {
		navigTabs[lastChild].className = replaceClass(navigTabs[lastChild], "std");
	}
	childTabs[actTab].style.display = "none";
	childTabs[defaultChild].style.display = "block";
}

function replaceClass(p_obj, p_class) {
	oldClass = p_obj.className;

	switch(p_class) {
		case "std": newClass = oldClass.replace(/over/, "std"); break;
		case "over": newClass = oldClass.replace(/std/, "over"); break;
	}
	return newClass;
}