var qp = {};

qp.toggleAnswer = function(question, answer){

    var answerBox = $(question).getNext();
    if(answerBox.get('value').trim() == '')
        answerBox.set('value', answer);
    else
        answerBox.set('value', '');
}
qp.score = 0;

qp.message;
qp.showMessage = false;

//var useranswers = new Array();
var answered = 0;

function renderQuiz() {
  for(i=0;i<questions.length;i++) {
    document.writeln('<div><p class="question" id="q__'+i+'">' + questions[i] + ' <span id="result_' + i + '"><img src="blank.gif" style="border:0" alt="" /></span></p>');
    for(j=0;j<choices[i].length;j++) {
      document.writeln('<input type="checkbox" name="answer_' + i + '" value="' + choices[i][j] + '" id="answer_' + i + '_' + j + '" class="question_' + i + ' button" /><label id="label_' + i + '_' + j + '" for="answer_' + i + '_' + j + '"> ' + choices[i][j] + '</label><br />');// onclick="submitAnswer(' + i + ', this, \'question_' + i + '\', \'label_' + i + '_' + j + '\')"
    }
    document.writeln('</div>');
  }
  document.writeln('<p><button id="q__" onclick="submitAnswers()" class="button">Check Answers</button><input type="submit" value="Reset Quiz" onclick="resetQuiz(true)" class="button" /> <input type="submit" value="Show Answers" onclick="showAllAnswers()" class="button" /></p><p style="display:none"><img src="correct.gif" style="border:0" alt="Correct!" /><img src="incorrect.gif" style="border:0" alt="Incorrect!" /></p>');
}
function resetQuiz(showConfirm) {
  if(showConfirm)
    if(!confirm("Are you sure you want to reset your answers and start from the beginning?"))
      return false;
    qp.score = 0;
  document.location = document.location;
}
function submitAnswers() {
    qp.message = 'Please check at least one answer\nin question ';
    for(var i = 0; i<questions.length; i++)
        submitAnswer(i);
    if(qp.showMessage) alert(qp.message.substr(0, qp.message.length - 16));
    qp.showMessage = false;
}
function submitAnswer(index) {
    //var index = button.id.substring(3);
  //useranswers[questionId] = obj.value;
    var question = $('q__'+index);
    var boxes = question.getAllNext('input');
    var useranswers = [];
    for(var i = 0; i<boxes.length; i++){
        if(boxes[i].checked) useranswers.push(parseInt(boxes[i].id.substring(9)));
    }
    if(useranswers.length==1)useranswers = useranswers[0];
    else if (useranswers.length == 0){
        qp.showMessage = true;
        qp.message += ((index+1) + '\nand in question ');
        return;
    }
    else useranswers.sort();
    highLightAnswer(index);
  disableQuestion('question_'+index);
  showResult(index, useranswers);
  answered++;
}

function showAllAnswers(){
    for(var i = 0; i<questions.length; i++){
        highLightAnswer(i);
        disableQuestion('question_'+i);
    }
}

function highLightAnswer(questionId){
    if('number' == typeof answers[questionId]){
        $('label_'+questionId+'_'+answers[questionId]).setStyles({'color':'green','font-weight':'bold'});
    }
    else{
        for(var j = 0; j<answers[questionId].length; j++){
            $('label_'+questionId+'_'+answers[questionId][j]).setStyles({'color':'green','font-weight':'bold'});
        }
    }

}
function showResult(questionId, useranswers) {
  if(compareAnswers(useranswers, answers[questionId])) {
    qp.score++;
    document.getElementById('result_' + questionId).innerHTML = '<img src="correct.gif" style="border:0" alt="Correct!" />';
  } else {
    document.getElementById('result_' + questionId).innerHTML = '<img src="incorrect.gif" style="border:0" alt="Incorrect!" />';
  }
}

function compareAnswers(answers, corrections){
    if(typeof answers != typeof corrections) return false;
    else{
        if('number' == typeof answers){
            return (answers == corrections);
        }
        else{//arrays
            if(answers.length != corrections.length) return false;
            else{
                for(var i = 0; i<answers.length; i++){
                    if(answers[i] != corrections[i]) return false;
                }
                return true;
            }
        }

    }
}
function showScore() {
  if(answered != answers.length) {
    alert("You have not answered all of the questions yet!");
    return false;
  }
  pc = Math.round((qp.score / answers.length) * 100);
  alertMsg = "You scored " + qp.score + " out of " + answers.length + "\n\n";
  alertMsg += "You correctly answered " + pc + "% of the questions! \n\n";
  if(pc == 100)
    alertMsg += response[0];
  else if(pc >= 90)
    alertMsg += response[1];
  else if(pc >= 70)
    alertMsg += response[2];
  else if(pc > 50)
    alertMsg += response[3];
  else if(pc >= 40)
    alertMsg += response[4];
  else if(pc >= 20)
    alertMsg += response[5];
  else if(pc >= 10)
    alertMsg += response[6];
  else
    alertMsg += response[7];
  if(pc < 100) {
    if(confirm(alertMsg))
      resetQuiz(false);
    else
      return false;
  } else {
    alert(alertMsg);
  }
}
function disableQuestion(classId) {
  var alltags=document.all? document.all : document.getElementsByTagName("*")
  for (i=0; i<alltags.length; i++) {
    if (alltags[i].className == classId) {
      alltags[i].disabled = true;
    }
  }
}


function doReset() {
    var fields = $$('#inf ol li input');
	for(var i = 0; i < fields.length; i++) {
        fields[i].set('value', '');
        fields[i].setStyle('background-color', '#FFFFFF');
    }
    return false;
}


function checkExercise(formName) {
    try{
    var vocaform = $('inf');
	var anss = $('vocab_answers').value.toLowerCase().split(';');
	var totalQuestions = anss.length-1;
	var correctAnswers = 0;
    var fields = $$('#inf ol li input');
	for(var i = 0; i < fields.length; i++) {
        if(fields[i].value){
            var answer = fields[i].value.toLowerCase();
            if(answer == anss[i]) {
                correctAnswers ++;
                fields[i].setStyle('background-color', '#FFFFFF');
            }
            else
                fields[i].setStyle('background-color', '#FF8080');
        }
        else
            fields[i].setStyle('background-color', '#FF8080');
	}
    }catch(ex){
        alert(ex.message);
        return false;
    }
	if(totalQuestions > 0) {
		alert("You got " + correctAnswers + " right out of " + totalQuestions + "!");
	}
	return false;
}	
