var XMLHttpRequestObject = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
	XMLHttpRequestObject = new XMLHttpRequest();
	if (XMLHttpRequestObject.overrideMimeType) {
		XMLHttpRequestObject.overrideMimeType('text/xml');
		// See note below about this line
	}
} else if (window.ActiveXObject) { // IE
	try {
		XMLHttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	}
}


function restart_process_span(){
	if(document.getElementById('process_span') != null){
		setTimeout("document.getElementById('process_span').innerHTML = '';", 5000);
	}
}


function getData(dataSource, divID) {
	new Ajax.Updater(divID,  dataSource, { method: 'get' });
}



function getProcessingData(dataSource, divID) {
	startProgress();
	new Ajax.Updater(divID, dataSource, { method: 'get', 
					 						onSuccess: function() {document.getElementById('progress_span').innerHTML = ""; }
									 }
					);
}

function resetDiv(divID) {
	document.getElementById(divID).innerHTML="";
}

function getTimedData(dataSource, divID, timeout) {
	var timeout = (timeout == null) ? 5 : timeout;
	new Ajax.Updater(divID, dataSource, { method: 'get' });
	timeout = (parseInt(timeout) * 1000);
	setTimeout("resetDiv('"+divID+"')",timeout);
}

function getProcessingPostData(dataSource, divID, formID) {
	
	if(XMLHttpRequestObject) {
		var obj_div = document.getElementById(divID);
		var params = "";
		var fieldKey = "";
		var fieldValue = "";
		var formObj = document.getElementById(formID);
		var formLength = formObj.elements.length;
		var i = 0;
		//obtain data from form
		for(i=0; i<formLength; i++) {
			fieldKey = formObj.elements[i].name;
			fieldValue = formObj.elements[i].value;
			fieldValue = encodeURI(fieldValue);
			if(typeof fieldKey != 'undefined'){
				if(formObj.elements[i].type == "checkbox") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} 
				else if (formObj.elements[i].type == "radio") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} else {
					params = params + "&" + fieldKey + "=" + fieldValue;
				}

			}
		}
		
		XMLHttpRequestObject.open("POST", dataSource, true);
		XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		XMLHttpRequestObject.setRequestHeader("Content-length", params.length);
		XMLHttpRequestObject.setRequestHeader("Connection", "close");
		XMLHttpRequestObject.onreadystatechange = function() {
			if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
				document.getElementById('progress_span').innerHTML = "";
				obj_div.innerHTML = XMLHttpRequestObject.responseText;
				obj_div = null;
			}
			else{
				//obj_div.innerHTML = "";
				document.getElementById('progress_span').innerHTML = "<img src='../images/process.gif' border='0' alt='processing' title='processing' />";
			}
		}
		XMLHttpRequestObject.send(params);
	}
}

function getPostDataA(dataSource, divID, formID) {
	if(XMLHttpRequestObject) {
		var obj = document.getElementById(divID);
		var params = "";
		var fieldKey = "";
		var fieldValue = "";
		var formObj = document.getElementById(formID);
		var formLength = formObj.elements.length;
		var i = 0;
		//obtain data from form
		for(i=0; i < formLength; i++) {
			fieldKey = formObj.elements[i].name;
			fieldValue = formObj.elements[i].value;
			fieldValue = encodeURI(fieldValue);
			if(typeof fieldKey != 'undefined'){
				if(formObj.elements[i].type == "checkbox") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} 
				else if (formObj.elements[i].type == "radio") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} 
				else {
					params = params + "&" + fieldKey + "=" + fieldValue;
				}

				if(formObj.elements[i].type == "submit") {
					formObj.elements[i].value = "processing";
				}
				//formObj.elements[i].disabled = true;
			}
		}
		XMLHttpRequestObject.open("POST", dataSource, true);
		XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		XMLHttpRequestObject.setRequestHeader("Content-length", params.length);
		XMLHttpRequestObject.setRequestHeader("Connection", "close");
		XMLHttpRequestObject.onreadystatechange = function() {
			if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
		//		document.getElementById('process_span').innerHTML = "";
				obj.innerHTML = XMLHttpRequestObject.responseText;
			}
			else{
				obj.innerHTML = "";
		//		document.getElementById('process_span').innerHTML = "Wait, processing..";
			}
		}
		XMLHttpRequestObject.send(params);
	}
}

function getPostData(dataSource, divID, formID) {
	if(XMLHttpRequestObject) {
		var obj = document.getElementById(divID);
		var params = "";
		var fieldKey = "";
		var fieldValue = "";
		var formObj = document.getElementById(formID);
		var formLength = formObj.elements.length;
		var i = 0;
		//obtain data from form
		for(i=0; i < formLength; i++) {
			fieldKey = formObj.elements[i].name;
			fieldValue = formObj.elements[i].value;
			fieldValue = encodeURI(fieldValue);
			if(typeof fieldKey != 'undefined'){
				if(formObj.elements[i].type == "checkbox") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} 
				else if (formObj.elements[i].type == "radio") {
					if(formObj.elements[i].checked) {
						params = params + "&" + fieldKey + "=" + fieldValue;
					}
				} 
				else {
					fieldValue = fieldValue.replace("&ldquo;", "'");
					fieldValue = fieldValue.replace("&rdquo;", "'");
					params = params + "&" + fieldKey + "=" + fieldValue;
				}

				if(formObj.elements[i].type == "submit") {
					formObj.elements[i].value = "processing";
				}
				formObj.elements[i].disabled = true;
			}
		}
		XMLHttpRequestObject.open("POST", dataSource, true);
		XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		XMLHttpRequestObject.setRequestHeader("Content-length", params.length);
		XMLHttpRequestObject.setRequestHeader("Connection", "close");
		XMLHttpRequestObject.onreadystatechange = function() {
			if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
		//		document.getElementById('process_span').innerHTML = "";
				obj.innerHTML = XMLHttpRequestObject.responseText;
			}
			else{
				obj.innerHTML = "";
		//		document.getElementById('process_span').innerHTML = "Wait, processing..";
			}
		}
		XMLHttpRequestObject.send(params);
	}
}

function queue_call(module_id, student_id) {
	AjaxQueue.setBatchSize(2);
	//set the visitor sesssion
	AjaxQueue.push('./ajax/set_visitor.php?student_id='+student_id, 'process_span');
	//load the module in
	AjaxQueue.push('./ajax/load_module.php?module_id='+module_id+'student_id='+student_id, 'module_container');
	AjaxQueue._processNext();
	restart_process_span();
}

function change_question(q_left) {
	// run the script to change the question number, the question and the answers 
	// targetted to question_holder

	getPostData('./modules/quiz_system/load_question.php', 'question_holder', 'answer_form');
	// set the new question number and next graphic
	var q = (q_left - 1);
	if(q == 0) {
		document.getElementById('question_next').innerHTML = "<a href='javascript:stop_clock();change_question(" + q + ");'><img src='./images/furniture/quiz_finish_quiz.jpg' border='0'/></a>";
		document.getElementById('q_num_box').innerHTML =  q;
	} else if(q < 0) {
		document.getElementById('q_num_box').innerHTML = "-";
		document.getElementById('question_next').innerHTML = "";
	} else {
		document.getElementById('q_num_box').innerHTML =  q;
		document.getElementById('question_next').innerHTML = "<a href='javascript:change_question(" + q + ");'><img src='./images/furniture/quiz_next_question.jpg' border='0' /></a>";
	}
}