<!--
/***********************************************
*			    	Adrian Jones - woodsgood.ca
*           ============================
*   Routines used in the "quiz.htm" web page
************************************************/

var ie=false;			// navigator version...
if (document.all) { ie=true; }
var qNum=1; score=0; startTime=0;  // starting variables
var answer_array=new Array(qTot);  // answer array
var timerID=0; tStart=null; timeString=null;  // timer variables
var a_nums=0; // number of attempted questions

function makeStart() {makeQuestion();StartTimer();}

// write the question, responses and navigation to the "questionHTML" container
function makeQuestion() {
	answer_array[qNum]=0;
	var msg='<div class="qText">'+qNum+'.&nbsp;&nbsp;'+q[qNum][0]+'</div><blockquote>';
	var response_array=q[qNum][1].split(delim); // split, using delimiter, into each response text
	for (i=0; i<response_array.length; i++) { msg += '<input type="radio" class="qRadio" name="Q'+qNum+'" value="'+(i+1)+'" onChange="makeSelection()">&nbsp;<span class="qResponse">'+response_array[i]+'</span><br>';} // button and text
	msg += '</blockquote><br><div class="menuBar">';
	if (qNum > 1) {msg += '<a class="menuButton" href="javascript:prev()">Previous</a>&nbsp;&nbsp;';}
  if (qNum < qTot) {msg += '<a class="menuButton" href="javascript:next()">Next</a>&nbsp;&nbsp;';}
	msg += '<a class="menuButton" href="javascript:makeCalculation()">Finish</a></div><br>';
	getIObj("questionHTML").innerHTML=msg; // write qNum, responses and navigation buttons
	getIObj("qNumber").innerHTML='Q'+qNum+'/'+qTot; // qNum number in corner
 	getIObj("instructions").style.visibility=(qNum>1)? "hidden":"visible"; // make instructions visible for Q1 only
}

// determine selection made and store answer
function makeSelection() {
  var buttonName="Q"+qNum+"";	temp=getNObj(buttonName);	answer_array[qNum]=0;
	for (i=0; i<temp.length; i++) {if(temp[i].checked) { answer_array[qNum]=temp[i].value }}
}

function StartTimer() {tStart=new Date();getIObj("timeTaken").innerHTML="00:00";timerID=setTimeout("UpdateTimer()",1000);}

function UpdateTimer() {
   if(timerID) {clearTimeout(timerID); clockID=0; }
   if(!tStart) {tStart=new Date();}
   var tDate=new Date();
   var tDiff=tDate.getTime()-tStart.getTime();
   tDate.setTime(tDiff);
	 timeString=((tDate.getMinutes()<10)? "0":"")+tDate.getMinutes()+":"+((tDate.getSeconds()<10)? "0":"")+tDate.getSeconds();
	 getIObj("timeTaken").innerHTML=timeString; // update timer
   timerID=setTimeout("UpdateTimer()", 1000);
}

function StopTimer() {if(timerID) {clearTimeout(timerID);timerID=0;} tStart=null;}

// "NEXT" button pushed
function next() {
	if (qNum<qTot) {qNum=(qNum == qTot)? qNum : qNum+1; makeQuestion();}
	else {makeCalculation();}
}

// "PREVIOUS" button pushed
function prev() {qNum=(qNum == 1)? 1 : qNum-1; makeQuestion();}
function startOver() {qNum=1;score=0;makeQuestion();StartTimer();}

// "FINISH" button pushed. Calculate scores and display
function makeCalculation() {
	a_nums=qNum; score=0; StopTimer();
  for (i=1; i<a_nums+1; i++) {if (answer_array[i]==q[i][2]) {score=score+1;}}
	var msg='<div class="hResult">RESULTS</div><div class="qResult">'+parseInt(score*100/a_nums)+'%<br>'+score+' correct out of '+a_nums+'<br>Time taken: '+timeString+'</div><br><div class="menuBar">';
 	msg += '<a class="menuButton" href="javascript:showResults()">Show Results</a>&nbsp;&nbsp;';
 	msg += '<a class="menuButton" href="javascript:startOver()">Start Again</a></div><br>';
 	getIObj("questionHTML").innerHTML=msg;
 	getIObj("qNumber").innerHTML="Quiz Results";
 	getIObj("instructions").style.visibility="hidden"
}

// "SHOW RESULTS" button pushed. Calculate scores and display each question with correct/wrong image and response (NOT answer!)
function showResults() {
	var msg='<div class="hResult">RESULTS</div><div class="qResult">'+parseInt(score*100/a_nums)+'%<br>'+score+' correct out of '+a_nums+'<br>Time taken: '+timeString+'</div><br><div class="qWtext"><br>YOUR ANSWERS</div><blockquote>';
	for (i=0; i<a_nums; i++) {
		var response_array=q[i+1][1].split(delim); // split, using delimiter, into each response text
		msg += (answer_array[i+1]==q[i+1][2])? '<img src="gifs/box-tick.gif" alt="right">':'<img src="gifs/box-cross.gif" alt="wrong">';
    msg += '&nbsp;&nbsp;<span class="qText">'+(i+1)+'.&nbsp;&nbsp;'+q[i+1][0]+'</span>&nbsp;&nbsp;';
		msg += '<span class="cText">'+((answer_array[i+1]==0)? ' question skipped ':'&nbsp;'+response_array[answer_array[i+1]-1]+'&nbsp;')+'</span><br>';}
	msg += '</blockquote><br><br><div class="menuBar"><a class="menuButton" href="javascript:startOver()">Start Again</a></div><br>';
 	getIObj("questionHTML").innerHTML=msg;
 	getIObj("qNumber").innerHTML="Quiz Results &amp; Responses";
}

function getIObj(id) {return (ie)? document.all[id] : document.getElementById(id);}
function getNObj(name) {return (ie)? document.all[name] : document.getElementsByName(name);}
//-->
