function createREQ() {
var req;
try {
	req = new XMLHttpRequest();
	} catch(err1) {
	    // zakładając, że IE6 lub starsza
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
      "MSXML2.XMLHTTP.5.0",
      "MSXML2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP",
      "Microsoft.XMLHTTP");
		// próbuje wszystkie wartości progId, aż jedna zadziała
		for (var i=0; i<XmlHttpVersions.length && !req; i++) 
		{
			try 
			{ 
				// próbuje stworzyć obiekt XMLHttpRequest
				req = new ActiveXObject(XmlHttpVersions[i]);
			} 
			catch (e) {}
		}
	}
	return req;
}

function requestGET(url, query, req) {
	myRand = parseInt(Math.random()*99999999);
	req.open("GET", url+'?'+query+'&rand='+myRand, true);
	req.send(null);
}

function requestPOST(url, query, req) {
	req.open("POST", url, true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(query);
}

function doCallback(callback, item, element) {
	eval(callback + '(item, element)');
}

function doAjax(url, query, callback, reqtype, getxml, element) {
	var myreq = createREQ();
	myreq.onreadystatechange = function() {
		if(myreq.readyState == 4) {
			if(myreq.status == 200) {
				var item = myreq.responseText;
				if(getxml == 1) {
					item = myreq.responseXML;
				}
				doCallback(callback, item, element);
			}
		} else {
			document.getElementById(element).innerHTML = '<font style="font-family: arial; font-size:11px; color:#000000">Proszę czekać...<font/>';
		}
	}
	if(reqtype == 'post') {
		requestPOST(url, query, myreq);
	} else {
		requestGET(url, query, myreq);
	}
}

function doAjax3(url, query, callback, reqtype, getxml, element) {
	var myreq = createREQ();
	myreq.onreadystatechange = function() {
		if(myreq.readyState == 4) {
			if(myreq.status == 200) {
				var item = myreq.responseText;
				if(getxml == 1) {
					item = myreq.responseXML;
				}
				doCallback(callback, item, element);
			}
		} else {
		document.getElementById(element).value = 'obliczam';	
		}
	}
	if(reqtype == 'post') {
		requestPOST(url, query, myreq);
	} else {
		requestGET(url, query, myreq);
	}
}




function cback(text,element) {
		document.getElementById(element).value = text;
}

function cback2(text,element) {
		document.getElementById(element).innerHTML = text;
		if(!text.match("LABEL_")) {
			document.getElementById(element+'_label').style.display="none";
		} else {
			document.getElementById(element+'_label').style.display="block";
		}
}

function calert(text,element) {
		alert(text);
		document.getElementById(element).innerHTML = text;
}