Difference between revisions of "User:Ceorana/monobook.js"

From NSwiki, the NationStates encyclopedia.
Jump to: navigation, search
m (how about now?)
m (does NSw support js at all?)
 
Line 1: Line 1:
  /** Dynamic Navigation Bars (experimental) *************************************
+
  alert("Hello World!");
*
+
*  Description: See Wikipedia:NavFrame.
+
*  Maintainers: UNMAINTAINED
+
*/
+
 
+
// 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 NavigationBarShowDefault = 3;
+
+
+
// shows and hides content and picture (if available) of navigation bars
+
// Parameters:
+
//    indexNavigationBar: the index of navigation bar to be toggled
+
function toggleNavigationBar(indexNavigationBar)
+
{
+
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
    var NavFrame = document.getElementById("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.className == 'NavPic') {
+
                NavChild.style.display = 'none';
+
            }
+
            if (NavChild.className == 'NavContent') {
+
                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.className == 'NavPic') {
+
                NavChild.style.display = 'block';
+
            }
+
            if (NavChild.className == 'NavContent') {
+
                NavChild.style.display = 'block';
+
            }
+
        }
+
    NavToggle.firstChild.data = NavigationBarHide;
+
    }
+
}
+
+
// adds show/hide-button to navigation bars
+
function 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 == "NavFrame") {
+
+
            indexNavigationBar++;
+
            var NavToggle = document.createElement("a");
+
            NavToggle.className = 'NavToggle';
+
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
           
+
            var NavToggleText = document.createTextNode(NavigationBarHide);
+
            NavToggle.appendChild(NavToggleText);
+
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
+
            for(
+
              var j=0;
+
              j < NavFrame.childNodes.length;
+
              j++
+
            ) {
+
              if (NavFrame.childNodes[j].className == "NavHead") {
+
                NavFrame.childNodes[j].appendChild(NavToggle);
+
              }
+
            }
+
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
+
        }
+
    }
+
    // if more Navigation Bars found than Default: hide all
+
    if (NavigationBarShowDefault < indexNavigationBar) {
+
        for(
+
                var i=1;
+
                i<=indexNavigationBar;
+
                i++
+
        ) {
+
            toggleNavigationBar(i);
+
        }
+
    }
+
}
+
addOnloadHook( createNavigationBarToggleButton );
+

Latest revision as of 20:21, 17 December 2006

 alert("Hello World!");