
var disableOutline = function(element) {
    var root = getRootElement(element);
    var links = root.getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        links[i].setAttribute('hideFocus', true);
    }
};

var setoutline = true;

function getRootElement(currentElement) {
    var parent = currentElement;
    do {
        parent = parent.parentNode;
    } while (parent.className != "subNavigation");
    return parent;
}

function collapse(element, subPanelID, crossLinkPanelID) {

    if (!element)
        return;
    var hrefString = element.href;
    //        if (hrefString && hrefString.substring(hrefString.length - 1, hrefString.length) != '#')
    //            return;
    if (setoutline == true) {
        disableOutline(element);
        setoutline = false;
    }

    var divEle = document.getElementById(subPanelID);
    if (!divEle)
        return;

    var liEle = element.parentNode;
    setSelected(liEle.parentNode);
    if (divEle.className == 'hide') {
        HideAbsoluteParents(element);
        divEle.className = 'show';
        element.className = 'selected';
    }
    else {
        hideSameLevelLeaf(liEle);
        divEle.className = 'hide';
        element.className = '';
        //if(divEle.previousSibling != null && divEle.previousSibling.nodeName.toUpperCase() == "A"){
        //divEle.previousSibling.className = "";
        //}
    }



    element.href = "javascript:void(0);";
}

function setSelected(levelElement) {

    var node = GetAbsoluteParent(levelElement);
    var nodeList = node.getElementsByTagName("a");
    if (nodeList || nodeList.length > 0) {
        for (var i = 0; i < nodeList.length; i++) {
            var parent = nodeList[i].parentNode;
            if (parent.nodeName.toUpperCase() == "LI"
            && parent.className == "SubCategoryItem"
            && nodeList[i].className == "selected") {

            } else {
                if (nodeList[i].nextSibling != null && nodeList[i].nextSibling.nodeName.toUpperCase() == "UL") {

                } else {
                    nodeList[i].className = '';
                }
            }
        }
    }
}

function hideSameLevelLeaf(levelElement) {
    //var liEle = levelElement;
    var liEle = document.getElementsByTagName("subNavigation");
    while (liEle) {
        var sib = liEle;
        var nodeList = sib.childNodes;
        if (!nodeList || nodeList.length == 0) {
            liEle = liEle.previousSibling;
            continue;
        }
        else {
            for (var node in nodeList) {
                if ((nodeList[node].nodeName) && nodeList[node].nodeName.toUpperCase() == "DIV") {
                    nodeList[node].className = 'hide';
                    var subPanelItems = nodeList[node].childNodes;
                    for (var subPanelItem in subPanelItems) {
                        var item = subPanelItems[subPanelItem];
                        if ((item.nodeName) && item.nodeName.toUpperCase() == "UL") {
                            var subLi = item.firstChild;
                            while ((subLi.nodeName) && subLi.nodeName.toUpperCase() != "LI")
                                subLi = subLi.nextSibling;
                            hideSameLevelLeaf(subLi);
                        }
                    }
                }
            }
            liEle = liEle.previousSibling;
        }
    }

    liEle = levelElement;
    while (liEle.nextSibling) {
        var sib = liEle.nextSibling;
        var nodeList = sib.childNodes;
        if (!nodeList || nodeList.length == 0) {
            liEle = liEle.nextSibling;
            continue;
        }
        else {
            for (var node in nodeList) {
                if ((nodeList[node].nodeName) && nodeList[node].nodeName.toUpperCase() == "DIV") {
                    nodeList[node].className = 'hide';
                }
            }
            liEle = liEle.nextSibling;
        }
    }
}

function HideAbsoluteParents(currentElement) {
    var parent = currentElement;
    do {
        parent = parent.parentNode;
    } while (parent.className != "subNavigation");
    var nodes = parent.getElementsByTagName("div");

    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].className == 'show') {
            nodes[i].className = 'hide';
        }
    }
}

function GetAbsoluteParent(currentElement) {
    var parent = currentElement;
    do {
        parent = parent.parentNode;
    } while (parent.className != "subNavigation");
    return parent;
}
