//----------------------------------------------------------------------------
//Ajax_SetStart();
var data_preload='';
//----------------------------------------------------------------------------

//---------------

function Ajax_InitReadyState(){
	// oggetto di verifica stato
	var readyState = {
			INATTIVO:	0,
			INIZIALIZZATO:	1,
			RICHIESTA:	2,
			RISPOSTA:	3,
			COMPLETATO:	4
			};
	return readyState;
	}
			

function Ajax_InitStatusText(){	
	// 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";
	return statusText;
	}

//---------------

// funzione per assegnare l'oggetto XMLHttpRequest compatibile con i browsers più recenti e diffusi
function assegnaXMLHttpRequest() {
	// lista delle variabili locali
	var
 	// variabile di ritorno, nulla di default
 	XHR = null,
  	// informazioni sul nome del browser
 	browserUtente = navigator.userAgent.toUpperCase();

 	// browser standard con supporto nativo; non importa il tipo di browser
 	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
  		XHR = new XMLHttpRequest();

 	// browser Internet Explorer è necessario filtrare la versione 4
 	else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0){
  			// la versione 6 di IE ha un nome differente
  			// per il tipo di oggetto ActiveX
  			if(browserUtente.indexOf("MSIE 5") < 0)
   				XHR = new ActiveXObject("Msxml2.XMLHTTP");

  			// le versioni 5 e 5.5 invece sfruttano lo stesso nome
  			else
   				XHR = new ActiveXObject("Microsoft.XMLHTTP");
 			}
	
 	return XHR;
	}

//---------------

function AjaxSend_GET(oggetto,mylink,variabili){
	indtot='';
	if(variabili!=''){
		indtot=mylink+'?'+variabili;
		}
	else{
		indtot=mylink;
		}
	
	// inizializzo la richiesta in GET
	oggetto.open("get", indtot, true);
	// ulteriore header consigliato per richieste get o post da scrivere prima di utilizzare send
	oggetto.setRequestHeader("connection", "close");
	
	// effettuo la richiesta
	//ajax.send(null);
	}

//---------------

function Ajax_Reset_Send_GET(oggetto){
	oggetto.send(null);
	}

//---------------
	
function AjaxSend_POST(oggetto,mylink,variabili){
	// inizializzo la richiesta in post
	oggetto.open("post", mylink, true);

	// imposto il giusto header
	oggetto.setRequestHeader("content-type", "application/x-www-form-urlencoded");
	// ulteriore header consigliato per richieste get o post da scrivere prima di utilizzare send
	oggetto.setRequestHeader("connection", "close");

	// effettuo la richiesta inviando la variabile leggi con contenuto Dante
	oggetto.send(variabili);
	}
	
//---------------

function Control_Data(oggetto,typefiletoread){
	contenuto='';
	if(typefiletoread==="TXT"){
		contenuto=oggetto.responseText;
		}
	if(typefiletoread==="XML"){
		if(oggetto.responseXML){
        	// visualizzazione risultato parsing
        	contenuto = parsaXml(oggetto.responseXML);
			}
      	else{
        	// visualizzazione contenuto letto evitando di scrivere la risposta in modo interpretabile dal browser
        	contenuto = "L'XML restituito dalla richiesta non è valido.<br />" + oggetto.responseText.split('<').join("&lt;").split('>').join("&gt;");
			}
		}
	return contenuto;
	}

//---------------

function Ajax_MOD_InnerElementById(oggetto,iddiv,nomeFile,typefiletoread,visibility,preloader,width_preloader,height_preloader){
	// variabili di funzione
  	var usaLink = true;
  	
	// se l'oggetto XMLHttpRequest non è nullo
  	if(oggetto) {
    	// il link al file non deve essere usato
    	usaLink = false;

    	// load preload
		contenuto=Print_Preloader(preloader,width_preloader,height_preloader);
		MODIFY_InnerElementById(iddiv,contenuto);
		
		// impostazione richiesta asincrona in GET del file specificato e ajax.open("get", nomeFile, true); -----> [funzione Diego]
		AjaxSend_GET(oggetto,nomeFile,'')
		
    	// impostazione controllo e stato della richiesta
    	oggetto.onreadystatechange = function() {
      		
			// verifica dello stato
      		if(oggetto.readyState === readyState.COMPLETATO) {
        		// verifica della risposta da parte del server
        		contenuto='';
				if(statusText[oggetto.status] === "OK")
          			// operazione avvenuta con successo
          			contenuto=Control_Data(oggetto,typefiletoread);
        		else{
          			// errore di caricamento
          			contenuto = "Impossibile effettuare l'operazione richiesta.<br />";
          			contenuto += "Errore riscontrato: " + statusText[oggetto.status];
        			}
				MODIFY_InnerElementById(iddiv,contenuto);
				if((contenuto=='')&&(visibility!='')){
					GET_ElementById(iddiv).style.visibility=visibility;
					}
				}
			}
		
    	// invio richiesta
    	Ajax_Reset_Send_GET(oggetto);
  		}
   
  	return usaLink;
	}
	
//---------------

function Ajax_POST_SendForm(oggetto,iddiv,nomeFile,variabili,typefiletoread,preloader,width_preloader,height_preloader){
	// variabili di funzione
  	var usaLink = true;
  	
	// se l'oggetto XMLHttpRequest non è nullo
  	if(oggetto) {
    	// il link al file non deve essere usato
    	usaLink = false;

    	// load preload
		contenuto=Print_Preloader(preloader,width_preloader,height_preloader);
		MODIFY_InnerElementById(iddiv,contenuto);
		
		// impostazione richiesta asincrona in POST del file specificato; -----> [funzione Diego]
		//AjaxSend_GET(oggetto,nomeFile,'')
		AjaxSend_POST(oggetto,nomeFile,variabili)
		
    	// impostazione controllo e stato della richiesta
    	oggetto.onreadystatechange = function() {
      		
			// verifica dello stato
      		if(oggetto.readyState === readyState.COMPLETATO) {
        		// verifica della risposta da parte del server
        		contenuto='';
				if(statusText[oggetto.status] === "OK")
          			// operazione avvenuta con successo
          			contenuto=Control_Data(oggetto,typefiletoread);
        		else{
          			// errore di caricamento
          			contenuto = "Impossibile effettuare l'operazione richiesta.<br />";
          			contenuto += "Errore riscontrato: " + statusText[oggetto.status];
        			}
				MODIFY_InnerElementById(iddiv,contenuto);
      			}
			}

    	// invio richiesta
    	}
   
  	return usaLink;
	}
	
//---------------

function Print_Preloader(img,width_table,height_table){
	toreturn='';
	toreturn='<table width="'+width_table+'" height="'+height_table+'" border="0" cellspacing="0" cellpadding="0"><tr><td align="center" valign="middle"><img src="'+img+'" align="absmiddle"></td></tr></table>';
	data_preload=toreturn;
	return toreturn;
	}
