var iBusy = -10;
document.write("<div id='ajaxBusy' style='display:none; border:3px solid #000099; position:absolute; top:90; left:200; background-color:#0000FF; color:#FFFFFF; padding:6px; font-weight:bold;'>&nbsp;&nbsp;&nbsp;Loading . . .&nbsp;&nbsp;&nbsp; Please wait&nbsp;&nbsp;&nbsp;</div>");

function ajax(parameters) {
	var myObj = eval(parameters);
	
	if(!myObj.url) 
		alert('Missing URL');
	
	if(!myObj.method) 
		myObj.method="post";
	
	if(!myObj.postBody) 
		myObj.postBody="y=y";

	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=UTF-8');
		req.setRequestHeader('Referer', window.document.location); 
		req.send(myObj.postBody);
		}

	if(myObj.busyDiv != "") {
		$(myObj.busyDiv).style.display = 'block';
		}

	if (myObj.showBusy == true) {
		iBusy++;
/*		var iXMid=document.body.clientWidth/2
		var iYMid=document.body.clientHeight/2
		$('ajaxBusy').style.top = iYMid;
		$('ajaxBusy').style.right = iXMid;
*/
		$('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;
}