var mainNavItems = [];
var currentMainNavItem;
var ie6BreakOutContainer;
var closeNavTimoutID;
var lastOpenedNav = -1;

function initMainNav () {
	var nav = $('navMain').firstDescendant();
	mainNavItems = nav.immediateDescendants();
	
	if (isIE6()) {		
		ie6BreakOutContainer = $('ie6BreakOutContainer');
		if (!ie6BreakOutContainer) {
			var newDiv = document.createElement('div');
			newDiv.setAttribute("id","ie6BreakOutContainer");
			document.body.appendChild(newDiv);
			ie6BreakOutContainer = $(newDiv);
		}
	}
	
	for (var i=0; i<mainNavItems.length; i++) {
		mainNavItems[i].myNavNum = i;
		mainNavItems[i].onmouseover = function () {if (setMainNavMouseOver) {setMainNavMouseOver(this.myNavNum);}};
		mainNavItems[i].onmouseout = function () {if (setMainNavMouseOut) {setMainNavMouseOut(this.myNavNum);}};
		mainNavItems[i].myMenue = mainNavItems[i].down().next(".navLevel2");
		
		breakOutFromList(i);
		
		if (mainNavItems[i].id == 'current') {			
			currentMainNavItem = i;
			setMainNavMouseOut(i);
		}
	}
	
	for (var i=0; i<mainNavItems.length; i++) {
		setIE6Specials(i);
		setPosition(i);
	}
	
	extendSubNavLinks();
}

/* verhindert im IE6, dass das Menü wieder zuklappt, wenn man mit der Maus auf einem Menüpunkt ist */
function extendSubNavLinks () {
	if (isIE6()) {
		var allInnerA = $$('.navLevel2 A');
		for (var i=0; i<allInnerA.length; i++) {
			allInnerA[i].onmouseover = function () {
				window.clearTimeout(closeNavTimoutID);
			}
		}
		
	}
}

/* menü aufklappen, bei "mouseover" */
function setMainNavMouseOver (num) {
	lastOpenedNavBak = lastOpenedNav;

	window.clearTimeout(closeNavTimoutID);
	if (num != lastOpenedNavBak) {
		instandSetMainNavMouseOut();
	}
	
	lastOpenedNav = num;

	if (num>=0 && num<mainNavItems.length && num!=lastOpenedNavBak) {
		mainNavItems[num].className = (num==currentMainNavItem-1) ? 'mainNavOverLeftCurrent' : 'mainNavOver';
		setPosition(num);
		openNavpoint(num);
	}
	num--;
	if (num>=0 && num<mainNavItems.length) {
		mainNavItems[num].className = 'mainNavOverLeft';
	}
	
}

/* menü zuklappen, bei "mouseout" */
function setMainNavMouseOut (num) {
	if (lastOpenedNav > -1 && mainNavItems[lastOpenedNav].myMenue) {
		window.clearTimeout(closeNavTimoutID);
		closeNavTimoutID = window.setTimeout('instandSetMainNavMouseOut()',50);		
	} else {
		if (num>=0 && num<mainNavItems.length) {
			mainNavItems[num].className = (num==currentMainNavItem-1) ? 'mainNavLeftCurrent' : '';
			if (closeNavpoint) closeNavpoint(num);
		}
		num--;
		if (num>=0 && num<mainNavItems.length) {
			mainNavItems[num].className = (num==currentMainNavItem-1) ? 'mainNavLeftCurrent' : '';
		}
	}
}

/* menü sofort zuklappen, ohne verzögerung (nur IE6) */
function instandSetMainNavMouseOut () {
	if (lastOpenedNav > -1) {
		window.clearTimeout(closeNavTimoutID);
		var buffer = lastOpenedNav;
		lastOpenedNav = -1;
		setMainNavMouseOut(buffer);
	}
}

/* den Menüpunkt nach unten ausklappen, falls ausklappmenü vorhanden */
function openNavpoint (num) {
	if (num>=0 && num<mainNavItems.length) {
		if (mainNavItems[num].myMenue) {
			mainNavItems[num].myMenue.style.display = 'block';
			setCorrectWitdh(mainNavItems[num].myMenue);
			hideSelectboxes(mainNavItems[num].myMenue);
		}
	}
}

/* den Menüpunkt wieder zuklappen, falls ausklappmenü vorhanden */
function closeNavpoint (num) {
	if (num>=0 && num<mainNavItems.length) {
		if (mainNavItems[num].myMenue) {
			mainNavItems[num].myMenue.style.display = 'none';
			if (isIE6()) {
				window.setTimeout('if (unhideSelectboxes && mainNavItems['+num+']) unhideSelectboxes(mainNavItems['+num+'].myMenue),10');
			}
		}
	}
}

/* position des Ausklappmenüs setzen */
function setPosition (num) {
	if (mainNavItems[num].myMenue) {
		var pos = Position.cumulativeOffset(mainNavItems[num]);
		pos[1] += mainNavItems[num].getHeight();
		pos[0] += -1;
		
		mainNavItems[num].myMenue.setStyle({top: pos[1]+'px', left: pos[0]+'px', position:'absolute'});
	}
}

/* nur IE6: spezielle mouseoverfunktion an die Elemente se sublise anfügen,
damit wir erkennen, ob die Maus noch über dem Menü ist */
function setIE6Specials (num) {
	if (isIE6()) {
		var newID = "breakoutMenue_"+num;
		var e = $(newID);
		if (e) {
			mainNavItems[num].myMenue = e;
			e.myNum = num;
			e.onmouseout = function () {
				setMainNavMouseOut(this.myNum);
			}
			
		}
	}
}

function setCorrectWitdh (e) {
	if (isIE6() && !e.widthIsSet) {
		var w = e.firstDescendant().offsetWidth-18;
		links = e.getElementsByTagName('A');
		for (var i=0; i<links.length; i++) {
			links[i].style.width =  w + 'px';
		}
		e.widthIsSet = true;
	}
}

/* im IE 6 müssen die Sublisten der Ausklappmenüs zur absoluten Positionierung aus der Hauptliste ausgehängt werden */
function breakOutFromList (num) {
	if (isIE6() && mainNavItems[num].myMenue) {
		var newID = "breakoutMenue_"+num;
		mainNavItems[num].myMenue.setAttribute("id",newID);
		
		var newElem = mainNavItems[num].myMenue.inspect();
		newElem += mainNavItems[num].myMenue.innerHTML
		newElem += '</ul>';
		
		mainNavItems[num].myMenue.remove();

		ie6BreakOutContainer.innerHTML = newElem + ie6BreakOutContainer.innerHTML;
	}
}

//registerOnLoadFunction (initMainNav);

