var xmlreqs = new Array();

function CXMLReq(freed) {
	this.freed = freed;
	this.xmlhttp = false;

	try{
		if(window.XMLHttpRequest)
			this.xmlhttp = new XMLHttpRequest();

	 	if(window.ActiveXObject){
			var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
			for (var c=0; c<prefixes.length; c++) {
				try {
					this.xmlhttp = new ActiveXObject(prefixes[c] + ".XmlHttp");
				} catch (ex) {};
			}
		}
	}catch (ex) {}
}

function envia_dados(site, string, local){
	document.getElementById(local).style.cursor = "wait";
	
	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) { pos = i; break; }
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].xmlhttp.open("POST", site + string, true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos, local); }
		}
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-length", string.length);
		xmlreqs[pos].xmlhttp.setRequestHeader("Connection", "close");
		xmlreqs[pos].xmlhttp.send(string);
	}
	
	return true;
}

function xmlhttpChange(pos, local) {
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
			var texto = xmlreqs[pos].xmlhttp.responseText;
			document.getElementById(local).style.cursor = "default";
			document.getElementById(local).innerHTML = texto;
		} else {
			alert('Erro');
		}
		xmlreqs[pos].freed = 1;
	}
}
