Jump to content

User:Sanbeg/vfd NavBar.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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
 // ===============================================