MediaWiki:Common.js

From Mod Wiki

(Difference between revisions)
Jump to: navigation, search

Don Reba (Talk | contribs)
(New page: - Any JavaScript here will be loaded for all users on every page load. - /** Collapsible tables ********************************************************* * * Description: Allows ta...)
Next diff →

Revision as of 20:59, 17 July 2008

/* Any JavaScript here will be loaded for all users on every page load. */

/** Collapsible tables *********************************************************

 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               Wikipedia:NavFrame.
 *  Maintainer on Wikipedia: User:R. Koot
 */

var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show";

function hasClass( element, className ) {

 var Classes = element.className.split( " " );
 for ( var i = 0; i < Classes.length; i++ ) {
   if ( Classes[i] == className ) {
     return ( true );
   }
 }
 return ( false );

}

function collapseTable( tableIndex ) {

    var Button = document.getElementById( "collapseButton" + tableIndex );
    var Table = document.getElementById( "collapsibleTable" + tableIndex );

    if ( !Table || !Button ) {
        return false;
    }

    var Rows = Table.getElementsByTagName( "tr" ); 

    if ( Button.firstChild.data == collapseCaption ) {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = "none";
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }

}

function createCollapseButtons() {

    var tableIndex = 0;
    var NavigationBoxes = new Object();
    var Tables = document.getElementsByTagName( "table" );

    for ( var i = 0; i < Tables.length; i++ ) {
        if ( hasClass( Tables[i], "collapsible" ) ) {
            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

            var Button     = document.createElement( "span" );
            var ButtonLink = document.createElement( "a" );
            var ButtonText = document.createTextNode( collapseCaption );

            Button.style.styleFloat = "right";
            Button.style.cssFloat = "right";
            Button.style.fontWeight = "normal";
            Button.style.textAlign = "right";
            Button.style.width = "6em";

            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( "[" ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( "]" ) );

            var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
            /* only add button and increment count if there is a header row to work with */
            if (Header) {
                Header.insertBefore( Button, Header.childNodes[0] );
                tableIndex++;
            }
        }
    }

    for ( var i = 0;  i < tableIndex; i++ ) {
        if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
            collapseTable( i );
        }
    }

}

addOnloadHook( createCollapseButtons );

//Shuffle for election candidates function dshuf(){

               var shufsets=new Object()
               var rx=new RegExp('dshuf'+'\\s+(dshufset\\d+)', 'i') 
               var divs=document.getElementsByTagName("div")
               for (var i=0; i<divs.length; i++){
                       if (rx.test(divs[i].className)){
                               if (typeof shufsets[RegExp.$1]=="undefined"){ 
                                       shufsets[RegExp.$1]=new Object() 
                                       shufsets[RegExp.$1].inner=[] 
                                       shufsets[RegExp.$1].member=[]
                               }
                                       shufsets[RegExp.$1].inner.push(divs[i].innerHTML) 
                                       shufsets[RegExp.$1].member.push(divs[i]) 
                       }
               }
               for (shufset in shufsets){
                       shufsets[shufset].inner.sort(function() {return 0.5 - Math.random()})
                       for (var i=0; i<shufsets[shufset].member.length; i++){
                               shufsets[shufset].member[i].innerHTML=shufsets[shufset].inner[i]
                               shufsets[shufset].member[i].style.display="block"
                       }
               }

}

addOnloadHook(dshuf);

Personal tools