  // onload init function for search form
  var servletURL = "getCarLists-aj";
  var monthEdited = false;
  var yearEdited = false;
  var cliccato = false; //Roberto: check data immatricolazione
  var IdRefArray = new Array();
  //
  //
  function meta_loaded_justForSearch(prodType) {
    if (prodType == undefined)
      prodType = 'car';
    if(typeof(cobbbrihinibbbbittor) == "undefined") return false;
    if(cobbbrihinibbbbittor) return false;  
    // load nat lists
    if(typeof(cmbNatList) == "undefined") return false;

    meta.$("holder5").html(cmbNatList);
    if(indexByValue_fangala("holder5", prld_hldIdCitizenry) > 0) 
      meta.setSelectedIndex("holder5", indexByValue_fangala("holder5", prld_hldIdCitizenry));
// applicare sostituzione di variabile su tutti gli utilizzi index_fangala
    meta.$("holderSelect7").html(cmbNatList);
    var indexHolderCountry = indexByValue_fangala("holderSelect7", prld_hldIdCountry);
    if( indexHolderCountry > 0) {
      meta.setSelectedIndex("holderSelect7", indexHolderCountry);
    }
    meta.$("driver5").html(cmbNatList);
    if(indexByValue_fangala("driver5", prld_drvIdCitizenry) > 0)
      meta.setSelectedIndex("driver5", indexByValue_fangala("driver5", prld_drvIdCitizenry));

    meta.$("driverSelect7").html(cmbNatList);
    var indexDriverCountry = indexByValue_fangala("driverSelect7", prld_drvIdCountry);
    if(indexDriverCountry > 0)
      meta.setSelectedIndex("driverSelect7", indexDriverCountry);

    meta.$("contractor5").html(cmbNatList);
    if(indexByValue_fangala("contractor5", prld_cntIdCitizenry) > 0)
      meta.setSelectedIndex("contractor5", indexByValue_fangala("contractor5", prld_cntIdCitizenry));

    meta.$("contractorSelect7").html(cmbNatList);
    var indexContractorCountry = indexByValue_fangala("contractorSelect7", prld_cntIdCountry);
    if(indexContractorCountry > 0)
      meta.setSelectedIndex("contractorSelect7", indexContractorCountry);

    meta.$("holder2").html(cmbProvList);
    meta.setSelectedIndex("holder2", indexByValue_fangala("holder2", prld_hldResProvId));
    meta.$("holderSelect8").html(cmbProvBirthList);
    meta.setSelectedIndex("holderSelect8", indexByValue_fangala("holderSelect8", prld_hldBirProvId));

    //
    meta.$("driver2").html(cmbProvList);
    meta.setSelectedIndex("driver2", indexByValue_fangala("driver2", prld_drvResProvId));
    meta.$("driverSelect8").html(cmbProvBirthList);
    meta.setSelectedIndex("driverSelect8", indexByValue_fangala("driverSelect8", prld_drvBirProvId));
    //
    meta.$("contractor2").html(cmbProvList);
    meta.setSelectedIndex("contractor2", indexByValue_fangala("contractor2", prld_cntResProvId));
    meta.$("contractorSelect8").html(cmbProvBirthList);
    meta.setSelectedIndex("contractorSelect8", indexByValue_fangala("contractorSelect8", prld_cntBirProvId));
    //
    meta.$("holderSelect3").html(cmbProfsList);
    meta.setSelectedIndex("holderSelect3", indexByValue_fangala("holderSelect3", prld_hldJobId));
    meta.$("driverSelect3").html(cmbProfsList);
    meta.setSelectedIndex("driverSelect3", indexByValue_fangala("driverSelect3", prld_drvJobId));
    meta.$("contractorSelect3").html(cmbProfsList);
    meta.setSelectedIndex("contractorSelect3", indexByValue_fangala("contractorSelect3", prld_cntJobId));
    //
    meta.$("holderSelect6").html(cmbBirthYearList);
    meta.setSelectedIndex("holderSelect6", indexByValue_fangala("holderSelect6", prld_hldBirYearId));
    meta.$("driverSelect6").html(cmbBirthYearList);
    meta.setSelectedIndex("driverSelect6", indexByValue_fangala("driverSelect6", prld_drvBirYearId));
    meta.$("contractorSelect6").html(cmbBirthYearList);
    meta.setSelectedIndex("contractorSelect6", indexByValue_fangala("contractorSelect6", prld_cntBirYearId));
    //
    meta.$("holderSelect2").html(cmbDrvLicYearList);
    meta.setSelectedIndex("holderSelect2", indexByValue_fangala("holderSelect2", prld_hldDrvLicYearId));
    meta.$("driverSelect2").html(cmbDrvLicYearList);
    meta.setSelectedIndex("driverSelect2", indexByValue_fangala("driverSelect2", prld_drvDrvLicYearId));
    meta.$("contractorSelect2").html(cmbDrvLicYearList);
    meta.setSelectedIndex("contractorSelect2", indexByValue_fangala("contractorSelect2", prld_cntDrvLicYearId));
    //
    meta.$("idfirstInsYearInRiskAss").html(cmbfirstInsYearInRiskAss);
    meta.setSelectedIndex("idfirstInsYearInRiskAss", indexByValue_fangala("idfirstInsYearInRiskAss", prld_firstInsYearInRiskAss));
    //
    /*
     *meta.$("idaverageKmPerYear").html(cmbaverageKmPerYear);
    meta.setSelectedIndex("idaverageKmPerYear", indexByValue_UpperLimit("idaverageKmPerYear", prld_averageKmPerYear));*/
    //
    loadAccidentsIfPresents();
    // 20090519: enrico: remove autocomplete on
    meta.$('city1Cap').autocomplete = "off";
    meta.$('driver2').autocomplete = "off";
    meta.$('contractor2').autocomplete = "off";

    var idBrand = meta.getValue('carbrand');
    var idModel = meta.getValue('carmodel');
    var idSetup = meta.getValue('carsetup');

    selectedInsuranceSituation(true);
    loadModelsList(true);
    /*
    selectedSex("holder");
    selectedSex("driver");
    selectedSex("contractor");
    */
    // meta.unbind("holder2", "blur", function(){saveDisplayed('holder2','holder2Mirr');getTownsByProvince('holder3', 'holder2');});
    getTownsByProvince('holder3', 'holder2',true);
    getTownsIdsByProvinceBirth('holderSelect9', 'holderSelect8',true);
    
    getTownsByProvince('contractor3', 'contractor2',true);
    getTownsIdsByProvinceBirth('contractorSelect9', 'contractorSelect8',true);
    
    getTownsByProvince('driver3', 'driver2',true);
    getTownsIdsByProvinceBirth('driverSelect9', 'driverSelect8',true);

    //Roberto: verifica visualizzazione div relativi a proprietario, conducente, contraente
    viewProprietario(meta.getValue('holder1'));
    viewConducente(meta.getValue('holderIsDriver'));
    viewContraente(meta.getValue('holderIsContractor'));
    viewDatiContraente(meta.getValue('contractor1'));
    if(errmessagespresent) {
      if (meta.getValue('holder1')==30) {
        viewProprietario(meta.getValue('holder1'));
      } else {
        viewProprietario("true");
      }
      if (meta.getValue('contractor1')==30) {
        viewDatiContraente(meta.getValue('contractor1'));
      } else {
        viewContraente(meta.getValue('holderIsContractor'));
      }
      meta.setCss("personError", "display", "block");
    }
    toggleProvComNasc(meta.$('holderSelect7'), "holder");
    toggleProvComNasc(meta.$('driverSelect7'), "driver");
    toggleProvComNasc(meta.$('contractorSelect7'), "contractor");
    viewUlteriori(meta.getValue('otherDriversPresents'));
  
    toggleRispSuper(meta.$('risparmio'));
    if (meta.getValue('risparmio')==20) {
      toggleCarPlate(meta.$('conoscoTarga'));
    }

    switch(prodType) {
      case 'car':
        bindCarEvents();
        break;
     case 'bike'://IMPORTANTE al momento viene passato prodType=car anche dal form moto, quindi la funzione bindBikeEvents non esiste
        bindBikeEvents();
        break;
     default:
        bindCarEvents();
    }
    //Figure anagrafiche
    meta.bind("holderIsDriver", "change", function(){viewConducente(this.value);toggleRispSuper(meta.$('risparmio'));});
    meta.bind("holderIsContractor", "change", function(){viewContraente(this.value,-1);toggleRispSuper(meta.$('risparmio'));});
    //Proprietario
    meta.bind("holder1", "change", function(){viewProprietario(this.value);forceMainDriverFieldsRequest(this.value);selectedInsuranceSituation(true);toggleRispSuper(meta.$('risparmio'))});
    meta.bind("holder2", "change", function(){saveDisplayed('holder2','holder2Mirr');getTownsByProvince('holder3', 'holder2',false);});
    meta.bind("holder3", "change", function(){getCapByTowns('holder4','holder3','holder2',false);});
    meta.bind("holder4", "blur", function(){saveDisplayed('holder4','holder4Mirr');saveIdRef('holder104Mirr','holder4');});
    meta.bind("holder5", "change", function(){setBirthCountry('holder')});
    meta.bind("holderSelect6", "change", function(){setAnnoPatente('holder')});
    meta.bind("holderSelect7", "change", function(){toggleProvComNasc(meta.$('holderSelect7'), 'holder');});
    meta.bind("holderSelect8", "change", function(){saveDisplayed('holderSelect8','holder8Mirr');getTownsIdsByProvinceBirth('holderSelect9', 'holderSelect8');});
    meta.bind("holderSelect9", "change", function(){saveDisplayed('holderSelect9','holder9Mirr');});
    //Conducente
  //meta.bind("driver1", "change", function(){toggleRispSuper(meta.$('risparmio'));});
    meta.bind("driver2", "change", function(){saveDisplayed('driver2','driver2Mirr');getTownsByProvince('driver3', 'driver2',false);});
    meta.bind("driver3", "change", function(){getCapByTowns('driver4','driver3','driver2',false);});
    meta.bind("driver4", "blur", function(){saveDisplayed('driver4','driver4Mirr');saveIdRef('driver104Mirr','driver4');});
    meta.bind("driver5", "change", function(){setBirthCountry('driver')});
    meta.bind("driverSelect6", "change", function(){setAnnoPatente('driver')});
    meta.bind("driverSelect7", "change", function(){toggleProvComNasc(meta.$('driverSelect7'), 'driver');});
    meta.bind("driverSelect8", "change", function(){saveDisplayed('driverSelect8','driver8Mirr');getTownsIdsByProvinceBirth('driverSelect9', 'driverSelect8');});
    meta.bind("driverSelect9", "change", function(){saveDisplayed('driverSelect9','driver9Mirr');});
    //Contraente
    meta.bind("contractor1", "change", function(){viewDatiContraente(this.value);toggleRispSuper(meta.$('risparmio'));});
    meta.bind("contractor2", "change", function(){saveDisplayed('contractor2','contractor2Mirr');getTownsByProvince('contractor3', 'contractor2',false);});
    meta.bind("contractor3", "change", function(){getCapByTowns('contractor4','contractor3','contractor2',false);});
    meta.bind("contractor4", "blur", function(){saveDisplayed('contractor4','contractor4Mirr');saveIdRef('contractor104Mirr','contractor4');});
    meta.bind("contractor5", "change", function(){setBirthCountry('contractor')});
    meta.bind("contractorSelect6", "change", function(){setAnnoPatente('contractor')});
    meta.bind("contractorSelect7", "change", function(){toggleProvComNasc(meta.$('contractorSelect7'), 'contractor');});
    meta.bind("contractorSelect8", "change", function(){saveDisplayed('contractorSelect8','contractor8Mirr');getTownsIdsByProvinceBirth('contractorSelect9', 'contractorSelect8');});
    meta.bind("contractorSelect9", "change", function(){saveDisplayed('contractorSelect9','contractor9Mirr');});
    //Altri guidatori
    meta.bind("otherDriversPresents", "change", function(){viewUlteriori(this.value);});
    //Situazione assicurativa
    meta.bind("insuranceSituation", "change", function(){selectedInsuranceSituation();});
    meta.bind("cuClassFromText", "change", function(){selectedCuClassFrom();});
    meta.bind("cuClassToText", "change", function(){selectedCuClassTo();});
    meta.bind("idfirstInsYearInRiskAss", "change", function(){changeYearOfAccidents();});
    meta.bind("numberOfAccidentsInLastSixYears", "change", function(){createTable(this.value);});
    //Dati aggiuntivi
    meta.bind("risparmio", "change", function(){toggleRispSuper(meta.$('risparmio'));});
    meta.bind("conoscoTarga", "change", function(){toggleCarPlate(meta.$('conoscoTarga'));});

    return true;
  }
  function bindCarEvents(){
    meta.bind("carbrand", "change", function(){loadModelsList();loadSetupList();});
    meta.bind("regMonth", "change", function(){checkRegDate('regMonth');loadModelsList();loadSetupList();});
    meta.bind("regYear", "change", function(){checkRegDate('regYear');loadModelsList();loadSetupList();});
    meta.bind("purchYear", "change", function(){checkAnnoAcquisto();setPossesso(this.value);});
    meta.bind("averageKmPerYear", "change", function(){checkDistance(this.value);});
    meta.bind("carmodel", "change", function(){loadSetupList();});
  }

  /*
   * ajax call wrappers for cap to towns translator, carmodels, carsetups
   */
  function getTownsByCap_unused(idSelect, idReference, onLoadPage) {
    var cap = meta.getValue(idReference)
    if (cap > 0) {
      var theUrlQuery = 'queryCode=QRY_TWNBYCAP&mode=HTML&cap=' + cap;
      loadComboList(true, idSelect, theBaseTagForAj + '/getList-aj', theUrlQuery, onLoadPage);
      //setTimeout('missingCapAlert()',1000);
    }
  }
  function checkBeginDate(){
    if (meta.$BaseObj("idInsuranceDateYearMonthDay").selectedIndex > 31)
      alert("Attenzione: specificando una data di decorrenza maggiore di 30 giorni a partire da oggi, alcune compagnie potrebbero non tariffare");
  }
  /*
   *
   * ajax call wrappers for provinces to towns, towns to cap
   *
   */
  function getTownsByProvince(idSelect, idReference, onLoadPage) { // carica i comuni di Residenza
    var theProvince = meta.getValue(idReference);
    if (theProvince != null && theProvince != "-1") {
      var theUrlQuery = 'queryCode=QRY_TWNBYPROVINCE&mode=HTML&province=' + theProvince;
      loadComboList(true, idSelect, theBaseTagForAj + '/getList-aj', theUrlQuery, onLoadPage);
      // setTimeout('missingCapAlert()',1000);
    }
  }
  function getTownsIdsByProvince(idSelect, idReference, onLoadPage) { // carica i comuni di Nascita
    var theProvince = meta.getValue(idReference);
    if (theProvince != null && theProvince != "-1") {
      var theUrlQuery = 'queryCode=QRY_TWNIDBYPROVINCE&mode=HTML&province=' + theProvince;
      loadComboList(true, idSelect, theBaseTagForAj + '/getList-aj', theUrlQuery, onLoadPage);
      //setTimeout('missingCapAlert()',1000);
    }
  }

  function getTownsIdsByProvinceBirth(idSelect, idReference, onLoadPage) { // carica i comuni di Nascita
    var theProvince = meta.getValue(idReference);
    if (theProvince != null && theProvince != "-1") {
      var theUrlQuery = 'queryCode=QRY_TWNIDBYPROVINCEBIRTH&mode=HTML&province=' + theProvince;
      loadComboList(true, idSelect, theBaseTagForAj + '/getList-aj', theUrlQuery, onLoadPage);
      //setTimeout('missingCapAlert()',1000);
    }
  }

  function getCapByTowns(idSelect, idReference, idProvince, onLoadPage) {
    //alert(idSelect+'#'+idReference+'#'+idProvince+"#"+onLoadPage);
    //alert('getCapByTowns');
    var theTown = meta.getValue(idReference);
    var theProvince = meta.getValue(idProvince);
    if (theTown != "-1") {
      var theUrlQuery = 'queryCode=QRY_CAPBYTWN&mode=HTML&town=' + theTown + '&province=' + theProvince;
      loadComboList(true, idSelect, theBaseTagForAj + '/getList-aj', theUrlQuery, onLoadPage);
      
     //setTimeout('missingCapAlert()',1000);
    }
  }
  
  //save the selected value in the mirror hidden field
  function saveDisplayed(idValueContainer,idValueMirror) {
    //alert("entro in saveDisplayed chiamata da " + arguments.callee.caller.toString());
   
    //alert("idValueContainer " + idValueContainer);
    //alert("idValueMirror " + idValueMirror);
    var idSelected = meta.getSelectedIndex(idValueContainer);
    //alert("idSelected " + idSelected);
    var source = meta.getOptions(idValueContainer)[idSelected];
    //alert("source " + source.text);
    var dest = meta.$(idValueMirror);
    //alert("valore vecchio"+ meta.getValue(dest));
    meta.setValue(dest,source.text);
    // dest.value = source.text;
    // alert(meta.getValue(dest));
  }

  //retreive the IdRef by the p
  function saveIdRef(idRefListContainer,CapListContainer){
    //alert("entro in saveIdRef chiamata da " + arguments.callee.caller.toString());
    var list = meta.getValue(idRefListContainer);
    var idSelected = meta.getSelectedIndex(CapListContainer);
    /*var i=0;
    var valori='';
    while (i<IdRefArray.length){
      valori += "a"+i+" "+IdRefArray[i];
      i++;
    }
    
    alert(valori+ " "+IdRefArray[idSelected-1]+" "+idSelected);*/ 
   
    meta.setValue(idRefListContainer,IdRefArray[idSelected-1]);
 }

//caricamento modelli veicoli (Roby)
  function loadModelsList(onLoadPage) {
    var idManufacturer = meta.getValue("carbrand");
    var firstRegistrationDateYear = meta.getValue("regYear");
    var firstRegistrationDateMonth = meta.getValue("regMonth");
    if ((firstRegistrationDateYear < 1900) || (firstRegistrationDateMonth < 1)  || (idManufacturer < 1))
      return false;
    //if (idManufacturer != -1 && firstRegistrationDateMonth != -1 && firstRegistrationDateYear != -1)
    //{
    var wichQueryVehicle= 'QRY_MDLSLST';
    if (meta.getValue('vehicleType')=="BIKE") {
      wichQueryVehicle= 'QRY_BIKE_MDLSLST';
    }
    var theUrlQuery = 'queryCode=' + wichQueryVehicle + '&mode=HTML&brand=' + idManufacturer + '&model=0&setup=0&month=' + firstRegistrationDateMonth + '&year=' +firstRegistrationDateYear;
    loadComboList(true, 'carmodel', servletURL, theUrlQuery, onLoadPage);
    //}
    return true;
  }

//caricamento allestimenti veicoli (Roby)
  function loadSetupList(onLoadPage) {
    var idManufacturer = meta.getValue("carbrand");
    var firstRegistrationDateYear = meta.getValue("regYear");
    var firstRegistrationDateMonth = meta.getValue("regMonth");
    var idModel = meta.getValue("carmodel");

    if ((firstRegistrationDateYear < 1900) || (firstRegistrationDateMonth < 1)  || (idManufacturer < 1) || (idModel < 1))
      return false;
    //if (idManufacturer != -1 && firstRegistrationDateMonth != -1 && firstRegistrationDateYear != -1 && idModel != -1)
    //{
    var wichQueryVehicle= 'QRY_STPSLST';
    if (meta.getValue('vehicleType')=="BIKE") {
      wichQueryVehicle= 'QRY_BIKE_STPSLST';
    }
    var theUrlQuery = 'queryCode=' + wichQueryVehicle + '&mode=HTML&brand=' + idManufacturer + '&model=' + idModel + '&setup=0&month=' + firstRegistrationDateMonth + '&year=' +firstRegistrationDateYear;
    loadComboList(true, 'carsetup', servletURL, theUrlQuery, onLoadPage);
    //}
    return true;
  }

  function loadComboList(updateFlag, comboDivId, servletURL, theUrlQuery, onLoadPage) {
    //alert('loadComboList '+ comboDivId + onLoadPage);
    // var selectBox = $(comboDivId); //document.getElementById(comboDivId);
    if (updateFlag == true) {
      var syncMode = true;
      //Todo: HTML query encode check.
      var updaterOpt = {asynchronous:syncMode,
                        parameters: theUrlQuery,
                        //onSuccess:   function addDefaultSelection(transport){
                        success: function addDefaultSelection(responseText, responseStatus){
                          if(meta.isHttpSuccess(responseStatus)) {
                            ajresptext = "<option value='-1'>-----</option>";
                            if(responseText.indexOf('###')==0){ 
                             //case idRef values followed by cap combo options   
                              ajresptext += responseText.substring(responseText.lastIndexOf('###')+3);
                              // save idRef values in an array with global scope                              var dest = meta.$('holder104Mirr');
                             
                             IdRefArray = responseText.substring(3,responseText.lastIndexOf('###')).split('###');
                             
                            } else{ 
                             ajresptext += responseText;
                           }
                            return ajresptext  ;
                          }
                        },
                        complete: function addDefaultSelection2(request){
                          if(onLoadPage == true) {
                            if(comboDivId == 'carmodel') {
//                              meta.$(comboDivId).focus();
                              meta.setSelectedIndex(comboDivId, indexByValue_fangala(comboDivId, prld_idModel));
                              // TERMINATE LOADING OF CAR BRAND-MODEL-SETUP COMBOS SET
                              loadSetupList(true);
                            }
                            if(comboDivId == 'carsetup'){
//                              meta.$(comboDivId).focus();
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_idSetup));
//                              setTimeout('meta.$("averageKmPerYear").focus();meta.$("averageKmPerYear").blur()',1000);
                            }
                            if(comboDivId == 'holder3'){
                               // meta.$(comboDivId).focus();
                               meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_hldTwn));
                               getCapByTowns('holder4','holder3','holder2', true);
//                               setTimeout('meta.$("holder4").focus();meta.$("holder4").blur()',1000);
                            }
                            if(comboDivId == 'holder4'){
                              // meta.$(comboDivId).focus();
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_hldIdResCit));
                            }
                            if(comboDivId == 'holderSelect9'){
                              // meta.$(comboDivId).focus();
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_hldBrtPlId));
                            }
                            //
                            if(comboDivId == 'driver3'){
                               meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_drvTwn));
                               getCapByTowns('driver4','driver3', 'driver2', true);
                            }
                            if(comboDivId == 'driver4'){
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_drvIdResCit));
                            }
                            if(comboDivId == 'driverSelect9'){
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_drvBrtPlId));
                            }
                            //
                            if(comboDivId == 'contractor3'){
                               meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_cntrTwn));
                               getCapByTowns('contractor4','contractor3', 'contractor2', true);
                            }
                            if(comboDivId == 'contractor4'){
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_cntrIdResCit));
                            }
                            if(comboDivId == 'contractorSelect9'){
                              meta.setAttribute(comboDivId, "selectedIndex", indexByValue_fangala(comboDivId, prld_cntrBrtPlId));
                            }

                          } else {
                            var theIndexNowis = indexByValue_fangala(comboDivId, '');
                            // alert("ciao " + meta.getAttribute(comboDivId,"length"));
                            meta.setAttribute(comboDivId, "selectedIndex", theIndexNowis);
                            if(comboDivId == 'carmodel') {
                              loadSetupList(true);//carica allestimenti nel caso ci sia solo un modello, che viene caricato automaticamente (Roby)
                            }
                          }
                        }
                       };
      //new Ajax.Updater(comboDivId, servletURL, updaterOpt);
      meta.ajaxUpdater(comboDivId, servletURL, updaterOpt);
      /*var readforupdate = document.getElementById(comboDivId).innerHTML; // in this way, the next time you read it, the innerhtml is ok*/
    }
  }

  function indexByValue_fangalaMau(idcombo, theCmbValue){
    var xxx=0;
    var numElem = meta.getAttribute(idcombo,"length");
    if (theCmbValue == -1 && numElem == 2){
        meta.$(idcombo)[0].selectedIndex = 1;
        return;
    }
    for (xxx=1; xxx < meta.getAttribute(idcombo,"length"); xxx++){
//alert (xxx + "Confronto: " + meta.getChildArray(idcombo,"option")[xxx].value + " con: " + theCmbValue);
      if (meta.getChildArray(idcombo,"option")[xxx].value == theCmbValue){
        meta.$(idcombo)[0].selectedIndex = xxx;
        return;
      }
    }
    return;
  }

  function indexByValue_fangala(idcombo, theCmbValue) {
    //alert('indexByValue_fangala');
    //alert(idcombo);
    //alert(theCmbValue);
    var xxx=0;
    var theOptsList = meta.getChildArray(idcombo,"option");
    var numElem = meta.getAttribute(idcombo,"length");
    if (numElem == 2) {
      //alert('numElem 2')
      meta.$(idcombo).focus();
      return 1;
    } else {
      for (xxx=0; xxx < numElem; xxx++){
        if (theOptsList[xxx].value == theCmbValue){
          return xxx;
        }
      }
    }
    return -1;
  }

  function indexByValue_UpperLimit(idcombo, theCmbValue) {
    var xxx=0;
    var theOptsList = meta.getChildArray(idcombo,"option");
    var numElem = meta.getAttribute(idcombo,"length");
    if (numElem == 2) {
      meta.$(idcombo).focus();
      return 1;
    } else {
      for (xxx=0; xxx < numElem; xxx++){
        if (theOptsList[xxx].value >= theCmbValue){
          return xxx;
        }
      }
    }
    return numElem;
  }

  /*
   * Delay for a number of milliseconds
   */
  function wait(delay){
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
  }
  // ok, the accidents table builder
  function createTable(rowsNumber) {
    if(parseInt(rowsNumber) < 1) {
      //document.getElementById("accidentsTableBox").style.visibility = "hidden";
      //meta.setCss("accidentsTableBox", "visibility", "hidden");
      meta.setCss("accidentsBlock", "display", "none");
      meta.setCss("accidentsTableBox", "display", "none");
      return;
    }
    //if (document.getElementById("idInsYearsInLastFive").value == -1) {
    if (parseInt(meta.getValue("idfirstInsYearInRiskAss")) == -1) {
      alert("Selezionare prima il primo anno assicurato sull'attestato di rischio");// + meta.getValue("idInsYearsInLastFive") + ":" + rowsNumber);
    	meta.setSelectedIndex("numberOfAccidentsInLastSixYears",-1);
      return;
    }
    // 20090605: mods for ZRC: insurance starting year is fixed
    var ArrayYears = getArrayOfAccident();
    // according to running values, (re)fit rows number
    if((ArrayOfRunningValues != null) && (ArrayOfRunningValues.length > 0)) {
      if (rowsNumber > ArrayOfRunningValues.length) {
        for(var jjj=ArrayOfRunningValues.length;jjj <rowsNumber; jjj+=2)
          ArrayOfRunningValues[jjj] = '1';
        ArrayOfRunningValues[jjj+1] = '1';
      }
    }
    // WHY?????
    var arrValues = ArrayOfRunningValues;
    // build table
    var i;
    /* ROBERTO: code for new page
    var html = "<tr class=\"formSubtitle\"><td>Sinistro</td><td>Anno</td>";
    html += "<td>Tipo sinistro";
    html += "<a id='accidentTable' href='javascript:void(0);' class='tooltipped' title=\"<bean:message key="tooltip.typeOfAccident"/>\">(i)</a></td></tr>";
    */
    // ROBERTO: current code
    var html = "<tr><td><strong>Sinistro</strong></td><td><strong>Anno</strong></td>";
    html += "<td><strong>Tipo sinistro</strong>";
    html += "<a id='accidentTable' href='javascript:void(0);' class='tooltipped2' tooltiptitle='' title=\"" + beanAccMessage + "\"> (i)</a></td></tr>";
    for (i = 0; i < rowsNumber; i++) {
      var theStyle1 = "";
      //ROBERTO: code for new page remove "if else"
      if (i%2 == 0) {
        theStyle1 = " class='secondBarTabel'";
      } else {
        theStyle1 = "";
      }
      var theYear = arrValues[(i*2)] == undefined ? 1 : arrValues[(i*2)] ;
      var theAcc = arrValues[(i*2) +1]== undefined ? 1 : arrValues[(i*2)+1] ;
      /* ROBERTO: code for new page
      html = html + "<tr><td>Sinistro " + (i+1) + "</td>";
      html = html + "<td>" + buildSelectAccYears(i, ArrayYears,theYear) + "</td>";
      html = html + "<td><div id=\"AccTypCmb_" + (i+1) + "\"><div id=\"AccTypCmb_" + (i+1) + "_rcnt\">" + buildSelectAccTypes(i, theAcc, theYear) + "</div></div></td>";
      html = html + "<td>" + popErrorsaInAccYears("fz_" + i +"()") + "</td></tr>";
      */

      //ROBERTO: current code
      html = html + "<tr><td" + theStyle1 + ">Sinistro " + (i+1) + "</td><td" + theStyle1 + ">" +
                            buildSelectAccYears(i, ArrayYears,theYear) +
                        "</td><td" + theStyle1 + "><div id=\"AccTypCmb_" + (i+1) + "\"><div id=\"AccTypCmb_" + (i+1) + "_rcnt\">" +
                            buildSelectAccTypes(i, theAcc, theYear) +
                        "</div></div></td><td" + theStyle1 + " style='text-align:right;'>" + popErrorsaInAccYears("fz_" + i +"()") +
                    "</td></tr>";
    }
    // TODO: remove,,,
    // quick patch for ie problems with direct access to innerhtml...
    // the old var is just to keep the old code....
    var old=false;
    if (old) {
      // old code, not working with ie
      //document.getElementById("accidentsTable").innerHTML = html;
      meta.setHtml("accidentsTable", html);
      //document.getElementById("accidentsTableBox").style.visibility = "visible";
      meta.setCss("accidentsTableBox", "visibility", "visible");
      //document.getElementById("accidentsTableBox").style.display = "block";
      meta.setCss("accidentsTableBox", "display", "block");
      //meta.tooltips2("tooltipped2");
    } else {
      /* ROBERTO: code for new page
      var theinnhtml = "<table id=\"accidentsTable\">" + html + "</table>";
      innerHTMLPatch("accidentsTableBox",theinnhtml);
      */
      // ROBERTO: current code
      var theinnhtml = "          <table id=\"accidentsTable\"><tbody>" + html + "</tbody></table>";
      innerHTMLPatch("accidentsTableBox",theinnhtml);
      //document.getElementById("accidentsTableBox").style.visibility = "visible";
      meta.setCss("accidentsTableBox", "visibility", "visible");
      //document.getElementById("accidentsTableBox").style.display = "block";
      meta.setCss("accidentsBlock", "display", "block");
      meta.setCss("accidentsTableBox", "display", "block");
      /* ROBERTO: code for new page
      meta.setCss("accidentsTableBox", "float", "left");
      meta.tooltips3("tooltipped", "error2");
      */
      // ROBERTO: current code
      // init tooltips only if there is something to init(i*2) +1
      // it seems that there is always something to init....so...
      // if (html.length > 0)
      //meta.tooltips3("tooltipped2", "error2");
      $('.tooltipped2').ChillTip();
      /* ROBERTO: code to add for new page
      meta.setCss("accidentsTableLabel", "display", "block");
      meta.setCss("accidentsTableClear", "display", "block");
      */
    }
    if ((rowsNumber > 0) && (meta.getSelectedIndex("AccidentYear1")==0)) {
      //document.getElementById("AccidentYear1").focus();
      meta.$("AccidentYear1").focus();
    }
  }
  function cleanAccTable(){
    var theinnhtml = "          <table id=\"accidentsTable\"><tbody><tr><td></td><td></td><td></td><td></td></tr></tbody></table>";
    innerHTMLPatch("accidentsTableBox",theinnhtml);

  }

  // tabindex sinistri 120-...
  function buildSelectAccYears(cmbIndex, theArrYears, theYearValue){
    var theResult="";
    //var theTabIndex = (cmbIndex * 2) + 61;
    var theTabIndex = (cmbIndex * 2) + 120;
    theResult = "<select id='AccidentYear" + (cmbIndex+1) + "'" +
                  " onblur=loadCmbAccTypesList(this.value," + (cmbIndex+1) + "); onchange='setArrayOfRunningValues(AccidentYear" + (cmbIndex+1) + ", true);checkCU("+(cmbIndex+1)+");'" +
                  " tabindex='" + theTabIndex + "' name='theRCAPreviewFormBean.accidentsYear[" + (cmbIndex) + "]'>" +
                  buildOptions(theArrYears, theYearValue) + " </select>";
    return theResult;
  }

  function buildSelectAccTypes(cmbIndex, theSelectedAccType, theSelectedYear){
    var theResult="";
    var theTabIndex = (cmbIndex * 2) + 1 + 120;
    //var theTabIndex = (cmbIndex * 2) + 1 + 61;
    theResult = "<select id='AccidentType" + (cmbIndex+1) + "'" +
                  " onchange='setArrayOfRunningValues(AccidentType" + (cmbIndex+1) + ", false);'" +
                  " tabindex='" + theTabIndex + "' name='theRCAPreviewFormBean.accidentsType[" + (cmbIndex) + "]'> " +
                  buildAccTypesOptionsList(theSelectedYear, theSelectedAccType) + "</select>";
    return theResult;
  }

  function loadCmbAccTypesList(thecmbaccyear, thecmbacctypesindex){
    // var theCmbAccTypes = document.getElementById("AccidentType" + thecmbacctypesindex);
    var theinnhtml = buildSelectAccTypes(thecmbacctypesindex -1,"-1",thecmbaccyear);
    var theselContainer = "AccTypCmb_"+ thecmbacctypesindex;
    innerHTMLPatch(theselContainer, theinnhtml);
    /*theCmbAccTypes.innerHTML = buildAccTypesOptionsList(thecmbaccyear, "-1");*/
    return false;
  }

  function buildAccTypesOptionsList(psdSelectedYear, psdAccType){
    var theResult = "";
    var theValsToUse;
    // load accidents type list according to selected year
    if(psdSelectedYear.toString() == "2007"){
      theValsToUse = ArrayAccidentsTypes;
    } else {
      if(psdSelectedYear < 2007) {
        theValsToUse = ArrayAccidentsTypesbef2007;
      } else {
        theValsToUse = ArrayAccidentsTypesaft2007;
      }
    }
    theResult = buildOptions(theValsToUse, psdAccType);
    return theResult;
  }

  function buildOptions(arrVals, selectedvalue) {
    var iii;
    var result = '';
    for (iii =0; iii < arrVals.length; iii+=2) {
      result += '<option ' + setTheSelectedOpt(arrVals[iii], selectedvalue)  + ' value=\"' + arrVals[iii] + '\">' + arrVals[iii+1] + "</option>";
    }
    return result;
  }
  function setTheSelectedOpt(tmpVal, selectedvalue) {
    return (tmpVal == selectedvalue ? "selected=\"yes\"" : "");
  }

  function popErrorsaInAccYears(functionName){
    var theResult= eval(functionName);

    if (theResult == undefined)
      return "";
    else
      return theResult;

  }
  function submitter(){
    //
    var hldIsDrv = meta.getValue('holderIsDriver');
    var hldIsCtr = meta.getValue('holderIsContractor');
    //
    var hldSex = meta.getValue('holder1');
    var cntrSex = meta.getValue('contractor1');
    //
    var othDrivs = meta.getValue('otherDriversPresents');
    //
    var insSit = meta.getValue('insuranceSituation');
    var insCert = meta.getValue('selectRiskCertificate');
    //
    var savTyp = meta.getValue('risparmio');
    //
    if (hldSex=="30")
      cleanNonSocData('holder');
    if (hldIsDrv == "true"){
      sbiankett_pers('driver', savTyp != 10);
    }
    if (hldIsCtr == "true"){
      sbiankett_pers('contractor');
    } else {
      if (cntrSex=="30")
        cleanNonSocData('contractor');
    }
    //
    if ((othDrivs == "-1") || (othDrivs == "0")) {
      sbiankett_othDrivers();
    }
    //
    if ((insSit == "1") || (insSit == "2")) {
      if (insCert == "0") {
        sbiankett_insuSitu();
      }
    }
    //
    /*if (savTyp != "10"){
      sbiankett_superSav();
    }*/
  }
  //
  function sbiankett_othDrivers() {
    meta.setValue("youngestDriverAge", "-1");
    meta.setValue("newcomerDrivers", "-1");
  }
  //
  function sbiankett_insuSitu() {
    meta.setValue('idInsYearsInLastFive',"-1");
    meta.setValue('cuClassToText',"-1");
    meta.setValue('cuClassFromText',"-1");
    meta.setValue('idfirstInsYearInRiskAss',"-1");
    cleanAccTable();
    meta.setValue('numberOfAccidentsInLastSixYears',"-1");
  }
  //
  function sbiankett_superSav(){
    meta.setValue('carPlate','');
    sbiankett_persExt('holder');
    sbiankett_persExt('driver');
    sbiankett_persExt('contractor');
  }
  //
  function sbiankett_pers(baseName, superSpare){
    for (var xxx=1; xxx<6;xxx++)
      setFieldVal(baseName + xxx,"-1");
    for (var yyy=1; yyy<12; yyy++)
      setFieldVal(baseName + 'Select' + yyy,"-1");
    meta.setValue(baseName + '2Mirr','');
    meta.setValue(baseName + '4Mirr','');
    meta.setValue(baseName + '8Mirr','');
    meta.setValue(baseName + '9Mirr','');
    sbiankett_persExt(baseName);
  }
  //
  function sbiankett_persExt(baseName){
    for (var xxx=1; xxx<6;xxx++)
      setFieldVal(baseName + 'Ss' + xxx,'');
  }
  //
  function cleanNonSocData(baseName){
    for (var xxx=1; xxx<12; xxx++)
      setFieldVal(baseName + 'Select' + xxx,"-1");
  }
  function setFieldVal(theName, theVal){
    meta.setValue(theName,theVal);
  }

// Required form field check
// Roberto
function checkRequiredAll(which) {
  var pass=true;
  if (document.images) {
    for (i=0;i<which.length;i++) {
      var tempobj=which.elements[i];
      //if (tempobj.name.substring(0,8)=="required") {
      if ((tempobj.type=="text"&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.value==-1)) {
        pass=false;
        break;
      }
      //}
    }
  }
  if (!pass) {
    //shortFieldName=tempobj.name.substring(8,30).toUpperCase();
    alert("Per poter procedere devi compilare tutti i campi del form");
    return false;
  } else return true;
}

