var hideTimeout;
var menu2Hide;
var gPageWidth = document.documentElement.clientWidth;

function menuMouseover(e)
{
    var menu;

    clearHideTimeout();

    if (window.event)
    {
        if (!(menu = window.event.srcElement.parentMenu))
        {
            menu = window.event.srcElement.parentMenu = getContainerWith(window.event.srcElement, "DIV", "menu");
        }
    }
    else
    {
        menu = e.currentTarget;
    }

    closeSubMenu(menu);
}

function menuLinkMouseover(menuid, e)
{
    var menulink;

    if (window.event)
    {
        menulink = window.event.srcElement;
    }
    else
    {
        menulink = e.currentTarget;
    }

    //showProps(menulink, true, 'debugarea');

    if (!menulink.menu)
    {
        var navbar = menulink.offsetParent.offsetParent.offsetParent;
        menulink.menu = document.getElementById(menuid);

        //showProps(document.body.style, true, 'debugarea');

                if (gPageWidth == 0)
        {
            gPageWidth = document.body.clientWidth;
        }

        with(menulink.menu.style)
        {
            tmpLeft = (getPageOffsetLeft(menulink) - 8);
            if (tmpLeft + menulink.menu.offsetWidth > gPageWidth)
            {
                tmpLeft = gPageWidth - menulink.menu.offsetWidth - 3;
            }
            left = tmpLeft + "px";
            top = (getPageOffsetTop(navbar) + navbar.offsetHeight - 3) + "px";
        }
        menuInit(menulink.menu);
    }

    if (menu2Hide && menu2Hide != menulink.menu)
    {
        hideMenu(menu2Hide);
    }

            clearHideTimeout();

    menulink.menu.style.visibility = "visible";
};

function menuMouseout(menuid)
{
    if (!menu2Hide)
    {
        menu2Hide = document.getElementById(menuid);
    }
    hideTimeout = window.setTimeout("hideMenu(menu2Hide)", 100);
}

function menuItemMouseover(menuid, e)
{
    var menulink, menu, tmpLeft, menuLinkLeft;

    clearHideTimeout();

    if (window.event)
    {
        window.event.cancelBubble = true;
        if (!(menulink = window.event.srcElement.menulink))
        {
            menulink = window.event.srcElement.menulink = getContainerWith(window.event.srcElement, "A", "menuItem");
        }
    }
    else
    {
        e.stopPropagation();
        menulink = e.currentTarget;
    }

    menulink.className += " menuItemHighlight";

    if (!menulink.menu)
    {
        menu = menulink.parentMenu = getContainerWith(menulink, "DIV", "menu");
        menulink.menu = document.getElementById(menuid);
        with(menulink.menu.style)
        {
            menuLinkLeft = getPageOffsetLeft(menu);
            tmpLeft = menuLinkLeft + menu.offsetWidth;
            if (tmpLeft + menulink.menu.offsetWidth > gPageWidth)
            {
                tmpLeft = menuLinkLeft - menulink.menu.offsetWidth;
            }
            left = tmpLeft + "px";
            top = getPageOffsetTop(menulink) + "px";
        }
        menuInit(menulink.menu);
    }
    else
    {
        menu = menulink.parentMenu;
    }

    if (menu.activeItem && menu.activeItem.menu != menulink.menu)
    {
        closeSubMenu(menu);
    }

        
    menu.activeItem = menulink;
    menulink.menu.style.visibility = "visible";
}

function getPageOffsetLeft(el)
{
    var x = el.offsetLeft;
    if (el.offsetParent) x += getPageOffsetLeft(el.offsetParent);
    return x;
}

function getPageOffsetTop(el)
{
    var y = el.offsetTop;
    if (el.offsetParent) y += getPageOffsetTop(el.offsetParent);
    return y;
}

function getContainerWith(node, tagName, className)
{
        while (node != null)
    {
        if (node.tagName != null && node.tagName == tagName &&
                hasClassName(node, className))
            return node;
        node = node.parentNode;
    }
    return node;
}

function hasClassName(el, name)
{
    var i, list;
    list = el.className.split(" ");
    for (i = 0; i < list.length; i++)
        if (list[i] == name)
            return true;
    return false;
}

function menuInit(menu)
{
    var itemList, spanList;
    var textEl, arrowEl;
    var itemWidth;
    var w, dw;
    var i, j;

    if (!menu) return;
    if (menu.isInitialized) return;

        menu.style.lineHeight = "2.5ex";
        spanList = menu.getElementsByTagName("SPAN");
        for (i = 0; i < spanList.length; i++)
        {
            if (navigator.appName == 'Microsoft Internet Explorer' && hasClassName(spanList[i], "menuItemArrow"))
            {
                spanList[i].style.fontFamily = "Webdings";
                spanList[i].firstChild.nodeValue = "4";
            }
        }
    
    // Find the width of a menu item.
    itemList = menu.getElementsByTagName("A");
    if (itemList.length > 0)
        itemWidth = itemList[0].offsetWidth;
    else
        return;

    // For items with arrows, add padding to item text to make the
    // arrows flush right.
    for (i = 0; i < itemList.length; i++)
    {
        spanList = itemList[i].getElementsByTagName("SPAN");
        textEl    = null;
        arrowEl = null;
        for (j = 0; j < spanList.length; j++)
        {
            if (hasClassName(spanList[j], "menuItemText"))
                textEl = spanList[j];
            if (hasClassName(spanList[j], "menuItemArrow"))
                arrowEl = spanList[j];
        }
        if (textEl != null && arrowEl != null)
            textEl.style.paddingRight = (itemWidth
                - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
    }

    		menu.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=90);";
			menu.style.opacity = 0.9;
            menu.isInitialized = true;
}

function clearHideTimeout()
{
    window.clearTimeout(hideTimeout);
}

function hideMenu(menu)
{
    if (menu)
    {
        closeSubMenu(menu);
        menu.style.visibility = "hidden";
        if (menu2Hide == menu)
		{
            menu2Hide = null;
		}
    }
}

function closeSubMenu(menu)
{
    if (menu.activeItem)
    {
        hideMenu(menu.activeItem.menu);
        removeClassName(menu.activeItem, "menuItemHighlight");
        menu.activeItem = null;
    }
}

function removeClassName(el, name)
{
    var i, curList, newClass;
    if (el.className == null)
        return;
    newClass = "";
    curList = el.className.split(" ");
    for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
        newClass += curList[i] + " ";
    el.className = newClass;
}

if (document.getElementById)
{
    popUp = menuLinkMouseover;
    popDown = menuMouseout;
}
