	
function ajaxObject(layer, url) { // This is the object constructor
	var that=this; // A workaround for some javascript idiosyncrocies
	var ajaxUpdating = false; // Set to true if this object is already working on a request
	this.callback = function() {} // A post-processing call -- a stub you overwrite.
	
	this.update = function(passData) { // Initiates the server call.
		if (ajaxUpdating==true) { return false; } // Abort if we're already processing a call.
		ajaxUpdating=true; // Set the ajaxUpdating flag.
		var AJAX = null; // Initialize the AJAX variable.
		if (window.XMLHttpRequest) { // Are we working with mozilla?
			AJAX=new XMLHttpRequest(); // Yes -- this is mozilla.
		} else { // Not Mozilla, must be IE
			AJAX=new ActiveXObject("Microsoft.XMLHTTP"); // Wheee, ActiveX, how do we format c: again?
		} // End setup Ajax.
		if (AJAX==null) { // If we couldn't initialize Ajax...
			alert("Your browser doesn't support AJAX."); // Sorry msg. 
			return false // Return false (WARNING - SAME AS ALREADY PROCESSING!)
		} else {
			AJAX.onreadystatechange = function() { // When the browser has the request info..
			if (AJAX.readyState==4 || AJAX.readyState=="complete") { // see if the complete flag is set.
			ajaxLayerID.innerHTML=AJAX.responseText; // It is, so put the new data in the object's layer
			delete AJAX; // delete the AJAX object since it's done.
			ajaxUpdating=false; // Set the ajaxUpdating flag to false so we can do a new request
			that.callback(); // Call the post-processing function.
			} // End Ajax readystate check.
		} // End create post-process fucntion block.
		var ajaxTimestamp = new Date(); // Get a new date (this will make the url unique)
		var ajaxUri=ajaxUrlCall+'?'+passData+'&timestamp='+(ajaxTimestamp*1); // Append date to url (so the browser doesn't cache the call)
		AJAX.open("GET", ajaxUri, false); // Open the url this object was set-up with.
		AJAX.send(null); // Send the request.
		return true; // Everything went a-ok.
		} // End Ajax setup aok if/else block 
	}
	
	// This area set up on constructor calls.
	var ajaxLayerID = document.getElementById(layer); // Remember the layer associated with this object.
	var ajaxUrlCall = url;
}


