function AJAX() {
	this.http = AJAX.CreateNewHTTPObject();
	this.url = '';
	this.xmlDocument = null;
	this.responseText = null;
}

AJAX.prototype.getAsynchronousRequest = function(url, callback) {
	this.url = url;
	this.http.open('GET', url, true); 
	this.http.setRequestHeader('Content-Type', 'text/plain');
	this.http.onreadystatechange = callback;
	this.http.send(' ');
}

AJAX.prototype.sendAsynchronousData = function(url, s, callback) {
	this.http.open('POST', url, true); 
	this.http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	this.http.onreadystatechange = callback;
	this.http.send(s);
}

AJAX.prototype.sendSynchronousData = function(url, s) {
	this.http.open('POST', url, false); 
	this.http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	this.http.send(s);
	this.xmlDocument = this.http.responseXML;
	this.responseText = this.http.responseText;
	return this.http.responseText;
}


AJAX.CreateNewHTTPObject = function() {
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} 
		catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

AJAX.GetTextContent = function(xmlElement) {
	if (navigator.userAgent.toLowerCase().indexOf('msie') > -1)
		return xmlElement.text;
	else
		return xmlElement.textContent;
}


AJAX.ConvertNodeToText = function(node) {
	if (node.nodeType == 3)
		return node.data;

	var s = '<' + node.nodeName;
	for (var i = 0; i < node.attributes.length; i++) {
		var n = node.attributes[i];
		s += ' ' + n.nodeName + '="' + n.nodeValue + '"';
	}

	if ((node.nodeName != 'pre') && (node.childNodes.length == 0))
		s += ' />';
	else {
		s += '>';
		for (var i = 0; i < node.childNodes.length; i++)
			s += AJAX.ConvertNodeToText(node.childNodes[i]);
		s += '</' + node.nodeName + '>';
	}

	return s;
}



AJAX.RetrieveURL = function(url) {
	var a = new AJAX();
	a.http.open('POST', url, false); 
	a.http.setRequestHeader('Content-Type', 'text/plain');
	a.http.send(' ');
	//alert(a.http.responseText);
	if ((a.http.readyState == 4) && (a.http.status == 200)) {
		return a.http.responseText;
	}
	return '';
}

AJAX.RetrieveURL2 = function(url) {
	var a = new AJAX();
	a.http.open('GET', url, false); 
	a.http.setRequestHeader('Content-Type', 'text/plain');
	a.http.send(' ');
	return '';
}

AJAX.RetrieveXML = function(url) {
	var a = new AJAX();
	a.http.open('GET', url, false); 
	a.http.setRequestHeader('Content-Type', 'text/plain');
	a.http.send(' ');

	if ((a.http.readyState == 4) && (a.http.status == 200)) {
		return a.http.responseXML;
	}
}