// JavaScript Document
/**   */

/** FUNZIONI */


// funzione per assegnare un oggetto XMLHttpRequest
function assegnaXMLHttpRequest() {
	var XHR = null;
	var 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 caricaXMLAsy(nomeFile) {
	// variabili di funzione
      
	var   ajax = assegnaXMLHttpRequest()                     // assegnazione oggetto XMLHttpRequest
	var   usaLink = true;                                       // risultato booleano di funzione
      
	// se l'oggetto XMLHttpRequest non è nullo
	if(ajax) {
              
		usaLink = false;                                          // il link al file non deve essere usato
		// impostazione richiesta asincrona in GET
		// del file specificato
		ajax.open("get", nomeFile, true);
		ajax.setRequestHeader("connection", "close");             // rimozione dell'header "connection" come "keep alive"
		// impostazione controllo e stato della richiesta
		ajax.onreadystatechange = function() {
			if(ajax.readyState === readyState.COMPLETATO) {
		// do something
		};
		};
		// invio richiesta
		ajax.send(null);
	}
	return usaLink;
} 
    
function caricaXMLSync(nomeFile) {
	// variabili di funzione
	var doc;      
	var	oCom	= assegnaXMLHttpRequest()                     // assegnazione oggetto XMLHttpRequest

	try {
		// se l'oggetto XMLHttpRequest non è nullo
		if(oCom) {
			// impostazione richiesta asincrona in GET
			// del file specificato
			oCom.open("get", nomeFile, false);

			oCom.send(null);
			if (oCom.status == 0 || oCom.status == 200) {  // Make sure there were no errors
				// Make sure the response is an XML document
				//if (oCom.getResponseHeader("Content-Type") == "text/xml") {
				doc = oCom.responseXML;
			// Now do something with the response document
			//}
			}
		}
	} catch(e) {
		alert(" Comm error reading '"+ nomeFile + " "+e.message);
		debugger;
	}
	return doc;
} 

/** 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";
