function QuickformAjax(l) {
	var request = false;
	var listener = l;
	this.createRequest = createRequest;
	this.makePostRequest = makePostRequest;
	this.makeRequest = makeRequest;
	this.defaultListener = defaultListener;
	this.getRequest = getRequest;
	
	function getRequest() {
		return request;	
	}
	
	function createRequest(mimetype) {
		// Mozilla, Safari ...
		if (window.XMLHttpRequest) {
			request = new XMLHttpRequest();
			if (request.overrideMimeType) {
				request.overrideMimeType(mimetype);
			}
		} else if (window.ActiveXObject) {
			// Internet Explorer.
			try {
				request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {}
			}
		}
	}
	
	function makePostRequest(url, parameters) {
		request = false;
		// Create request.
		createRequest("text/html");
		// Make sure it's initialized.
		if (!request) {
			alert("Could not create an XMLHTTP instance");
			return false;	
		}
		
		request.onreadystatechange = (listener == null) ? defaultListener : listener;
  		request.open('POST', url, true);
  		request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  		request.setRequestHeader("Content-length", parameters.length);
  		request.setRequestHeader("Connection", "close");
  		request.send(parameters);
	}
	
	function makeRequest(url, parameters) {
		request = false;
		// Create request.
		createRequest("text/xml");
		// Make sure it's initialized.
		if (!request) {
			alert("Could not create an XMLHTTP instance");
			return false;	
		}
		
		request.onreadystatechange = (listener == null) ? defaultListener : listener;
		request.open('GET', url + parameters, true);
		request.send(null);
	}
	
	function defaultListener() {
		if (request.readyState == 4) {
			if (request.status == 200) {
				alert(request.responseText, "Ajax");
			} else {
				alert("There was a problem with the request", "Ajax");
			}
		}	
	}
	
}