/*	#	#	#	#	#	*/
/*	#	FUNZIONI	#	*/
/*	#	#	#	#	#	*/

/*	#	Funzione per assegnare un oggetto XMLHttpRequest	#	*/
function assegnaXMLHttpRequest() {
	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;
};


/*	#	Funzione di caricamento testo														#	*/
/*	#	nomeFile = il nome del file da richiamare										#	*/
/*	#	nomeElemento = il nome dell'elemento del quale cambiare il contenuto	#	*/
/*	#	metodo = metodo di invio richiesta [post o get]								#	*/
/*	#	stringaPost = coppie variabile-valore da passare come POST				#	*/
function caricaTesto(nomeFile,nomeElemento,metodo,stringaPost) {

	// variabili di funzione
	var
   // assegnazione oggetto XMLHttpRequest
   ajax = assegnaXMLHttpRequest(),
   // assegnazione elemento del documento
   elemento = prendiElementoDaId(nomeElemento),
   // risultato booleano di funzione
   usaLink = true;
  
	// se l'oggetto XMLHttpRequest non è nullo
	if(ajax) {
		//mostro il preload		
		elemento.innerHTML = "<img src='/img/preload.gif' />";

		// il link al file non deve essere usato
		usaLink = false;

		//verifico il valore di metodo e imposto quello di default
		if ((metodo != 'get') && (metodo != 'post')) {
			metodo = 'get';
		}
		
		
		// impostazione richiesta asincrona in GET del file specificato
		//ajax.open("get", nomeFile, true);
		ajax.open(metodo, nomeFile, true);
		
		//nel caso devo inviare i dati in POST: aggiungo l'impostazione dell'header
		if (metodo == 'post') {
			ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		//nel caso devo inviare i dati in GET: annullo la stringa con le coppie chiave/valore	
		} else {
			stringaPost = null;
		}
		
		// rimozione dell'header "connection" come "keep alive"
		//ajax.setRequestHeader('Connection','close');
    
		// impostazione controllo e stato della richiesta
		ajax.onreadystatechange = function() {
		
			// verifica dello stato
			if(ajax.readyState === readyState.COMPLETATO) {
			
				// verifica della risposta da parte del server
				if(statusText[ajax.status] === "OK")
					// visualizzazione risultato parsing
					elemento.innerHTML = unescape(ajax.responseText);
				else
					// errore di caricamento
					elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />" +	"Errore riscontrato: " + statusText[ajax.status];
			};
		};

		// invio richiesta
		ajax.send(stringaPost);
	}
   
	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";