function ajax_init()
{
	var request; 			
	var msxmlhttp = new Array(
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');
		
	for (var i = 0; i < msxmlhttp.length; i++) 
	{
		try 
		{
			request = new ActiveXObject(msxmlhttp[i]);
		} 
		catch (e) 
		{
			request = null;
		}
	}
 			
	if(!request && typeof XMLHttpRequest != "undefined")
	{
		request = new XMLHttpRequest();
	}
	
	return request;
}



function ajax_request(callback, type, url, post)
{
	request = ajax_init();
	
	if (!request)
	{
		return false;
	}
	
	request.open(type, url, true);

	if (type == 'POST') 
	{
		request.setRequestHeader('Method', 'POST ' + url + ' HTTP/1.1');
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}

	request.onreadystatechange = function() { ajax_handler(request, callback); }
	request.send(post);

	return true;
}



function ajax_handler(request, callback)
{
	if (request.readyState != 4)
	{
		return;
	}	

	if (request.status == 200)
	{
		callback(request.responseText);
	}
	else
	{
		callback('Ajax HTTP Error: ' + status);
	}
}