var jsHover = function(container, hoverTag)
{
    var menuTag = document.getElementById(container);
    if (menuTag == null)
        return;

    if (hoverTag == undefined)
    {
        HoverElement(menuTag);
        return;
    }

    var liTags = menuTag.getElementsByTagName(hoverTag);
    for (var i = 0, len = liTags.length; i < len; i++)
    {
        HoverElement(liTags[i]);
    }
}

var HoverElement = function(element)
{
    element.onmouseover = function() { this.className += " sfhover"; }
    element.onmouseout = function() { this.className = this.className.replace(" sfhover", "") };
}

var HoverMenuItems = function()
{
    jsHover("nav", "li");
    jsHover("quick_links", "li");
    jsHover("help", undefined);
}

var SetSubMenuWidth = function()
{
    SetSubMenuWidthImpl("nav");
    SetSubMenuWidthImpl("quick_links");
}

/// <summary>
/// Sets the width of each item in 2nd level submenu
/// </summary>
var SetSubMenuWidthImpl = function(menuTagName)
{
    var menuUlElement = document.getElementById(menuTagName);
    if (menuUlElement == null)
    {
        return;
    }

    var i = 0;
    var item = document.getElementById(menuTagName + i);
    var totalWidth = 0;

    while (item != null)
    {
        var itemContainer = item.getElementsByTagName("ul");

        SetSubMenuItemWidth(itemContainer[0]);
        i += 1;
        item = document.getElementById(menuTagName + i);
    }
}

/// <summary>
/// Sets the 2nd level drop-down menu width 
/// if the text contained in any item at this level exceeds 
/// the predefined drop-down menu width
/// </summary>
var SetSubMenuItemWidth = function(topMenuItem) {
    if (topMenuItem == undefined) {
        return;
    }

    var maxItemWidth = 0;
    var subMenuItems = topMenuItem.getElementsByTagName("li");
    for (var i = 0, len = subMenuItems.length; i < len; i++) {
        var textContainer = subMenuItems[i].getElementsByTagName("span");
        if (maxItemWidth < textContainer[0].offsetWidth) {
            maxItemWidth = textContainer[0].offsetWidth;
        }
    }

    // IE6 case shall be treated separately
    if (BrowserIdentity.IsIE &&
            (BrowserIdentity.Version >= 5 && BrowserIdentity.Version < 7)) {
        var iFrameContainer = topMenuItem.getElementsByTagName("iframe")[0];
        if (iFrameContainer == null)
            return;
            
        iFrameContainer.style.height = topMenuItem.offsetHeight - 2 + "px"; // 2 is for top/bottom borders

        // Default 2nd level submenu size for IE6
        // There is no any other way to determine it otherwise 
        // because IE6 streches the menu to enclose all content
        var desiredIE6Width = 172;

        if (desiredIE6Width >= topMenuItem.offsetWidth) {
            return;
        }

        iFrameContainer.style.width = (maxItemWidth + 20) + "px"; //20 is for left/right paddings 

        for (var i = 0, len = subMenuItems.length; i < len; i++) {
            subMenuItems[i].getElementsByTagName("a")[0].style.width = maxItemWidth + "px";
            subMenuItems[i].style.width = maxItemWidth + "px";
        }
    }
    else {
        // Left/right padding of each menu item at 2nd menu level
        var leftRightPaddings = 15;
        if (topMenuItem.offsetWidth - leftRightPaddings <= maxItemWidth) {
            topMenuItem.style.width = (maxItemWidth + leftRightPaddings) + "px";

            for (var i = 0, len = subMenuItems.length; i < len; i++) {
                subMenuItems[i].getElementsByTagName("a")[0].style.width = (maxItemWidth) + "px";
                subMenuItems[i].style.width = (maxItemWidth + leftRightPaddings) + "px";
            }
        }
    }
}

var PositionQuickLinks = function()
{
    var quickLinks = document.getElementById("quick_links");
    if (quickLinks == null)
        return;

    var rightMargin = 13;
    var help = document.getElementById("help");
    if (help != null)
    {
        rightMargin += help.offsetWidth;
    }

    var linksContainerArray = quickLinks.getElementsByTagName("ul");
    if (linksContainerArray.length > 0 && linksContainerArray[0] != null)
    {
        linksContainerArray[0].style.right = rightMargin + "px";        
    }    
}

// Set the 2nd level menu popup feature
if (BrowserIdentity.IsIE &&
            (BrowserIdentity.Version >= 5 && BrowserIdentity.Version < 7)) 
{
    window.attachEvent("onload", HoverMenuItems);
}
