function createREQ() {
var req;
try {
	req = new XMLHttpRequest();
	} catch(err1) {
	    // zakadajc, 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");
		// prbuje wszystkie wartoci progId, a jedna zadziaa
		for (var i=0; i<XmlHttpVersions.length && !req; i++) 
		{
			try 
			{ 
				// prbuje 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 = '<DIV style=\"vertical-align: middle;\"><IMG SRC=\"./images/ajax-loader.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"\"></DIV>';
		}
	}
	if(reqtype == 'post') {
		requestPOST(url, query, myreq);
	} else {
		requestGET(url, query, myreq);
	}
}

function doAjaxO(url, query, callback, reqtype, getxml, element) {
	var myreq = createREQ();
	myreq.onreadystatechange = function() {
		if(myreq.readyState == 4) {
			if((myreq.status == 200) ||(myreq.status == 0)) {
				var item = myreq.responseText;
				if(getxml == 1) {
					item = myreq.responseXML;
				}
				doCallback(callback, item, element);
			}
		} else {
			opener.document.getElementById(element).innerHTML = '<DIV style=\"vertical-align: middle;\"><IMG SRC=\"./images/ajax-loader.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"\"></DIV>';
		}
	}
	if(reqtype == 'post') {
		requestPOST(url, query, myreq);
	} else {
		requestGET(url, query, myreq);
	}
}

function doAjax2(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 {
			//opener.document.getElementById(element).innerHTML = '<blink>czekaj...</blink>';
		}
	}
	if(reqtype == 'post') {
		requestPOST(url, query, myreq);
	} else {
		requestGET(url, query, myreq);
	}
}

//czesc do keszowalnego ajaxa (peop_suggest)

var wait_text = '<DIV style=\"vertical-align: middle;\"><IMG SRC=\"./images/ajax-loader.gif\" WIDTH=\"16\" HEIGHT=\"16\" BORDER=\"0\" ALT=\"\"></DIV>';
var req_cache=Array();
function doAjax_cache(myreq) {	
	
	try {
		if (req_cache.length > 0) {
			if ((myreq.readyState == 4 ||myreq.readyState == 0) && req_cache.length > 0) {
				cache=req_cache.shift();
				split=cache.split('<||>');
							
				url=split[0]; 
				query=split[1];
				callback=split[2]; 
				reqtype=split[3];
				getxml=split[4];
				element=split[5];
				
				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 = wait_text;
					}
				}
				if(reqtype == 'post') {
					requestPOST(url, query, myreq);
				} else {
					requestGET(url, query, myreq);
				}
			} else {
				xt=setTimeout("doAjax()", 200);
			}
		}
	} catch (e) {
		alert("Nie mog poczy si z serwerem:\n" + e.toString());
	} 
}

function process(url, query, callback, reqtype, getxml, element) {
	var mreq = createREQ();
	if (mreq) {
		document.getElementById(element).innerHTML=wait_text;
		req_cache.push(url+'<||>'+query+'<||>'+callback+'<||>'+reqtype+'<||>'+getxml+'<||>'+element);
		doAjax_cache(mreq);
	}
}
//END czesc do keszowalnego ajaxa (peop_suggest)



function cback(text,element) {
		document.getElementById(element).innerHTML = 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;
}

