/** (C) HTML.IT - insieme di funzioni ed oggetti utili per interagire con ajax */

/** FUNZIONI */

	function prendiElementoDaId(id_elemento) {		// funzione per prendere un elemento con id univoco
		var elemento;
		if(document.getElementById)
			elemento = document.getElementById(id_elemento);
		else
			elemento = document.all[id_elemento];
		return elemento;
	};
	
	function assegnaXMLHttpRequest() {					// funzione per assegnare un oggetto XMLHttpRequest
		var
		XHR = null,
		browserUtente = navigator.userAgent.toUpperCase();
		if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
			XHR = new XMLHttpRequest();
		else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
			if(browserUtente.indexOf("MSIE 5") < 0)
				XHR = new ActiveXObject("Msxml2.XMLHTTP");
			else
				XHR = new ActiveXObject("Microsoft.XMLHTTP");
		}
		return XHR;
	};			

	function richiestaContatto(id, nomeFile, nome, cognome, telefono, email) {			// funzione di invio contatto da contatto.php.
		var
			// assegnazione oggetto XMLHttpRequest
			ajax = assegnaXMLHttpRequest(),
			// assegnazione elemento del documento
			elemento = prendiElementoDaId(id),
			// risultato booleano di funzione
			usaLink = true;
  		
		//alert(id+" | "+nomeFile+" | "+nome+" | "+cognome+" | "+telefono+" | "+email);
		
		if(ajax) {												// se l'oggetto XMLHttpRequest non è nullo
			usaLink = false;									// il link al file non deve essere usato
			ajax.open("post", nomeFile, true);			// impostazione richiesta asincrona in GET del file specificato
			// rimozione dell'header "connection" come "keep alive"
			//	ajax.setRequestHeader("connection", "close");
			ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
			ajax.onreadystatechange = function() {		// impostazione controllo e stato della richiesta
				if(ajax.readyState === readyState.COMPLETATO) {				// verifica dello stato
					if(statusText[ajax.status] === "OK"){						// verifica della risposta da parte del server
						//alert(ajax.responseText);
						elemento.innerHTML = ajax.responseText;				// messaggio operazione avvenuta con successo
						display(id);
					}
					else {
						elemento.innerHTML = ajax.responseText;				// messaggio errore di caricamento
						display(id);
					}
				} 
			}
			ajax.send("nome="+nome+"&cognome="+cognome+"&telefono="+telefono+"&email="+email);						// invio richiesta
		}	
		return usaLink;
	}

	function iscrizioneNewsletter(id, nomeFile, nome, email) {			// funzione di invio contatto da contatto.php.
		var
			// assegnazione oggetto XMLHttpRequest
			ajax = assegnaXMLHttpRequest(),
			// assegnazione elemento del documento
			elemento = prendiElementoDaId(id),
			// risultato booleano di funzione
			usaLink = true;
		
		if(ajax) {												// se l'oggetto XMLHttpRequest non è nullo
			usaLink = false;									// il link al file non deve essere usato
			ajax.open("post", nomeFile, true);			// impostazione richiesta asincrona in GET del file specificato
			// rimozione dell'header "connection" come "keep alive"
			//	ajax.setRequestHeader("connection", "close");
			ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
			ajax.onreadystatechange = function() {		// impostazione controllo e stato della richiesta
				if(ajax.readyState === readyState.COMPLETATO) {				// verifica dello stato
					if(statusText[ajax.status] === "OK"){						// verifica della risposta da parte del server
						elemento.innerHTML = ajax.responseText;				// messaggio operazione avvenuta con successo
						display(id);
					}
					else {
						elemento.innerHTML = ajax.responseText;				// messaggio errore di caricamento
						display(id);
					}
				} 
			}
			ajax.send("nome="+nome+"&email="+email);						// invio richiesta
		}	
		return usaLink;
	}

/** OGGETTI / ARRAY */

	// oggetto di verifica stato
		var readyState = {
			INATTIVO:	0,
			INIZIALIZZATO:	1,
			RICHIESTA:	2,
			RISPOSTA:	3,
			COMPLETATO:	4
		};

	// array descrittivo dei codici restituiti dal server
	// [la scelta dell' array  per evitare problemi con vecchi browsers]
		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";