
var iBusy = 0;

function ajax(parameters) {
	var myObj = eval(parameters);

	if(!myObj.url)
		alert('Missing URL');

	if(!myObj.method)
		myObj.method="post";

	if(!myObj.postBody)
		myObj.postBody="";

	if(!myObj.fillDiv)
		myObj.fillDiv="";

	if(!myObj.onSucess)
		myObj.onSucess=defaultSucess;

	if(!myObj.onFailure)
		myObj.onFailure=defaultFailure;

	if(!myObj.showBusy)
		myObj.showBusy=false;

	if(!myObj.busyDiv)
		myObj.busyDiv="";

	var req = createRequest();
	req.onreadystatechange = function() {returnFunction(req,parameters)};

	if(myObj.method == "get") {
		req.open("GET", myObj.url, true);
		req.send(null);
	} else {
		req.open("POST", myObj.url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
		req.setRequestHeader('Referer', window.document.location);
		req.send(myObj.postBody);
	}

	if(myObj.busyDiv != "") {
		$(myObj.busyDiv).style.display = 'block';
		}

	if (myObj.showBusy == true) {
		iBusy++;
		$('ajaxBusy').style.display = 'block';
	}
}

function returnFunction(req,parameters) {
	var myObj = eval(parameters);

	if (req.readyState == 4) {
		if (myObj.busyDiv != "") {
			$(myObj.busyDiv).style.display = 'none';
		}

		if (myObj.showBusy == true) {
			iBusy--;
			if(iBusy < 1) {
				$('ajaxBusy').style.display = 'none';
			}
		}

		if (req.status == 200) {
			if(myObj.fillDiv != "") {
				$(myObj.fillDiv).innerHTML = req.responseText;
			} else {
				myObj.onSucess(req);
			}
		} else {
			myObj.onFailure(req);
		}
	}
}

function defaultSucess(req) {
	// Empty. There are times you don't want to notify the user of completion.
}

function defaultFailure(req) {
	// Empty. There are times you don't want to notify the user of completion.
}

function createRequest() {
	var request = null;
	try {
		request = new XMLHttpRequest();
	}
	catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (failed) {
				request = null;
			}
		}
	}
	if (request == null) {
		alert("Error creating request object!");
	} else {
		return request;
	}
}

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') {
			element = document.getElementById(element);
		}
		if (arguments.length == 1) {
			return element;
		}
		elements.push(element);
	}
	return elements;
}