function navi_toggleVisibility_top(objectId) {
    var sRootName = 'nav_root_top';
    var oParamObject = navi_getObject(objectId);

    var oRoot = navi_getObject(sRootName);

    navi_closeAllNavNodes(oRoot);

    navi_expandChilds(oParamObject);

    navi_expandPathToRoot(oParamObject, sRootName);
}

function navi_expandChilds(oParent) {


    var childs = oParent.childNodes;
    for (var i=0; i<=childs.length-1; i++) {

        navi_setNavULVisibility(childs[i], true);
    }
}

function navi_expandPathToRoot(oParamObject, sRootName) {
    var obj = oParamObject;
    navi_setNavULVisibility(obj, true);
    navi_setNavSubNodeHighlight(obj, true);

    while(obj.parentNode){
        obj = obj.parentNode;
        if ( obj != null ) {
            if (obj.nodeName=='UL') {
                navi_setNavULVisibility(obj, true, true);
            }
            else if (obj.nodeName=='LI') {
                navi_setNavSubNodeHighlight(obj, true);
            }
            if (sRootName == obj.id) {
                break;
            }
        }
    }
}

function navi_setNavULVisibility(oNode, bVisible, bTest) {

    if ( oNode != null &&  oNode.nodeName=='UL' ) {
        if (true == bVisible) {
            oNode.style.display = 'list-item';

        }
        else {
            oNode.style.display = 'none';
        }
    }
}

function navi_closeAllNavNodes(oRootObject) {
    var oChilds = oRootObject.childNodes;
    var iLength = oChilds.length;

    for (var i=0; i<=iLength-1; i++) {
        var oChildNode = oChilds.item(i);
        navi_closeAllNavNodes(oChildNode);
        navi_setNavULVisibility(oChildNode, false);
        if (oChildNode.nodeName == 'LI') {
            navi_setNavSubNodeHighlight(oChildNode, false);
        }
    }
    navi_setNavULVisibility(oRootObject, false);
}

function navi_setNavSubNodeHighlight(oNode, bHighlight) {
    var lChilds = oNode.childNodes;
    var iLength = lChilds.length;
    for (var i=0; i<=iLength-1; i++) {
        var oChildNode = lChilds.item(i);
        var sNodeName = oChildNode.nodeName;
        //alert(sNodeName)
        if (sNodeName=='H1' || sNodeName=='H2' || sNodeName=='H3') {
            //alert('Highlight')
            navi_setNavHighlight(oChildNode, bHighlight);
        }
    }
}

function navi_setNavHighlight(oNode, bHighlight) {
    if ( oNode != null ) {
        if (true == bHighlight) {
            oNode.className  = 'active';
        }
        else {
            oNode.className = '';
        }
    }
}

function navi_getObject(objectId) {
    if (document.getElementById) {
        return document.getElementById(objectId);
    }
    else {
        if (document.all) return document.all(ojectId);
        if (document.layers) return document.layers(objectId);
    }
}
