
var timer = null;
var currentMenuCell = null;
var currentCount = 0;
var active = -1; // THE CURRENT ACTIVE PAGE
var current = -1; // THE CURRENT EXTENDED MENU
var actDelay = 200, clsDelay = 500;
var maxMenu = new Object(); // USED TO COLLECT NAMES OF ALL THE MENUS
//var holdOpen = new Array();

function debug(text) {
	document.getElementById('debug').innerHTML += text + "<br />";
}

function showMenu(menuCell, subMenuName) {
	if (document.getElementById(subMenuName).style.display != "block") {
		// Change the cursor to waiting icon
		menuCell.style.cursor = "wait";
	}
	
	// Count number of levels for menu so don't override more important calls
	var count = (subMenuName.split("-")).length;
	if (count > currentCount) {
		currentCount = count;
		currentMenuCell = menuCell;
		window.clearTimeout(timer);
		timer = window.setTimeout("doShowMenu('" + subMenuName + "')", actDelay);
	}
}

function doShowMenu(subMenuName) {
	currentCount = 0;
	// Show menu and change cursor back
	document.getElementById(subMenuName).style.display = "block";
	currentMenuCell.style.cursor = "";

	// Iterate through known menus to close unnesscaraly open menus
	var sections = subMenuName.split('-');

	// Test new values for maxMenu
	var name = sections[0] + "-";
	var i;
	for (i = 1; i < sections.length; i++) {
		if (!maxMenu[name] || maxMenu[name] < sections[i]) {
			maxMenu[name] = (sections[i]*1);
		}
		if (i < sections.length - 1) {
			name += sections[i] + "-";
		}
	}
	
	// Close any submenus of this menu
	name += sections[sections.length - 1] + "-";
	if (typeof(maxMenu[name]) != 'undefined') {
		doHideAbove(name + 0);
	}

	//Close any menus above this menu
	doHideAbove(subMenuName);
}

function hideMenu(menuStart) {
	currentCount = 0;
	window.clearTimeout(timer);
	timer = window.setTimeout("doHideMenu('" + menuStart + "')", clsDelay);
}

function doHideMenu(menuStart) {
	iterateHide(menuStart, 1);
}

function hideAbove(subMenuName) {
	var count = (subMenuName.split("-")).length;
	if (count > currentCount) {
		currentCount = count;
		window.clearTimeout(timer);
		timer = window.setTimeout("doHideAbove('" + subMenuName + "')", clsDelay);
	}
}


function doHideAbove(subMenuName) {
	var sections = subMenuName.split('-');

	var name = sections[0] + "-"
	var i;
	for (i = 1; i < sections.length; i++) {
		if (typeof(maxMenu[name]) != 'undefined') {
			iterateHide(name, (sections[i] * 1) + 1);
		}
		name += sections[i] + "-";
	}
}

function iterateHide(section, start) {
	var i;
	//alert("iterateHide" + section + start + ":" + maxMenu[section]);
	for (i = (start*1); i <= maxMenu[section]; i++) {
		document.getElementById(section + i).style.display = "none";
		if (typeof(maxMenu[section + i + "-"]) != 'undefined') {
			iterateHide(section + start + "-", 1);
		}
	}
}
