//mainmenu.js
var DOMUtils = {
	oTargetLimit : document.body,
	sTarget : "a",
	mTargetFilter : function(oTarget){
		return (oTarget.nodeName.toLowerCase() != DOMUtils.sTarget.toLowerCase())
	},
	mAddEvent : function(oElement, evType, oFunc, bUseCapture){
		//credit: Scott Andrews	
		if(oElement.addEventListener){
			oElement.addEventListener(evType, oFunc, bUseCapture);
			return true;
		}
		else if(oElement.attachEvent){
			var ret = oElement.attachEvent("on" + evType, oFunc);
			return ret;
		}
		else {
			oElement["on" + evType] = oFunc;
		}
	},
	mFindElement : function(oElement, oFunc){
		if(oFunc(oElement)) return oElement;
		for(var i = 0; i < oElement.childNodes.length; i++){
			oTmp = DOMUtils.mFindElement(oElement.childNodes[i], oFunc);
			if(oTmp != null) return oTmp;
		}
		return null;
	},
	mFindElements : function(oElement, oFunc, aReturn){
		if(oFunc(oElement)) aReturn.push(oElement);
		for(var i = 0; i < oElement.childNodes.length; i++){
			aReturn = DOMUtils.mFindElements(oElement.childNodes[i], oFunc, aReturn);
		}
		return aReturn;
	},
	mFindTarget : function(e){
		var target = arguments[0];
		if(window.event && window.event.srcElement)
			target = window.event.srcElement;
		else if(e && e.target)
			target = e.target;
		if(!target)
			return null;
		while(target != DOMUtils.oTargetLimit && DOMUtils.mTargetFilter(target)){
			target = target.parentNode;
		}
		if(DOMUtils.mTargetFilter(target)) return null;
		return target;
	}	
}

var MainMenu = {
	oFirstLevel : null,
	aSecondLevel : null,
	aLinks : null,
	mInit : function() {
		oFirstLevel = document.getElementById("stLevel");
		if(null == oFirstLevel){
			//alert("error! No first level menu.");
			return false;
		} 
		aLinks = oFirstLevel.getElementsByTagName("a");
		if(null == aLinks){
			//alert("error! No first level menu anchors.");
			return false;
		}
		for(var i = 0; i < aLinks.length; i++){
			if(aLinks[i].parentNode.parentNode.className == "stLevel"){
				DOMUtils.mAddEvent(aLinks[i], "mouseover", MainMenu.mShow);
			}
		}
		aSecondLevel = oFirstLevel.getElementsByTagName("ul");
		if(null == aSecondLevel){
			//alert("error! No second level menu.");
			return false;
		}
	},
	mShow : function(e) {
		MainMenu.mHideAll();
		
		reHidden = /\s*\bndLevel\b\s*/;
		DOMUtils.sTarget = "a";
		var oLink = DOMUtils.mFindTarget(e);
		oLink.className = "selected";
		DOMUtils.sTarget = "li";
		var oLi = DOMUtils.mFindTarget(e);
		var oUl = oLi.getElementsByTagName("ul")[0];
		oUl.className = oUl.className.replace(reHidden, oUl.className + " selected");
	},
	mHideAll : function() {
		reSelected = /\bselected\b/;
		for(var i = 0; i < aSecondLevel.length; i++){
			aSecondLevel[i].className = aSecondLevel[i].className.replace(reSelected, "");
		}
		for(var i = 0; i < aLinks.length; i++){
			aLinks[i].className = aLinks[i].className.replace(reSelected, "");
		}
	}
}

var TopMenu = {
	oLink : null,
	oUl : null,
	mInit : function() {
		oLink = document.getElementById("linkparks");
		if(null == oLink){
			//alert("error! No link for parkmenu.");
			return false;
		}
		oUl = document.getElementById("menuparks");
		if(null == oUl){
			alert("error! No parkmenu.");
			return false;
		} 
		DOMUtils.mAddEvent(oLink, "click", TopMenu.mToggle, false);
	},
	mToggle : function(){
		oLink.className = oLink.className == "on" ? "off" : "on";
		oUl.className = oUl.className == "on" ? "off" : "on";
	}
}

DOMUtils.mAddEvent(window, "load", MainMenu.mInit, false);
DOMUtils.mAddEvent(window, "load", TopMenu.mInit, false);