var cssmenuids = ["link", "menu"]	// Enter id(s) of CSS Horizontal UL menus, separated by commas
var currentElement = false;								// Contains the object the mouse is over
var timer;												// Holds timer obj		
var timer2;												// Holds second timer obj		
var timecount = 500;									// How long sub menus should stay up
var hasActiveSub = false;								// Is there a submenu with class='active'
var activeSub;											// Active submenu container

HorMenu = function() {
	for (var j=0; j<cssmenuids.length; j++) {
		if (document.getElementById(cssmenuids[j]))	{
			var navRoot = document.getElementById(cssmenuids[j]);
			lis = navRoot.childNodes;
			for (i=0; i < lis.length; i++) {
				if (lis[i].nodeName == "LI") {
					li = lis[i];
					if (li.getElementsByTagName("UL").length > 0) {
						var subLi = li.getElementsByTagName("LI");
						for (k=0; k < subLi.length; k++) {
							var browserName=navigator.appName;
							if (browserName=="Microsoft Internet Explorer") {
								subLiAttr = subLi[k].getAttributeNode("class").value;
							} else {
								subLiAttr = subLi[k].getAttribute("class");
							}
							if (subLiAttr == "active") {
								hasActiveSub = subLi[k];
								activeSub = hasActiveSub.parentNode;
								HorMenuOpen(activeSub);
							}
						}
						li.onmouseover = function() {
							clearTimeout(timer);
							clearTimeout(timer2);
							if (currentElement) {
								openList = currentElement.getElementsByTagName("UL")[0];
								HorMenuClose(openList);
							}
							if (hasActiveSub != false) {
								HorMenuClose(hasActiveSub.parentNode);
							}
							subMenu = this.getElementsByTagName("UL")[0];
							HorMenuOpen(subMenu);
							currentElement = this;
						}
						li.onmouseout = function() {
							if (hasActiveSub != false) {
								subMenu = this.getElementsByTagName("UL")[0];
								timer = setTimeout('HorMenuClose(subMenu)', timecount);
								timer2 = setTimeout('HorMenuOpen(hasActiveSub.parentNode)', timecount);
							} else {
								subMenu = this.getElementsByTagName("UL")[0];
								timer = setTimeout('HorMenuClose(subMenu)', timecount);
							}
						}
					} else {
						li.onmouseover = function() {
							clearTimeout(timer);
							clearTimeout(timer2);
							if (currentElement) {
								openList = currentElement.getElementsByTagName("UL")[0];
								HorMenuClose(openList);
							}
							if (hasActiveSub != false) {
								HorMenuClose(hasActiveSub.parentNode);
							}
							if (this.getElementsByTagName("UL")[0]) {
								subMenu = this.getElementsByTagName("UL")[0];
								HorMenuOpen(subMenu);
								currentElement = this;
							}
						}
						li.onmouseout = function() {
							subMenu = this.getElementsByTagName("UL")[0];
							if (hasActiveSub != false) {
								if (subMenu) {
									timer = setTimeout('HorMenuClose(subMenu)', timecount);
								}
								timer2 = setTimeout('HorMenuOpen(hasActiveSub.parentNode)', timecount);
							} else if (subMenu) {
								timer = setTimeout('HorMenuClose(subMenu)', timecount);
							}
						}
					}
				}
			}
		}
	}
}

HorMenuOpen = function(menu) {
	menu.parentNode.style.zIndex = 100;
	menu.style.display = "block";
	menu.style.visibility = "visible";
	menu.style.zIndex = 0;
}

HorMenuClose = function(menu) {
	menu.parentNode.style.zIndex = 0;
	menu.style.display = "none";
	menu.style.visibility = "hidden";
	menu.style.zIndex = 100;
}

if (window.addEventListener)
	window.addEventListener("load", HorMenu, false)
else if (window.attachEvent)
	window.attachEvent("onload", HorMenu)
