function __AJAX(showError)
{
	this.AJAX_showError = showError;
	this.initialize = initializeAJAX;
	this.internalCallback = AJAX_internalCallback;
	this.GET = AJAX_GETURL;
	this.POST = AJAX_POSTURL;
}

function initializeAJAX(){
	this.Request_Object = null;

	if(window.XMLHttpRequest)
	{
		try
		{
			this.AJAX_RequestObject = new XMLHttpRequest();
		}
		catch(e)
		{
			if(this.AJAX_showError)
			{
				alert('Failed to create XMLHttpRequest-Object!');
			}
			this.AJAX_RequestObject = false;
		}
	}
	else if(window.ActiveXObject)
	{
		try
		{
			this.AJAX_RequestObject = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch(e)
		{
			if(this.AJAX_showError)
			{
				alert('Failed to create XMLHttpRequest-ActiveX-Object!');
			}
			this.AJAX_RequestObject = false;
		}
	}
	else
	{
		if(this.AJAX_showError)
		{
			alert('Your browser does not support XMLHttpRequest-Objects.');
		}
		this.AJAX_RequestObject = false;
	}
}

function AJAX_internalCallback()
{
	if(this.AJAX_RequestObject && this.AJAX_RequestObject.readyState == 4)
	{
		if((this.AJAX_RequestObject.status == 0) || (this.AJAX_RequestObject.status == 200))
		{
			this.AJAX_Callback(this.AJAX_RequestObject.responseText, this.AJAX_RequestObject.responseXML);
		}
		else if(this.AJAX_showError)
		{
			alert('Error while retrieving XML data (Code '+AJAX_RequestObject.status+').');
		}
	}
}

function AJAX_GETURL(URL, Callback)
{
	this.initialize();

	if(this.AJAX_RequestObject)
	{
		this.AJAX_Callback = Callback;
		this.AJAX_RequestObject.open('GET', URL, false);
		try
		{
			this.AJAX_RequestObject.send('');
			this.internalCallback();
		}
		catch(e)
		{
			alert('Error while retrieving XML data.');
		}
	}
}


function AJAX_POSTURL(URL, Callback, params)
{
	this.initialize();

	var data = '';
	for(key in params)
	{
		if(data != '')
		{
			data += '&';
		}
		data += key+'='+encodeURIComponent(params[key]);
	}

	if(this.AJAX_RequestObject)
	{
		this.AJAX_Callback = Callback;
		this.AJAX_RequestObject.open('POST', URL, false);
		this.AJAX_RequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		try
		{
			this.AJAX_RequestObject.send(data);
			this.internalCallback();
		}
		catch(e)
		{
			alert('Error while retrieving XML data.');
		}
	}
}