// JavaScript Document
//Variables
var PreviousValue	=	'';
var	q_id;
var ql_token;
var q_length;
var AnswerQueue	=	0;
var AnswersCorrect=	0;
var AnswersTotal;
var Answers	=	[];
var APIbase	=	'http://www.memsul.com/api/';
var QuizTime	=	0;
var QuizInterval;
//Functions

//Add to answer queue
function AnswerQueueAdd(){
	AnswerQueue	=	AnswerQueue+1;
}
//Check answers
function CheckAnswers(){
		var CurrentValue	=	this.value;
		//Check if answer has changed
		if(CurrentValue != PreviousValue && CurrentValue.length > 3){
			//Get the Answers
			$.getJSON(APIbase + '?method=Quiz.Answers.Check&q_id=' + q_id + '&answer=' + CurrentValue,
				function(data, textStatus){
					//Check that it all worked!
					if(textStatus == 'success'){
						var AnswerEffect	=	[
							{param:'background-color', colorList: ["white", "red"], cycles: '1'},
							{param:'color', colorList: ["black", "white"], cycles: '1'}
						];
						//Loop through elements
						$.each(data.QuizAnswers, function(i, Answer){
							//Check answer hasn't been set
							if(!Answers[Answer.id]){
								//Blend Color
								$("#answer-" + Answer.id).colorBlend(AnswerEffect);
								//Set Answers
								$("#answer-" + Answer.id).html(Answer.answer);
								//Set Answers Array
								Answers[Answer.id]	=	CurrentValue;
								//Increase Correct Answers
								AnswersCorrect++;
								//Update Correct Answers
								$('#AnswersCorrect').html(AnswersCorrect);
								//Check if should be submitted!
								if(AnswersCorrect == AnswersTotal){
									self.clearInterval(QuizInterval);
									QuizAnswersSubmit();
								}
							}
						});
						//Clear Text Box Value
						$('#QuizAnswer').val('');
					}
				});
			//End Answers
			//Unbind Event
			$("#QuizAnswer").unbind("keyup", CheckAnswers);
			$("#QuizAnswer").bind("keyup", AnswerQueueAdd);
				//Set timer for "bind"
				window.setTimeout(function(){
					$("#QuizAnswer").unbind("keyup", AnswerQueueAdd);
					$("#QuizAnswer").bind("keyup", CheckAnswers);
					//Check AnswerQueue
					if(AnswerQueue > 0){
						$("#QuizAnswer").trigger("keyup");
						AnswerQueue	=	0;
					}
					//Reset Answer Queue
				}, 500);
			//Set Previous Value
			PreviousValue	=	CurrentValue;
		}
}
//End Check Answers();

//End Quiz, will request all non-answered questions
function QuizAnswersGet(){
	/*
	for(i in Answers){
		alert("[" + i + "]" + Answers[i]);
	}
	*/
	//Get the Answers
	$.getJSON(APIbase + '?method=Quiz.Answers.Get&q_id=' + q_id,
		function(data, textStatus){
			//Check that it all worked!
			if(textStatus == 'success'){
				var AnswerEffect	=	[
					{param:'background-color', colorList: ["white", "yellow"], cycles: '1'},
					{param:'color', colorList: ["red", "white"], cycles: '1'}
				];
				//Loop through elements
				$.each(data.QuizAnswers, function(i, Answer){
					//Check answer hasn't been set
					if(!Answers[Answer.id]){
						//Blend Color
						$("#answer-" + Answer.id).colorBlend(AnswerEffect);
						//Set Answers
						$("#answer-" + Answer.id).html(Answer.answer);
					}
				});
				//Clear Text Box Value
				$('#QuizAnswer').val('');
			}
		});

}

//Submit Quiz Answers
function QuizAnswersSubmit(){
	//Generate URL
	var QuizAnswersSubmitURL	=	APIbase + '?method=Quiz.Answers.Post&ql_token=' + ql_token + '&time=' + (q_length - QuizTime);
	for(i in Answers){
		QuizAnswersSubmitURL	=	QuizAnswersSubmitURL + '&a_id['+i+']=' + Answers[i];
	}
	//Submit Answers
	$.getJSON(QuizAnswersSubmitURL,
		function(data, textStatus){
			//Check that it all worked!
			if(textStatus == 'success'){
				//Get Missing Answers
				QuizAnswersGet();
				if(data.code == 'QAP1'){
					alert('Your answer\'s have not been saved as you must register and login for this to work!');
				}
			}else{
				alert('Oh Noes! Something went wrong when we submitted your answers, hopefully it will all be sorted soon though.');
			}
		});}
//Start Quiz
function QuizStart(){
	QuizInterval	=	self.setInterval("StartQuizInterval()", 1000);
	QuizTime	=	q_length;
	StartQuizInterval();
}
//Give Up Quiz
function QuizGiveUp(){
	self.clearInterval(QuizInterval);
	QuizAnswersSubmit();
}
//Timer Interval
function StartQuizInterval(){
	QuizTime	=	QuizTime - 1;
	if(QuizTime == 0){
		self.clearInterval(QuizInterval);
		QuizAnswersSubmit();
	}
	//Update Text Box
	$('#QuizTimeRemaining').html(QuizTime);
}
//Bind Functions
$(document).ready(function(){
	//Quiz ID
	q_id	=	$('#quiz_id').val();
	q_length=	$('#quiz_length').val();
	ql_token	=	$('#ql_token').val();
	AnswersTotal=	$('#quiz_answers').val();
	//Make Task Notes Editable
	$("#QuizAnswer").bind("keyup", CheckAnswers);
});