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

Example Ajax call:
AjaxCall("[GET | POST | HEAD]",URL, FunctionToReturnTo, IsAsynchronous);

I think POST should always be used (safer), and it should always be asynchronous.

Notes:
I was doing what this article says to try and get post working
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

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


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

Parsing XML in JavaScript:

function AjaxGetUser(ID)
{
	AjaxCall("POST","users.php","GetUser=1&UserID=" + ID,"AfterGetUser",true);
}


function AfterGetUser(xml, text)
{

	<files>
		<file>cat.html</file>
		<file>dog.html</file>
		<file>bird.html</file>
	</files>

	alert(xml.getElementsByTagName("files").length);
	alert(xml.getElementsByTagName("files")[0].childNodes.length);

	for (i = 0; i < xml.getElementsByTagName("files")[0].childNodes.length; i++)
	{
		alert(i + ": " + xml.getElementsByTagName("files")[0].childNodes[i].childNodes[0].nodeValue);
	}

	alert("User length: " + xml.getElementsByTagName("User").length);
	alert("ContactInfo length: " + xml.getElementsByTagName("ContactInfo").length);

	alert("user_id: " + xml.getElementsByTagName("ContactInfo")[0].childNodes[0].childNodes[0].nodeValue);

	alert("xml: " + xml);
	alert("text: " + text);


	for (i = 0; i < xml.getElementsByTagName("User")[0].childNodes.length; i++)
	{
		alert(i + ": " + xml.getElementsByTagName("User")[0].childNodes[i].childNodes[0].nodeValue);
	}
}
******************** */


var xhr;

function AjaxSubmit(FunctionToReturnTo)
{
	var OutXML = "";
	var OutText = "";

	if (xhr.readyState == 4)
	{
		if (xhr.status == 200)
		{
			OutXML = xhr.responseXML;
			OutText = xhr.responseText;
		}
	}

	eval(FunctionToReturnTo + "(OutXML,OutText)");
}

function AjaxCall(RequestMethod,URL,Parameters,FunctionToReturnTo,IsAsynchronous)
{
	//RequestMethod can be "GET", "POST", or "HEAD"

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

	if (xhr)
	{
		//xhr.overrideMimeType('text/xml');		This breaks IE

		xhr.onreadystatechange =	function()
						{
							var OutXML = "";
							var OutText = "";

							if(xhr.readyState == 4 && xhr.status == 200)
							{
								OutXML = xhr.responseXML;
								OutText = xhr.responseText;
								eval(FunctionToReturnTo + "(OutXML,OutText)");
							}
						};

		if (RequestMethod == "POST")
		{
			xhr.open(RequestMethod, URL, IsAsynchronous);

			//Send the proper header information along with the request
			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xhr.setRequestHeader("Content-length", Parameters.length);
			xhr.setRequestHeader("Connection", "close");

			xhr.send(Parameters);
		}
		else if (RequestMethod == "GET")
		{
			xhr.open(RequestMethod,URL + "?" + Parameters,IsAsynchronous);
			xhr.send(null);
		}
	}
	else
		alert("This browser does not support AJAX.  We recommend downloading the newest version of FireFox for free.");
}
