function AjaxObject101() {
	this.createRequestObject = function() {
		var ro;	//This will hold the request object -- either Microsoft.XMLHTTP or XMLHttpRequest
		try { ro = new XMLHttpRequest(); }
		catch (e) { ro = new ActiveXObject("Microsoft.XMLHTTP"); } //We'll at least try the IE6 and lower version	
		return ro;	//Now that we've taken care of cross-browser compatibility, this.http will represent the request object for this instance of AjaxObject
	}
	
	this.sndReq = function(action, url, data) { //This function will start the Ajax process, and is called manually by the user
		if (action.toUpperCase() == "POST") { //Post method
			this.http.open(action,url,true); //The URL includes any POST variables you want
			this.http.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //Encode the data
			this.http.onreadystatechange = this.handleResponse; //This is the callback function when the state of the http object changes
			this.http.send(data);	//Actually start the request process -- this will contact the URL via the action specified, and wait to call this.handleResponse
			}
		else {	//'get' method is default
			this.http.open(action,url + '?' + data,true); //The URL includes any GET variables you want
			this.http.onreadystatechange = this.handleResponse; //This is the callback function when the state of the http object changes
			this.http.send(null);	//Actually start the request process -- this will contact the URL via the action specified, and wait to call this.handleResponse
			}	
	}
	this.handleResponse = function() { //This function is called when this.http's state changes
		/*
		0: not initialized.
		1: connection established.
		2: request received.
		3: answer in process.
		4: finished.
		*/
		if ((me.http.readyState == 4) && (typeof me.func4Finished == 'function'))	{ me.func4Finished(me.http.responseText);}
		if ((me.http.readyState == 3) && (typeof me.func3Answer == 'function'))	{ me.func3Answer();}
		if ((me.http.readyState == 2) && (typeof me.func2Question == 'function'))	{ me.func2Question();}
		if ((me.http.readyState == 1) && (typeof me.func1Connected == 'function'))	{ me.func1Connected();}
		if ((me.http.readyState == 0) && (typeof me.func0NotInit == 'function'))	{ me.func0NotInit();}
	}
	
	var me = this;	//Unfortunately, this is necessary because this.http won't work in the callback function 'handleResponse' (we have to use me.http instead)
	this.http = this.createRequestObject(); //http holds the request object (ro), which is returned from the createRequestObject() function -- this is automatically run when you make a new AjaxObject()
	
	var func0NotInit = null;
	var func1Connected = null;
	var func2Question = null;
	var func3Answer = null;
	var func4Finished = null;
	}
