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

//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+'?'+parseencode(variabili);

		//indtot=mylink+'?'+variabili;

		}

	else{

		indtot=mylink;

		}

	

	// inizializzo la richiesta in GET

	oggetto.open("get", indtot, false);  // 2008-11-13 Disattivato modalità asyncrona

	// 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, false);		// 2008-11-13 Disattivato modalità asyncrona



	// 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(parseencode(variabili));

	//alert(parseencode(variabili));

	//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){
	//alert(iddiv);
	//return;
	openAjax([nomeFile],[iddiv]);
	//alert(nomeFile);
	return;

	// 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);
		//MODIFY_InnerElementById(listadati['iddiv'],'<font style="font-family: helvetica; font-size:9px; background-color:#007BC4; color:#FFFFFF">CARICAMENTO...</font>');
		
		

		// 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];

        			}
				//if (navigator.appName=='Netscape') alert(contenuto);      		
				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;

	}



function parseencode(mystring) {

  // Attenzione funzione mooolto semplice di encode url.. fallisce se uno dei content da tradurre

  // contiene il carattere '&' nel valore assegnato.

  //

  function escapeUrl(sStr) {

    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27');

  }



  var paramList = mystring.split('&');

  var newstring='';

  for (i=0;i<paramList.length;i++) {

    param_value = paramList[i].split('=');

    // alcuni check..

    if (param_value.length != 2) {

        alert('Formato stringa non valido:\n'+paramList[i]);

        return "";

    }

    if (

         (param_value[0].indexOf('=') != -1) ||

         (param_value[1].indexOf('&') != -1) ||

         (param_value[0].indexOf('=') != -1) ||

         (param_value[1].indexOf('&') != -1) ) {

        alert('Formato stringa non valido:\n'+paramList[i]);

        return "";

    }

    newstring+=param_value[0]+'='+escapeUrl(param_value[1])+'&';

  }

  return newstring;

}



