var activeMenu = null;
var inMenu = 0;
var inRunningTimer = 0;
var onItem = 0;

function addEvent( el, evname, func )
{			
	if ( el.addEventListener )
		el.addEventListener(evname, func, true);
	else
		el.attachEvent("on" + evname, func);
};	

function deactivateCurrentMenu()
{
	if(activeMenu != null)
	{
		activeMenu.style.visibility = "hidden";
		activeMenu = null;
		inMenu = 0;
	}
}

function stopBubbling()
{
	// Stop the event from bubbling.
	if ( event.stopPropagation )
		event.stopPropagation();	    	
	else
		window.event.cancelBubble = true;
}

function openMenu(event, menuId)
{
	var menu = document.getElementById(menuId);

	if(activeMenu == menu)
	{
		onItem = 1; 
		stopBubbling();	
		return;
	}

 	deactivateCurrentMenu();
	menu.style.visibility = "visible";
	activeMenu = menu;
	onItem = 1; 
	stopBubbling();	
}

function leaveMenuItem()
{
 	onItem = 0;
	stopBubbling();	  
}

function overMenu()
{
	inMenu = 1;
	stopBubbling();
}

function closeOpenMenus()
{
	inRunningTimer = 0;
	if(!inMenu && !onItem)
	{
		if(activeMenu)
		{
			deactivateCurrentMenu();
		}
	}
}

function outMenu()
{
	inMenu = 0;
}

function documentMouseOver()
{
	if(!inRunningTimer && !inMenu && !onItem)
	{
		setTimeout("closeOpenMenus()", 500);
		inRunningTimer = 1;
	}
}

addEvent( document, "mouseover", documentMouseOver );