/* Code taken from "DHTML and CSS for the World Wide Web"
 * by Jason Cranford Teague, p. 404.
 *  Used by the pop-up menus in menus.html.
 */

var menuTop = 45;
var menuLeft = 400;

// The element for the current menu.
var domSMenu = null;
// The element for the last opened menu.
var oldDomSMenu = null;

// t=1 means the menu is waiting to close.
// t=2 means it is not.
var t = 0;

// The number of seconds a menu should wait before closing.
var lDelay = 3;

// An open menu closes when lCount = lDelay.
var lCount = 0;

var pause = 100;

function popMenu(menuNum) {
	// If this browser supports a DHTML DOM.
	if (isDHTML) {
		t = 2;
		// Close any open menu before opening another.
		if (oldDomSMenu) {
			oldDomSMenu.visibility = 'hidden';
			oldDomSMenu.zIndex = '0';
			t = 2;
			lCount = 0;
		}
		// The menu header element.
		var idMenu = 'menuBarBox';
		var domMenu = findDOM(idMenu, 0);
		// The menu options container element.
		var idMenuOpt = 'menuHead' + menuNum;
		var domMenuOpt = findDOM(idMenuOpt, 0);
		
		var idSMenu = 'menu' + menuNum;
		var domSMenu = findDOM(idSMenu, 1);
		
		// If we are using the MSIE 'all' DOM,
		// or the w3c standard DOM.
		if (isID || isALL) {
			var menuLeft = (domMenu.offsetLeft) +
					(domMenuOpt.offsetLeft) + 10;
			var menuTop = (domMenu.offsetTop) +
					(domMenuOpt.offsetHeight) - 5;
		}
		// If we are using the Netscape 4 'layers' DOM.
		if (isLayers) {
			var menuLeft = documents.layers[idMenu].layers[idMenuOpt].pageX + 10;
			var menuTop = domMenu.pageY + domMenu.clipHeight - 5;
		}
		
		if (oldDomSMenu != domSMenu) {
			domSMenu.left = menuLeft;
			domSMenu.top = menuTop;
			domSMenu.visibility = 'visible';
			domSMenu.zIndex = '100';
			oldDomSMenu = domSMenu;
		}
		else {
			oldDomSMenu = null;
		}
	}
	else {
		return null;
	}
}

function delayHide() {
	if ((oldDomSMenu) && (t == 0)) {
		oldDomSMenu.visibility = 'hidden';
		oldDomSMenu.zIndex = '0';
		oldDomSMenu = null;
		lCount = 0;
		return false;
	}
	if (t == 2) {
		lCount = 0;
		return false;
	}
	if (t == 1) {
		lCount++;
		if (lDelay <= lCount) {
			t = 0;
		}
		if (lDelay >= lCount) {
			setTimeout('delayHide('+t+')', pause);
		}
	}
}
