/**
 * AJ Library (Asynchronous Javascript)
 * 
 * @copyright (c) 2007 WallCann Pty Ltd
 * @author Michael Leaney <michael [/-at-/] wallcann.com>
 *
 */

var httprequests = 0;
function makeRequest(url, method, data) {
	if (!method) var method = 'get';
	if (!data) var data = '';
	var httpRequest;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/x-json');
			// See note below about this line
		}
	} else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
	
	httprequests++;
	
	working = document.createElement('span');
	working = document.body.appendChild(working);
	working.id = 'ajaxw';
	working.className = 'ajaxon';
	working.innerHTML = '<img src="js/aj/ajax.gif" /> Please wait while loading...';
	
	if (method == 'get') {
		httpRequest.open('GET', url, true);
	}	else {
		httpRequest.open('POST', url, true);
		httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}
	
	httpRequest.send(data);
}

function alertContents(httpRequest) {
	if (httpRequest.readyState == 4) {
		httprequests--;
		if (httprequests == 0) {
			var objs = document.getElementById('ajaxw');
			objs.parentNode.removeChild(objs);
		}
		if (httpRequest.status == 200) {
			eval(httpRequest.responseText);
		} else {
			alert('There was a problem with the request.');
		}
	}
}