var xmlreqs = new Array();

function CXMLReq(freed) {
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function xmlreqGET(url,target) {
	//alert(url+" -> "+target);
	document.getElementById(target).innerHTML = " <span class='systemMessage'>Loading data... <img src='/imgs/loading.gif' border='0'></span>";
	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("GET",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos,target); }
		}
		if (window.XMLHttpRequest) {
			xmlreqs[pos].xmlhttp.send(null);
		} else if (window.ActiveXObject) {
			xmlreqs[pos].xmlhttp.send();
		}
	}
}

function xmlreqPOST(url,data,target) {
	var myData = "istance="+data[0]+"&content="+escape(data[1])+"&module="+data[2];
	document.getElementById(target).innerHTML = "<ul class=\"modList\"><li class=\"no\">Sto inviando i dati <span class=\"salvando\">Salvo</span></li></ul>";
	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",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos,target); }
		}
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-length", myData.length);
		xmlreqs[pos].xmlhttp.setRequestHeader("Connection", "close");
		xmlreqs[pos].xmlhttp.send(myData);
	}
}

function xmlhttpChange(pos,target) {
	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) {	
			document.getElementById(target).innerHTML = xmlreqs[pos].xmlhttp.responseText;
			//reShapeMenu(target);
			return true;
		} else {
			document.getElementById(target).innerHTML=" <span class='systemMessage'>DPU external loader Error:"+ req.status + "<br>Http pipe status: " +req.statusText+"</span>";
		}
		xmlreqs[pos].freed = 1;
	}
}
