var div = null;
var menu = new Array();
var numMenus = 0;

function initMenu(menuId)
{
	div = document.getElementById(menuId);
	if(div)
	{
		numMenus++;
		var subMenus = div.getElementsByTagName('ul');
		var j = subMenus.length;
		var li, i;
		while(j--) 
		{
			li = subMenus[j].getElementsByTagName('li');
			i = li.length;
			while (i--) li[i].onmouseover = showMenu;
		}
		
		menu[numMenus - 1] = subMenus[0];
		menu[numMenus - 1].onmouseout = timeout;
		menu[numMenus - 1].onmouseover = cleartimer;
	}
}

var timer = new Array();
function timeout()
{
	var pn, menuId;
	//alert('test');
	for(var i = 0; i < numMenus; i++)
	{
		menuId = menu[i].parentNode.parentNode.id;
		pn = this.parentNode || event.srcElement.parentNode; //Firefox: this, IE: event.srcElement
		while(pn.id != menuId)
		{
			if(pn.parentNode)
				pn = pn.parentNode;
			else
				break;
		}

		if(menuId == pn.id)
			timer[i] = setTimeout('hideMenus(menu[' + i + '], null)', 400);
	}
}

function cleartimer()
{
	var pn, menuId;
	//alert('test2');
	for(var i = 0; i < numMenus; i++)
	{
		menuId = menu[i].parentNode.parentNode.id;
		pn = this.parentNode || event.srcElement.parentNode; //Firefox: this, IE: event.srcElement
		while(pn.id != menuId)
		{
			if(pn.parentNode)
				pn = pn.parentNode;
			else
				break;
		}
		//alert(menuId);
		if(timer[i] && menuId == pn.id)
		{
			clearTimeout(timer[i]);
			timer[i] = null;
		} else if(menuId != pn.id)
			hideMenus(menu[i], null);
	}
}

function showMenu()
{
	var ul = this.parentNode;
	while (ul)
	{
		if (ul.tagName.toLowerCase() == 'ul')
		{
			hideMenus(ul, this);
			break;
		}

		ul = ul.parentNode;
	}

	ul = this.firstChild;
	while (ul)
	{
		if (ul.nodeType == 1 && ul.tagName.toLowerCase() == 'ul')
		{
			ul.style.display = 'block';
			ul.style.visibility = ''; // necessary for IE
			break;
		}

		ul = ul.nextSibling;
	}
}

function hideMenus(level, skipli)
{
	var stack = [level], i = 0, li, j, el, tag;
	do
	{
		li = stack[i].childNodes, j = li.length;
		while (j--)
		{
			el = li[j];
			if (el.nodeType == 1 && el != skipli)
			{
				tag = el.tagName.toLowerCase();
				if (tag == 'li')
				{
					stack[i++] = el;
				}
				else if (tag == 'ul' && el.style.display == 'block')
				{
					stack[i++] = el;
					el.style.display = 'none';
					el.style.visibility = 'hidden'; // necessary for IE
				}
			}
		}
	}
	while (i--);
}