MediaWiki:Common.js - hpgDesigns/hpg_projects GitHub Wiki

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

* *  Description: Allows tables to be collapsed, showing only the header. See *                         http://www.mediawiki.org/wiki/Manual:Collapsible_tables. *  Maintainers: en:User:R.`` ``Koot */

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

function collapseTable( tableIndex ) {

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

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

       var Rows = Table.rows;

       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' ) ) {

                       /* only add button and increment count if there is a header row to work with */                        var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];                        if ( !HeaderRow ) {                                continue;                        }                        var Header = HeaderRow.getElementsByTagName( 'th' )[0];                        if ( !Header ) {                                continue;                        }

                       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.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css

                       ButtonLink.style.color = Header.style.color;                        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( ']' ) );

                       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 );                } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {                        var element = NavigationBoxes[i];                        while ( element = element.parentNode ) {                                if ( hasClass( element, 'outercollapse' ) ) {                                        collapseTable( i );                                        break;                                }                        }                }        }

}

addOnloadHook( createCollapseButtons );

/** Test if an element has a certain class **************************************

* * Description: Uses regular expressions and caching for better performance. * Maintainers: User:Mike`` ``DillonUser:R.`` ``KootUser:SG */

var hasClass = ( function() {

       var reCache = {};        return function( element, className ) {                return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );        };

})();

/////////////////////////////////////////////////////// // Codesnippet to make your sidebaritems expandable // // Use this code ONLY for monobook-Style. // ///////////////////////////////////////////////////////

$(document).ready(function(){

 //set the default expanded Items by their headline  var defaultExpandItems= ['Navigation', 'Orga'];  //set the basic-name for the cookies, which save the current state of expanding  var expandCookieName = "disdance_project_wiki_nav_expanded_";

 var maxHeights=[]  var expandeds=[];  var labels=[];  initNav();

});

function initNav(){

   $('#p-logo').css({'position':'relative', 'display':'block'});;    $('.generated-sidebar h5,#p-tb h5 ').each(function(i){

         var id = $(this).parent().attr('id');                     maxHeights[id]=$(this).next('div').height();          var str = $(this).html();          labels[id]=str;     

         if ($.cookie(expandCookieName+id)=='false'  ){                               expandeds[id]=false;                minimize( $(this));

        } else if ($.cookie(expandCookieName+id)=='true'  ){                expandeds[id]=true;                maximize( $(this));

        } else if (defaultExpandItems.indexOf(str)==-1){                expandeds[id]=false;                minimize( $(this));         } else {                expandeds[id]=true;                maximize( $(this));         }         $(this).css({'cursor':'pointer'});         $(this).click(toggleNav);    });

}

function minimize(target){

   var id=$(target).parent().attr('id');    //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code    $.cookie(expandCookieName+id,'false', { expires: 7});    var str = labels[id]+"  ►";    $(target).next('div').animate({'height':'0px'});    $(target).html(str);    

}

function maximize(target){

   var id=$(target).parent().attr('id');    //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code    $.cookie(expandCookieName+id,'true', { expires: 7});    var str = labels[id]+"  ▼";    var  newHeight = maxHeights[id];    $(target).next('div').animate({'height':newHeight+'px'});    $(target).html(str);    

}

function toggleNav(e){

   var id=$(e.target).parent().attr('id');    expandeds[id]=!expandeds[id];    if(expandeds[id]==true){        maximize(e.target);    }     else{        minimize(e.target);    }

}

/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////