function AJAX () {}

AJAX.RequestArray = new Array ();
AJAX.debug = true;

function AJAX_RequestObject (req, available) {
	this.req = req;
	this.available = available;
}

AJAX.createReq = function () {
	var req = null;

	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch (e) {
			req = null;
		}
	} else if (window.ActiveXObject) {
		try {
			req = new ActiveXObject ('Msxml2.XMLHTTP');
		} catch (e) {
			try {
				req = new ActiveXObject ('Microsoft.XMLHTTP');
			} catch (e) {
				req = null;
			}
		}
	}

	if (AJAX.debug && !req) {
		alert ("XMLHttpRequest initialisation failed");
	}

	return req;
}

AJAX.getAvailableReq = function () {
	var ra = AJAX.RequestArray;
	for (var i in ra) {
		if (ra[i].available) {
			ra[i].available = false;
			return ra[i];
		}
	}

	ra[ra.length] = new AJAX_RequestObject (AJAX.createReq(), false);
	return ra[ra.length-1];
}

AJAX.load = function (url, handler) {
	var reqobj = AJAX.getAvailableReq ();
	var req = reqobj.req;

	req.open ('get', url);
	req.onreadystatechange = function () {
		if (req.readyState == 4) {
			if (req.status == 0 || req.status == 200) {
				handler (req.responseText);
			} else if (AJAX.debug) {
				alert ("error["+req.status+"] loading '"+url+"'");
			}
			reqobj.available = true;
		}
	}
	req.send (null);
}
