var done = false;
var timestaken = 0;
var sumofscores = 0;
var gotCorrect = 0;
var answerhash = null;

function Question(id, correct, note, answers)
{
	this.id = id;
	this.whichcorrect = correct;
	this.answers = answers;
	this.whichguessed = -1;
	this.correct = false;
	this.note = note;
}

function Answer(id, text)
{
	this.id = id;
	this.text = text;
	this.statcorrect = -1;
}

function load()
{
	displayClock();
	answerhash = new Array();
	document.getElementById("btnGrade").disabled = false;
	for (var i=0; i<questions.length; i++)
	{
		var q = questions[i].id;
		for (var j=0; j<questions[i].answers.length; j++)
		{
			var a = questions[i].answers[j];;
			var r = document.getElementById("q" + q + "_r" + a.id);
			r.checked = false;
			answerhash["a" + a.id] = a;
			r.disabled = false;
		}
	}
	setTimeout( decrementClock, 1000 );
}

function decrementClock()
{
	if ( done ) 
		return;

	seconds--;

	displayClock();
	if ( seconds == 0 )
	{
		alert( "Time Up!" );
		finish();
	}
	else	
		setTimeout( decrementClock, 1000 );
}

function displayClock()
{
	var s = seconds % 60;
	var m = ( seconds - s ) / 60;
	document.getElementById("clock").innerHTML = m + ":" + padZero(s);
}

function padZero(num)
{
	if ( num == 0 )
		return "00";
	else if ( num < 10 )
		return "0" + num;
	else
		return "" + num;
}

function finish()
{
	document.getElementById("btnGrade").disabled = true;
	document.getElementById("loading").style.display = "block";
	document.getElementById("mcmorequizzes").style.display = "block";
	done = true;
	grade();
	getResults();
}

function grade()
{
	gotCorrect = 0;
	for (var i=0; i<questions.length; i++)
	{
		var q = questions[i];

		for (var j=0; j<q.answers.length; j++)
		{
			var a = q.answers[j];
			var r = document.getElementById("q" + q.id + "_r" + a.id );
			if ( r.checked )
			{
				q.whichguessed = a.id;
				if ( a.id == q.whichcorrect )
				{
					q.correct = true;
					gotCorrect++;
				}
			}
		}
	}
}

function getResults()
{
	var p = new Array();
	p.push( "?quiz=" + quizId );
	p.push( "&timeleft=" + seconds );
	
	for (var i=0; i<questions.length; i++)
	{
		var q = questions[i].id;
		for (var j=0; j<questions[i].answers.length; j++)
		{
			var a = questions[i].answers[j].id;
			var r = document.getElementById("q" + q + "_r" + a);
			if ( r.checked )
			{
				p.push("&a" + a + "=1");
			}
		}
	}
	
	var params = p.join('');


	
	var http = createRequestObject();

	http.open("get", "/quizzes/includes/set-mcresults.php" + params, true);

	http.onreadystatechange = function()
	{
		if ( http.readyState == 4 )
			response = http.responseText;
		else
			return;

		var lines = response.split('\n');
		var mode = 0;

		for (var i=0; i<lines.length-1; i++)
		{
			if ( lines[i] == "TIMES TAKEN" )
			{
				mode = 1;
				continue;
			}
			if ( lines[i] == "SUM" )
			{
				mode = 2;
				continue;
			}
			if ( lines[i] == "CORRECT" )
			{
				mode = 3;
				continue;
			}

			if ( mode == 1 )
			{
				timestaken = parseInt(lines[i]);
			}
			if ( mode == 2 )
			{
				sumofscores = parseInt(lines[i]);
			}
			if ( mode == 3 )
			{
				var tabs = lines[i].split('\t');
				var id = parseInt(tabs[0]);

				var a = answerhash["a" + id];
				a.statcorrect = parseInt(tabs[1]);
			}
		}
		
		window.scroll(0,0);
		document.getElementById("loading").style.display = "none";
		document.getElementById("postQuizA").innerHTML = "<div class=\"a\">You got <span class=\"x\">" + gotCorrect + "</span> correct</div><div class=\"b\">The average score is <span class=\"y\">" + Math.round(sumofscores/timestaken) + "</span>, but some people take it many times.</div>";
		document.getElementById("postQuiz").style.display = "block";
	}
	http.send(null);

}

function signAndShow()
{
	mlJoin(2);
	justShow();
}

function justShow()
{
	document.getElementById("postQuiz").style.display = "none";
	markQuiz();
}

function markQuiz()
{
	for (var i=0; i<questions.length; i++)
	{
		var q = questions[i];
		var mark = document.getElementById("mark" + q.id);
		var result = document.getElementById("result" + q.id);
		var stat = document.getElementById("statgroup" + q.id);

		document.getElementById("agroup" + q.id).style.display = "none";


		if ( q.correct )
		{
			mark.innerHTML = "<img src=\"images/check.png\">";
			result.innerHTML = "You guessed <span class=\"big\">" + answerhash["a" + q.whichcorrect].text + "</span>. Correct!";
			result.style.color = "#516627";
		}
		else
		{
			mark.innerHTML = "<img src=\"images/x.png\">";
			var resulttext = "The correct answer is <span class=\"big\">" + answerhash["a" + q.whichcorrect].text + "</span>.<br>";
			if ( q.whichguessed == -1 )
				resulttext += "( You left this blank. )";
			else
				resulttext += "( You guessed " + answerhash["a" + q.whichguessed].text + ". )";
			result.innerHTML = resulttext;
			result.style.color = "#801B1B";
		}
		var stattext = new Array();

		if ( q.note != "" )
		{
			var noteDiv = document.getElementById("note" + q.id);
			noteDiv.innerHTML = q.note;
			noteDiv.style.display = "block";
		}

		stattext.push("<div class=\"others\">What others guessed:</div>");
		stattext.push("<div class=\"statbody\">");

		stattext.push("<table cellpadding=\"0\" cellspacing=\"0\">");
		for (var j=0; j<q.answers.length; j++ )
		{
			var a = q.answers[j];
			var pct = Math.floor(100*(a.statcorrect / timestaken));
			var width = Math.floor(250*(a.statcorrect / timestaken));
			stattext.push("<tr><td class=\"a\" valign=\"top\">" + a.text + "</td>");
			stattext.push("<td class=\"b\" valign=\"top\"><div class=\"b1\"><div class=\"b2\" style=\"width: " + width + "px;\"></div></div></td>");
			stattext.push("<td class=\"c\" valign=\"top\">" + pct + "%</td></tr>");
		}
		stattext.push("</table>");
		stattext.push("</div>");

		stat.innerHTML = stattext.join('');

		result.style.display = "block";
		stat.style.display = "block";
	}
}

