function istanzaXHR() {
	var obj;
	if (window.XMLHttpRequest) {	// Non Internet Explorer
		obj = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // Internet Explorer
		obj = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return obj;
}

obj=istanzaXHR();

function inviaAjax(formName,dati,printId,urlAppoggio) {
	inviaXHR(obj,formName,dati,printId,urlAppoggio);
}

function inviaXHR(obj,formName,dati,printId,urlAppoggio) {
	try {
		obj.open("POST", urlAppoggio, true);
		obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
		//document.getElementById(printId).innerHTML = "<p class='loading'>caricamento..</p>";
		obj.onreadystatechange = function() {
			if (obj.readyState == 4) { // Caricamento Avvenuto
				if (obj.status == 200) { // con successo
					document.getElementById(printId).innerHTML = obj.responseText; // eseguo l'echo dentro l'elemento printId dal file urlAppoggio
				} else {
					document.getElementById(printId).innerHTML = "?";
					alert("Errore: "+obj.statusText);
				}
			}
		}
		//
		eval('var form = document.'+formName);
		tmpString = "";
		if (dati == '*') {
			Nelementi = form.elements.length;
		} else {
			ArrayDati = dati.split("|");
			Nelementi = ArrayDati.length;
		}
		for (var i = 0; i < Nelementi; i++) {
			diretto = false;
			if (dati == '*') {
				elemento = form.elements[i];
			} else if (dati.indexOf('=',0)) {
				diretto = true;
				elemento = ArrayDati[i];
			} else {
				eval('elemento = form.'+ArrayDati[i]);
			}
			if (!diretto) {
				switch(elemento.type) {
					case('checkbox'):
						if (elemento.checked) {
							valore = 'T';
						} else {
							valore = 'F';
						}
					break;
					case('radio'):
						if (elemento.checked) {
							valore = elemento.value;
						}
						break;
					default:
						valore = elemento.value;
					break;
				}
				valore = valore.replace('+','%2B');
				valore = valore.replace('\\','%5C');
				valore = valore.replace('&','%26');
				tmpString += elemento.name+"="+valore+"&";
			} else {
				tmpString += elemento+"&";
			}
		}
		sendDati = tmpString.substring(0,(tmpString.length-1));
		obj.send(sendDati); // invio i dati in POST
	} catch (e) {
		document.getElementById(printId).innerHTML="?";
		alert("Errore: "+e);
	}
}
