var mnu = new Array();
var evtTmp = null;
var delay = 20;

function GetMenu(id)
{
    var divs = document.getElementsByTagName("DIV");
    var i;
    
    for(i = 0; i < divs.length; i++)
    {
        if(divs[i].id == id)
        {
            return divs[i];
        }
    }
    
    return null;
}

function GetMenuParent(id)
{
    var num = id.replace("mnu", "").split("_");
    
    if(num.length == 1)
    {
        return null;
    }
    else
    {
        var mnuId = "mnu" + num[0];
        var i;
        
        for(i = 1; i < num.length - 1; i++)
        {
            mnuId += "_" + num[i];
        }
        
        return mnuId;
    }
}

function GetMenuChildren(id)
{
    var mnuChildren = new Array();
    var divs = document.getElementsByTagName("DIV");
    var i;
    
    for(i = 0; i < divs.length; i++)
    {
        if(divs[i].id != id && divs[i].id.indexOf(id) != -1)
        {
            mnuChildren[mnuChildren.length] = divs[i].id;
        }
    }
    
    return mnuChildren;
}

function ExpandMenu(id, evt)
{
    var mnu = document.getElementById(id);

    if(evt != null)
    {
        //Set the position.
        var e = new Event(evt);
        evtTmp = e;
        
        var mnuDim = GetElementDimensions(mnu);
        var evtDim = GetElementDimensions(e.eventElement);
        
        mnu.style.left = (e.eventElementPosition[0] + e.eventElementDimensions[0] - 10) + "px";
        mnu.style.top = (e.eventElementPosition[1] - Math.floor((mnuDim[1] - evtDim[1]) / 2)) + "px";
        mnu.style.zIndex = 5;
    }
    else
    {
        evtTmp = null;
    }
    
    ShowMenu(id);
    
    var num = id.replace("mnu", "").split("_");
    var i;
    
    for(i = num.length; i >= 0; i--)
    {
        var j;
        var mnuId = "mnu" + num[0];
        
        for(j = 1; j < i; j++)
        {
            mnuId += "_" + num[j];
        }
    
        ShowMenu(mnuId);
    }
    
    if(num == 1)
    {
        //Hide all other root menus.
        var divs = document.getElementsByTagName("DIV");
        var i;
        
        for(i = 0; i < divs.length; i++)
        {
            if(divs[i].id.indexOf("mnu") > -1)
            {
                if(divs[i].id.indexOf(id) == -1)
                {
                    HideMenu(divs[i].id);
                }
            }
        }
    }
    else
    {
        //Hide the other menus on the same tier.
        var i;
        var tier = "mnu";
    
        for(i = 0; i < num.length - 1; i++)
        {
            tier += num[i] + "_";
        }
        
        i = 1;
        var mnuTier = GetMenu(tier + i);
        while(mnuTier != null)
        {
            if(mnuTier.id != id)
            {
                HideMenu(mnuTier.id);
            }
            
            i++;
            mnuTier = GetMenu(tier + i);
        }
    }
}

function CollapseMenu(id, evt)
{    
    try
    {
        var e = new Event(evt);
        var mnu = document.getElementById(id);
        
        var num = id.replace("mnu", "").split("_");
        var i;
        
        for(i = num.length; i >= 0; i--)
        {
            var j;
            var mnuId = "mnu" + num[0];
            
            for(j = 1; j < i; j++)
            {
                mnuId += "_" + num[j];
            }

            if(!GetMouseOverElement(e, GetMenu(mnuId)))
            {                
                var mnuParent = GetMenuParent(mnuId);
                
                if(mnuParent == null)
                {
                    HideMenu(mnuId);
                    CollapseSubMenus(mnuId)
                }
                else if(!GetMouseOverElement(e, GetMenu(mnuParent)))
                {
                    HideMenu(mnuId);
                    CollapseSubMenus(mnuId)
                }
            }
            else
            {
                return;
            }
        }        
    }
    catch(e){ }
}

function CollapseSubMenus(id)
{
    var children = GetMenuChildren(id);
    var i;
    
    for(i = 0; i < children.length; i++)
    {
        HideMenu(children[i]);
    }
}

function ShowMenu(id)
{
    document.getElementById(id).style.visibility = "visible";
}

function HideMenu(id)
{
    document.getElementById(id).style.visibility = "hidden";
}
