var vvOpenContainer = null;
var vvOpenMenus = null;
var vvHideMenuTimer = null;

function VV_menuStartTimeout(hideTimeout) {
	vvHideMenuTimer = setTimeout("VV_menuHideMenus()", hideTimeout);	
}

function VV_menuHideMenus() {
	VV_menuResetTimeout();
	if(vvOpenContainer) {
		var c = document.getElementById(vvOpenContainer);
		c.style.visibility = "inherit";
		vvOpenContainer = null;
	}
	if( vvOpenMenus ) {
		for(var i = 0; i < vvOpenMenus.length ; i++) {
			var m = document.getElementById(vvOpenMenus[i]);
			m.style.visibility = "hidden";			
		}
		vvOpenMenus = null;
	}
}

function VV_menuHideSubmenus(menuName) {
	if( vvOpenMenus ) {
		var h = false;
		var c = 0;
		for(var i = 0; i < vvOpenMenus.length ; i++) {
			if( h ) {
				var m = document.getElementById(vvOpenMenus[i]);
				m.style.visibility = "hidden";
			} else if( vvOpenMenus[i] == menuName ) {
				h = true;
			} else {
				c++;
			}
		}
		vvOpenMenus.length = c+1;
	}
}

function VV_menuOverMenuItem(menuName, subMenuSuffix) {
	VV_menuResetTimeout();
	VV_menuHideSubmenus(menuName);
	if( subMenuSuffix ) {
		var subMenuName = "" + menuName + "_" + subMenuSuffix;
		VV_menuShowSubMenu(subMenuName);
	}
}

function VV_menuShowSubMenu(subMenuName) {
	VV_menuResetTimeout();
	var e = document.getElementById(subMenuName);
	e.style.visibility = "inherit";
	if( !vvOpenMenus ) {
		vvOpenMenus = new Array;
	}
	vvOpenMenus[vvOpenMenus.length] = "" + subMenuName;
}

function VV_menuResetTimeout() {
	if (vvHideMenuTimer) clearTimeout(vvHideMenuTimer);
	vvHideMenuTimer = null;
}

function VV_menuShowMenu(containName, menuName, xOffset, yOffset, triggerName) {
	VV_menuHideMenus();
	VV_menuResetTimeout();
	VV_menuShowMenuContainer(containName, xOffset, yOffset, triggerName);
	VV_menuShowSubMenu(menuName);
}

function VV_menuShowMenuContainer(containName, x, y, triggerName) {	
	var c = document.getElementById(containName);
	var s = c.style;
	s.visibility = "inherit";
	
	vvOpenContainer = "" + containName;
}