// Function to create arrays.

function makeArray(len) {
	for (var i = 0; i < len; i++) this[i] = null;
		this.length = len;
}

// The question object constructor function.

function makeQuestion(question, correctAnswer) {
	var args = makeQuestion.arguments;
	this.question = question;
	this.correctAnswer = correctAnswer;
	this.userAnswer = null;
	this.isCorrect = isCorrect;
	this.showForm = showForm;
	this.userChoices = new makeArray(args.length - 2);
    for (var i = 0; i < args.length - 2; i++) { 
    	this.userChoices[i] = args[i + 2];
    }
}

// Method to determine if question is answered correctly.

function isCorrect() {
  if (this.correctAnswer == this.userAnswer) return true;
  else return false;
}

// Method to display contents of question object.

function showForm(n) {
	document.write('<br>' + (n + 1) + '. ' + this.question + '<blockquote><form>');
    for (var i = 0; i < this.userChoices.length; i++) {
        document.write('<input type = "radio" name = "q' + n + 
                       '" onClick = "quiz[' + n + '].userAnswer = ' + i + '">');
        document.write(this.userChoices[i] + '<br>');
    }
	document.write('</form></blockquote>');
}

// Function to correct the quiz and display score, correct answers.

function correctQuiz() {
  	var correct = 0;
  	correctPage = '<html><head><title>Corrections</title>';
  	correctPage += '<style>';
  	correctPage += 'a {text-decoration: none}';
  	correctPage += 'p {  font-family: "Comic Sans MS", Arial; font-size: 12pt}';
  	correctPage += 'h3 {  font-family: "Comic Sans MS", Arial}';
	correctPage += 'td {  font-family: "Comic Sans MS", Arial; font-size: 12pt}';
	correctPage += 'body {  font-family: "Comic Sans MS", Arial; font-size: 12pt}';
	correctPage += 'form {  font-family: "Comic Sans MS", Arial, sans-serif; font-size: 12pt}';
	correctPage += 'th {  font-family: "Comic Sans MS", Arial, sans-serif; font-size: 12pt}';
	correctPage += 'ol {  font-family: "Comic Sans MS", Arial, sans-serif; font-size: 12pt}';
	correctPage += 'li {  font-family: "Comic Sans MS", Arial, sans-serif; font-size: 12pt}';
	correctPage += 'ul {  font-family: "Comic Sans MS", Arial, sans-serif; font-size: 12pt}';
	correctPage += 'h2 {  font-family: "Comic Sans MS", Arial, sans-serif}';
	correctPage += '</style></head><body>';

    for (var i = 0; i < quiz.length; i++) {
    	if (quiz[i].isCorrect()) correct++;
    }
	var score = Math.round((correct / quiz.length) * 100);
	correctPage += 'Score: <strong>' + score + '</strong> %';
    if (correct < quiz.length) { 
    	correctPage += ifWrong;
	for (var i = 0; i < quiz.length; i++) {
		if (!quiz[i].isCorrect()) {
			correctPage += (i + 1) + '. ' +
            quiz[i].userChoices[quiz[i].correctAnswer] + '<p>';
            }
        }
    }
    else correctPage += ifAced;
	correctPage += '</body></html>';
	
	correctwin = window.open ('', '', 'height=300,width=300,scrollbars=yes');
    if (correctwin.opener == null) correctwin.opener = window;
	correctwin.location = 'javascript:opener.correctPage';

// stick this timer in to close the correct answer window after 10 seconds so it
// doesn't confound users by getting behind the main window somehow

	hint_to = window.setTimeout("unWinHint()",10000);
}

function unWinHint() {
	if (correctwin != null) if (correctwin.document != null)
		correctwin.close();
}


// Message to display if quiz is aced.

	var ifAced = "<p>Well done, ace.<p>"; 

// Message to display if any are wrong.

	var ifWrong = "<p>Here are the correct answers to the questions you got wrong:<p>";
