// JavaScript Document

// Menu functions for drop down menus
// Based on code by Danny Goodman

// Initialize global that helps manage menu hiding
var menuReady = true;
var timer;

// Invoked from mouseover inside menus to cancel
// hide request from mouseout of menu bar, et al.
function keepMenu() {
	clearTimeout(timer);
}

function cancelAll() {
	keepMenu();
	menuReady = false;
}

// Invoked from mouseouts to request hiding all menus
// in number of milliseconds indicated, unless cancelled
function requestHide(mainMenuID) {
	var delay = 250;
	timer = setTimeout("hideMenus('" + mainMenuID +"')", delay);
}

// "Brute force" hiding of all menus and restoration
// of normal menu bar images
function hideMenus(mainMenuID) {
	var i, j;
	var mainMenu = document.getElementById(mainMenuID);
	var subMenus = mainMenu.childNodes;
	for (i = 0; i < subMenus.length; i++) {
		if (subMenus[i].nodeType == 1) {
			if (subMenus[i].tagName.toLowerCase() == "li") {
				var subMenuEntries = subMenus[i].childNodes;
				for (j = 0; j < subMenuEntries.length; j++) {
					if (subMenuEntries[j].nodeType == 1) {
						if (subMenuEntries[j].tagName.toLowerCase() == "ul") {
								menu = document.getElementById(subMenuEntries[j].id);
								menu.style.visibility = "hidden";
						}
					}
				}
			}
		}
	}
}

// Display a particular menu div
function showMenu(menuID) {
	if (menuReady) {
		var menu = document.getElementById(menuID);
		var subMenu = menu.parentNode;
		var mainMenu = subMenu.parentNode;
		keepMenu();
		hideMenus(mainMenu.id);
		menu.style.visibility = "visible";
	}
}
