MediaWiki:Common.js/shuffle.js: Difference between revisions
Appearance
m 1 revision |
(No difference)
|
Latest revision as of 20:48, 18 November 2010
/**
* Shuffle objects around for fairness. Searches for a DOM
* branch like this:
* <div class="shuffle">
* <div class="shuffle-item">One</div>
* <div class="shuffle-item">One</div>
* ...
* </div>
* Any content that's not in a "shuffle-item" tag will end up
* at the top of the "shuffle" element.
* Maintainers: Happy-melon
*/
if( getElementsByClassName(document, "*", "shuffle").length > 0 ){ addOnloadHook( function() {
var area = getElementsByClassName(document, "*", "shuffle")[0];
var divs = getElementsByClassName( area, '*', 'shuffle-item' );
var rand = [];
for ( var i=0; i<divs.length; i++ ) {
rand[i] = Math.random();
}
var sorted = [];
//Insertion sort
for( var i=0; i<divs.length; i++ ){
var n = 0;
var x = 99;
for( var j=0; j<divs.length; j++ ){
if( rand[j] < x ){
n = j;
x = rand[j];
}
}
sorted[i] = divs[n];
rand[n] = 100;
}
for( var i=0; i<sorted.length; i++ ){
area.appendChild( sorted[i] );
}
})}