Jump to content

User:Sanbeg/vfd NavBar.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
==BEGIN Dynamic Navigation Bars (experimantal)==
Modified from the NavBars in [[Mediawiki:Monobook.js]] to work with vfd divs.  This will hide closed discussions in AFD/AFC pages, but 
allow you to toggle them, and will show them by default in the AFD subpages.

 **/
 
 // set up the words in your language
 //var NavigationBarHide = '[ Hide ]';
 //var NavigationBarShow = '[ Show ]';
 
 // set up max count of Navigation Bars on page,
 // if there are more, all will be hidden
 // NavigationBarShowDefault = 0; // all bars will be hidden
 // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
 var vfd_NavigationBarShowDefault = 1;
 
 /**
===toggle===
 **/
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function vfd_toggleNavigationBar(indexNavigationBar)
 {
    var NavToggle = document.getElementById("vfd_NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("vfd_NavFrame" + indexNavigationBar);
    if (!NavFrame || !NavToggle) {
        return false;
    }

    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (NavChild.style && (NavChild.className != 'vfd_NavToggle')) {
           // } else {
               NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;

    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {

            if (NavChild.style) {
                NavChild.style.display = 'block';
            }
        }
    NavToggle.firstChild.data = NavigationBarHide;
    }
 }

 /**

===create===
 **/
 
 // adds show/hide-button to navigation bars
 function vfd_createNavigationBarToggleButton()
 {
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    for(
            var i=0; 
            NavFrame = document.getElementsByTagName("div")[i]; 
            i++
        ) {
        // if found a navigation bar
        if (NavFrame.className == "boilerplate metadata vfd") {
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'vfd_NavToggle';
            NavToggle.setAttribute('id', 'vfd_NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:vfd_toggleNavigationBar(' + indexNavigationBar + ');');
            
            var NavToggleText = document.createTextNode(NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
            // attach the toggle link

            NavFrame.appendChild(NavToggle);
            NavFrame.setAttribute('id', 'vfd_NavFrame' + indexNavigationBar);
        }
    }
    // if more Navigation Bars found than Default: hide all
    if (vfd_NavigationBarShowDefault < indexNavigationBar) {
        for(
                var i=1; 
                i<=indexNavigationBar; 
                i++
        ) {
            vfd_toggleNavigationBar(i);
        }
    }
 
 }
 
 addOnloadHook(vfd_createNavigationBarToggleButton);
 
 // END Dynamic Navigation Bars
 // ===============================================