var menuState = new Array();
var menuHierarchy = new Array();
var menuTimeoutId = null;

function menuTimeoutInit(millisec)
{
	if (millisec == null) millisec=20000
	if (menuTimeoutId != null) clearTimeout(menuTimeoutId);
	menuTimeoutId = setTimeout('menuHideAll()',millisec);
}

function menuTimeoutCancel()
{
	if (menuTimeoutId != null) clearTimeout(menuTimeoutId);
	menuTimeoutId = null;
}

function menuShow(id)
{
	var menu=document.getElementById(id);

	menuTimeoutCancel();
	menuHideAll();
	if (menu != null) {
		menu.style.clip='rect(auto,auto,auto,auto)';
		menuState[id] = 'visible';
	}
	menuTimeoutInit();
}

function subMenuShow(ids)
{
	var id;
	var menu;
	var last;
	
	menuTimeoutCancel();
	menuHideAll();
	last = null;
	for( var i=0; i<ids.length; i++) {
		id=ids[i];
		if (last!=null) {
			menuHierarchy[last] = id;
		}
		last=id;
		menu=document.getElementById(id);
		if (menu != null) {
			menu.style.clip='rect(auto,auto,auto,auto)';
			menuState[id] = 'visible';
		}
	}
	menuTimeoutInit();
}

function menuHide(id)
{
	var menu=document.getElementById(id);

	menuTimeoutCancel();
	if (menu != null) {
		menu.style.clip='rect(auto,auto,0,auto)';
		menuState[id] = 'hidden';
		if (menuHierarchy[id] != null) {
			menuHide(menuHierarchy[id]);
		}
	}
}

function menuHideAll()
{
	menuTimeoutCancel();
	for(var key in menuState) {
		if (menuState[key]=='visible') {
			menuHide(key);
		}
	}
}

function menuIn()
{
	menuTimeoutCancel();
}

function menuOut()
{
	menuTimeoutInit(100);
}


function toggleMenu(id)
{
	if (menuState[id]=='visible') {
		menuHide(id);
	} else {
		menuShow(id);
	}
}
