/*******************************************************************************

 Costanti (non usare const perchè a IE non piace)

*******************************************************************************/

var AJAX_READYSTATE_COMPLETE = 4;
var AJAX_STATUS_OK = 200;
var BACKGROUNDCOLOR_ENABLED = "white";
var BACKGROUNDCOLOR_ERROR = "yellow";

/*******************************************************************************

 Variabili globali.

*******************************************************************************/

var localitaPartenzaArray = new Array();
var localitaArrivoArray = new Array();
var capPartenzaArray = new Array();
var capArrivoArray = new Array();
var parametriRicevuti = false;
var localitaPartenzaSelectDone = false;
var capPartenzaSelectDone = false;

/*******************************************************************************

 AJAX

*******************************************************************************/

var request = false;

try {
  request = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      request = false;
    }
  }
}

if (!request) alert("Errore di inizializzazione XMLHttpRequest!");

/*******************************************************************************
Operazioni varie al caricamento della pagina.
@author Danilo Cussini
@param ID lingua ISO2
@return - 
*******************************************************************************/

function Tempi_consegna_load(lang_id) {

  document.query.localitaPartenzaSelect.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.localitaPartenza.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.localitaPartenzaSelect.disabled = true;
  document.query.localitaPartenza.disabled = true;
  document.query.capPartenzaSelect.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.capPartenza.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.capPartenzaSelect.disabled = true;
  document.query.capPartenza.disabled = true;

  var provinciaPartenza = document.query.provinciaPartenza.value;
  var localitaPartenza = document.query.localitaPartenza.value;
  var capPartenza = document.query.capPartenza.value;

  // Se ho ricevuto i parametri relativi alla partenza li elaboro.
  
  if (provinciaPartenza != "") {
    parametriRicevuti = true;
    Tempi_consegna_provinciaPartenza(document.query.provinciaPartenza.value);
    if (localitaPartenza != "") {
      if (localitaPartenzaSelectDone)
        Tempi_consegna_localitaPartenza(document.query.provinciaPartenza.value , document.query.localitaPartenza.value);
      else
        setTimeout("Tempi_consegna_localitaPartenza(document.query.provinciaPartenza.value , document.query.localitaPartenza.value);" , 1000);
      if (capPartenza != "") {
        if (capPartenzaSelectDone)
          Tempi_consegna_capPartenza(document.query.provinciaPartenza.value , document.query.localitaPartenza.value , document.query.capPartenza.value);
        else
          setTimeout("Tempi_consegna_capPartenza(document.query.provinciaPartenza.value , document.query.localitaPartenza.value , document.query.capPartenza.value);" , 2000);
        setTimeout("document.getElementById(\"provinciaArrivo\").focus()" , 2000);
      } 
    }  
  } else setTimeout("document.getElementById(\"provinciaPartenza\").focus()" , 100); 

  document.query.localitaArrivoSelect.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.localitaArrivo.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.capArrivoSelect.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;;
  document.query.capArrivo.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;;
  document.query.localitaArrivoSelect.disabled = true;
  document.query.capArrivoSelect.disabled = true;
  document.query.localitaArrivo.disabled = true;
  document.query.capArrivo.disabled = true;

  traduzione(lang_id); 

}

/*******************************************************************************
Controlla la sigla provincia.
@author Danilo Cussini
@param Sigla provincia
@return true = sigla provincia valida
@return false = sigla provincia non valida
*******************************************************************************/

function Tempi_consegna_chkProvincia(provincia) {
  if (provincia == ""){
	return false;
  }
  return true;
}

/*******************************************************************************
Elabora la provincia di partenza.
@author Danilo Cussini
@param Sigla provincia
@return true = provincia partenza valida
@return false = provincia partenza non valida
*******************************************************************************/

function Tempi_consegna_provinciaPartenza(provincia) {
  document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  provincia = provincia.toUpperCase();
  if (!Tempi_consegna_chkProvincia(provincia)) {
    document.query.localitaPartenza.value = "";
    document.query.capPartenza.value = "";
    setTimeout("document.getElementById(\"provinciaPartenza\").focus()" , 100);
    document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
	alert(dizionario[483]); // Scegliere oppure inserire la provincia di partenza.
    return false;
  }
  document.query.provinciaPartenza.value = provincia;
  var id = "provinciaPartenza" + provincia;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"provinciaPartenza\").focus()" , 100);
    document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.provinciaPartenzaSelect[0].selected = true;
    document.query.localitaPartenza.value = "";
    document.query.capPartenza.value = "";
    alert (dizionario[484]); // Provincia di partenza errata.
    try {
      document.query.localitaPartenzaSelect[0].selected = true;
      document.query.capPartenzaSelect[0].selected = true;
    } catch (failed) {}
    return false;
  }
  Tempi_consegna_getListaLocalitaPerProvincia(provincia , Tempi_consegna_setListaLocalitaPerProvinciaPartenza);
  document.query.localitaPartenza.disabled = false;
  setTimeout("document.getElementById(\"localitaPartenza\").focus()" , 100);
  document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  return true;
}

/*******************************************************************************
Elabora la selezione della provincia di partenza.
@author Danilo Cussini
@param Sigla provincia
@return true = provincia partenza valida
@return false = provincia partenza non valida
*******************************************************************************/

function Tempi_consegna_provinciaPartenzaSelect(provincia) {
  document.query.localitaPartenza.value = "";
  document.query.capPartenza.value = "";
  if (!Tempi_consegna_chkProvincia(provincia)) {
    return false;
  }
  document.query.provinciaPartenza.value = provincia;
  document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  Tempi_consegna_getListaLocalitaPerProvincia(provincia , Tempi_consegna_setListaLocalitaPerProvinciaPartenza);
  document.query.localitaPartenza.disabled = false;
  setTimeout("document.getElementById(\"localitaPartenza\").focus()" , 100);
  document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  return true;
}


/*******************************************************************************
Elabora la provincia di arrivo.
@author Danilo Cussini
@param Sigla provincia
@return true = provincia arrivo valida
@return false = provincia arrivo non valida
*******************************************************************************/

function Tempi_consegna_provinciaArrivo(provincia) {
  document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  provincia = provincia.toUpperCase();
  if (!Tempi_consegna_chkProvincia(provincia)) {
    document.query.localitaArrivo.value = "";
    document.query.capArrivo.value = "";
    setTimeout("document.getElementById(\"provinciaArrivo\").focus()" , 100);
    document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
	alert(dizionario[485]); // Scegliere oppure inserire la provincia di arrivo.
    return false;
  }
  document.query.provinciaArrivo.value = provincia;
  var id = "provinciaArrivo" + provincia;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"provinciaArrivo\").focus()" , 100);
    document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.provinciaArrivoSelect[0].selected = true;
    document.query.localitaArrivo.value = "";
    document.query.capArrivo.value = "";
    alert(dizionario[486]); // Provincia di arrivo errata.
    try {
      document.query.localitaArrivoSelect[0].selected = true;
      document.query.capArrivoSelect[0].selected = true;
    } catch (failed) {}
    return false;
  }
  Tempi_consegna_getListaLocalitaPerProvincia(provincia , Tempi_consegna_setListaLocalitaPerProvinciaArrivo);
  document.query.localitaArrivo.disabled = false;
  setTimeout("document.getElementById(\"localitaArrivo\").focus()" , 100);
  document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  return true;
}

/*******************************************************************************
Elabora la selezione della provincia di arrivo.
@author Danilo Cussini
@param Sigla provincia
@return true = provincia arrivo valida
@return false = provincia arrivo non valida
*******************************************************************************/

function Tempi_consegna_provinciaArrivoSelect(provincia) {
  document.query.localitaArrivo.value = "";
  document.query.capArrivo.value = "";
  if (!Tempi_consegna_chkProvincia(provincia)) {
    return false;
  }
  document.query.provinciaArrivo.value = provincia;
  document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  Tempi_consegna_getListaLocalitaPerProvincia(provincia , Tempi_consegna_setListaLocalitaPerProvinciaArrivo);
  document.query.localitaArrivo.disabled = false;
  setTimeout("document.getElementById(\"localitaArrivo\").focus()" , 100);
  document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  return true;
}

/*******************************************************************************
Controlla il nome della località.
@author Danilo Cussini
@param Sigla provincia
@param Località
@return true = località valida
@return false = località non valida
*******************************************************************************/

function Tempi_consegna_chkLocalita(provincia , localita) {
  if (localita == ""){
	return false;
  }
  return true;
}

/*******************************************************************************
Elabora la località di partenza.
@author Danilo Cussini
@param Sigla provincia
@param Località
@return true = località valida
@return false = località non valida
*******************************************************************************/

function Tempi_consegna_localitaPartenza(provincia , localita) {
  document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  if (!Tempi_consegna_chkLocalita(provincia , localita)) {
    setTimeout("document.getElementById(\"localitaPartenza\").focus()" , 100);
    document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.capPartenza.value = "";
	alert(dizionario[487]); // Scegliere oppure inserire la località di partenza.
    return false;
  }
  Tempi_consegna_getLocalitaNormalizzata(provincia , localita.toUpperCase() , Tempi_consegna_setLocalitaPartenza);
  return true;
}

/*******************************************************************************
Imposta la località di partenza. 
Ne controlla l'esistenza tra quelle in lista. 
Chiama la funzione di composizione della lista dei CAP.
@author Danilo Cussini
@param Sigla provincia
@param Località
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setLocalitaPartenza(provincia , localita){
  document.query.localitaPartenza.value = localita;
  var id = "localitaPartenza" + localita;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"localitaPartenza\").focus()" , 100);
    document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.localitaPartenzaSelect[0].selected = true;
    document.query.capPartenza.value = "";
	alert(dizionario[488]); // Località di partenza sconosciuta.
    try {
      document.query.capPartenzaSelect[0].selected = true;
    } catch (failed) {}
    return false;
  }
  Tempi_consegna_getListaCapPerLocalita(provincia , localita , Tempi_consegna_setListaCapPerLocalitaPartenza);
  document.query.capPartenza.disabled = false;
  setTimeout("document.getElementById(\"capPartenza\").focus()" , 100);
  document.query.capPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
}

/*******************************************************************************
Elabora la località di arrivo.
@author Danilo Cussini
@param Sigla provincia
@param Località
@return true = località valida
@return false = località non valida
*******************************************************************************/

function Tempi_consegna_localitaArrivo(provincia , localita) {
    document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  if (!Tempi_consegna_chkLocalita(provincia , localita)) {
    setTimeout("document.getElementById(\"localitaArrivo\").focus()" , 100);
    document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.capArrivo.value = "";
	alert(dizionario[489]); // Scegliere oppure inserire la località di arrivo.
    return false;
  }
  Tempi_consegna_getLocalitaNormalizzata(provincia , localita.toUpperCase() , Tempi_consegna_setLocalitaArrivo);
  return true;
}

/*******************************************************************************
Imposta la località di arrivo.
Ne controlla l'esistenza tra quelle in lista. 
Chiama la funzione di composizione della lista dei CAP.
@author Danilo Cussini
@param Sigla provincia
@param Località
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setLocalitaArrivo(provincia , localita){
  document.query.localitaArrivo.value = localita;
  var id = "localitaArrivo" + localita;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"localitaArrivo\").focus()" , 100);
    document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.localitaArrivoSelect[0].selected = true;
    document.query.capArrivo.value = "";
	alert(dizionario[490]); // Località di arrivo sconosciuta.
    try {
      document.query.capArrivoSelect[0].selected = true;
    } catch (failed) {}
    return false;
  }
  Tempi_consegna_getListaCapPerLocalita(provincia , localita , Tempi_consegna_setListaCapPerLocalitaArrivo);
  document.query.capArrivo.disabled = false;
  setTimeout("document.getElementById(\"capArrivo\").focus()" , 100);
  document.query.capArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
}

/*******************************************************************************
Controlla il CAP.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param CAP
@return true = CAP valido
@return false = CAP non valido
*******************************************************************************/

function Tempi_consegna_chkCap(provincia , localita , cap) {
  if (cap == ""){
	return false;
  }
  return true;
}

/*******************************************************************************
Elabora il CAP di partenza.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param CAP
@return true = CAP valido
@return false = CAP non valido
*******************************************************************************/

function Tempi_consegna_capPartenza(provincia , localita , cap) {
  document.query.capPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  if (!Tempi_consegna_chkCap(provincia , localita , cap)) {
    setTimeout("document.getElementById(\"capPartenza\").focus()" , 100);
    document.query.capPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
	alert(dizionario[491]); // Scegliere oppure inserire il codice avviamento postale di partenza.
    return false;
  }
  document.query.capPartenza.value = cap;
  var id = "capPartenza" + cap;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"capPartenza\").focus()" , 100);
    document.query.capPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    try {document.query.capPartenzaSelect[0].selected = true;} catch (failed) {}
    alert(dizionario[492]); // CAP di partenza errato.
    return false;   
  }
  document.query.provinciaArrivo.focus();
  return true;
}

/*******************************************************************************
Elabora il CAP di arrivo.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param CAP
@return true = CAP valido
@return false = CAP non valido
*******************************************************************************/

function Tempi_consegna_capArrivo(provincia , localita , cap) {
  document.query.capArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  if (!Tempi_consegna_chkCap(provincia , localita , cap)) {
    setTimeout("document.getElementById(\"capArrivo\").focus()" , 100);
    document.query.capArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
	alert(dizionario[493]); // Scegliere oppure inserire il codice avviamento postale di arrivo.
    return false;
  }
  document.query.capArrivo.value = cap;
  var id = "capArrivo" + cap;
  try {
    document.getElementById(id).selected = true;
  } catch (failed) {
    setTimeout("document.getElementById(\"capArrivo\").focus()" , 100);
    document.query.capArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    try {document.query.capArrivoSelect[0].selected = true;} catch (failed) {}
    alert(dizionario[494]); // CAP di arrivo errato.
    return false;   
  }
  document.query.Calcolare.focus();
  return true;
}

/*******************************************************************************
Lista della località di una provincia.
@author Danilo Cussini
@param Sigla provincia
@param Funzione da chiamare
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_getListaLocalitaPerProvincia(provincia , callback) {
  var url = "Tempi_consegna_localitaProvincia.txt?provincia=" + provincia + "&separatore=,";
  request.open("GET", url, true);
  request.onreadystatechange = function()
  {
    if (request.readyState == AJAX_READYSTATE_COMPLETE){
      if (request.status == AJAX_STATUS_OK){
        var response = request.responseText.split("|");
        callback(provincia , response);
      } else
        alert("Lo stato è: " + request.status);
    }
  }
  request.send(null);
  return true;
}

/*******************************************************************************
Imposta la lista della località della provincia di partenza.
@author Danilo Cussini
@param Sigla provincia
@param Lista delle località
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setListaLocalitaPerProvinciaPartenza(provincia , response) {
  Tempi_consegna_resetLocalitaPartenzaSelect();
  Tempi_consegna_resetCapPartenzaSelect();
  if (parametriRicevuti == false) {
    document.query.localitaPartenza.value = "";
    Tempi_consegna_resetCapPartenza();
  }
  var rpyOpCode = response[0];
  var count = response[1];
  localitaPartenzaArray = eval('(' + response[2] + ')');
  option = new Option("" , "");
  document.query.localitaPartenzaSelect.options[0] = option;
  document.query.localitaPartenzaSelect.options[0].selected;
  for (i = 0; i < count; i++) {
    option = new Option(localitaPartenzaArray[i] , localitaPartenzaArray[i]);
    option.id = "localitaPartenza" + localitaPartenzaArray[i];
    document.query.localitaPartenzaSelect.options[i+1] = option;
  }  
  localitaPartenzaSelectDone = true;
  document.query.localitaPartenzaSelect.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  document.query.localitaPartenzaSelect.disabled = false;
  return true;
}

/*******************************************************************************
Imposta la lista della località della provincia di arrivo.
@author Danilo Cussini
@param Sigla provincia
@param Lista delle località
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setListaLocalitaPerProvinciaArrivo(provincia , response) {
  Tempi_consegna_resetLocalitaArrivoSelect();
  document.query.localitaArrivo.value = "";
  Tempi_consegna_resetCapArrivoSelect();
  Tempi_consegna_resetCapArrivo();
  var rpyOpCode = response[0];
  var count = response[1];
  localitaArrivoArray = eval('(' + response[2] + ')');
  option = new Option("" , "");
  document.query.localitaArrivoSelect.options[0] = option;
  document.query.localitaArrivoSelect.options[0].selected;
  for (i = 0; i < count; i++) {
    option = new Option(localitaArrivoArray[i] , localitaArrivoArray[i]);
    option.id = "localitaArrivo" + localitaArrivoArray[i];
    document.query.localitaArrivoSelect.options[i+1] = option;
  }  
  document.query.localitaArrivoSelect.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  document.query.localitaArrivoSelect.disabled = false;
  return true;
}

/*******************************************************************************
Reperisce la lista dei CAP della località.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param Funzione da chiamare
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_getListaCapPerLocalita(provincia , localita , callback) {
  var url = "Tempi_consegna_cap.txt?provincia=" + provincia + "&localita=" + localita + "&separatore=,";
  request.open("GET", url, true);
  request.onreadystatechange = function()
  {
    if (request.readyState == AJAX_READYSTATE_COMPLETE){
      if (request.status == AJAX_STATUS_OK){
        var response = request.responseText.split("|");
        callback(provincia , localita , response);
      } else
        alert("Lo stato è: " + request.status);
    }
  }
  request.send(null);
  return true;
}

/*******************************************************************************
Imposta la lista dei CAP della località di partenza.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param Lista dei CAP
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setListaCapPerLocalitaPartenza(provincia , localita , response) {
  Tempi_consegna_resetCapPartenzaSelect();
  if (parametriRicevuti == false) document.query.capPartenza.value = "";
  var rpyOpCode = response[0];      
  var count = response[1];      
  capPartenzaArray = eval('(' + response[2] + ')');
  switch(count){
    case "000":
      break;
    case "001":
      option = new Option(capPartenzaArray[0] , capPartenzaArray[0]);
      option.id = "capPartenza" + capPartenzaArray[0];
      document.query.capPartenzaSelect.options[0] = option;
      document.query.capPartenza.value = capPartenzaArray[0];
      document.query.capPartenzaSelect.options[0].selected;
      document.query.provinciaArrivo.focus();
      break;
    default:
      option = new Option("" , "");
      document.query.capPartenzaSelect.options[0] = option;
      document.query.capPartenzaSelect.options[0].selected;
      for (i = 0; i < count; i++) {
        option = new Option(capPartenzaArray[i] , capPartenzaArray[i]);
        option.id = "capPartenza" + capPartenzaArray[i];
        document.query.capPartenzaSelect.options[i+1] = option;
      }
  }
  capPartenzaSelectDone = true;
  document.query.capPartenzaSelect.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  document.query.capPartenzaSelect.disabled = false;
  return true;
}

/*******************************************************************************
Imposta la lista dei CAP della località di arrivo.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param Lista dei CAP
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_setListaCapPerLocalitaArrivo(provincia , localita , response) {
  Tempi_consegna_resetCapArrivoSelect();
  document.query.capArrivo.value = "";
  var rpyOpCode = response[0];      
  var count = response[1];      
  capArrivoArray = eval('(' + response[2] + ')');
  switch(count){
    case "000":
      break;
    case "001":
      option = new Option(capArrivoArray[0] , capArrivoArray[0]);
      option.id = "capArrivo" + capArrivoArray[0];
      document.query.capArrivoSelect.options[0] = option;
      document.query.capArrivo.value = capArrivoArray[0];
      document.query.capArrivoSelect.options[0].selected;
      document.query.Calcolare.focus();
      break;
    default:
      option = new Option("" , "");
      document.query.capArrivoSelect.options[0] = option;
      document.query.capArrivoSelect.options[0].selected;
      for (i = 0; i < count; i++) {
        option = new Option(capArrivoArray[i] , capArrivoArray[i]);
        option.id = "capArrivo" + capArrivoArray[i];
        document.query.capArrivoSelect.options[i+1] = option;
      }
  }
  document.query.capArrivoSelect.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  document.query.capArrivoSelect.disabled = false;
  return true;
}

/*******************************************************************************
Normalizza il nome della località.
@author Danilo Cussini
@param Sigla provincia
@param Località
@param Funzione da chiamare
@return true = fatto
@return false = non fatto
*******************************************************************************/

function Tempi_consegna_getLocalitaNormalizzata(provincia , localita , callback) {
  var url = "Tempi_consegna_localita.txt?provincia=" + provincia + "&localita=" + localita;
  request.open("GET", url, true);
  request.onreadystatechange = function()
  {
    if (request.readyState == AJAX_READYSTATE_COMPLETE){
      if (request.status == AJAX_STATUS_OK){
        var response = request.responseText.split("|");
        var rpyOpCode = response[0];
        if (rpyOpCode == "DONE      "){
          callback(provincia , response[1]);
        } else callback(provincia , localita);
      } else
        callback(provincia , localita);
    }
  }
  request.send(null);
  return true;
}

/*******************************************************************************
Controlli su tutto il forma
@author Danilo Cussini
@return true = OK
@return false = errori
*******************************************************************************/

function Tempi_consegna_validate() {

  var errori = 0;

  if (!Tempi_consegna_chkProvincia(document.query.provinciaArrivo.value)) {
    document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.provinciaArrivo.focus();
    errori++;
  } else {
    if (!Tempi_consegna_chkLocalita(document.query.provinciaArrivo.value , document.query.localitaArrivo.value)) {
      if (!document.query.localitaArrivo.disabled){
        document.query.localitaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
        document.query.localitaArrivo.focus();
      }
      errori++;
    } else {
      if (!Tempi_consegna_chkCap(document.query.provinciaArrivo.value , document.query.localitaArrivo.value , document.query.capArrivo.value)) {
        if (!document.query.capArrivo.disabled){
          document.query.capArrivo.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
          document.query.capArrivo.focus();
        }
        errori++;
      }    
    }
  }

  if (!Tempi_consegna_chkProvincia(document.query.provinciaPartenza.value)) {
    document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
    document.query.provinciaPartenza.focus();
    errori++;
  } else {
    if (!Tempi_consegna_chkLocalita(document.query.provinciaPartenza.value , document.query.localitaPartenza.value)) {
      if (!document.query.localitaPartenza.disabled){
        document.query.localitaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
        document.query.localitaPartenza.focus();
      }
      errori++;
    } else {
      if (!Tempi_consegna_chkCap(document.query.provinciaPartenza.value , document.query.localitaPartenza.value , document.query.capPartenza.value)) {
        if (!document.query.capPartenza.disabled){
          document.query.capPartenza.style.backgroundColor = BACKGROUNDCOLOR_ERROR;
          document.query.capPartenza.focus();
        }
        errori++;
      }    
    }
  }

  if (errori > 0) {
    alert(dizionario[495]); // Inserire i dati obbligatori.
    return false;
  }

  if (!Tempi_consegna_calcolo(document.query.provinciaPartenza.value , document.query.localitaPartenza.value , document.query.capPartenza.value , document.query.provinciaArrivo.value , document.query.localitaArrivo.value , document.query.capArrivo.value)) {
    return false;
  }
  
  return true;

}

/*******************************************************************************
Reset del form
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_reset(){
  Tempi_consegna_resetProvinciaPartenza();
  Tempi_consegna_resetLocalitaPartenzaSelect();
  Tempi_consegna_resetLocalitaPartenza();
  Tempi_consegna_resetCapPartenzaSelect();
  Tempi_consegna_resetCapPartenza();
  Tempi_consegna_resetProvinciaArrivo();
  Tempi_consegna_resetLocalitaArrivoSelect();
  Tempi_consegna_resetLocalitaArrivo();
  Tempi_consegna_resetCapArrivoSelect();
  Tempi_consegna_resetCapArrivo();
  setTimeout("document.getElementById(\"provinciaPartenza\").focus()" , 100);
  parametriRicevuti = false;
}

/*******************************************************************************
Reset della lista di selezione della provincia di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetProvinciaPartenzaSelect(){
  document.getElementById("provinciaPartenza  ").selected = true;
}

/*******************************************************************************
Reset della provincia di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetProvinciaPartenza(){
  Tempi_consegna_resetProvinciaPartenzaSelect();
  document.query.provinciaPartenza.value = "";
  document.query.provinciaPartenza.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
}

/*******************************************************************************
Reset della lista di selezione della località di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetLocalitaPartenzaSelect(){
  for (i = document.query.localitaPartenzaSelect.length - 1; i >= 0; i--) {
    document.query.localitaPartenzaSelect.remove(i);
  }
  document.query.localitaPartenzaSelect.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.localitaPartenzaSelect.disabled = true;
  localitaPartenzaSelectDone = false;
}

/*******************************************************************************
Reset della località di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetLocalitaPartenza(){
  document.query.localitaPartenza.value = "";
  document.query.localitaPartenza.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.localitaPartenza.disabled = true;
}

/*******************************************************************************
Reset della lista di selezione dei CAP di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetCapPartenzaSelect(){
  for (var i = document.query.capPartenzaSelect.length - 1; i >= 0; i--) {
    document.query.capPartenzaSelect.remove(i);
  }
  document.query.capPartenzaSelect.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.capPartenzaSelect.disabled = true;
}

/*******************************************************************************
Reset del CAP di partenza
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetCapPartenza(){
  document.query.capPartenza.value = "";
  document.query.capPartenza.style.backgroundColor = document.getElementById("tablePartenza").style.backgroundColor;
  document.query.capPartenza.disabled = true;
  capPartenzaSelectDone = false;
}

/*******************************************************************************
Reset della lista di selezione della provincia di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetProvinciaArrivoSelect(){
  document.getElementById("provinciaArrivo  ").selected = true;
}

/*******************************************************************************
Reset della provincia di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetProvinciaArrivo(){
  document.query.provinciaArrivo.value = "";
  document.query.provinciaArrivo.style.backgroundColor = BACKGROUNDCOLOR_ENABLED;
  Tempi_consegna_resetProvinciaArrivoSelect();
}

/*******************************************************************************
Reset della lista di selezione della località di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetLocalitaArrivoSelect(){
  for (var i = document.query.localitaArrivoSelect.length - 1; i >= 0; i--) {
    document.query.localitaArrivoSelect.remove(i);
  }
  document.query.localitaArrivoSelect.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.localitaArrivoSelect.disabled = true;
}

/*******************************************************************************
Reset della località di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetLocalitaArrivo(){
  document.query.localitaArrivo.value = "";
  document.query.localitaArrivo.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.localitaArrivo.disabled = true;
}

/*******************************************************************************
Reset della lista di selezione dei CAP di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetCapArrivoSelect(){
  for (var i = document.query.capArrivoSelect.length - 1; i >= 0; i--) {
    document.query.capArrivoSelect.remove(i);
  }
  document.query.capArrivoSelect.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.capArrivoSelect.disabled = true;
}

/*******************************************************************************
Reset del CAP di arrivo
@author Danilo Cussini
*******************************************************************************/

function Tempi_consegna_resetCapArrivo(){
  document.query.capArrivo.value = "";
  document.query.capArrivo.style.backgroundColor = document.getElementById("tableArrivo").style.backgroundColor;
  document.query.capArrivo.disabled = true;
}

/*******************************************************************************
Calcolo tempi.
@author Danilo Cussini
@param Sigla provincia partenza
@param Località partenza
@param CAP partenza
@param Sigla provincia arrivo
@param Località arrivo
@param CAP arrivo
@return true = OK
@return false = errori
*******************************************************************************/

function Tempi_consegna_calcolo(provinciaPartenza , localitaPartenza , capPartenza , provinciaArrivo , localitaArrivo , capArrivo) {
  var url = "Tempi_consegna_risultato.xml?provinciaPartenza=" + provinciaPartenza + "&localitaPartenza=" + localitaPartenza + "&capPartenza=" + capPartenza + "&provinciaArrivo=" + provinciaArrivo + "&localitaArrivo=" + localitaArrivo + "&capArrivo=" + capArrivo;
  request.onreadystatechange = null;
  request.open("GET", url, false);
  request.send(null);
  if (request.readyState == AJAX_READYSTATE_COMPLETE){
    var xmldoc = request.responseXML;
    var rpyOpCode_node = xmldoc.getElementsByTagName("reply_opcode").item(0);
    if (rpyOpCode_node.firstChild.data == "ERROR     "){
      var erroriPartenza_node = xmldoc.getElementsByTagName("erroriPartenza").item(0);
      var erroriArrivo_node = xmldoc.getElementsByTagName("erroriArrivo").item(0);
      var erroriCalcolo_node = xmldoc.getElementsByTagName("erroriCalcolo").item(0);
      var alertMsg = "";
      if (erroriPartenza_node.firstChild != null) {
        alertMsg = erroriPartenza_node.firstChild.data + "\n";
      }
      if (erroriArrivo_node.firstChild != null) {
        alertMsg += erroriArrivo_node.firstChild.data + "\n";
      }
      if (erroriCalcolo_node.firstChild != null) {
        alertMsg += erroriCalcolo_node.firstChild.data + "\n";
      }
      alert(alertMsg);
      return false;
    }
  }
  return true;
}
