var mnu = new Array();

var speed = 8;
var delay = 10;

function GetMenu(id)
{
    var mnuId = id.replace("mnu", "").split("_");
    
    return mnu[mnuId[0]][mnuId[1]];    
}

function ExpandMenu(id, evt)
{
    var mnu = document.getElementById(id);
    var num = id.replace("mnu", "").split("_");

    //Clear the timer.
    window.clearTimeout(GetMenu(id)[2]);

    if(num[1] > 0)
    {
        CheckRootMenu(num);
    }
    
    //Set the position.
    if(evt != null)
    {
        var e = new Event(evt);
        mnu.style.left = (e.eventElementPosition[0] + e.eventElementDimensions[0] - 10) + "px";
        mnu.style.top = (e.eventElementPosition[1] + 6) + "px";
        mnu.style.width = "0px";
        mnu.style.zIndex = 5;
        mnu.style.visibility = "visible";
    }
    
    var width = GetMenu(id)[1];
    if(width < GetMenu(id)[0])
    {
        if(width > GetMenu(id)[0] - speed)
        {
            mnu.style.width = GetMenu(id)[0] + "px";
        }
        else
        {
            GetMenu(id)[1] = width + speed;
            mnu.style.width = GetMenu(id)[1] + "px";
            GetMenu(id)[2] = window.setTimeout("ExpandMenu('" + id + "', null);", delay);
        }
    }
    else
    {
        mnu.style.width = GetMenu(id)[1] + "px";
    }
}

function StartCollapseMenu(id)
{
    //Clear the timer.
    window.clearTimeout(GetMenu(id)[2]);
    GetMenu(id)[2] = window.setTimeout("CollapseMenu('" + id + "');", 100);
}

function CollapseMenu(id)
{
    var mnu = document.getElementById(id);
    var num = id.replace("mnu", "").split("_");
    
    //Clear the timer.
    window.clearTimeout(GetMenu(id)[2]);
    
    if(num[1] > 0)
    {
        CheckRootMenu(num);
    }
        
    var width = GetMenu(id)[1];
    if(width >= 0)
    {
        if(width < speed)
        {
            GetMenu(id)[1] = 0;
            mnu.style.width = "0px";
            mnu.style.visibility = "hidden";
        }
        else
        {
            GetMenu(id)[1] = width - speed;
            mnu.style.zIndex = 4;
            mnu.style.width = GetMenu(id)[1] + "px";
            GetMenu(id)[2] = window.setTimeout("CollapseMenu('" + id + "');", delay);
        }
    }
    else
    {
        if(num.length > 1)
        {
            CheckRootMenu(num);
        }
    }
}

function CheckRootMenu(num)
{
    var open = false;
    var i;
    for(i = 1; i < mnu[num[0]].length; i++)
    {
        if(GetMenu("mnu" + num[0] + "_" + i)[1] > 0)
        {
            open = true;
            break;
        }
    }
    
    if(!open)
    {
        CollapseMenu("mnu" + num[0] + "_0", speed);
    }
    else
    {
        var mnuTop = GetMenu("mnu" + num[0] + "_0");
        window.clearTimeout(mnuTop[2]);
        mnuTop[1] = mnuTop[0];
        document.getElementById("mnu" + num[0] + "_0").style.width = mnuTop[0] + "px";
    }
}
