// tv_random.js
// TestVision standalone template initialisatie
// Versie 1.05

// randomiseert de toetsvragen in de preview
// 


var randomQuestions;
var questions;
var totalQuestions = 0;
var doRandomize = false;

if (doRandomize) {
   questions = parent.toets.questions;
   randomize();
}

function randomize()
{
   totalQuestions = questions.length;
   //alert('Randomize: aantal questions = ' + totalQuestions);

   randomQuestions = new Array(totalQuestions);
   var i;
   var err = false;   

   //vul de standaard volgnummering
	for (i=0; i<totalQuestions; i++) {
      randomQuestions[i] = i; 
   }

   //haal random een element uit de volgordelijst 
   //en voeg deze als volgnummer toe aan de toetsvragenlijst.
   for (i=0; i<totalQuestions; i++) {
      //bepaal a random getal tussen 0 en aantal nog niet teruggekopieerde vragen
      var rand = getRandom(totalQuestions - i - 1); 
      
      //haal het volgnummer uit de kopie lijst
      var elementNr = getQuestionNr(rand);
      
      if (elementNr < 0) {
         alert('ERROR Randomizing questions!');
         err = true;
         break;
      }
      //alert('volgnr ' + questions[i].nr + ' wordt ' + (elementNr+1) );
      questions[i].nr = elementNr+1; //volgnr is one-based
      //zet volgorde op null als indicatie dat het gebruikt is.
      randomQuestions[elementNr] = null;
   } 

   if ( err ) {
      //there was an error randomizing...
      //restore the original question sequence
      alert('Restoring original question sequence.');
   	for (i=0; i<totalQuestions; i++) {
         questions[i].nr = i;
      }
      return false;
   }

   randomQuestions = null;
   return true;
}

//bepaal het zoveelste element uit de lijst, sla null-elementen over
function getQuestionNr(nr)
{
   var count = 0;
   for (var i=0; i<totalQuestions; i++)
   {
      if (randomQuestions[i] != null ) {
         if (count == nr) {
            return i;
         }
         count++;
      }
   }
   return -1;
}

//returns a random value between 0 and maxVal
function getRandom(maxVal)
{
   return Math.round((Math.random() * (maxVal)));
}


