
/*
* THIS FUNCTION NEVER GETS CALLED IN FOCUS, IS IT DEPRECATED? -Ken
* 
* Checks the Key that was sent, if 13 (enter) submit a request
function keyCheck(e, req, studentid, loindex){
	if(e.keyCode == '13'){
		SendXMLRequest(req, "ajaxCourseList&student_id="+studentid+"&LO_index="+loindex, 'singlePush');
	}
	return false;
}
*/


/**
 * Method to be used globally to check if
 * the submitted request was an enter or keystroke
 */
var use_submit = {
	'active': 0,
	'check': function(e){
		if(e.keyCode == '13'){
			this.active = 1;
		}
	},
	'get': function(){
		return this.active;
	}
};


var finished = true;
var waiting = false;
function SendXMLRequest(formname,extra,callbackFunc)
{
	if(finished)
	{
		finished = false;
		if ( typeof SendXMLRequest.position == 'undefined' )
		{
			SendXMLRequest.position = jQuery('#XMLHttpRequestResultPosition').position();
		}
		
		if(formname == 'student_add_form')
		{
			if(jQuery("#inputvalues\\[ADDRESS\\]\\[ADDRESS\\]").attr('disabled') == true)
			{
				return;
			}
			jQuery('#XMLHttpRequestResult').css('display', 'block');
			jQuery('#XMLHttpRequestResult').css('width', '15px');
			jQuery('#XMLHttpRequestResult').css('top', '-11px');
			jQuery('#XMLHttpRequestResult').html('<IMG SRC=assets/spinning.gif>');
			jQuery('#XMLHttpRequestResultPosition').append(jQuery('#XMLHttpRequestResult'));
		}
		else
		{
			jQuery('#XMLHttpRequestResult').css('display', 'block');
			jQuery('#XMLHttpRequestResult').css('left', SendXMLRequest.position.left+'px');
			jQuery('#XMLHttpRequestResult').css('top', (SendXMLRequest.position.top+10)+'px');
			jQuery('#XMLHttpRequestResult').html('<IMG SRC=assets/spinning.gif>');
			jQuery('#Page_Content').append(jQuery('#XMLHttpRequestResult'));		
		}

		if(window.XMLHttpRequest)
		{
			connection = new XMLHttpRequest();
		}
		else if(window.ActiveXObject)
		{
			try
			{
				connection = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try
				{
					connection = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					connection = false;
				}
			}
		}

		if(!connection)
			alert('AJAX connection could not be made.');

		connection.onreadystatechange = function(){
			var rData = '';
			rData = processRequest();

			if(connection.readyState == 4 && connection.status == 200){
				if(callbackFunc != null) eval(callbackFunc+"(rData)");
			}
		};

		url = "Modules.php?modname=" + getRequestVar('modname') + "&_FOCUS_PDF=true&modfunc=" + extra + '&' + (new Date()).getTime();
			
		elems = document.forms[formname].elements;
		for(elemindex = 0; elemindex<elems.length; elemindex++)
		{
			elem = document.forms[formname].elements[elemindex];
			
			if(elemindex == 0 && formname == 'student_add_form')
				jQuery('#XMLHttpRequestResult').css('width', '500px');		
			
			if(elem.name && elem.value && elem.value.length>0 &&
				elem.name.substring(0,16)!="student_add_form")
				url = url + "&" + elem.name + "=" + urlencode(elem.value);
			else if(elem.name &&
				elem.options &&
				elem.options.length>elem.selectedIndex &&
				elem.selectedIndex>=0 &&
				elem.options[elem.selectedIndex].value.length>0 &&
				elem.name.substring(0,16)!="student_add_form")
				url = url + "&" + elem.name + "=" + urlencode(elem.options.length>elem.selectedIndex && elem.selectedIndex>=0?elem.options[elem.selectedIndex].value:'');
		}
		connection.open("GET",url,true);
		connection.send(null);
	}
	else if(!waiting)
	{
		SendXMLRequestForm = formname;
		SendXMLRequestExtra = extra;
		waiting = true;
		window.setTimeout("setWaitingFalse()",2010);
		window.setTimeout('SendXMLRequest(SendXMLRequestForm,SendXMLRequestExtra)',2000);
	}
}

function processRequest()
{
	// LOADED && ACCEPTED
	if(connection.readyState == 4 && connection.status == 200)
	{
		XMLResponse = connection.responseXML;
		if(true || XMLResponse.length>0)
		{
			//document.getElementById("XMLHttpRequestResult").style.visibility = "visible";
			var columns_list = XMLResponse.getElementsByTagName("xml");
			columns_list = columns_list[0].getElementsByTagName("columns");
			columns_list = columns_list[0].getElementsByTagName('C');

			var results_list = XMLResponse.getElementsByTagName("results");
			results_list = results_list[0].getElementsByTagName("result");

			var variables_list = XMLResponse.getElementsByTagName("variables");
			variables_list = variables_list[0].getElementsByTagName("V");

			var link = XMLResponse.getElementsByTagName("link")[0].firstChild.data;
			var this_link = '';
			var this_link_vars = '';
			var val;
			var single_link = '';

			if(results_list.length>0 && results_list.length<100)
			{
				var table = '<TABLE style="border:solid;cellspacing:0;">';
				table = table + '<TR bgcolor=#3366FF style="background-color:#3366FF;color:white;">';
				for(i=0;i<columns_list.length;i++)
				{
					if(columns_list[i].firstChild.data!='~')
					{
						table = table + '<TD>';
						table = table + columns_list[i].firstChild.data;
						table = table + '</TD>';
					}
				}
				table = table + '</TR>';

				for(o=0;o<results_list.length;o++)
				{
					if(link && link.substring(0,1)!='_')
					{
						this_link = 'onclick="document.location.href=\''+unescape(link);
						if(variables_list.length>0)
						{
							for(i=0;i<variables_list.length;i++)
							{
								col = variables_list[i].getAttribute('col');
								this_link = this_link + '&' + variables_list[i].firstChild.data + '=' + results_list[o].getElementsByTagName('C'+col)[0].firstChild.data;
							}
						}
						//this_link = this_link + '\';"';
						this_link = this_link + '\';this.onclick=\'\'"';
					}
					else
					{
						this_link = 'onclick="'+link.substring(1)+'(';
						this_link_vars = '';
						if(variables_list.length>0)
						{
							for(i=0;i<variables_list.length;i++)
							{
								col = variables_list[i].getAttribute('col');
								this_link_vars = this_link_vars + ",\'" + results_list[o].getElementsByTagName('C'+col)[0].firstChild.data + "\'";
							}
						}
						//this_link = this_link + this_link_vars.substring(1) + ');"';
						this_link = this_link + this_link_vars.substring(1) + ');this.onclick=\'\'"';
					}

					if(results_list.length == 1 && use_submit.get() == 1){
						var link_url = this_link.substring(9, this_link.length-2);
						eval(link_url);
					}

					table = table + '<TR '+this_link+' onmouseover="this.style.cssText=\'cursor:pointer;background-color:#3366FF;color:#FFFFFF;\'" onmouseout="this.style.cssText=\'\'">';
					for(i=0;i<columns_list.length;i++)
					{
						if(columns_list[i].firstChild.data!='~')
						{
							table = table + '<TD>';
							val = results_list[o].getElementsByTagName('C'+(i+1))[0].firstChild.data;
							if(val!="=null=")
								table = table + val;
							table = table + '</TD>';
						}
					}
					table = table + '</TR>';
				}
				table = table + '</TABLE>';
			}
			else
				table = '';
			document.getElementById("XMLHttpRequestResult").innerHTML = table;
			finished = true;

			return results_list;
		}
		else
			finished = true;
	}
}

function getRequestVar(variable)
{
	var request = window.location.search.substring(1);
	var vars = request.split("&");
	for(var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if(pair[0] == variable)
			return pair[1];
	}
	return false;
}

function urlencode(variable)
{
	return escape(variable).replace("\+",'%2B').replace("\"",'%22').replace("\'", '%27').replace("\/",'%2F');
}

function setWaitingFalse()
{
	waiting = false;
}

/**
 * Controls a Single Result Return
 * if one result, go to the link
 */
function singlePush(elem){

	if(!elem || elem.length > 1) return false;

	// if we only have one result, we only add it instead of listing it in a tableset
	if(elem.length == 1){

		var results_list = XMLResponse.getElementsByTagName("results");
		results_list = results_list[0].getElementsByTagName("result");

		var variables_list = XMLResponse.getElementsByTagName("variables");
		variables_list = variables_list[0].getElementsByTagName("V");

		var link = XMLResponse.getElementsByTagName("link")[0].firstChild.data;

		this_link = unescape(link);

		for(var i=0; i<variables_list.length; i++){
			col = variables_list[i].getAttribute('col');
			this_link = this_link + '&' + variables_list[i].firstChild.data + '=' + results_list[0].getElementsByTagName('C'+col)[0].firstChild.data;
		}

		single_link = this_link;
		document.location.href = this_link;

	}
}

