/******************************/
/*********TRINCIAJIAX**********/
/***                        ***/
/***                        ***/
/***       ver.1.0          ***/
/***    Gabriele Motta      ***/
/***                        ***/
/***   rel. with GPL v.2    ***/
/******************************/
/***      ver.1.0.1         ***/
/***                        ***/
/***    Gabriele Motta      ***/
/*** aggiunte request mul_  ***/
/*** tiple sincronizzate.   ***/
/***                        ***/
/******************************/

function getElById(idVal) {
  if (document.getElementById != null)
    return document.getElementById(idVal)
  if (document.all != null)
    return document.all[idVal]
  
  alert("Problem getting element by id")
  return null
}



function al()
{alert("AADADASDADSD");}
 
/*______________________________________________________________________________

CLASSE HttpRequestWrapper()

- Si occupa di contenere più oggetti XMLHTTPRequest e di realizzare insieme
- all'handler una serie di richieste sincronizzate.

xmlreqs: array di oggetti XMLHTTPRequest
stringReqs: array delle stringhe per la richiesta
argLengsReqs: dimensione degli argomenti presenti in una richiesta
ReqsIdx: indice del numero di richieste presenti.
ReqDone: indice dell'ultima richiesta inviata.

______________________________________________________________________________*/


function HttpRequestWrapper()
{
this.xmlreqs = new Array();
this.stringReqs = new Array();
this.argLengsReqs = new Array();
this.ReqsIdx=-1;
this.ReqDone=-1;

/*______________________________________________________________________________

makeMultipleRequest()

-aggiunge all'array xmlreqs una nuova istanza dell' oggetto i-esimo request

-crea la stringa addedArgs con gli argomenti da passare al metodo i-esimo
 request

-aggiorna le variabili di classe
______________________________________________________________________________*/

this.makeMultipleRequest= function()
 {
     this.ReqsIdx=this.ReqsIdx+1;
     this.xmlreqs[this.ReqsIdx] = CreateXmlHttpReq(myHandler);

     addedArgs="";
     for (i=0;i<arguments.length; i+=2)
     {
     addedArgs=addedArgs+"&"+arguments[i]+"="+ escape(arguments[i+1]) ;
     }
     addedArgs=addedArgs.replace("+","%2B");

     this.stringReqs[this.ReqsIdx] = addedArgs;
     this.argLengsReqs[this.ReqsIdx] = arguments.length;
 };

/*______________________________________________________________________________

sendRequest()

-effettua l'invio al server della i-esima richiesta dove i=indice.

-aggiorna la variabili di classe ReqDone

______________________________________________________________________________*/

this.sendRequest = function (indice)
     {
     addedArgs= this.stringReqs[indice];
     this.ReqDone=indice;//importante farlo prima dell'invio della richiesta altrimenti l'handler potrebbe trovarselo ancora a 0
     this.xmlreqs[indice].open("GET","./ajaxgeneric/PopupRevenueResponse.asp?arguments="+(this.argLengsReqs[indice]+2)+addedArgs+"&rand="+escape(Math.random()));
     this.xmlreqs[indice].send(null);
     }



}

var MyHttpRequestWrapper=new HttpRequestWrapper();

 

function CreateXmlHttpReq(handler) {
  var xmlhttp = null;
  try {
    xmlhttp = new XMLHttpRequest();
  } catch(e) {
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  xmlhttp.onreadystatechange = handler;
  return xmlhttp;
}


/*______________________________________________________________________________

myHandler() gestisce le risposte del server.

Al termine della gestione della risposta verifica che in MyHttpRequestWrapper
esistano ancora degli oggetti XMLHTTPRequest la cui richiesta non è ancora stata
effetutata e in tal caso la invia al server.

______________________________________________________________________________*/

function  myHandler()
{               
    if (MyHttpRequestWrapper.xmlreqs[MyHttpRequestWrapper.ReqDone].readyState == 4 && MyHttpRequestWrapper.xmlreqs[MyHttpRequestWrapper.ReqDone].status == 200)
    {
       strPointer=0;
       txt=MyHttpRequestWrapper.xmlreqs[MyHttpRequestWrapper.ReqDone].responseText;
 

       strPointer=txt.indexOf("###");
       myAction=txt.substr(0,strPointer);               
       txt=txt.substr(strPointer+3,txt.length);

alert (myAction);
       switch(myAction)
       {
       
       

       case "CAMI_POWER":

          strPointer=txt.indexOf("###");
          target=txt.substr(0,strPointer);
          txt=txt.substr(strPointer+3,txt.length);  
          
                   
          document.getElementById(target).innerHTML="<li><h2>MAGNAMELO!</h2>:"+txt+"</li>";
          
          strPointer=txt.indexOf("###");
          target=txt.substr(0,strPointer);
          txt=txt.substr(strPointer+3,txt.length);  
          
          document.getElementById(target).innerHTML="<li><h2>MAGNAMELO!</h2>"+txt+"</li>";
          
          
          break;

       case "InsertHTML":

          strPointer=txt.indexOf("###");
          target=txt.substr(0,strPointer);
          txt=txt.substr(strPointer+3,txt.length);
          document.getElementById(target).innerText=trim(txt);
          break;


       case "InputValue":

          strPointer=txt.indexOf("###");
          target=txt.substr(0,strPointer);
          txt=txt.substr(strPointer+3,txt.length);
          document.getElementById(target).value=trim(txt);
          break;


       case "populatePicklist":

            strPointer=txt.indexOf("###");
            target=txt.substr(0,strPointer);
            txt=txt.substr(strPointer+3,txt.length);
            var  pklist=window.document.getElementById(String(trim(target)));//.innerHTML="<option>asdsadss</option>";
              removeAllOptions(pklist);
            for (var i=0;txt.indexOf("###")>0;i++)
                {
                  strPointer=txt.indexOf("###");
                  testo=txt.substr(0,strPointer);
                  txt=txt.substr(strPointer+3,txt.length);

                  strPointer=txt.indexOf("###");
                  valore=txt.substr(0,strPointer);
                  txt=txt.substr(strPointer+3,txt.length);
                  pklist.options[i] = new Option(""+trim(testo),""+trim(valore) ,false,false);
                 }
       break;


       case "populateSelectedPicklist":

            strPointer=txt.indexOf("###");
            target=txt.substr(0,strPointer);
            txt=txt.substr(strPointer+3,txt.length);
            strPointer=txt.indexOf("###");
            selectedIndex=parseInt(txt.substr(0,strPointer));
            txt=txt.substr(strPointer+3,txt.length);

            var  pklist=window.document.getElementById(String(trim(target)));//.innerHTML="<option>asdsadss</option>";
            removeAllOptions(pklist);
            for (var i=0;txt.indexOf("###")>-1;i++)
                {
                  strPointer=txt.indexOf("###");
                  testo=txt.substr(0,strPointer);
                  txt=txt.substr(strPointer+3,txt.length);
                  strPointer=txt.indexOf("###");
                  valore=txt.substr(0,strPointer);
                  txt=txt.substr(strPointer+3,txt.length);
                  selects=false;
                  if (i==selectedIndex)
                     {
                     selects=true;
                     pklist.options[i] = new Option(""+trim(testo),""+trim(valore),true,true );
                     }
                  else
                     {
                     pklist.options[i] = new Option(""+trim(testo),""+trim(valore) );
                     }
                 }
       break;

       case "populateProducts":


       break;
       }


       if (MyHttpRequestWrapper.ReqDone < MyHttpRequestWrapper.ReqsIdx)
       {
       MyHttpRequestWrapper.ReqDone=MyHttpRequestWrapper.ReqDone+1;
       MyHttpRequestWrapper.sendRequest(MyHttpRequestWrapper.ReqDone);
       }
    }
}

/*______________________________________________________________________________

makeRequest() crea una richiesta singola.

______________________________________________________________________________*/

//Gli argomenti vanno messi a coppie
function makeRequest() {


  MyHttpRequestWrapper.xmlreqs[0] = CreateXmlHttpReq(myHandler);
  MyHttpRequestWrapper.ReqsIdx=0;
                                           
  addedArgs="";
  for (i=0;i<arguments.length; i+=2)
  {
      addedArgs=addedArgs+"&"+arguments[i]+"="+ escape(arguments[i+1]) ;
  }
      
  addedArgs=addedArgs.replace("+","%2B");

  MyHttpRequestWrapper.ReqDone=0;//importante farlo prima dell'invio della richiesta altrimenti l'handler potrebbe trovarselo ancora a 0
  MyHttpRequestWrapper.xmlreqs[0].open("GET","./ajaxgeneric/PopupRevenueResponse.asp?arguments="+(arguments.length+2)+addedArgs+"&rand="+escape(Math.random()));
  MyHttpRequestWrapper.xmlreqs[0].send(null);
}

/*______________________________________________________________________________

makeCustomRequest(page):

come makeRequest() ma con pagina di risposta custom

______________________________________________________________________________*/
function makeCustomRequest(page,page) {
 
  MyHttpRequestWrapper.xmlreqs[0] = CreateXmlHttpReq(myHandler);
  MyHttpRequestWrapper.ReqsIdx=0;
                                           
  addedArgs="";
  for (i=0;i<arguments.length; i+=2)
  {
      addedArgs=addedArgs+"&"+arguments[i]+"="+ escape(arguments[i+1]) ;
  }
      
  addedArgs=addedArgs.replace("+","%2B");

  MyHttpRequestWrapper.ReqDone=0;//importante farlo prima dell'invio della richiesta altrimenti l'handler potrebbe trovarselo ancora a 0

  MyHttpRequestWrapper.xmlreqs[0].open("GET",page+"?arguments="+(arguments.length+2)+addedArgs+"&rand="+escape(Math.random()));
  MyHttpRequestWrapper.xmlreqs[0].send(null);
}
/*______________________________________________________________________________

makeRequests() crea in MyHttpRequestWrapper una serie di richieste ed invia la
prima.

L'handler si occuperà delle successive richieste.

______________________________________________________________________________*/

function makeRequests()
{
//MyHttpRequestWrapper
var maxrec=document.getElementById("workaroundInput").value;

for (var i=1; i<(parseInt(maxrec)+1); i++)
    {
    var comboPosi=document.getElementById("cmbPosizione"+i);
    var comboPresta=document.getElementById("cmbPrestazione"+i);
    var  enicode=document.getElementById("ENIcode"+i);
    comboPosiVal ="";
    if (isObject(comboPosi)) comboPosiVal = comboPosi.value;
    comboPrestaVal ="";
    if (isObject(comboPresta)) comboPrestaVal = comboPresta.selectedValue;
    enicodeVal ="";
    if (isObject(enicode)) enicodeVal = enicode.value;
    MyHttpRequestWrapper.makeMultipleRequest("sender", "cmbPosizione"+i, "action", "populateSelectedPicklist", "target" , "cmbPrestazione"+i, "PKLPosizione", comboPosiVal, "PKLPrestazione", comboPrestaVal, "ENIcode", ""+enicodeVal);
    }
MyHttpRequestWrapper.sendRequest(0);
}



function removeAllOptions(selectbox)
{
var i;
for(i=selectbox.options.length-1;i>=0;i--)
{
selectbox.remove(i);
}
}

