var menuShowDelay = 200;
var menuHideDelay = 500;
window.visibleMenus = new Array();

// IE MAC compatibility
if(typeof Array.prototype.push=='undefined')
  Array.prototype.push=function(){
    var i=0;
    b=this.length,a=arguments;
    for(i;i<a.length;i++)this[b+i]=a[i];
    return this.length
  };
  
function menuMouseOver(node) {
	var menu = findMenu(node);
	if(!menu) return;
	if(menu.showPending) {window.clearTimeout(menu.showPending); menu.showPending = false;}
	if(menu.hidePending) {window.clearTimeout(menu.hidePending); menu.hidePending = false;}
	//if(menu.style.visibility == 'visible') return;
	if(menu.style.display == "block") return;
	menu.showPending = setMenuShowTimeout(menu, menuShowDelay);
}

function menuMouseOut(node) {
	var menu = findMenu(node);
	if(!menu) return;
	if(menu.showPending) {window.clearTimeout(menu.showPending); menu.hidePending = false;}
	if(menu.hidePending) {window.clearTimeout(menu.hidePending); menu.showPending = false;}
	//if(menu.style.visibility == 'hidden') return;
	if(menu.style.display == "none") return;
	menu.hidePending = setMenuHideTimeout(menu, menuHideDelay);
}

function findMenu(node) {
	if(typeof node.getElementsByTagName == 'function') {
		var children = node.getElementsByTagName('UL');
		if(children)
			return children[0];
		else
			return null;
	}
	else {
		var children = node.childNodes;
		for(var i=0; i < children.length; i++)
			if (children[i].nodeName == 'DIV')
				//return children[i];
				return children[i].getElementsByTagName("UL")(0);
				
		return null;
	}
}

function setMenuShowTimeout(object, delay) {
	var temp = function(){
		hideMenusNow();
		window.showMenu(object);
	};
    return setTimeout(temp, delay);
}

function setMenuHideTimeout(object, delay) {
	var temp = function(){
		window.hideMenu(object);
	};
    return setTimeout(temp, delay);
}

function hideMenusNow() {
	var vis = window.visibleMenus;
	var newvis = new Array();
	var i = 0;
	for(i=0; i < vis.length; i++) {
		var menu = vis[i];
		if(menu.hidePending) {
			window.clearTimeout(menu.hidePending);
			menu.hidePending = false;
			//menu.style.visibility = 'hidden';
			menu.style.display = "none";
		}
		else {
			newvis.push(vis[i]);
		}
	}
	window.visibleMenus = newvis;
}

function hideMenu(menu) {
	var vis = window.visibleMenus;
	var newvis = new Array();
	//menu.style.visibility = 'hidden';
	menu.style.display = "none";
	for(var i = 0; i < vis.length; i++) {
		if(vis[i] != menu) {
			newvis.push(vis[i]);
		}
	}
	window.visibleMenus = newvis;
}

function showMenu(menu) {
	//menu.style.visibility = 'visible';
	//alert(menu.style.display);
	menu.style.display = "block";
	//alert(menu.style.display);
	window.visibleMenus.push(menu);
}
