//Test correction for generated tests:

var mc_questions = 4;
var instantScoring = 1; //Should we score on this call or not?
var correct = 0;
var wrong = 0;
var unanswered = 0;
var ignoreCase = 0;
var ignoreSpaces = 0;
var ignoreParenths = 0;
var ignorePunctuation = 0;
var sound_map = Array();
var pl_counter = 0;
var deck_id = 0;
var fib;
var tf;
var ma;
var mc;

function setVars(t_deck_id, s,p,c,r,i, fibT, tfT, maT, mcT)
{
	deck_id = t_deck_id;
	correctInline = i;
	ignoreSpaces = (s=="y") ? 1:0;
	ignorePunctuation = (p=="y") ? 1:0;
	ignoreCase = (c=="y") ? 1:0;
	ignoreParenths = (r=="y") ? 1:0;
	fib = fibT;
	tf = tfT;
	ma = maT;
	mc = mcT;
}

function loadFunc() //Grab some vars from the HTML
{
	mc_questions = document.getElementById('mcq').value;
	instantScoring = 1;
	correct = 0;
	wrong = 0;
	unanswered = 0;
	pl_counter = 0;
	loadPlayer('jw_player');
}

function printScore()
{
	var letterGrade = 'F';
	if(correct+wrong > 0)
	{
		var percentage = 100 * (correct / (correct+wrong));
	}
	else
	{
		percentage = 0;
		alert('You have not answered any questions!');
		return;
	}
	if(percentage < 60)
		letterGrade = 'F';
	else if (percentage >=  60 && percentage <70)
		letterGrade = 'D';
	else if (percentage >=60 && percentage < 80)
		letterGrade = 'C';
	else if (percentage >= 80 && percentage < 90)
		letterGrade = 'B';
	else if (percentage >= 90)
		letterGrade = 'A';
	document.getElementById('letterGrade').innerHTML = letterGrade;	
	document.getElementById("rightCount").innerHTML = correct;
	document.getElementById("totalCount").innerHTML = (correct + wrong);
	document.getElementById("scoreSpace").style.visibility = 'visible';
	document.getElementById("scoreSpace").style.display = 'block';
}

function markCorrect(qNum) //Put in a check and increment the right counter
{
	if(document.getElementById('C-' + qNum).innerHTML == '<img src="images/incorrect.gif"/>')
	{
		correct++;
		wrong--;
	}
	if(document.getElementById('C-' + qNum).innerHTML == '')
	{
		correct++;
	}
	document.getElementById('C-' + qNum).innerHTML = '<img src="images/correct.gif"/>';
	printScore();
	document.getElementById('C-' + qNum).value=1;
}

function markWrong(qNum) //Put in an X and increment the wrong counter
{
	if(document.getElementById('C-' + qNum).innerHTML == '<img src="images/correct.gif"/>')
	{
		correct--;
		wrong++;
	}
	if(document.getElementById('C-' + qNum).innerHTML  == '')
		wrong++;
		
	document.getElementById('C-' + qNum).innerHTML = '<img src="images/incorrect.gif"/>';
	printScore();
	document.getElementById('C-' + qNum).value=0;
}

function markUnanswered(qNum) //If the question was never answered
{
	unanswered++;
}

function correctWQ(qNum, instantScoring)
{
	var userAnswer = document.getElementById('Q-' + qNum.toString()).value;
	var correctAnswer = document.getElementById('A-' + qNum.toString()).value;
	var origCorrectAnswer = correctAnswer;
	if(ignoreCase)
	{
		userAnswer = userAnswer.toLowerCase();
		correctAnswer = correctAnswer.toLowerCase();
	}
	if(userAnswer == '')
	{
		markUnanswered(qNum);
		return;
	}
	if(ignoreParenths==1)
	{
		userAnswer = userAnswer.replace(/(\(.*\))/g,'').replace(/^\s*/, "").replace(/\s*$/, "");
		correctAnswer = correctAnswer.replace(/\(.*\)/g,'').replace(/^\s*/, "").replace(/\s*$/, "");
	}
	if(ignorePunctuation==1)
	{
		userAnswer = userAnswer.replace(/[^A-Za-z0-9\s]/g, '');
		correctAnswer = correctAnswer.replace(/[^A-Za-z0-9\s]/g, '');
	}
	if(ignoreSpaces==1)
	{
		userAnswer = userAnswer.replace(/\s*/g,'');
		correctAnswer = correctAnswer.replace(/\s*/g,'');
	}
	if(userAnswer == correctAnswer)
	{
		markCorrect(qNum);
		document.getElementById('CA-' + qNum).innerHTML ='';
		document.getElementById('Q-' + qNum).className = "exam_correct";
	}
	else
	{
		markWrong(qNum);
		document.getElementById('CA-' + qNum).innerHTML = '<br/>Correct Answer: ' +origCorrectAnswer;
		document.getElementById('Q-' + qNum).className = "exam_incorrect";
	}
}

function correctTF(qNum, instantScoring)
{
	var trueFalse = document.getElementsByName('Q-' + qNum.toString());

	if(trueFalse[0].checked)
	{
		if(trueFalse[0].value==1)
		{
			document.getElementById("True-" + qNum).className = "exam_correct";
			document.getElementById("False-" + qNum).className = "";
			markCorrect(qNum);
		}
		else
		{
			document.getElementById("True-" + qNum).className = "exam_incorrect";
			document.getElementById("False-" + qNum).className = "exam_correct";
			markWrong(qNum);
		}
	}
	else if(trueFalse[1].checked)
	{
		if(trueFalse[1].value==0)
		{
			document.getElementById("False-" + qNum).className = "exam_correct";
			document.getElementById("True-" + qNum).className = "";
			markCorrect(qNum);
		}
		else
		{
			document.getElementById("False-" + qNum).className = "exam_incorrect";
			document.getElementById("True-" + qNum).className = "exam_correct";
			markWrong(qNum);
		}
	}
	else if(!trueFalse[0].checked && !trueFalse[1].checked)
	{
			markUnanswered(qNum);
	}
}

function correctMC(qNum, instantScoring)
{
	var choices, choice, answer, i;
	choices = document.getElementsByName('Q-' + qNum.toString());
	answer = document.getElementById('A-' + qNum.toString());
	for(i=0; i<mc_questions; i++)
	{
		if(choices[i].checked)
			choice = choices[i];
		choices[i].parentNode.className = ""; //Remove tags in case w'ere recorrecting this
	}
	if(typeof(choice) == 'undefined')
	{
		markUnanswered(qNum);
		return;
	}	
	else if(choice.value == 1)
	{
		markCorrect(qNum);
		choice.parentNode.className = "exam_correct";
	}
	else if(choice.value == 0)
	{
		markWrong(qNum);
		choice.parentNode.className = "exam_incorrect";
	}
	for(i=0; i<mc_questions; i++)
	{
		if(choices[i].value==1)
			choices[i].parentNode.className = "exam_correct";
	}
}

function correctMA(qNum, instantScoring)
{
	userAnswer = document.getElementById('Q-' + qNum.toString()).value;
	correctAnswer = document.getElementById('A-' + qNum.toString()).value;
	if(userAnswer == '')
	{
		markUnanswered(qNum);
	}	
	else if(userAnswer.toLowerCase() == correctAnswer.toLowerCase())
	{
		document.getElementById('CA-' + qNum).innerHTML = '';
		document.getElementById('Q-' + qNum).className = "exam_correct";
		markCorrect(qNum);
	}
	else
	{
		document.getElementById('CA-' + qNum).innerHTML = "<br/>Correct Answer: " + correctAnswer;
		document.getElementById('Q-' + qNum).className = "exam_incorrect";
		markWrong(qNum);
	}
}

function inlineWQ(qNum)
{
	if(correctInline==1)
		correctWQ(qNum, 1);	
}

function inlineMA(qNum)
{
	if(correctInline==1)
		correctMA(qNum,1);
}

function inlineTF(qNum)
{
	if(correctInline==1)
		correctTF(qNum,1);
}

function inlineMC(qNum)
{
	if(correctInline==1)
		correctMC(qNum,1);
}

function correctTest(numCards)
{
	var i;
	for(i=1; i<=numCards; i++)
	{
		switch(document.getElementById('T-' + i.toString()).value)  //Greade each type with it's respective function
		{
			case 'WQ':
				correctWQ(i,0);
				break;
			case 'MC':
				correctMC(i,0);
				break;
			case 'TF':
				correctTF(i,0);
				break;
			case 'MA':
				correctMA(i,0);
				break;
		}
	}
	printScore();
	xajax_logScore(deck_id, correct, wrong, unanswered, fib, tf, ma, mc);
	unanswered = 0; //Reset this counter after every score so it doesn't cumulate
}

function playSound(card_id, side) {
	file_name = document.getElementById('sound_' + side + '_' + card_id).value;
	if(file_name != "") {
		thisMovie("mpl").addItem({file: file_name});
		sound_map[card_id] = new Array();
		sound_map[card_id][side] = pl_counter++;
		document.getElementById('sound_' + side + '_' + card_id).value = '';
	}
	thisMovie("mpl").sendEvent('playitem', sound_map[card_id][side]);
}
