/////////////////////////////////// ax Ajax Library Functions /////////////////////////////////

var jx_http = jx_getHTTPObject(); // We create the HTTP Object

//Create a xmlHttpRequest object - this is the constructor. 
function jx_getHTTPObject() {
	var xmlhttp;

	//Use IE's ActiveX items to load the file.
	if(typeof ActiveXObject != 'undefined') {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	//If ActiveX is not available, use the XMLHttpRequest of Firefox/Mozilla etc. to load the document.
	} else if (XMLHttpRequest) {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	} else {
		xmlhttp = false;
	}
	return xmlhttp;
}

//This function is called from the user's script. It will take a url and an optional callback function.
// Then it will read the url file, expecting a json string. Once the file is loaded, the script
// will pharse the json string using 'eval' and call the user defined callback function with this
// array as the argument.
//Arguments - 
// url - The url of the serverside script that is to be called. Append all the arguments to 
//   this urls as GET params - like get_data.php?id=5&car=benz
// callback - Name of the function that should be called once the data is ready. If a callback
//   function is not given, then the default function 'jx_processResults' will be used.
function jx_getData(url,callback) {
	if(!jx_http) return;

	jx_http.open("GET", url, true); 

	//Call a anonymos function when the state changes.
	jx_http.onreadystatechange = function () {
		if (jx_http.readyState == 4) { //Ready State will be 4 when the document is loaded.
			var result;
			if(jx_http.responseText) {
//				result = eval(jx_http.responseText); //Yes, I know I used eval - its JSON, stupid.
				result = jx_http.responseText; //Yes, I know I used eval - its JSON, stupid.
			} else {
				result = "";
			}

			if(callback) {
				callback(result); //Give the data to the user defined function.
			} else { //If there is no user defined function...
				//Call a predifined  function with the result.
				if(jx_processResults)
					jx_processResults(result);
			}
		}
	}
	jx_http.send(null);
}


