var curq = 0;
var tarray = new Array();
var qarray = new Array();
var idarray = new Array(); //when creating a new question, need to obtain question id from db
var carray = new Array();
var answerarray = new Array();
var reasonarray = new Array();
for (var i = 0; i < 4; i++) {
	carray[i] = new Array();
}
var mc = "MC";
var tf = "TF";
var qid;
var uid;
var fieldsize = 66;
var required_len = 10;
var publishinfo = "Thanks for sharing! Your quiz will be published. iQuizShare.com reserves all rights. Quiz will be deleted without notice if any content is considered inappropriate.";
function publish() {
	if(qarray.length<required_len){
		alert("Too few questions to be published! At least "+required_len+" questions are required. Thanks!");		
	}else{
		alert(publishinfo);
		qid = document.quiz.quizid.value;
		uid = document.quiz.userid.value;
		try {
			// Opera 8.0+, Firefox, Safari
			ajaxRequest = new XMLHttpRequest();
		} 
		catch (e) {
			// Internet Explorer Browsers
			try {
				ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) {
				try {
					ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e) {
					// Something went wrong
					alert("Your browser broke!");
					return false;
				}
			}
		}
			
		ajaxRequest.onreadystatechange = function(){
			window.location = "index.php?option=com_ppquiz&task=reeditlist";
		}
		var queryString = "&qid=" + qid + "&u=" + uid;
		ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=publish" + queryString, true);
		ajaxRequest.send(null);
	}
}

function loadq(xml){
	try{//Internet Explorer
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async="false";
	  xmlDoc.loadXML(xml);
	}catch(e){
	 try{// Firefox, Mozilla, Opera, etc.
	   parser=new DOMParser();
	   xmlDoc=parser.parseFromString(xml,"text/xml");
	 }catch(e){
	   alert(e.message);
	   return;
	 }
	}
	var len = xmlDoc.getElementsByTagName("question");
	for(i=0; i<len.length; i++){
		idarray[i] = xmlDoc.getElementsByTagName("id")[i].childNodes[0].nodeValue;
		if (xmlDoc.getElementsByTagName("ask")[i].hasChildNodes()){
			qarray[i] = gtlt_replace(xmlDoc.getElementsByTagName("ask")[i].childNodes[0].nodeValue);
		}else{ qarray[i] = ""; }
		tarray[i] = xmlDoc.getElementsByTagName("qtype")[i].childNodes[0].nodeValue;
		if (xmlDoc.getElementsByTagName("c1")[i].hasChildNodes()) {
			carray[0][i] = gtlt_replace(xmlDoc.getElementsByTagName("c1")[i].childNodes[0].nodeValue);
		}else{ carray[0][i] = ""; }
		if (xmlDoc.getElementsByTagName("c2")[i].hasChildNodes()) {
			carray[1][i] = gtlt_replace(xmlDoc.getElementsByTagName("c2")[i].childNodes[0].nodeValue);
		}else{ carray[1][i] = ""; }
		if (xmlDoc.getElementsByTagName("c3")[i].hasChildNodes()) {
			carray[2][i] = gtlt_replace(xmlDoc.getElementsByTagName("c3")[i].childNodes[0].nodeValue);
		}else{ carray[2][i] = ""; }
		if (xmlDoc.getElementsByTagName("c4")[i].hasChildNodes()) {
			carray[3][i] = gtlt_replace(xmlDoc.getElementsByTagName("c4")[i].childNodes[0].nodeValue);
		}else{ carray[3][i] = ""; }
		if (xmlDoc.getElementsByTagName("answer")[i].hasChildNodes()) {
			answerarray[i] = gtlt_replace(xmlDoc.getElementsByTagName("answer")[i].childNodes[0].nodeValue);
		}else{ answerarray[i] = ""; }
		if (xmlDoc.getElementsByTagName("reason")[i].hasChildNodes()) {
			reasonarray[i] = gtlt_replace(xmlDoc.getElementsByTagName("reason")[i].childNodes[0].nodeValue);
		}else{ reasonarray[i] = ""; }
	}
	//alert(len.length);
	updateQList(0);	
	updateQDetail(0);
}

function showhide(id){
	if (document.getElementById){
		obj = document.getElementById(id);
		if (obj.style.display == "none"){
			obj.style.display = "";
			document.getElementById("plusminus_"+id).innerHTML="[-]";
		} else {
			obj.style.display = "none";
			document.getElementById("plusminus_"+id).innerHTML="[+]";
		}
	}
}

function updateStatus(msg){
	document.getElementById('status').innerHTML = "<img src='images/info_icon.gif' border=0 width=20>&nbsp;&nbsp;"+msg;
}

function updateQList(q){
	curq = q;
	var nq = q * 1;
	var htm;
	//update qList
	htm = "<ol>"
	for(var i=0; i<qarray.length; i++){
		var text = qarray[i];
		if(text.length<=0){
			text = "New Empty Question ...";
		}else{
			text = text.substr(0,25) + " ...";
		}
		htm = htm + "<li><a href=\"javascript: updateQDetail("+i+");\">" + text;
		//htm = htm + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#\" onClick = \"delq("+i+");\"><img src='images/del_icon.gif' border=0 width=12></a>";
		htm = htm + "&nbsp;&nbsp;&nbsp;&nbsp;</a><a href=\"javascript: delq("+i+");\" class=\"del\">[X]</a>";
	}
	htm = htm + "</ol>";
	document.getElementById('qList').innerHTML = htm;	
}

function updateQDetail(q){
	curq = q;
	var nq = q * 1;
	var htm;
	//update qNum
	document.getElementById('qNum').innerHTML = "Question #"+(q+1);
	
	//update qDetail
	//htm = "<input type=\"text\" size="+fieldsize+" value=\"" + qarray[nq] + "\" id=\"q" + nq + "\" onblur=\"saveQuestion("+nq+");\"><br>";
	htm = edToolbar('q'+nq) + "<textarea id=\"q" + nq + "\" name=\"q" + nq + "\" onblur=\"saveQuestion("+nq+");\" class=\"ed\">" + qarray[nq] + "</textarea><br>";
	if (tarray[nq] == mc) {//MC
		for (var i = 1; i <= 4; i++) {
			if(answerarray[nq]==i){
				htm = htm + "<input type=\"radio\" name=\"choice\" VALUE=\"" + i + "\" checked onblur=\"saveQuestion("+nq+");\" onclick=\"setAnswer(" + nq+","+i + ");\">";
			}else{
				htm = htm + "<input type=\"radio\" name=\"choice\" VALUE=\"" + i + "\" onblur=\"saveQuestion("+nq+");\" onclick=\"setAnswer(" + nq+","+i + ");\">";
			}
			htm = htm + "<input type=\"text\" size=60 value=\"" + carray[i - 1][nq] + "\" id=\"q" + nq + "c" + i + "\" onblur=\"saveQuestion("+nq+");\"><br>";
		}
	}else{
		var checked1 = "";
		var checked2 = "";
		var explain = "";
		
		if (answerarray[nq] == 1){
			checked1 = "checked";
		}else if(answerarray[nq] == 2){
			checked2 = "checked";
			//explain = 
		}
		htm = htm + "<input type=\"radio\" name=\"choice\" VALUE=\"1\" onblur=\"saveQuestion("+nq+");\" onclick=\"setAnswer("+nq+",1);\""+checked1+">" + carray[0][nq];
		htm = htm + "<br><input type=\"radio\" name=\"choice\" VALUE=\"2\" onblur=\"saveQuestion("+nq+");\" onclick=\"setAnswer("+nq+",2);\""+checked2+">" + carray[1][nq];
	}
	htm = htm + "<br><br>Comments:<br>"+ edToolbar('r'+nq) + "<textarea id=\"r" + nq + "\" name=\"r" + nq + "\" onblur=\"saveQuestion("+nq+");\" class=\"ed\">"+reasonarray[nq]+"</textarea><br>";
	htm = htm + "<br>";
	document.getElementById('qDetail').innerHTML = htm;
}

function setAnswer(q,i){
	var nq = q * 1;
	answerarray[nq]=i;
	//updateQDetail(nq);
}

function addMC(){
	obj = document.getElementById('qinfo');
	if (obj.style.display == "none"){
	} else {
		obj.style.display = "none";
		document.getElementById("plusminus_qinfo").innerHTML="[+]";
	}

	qid = document.quiz.quizid.value;
	uid = document.quiz.userid.value;
	updateStatus('Creating a new multiple choice question ...');
	try {
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} 
	catch (e) {
		// Internet Explorer Browsers
		try {
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
		
	ajaxRequest.onreadystatechange = function(){
		if (ajaxRequest.readyState == 4) {
			var pagetext = ajaxRequest.responseText;
			var lft = pagetext.indexOf("xinqidzuo")+9;
			var rgt = pagetext.indexOf("xinqidyou");
			var questid = pagetext.substring(lft, rgt);
			idarray.push(questid);
			var len = qarray.length;
			tarray.push(mc);
			qarray.push("");
			for(var i=0; i<4; i++){
				carray[i].push("");
			}
			answerarray.push(1);
			reasonarray.push("");
			updateQList(len);
			updateQDetail(len);
			updateStatus('Creating a new multiple choice question ... done!');
			//updateStatus(questid);
		}
	}
	//alert(i);
	// Now get the value from user and pass it to
	// server script.
	var queryString = "&q=" + qid + "&t=" + mc;
	ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=newquest" + queryString, true);
	ajaxRequest.send(null);
}

function addTF(){
	obj = document.getElementById('qinfo');
	if (obj.style.display == "none"){
	} else {
		obj.style.display = "none";
		document.getElementById("plusminus_qinfo").innerHTML="[+]";
	}
	qid = document.quiz.quizid.value;
	uid = document.quiz.userid.value;
	updateStatus('Creating a new true-or-false question ...');
	try {
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} 
	catch (e) {
		// Internet Explorer Browsers
		try {
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
		
	ajaxRequest.onreadystatechange = function(){
		if (ajaxRequest.readyState == 4) {
			var pagetext = ajaxRequest.responseText;
			var lft = pagetext.indexOf("xinqidzuo")+9;
			var rgt = pagetext.indexOf("xinqidyou");
			var questid = pagetext.substring(lft, rgt);
			idarray.push(questid);
			var len = qarray.length;
			tarray.push(tf);
			qarray.push("");
			carray[0].push("TRUE");
			carray[1].push("FALSE");
			carray[2].push("");
			carray[3].push("");
			answerarray.push(1);
			updateQList(len);
			updateQDetail(len);
			updateStatus('Creating a new true-or-false question ... done!');
		}
	}
	//alert(i);
	// Now get the value from user and pass it to
	// server script.
	var queryString = "&q=" + qid + "&t=" + tf;
	ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=newquest" + queryString, true);
	ajaxRequest.send(null);
}

function saveQ(){
	qid = document.quiz.quizid.value;
	uid = document.quiz.userid.value;
	//save to DB, first save quiz info to jos_iquiz, then save questions to jos_iquiz_question
	updateStatus("Saving quiz information to database ... ");
	var qtitle = escape(ltgt_replace(document.getElementById("ttl").value));
	var qdesc  = escape(ltgt_replace(document.getElementById("desc").value));
	var qcate  = escape(ltgt_replace(document.getElementById("cate").value));
	var qwin   = escape(ltgt_replace(document.getElementById("win").value));
	var qlose  = escape(ltgt_replace(document.getElementById("lose").value));
	var ask    = escape(ltgt_replace(document.getElementById("ask").value));
	var wrong  = escape(ltgt_replace(document.getElementById("wrong").value));
	var queryString = "&t=" + qtitle + "&q=" + qid + "&u=" + uid;
	queryString +=  "&d=" + qdesc + "&c=" + qcate + "&w=" + qwin + "&l=" + qlose + "&a=" + ask + "&r=" + wrong;
	try {
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} 
	catch (e) {
		// Internet Explorer Browsers
		try {
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
		
	ajaxRequest.onreadystatechange = function(){
		if (ajaxRequest.readyState == 4) {
 			var xmlDoc=ajaxRequest.responseText;
			updateStatus("Saving quiz information to database ... Done!");
			saveQuestionToDB();
		}
	}
	//alert(i);
	// Now get the value from user and pass it to
	// server script.
	ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=saveinfo" + queryString, true);
	ajaxRequest.send(null);
}

function saveQuestionToDB(){
	qid = document.quiz.quizid.value;
	uid = document.quiz.userid.value;
	var savingq;
	for (var i = 0; i < tarray.length; i++) {
		savingq = i+1;
		updateStatus("Saving question "+savingq+" to database ... ");
		try {
			// Opera 8.0+, Firefox, Safari
			ajaxRequest = new XMLHttpRequest();
		} 
		catch (e) {
			// Internet Explorer Browsers
			try {
				ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) {
				try {
					ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e) {
					// Something went wrong
					alert("Your browser broke!");
					return false;
				}
			}
		}
		
		ajaxRequest.onreadystatechange = function(){
			if (ajaxRequest.readyState == 4) {
				updateStatus("Saving question "+savingq+" to database ... Done!");
				//updateStatus(ajaxRequest.responseText);
			}
		}
		//alert(i);
		// Now get the value from user and pass it to
		// server script.
		var qtype = tarray[i];
		var q = idarray[i];
		var ques = escape(ltgt_replace(qarray[i]));
		var c1 = escape(ltgt_replace(carray[0][i]));
		var c2 = escape(ltgt_replace(carray[1][i]));
		var c3 = escape(ltgt_replace(carray[2][i]));
		var c4 = escape(ltgt_replace(carray[3][i]));
		var ans = answerarray[i];
		var res = escape(ltgt_replace(reasonarray[i]));
		var queryString = "&t=" + qtype + "&qid=" + qid + "&i=" + q;
		queryString +=  "&q=" + ques + "&c1=" + c1 + "&c2=" + c2 + "&c3=" + c3 + "&c4=" + c4 + "&a=" + ans + "&r=" + res;
		ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=saveq" + queryString, true);
		ajaxRequest.send(null);
	}
	
}

function saveQuestion(q){
	var qn = "q"+q;
	var rn = "r"+q;
	var nq = q * 1;
	if (tarray[nq] == mc) {//MC
		qarray[nq]=document.getElementById(qn).value;
		for(var i=1; i<=4; i++){
			var cn = qn+"c"+i;
			carray[i-1][nq]=document.getElementById(cn).value;
		}
		/*for (var i=0; i<4; i++){
		   if (document.form.choice[i].checked){
		   	  alert(i);
		      answerarray[nq]=document.form.choice[i].value;
		   }
		}*/
	}else{
		qarray[nq]=document.getElementById(qn).value;
		/*for (var i=0; i<2; i++){
		   if (document.form.choice[i].checked){
		      answerarray[nq]=document.form.choice[i].value;
		   }
		}*/
	}
	reasonarray[nq]=document.getElementById(rn).value;
	updateQList(nq);
	//updateQDetail(nq);
}

function delq(q){
	var nq = q * 1;
	var answer = confirm("Delete question "+(q+1)+"?");
	if (answer){
		var dqid = idarray[nq];
		if (tarray[nq] == mc) {//MC
			idarray.splice(nq,1);
			qarray.splice(nq,1);
			for(var i=1; i<=4; i++){
				carray[i-1].splice(nq,1);
			}
			answerarray.splice(nq,1);
		}else{
			idarray.splice(nq,1);
			qarray.splice(nq,1);
			for(var i=1; i<=2; i++){
				carray[i-1].splice(nq,1);
			}
			answerarray.splice(nq,1);
		}
		tarray.splice(nq,1);
		reasonarray.splice(nq,1);
		if(curq==q){
			updateQList(0);	
			updateQDetail(0);
		}else{
			updateQList(q);
			updateQDetail(q);
		}
		//now remove from db
		try {
			// Opera 8.0+, Firefox, Safari
			ajaxRequest = new XMLHttpRequest();
		} 
		catch (e) {
			// Internet Explorer Browsers
			try {
				ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) {
				try {
					ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e) {
					// Something went wrong
					alert("Your browser broke!");
					return false;
				}
			}
		}
		
		ajaxRequest.onreadystatechange = function(){
			if (ajaxRequest.readyState == 4) {
				updateStatus("Question "+(nq+1)+" deleted.");
			}
		}
		var queryString = "&id=" + dqid;
		ajaxRequest.open("GET", "index.php?option=com_ppquiz&task=delquest" + queryString, true);
		ajaxRequest.send(null);
	}
	else{
	}
}

function get_radio_value(){
	for (var i=0; i < document.orderform.music.length; i++){
	   if (document.orderform.music[i].checked){
	      var rad_val = document.orderform.music[i].value;
	   }
	}
}

function updateTitle(){
	var x=document.getElementById("ttl").value;
	document.getElementById("qtitle").innerHTML=x;
}

function edToolbar(obj) {
	var toolbar = "<img class=\"button\" src=\"ppquiz/bbeditor/images/bold.gif\" name=\"btnBold\" onClick=\"doAddTags('[b]','[/b]','" + obj + "')\">";
    toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/italic.gif\" name=\"btnItalic\" onClick=\"doAddTags('[i]','[/i]','" + obj + "')\">";
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/underline.gif\" name=\"btnUnderline\" onClick=\"doAddTags('[u]','[/u]','" + obj + "')\">";
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/link.gif\" name=\"btnLink\" onClick=\"doURL('" + obj + "')\">";
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/picture.gif\" name=\"btnPicture\" onClick=\"doImage('" + obj + "')\">";
	//toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/ordered.gif\" name=\"btnList\" onClick=\"doList('[LIST=1]','[/LIST]','" + obj + "')\">";
	//toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/unordered.gif\" name=\"btnList\" onClick=\"doList('[LIST]','[/LIST]','" + obj + "')\">";
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/br.gif\" name=\"btnBr\" onClick=\"doAddTags('[br]','','" + obj + "')\">"; 
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/ltgt.gif\" name=\"btnLtgt\" onClick=\"doAddTags('[lt]','[gt]','" + obj + "')\">"; 
	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/quote.gif\" name=\"btnQuote\" onClick=\"doAddTags('[quote]','[/quote]','" + obj + "')\">"; 
  	toolbar = toolbar + "<img class=\"button\" src=\"ppquiz/bbeditor/images/code.gif\" name=\"btnCode\" onClick=\"doAddTags('[code]','[/code]','" + obj + "')\">";
    toolbar = toolbar + "<br>";
	toolbar = toolbar + "";
	return toolbar;
}

function ltgt_replace(strValue){
	var lt=/</g; 
	var gt=/>/g; 
	var amp=/&/g; 
	var plus=/\+/g; 
	var quotes = /\"/g
	var newl = /\n/g
	str = new String(strValue);
	str = str.replace(lt, "[lt]");
	str = str.replace(amp, "[amp]");
	str = str.replace(gt, "[gt]");
	str = str.replace(newl, "[br]");
	str = str.replace(plus, "[plus]");
	str = str.replace(quotes,"[quote]");
	return str;
}

function gtlt_replace(strValue){
	str = new String(strValue);
	str = str.replace(/\[lt\]/g,"<");
	str = str.replace(/\[gt\]/g,">");
	str = str.replace(/\[plus\]/g,"+");
	str = str.replace(/\[quote\]/g,"\"");
	str = str.replace(/\[\/quote\]/g,"\"");
	str = str.replace(/\[br\]/g,"\n");
	return str;
}