/*	FUNZIONE CHE INGLOBA LA COSTRUZIONE DELL'OGGETTO REQUEST.	
Parametri:
	reqType: il tipo di richiesta HTTP, per esempio GET o POST.	
	url: l'URL del programma lato server.
	async: segnala se inviare la richiesta in modo sincrono o meno.
	respHandle: il nome della funzione per la gestione della risposta.
	
	Eventuali altri parametri, rappresentati da arguments[4], sono i 
	dati da inviare nel caso di richiesta POST. */
var request = null;

function httpRequest(reqType, url, async, respHandle){
	//alert("url in httpRequest: "+url);
	//browser basati su Mozilla
	if(window.XMLHttpRequest){
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject){
		request = new ActiveXObject("Msxml2.XMLHttp");
		if (! request){
			request = new ActiveXObject("Microsoft.XMLHttp");
		}	
	}
	//č molto improbabile ma verifichiamo se request risulta nullo
	//nel caso nessun ActiveXObject sia stato inizializzato con successo
	if (request){
		//se il parametro reqType č POST allora
		//il quinto argomento della funzione contiene i dati da inviare
		if (reqType.toLowerCase() != "post"){
			initReq(reqType, url, async, respHandle, args);
		} else {
			//i dati da inviare in POST
			var args = arguments[4];
			if(args != null && args.length  > 0){
				initReq(reqType, url, async, respHandle, args)
			}
		}
	} else {
		alert("Il browser utilizzato non permette di utilizzare tutte le funzionalitą di questa applicazione");
	}
	//alert("DIV in httpRequest: "+strDIVNewDettaglioID);
}

/*inizializza un oggetto request gią istanziato*/
function initReq(reqType, url, bool, respHandle){
	//alert("url in initReq: "+url);
	try{
		/*specifica la funzione per la gestione della risposta HTTP */
		request.onreadystatechange = respHandle;
		request.open(reqType, url, bool);
		//se reqType č POST, allora
		//il quinto argomento della funzione contiene i dati da inviare
		if (reqType.toLowerCase() == "post"){
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			request.send(arguments[4]);
		} else {
			request.send(null);
		}
	} catch (errv) {
		alert("L'applicazione non č al momento in grado di contattare il server."+
			"Riprovate tra qualche istante.\n Dettagli dell'errore: "+errv.message);
	}
	//alert("DIV in initReq: "+strDIVNewDettaglioID);
}

