var eOpenMenu = null;
var eActiveLI = null;
var eOpenSubMenu = null;

function OpenMenu(eSrc, eMenu)
{
	eSrc.className = "over";
	if (eMenu)
	{
		var l = GetAllLeftOffsets(eSrc) - 2;// 2 is borders width
		var t = GetAllTopOffsets(eSrc) + eSrc.clientHeight - 0 ;// 1 is border width
		
		//next is FireFox hack
		if(eMenu.hasAttribute)
		{
			l += 0;
			t += 10;
		}
		
		eMenu.style.left = l + "px"; 
		eMenu.style.top = t + "px"; 
		eMenu.style.display = "block";
		eOpenMenu = eMenu;
	}
}

function OpenSubMenu(eSrc, eMenu)
{
	if (eMenu)
	{
		var l = GetAllLeftOffsets(eSrc.parentNode) + eSrc.parentNode.parentNode.clientWidth + 1;// 2 is borders width
		var t = GetAllTopOffsets(eSrc) - 21 ;// 1 is border width
		
		eMenu.style.left = l + "px"; 
		eMenu.style.top = t + "px"; 		
		eMenu.style.display = "block";
		eOpenMenu.SubMenu = eMenu;
		
		eActiveLI = eSrc;
		eOpenSubMenu = eOpenMenu.SubMenu;
	}
}	

function CloseMenu(eMenu)
{
	if(eMenu)
	{
		var parentMenu = jsiGetElementById(eMenu.getAttribute("mparent")) ;
		if(parentMenu)
			parentMenu.className = "";
	
		fnClearHighLight(eMenu.firstChild);
		eMenu.style.display = "none";
	
		eOpenMenu = null;
		eActiveLI = null;
		CloseSubMenu();
	}
}

function CloseSubMenu()
{
	if(eOpenSubMenu != null)
	{
		fnClearHighLight(eOpenSubMenu.firstChild);
		eOpenSubMenu.style.display = "none";
		eOpenSubMenu = null;
	}		
}

function fnOnOver(e)
{
	var eSrc = jsiGetSrcElement(e) ;
	if(eSrc.tagName == "A")
		eSrc = eSrc.parentNode;
		
	fnHighLight(eSrc, true);
	
	if (jsiHasAttribute(eSrc, "mchild"))
	{
		var eMenu = jsiGetElementById(eSrc.getAttribute("mchild"));
		
		if(jsiHasAttribute(eMenu, "toleft"))
		{
			if(eOpenSubMenu != eMenu)
			{
				CloseSubMenu();
				OpenSubMenu(eSrc, eMenu);
			}
		}
		else
		{
			if (eOpenMenu && eOpenMenu != eMenu) 
				CloseMenu(eOpenMenu);
			
			OpenMenu(eSrc, eMenu);
		}
	}
	else 
	{
		if (eOpenMenu && !jsiContains(eOpenMenu, eSrc) && ItIsNotValidSubMenu(eSrc)) 
			CloseMenu(eOpenMenu);
			
		if(		eActiveLI 
				&& eSrc.tagName == "LI" 
				&& (!jsiHasAttribute(eSrc.parentNode.parentNode, "toleft") || eSrc.parentNode.parentNode.getAttribute("toleft") != "1")
				&& eSrc.parentNode.parentNode.id != eActiveLI.id
			)
			CloseSubMenu();
	}
}

function ItIsNotValidSubMenu(eSrc)
{
	if(eActiveLI && eSrc.tagName == "LI" && eSrc.parentNode.parentNode.getAttribute("mparent") == eActiveLI.id)
		return false;
	
	if(		eOpenSubMenu 
			&& eOpenSubMenu.id == eSrc.id 
			&& jsiHasAttribute(eSrc, "mparent")
			&& eSrc.getAttribute("mparent") == eActiveLI.id
		)
		return false;
	
	return true;
}

function fnHighLight(el, bOn)
{
	if(el.parentNode 
		&& el.parentNode.parentNode
		&& el.parentNode.parentNode.className
		&& el.parentNode.parentNode.className.lastIndexOf("hidmenu") != -1)
	{
		fnClearHighLight(el.parentNode);
		el.className = bOn ? "over" : '';

		if(jsiHasAttribute(el, "mchild"))
			el.className += " haschilds";
	}
}

function fnClearHighLight(el)
{
	// FireFox hack for empty text nodes
	if(el.nodeName == "#text")
		el = el.nextSibling;
	
	var number = el.childNodes.length;
	for(var i=0; i < number; i++)
	{
		var li = el.childNodes[i];
		if (jsiHasAttribute(li, "mchild"))
			li.className = "haschilds";
		else
			li.className = ''; 
	}
}
