/*
    This file implements multilevel menu event handlers to dynamically display menus, as well as
    initialization code to attach even thandlers to appropriate menu elements.
*/

function wlp_bighorn_initMenus()
{
    var menus = document.getElementsByTagName('table');
    for (var i = 0; i < menus.length; i++)
    {
        if (menus[i].className.search(/wlp-bighorn-menu/) != -1)
        {
            // insert shims
            var lists = menus[i].getElementsByTagName('ul');
            for (j = 0; j < lists.length; j++)
            {
                var shim = document.createElement('iframe');
                shim.setAttribute("src", "about:blank");
                shim.setAttribute("style", "border: 0; height: 0; width: 0;");
                lists[j].insertBefore(shim, lists[j].firstChild);
            }

            // attach hover handlers
            var items = menus[i].getElementsByTagName('li');
            for (j = 0; j < items.length; j++)
            {
                wlp_bighorn_attachEventHandler(items[j], "mouseenter", wlp_bighorn_listHoverOn);
                wlp_bighorn_attachEventHandler(items[j], "mouseleave", wlp_bighorn_listHoverOff);
            }
        }
    }
}

function wlp_bighorn_listHoverOn(e)
{
    var event = (e) ? e : window.event;
    var src = (event.srcElement) ? event.srcElement : ((event.currentTarget) ? event.currentTarget : this);

    wlp_bighorn_addClassName(src, 'hover');

    for (var i = 0; src.childNodes[i]; i++)
    {
        var child = src.childNodes[i];
        if (child.tagName == 'A')
        {
            wlp_bighorn_addClassName(child, 'hover');
        }
        else if (child.tagName == 'UL')
        {
            wlp_bighorn_addClassName(child, 'show');

            for (var j = 0; child.childNodes[j]; j++)
            {
                var grandchild = child.childNodes[j];
                if (grandchild.tagName == 'IFRAME')
                {
                    grandchild.style.width = child.offsetWidth;
                    grandchild.style.height = child.offsetHeight;
                }
            }
        }
    }
}

function wlp_bighorn_listHoverOff(e)
{
    var event = (e) ? e : window.event;
    var src = (event.srcElement) ? event.srcElement : ((event.currentTarget) ? event.currentTarget : this);

    wlp_bighorn_removeClassName(src, 'hover');

    for (var i = 0; src.childNodes[i]; i++)
    {
        var child = src.childNodes[i];
        if (child.tagName == 'A')
        {
            wlp_bighorn_removeClassName(child, 'hover');
        }
        else if (child.tagName == 'UL')
        {
            wlp_bighorn_removeClassName(child, 'show');
        }
    }
}

