var livello;
var xmlreqs = new Array();

var queryString;
function setQueryString(p1){
    queryString = "";
    var frm = document.forms[p1];
    var numberElements =  frm.elements.length;
    for(var i = 0; i < numberElements; i++)  {
		$ok = 0;
		if(!frm.elements[i].name.indexOf("sel")) {
			if(frm.elements[i].checked === true) {
				$ok = 1;
			}		
		}else {
			$ok = 1;
		}
		if($ok === 1) {
			if(i < numberElements-1)  {
				queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
			} else{
				queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
			}
		}
    }
}

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 frich(p2, p3, p4, p5) {
	livello = p3;
	if(p4 != '') {
		document.getElementById(livello).style.display = 'block';
		document.getElementById(livello).innerHTML = '';
		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;			
			if(p5) {	
				setQueryString(p5)			
				xmlreqs[pos].xmlhttp.open("POST", p2, true);
				xmlreqs[pos].xmlhttp.onreadystatechange = function() {
				if (typeof(xmlhttpChange) != 'undefined') { xmlhttpChange(pos); }
				}
				xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		
				xmlreqs[pos].xmlhttp.send(queryString);							
			}else {	
				xmlreqs[pos].xmlhttp.open("GET", p2, true);				
				xmlreqs[pos].xmlhttp.onreadystatechange = function() {
					if(typeof(xmlhttpChange) !== 'undefined') {xmlhttpChange(pos);}
				}
				if(window.XMLHttpRequest) {
					xmlreqs[pos].xmlhttp.send(null);
				} else if(window.ActiveXObject) {	
					xmlreqs[pos].xmlhttp.send();
				}			
			}				
		}else {
			document.getElementById(livello).innerHTML = 'Problemi del browser: tecnologia non supportata'; 
		}
	}else {
		fcanc(livello);
	}
}

function xmlhttpChange(pos) {
	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(livello).innerHTML = xmlreqs[pos].xmlhttp.responseText;
		}else {
			document.getElementById(livello).innerHTML = 'Error...';
		}				
		xmlreqs[pos].freed = 1;
	}else {
		document.getElementById(livello).innerHTML = 'Attendere...';
	}
}

function fcanc(p1) {
	document.getElementById(p1).innerHTML = '';
	document.getElementById(p1).style.display = 'none';
}

