submenuTimeoutLeft = null;
submenuTimeoutTop = null;

function menuInitTop() {
	var menu = $("topMenuRoot");
	var menuItems = menu.getElementsByTagName("div");
	for(var i = 0; i < menuItems.length; i++) {
		if(!( menuItems[i].getAttribute("noTrigger") && menuItems[i].getAttribute("noTrigger") == "true") ) {
			if(menuItems[i].getAttribute("urlTrigger")) {
				var triggerRegex = new RegExp(menuItems[i].getAttribute("urlTrigger"), "i");
				if(window.location.href.toString().match(triggerRegex))
					addClassName(menuItems[i], "triggered");				
			} else if (menuItems[i].getAttribute("href") && menuItems[i].getAttribute("href") != "/") {
				if(menuItems[i].getAttribute("href").indexOf(".") == -1) {
					var hrefRegex = new RegExp(menuItems[i].getAttribute("href"), "i");
					if(window.location.href.toString().match(hrefRegex))
						addClassName(menuItems[i], "triggered");
				} else {
					if(window.location.href.toString().indexOf(menuItems[i].getAttribute("href")) > -1)
						addClassName(menuItems[i], "triggered");
				}
			}
		}
		if(menuItems[i].getAttribute("href")) {
			addEvent(menuItems[i], "click", doMenuItemLink);
		}
	}

	var topMenuItems = menu.getElementsByTagName("div");
	for(var i = 0; i < topMenuItems.length; i++) {
		var submenuItems = topMenuItems[i].getElementsByTagName("li");
		if(submenuItems.length) {
			addEvent(topMenuItems[i], "mouseover", displaySubmenuTop);
			addEvent(topMenuItems[i], "mouseout", hideSubmenusTop);
			for(var j = 0; j < submenuItems.length; j++) {
				addEvent(submenuItems[j], "mouseover", killTimeoutTop);
			}
		} else {
			addEvent(topMenuItems[i], "mouseover", hideSubmenusTop_handler);
		}
	}
}

function doMenuItemLink(e) {
	var srcObj = getEventSource(e);
	if(srcObj.getAttribute("href")) window.location.href = srcObj.getAttribute("href");
}

function displaySubmenuTop(e) {
	killTimeoutTop();
	var srcObj = getEventSource(e);
	
	while(srcObj.tagName != "DIV") {
		srcObj = srcObj.parentNode;
	}
	var submenus = $("topMenuRoot").getElementsByTagName("ul");
	var thisSubmenu = srcObj.getElementsByTagName("ul");
	for(var j = 0; j < submenus.length; j++) {
		if(submenus[j] == thisSubmenu[0])
			addClassName(submenus[j], "mouseOver");
		else
			removeClassName(submenus[j], "mouseOver");
	}
}

function hideSubmenusTop() {
	submenuTimeoutTop = window.setTimeout(hideSubmenusTop_handler, 500);
}

function killTimeoutTop() {
	window.clearTimeout(submenuTimeoutTop);
	submenuTimeoutTop = null;
}

function hideSubmenusTop_handler() {
	var submenus = $("topMenuRoot").getElementsByTagName("ul");
	for(var j = 0; j < submenus.length; j++) {
		removeClassName(submenus[j], "mouseOver");
	}
}


function menuInitLeft() {
	var menu = $("leftMenuRoot");
	var menuItems = menu.getElementsByTagName("li");
	var matches = [];
	for(var i = 0; i < menuItems.length; i++) {
		if(menuItems[i].getAttribute("urlTrigger")) {
			var triggerRegex = new RegExp(menuItems[i].getAttribute("urlTrigger"), "i");
			if(window.location.href.toString().match(triggerRegex))
				matches.push(menuItems[i]);
		} else if (menuItems[i].getAttribute("href")) {
			if(menuItems[i].getAttribute("href").indexOf(".") == -1) {
				var hrefRegex = new RegExp(menuItems[i].getAttribute("href"), "i");
				if(window.location.href.toString().match(hrefRegex))
					matches.push(menuItems[i]);
			} else {
				if(window.location.href.toString().indexOf(menuItems[i].getAttribute("href")) > -1)
					matches.push(menuItems[i]);
			}
		}
		if(menuItems[i].getAttribute("href")) {
			addEvent(menuItems[i], "click", doMenuItemLink);
		}
	}
	
	if(matches.length) {
		var bestMatch = matches[0];
		var bestMatchRating = 0;
		var thisMatchRating = 0;
		var str = "";
		for(var i = 0; i < matches.length; i++) {
			thisMatchRating = 0;
			str = (matches[i].getAttribute("urlTrigger")) ? matches[i].getAttribute("urlTrigger") : matches[i].getAttribute("href");
				
			for(var j = 0; j < str.length; j++)
				if(str.charAt(j) == "/" || str.charAt(j) == "." || str.charAt(j) == "?" || str.charAt(j) == "&" || str.charAt(j) == "#") thisMatchRating++;
			
			if(thisMatchRating > bestMatchRating) {
				bestMatch = matches[i];
				bestMatchRating = thisMatchRating;
			}
		}
		
		addClassName(bestMatch, "triggered");
		do {
			bestMatch = bestMatch.parentNode;
			if(bestMatch.tagName == "LI" && bestMatch.id != "leftMenuRoot")
				addClassName(bestMatch, "triggered");
		} while(bestMatch.id != "leftMenuRoot");
	}

	var topMenuItems = menu.childNodes;
	for(var i = 0; i < topMenuItems.length; i++) {
		if(topMenuItems[i].nodeType == 1 && topMenuItems[i].tagName.toLowerCase() == "li") {			
			if(topMenuItems[i].hasChildNodes && !topMenuItems[i].className.match(/triggered/)) {
				addEvent(topMenuItems[i], "mouseover", displaySubmenuLeft);
				addEvent(topMenuItems[i], "mouseout", hideSubmenusLeft);
				var submenuItems = topMenuItems[i].getElementsByTagName("li");
				for(var j = 0; j < submenuItems.length; j++) {
					addEvent(submenuItems[j], "mouseover", killTimeoutLeft);
				}
			} else {
				addEvent(topMenuItems[i], "mouseover", hideSubmenusLeft_handler);
			}
		}
	}
}

function displaySubmenuLeft(e) {
	killTimeoutLeft();
	var srcObj = getEventSource(e);
	
	while (srcObj.parentNode.id != "leftMenuRoot") {
		srcObj = srcObj.parentNode;
	}
	
	var submenus = $("leftMenuRoot").childNodes;
	for(var i = 0; i < submenus.length; i++) {
		if(submenus[i].nodeType == 1 && submenus[i].tagName.toLowerCase() == "li") {
			if(submenus[i] == srcObj) {
				addClassName(submenus[i], "mouseOver");
			} else
				removeClassName(submenus[i], "mouseOver");
		}
	}
}

function hideSubmenusLeft() {
	submenuTimeoutLeft = window.setTimeout(hideSubmenusLeft_handler, 500);
}

function killTimeoutLeft() {
	window.clearTimeout(submenuTimeoutLeft);
	submenuTimeoutLeft = null;
}

function hideSubmenusLeft_handler() {
	var submenus = $("leftMenuRoot").getElementsByTagName("li");
	for(var j = 0; j < submenus.length; j++) {
		removeClassName(submenus[j], "mouseOver");
	}
}
