
var menuOn = new Array();	// keeps track of whether the mousepointer is currently on a menu in each level
var visDiv = new Array();	// keeps track of the currently visible div name in each level
var timeoutID = null;		// used to perform periodic check to see if any menus are still 'on'

function showMenu() {
	// invoked when the user rolls over a menu div, or else by checkMenu()
	var level = showMenu.arguments[0];
	var div = showMenu.arguments[1];
	
	// in any case, should stop checking if any menu is 'on'
	clearInterval(timeoutID);
	timeoutID = null;

	// if no DIV name given, then stop checking if menus still on, and show default layers
	if (div == null) {
		for (var i=0; i<menuOn.length; i++) {
			if (defaultDiv[i] != null) {
				MM_showHideLayers(defaultDiv[i], '', 'show');
			}
			if (visDiv[i] != null) {
				MM_showHideLayers(visDiv[i], '', 'hide');
			}
		}
		
	// otherwise, show the given div, and hide all other divs in the same level
	} else {

		// if there is a visible div in this level, hide it and all visible menus above it
		if (visDiv[level] != null && visDiv[level] != div && visDiv[level] != defaultDiv[level]) {
			for (var i=level; i<menuOn.length; i++)
				MM_showHideLayers(visDiv[i], '', 'hide');
		}

		// make sure the default div is hidden
		if (div != null && div != defaultDiv[level] && defaultDiv[level] != null) {
			MM_showHideLayers(defaultDiv[level], '', 'hide');
		}
		
		// show the given div
		if (div != null) {
			//	  alert(3);
			MM_showHideLayers(div, '', 'show');
			menuOn[level] = true;
		}
	}
	
	// update the visible div (may be null)
	visDiv[level] = div;
}

function checkMenu() {
	// perform a periodic check to see if all menus are 'off'
	// if so, then hide all visible menus
	var noneOn = false;
	for (var i=0; i<menuOn.length; i++)
		noneOn = noneOn || !menuOn[i];
	if (noneOn) {
		showMenu();
	}
}

function menuOff(level) {
	// invoked whenever the user rolls off a div
	menuOn[level] = false;
	if (timeoutID != null) return;
	timeoutID = setInterval('checkMenu()', 1000);
}