/**
 * Copyright www.addition.pt
 * @author Diogo Vitorino
 * @version 1.0
 *
 */

function activateMenus(){
    var menubar = document.getElementById("menubar");

    var menuables = document.getElementsByClassName("menuable",menubar);

    for(var i=0;i<menuables.length;i++)
    {
        var menuable = menuables[i];

		menuable.info = menuItems[menuable.id];


		Event.observe(menuable,'mouseover',menuableOver);
		Event.observe(menuable,'click',menuableClick);

        menuable.mdiv = createMenuableDiv(menuable);
    }
}

function createMenuableDiv(menuable){
	if(!menuable.info || !menuable.info.items)
		return null;

    var theMenuDiv = document.createElement("div");
    theMenuDiv.className = "menuPop";

    for(var i=0; i<menuable.info.items.length;i++)
    {
        var mitem = menuable.info.items[i];
        var aMenuItem = document.createElement("div");
        aMenuItem.mitem = mitem;
        aMenuItem.className = "menuPopItem";
        aMenuItem.innerHTML = mitem.txt;

        Event.observe(aMenuItem,'mouseover',popMenuOver);
        Event.observe(aMenuItem,'mouseout',popMenuOut);
		Event.observe(aMenuItem,'click',popMenuClick);

        theMenuDiv.appendChild(aMenuItem);
    }
	return theMenuDiv;
}


function hideMenuable()
{
	if(!document.menuableShowing)
		return;

	document.menuableShowing.className = "menuable";

	if(document.menuableShowing.mdiv)
	{
		document.menuableShowing.mdiv.style.display = "none";
		document.body.removeChild(document.menuableShowing.mdiv);

	}

	document.menuableShowing = null;
	Event.stopObserving(document.body,"mousemove",monitorMenuableOuts);

}

function menuableOver(e)
{
    var menuable = Event.element(e);


	if(document.menuableShowing && document.menuableShowing==menuable)
		return;

	if(document.menuableShowing)
	{
		hideMenuable();
	}

    menuable.className="menuable over";
    Event.observe(document.body,"mousemove",monitorMenuableOuts);
	document.menuableShowing = menuable;

	if(menuable.mdiv)
	{
		Position.prepare();
		var xy = Position.positionedOffset(menuable);

	    menuable.mdiv.style.left = xy[0]+"px";
	    menuable.mdiv.style.top = xy[1] + menuable.offsetHeight +"px";
		menuable.mdiv.style.display="block";
		document.body.appendChild(menuable.mdiv);
	}
}

function monitorMenuableOuts(e){
/*	var now = new Date().getTime();
	if(document.lastMouseMonitor && now-document.lastMouseMonitor<30)
	{
		document.lastMouseMonitor = now;
		return;
	}
	document.lastMouseMonitor = now;*/

	if(!document.menuableShowing)
		return;

	Position.prepare();

	var inMenu = Position.within(document.menuableShowing,Event.pointerX(e),Event.pointerY(e));
	var inDiv = document.menuableShowing.mdiv && Position.within(document.menuableShowing.mdiv,Event.pointerX(e),Event.pointerY(e));

	if(!inMenu && !inDiv)
	{
		hideMenuable();
	}
}


function popMenuOver(e){
	if(document.popMenuOver)
		document.popMenuOver.className = "menuPopItem";

	document.popMenuOver = Event.element(e);
	document.popMenuOver.className = "menuPopItem_over";
}

function popMenuOut(e){
	Event.element(e).className = "menuPopItem";
	document.popMenuOver = null;
}

function popMenuClick(e){
	var menuablePop = Event.element(e);
	if(menuablePop.mitem && menuablePop.mitem.url)
		document.location.href = menuablePop.mitem.url;
}

function menuableClick(e){
	var menuable = Event.element(e);
	if(menuable.info && menuable.info.url)
		document.location.href = menuable.info.url;
}