var menuClassName = "dropMenu";
var timer;
var lastElem = null;

function getParentUl(elem)
{
	var i;
	while(!domApi.hasClass(elem,menuClassName))
	{
		for(i=0; i<elem.childNodes.length; i++)
		{
			if(elem.childNodes[i].nodeType == 1 && elem.childNodes[i].tagName.toLowerCase() == 'ul')
			{
				return elem.childNodes[i];
			}
		}
		elem = elem.parentNode;
	}
}

function showHideMenu(elem, action)
{
    /*var i;
	
	while(!domApi.hasClass(elem,menuClassName))
	{
		for(i=0; i<elem.childNodes.length; i++)
		{
			if(elem.childNodes[i].nodeType == 1 && elem.childNodes[i].tagName.toLowerCase() == 'ul')
			{
				domApi.replaceClass(elem.childNodes[i], prevAction, action);
			}
		}
		elem = elem.parentNode;
	}*/
	var prevAction = action == 'show' ? 'hide' : 'show';
	var parentUl = getParentUl(elem);
	if(parentUl != null)
	{
		domApi.replaceClass(parentUl, prevAction, action);
	}

}

function hideTimeout(elem)
{
	lastElem = getParentUl(elem);
	var delayFunc = function () { showHideMenu(elem, "hide");};
	timer=setTimeout(delayFunc,100);
}

function showMenu(elem)
{
	if(lastElem == getParentUl(elem))
	{
		clearTimeout(timer);
	}
	
	showHideMenu(elem, "show");
}

domApi.addTagEvent("UL", menuClassName, "mouseover",  function (e) { showMenu(domApi.getEventTarget(e)); });
domApi.addTagEvent("UL", menuClassName, "mouseout",  function (e) { hideTimeout(domApi.getEventTarget(e)); });
