function createAjaxObj()  {
	var httprequest = false;
	if (window.XMLHttpRequest)  { 		// if Mozilla, Safari etc
		httprequest = new XMLHttpRequest();
		if (httprequest.overrideMimeType)
			httprequest.overrideMimeType('text/xml');
	}  else if (window.ActiveXObject)  {		// if IE
		try {
			httprequest=new ActiveXObject("Msxml2.XMLHTTP");
		}  catch (error)  {
			try  {
				httprequest = new ActiveXObject("Microsoft.XMLHTTP");
			}  catch (error) { }
		}
	}
	return httprequest;
}

function do_xhr(url, params, callback)  {
	var url_params = url + '?' + params;
	var request = createAjaxObj();
	request.open('GET', url_params, true);
	request.onreadystatechange = function()  {
		if (request.readyState == 4)  {
			var text_back = request.responseText;
			if (request.status && /200|304/.test(request.status))
				callback(text_back);
			else
				callback("failed");
		}
	}
	request.setRequestHeader('If-Modified-Since',	'Wed, 05 Apr 2006 00:00:00 GMT');
	request.send(null);
}
