var toggleMenu = {
    init: function(sContainerClass, sHiddenClass) {
        if (!document.getElementById || !document.createTextNode) { return; } // Check for DOM support
        var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);
        var arrSubMenus, oSubMenu, oLink;
        var openMenu;
        for (var i = 0; i < arrMenus.length; i++) {
            arrSubMenus = arrMenus[i].getElementsByTagName('ul');
            for (var j = 0; j < arrSubMenus.length; j++) {
                oSubMenu = arrSubMenus[j];
                oLink = oSubMenu.parentNode.getElementsByTagName('a')[0];
                oLink.onclick = function() { toggleMenu.toggle(this.parentNode.getElementsByTagName('ul')[0], sHiddenClass); return false; }
                if (this.getElementsByClassName(oSubMenu, 'a', 'Selected').length > 0 || oLink.className == 'Selected') {
                    openMenu = oSubMenu;
                }
                this.toggle(oSubMenu, sHiddenClass);
            }
            this.toggle(arrSubMenus[arrSubMenus.length - 1], sHiddenClass);
            if (openMenu) {
                this.toggle(openMenu, sHiddenClass);
            }
        }
    },
    toggle: function(el, sHiddenClass) {
        var oRegExp = new RegExp("(^|\\s)" + sHiddenClass + "(\\s|$)");
        el.className = (oRegExp.test(el.className)) ? el.className.replace(oRegExp, '') : el.className + ' ' + sHiddenClass; // Add or remove the class name that hides the element
        /* close other menus */
        var arrSubMenus = el.parentNode.parentNode.getElementsByTagName('ul');
        for (var i = 0; i < arrSubMenus.length; i++) {
            if (arrSubMenus[i] != el && !oRegExp.test(arrSubMenus[i].className)) { arrSubMenus[i].className = arrSubMenus[i].className + ' ' + sHiddenClass; };
        };
    },
    /* addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html */
    addEvent: function(obj, type, fn) {
        if (obj.addEventListener)
            obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) {
            obj["e" + type + fn] = fn;
            obj[type + fn] = function() { obj["e" + type + fn](window.event); }
            obj.attachEvent("on" + type, obj[type + fn]);
        }
    },
    /*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
    */
    getElementsByClassName: function(oElm, strTagName, strClassName) {
        var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
        var arrReturnElements = new Array();
        strClassName = strClassName.replace(/\-/g, "\\-");
        var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
        var oElement;
        for (var i = 0; i < arrElements.length; i++) {
            oElement = arrElements[i];
            if (oRegExp.test(oElement.className)) {
                arrReturnElements.push(oElement);
            }
        }
        return (arrReturnElements)
    }
};
toggleMenu.addEvent(window, 'load', function(){toggleMenu.init('ProductMenuTopLevel','Hidden');});
