(function() { 
	var Event = YAHOO.util.Event,
		Dom   = YAHOO.util.Dom,
		Anim  = YAHOO.util.Anim
	
	var openSubnavi = function(e) {
		var caller = Event.getTarget(e);
		if(window.wait !== undefined)	{
			clearTimeout(wait);
		}
		if(!Dom.hasClass(caller, "mainnavpoint")) {
			caller = Dom.getAncestorByClassName(caller, "mainnavpoint");
		}
		showSubnavi(caller.id, 'hover');
	}
	
	var showSubnaviAnimation = function(callerID) {
		var mainnavs = Dom.getChildren("main");
		for(li in mainnavs) {
			hideSubnavi(mainnavs[li].id);		
		}
		var caller = Dom.get(callerID);
		var submenus = Dom.getChildrenBy(caller, function(el) {
			return el.nodeName == "UL";
		});
		var submenu = submenus[0];
		Dom.setStyle(submenu, "visibility", "hidden");
		Dom.setStyle(submenu, "display", "block");
		Dom.setStyle(Dom.getChildren(caller)[0], "height", "34px");
		var submenuX = Dom.getX(submenu) - Dom.getX("contentarea");
		var submenuY = Dom.getY(submenu) - Dom.getY("contentarea");
		var submenuWidth = submenu.offsetWidth;
		var submenuHeight = submenu.offsetHeight;
		var navpointX = Dom.getX(caller) - Dom.getX("contentarea");
		var navpointY = Dom.getY(caller) - Dom.getY("contentarea");
		var navpointWidth = caller.offsetWidth;
		var navpointHeight = caller.offsetHeight;
		var newSubmenuLeft = navpointX - parseInt((submenuWidth - navpointWidth)/2);
		var newSubmenuTop = navpointHeight - navpointY - 1;
		
		Dom.setStyle(submenu, "left", newSubmenuLeft + "px");
		Dom.setStyle(submenu, "top", newSubmenuTop + "px");
		Dom.addClass(caller, "mainselected");
		
		Dom.setStyle(submenu, "height", "0px");
		Dom.setStyle(submenu, "visibility", "visible");
		var newMainHeight = navpointHeight + submenuHeight - 1;
		Dom.setStyle("main", "height", newMainHeight + "px");
		hideBorderline(submenu);

	}
	
	var showSubnavi = function(callerID, context) {
		var mainnavs = Dom.getChildren("main");
		for(li in mainnavs) {
			var subnavs = Dom.getElementsByClassName('mainsublevel', "UL", mainnavs[li]);
			if(subnavs.length > 0) {
				hideSubnavi(mainnavs[li].id);	
			}
		}
		var caller = Dom.get(callerID);
		var submenus = Dom.getChildrenBy(caller, function(el) {
			return el.nodeName == "UL";
		});
		var submenu = submenus[0];
		Dom.setStyle(submenu, "display", "block");
		Dom.setStyle(Dom.getChildren(caller)[0], "height", "34px");
		var submenuX = Dom.getX(submenu) - Dom.getX("contentarea");
		var submenuY = Dom.getY(submenu) - Dom.getY("contentarea");
		var submenuWidth = submenu.offsetWidth;
		// Workaround für Scheiss IE6 */
		var submenuWidth = 246;
		var submenuHeight = submenu.offsetHeight;
		var navpointX = Dom.getX(caller) - Dom.getX("contentarea");
		var navpointY = Dom.getY(caller) - Dom.getY("contentarea");
		var navpointWidth = caller.offsetWidth;
		var navpointHeight = caller.offsetHeight;
		var newSubmenuLeft = navpointX - parseInt((submenuWidth - navpointWidth)/2);
		var newSubmenuTop = navpointHeight - navpointY - 1;
		Dom.setStyle(submenu, "left", newSubmenuLeft + "px");
		Dom.setStyle(submenu, "top", newSubmenuTop + "px");
		Dom.addClass(caller, "mainselected");
		var newMainHeight = navpointHeight + submenuHeight - 1;
		if(context == "presel") {
			Dom.setStyle("main", "height", newMainHeight + "px");
		}
		hideBorderline(submenu);
	}
	
	var closeSubnavi = function(e) {
		var caller = Event.getTarget(e);
		if(!Dom.hasClass(caller, "mainnavpoint")) {
			caller = Dom.getAncestorByClassName(caller, "mainnavpoint");
		}
		
		wait = setTimeout("hideSubnavi('" + caller.id + "')", 200);
	}
	
	hideSubnavi = function(callerID) {
		var caller = Dom.get(callerID);
		var submenus = Dom.getChildrenBy(caller, function(el) {
			return el.nodeName == "UL";
		});
		var submenu = submenus[0];
		Dom.setStyle(submenu, "display", "none");
		Dom.setStyle("main", "height", "32px");
		Dom.setStyle(Dom.getChildren(caller)[0], "height", "32px");
		Dom.removeClass(caller, "mainselected");
		var hiders = Dom.getElementsByClassName("hideborder");
		for(hider in hiders) {
			Dom.get("contentarea").removeChild(hiders[hider]);
		}
	}
	
	var hideBorderline = function(menuitem) {
		var newBorderline = document.createElement("div");
		Dom.addClass(newBorderline, "hideborder");
		var anchor = Dom.getPreviousSibling(menuitem);
		var posLeft = parseInt(Dom.getX(anchor)) - parseInt(Dom.getX("contentarea")) + 1;
		Dom.setStyle(newBorderline, "width", (anchor.offsetWidth - 2) + "px");
		Dom.setStyle(newBorderline, "left", posLeft + "px");
		Dom.get("contentarea").appendChild(newBorderline);
	}
	
	var showMarks = function(e) {
		var caller = Event.getTarget(e);
		if(caller.nodeName != "LI") {
			caller = Dom.getAncestorByTagName(caller, "LI");
		}
		var marksID = caller.id.replace(/open/, "marks");
		var infoID = caller.id.replace(/open/, "infolayer");
		Dom.setStyle(Dom.getElementsByClassName("marks", "DIV", "haus"), "display", "none");
		Dom.setStyle(marksID, "display", "block");
		Dom.removeClass(Dom.getChildren("klapptnavi"), "active");
		Dom.addClass(caller, "active");
		Dom.setStyle(Dom.getChildren("layercontainer"), "display", "none");
		Dom.setStyle(infoID, "display", "block");
	}
	
	var correctIE6 = function() {
		// IE6 -Anweisungen
		if(Dom.inDocument("meta")) {
			Dom.addClass(Dom.getChildren("meta")[0], "first");
		}
		if(Dom.inDocument("main")) {
			Dom.addClass(Dom.getChildren("main")[0], "first");
			var mainsublevels = Dom.getElementsByClassName("mainsublevel", "UL", "main");
			for(sublevel in mainsublevels) {
				var navpoints = Dom.getChildren(mainsublevels[sublevel]);
				Dom.addClass(navpoints[0], "first");
			}
		}
		if(Dom.inDocument("intronavi")) {
			Dom.addClass(Dom.getChildren("intronavi")[0], "first");
		}
		if(Dom.inDocument("servicenavi")) {
			Dom.addClass(Dom.getChildren("servicenavi")[0], "first");
		}
		if(Dom.inDocument("klapptnavi")) {
			Dom.addClass(Dom.getChildren("klapptnavi")[0], "first");
		}
	}
	
	var init = function() {
		if(Dom.inDocument("main")) {
			var mainnavs = Dom.getChildren("main");
			for(li in mainnavs) {
				// alert(mainnavs[li].offsetWidth);
				Dom.addClass(mainnavs[li], "mainnavpoint");
				var subnavs = Dom.getChildrenBy(mainnavs[li], function(el) {
					return el.nodeName == "UL";
				});
				if(subnavs.length > 0) {
					if(!Dom.hasClass(mainnavs[li], "mainselected"))	{
						Event.addListener(mainnavs[li], "mouseover", openSubnavi);
						Event.addListener(mainnavs[li], "mouseout", closeSubnavi);
						var anchors = Dom.getChildrenBy(mainnavs[li], function(el) {
							return el.nodeName == "A";
						});
						Event.addListener(anchors[0], "click", function(e) {
							Event.preventDefault(e);
						});
					} else {
						showSubnavi(mainnavs[li].id, 'presel');
					}
				}
			}
		}
		
		if(Dom.inDocument("klapptnavi")) {
			var navpoints = Dom.getChildren("klapptnavi");
			Event.addListener(navpoints, "mouseover", showMarks);
		}
		
		if(Dom.inDocument("slidenavi")) {
			var mainnavs = Dom.getChildren("slidenavi");
			for(el in mainnavs) {
				var subnav = Dom.getElementsByClassName("slidesub", "UL", mainnavs[el]);
				if(subnav.length == 1) {
					/* Dom.setStyle(subnav[0], "display", "none");
					Event.addListener(new Array(mainnavs[el], subnav[0], Dom.getChildren(subnav[0])), "mouseover", function(e) {
						if(window.closesubslide !== undefined) {
							clearTimeout(closesubslide);
						}
						var caller = Event.getTarget(e);
						if(caller.nodeName != "LI") {
							caller = Dom.getAncestorByTagName(caller, "LI");
						}
						var subnav = Dom.getElementsByClassName("slidesub", "UL", caller);
						Dom.setStyle(subnav[0], "display", "block");
					});
					Event.addListener(new Array(mainnavs[el], subnav[0], Dom.getChildren(subnav[0])), "mouseout", function(e) {
						var caller = Event.getTarget(e);
						if(caller.nodeName != "LI") {
							caller = Dom.getAncestorByTagName(caller, "LI");
						}
						var subnav = Dom.getElementsByClassName("slidesub", "UL", caller);
						// Dom.setStyle(subnav[0], "display", "none");
						if(subnav[0].id == "")	subnav[0].id = "openedSubSlide";
						closesubslide = setTimeout("closeIt('" + subnav[0].id + "')", 200);
						closeIt = function(toClose) {
							// alert(toClose);
							Dom.setStyle(toClose, "display", "none");
						}
					}); */
				}
			}
		}
		
		if(navigator.appVersion.search(/MSIE 6.0/) != -1) {
			correctIE6();
		}
		
		
		
	}
	
	
	Event.onDOMReady(init);
	
})();
