/*
 *  Make remote server requests using Ajax methodology.
 */

function ServerRequest(uri, data, item)
{
	// build XMLHttpRequest object
	try {
		this.objHTTP = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e) {
		try {
			this.objHTTP = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (E) {
			this.objHTTP = false;
		}
	}
	if (!this.objHTTP && typeof XMLHttpRequest != 'undefined')
		this.objHTTP = new XMLHttpRequest();

	// send request to server
	if (this.objHTTP)
	{
		if (item)
			this.objUpdateItem = document.getElementById(item);
		else
			this.objUpdateItem = null;

		var parent = this;
		this.objHTTP.onreadystatechange = function() {
			if (parent.objHTTP.readyState == 4)
				if (parent.objHTTP.status == 200)
				{
					var response = parent.objHTTP.responseText;
					var message = null;
					var start = response.indexOf('<alert>');
					var end;

					if (start >= 0)
					{
						var end = response.indexOf('</alert>');
						if (end == -1)
							end = response.length;

						message = response.substring(start + 7, end);
						response = response.substring(0, start) + response.substring(end + 8);
					}

					if (parent.objUpdateItem)
						parent.objUpdateItem.innerHTML = response;
					if (message)
						alert(message);
				}
				else
					alert('An remote server error has prevented this function from completing.  Please contact support for assistance.');
		};

		if (data.length)
		{
			this.objHTTP.open('POST', uri, true);
			this.objHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		else
			this.objHTTP.open('GET', uri, true);
		this.objHTTP.send(data);

		this.failed = false;
	}
	else
		this.failed = true;
}