/****************************************************************
File: Ajax.js
Desc: Used to contain functions that are used for ajax processing.
		
		1. makePOSTRequest
		2. stateChanged
		3. sendData

****************************************************************/

	var http_request 	= false;
	var writeto_id 		= '';
	var append			= false;
	var func_to_run		= null;
	
/*****************************************************
Func: makePOSTRequest()
Desc: Create the HTTP request needed to send the data 
		to the server.
*****************************************************/

	function makePOSTRequest() 
	{
		http_request = false;
		if (window.XMLHttpRequest) // Mozilla, Safari,... 
		{
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) 
			{
				// set type accordingly to anticipated content type
				http_request.overrideMimeType('text/html');
			}
		} 
		else if (window.ActiveXObject) // IE 
		{
			try 
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) 
			{
				try 
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e) {}
			}
		}
		if (!http_request) 
		{
			alert('Cannot create XMLHTTP instance');
			http_request = null;
		}
	
	  return http_request;  
	}

/*****************************************************
Func: stateChanged()
Desc: If the request is successful, write the contents that
		are returned.
*****************************************************/

	function stateChanged() 
	{
		if (http_request.readyState == 4) 
		{
			if (http_request.status == 200) 
			{
				//alert(http_request.responseText);
				if (writeto_id != '')
				{
					result = http_request.responseText;
					if (append)
					{
						document.getElementById(writeto_id).innerHTML += result;
						append = false;
					}
					else
					{
						document.getElementById(writeto_id).innerHTML = result; 
					}
					writeto_id = '';
				}
				if (func_to_run != null)
				{
					eval(func_to_run+"();");
					func_to_run = null;
				}
			} 
			else 
			{
				alert('There was a problem with the request.');
			}
		}
	}

/*****************************************************
Func: sendData()
Desc: Create the header information and send the POST data.
*****************************************************/

	function sendData(file, str) 
	{
		http_request.onreadystatechange = stateChanged;
		http_request.open('POST', 'http://cs.millersville.edu/lib/js/ajax/' + file + '.php', true);
		http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		http_request.setRequestHeader('Content-length', str.length);
		http_request.setRequestHeader('Connection', 'close');
		http_request.send(str);
	}
