MediaWiki:Common.js
From Mod Wiki
(Difference between revisions)
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);