response = 0;
responseFlag = true;
submitFlag = true;
timerStatus = true;
generateController = true;
function manageOnlineExam(form,action,id){
	
	url = "ajaxPages/getQuestion.php" + "?sid=" + Math.random();
	
	if(action=="startExam"){
		url += "&examId="+form.examId.value;
		url +="&action=startExam";
		form.startButton.disabled = true;
	}
	else if(action=="next" || action=="previous"){
		selectedAnswer = "";
		if (form.selectedAnswer1.checked)
			selectedAnswer += "1 ";
		if (form.selectedAnswer2.checked)
			selectedAnswer += "2 ";
		if (form.selectedAnswer3.checked)
			selectedAnswer += "3 ";
		if (form.selectedAnswer4.checked)
			selectedAnswer += "4 ";
		url += "&action=getQuestion";
		questionNumber = 0;
		if(action == "next")
			questionNumber = form.nextQuestion.value;
		else
			questionNumber = form.previousQuestion.value;
		
		form.next.disabled = false;
		form.prev.disabled = false;
		
		if(questionNumber == form.totalQuestion.value) {
			form.next.disabled = true;
		}
		if(questionNumber == 1) {
			form.prev.disabled = true;
		}
		
		url += "&questionId="+questionNumber;
		url += "&selectedAnswer="+selectedAnswer;
		url += "&saveAnswer="+form.currentQuestion.value;
	}
	else if(action == "finish_recordFeedback") {
		questionNumber = 0;
		if(action == "next")
			questionNumber = form.nextQuestion.value;
		else
			questionNumber = form.previousQuestion.value;
		
		selectedAnswer = "";
		if (form.selectedAnswer1.checked)
			selectedAnswer += "1 ";
		if (form.selectedAnswer2.checked)
			selectedAnswer += "2 ";
		if (form.selectedAnswer3.checked)
			selectedAnswer += "3 ";
		if (form.selectedAnswer4.checked)
			selectedAnswer += "4 ";
		
		url += "&action=finish_recordFeedback";
		url += "&questionId="+questionNumber;
		url += "&selectedAnswer="+selectedAnswer;
		url += "&saveAnswer="+form.currentQuestion.value;
		
		document.getElementById('examController').style.display = 'none';
		document.getElementById('timeRemaining').style.display = 'none'
		
		submitFlag = false;
	}
	else if(action == "finish_completeExam"){
		url += "&action=finish_completeExam";
		url += "&feedback="+form.feedback.value;
	}
	else if(action == "reviewExam") {
		url += "&action=review_exam";
		url += "&examId="+form.examId.value;
	}
	xmlHttp = GetXmlHttpObject();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) {
			response = xmlHttp.responseText;
			if(response.charAt(0) == "0") {
				timerStatus = false;
				generateController = false;
				document.getElementById('timeRemaining').innerHTML = '';
				document.getElementById(id).innerHTML = 'Please login to Proceed or <a href="NewUser.php" class="errormessagelink">Click here</a> to register.';
			}
			else if(response.charAt(0) == "1"){
				timerStatus = false;
				generateController = false;
				document.getElementById('timeRemaining').innerHTML = '';
				document.getElementById(id).innerHTML = 'You cannot perform at your own exam !';
			}
			else if(response.charAt(0) == "2"){
				timerStatus = false;
				generateController = false;
				document.getElementById('timeRemaining').innerHTML = '';
				document.getElementById(id).innerHTML = 'You have already performed in the exam !<br><input type="button" onclick="manageOnlineExam(this.form,\'reviewExam\',\'examContents\')" value="Review Previous Paper">';
			}
			else {
				document.getElementById('timeRemaining').innerHTML = '';
				document.getElementById(id).innerHTML = response;
				if(responseFlag==true){
					responseFlag = false;
					if(generateController) {
						alert("There are one or more correct answers in all the question.");
						timerStatus = true;
						document.getElementById('examController').innerHTML = '<input type="button" name="prev" value="Previous" onclick="manageOnlineExam(this.form,\'previous\',\'examContents\')" DISABLED> &nbsp; <input type="button" value="Finish Exam" onclick="manageOnlineExam(this.form,\'finish_recordFeedback\',\'examContents\')"> &nbsp; <input type="button" value="Next" name="next" onclick="manageOnlineExam(this.form,\'next\',\'examContents\')">';
						startTimer(form.timeAlloted.value);
					}
				}
			}
		} else {
			document.getElementById('timeRemaining').innerHTML = '<table style="font-size: 10;color: blue;"><tr><td><img src="images/very_small_loading.gif"></td><td>&nbsp; Loading, Please Wait ...</td></tr></table>';
			//document.getElementById(id).innerHTML = "<table align='center'><tr><td style='font-family: verdana;font-size: 11;font-weight: bold;color: blue'><img src='images/loading.gif'/></td><td valign='center'>Loading...</td></tr></table>";
		}
	};
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function startTimer(allot) {
	document.getElementById('timeRemaining').innerHTML = "Time Remaining: "
			+ allot;
	allot--;
	if(!timerStatus) {
		setTimeout("startTimer(\'" + (allot + 1) + "\')", 1000);
	}
	else if (allot > 0) {
		setTimeout("startTimer(\'" + allot + "\')", 1000);
	} else {
		document.getElementById('timeRemaining').innerHTML = "Time up, Please submit...";
		try {
			if(submitFlag == true){
				alert("Time up, submitting answers ...");
				manageOnlineExam(document.startTest, 'finish_recordFeedback', 'examContents');
			}
		} catch (err) {
		}
	}
}

flag = true;
function reviewExam(question) {
	xmlHttp = GetXmlHttpObject();
	url = "ajaxPages/getQuestion.php" + "?sid=" + Math.random();
	url += "&question=" + question + "&action=review_question";
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) {
			document.getElementById('ReviewPanel').innerHTML = xmlHttp.responseText;
		} else {
			document.getElementById('ReviewPanel').innerHTML = "<table align='center'><tr><td style='font-family: verdana;font-size: 11;font-weight: bold;color: blue'><img src='images/loading.gif'/></td></tr><tr><td align='center' style='font-weight: bold;font-size: 12;color: black;font-family: arial'>Loading, Please Wait ...</td></tr></table>";
		}
	};
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function validateCreateExamForm() {
	if (document.examCreateForm.examName.value.length < 5
			|| document.examCreateForm.examName.value.length > 100) {
		alert("Exam name should be between 5 to 100 characters.");
		return false;
	} else if (document.examCreateForm.examDescription.value.length < 10) {
		alert("Exam description should be at least 10 characters.");
		return false;
	} else if (document.examCreateForm.language.value <= 0) {
		alert("Please select a category.");
		return false;
	} else {
		if (document.examCreateForm.examPerQuestionTime.value.length > 0) {
			if (document.examCreateForm.examPerQuestionTime.value >= 10
					&& document.examCreateForm.examPerQuestionTime.value <= 1800) {
				return true;
			} else {
				alert("Per question time should be between 10 to 1800 seconds.");
				return false;
			}
		} else {
			alert("Per Question time should not be blank.");
			return false;
		}
	}
}

function validateAddQuestionForm() {
	var count = 0;
	if (document.addQuestionForm.isOption1Correct.checked)
		count++;
	if (document, addQuestionForm.isOption2Correct.checked)
		count++;
	if (document.addQuestionForm.isOption3Correct.checked)
		count++;
	if (document.addQuestionForm.isOption4Correct.checked)
		count++;

	if (document.addQuestionForm.question.value.length < 5) {
		alert('Question should be at least 5 characters.');
		return false;
	} else if (document.addQuestionForm.answerOption1.value.length < 1
			|| document.addQuestionForm.answerOption2.value.length < 1
			|| document.addQuestionForm.answerOption3.value.length < 1
			|| document.addQuestionForm.answerOption4.value.length < 1) {
		alert('Answer option should not be empty.');
		return false;
	} else if (document.addQuestionForm.answerExplanation.value.length < 10) {
		alert('Question explanation should be atleast 10 characters.');
		return false;
	} else if (count == 0) {
		alert('There should be atleast one correct answer.');
		return false;
	} else {
		return true;
	}
}
