var isIE = false;
var requests = new Array();
function getRequestObject() {
	if (requests.length < 1) {
		//log("new request " + typeof XMLHttpRequest);
		if (window.XMLHttpRequest && !(window.ActiveXObject)) {
			try {
				return new XMLHttpRequest();
			} catch (e) {log("to nie jest FF");}
		}
		isIE = true;
		//log("IE");
		// Internet Explorer
		try {
			return new ActiveXObject("Msxml2.XMLHTTP.6.0");
		} catch(e) {}
		try {
			return new ActiveXObject("Msxml2.XMLHTTP.3.0");
		} catch(e) {}
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {}
		try {
			return new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {}
		//log("This browser does not support XMLHttpRequest." );
		return undefined;
	} else {
		//log("reuse request");
		return requests.pop();
	}	
}
function releaseRequestObject(request) {
	//log("releasing request");
	requests.push(request);
}
function sendRequest(callback, url, id) {
	var request = getRequestObject();
	if (request != undefined) {
		var d = new Date();
		url = url + "t=" + d.getTime();
		if (isIE) {
			request.open("GET", url, true);
			if (id != null) {
				request.onreadystatechange = function() { callback(request, id);};
			} else {
				request.onreadystatechange = function() { callback(request);};
			}
		} else {
			if (id != null) {
				request.onload = function() { callback(request, id);};
			} else {
				request.onload = function() { callback(request);};
			}
			request.open("GET", url, true);
		}
		request.send(null);
		//log("request sent " + typeof request + ", " + isIE);
	} else {
		//log("nic nie wysyłamy bo się nie da");
	}
}
