var menu;
var timerID;

menuInit();

function menuInit()
{
   var ul, i, uls;
   
   uls = document.getElementsByTagName('UL');
   
   for (i = 0, cnt = uls.length; i < cnt; i++)
   
     if (uls[i].id && uls[i].className == 'ULMenus')
     {
        ul = uls[i];
        
        if (ul)
        {
            var lis = ul.getElementsByTagName('LI');
            
            for (var k = 0; k < lis.length; k++)
            {
              lis[k].onmouseover = function (){ this.className = 'over'; }
              lis[k].onmouseout  = function (){ this.className = ''; }
            }
        }
     }
}

function menuShow(parent, child, isVertical)
{
    menuHide();
    
    menu = child;

    if (!menu) return;

    var pos = menuPosition(parent);

    if (isVertical)
    {
        menu.style.left = pos[0] + parent.offsetWidth + 'px';
        menu.style.top  = pos[1] + 'px';
    }
    else
    {
        menu.style.left = pos[0] + 'px';

        menu.style.top  = pos[1] + parent.offsetHeight + 'px';
        
        if (menu.offsetWidth < parent.offsetWidth)
        {
            menu.style.width  = parent.offsetWidth + 'px';
        }
    }

    menu.style.visibility = 'visible';
}

function menuHide()
{
    if (menu)
    {
        if (timerID)
            clearTimeout(timerID);

        menu.style.visibility = 'hidden';
        menu = null;
    }
}

function menuOut()
{
    if (menu)
        timerID = setTimeout('menuHide()', 300);
}

function menuOver()
{
    if (timerID)
        timerID = clearTimeout(timerID);
}

function menuPosition(element)
{
    var left = 0, top = 0;
    
    while (element)
    {
        left += element.offsetLeft;
        top += element.offsetTop;
        element = element.offsetParent;
    }
    return [left, top];
}