// Funzioni Ajax
// riccardo.righi@libero.it

var xmlHttp;

/*************************************************************
Ottengo un riferimento all'oggetto XMLHttpRequest del browser
*************************************************************/
function GetXmlHttpObject() { 
  var objXMLHttp=null;
  if (window.XMLHttpRequest) {
    //Mozilla e altri
    objXMLHttp=new XMLHttpRequest();
   } else if (window.ActiveXObject) {
     //Internet Explorer
     objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (objXMLHttp==null) {
    alert ("Il browser non supporta le richieste HTTP");
  } else return objXMLHttp;
}

/**************************************************************
Azioni con XMLHttpRequest
**************************************************************/
function setDiv(divId,serverPage,params) {

   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
       document.getElementById(divId).innerHTML=xmlHttp.responseText;
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}

function setDivSilent(divId,serverPage,params) {
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
       document.getElementById(divId).innerHTML=xmlHttp.responseText;
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}

function setDivInit(divId,serverPage,params,initFunction) {

   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
         document.getElementById(divId).innerHTML=xmlHttp.responseText;
	     initFunction();
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}

function setDivInitFP(divId,serverPage,params,initFunction,fPar) {

   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
         document.getElementById(divId).innerHTML=xmlHttp.responseText;
	     initFunction(fPar);
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}


function setDivInitFP2(divId,serverPage,params,initFunction,fp1,fp2) {

   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
         document.getElementById(divId).innerHTML=xmlHttp.responseText;
	     initFunction(fp1,fp2);
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}

function setDivInitFP3(divId,serverPage,params,initFunction,fp1,fp2,fp3) {

   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage;
     if (params != "") url=url+"?"+params;
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
         document.getElementById(divId).innerHTML=xmlHttp.responseText;
	     initFunction(fp1,fp2,fp3);
       } 
	 }
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
}


//***************** Uso di POST **************************************************

function setDivPOST(divId,serverPage,data) {

  if (data != "") {
  
   document.getElementById(divId).innerHTML="<div class='caricamento'>Attendere...</div>";
   
   xmlHttp=GetXmlHttpObject();
   if (xmlHttp != null) {
     var url=serverPage; //Non serve qui il ?
     xmlHttp.onreadystatechange = function stateChanged(divID) {
	   if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
       document.getElementById(divId).innerHTML=xmlHttp.responseText;
       } 
	 }
     xmlHttp.open("POST",url,true);
	 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
     xmlHttp.send(data);
   } else {
     document.getElementById(divId).innerHTML="ERRORE";
   }
   
  }//if data
}

//******************* Funzioni helper ***************************************************

function getFormPOSTData(formid) {

   var str = "";

   //Ottengo l'oggetto form
   var fobj = document.forms[formid];
    
   //Ciclo sui suoi elementi
   for(var i = 0; i < fobj.elements.length; i++) {
       //Guardo il tipo di elemento
	   switch(fobj.elements[i].type) {
          
		  case "text":
                    str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
                    break;

          case "select-one":
                    str += fobj.elements[i].name +
                    "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
                    break;
					
		  case "textarea":
                    str += fobj.elements[i].name +
                    "=" + escape(fobj.elements[i].value) + "&";
                    break;
					
		   case "hidden":
                    str += fobj.elements[i].name +
                    "=" + escape(fobj.elements[i].value) + "&";
                    break;
					
		  //Mancano checkbox e radio!!!
					
       }//switch

   }//for

   str = str.substr(0,(str.length - 1));
   return str;
	 
}



