function copyFunction(func, arg)
{
	return function(e)
	{
		func(e, arg);
	}
} 

var menuItems = new Array();

var MenuItem = function(id)
{
	this.id = id;
	this.menuElement = document.getElementById(id + '_li');
	this.liElement = (this.menuElement.getElementsByTagName('li').length > 0) ? 
		this.menuElement.getElementsByTagName('li')[0] :
		this.menuElement.getElementsByTagName('span')[0];
	this.className = this.liElement.className;
	this.containerElement = document.getElementById(id + '_div');
	// link click
	this.liElement.getElementsByTagName('a')[0].removeAttribute('href');
	this.liElement.getElementsByTagName('a')[0].style.cursor = 'pointer';
	this.liElement.getElementsByTagName('a')[0].onclick = copyFunction(OnClickEvent, this);
	this.liElement.getElementsByTagName('a')[0].onmouseover = copyFunction(ShowMenuForced, this);
	
	// Init
	this.menuElement.onmouseover = copyFunction(ShowMenu, this);
	this.menuElement.onmouseout = copyFunction(HideMenu, this);
	
	this.containerElement.onmouseover = copyFunction(ShowMenu, this);
	this.containerElement.onmouseout = copyFunction(HideMenu, this); 
	this.timer = null;
	return this;
}

function OnClickEvent(e, item)
{
	ShowMenu(null, item);
	return true;
}

function SetupMenu(menuid) {
	var program = document.getElementById(menuid + '_li');
	if(program == null)
		return;
	else
		menuItems.push(new MenuItem(menuid));
}

function ShowMenuForced(e, item)
{
    for(i = 0; i < menuItems.length; i++)
    {
        menuItems[i].containerElement.style.display = 'none';
	    menuItems[i].liElement.className = item.className;
	    if(menuItems[i].timer != null)
	    {
	        clearInterval(menuItems[i].timer);
	        menuItems[i].timer = null;
	    }
	}
    ShowMenu(e, item);
}

function ShowMenu(e, item) {
    if(item.timer != null)
    {
        clearInterval(item.timer);
        item.timer = null;
    }
	item.containerElement.style.display = 'block';
	item.liElement.className = "m-list isOver";
}

function HideAll()
{
	for(i = 0; i < menuItems.length; i++)
		HideMenu(null, menuItems[i]);
}

function HideMenu(e, item) {
    if(item.timer != null)
        return;
    HideThis = function(){
	    item.containerElement.style.display = 'none';
	    item.liElement.className = item.className;
	}
	item.timer = setTimeout(HideThis, 1000);
}

function ResetTimer() {
   if (t) window.clearTimeout(t);
}

function StartTimer(menuid) {
   t = window.setTimeout("HideMenu(current,'" + menuid + "')",500);
}

