function ajax(url, method, postXML, callback)
{
	var xmlhttp = false;

	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) {
		try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e) { xmlhttp = false; }
	}

	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
		xmlhttp = new XMLHttpRequest();

	xmlhttp.open(method, url, true);

	xmlhttp.onreadystatechange = function()
	{
		if (xmlhttp.readyState == 4)
		{
			var xmlDoc = false;

			try { xmlDoc = new ActiveXObject("Msxml2.XMLDOM"); }
			catch (e) {
				try { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); }
				catch (e) { xmlDoc = false; }
			}

			if (!xmlDoc && typeof DOMParser != 'undefined')
			{
				xmlDoc = xmlhttp.responseXML;
			}

			else
			{
				xmlDoc.async="false";
				xmlDoc.loadXML(xmlhttp.responseText);
				xmlDoc = xmlDoc.documentElement;
			}

			callback(xmlDoc);
		}
	}

	xmlhttp.send(postXML);
}