//Cookie Functions

function getCookie(NameOfCookie) {
	if (document.cookie.length > 0) {
		begin = document.cookie.indexOf(NameOfCookie+"=");
		if (begin != -1) {
			begin += NameOfCookie.length+1;
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
		}
	}
	return null;
}

function setCookie(NameOfCookie, value, expiredays) {
	var ExpireDate = new Date ();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
	document.cookie = NameOfCookie + "=" + escape(value) +
	((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}
function delCookie(cookie) {
	setCookie(cookie, '', -1);
}

//validate email

function validateEmail(field) {
	with (field) {
		apos=value.indexOf("@");
		dotpos=value.lastIndexOf(".");
		if (apos<1||dotpos-apos<2) {
			return false;
		}
		else {
			return true;
		}
	}
}

//Set user login

function setUser(form) {

	newUser = document.login.user.value;
	setCookie('newUser', newUser, 365);
	
	newEmail = document.login.email.value;
	setCookie('newEmail', newEmail, 365);
	
	with (form) {
		
		if (newUser == "" || newEmail == "") {
			alert("Please fill in all fields");
			return false;
		}
	
		else if (validateEmail(email)==false) {
			alert("Please enter a valid email address");
			return false;
		}
	}
}

function showUser() {
	var showName = getCookie('newUser');
	var insertUser = document.getElementById('insertUser');
	insertUser.innerHTML = showName;
}

//Check if user is actually logged in

function checkLogin() {
	if(getCookie("newUser") != null && getCookie("newEmail") != null) {
		document.getElementById("loggedOut").style.display = "none";
		document.getElementById("loggedIn").style.display = "inline";
	}
}


//--------------------------------------------------------------------------------
//Storing and checking answer

function checkAnswers(num, userAns) {
	try { //Internet Explorer
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e) {
		try { //Firefox, Mozilla, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
		}
		catch(e) {
			alert(e.message);
			return;
		}
	}
	xmlDoc.async=false;
	xmlDoc.load("answers.xml");
		
	var daysXML = xmlDoc.getElementsByTagName('newDay');
	var today = document.answers.date.value;
	var ansArray = new Array;
	var compAns = '';
			
	for (i = 0; i < daysXML.length; i++) {
		var attr = daysXML.item(i).attributes.getNamedItem("date");
		if (attr.value == today) {
			var dayXML = daysXML.item(i);
			if (num-1 <= dayXML.getElementsByTagName('answer').length) {
				compAns = dayXML.getElementsByTagName('answer')[num-1].childNodes[0].nodeValue;
			}
		}
	}
	if (strip(userAns) == strip(compAns)) {
		setCookie("correctAns" + num, compAns, 1);
		return true;
	}
	else {
		setCookie("correctAns" + num, compAns, 1);
		return false;
	}
}

//--------------------------------------------------------------------------------
function storeAnswer() {
	for (var i = 0; i < document.answers.q1.length; i++) {
		if (document.answers.q1[i].checked) {
			var userAns = strip(document.answers.q1[i].value);
		}
	}
	var today = document.answers.date.value;
	var answerNum = document.getElementById("qNum").innerHTML;
	var answerCookie = today + "ans" + answerNum;
	var timesUp = document.answers.d2.value;
	
	setCookie(answerCookie, userAns, 1);
	var total = getCookie("finalScore");
	var checkIt = getCookie(answerCookie);
	
	if (timesUp == "0:0") {
		setCookie(answerCookie, "Timed Out", 1);
		document.answers.action = "wrong.html";
		document.answers.submit();
	}
	if (getCookie(today + "ans5") != null) {
		if (checkAnswers(answerNum, checkIt) == true) {
			setCookie("finalScore", total*1 + 1, 365);
		}
		checkAnswers(answerNum, checkIt);
		document.answers.action = "finalScore.html";
	}
	else {
		var t= checkAnswers(answerNum, checkIt);
		if (checkAnswers(answerNum, checkIt) == true) {
			setCookie("finalScore", total*1 + 1, 365);
			document.answers.action = "correct.html";
		}
		else { 
			document.answers.action = "wrong.html";
		}
	}
}

//XML Parser and inserting into html

function parseXML() {
	try { //Internet Explorer
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e) {
		try { //Firefox, Mozilla, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
		}
		catch(e) {
			alert(e.message);
			return;
		}
	}
	xmlDoc.async=false;
	xmlDoc.load("quiz.xml");
		
	var xmlDate = xmlDoc.getElementsByTagName('newDay');
	var qNum = xmlDoc.getElementsByTagName('qNum');
	var today = document.answers.date.value;
	
	if (getCookie(today + "ans1") != null && getCookie(today + "ans2") != null && getCookie(today + "ans3") != null && getCookie(today + "ans4") != null && getCookie(today + "ans5") != null) {
		window.location = "congrats.html";
	}
	for (i = 0; i < xmlDate.length; i++) {
		var attr = xmlDate.item(i).attributes.getNamedItem("date");
		
		if (attr.value == today) {
			for (j = 0; j < xmlDate[i].childNodes.length; j++) {
				
				var cookie = today + "ans" + qNum[j].childNodes[0].nodeValue;
				if (getCookie(cookie) == null) {
					document.getElementById("qNum").innerHTML = xmlDate[i].getElementsByTagName("qNum")[j].childNodes[0].nodeValue;
					document.getElementById("qTest").innerHTML = xmlDate[i].getElementsByTagName("qTest")[j].childNodes[0].nodeValue;
					document.getElementById("a1").innerHTML = xmlDate[i].getElementsByTagName("a1")[j].childNodes[0].nodeValue;
					document.getElementById("a2").innerHTML = xmlDate[i].getElementsByTagName("a2")[j].childNodes[0].nodeValue;
					document.getElementById("a3").innerHTML = xmlDate[i].getElementsByTagName("a3")[j].childNodes[0].nodeValue;
					document.getElementById("a4").innerHTML = xmlDate[i].getElementsByTagName("a4")[j].childNodes[0].nodeValue;
					document.getElementById("v1").value = xmlDate[i].getElementsByTagName("a1")[j].childNodes[0].nodeValue;
					document.getElementById("v2").value = xmlDate[i].getElementsByTagName("a2")[j].childNodes[0].nodeValue;
					document.getElementById("v3").value = xmlDate[i].getElementsByTagName("a3")[j].childNodes[0].nodeValue;
					document.getElementById("v4").value = xmlDate[i].getElementsByTagName("a4")[j].childNodes[0].nodeValue;
					if (cookie == today + "ans1") {
						setCookie("finalScore", 0, 365);
					}
					// Start Timer
					displayTimer();
					return false;
				}
			}
		}
	}
	
}

//Timer
var milisec=0;
var seconds=31;

function displayTimer(){ 
	if (milisec<=0){ 
		milisec=9;
		seconds-=1;
	} 
	if (seconds<=-1){ 
		milisec=0;
		seconds+=1;
	} 
	else {
		milisec-=1; 
		document.answers.d2.value="0:" + seconds;
		setTimeout("displayTimer()",100);
		if (seconds == 0 && milisec == 0) {
			storeAnswer();
		}
	}
}

function submitForm() {
	var today = document.userfields.date.value;
	var userName = getCookie('newUser');
	var userEmail = getCookie('newEmail');
	var userAnswer1 = getCookie(today + "ans1");
	var userAnswer2 = getCookie(today + "ans2");
	var userAnswer3 = getCookie(today + "ans3");
	var userAnswer4 = getCookie(today + "ans4");
	var userAnswer5 = getCookie(today + "ans5");
	var finalScore = getCookie("finalScore");
		
	document.userfields.user.value = userName;
	document.userfields.email.value = userEmail;
	document.userfields.score.value = finalScore;
	document.userfields.answer1.value = userAnswer1;
	document.userfields.answer2.value = userAnswer2;
	document.userfields.answer3.value = userAnswer3;
	document.userfields.answer4.value = userAnswer4;
	document.userfields.answer5.value = userAnswer5;
	document.userfields.action = "http://cgi.cnnsi.com/entries/sifk-quizking";
	document.userfields.submit();
}

//Get cookies from cookie jar
function loadScore() {
	var score = getCookie("finalScore");
	var showScore = document.getElementById("showScore");
	showScore.innerHTML = score;
	
	if (score <= 3) {
		document.getElementById("tough").style.display = "inline";
		document.getElementById("congrats").style.display = "none";
	}
	
	var firstAns = "1. " + getCookie("correctAns1") + "<br />";
	setCookie("loadAnswers", firstAns, 1);
	
	for (i = 2; i <= 5; i++) {
		var correct = getCookie("correctAns" + i);
		var combine = getCookie("loadAnswers");
		var correctString = combine + " " + i + ". " + correct + "<br />";
		setCookie("loadAnswers", correctString, 1);
		
	}
	document.getElementById("showAnswers").innerHTML = getCookie('loadAnswers');
}

//Removing non-alphanumeric characters in string

function strip(str) {
	return str.toLowerCase().replace(' ', '').replace(/[^a-z0-9]/,'');
}
