// This contains the global variables
var OpenContainer = null;
var OpenMenus = null;
var HideMenuTimer = null;

// This function sets the menu timeout once the mouse moves off the menu!
function menuStartTimeout(hideTimeout) {
	HideMenuTimer = setTimeout("menuHideMenus()", hideTimeout);	
}

// This function defines whether the menu is visible or not!
function menuHideMenus() {
	menuResetTimeout();
	if(OpenContainer) {
		var c = document.getElementById(OpenContainer);
		c.style.visibility = "inherit";
		OpenContainer = null;
	}
	if( OpenMenus ) {
		for(var i in OpenMenus) {
			var m = document.getElementById(OpenMenus[i]);
			m.style.visibility = "hidden";			
		}
		OpenMenus = null;
	}
}

// This function open and closes the submenus!
function menuHideSubmenus(menuName) {
	if( OpenMenus ) {
		var h = false;
		var c = 0;
		for(var i in OpenMenus) {
			if( h ) {
				var m = document.getElementById(OpenMenus[i]);
				m.style.visibility = "hidden";
			} else if( OpenMenus[i] == menuName ) {
				h = true;
			} else {
				c++;
			}
		}
		OpenMenus.length = c+1;
	}
}

// This function resets the menus after timeing out!
function menuOverMenuItem(menuName, subMenuSuffix) {
	menuResetTimeout();
	menuHideSubmenus(menuName);
	if( subMenuSuffix ) {
		var subMenuName = "" + menuName + "_" + subMenuSuffix;
		menuShowSubMenu(subMenuName);
	}
}

// This function shows the submenus!
function menuShowSubMenu(subMenuName) {
	menuResetTimeout();
	var e = document.getElementById(subMenuName);
	e.style.visibility = "inherit";
	if( !OpenMenus ) {
		OpenMenus = new Array;
	}
	OpenMenus[OpenMenus.length] = "" + subMenuName;
}

// This function resets hidden submenus!
function menuResetTimeout() {
	if (HideMenuTimer) clearTimeout(HideMenuTimer);
	HideMenuTimer = null;
}

// This function positions the submenu!
function menuShowMenu(containName, menuName, xOffset, yOffset, triggerName) {
	menuHideMenus();
	menuResetTimeout();
	menuShowMenuContainer(containName, xOffset, yOffset, triggerName);
	menuShowSubMenu(menuName);
}

// This function shows the submenu which has is being hovered over!
function menuShowMenuContainer(containName, x, y, triggerName) {	
	var c = document.getElementById(containName);
	var s = c.style;
	s.visibility = "inherit";
	
	OpenContainer = "" + containName;
}