function fisherYates ( myArray ) {
  var i = myArray.length;
  if ( i == 0 ) return false;
  while ( --i ) {
     var j = Math.floor( Math.random() * ( i + 1 ) );
     rSwap(myArray[i], myArray[j]);
   }
}

function rSwap (e1, e2){
	var temp = e1.innerHTML;
    var tempClass = e1.className;
	if( typeof(e1) != "undefined" && typeof(e2) != "undefined" ){
	    e1.innerHTML = e2.innerHTML;
	    e1.className = e2.className;
	    e2.innerHTML = temp;
	    e2.className = tempClass;
	}
}

function randomize(tag){
	var aList = AJS.$bytc(tag, "randomize");		
	//var aDblList = AJS.$bytc(tag, "dbl");

	//randomize main list
	fisherYates( aList );	

	//mix EP programs into the top
	var aListEP = AJS.$bytc(tag, "ep");
	var aList = AJS.$bytc(tag, "randomize");

	for(var i = 0; i < aListEP.length; i++){
		rSwap( aList[i], aListEP[i] );
		aList[i].className = "topRand";
	}

	var aList2 = AJS.$bytc(tag, "topRand");
	fisherYates( aList2 );
}