var menuHoverDelayTime = 0;
var needIframeHack = false;
var timeout = undefined;
var numMenusOpen = 0;
var els = new Array();

setUpHover = function() {
    var el = undefined;
    var suppr = undefined;

    if(document.getElementById("prodnav") != undefined) {
        // find the menus and store them for later use.  Attach
        // event handlers to them.
        var tags = document.getElementsByTagName("li");
        for (var i = 0; i < tags.length; i++) {
            if(tags[i].id.indexOf("menucat") != -1) {
                els[els.length] = tags[i];
                tags[i].onmouseover = function() { showMenu(this); };
                tags[i].onmouseout = function() { hideMenu(this); };

                // Attach events to highlight the menu items themselves.
                menus = tags[i].getElementsByTagName('li');
                for (var j = 0; j < menus.length; ++j) {
                    menus[j].onmouseover = function() { highlightMenuItem(this, true); };
                    menus[j].onmouseout = function() { highlightMenuItem(this, false); };
                }

                // Create an iframe for each of the menu items, to keep
                // form elements from showing through.
                if (needIframeHack) {
                    suppr = document.createElement("iframe");
                    // JPG format so browser will cache the image.
                    suppr.setAttribute("src", "//akamaipix.crutchfield.com/null.jpg");
                    suppr.style.display = "none";
                    tags[i].insertBefore(suppr, tags[i].getElementsByTagName("ul")[0]);
                }
            }
        }
    }
}

function highlightMenuItem(obj, onOff) {
    if (onOff) {
        obj.className = "sfhover";
    }
    else {
        obj.className = "";
    }
}

function displayMenu(obj, on) {
    if (needIframeHack) {
        var iframe = obj.getElementsByTagName("iframe")[0];
        var menu = obj.getElementsByTagName("ul")[0];
        if (iframe && menu && on) {
            iframe.style.width = menu.offsetWidth;
            iframe.style.height = menu.offsetHeight;
            iframe.style.top = menu.style.top;
            iframe.style.left = menu.style.left;
            iframe.style.zIndex = menu.style.zIndex + 1;
            iframe.style.display = "block";
        }
        else {
            iframe.style.display = "none";
        }
    }
    if (on) {
        obj.className = "sfhover " + obj.className;
        ++numMenusOpen;
    }
    else if (obj.className.indexOf("sfhover") >= 0) {
        obj.className = obj.className.replace(new RegExp("sfhover ?"), "");
        --numMenusOpen;
    }
}

function closeAllMenus(currentMenu) {
    for (var i = 0; i < els.length; ++i) {
        displayMenu(els[i], false);
        if (els[i].id != currentMenu.id) {
            showOnState(els[i], false);
        }
    }
}

function showOnState(litem, on) {
    var img = litem.getElementsByTagName("img")[0];
    if (img) {
        if (on) {
            img.src = img.src.replace('_off', '_on');
        }
        else {
            img.src = img.src.replace('_on', '_off');
        }
    }
}

function showMenu(litem) {
    if (timeout != undefined) {
        clearTimeout(timeout);
        timeout = undefined;
    }
    if ((el=document.getElementById(litem.id)) != null) {
        var numMenusPrevOpen = numMenusOpen;
        closeAllMenus(el);
        showOnState(el, true);
        if (numMenusPrevOpen > 0) {
            displayMenu(el, true);
        }
        else {
            var code = 'if((el=document.getElementById("' + litem.id + '"))!=null){'
                + 'displayMenu(el, true);}';
            timeout = setTimeout(code, menuHoverDelayTime);
        }
    }
}

function hideMenu(litem) {
    if (timeout != undefined) {
        clearTimeout(timeout);
        timeout = undefined;
    }
    var code = 'if((el=document.getElementById("' + litem.id + '"))!=null)'
        + '{displayMenu(el, false);showOnState(el, false);}';
    timeout = setTimeout(code, menuHoverDelayTime);
}

if(window.attachEvent) {
    window.attachEvent(
        'onload',
        function() {
            if((so = document.getElementById("specialOffers")) != null) {
                var old = so.className;
                so.className = "sfhover " + so.className;
                so.className = old;
            }
        }
    );
}

if(window.addEventListener) { 
    window.addEventListener('load', setUpHover, false);
}
else if(document.addEventListener) { 
    document.addEventListener('load', setUpHover, false);
}
else if(window.attachEvent) { 
    needIframeHack = true;
    window.attachEvent('onload', setUpHover);
}
