﻿/////////////////////////////////////////////////////////////////////
//
// File: Menu.js
//
// Description: implements a simple menu for IFL. 
//
// Copyright(c), Eric, 2007.
/////////////////////////////////////////////////////////////////////

var gHelper = new __web_w3_dom.CleanupHelper(); // memory helper. 

function MenuItem_MouseOver(menuItem, subMenu)
{
    return function() 
    { 
        if(menuItem.contains(event.fromElement)) return;
        
        var layout = __web_w3_dom.Layout.calc(menuItem);
        
        if(menuItem.className.indexOf("hover") < 0)
        {
            menuItem.className += " hover";
        }
        
        if(subMenu)
        {
            var mozillaFix = sys.env.userAgent.isMozilla() ? -8 : 0;
            subMenu.style.left = (layout.left + layout.width + mozillaFix) + "px";
            subMenu.style.top = (layout.top) + "px";
            subMenu.style.display = "block";
            subMenu.style.visibility = "visible";
            subMenu.style.zIndex = 1;
        }
    }
}

function MenuItem_MouseOut(menuItem, subMenu)
{
    return function()
    { 
        if( subMenu && 
            ((menuItem.contains(event.fromElement) && menuItem.contains(event.toElement)) ||
            (menuItem.contains(event.fromElement) && subMenu.contains(event.toElement)))
        )
        {
            return;
        }
        
        if(!(menuItem.contains(event.fromElement) && menuItem.contains(event.toElement)))
        {
            menuItem.className = menuItem.className.replace(" hover", "");
        }
        
        if(subMenu)
        {
            subMenu.style.display = "none";
            subMenu.style.visibility = "hidden";
        }
    }
}

function SubMenu_MouseOut(menuItem, subMenu)
{
    return function()
    {
        if( subMenu && 
           ((subMenu.contains(event.fromElement) && subMenu.contains(event.toElement)) ||
           (subMenu.contains(event.fromElement) && menuItem.contains(event.toElement)))
        )
        {
            return;
        }
        
        menuItem.className = menuItem.className.replace(" hover", "");
        
        if(subMenu)
        {
            subMenu.style.display = "none";
            subMenu.style.visibility = "hidden";
        }
    }
}

function initMenu()
{
    if(!window.__gMenu) __gMenu = [];
    var obj, subObj;
    
    for(var i = 0; i < __gMenu.length; i++)
    {
        for(var j = 0; j < __gMenu[i].length; j++)
        {
            obj = document.getElementById(__gMenu[i][j][0]);
            subObj = document.getElementById(__gMenu[i][j][1]);
            
            if(obj) 
            {   
                gHelper.attachEvent("menu", obj, "onmouseover", MenuItem_MouseOver(obj, subObj));
                gHelper.attachEvent("menu", obj, "onmouseout", MenuItem_MouseOut(obj, subObj));
                
                if(subObj)
                {
                    gHelper.attachEvent("menu", subObj, "onmouseout", SubMenu_MouseOut(obj, subObj));
                 }
            }
        }
    }
}

function destroyMenu()
{
    gHelper.dispose();
    gHelper = null;
}

gHelper.attachEvent(null, window, "onload", initMenu);
gHelper.attachEvent(null, window, "onunload", destroyMenu);
