<!--
	function AJAX()
	{
		this.parameters = [];
		this.returnType = 'xml';
		this.request = XML.HttpRequest();
		this.callback = null;
		
		this.addParameter = function(parameter, value)
		{
			this.parameters.push(parameter + "=" + encodeURI(value));		
		}
		
		this.setCallback = function(callback)
		{
			var self = this; // Fix loss-of-scope in inner function
			this.callback = callback;
			this.request.onreadystatechange = function() {
				if ( self.request.readyState == 4 ) // "Complete"
				{
					if ( self.request.status == 200 ) // "OK"
					{
						switch ( self.returnType )
						{
							case 'xml':
								callback(self.request.responseXML);
								break;
							case 'text':
								callback(self.request.responseText);
								break;
							case 'obj': default: 
								callback(self.request);
								break;
						}
					}
				}
				else
					alert("There was a problem retrieving the XML data:\n" + self.request.statusText);
			}
		}
		
		this.POST = function(URL)
		{
			var queryString = this.parameters.join("&");
			
			if ( this.callback )
				this.request.open("POST", URL, true);
			else
				this.request.open("POST", URL, false);
			
			this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.request.setRequestHeader("Content-length", queryString.length);
			this.request.setRequestHeader("Connection", "close");
			this.request.send(queryString);
			
			if ( !this.callback )
			{
				switch ( this.returnType )
				{
					case 'xml':
						return this.request.responseXML;
						break;
					case 'text':
						return this.request.responseText;
						break;
					case 'obj': default: 
						return this.request;
						break;
				}
			}
		}
		
		this.GET = function(URL)
		{
			var queryString = this.parameters.join("&");
			
			if ( this.callback )
				this.request.open("GET", URL+"?"+queryString, true);
			else
				this.request.open("GET", URL+"?"+queryString, false);
				
			if ( window.XMLHttpRequest ) // Native XMLHttpRequest object
			{
				if ( this.returnType == 'xml' && this.request.overrideMimeType )
					this.request.overrideMimeType('text/xml');

				this.request.send(null);
			}
			else if ( window.ActiveXObject ) // IE/Windows ActiveX version
				this.request.send();
			else
				alert("No XMLHttpRequest functionality enabled in web browser.");
				
			if ( !this.callback )
			{
				switch ( this.returnType )
				{
					case 'xml':
						return this.request.responseXML;
						break;
					case 'text':
						return this.request.responseText;
						break;
					case 'obj': default: 
						return this.request;
						break;
				}
			}
		}
		
		this.reset = function()
		{
			this.request.abort();
			this.parameters = [];
			this.request.onreadystatechange = null;
			this.returnType = 'xml';
		}
	}
//-->