/*
FUNZIONI VARIE DI SUPPORTO AD AJAX
libreria scritta da: Emanuele Ravasi, www.vipsrl.com
ultima revisione: 10/3/2008
*/

	//chiama un POST con ajax
	function ajax_post(destinazione, parametri, risposta) {
		var ajax = set_XMLHttpRequest();// assegnazione oggetto XMLHttpRequest
		var elemento = get_ElementoDaId(risposta);
		if(ajax){
			ajax.open("POST", destinazione, true);//impostazione richiesta asincrona in POST
			ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
			ajax.setRequestHeader("connection", "close");//rimozione dell'header "connection" come "keep alive"
			ajax.send(parametri);//invio richiesta
			//procede con la richiesta
			ajax.onreadystatechange = function() {//impostazione controllo e stato della richiesta
				if(ajax.readyState === 4) {//verifica dello stato
					if(ajax.status == 200){//verifica della risposta da parte del server
						elemento.innerHTML = ajax.responseText;//operazione avvenuta con successo
					}else {
						alert('errore');
					}
				} 
			}
		}
	} 
	
	
	//chiama un GET con ajax
	function ajax_get(destinazione, parametri, risposta) {
		var ajax = set_XMLHttpRequest();// assegnazione oggetto XMLHttpRequest
		var elemento = get_ElementoDaId(risposta);
		if(ajax){
			ajax.open("GET", destinazione + "?" + parametri, true);//impostazione richiesta asincrona in GET
			ajax.setRequestHeader("connection", "close");//rimozione dell'header "connection" come "keep alive"
			ajax.send(null);//invio richiesta		
			//procede con la richiesta
			ajax.onreadystatechange = function() {//impostazione controllo e stato della richiesta
				if(ajax.readyState === 4) {//verifica dello stato
					if(ajax.status == 200){//verifica della risposta da parte del server
						elemento.innerHTML = ajax.responseText;//operazione avvenuta con successo
					}else {
						alert('errore');
					}
				} 
			}
		}
	} 





///////////////////////////////////////////////////////////////
// FUNZIONI BASE
///////////////////////////////////////////////////////////////
	

	//getelementbyid
	function get_ElementoDaId(id_elemento) {
		var elemento;
		if(document.getElementById)
			elemento = document.getElementById(id_elemento);
		else
			elemento = document.all[id_elemento];
		return elemento;
	};
		
	
	//assegna un oggetto XMLHttpRequest a seconda del browser
	function set_XMLHttpRequest() {
		var
			XHR = null,
			browser = navigator.userAgent.toUpperCase();
		
		if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
			XHR = new XMLHttpRequest();
		else if(window.ActiveXObject && browser.indexOf("MSIE 4") < 0) {
			if(browser.indexOf("MSIE 5") < 0)
				XHR = new ActiveXObject("Msxml2.XMLHTTP");
			else
				XHR = new ActiveXObject("Microsoft.XMLHTTP");
		}
		return XHR;
	};
	
	
	//codici restituiti dal server [la scelta dell' array è per evitare problemi con vecchi browser]
	var statusText = new Array();
	statusText[100] = "Continue";
	statusText[101] = "Switching Protocols";
	statusText[200] = "OK";
	statusText[201] = "Created";
	statusText[202] = "Accepted";
	statusText[203] = "Non-Authoritative Information";
	statusText[204] = "No Content";
	statusText[205] = "Reset Content";
	statusText[206] = "Partial Content";
	statusText[300] = "Multiple Choices";
	statusText[301] = "Moved Permanently";
	statusText[302] = "Found";
	statusText[303] = "See Other";
	statusText[304] = "Not Modified";
	statusText[305] = "Use Proxy";
	statusText[306] = "(unused, but reserved)";
	statusText[307] = "Temporary Redirect";
	statusText[400] = "Bad Request";
	statusText[401] = "Unauthorized";
	statusText[402] = "Payment Required";
	statusText[403] = "Forbidden";
	statusText[404] = "Not Found";
	statusText[405] = "Method Not Allowed";
	statusText[406] = "Not Acceptable";
	statusText[407] = "Proxy Authentication Required";
	statusText[408] = "Request Timeout";
	statusText[409] = "Conflict";
	statusText[410] = "Gone";
	statusText[411] = "Length Required";
	statusText[412] = "Precondition Failed";
	statusText[413] = "Request Entity Too Large";
	statusText[414] = "Request-URI Too Long";
	statusText[415] = "Unsupported Media Type";
	statusText[416] = "Requested Range Not Satisfiable";
	statusText[417] = "Expectation Failed";
	statusText[500] = "Internal Server Error";
	statusText[501] = "Not Implemented";
	statusText[502] = "Bad Gateway";
	statusText[503] = "Service Unavailable";
	statusText[504] = "Gateway Timeout";
	statusText[505] = "HTTP Version Not Supported";
	statusText[509] = "Bandwidth Limit Exceeded";