/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaData1NonPostData2
   Descrizione         : Questa funzione, controlla se le date passate come argomento sono la prima
                         antecedente o uguale alla seconda.
                         Attenzione: la segnalazione del messaggio non viene fatta per consentirne
                         la personalizzazione.
   Argomenti di Input  : oData1, oData2
   Argomenti di Output : rc - Indica l'esito del controllo. Ritorna False - se la seconda data è
                              minore della prima, quindi true se la prima data è antecedente o
                              uguale alla seconda.
   Autore              : Claudia Alotta
   Data creazione      : 09/03/2004
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaData1NonPostData2(oData1, oData2) {
 var rc = true;
 if (normalizzaData(oData1) && normalizzaData(oData2)) {
  if (regolaData(oData1.value) > regolaData(oData2.value)) {
   rc = false;
  }
 }
 return rc;
}

/* -----------------------------------------------------------------------------------------------------
  Funzione            : controllaComboModello
  Descrizione         : Questa funzione controlla la presenza di un valore selezionato nella combo Tipo Modello
  Argomenti di Input  : f form
  Argomenti di Output : True  - Controllo eseguito con successo
                        False - Controllo fallito
  Autore              : Aurelio Di Pasquale
  Data creazione      :
  Autore              :
  Data revisione      :
  Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaComboModello(f) {
 var combo = f.elements['TMO_COD'];
 if (combo.options[combo.selectedIndex].value=='') {
  alert('Il campo Tipo Modello è obbligatorio per la generazione del modello');
  if (f.elements['TMO_COD'].type!='hidden')
   f.elements['TMO_COD'].focus();
   return false;
 } else {
  return true;
 }
}

function openDocumentiConferenza() {
 var w    = 400;
 var h    = 380;
 var winl = (screen.width - w) / 2;
 var wint = (screen.height - h) / 2;
 var winProps = "height=" + h + ", width=" + w + ", top= " + wint + ", left= " + winl;
 docConf = window.open("/supera/jsp/ConServ.jsp?DOM_COD=" + document.getElementById('DOM_COD').value + "&COS_COD=" + document.getElementById('COS_COD').value, "docConf", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, " + winProps);
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaObbligatorietaNome
   Descrizione         : Questa funzione controlla obbligatorietà del campo nome in funzione del campo
                         sesso selezionato, il campo non è obbligatorio se il sesso è valorizzato con
                         azienda.
   Argomenti di Input  : sesso - Html InputField
   Argomenti di Output : Nessuno
   Autore              : Francesca Sparacio
   Data creazione      : 19/05/2003
   Autore              : Roberto Franco
   Data revisione      : 11/11/2005
   Annotazioni         : Modificata il controllo estendendolo anche per la natura giuridica
   ----------------------------------------------------------------------------------------------------- */
function controllaObbligatorietaNome(sesso) {
  var stato = document.getElementById('siglaStato').value;
  if (stato == 'I' || stato == 'M') {
	  var uteSessoAzienda = document.getElementById('UTE_SESSOA');
	  if(uteSessoAzienda != null) {
	    var azienda = uteSessoAzienda.checked;
	    campoObbligatorio('UTE_DESNOME', !azienda);
	    var nagCod = document.getElementById('NAG_COD');
	    if(nagCod != null) {
	      campoObbligatorio('NAG_COD', azienda);
	    }
	  }
	}
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaObbligatorietaIndirizzo
   Descrizione         : Questa funzione controlla obbligatorietà del indirizzo nel caso in cui il
                         VIA_COD corrisponde ad un indirizzo sconosciuto.
   Argomenti di Input  : f
   Argomenti di Output : True  - Controllo eseguito con successo
                         False - Controllo fallito
   Autore              : Aurelio Di Pasquale
   Data creazione      : 04/11/2005
   Autore              : Roberto Franco
   Data revisione      : 25/10/2006
   Annotazioni         : Parametrizzato il campo da controllare.
   ----------------------------------------------------------------------------------------------------- */
function controllaObbligatorietaIndirizzo(f, campodacontrollare) {
 if (f.VIA_COD.value == f.SCONOSCIUTO.value && campodacontrollare=='') {
  alert('Il campo Annotazioni indirizzo deve essere valorizzato!');
  return false;
 } else {
  return true;
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaTecnico
   Descrizione         : Questa funzione controlla obbligatorietà del indirizzo del tecnico nel caso in cui il
                         VIA_COD corrisponde ad un indirizzo sconosciuto.
   Argomenti di Input  : f
   Argomenti di Output : True  - Controllo eseguito con successo
                         False - Controllo fallito
   Autore              : Roberto Franco
   Data creazione      : 25/10/2006
   Autore              :
   Data revisione      :
   Annotazioni         : Evoluzione Siena 2006
   ----------------------------------------------------------------------------------------------------- */
function controllaTecnico(f) {
 var rc = controllaCampiForm(f);
 if (rc == false) {
  return false;
 }
 if (f.SCONOSCIUTO.value != '') {
  var ri = controllaObbligatorietaIndirizzo(f, f.TEC_DESINDIRIZZO.value);
  if (ri == false) {
   return false;
  }
 }
 return true;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaInvioQuesito
   Descrizione         :
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              :
   Data creazione      :
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaInvioQuesito(f) {
 if (!controllaSeDatiModificati(f)) {
  alert('Occorre prima confermare le modifiche effettuate.');
  return false;
 }
 if (f.QUE_EMAIL.value == '') {
  alert('Il campo e-Mail non è valorizzato!');
  return false;
 }
 if (f.QUE_DESRISPOSTA.value == '') { ;
  alert('Il campo Risposta non è valorizzato!');
  return false;
 }
 if (f.QUE_DATRISPOSTA.value != '') {
  if (confirm("La risposta è già stata inviata. Rieseguire l'invio?")) {
   return true;
  } else {
   return false;
  }
 }
 return true;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaInvioEmailUtentedaOperatore
   Descrizione         :
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              :
   Data creazione      :
   Autore              :
   Data revisione      :
   Annotazioni         : <RIVEDERE>
                         pro_cod sulla tabella utente (riscontrato da Roberto Franco anche se alle attuali
                         versioni non c'è conflitto, infatti supera ha come dati di impianto non modificabile
                         da programma solo i codici da 1 a 4
                         Irriga ha come dati di impianto non modificabile i codici (10 ,20 , 30 ,40)
                         Eventuali evoluzioni: si potrebbe gestire, in evoluzione, su flglookupservice
                         facendo attenzione a salvataggio dei dati preesistenti delle base dati installate.
   ----------------------------------------------------------------------------------------------------- */
function controllaInvioEmailUtentedaOperatore(f) {
 if (!controllaSeDatiModificati(f)) {
  alert('Occorre prima confermare le modifiche effettuate.');
  return false;
 }
 if (f.procod.value != '30' && f.procod.value != '3' && f.procod.value != '2' && f.procod.value != '5') {
  alert('Funzione non abilitata (profilo utente non abilitato).');
  return false;
 }
 return true;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaConfermaModificaSpesePagamenti
   Descrizione         : Utilizzata per modificare solo spese o pagamenti che non sono stati ancora
                         liquidati.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              :
   Data creazione      :
   Autore              : Ernesto Bazan
   Data revisione      : 21/12/2003
   Annotazioni         : Si può usare una sola funzione poichè il controllo è effettuato su LIQ_COD.
   ----------------------------------------------------------------------------------------------------- */
function controllaConfermaModificaSpesePagamenti(f) {
 if (f.LIQ_COD.value > 0) {
  alert('Operazione non consentita! Non è possibile effettuare modifiche dopo che la liquidazione è stata effettuata.');
  return false;
 } else {
  return controllaCampiForm(f);
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaConfermaEliminaSpesePagamenti
   Descrizione         : Utilizzata per eliminare solo spese o pagamenti che non sono stati ancora
                         liquidati.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              :
   Data creazione      :
   Autore              : Ernesto Bazan
   Data revisione      : 21/12/2003
   Annotazioni         : Si può usare una sola funzione poichè il controllo è effettuato su LIQ_COD.
                         <Custom Super@>
----------------------------------------------------------------------------------------------------- */
function controllaConfermaEliminaSpesePagamenti(f) {
 if (f.LIQ_COD.value > 0) {
  alert('Operazione non consentita! Non è possibile effettuare cancellazioni dopo che la liquidazione è stata effettuata.');
  return false;
 } else {
  if (confirm('Si conferma la cancellazione?')) {
   return true;
  } else {
   return false;
  }
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaChkExistModifica
   Descrizione         : Questa funzione controlla se vi sono pagamenti effettuati e, nel caso, non
                         consente l'esecuzione della funzione di modifica dei dati.
   Argomenti di Input  :
   Argomenti di Output :
   Autore              : Roberto Franco
   Data creazione      : 20/12/2003
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaChkExistModifica(f) {
 if (document.getElementById('chkExist').value == 'S') {
  alert('Operazione non consentita!')
  return false;
 } else {
  return controllaCampiForm(f);
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaChkExistElimina
   Descrizione         : Questa funzione controlla se vi sono pagamenti effettuati e, nel caso, non
                         consente l'esecuzione della funzione di cancellazione dei dati.
   Argomenti di Input  :
   Argomenti di Output :
   Autore              : Roberto Franco
   Data creazione      : 20/12/2003
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaChkExistElimina(f) {
 if (document.getElementById('chkExist').value == 'S') {
  alert('Operazione non consentita!')
  return false;
 } else {
  return confermaElimina(f);
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaDateDomanda
   Descrizione         : DOM_DATPROTOCOLLO >= DOM_DATDECTERMINI >= DOM_DATINTTERMINI >= DOM_DATNUOVADEC >=
                         DOM_DATCHIUSURA >= DOM_DATRITIRO
                         DOM_DATNUOVADEC -> DOM_DATDECTERMINI, DOM_DATINTTERMINI obbligatori
                         DOM_DATRITIRO -> DOM_DATINTTERMINI,DOM_DATCHIUSURA obbligatori
   Argomenti di Input  :
   Argomenti di Output :
   Autore              : Giuseppe Tito
   Data creazione      : 18/11/2005
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaDateDomanda(f) {
 dproto = f.DOM_DATPROTOCOLLO;
 // --- Se non è presente dataprotocollo, salta tutti questi controlli.
 if (chkExistObj(dproto)) {
  ddect = f.DOM_DATDECTERMINI;
  dintt = f.DOM_DATINTTERMINI;
  dnewdt = f.DOM_DATNUOVADEC;
  dclose = f.DOM_DATCHIUSURA;
  dretire = f.DOM_DATRITIRO;
  comune = f.COM_COD;
  oggi = new Date()
  // --- Il controllo date avviene sulle proprieta .value degli oggetti.
  dodierna = new Object();
  dodierna.value = oggi.getDate() + "/" + (oggi.getMonth() + 1) + "/" + oggi.getFullYear();
  if (ddect.value != "") {
   // --- Anche data di protocollo deve essere valorizzato.
   if (dproto.value == "") {
    alert("Non puoi assegnare un valore a data decorrenza termini se prima non valorizzi la data di protocollo!");
    return false;
   }
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (!controllaData1NonPostData2(ddect, dodierna)) {
    alert("Data decorrenza termini posteriore alla data odierna!");
    return false;
   }
   // --- Data protocollo <= Data decorrenza termini.  controllo non valido per il comune di palermo
    if (comune.value != "82053") {
      if (!controllaData1NonPostData2(dproto, ddect)) {
      alert("La data di decorrenza termini è precedente alla data di protocollo!");
      return false;
      }
    }
  }
  if (dintt.value != "") {
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (!controllaData1NonPostData2(dintt, dodierna)) {
    alert("Data interruzione termini posteriore alla data odierna!");
    return false;
   }
   // --- Data decorrenza termini <= Data interruzione termini.
   if (!controllaData1NonPostData2(ddect, dintt)) {
    alert("La data di decorrenza termini è precedente alla data di protocollo!");
    return false;
   }
  }
  if (dnewdt.value != "") {
   // --- Anche data decorrenza termini e data interruzione termini devono essere valorizzati.
   if (ddect.value == "" || dintt.value == "") {
    alert("Non puoi assegnare un valore a data nuova decorrenza termini se prima non hai assegnato un valore a data decorrenza termini ed a data interruzione termini!");
    return false;
   }
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (!controllaData1NonPostData2(dnewdt, dodierna)) {
    alert("Data nuova decorrenza termini posteriore alla data odierna!");
    return false;
   }
   // --- Data interruzione termini <= Data nuova decorrenza termini.
   if (!controllaData1NonPostData2(dintt, dnewdt)) {
    alert("La data nuova decorrenza termini è precedente alla data di decorrenza termini!");
    return false;
   }
  }
  if (dclose.value != "") {
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (!controllaData1NonPostData2(dclose, dodierna)) {
    alert("Data chiusura posteriore alla data odierna!");
    return false;
   }
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (ddect.value == "") {
    alert("Non puoi assegnare un valore alla data di chiusura se prima non hai assegnato un valore alla data di decorrenza termini!");
    return false;
   }
   // --- Data nuova decorrenza termini <= Data chiusura.
   if (!controllaData1NonPostData2(dnewdt, dclose)) {
    alert("La data di chiusura è precedente alla data nuova decorrenza termini!");
    return false;
   }
  }
  if (dretire.value != "") {
   // --- Non puoi assegnare valori maggiori della data odierna.
   if (!controllaData1NonPostData2(dretire, dodierna)) {
    alert("Data ritiro posteriore alla data odierna!");
    return false;
   }
   // --- Anche data interruzione termini e data chiusura devono essere valorizzati.
   if (dclose.value == "") {
    alert("Non puoi assegnare un valore alla data di ritiro se prima non hai assegnato un valore alla data di chiusura!");
    return false
   }
   // --- Data chiusura <= Data ritiro.
   if (!controllaData1NonPostData2(dclose, dretire)) {
    alert("La data di ritiro è precedente alla data di chiusura!");
    return false;
   }
  }
 }
 return true;
}

function controllaDomanda(f) {
 var rc = controllaCampiForm(f);
 if (rc == false) {
  return false;
 }
 if (f.SCONOSCIUTO.value != '') {
  var ri = controllaObbligatorietaIndirizzo(f, f.UTE_DESIMPINDIRIZZO.value);
  if (ri == false) {
   return false;
  }
 }

 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per il
 //     controllo di congruenza delle date  "Data Presentazione" e  "Data Decorrenza
 //     Termini" solo se le date sono entrambe valorizzate.
 if (chkExistObj(f.DOM_DATPRESENTAZIONE) && chkExistObj(f.DOM_DATDECTERMINI)) {
  if (f.DOM_DATPRESENTAZIONE.value != '' && f.DOM_DATDECTERMINI.value != '') {
   if (f.DOM_DATPRESENTAZIONE.value != f.DOM_DATDECTERMINI.value) {
    rc = controllaData1NonPostData2(f.DOM_DATPRESENTAZIONE,f.DOM_DATDECTERMINI);
    // --- Se la data presentazione è posteriore alla data decorrenza termini --> errore.
    if (rc == false) {
     alert("La data di presentazione digitata è posteriore alla data decorrenza termini!");
     return false;
    }
   }
  }
 }
 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per
 //     il controllo di congruenza delle date   "Data Decorrenza Termini" e
 //     "Data Interruzione Termini" solo se le date sono entrambe valorizzate.
 if (chkExistObj(f.DOM_DATDECTERMINI) && chkExistObj(f.DOM_DATINTTERMINI)) {
  if (f.DOM_DATDECTERMINI.value != '' && f.DOM_DATINTTERMINI.value != '') {
   if (f.DOM_DATDECTERMINI.value != f.DOM_DATINTTERMINI.value) {
    rc = controllaData1NonPostData2(f.DOM_DATDECTERMINI, f.DOM_DATINTTERMINI);
    // --- Se la data decorrenza termini è posteriore alla data interruzione termini --> errore.
    if (rc == false) {
     alert("La data di decorrenza termini digitata è posteriore alla data interruzione termini!");
     return false;
    }
   }
  }
 }
 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per
 //     il controllo di congruenza delle date  "Data Interruzione Termini" e
 //     "Nuova Decorrenza Termini" solo se le date sono entrambe valorizzate,
 if (chkExistObj(f.DOM_DATINTTERMINI) && chkExistObj(f.DOM_DATNUOVADEC)) {
  if (f.DOM_DATINTTERMINI.value != '' && f.DOM_DATNUOVADEC.value != '') {
   if (f.DOM_DATINTTERMINI.value != f.DOM_DATNUOVADEC.value) {
    rc = controllaData1NonPostData2(f.DOM_DATINTTERMINI, f.DOM_DATNUOVADEC);
    // --- Se la data interruzione termini è posteriore alla nuova decorrenza termini --> errore
    if (rc == false) {
     alert("La data di interruzione termini digitata è posteriore alla nuova decorrenza termini!");
     return false;
    }
   }
  }
 }
 return controllaDateDomanda(f);
}

function controllaDomandaWS(f) {
 var rc=controllaCampiForm(f);
 if (rc == false) return false;
 // --- Se i controlli formali hanno avuto buon esito, chiama la funzione per il controllo
 //     di congruenza delle date "Data Presentazione" e "Data Protocollo".
 if (chkExistObj(f.DOM_DATPROTOCOLLO) && chkExistObj(f.DOM_DATPRESENTAZIONE)) {
  if (f.DOM_DATPROTOCOLLO.value != f.DOM_DATPRESENTAZIONE.value) {
    rc = controllaData1NonPostData2(f.DOM_DATPRESENTAZIONE, f.DOM_DATPROTOCOLLO);
    // --- Se la data presentazione è posteriore alla data protocollo --> errore.
    if (rc == false) {
     alert("La data di presentazione digitata è posteriore alla data di protocollo!");
     return false;
    }
  }
 }
 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per il
 //     controllo di congruenza delle date  "Data Presentazione" e  "Data Decorrenza
 //     Termini" solo se le date sono entrambe valorizzate.
 if (chkExistObj(f.DOM_DATPRESENTAZIONE) && chkExistObj(f.DOM_DATDECTERMINI)) {
  if (f.DOM_DATPRESENTAZIONE.value != '' && f.DOM_DATDECTERMINI.value != '') {
   if (f.DOM_DATPRESENTAZIONE.value != f.DOM_DATDECTERMINI.value) {
    rc = controllaData1NonPostData2(f.DOM_DATPRESENTAZIONE,f.DOM_DATDECTERMINI);
    // --- Se la data presentazione è posteriore alla data decorrenza termini --> errore.
    if (rc == false) {
     alert("La data di presentazione digitata è posteriore alla data decorrenza termini!");
     return false;
    }
   }
  }
 }
 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per
 //     il controllo di congruenza delle date   "Data Decorrenza Termini" e
 //     "Data Interruzione Termini" solo se le date sono entrambe valorizzate.
 if (chkExistObj(f.DOM_DATDECTERMINI) && chkExistObj(f.DOM_DATINTTERMINI)) {
  if (f.DOM_DATDECTERMINI.value != '' && f.DOM_DATINTTERMINI.value != '') {
   if (f.DOM_DATDECTERMINI.value != f.DOM_DATINTTERMINI.value) {
    rc = controllaData1NonPostData2(f.DOM_DATDECTERMINI, f.DOM_DATINTTERMINI);
    // --- Se la data decorrenza termini è posteriore alla data interruzione termini --> errore.
    if (rc == false) {
     alert("La data di decorrenza termini digitata è posteriore alla data interruzione termini!");
     return false;
    }
   }
  }
 }
 // --- Se il controllo precedente ha avuto buon esito, chiama la funzione per
 //     il controllo di congruenza delle date  "Data Interruzione Termini" e
 //     "Nuova Decorrenza Termini" solo se le date sono entrambe valorizzate,
 if (chkExistObj(f.DOM_DATINTTERMINI) && chkExistObj(f.DOM_DATNUOVADEC)) {
  if (f.DOM_DATINTTERMINI.value != '' && f.DOM_DATNUOVADEC.value != '') {
   if (f.DOM_DATINTTERMINI.value != f.DOM_DATNUOVADEC.value) {
    rc = controllaData1NonPostData2(f.DOM_DATINTTERMINI, f.DOM_DATNUOVADEC);
    // --- Se la data interruzione termini è posteriore alla nuova decorrenza termini --> errore
    if (rc == false) {
     alert("La data di interruzione termini digitata è posteriore alla nuova decorrenza termini!");
     return false;
    }
   }
  }
 }
 return controllaDateDomanda(f);
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : chkExistObj
   Descrizione         : Restituisce true se esiste l'oggetto parametro
   Argomenti di Input  : o object
   Argomenti di Output : True  - Controllo eseguito con successo
                         False - Controllo fallito
   Autore              : Giuseppe Tito
   Data creazione      :
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function chkExistObj(o) {
 if (o != null) {
  return true
 } else {
  return false;
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : assegnaCampoACampo
   Descrizione         : Restituisce true se esiste l'oggetto parametro
   Argomenti di Input  : o object
   Argomenti di Output : True  - Controllo eseguito con successo
                         False - Controllo fallito
   Autore              : Roberto Franco
   Data creazione      :
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function assegnaCampoACampo(madre, figlia, sempre) {
 var valoreMadre = document.getElementById('passaggio').elements[madre];
 var valoreFiglia = document.getElementById('passaggio').elements[figlia];
 if (chkExistObj(valoreMadre) && chkExistObj(valoreFiglia)) {
  valoreMadre = valoreMadre.value;
  valoreFiglia = valoreFiglia.value;
  if (sempre || valoreFiglia=='') {
   document.getElementById('passaggio').elements[figlia].value = valoreMadre;
  }
 }
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : avvisaAutorizzazioneInserita
   Descrizione         : Avvertimento per autorizzazione unica già inserita

   Argomenti di Input  : f
   Argomenti di Output :
   Autore              : Roberto Franco
   Data creazione      : 10/11/2005
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function avvisaAutorizzazioneInserita(f) {
 alert('Domanda precedentemente autorizzata!');
 return false;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : checkFiscale
   Descrizione         : Avvertimento per Codice Fiscale (Partita IVA)
                         gia presente in archivio
   Argomenti di Input  : f
   Argomenti di Output :
   Autore              : Roberto Franco
   Data creazione      : 10/11/2005
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function checkFiscale(f) {
  var valore = "";
  var codFiscaleNew = "";
  var stato  = document.getElementById('siglaStato').value;
  var rigaCorrente = document.getElementById('row').value
  var rigaDestinaz = "";
  var pos1;
  if (document.getElementById('CHECK')!=null) {
    pos1 = document.getElementById('CHECK').value.indexOf("####");
    if (pos1 != -1) {
      rigaDestinaz = document.getElementById('CHECK').value.substr(pos1 + 4 , document.getElementById('CHECK').value.length);
      document.getElementById('CHECK').value = document.getElementById('CHECK').value.substr(0, pos1);
    }
    if (rigaCorrente!=rigaDestinaz) {
      document.getElementById('CHECK').value = 'N'
    }
    valore = document.getElementById('CHECK').value.substr(0, 1);
    codFiscaleNew = document.getElementById('CHECK').value.replace("S@@@", "");
    document.getElementById('CHECK').value = 'N';
    if (stato=="I" || stato=="M") {
      if (valore=='S') {
        if (confirm("Il Codice Fiscale (Partita IVA) inserito è gia presente in archivioxxx! \n               Confermi l'inserimento?")) {
          document.getElementById('CHECK').value = 'X';
          if (stato=="I") {
            formPost('../pu/salva-custom-primo-contatto.do', 'passaggio');
          } else {
            document.getElementById('UTE_DESCFISCALE').value = codFiscaleNew;
            formPost('../pu/modifica-custom-primo-contatto.do', 'passaggio');
          }
        }
      }
    }
  }
}

function openWinEntiScadenza() {
 var w    = 500;
 var h    = 320;
 var winl = (screen.width - w) / 2;
 var wint = (screen.height - h) / 2;
 var winProps = "height=" + h + ", width=" + w + ", top= " + wint + ", left= " + winl;
 docConf = window.open("../enti-scadenza-pratica.do", "", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, " + winProps);
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : scriviEntiScadenza
   Descrizione         : Crea vettore stringa unico partendo da diversi campi utile per
                         la creazione del campo altri enti scadenza.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Roberto Franco
   Data creazione      : 24/11/2005
   Autore              : Giuseppe Tito
   Data revisione      : 14/03/2006
   ----------------------------------------------------------------------------------------------------- */
function scriviEntiScadenza() {
  var ctrRiga = 0; // 0=nessun inserimento 1..10 righe inserite -x riga errata
  var token = "@#@#";
  var ret = "";

  if (ctrRiga > -1 && FORMENTI.ENTE01.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE01.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE02.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE02.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE03.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE03.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE04.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE04.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE05.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE05.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE06.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE06.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE07.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE07.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE08.value != "") {
     ctrRiga ++;
     ret = ret + FORMENTI.ENTE08.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE09.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE09.value + token;
  }
  if (ctrRiga > -1 && FORMENTI.ENTE10.value != "") {
   ctrRiga ++;
   ret = ret + FORMENTI.ENTE10.value + token;
  }

  // ---------Controllo dati inseriti -----------------------------------------
  if (ctrRiga < 1) {
   ret = "";
   ctrRiga = 0;
  }
  opener.document.getElementById('SAT_DESENTI').value = ret;
  opener.document.getElementById('SAT_NUMENTI').value = ctrRiga;
  window.close();
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : openWinUtentiAlias
   Descrizione         : Apre la finestra che contiene gli utenti alias
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Roberto Franco
   Data creazione      : 24/11/2006
   ----------------------------------------------------------------------------------------------------- */
function openWinUtentiAlias() {
 var w    = 500;
 var h    = 320;
 var winl = (screen.width - w) / 2;
 var wint = (screen.height - h) / 2;
 var winProps = "height=" + h + ", width=" + w + ", top= " + wint + ", left= " + winl;
 docConf = window.open("../utenti-alias.do", "", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, " + winProps);
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : scriviUtentiAlias
   Descrizione         : Crea vettore stringa unico partendo da diversi campi utile per
                         la creazione del campo utenti alias.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Roberto Franco
   Data creazione      : 24/11/2005
   ----------------------------------------------------------------------------------------------------- */
function scriviUtentiAlias() {
  var ctrRiga = 0; // 0=nessun inserimento 1..10 righe inserite -x riga errata
  var token = "@#@#";
  var ret = "";

  if (ctrRiga > -1 && FORMUTENTI.ALIAS01.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS01.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS02.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS02.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS03.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS03.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS04.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS04.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS05.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS05.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS06.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS06.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS07.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS07.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS08.value != "") {
     ctrRiga ++;
     ret = ret + FORMUTENTI.ALIAS08.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS09.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS09.value + token;
  }
  if (ctrRiga > -1 && FORMUTENTI.ALIAS10.value != "") {
   ctrRiga ++;
   ret = ret + FORMUTENTI.ALIAS10.value + token;
  }

  // ---------Controllo dati inseriti -----------------------------------------
  if (ctrRiga < 1) {
   ret = "";
   ctrRiga = 0;
  }
  opener.document.getElementById('PER_DESALIAS').value = ret;
  opener.document.getElementById('PER_NUMALIAS').value = ctrRiga;
  window.close();
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : openWinInvioSMS
   Descrizione         : Questa funzione esegue la pagina jsp per l'invio di un SMS.
                                     per consentirne la personalizzazione.
   Argomenti di Input  : tipo  A = Avvio Procedimento C = Conclusione procedimento
   Argomenti di Output : Nessuno
   Autore              : Ernesto Bazan
   Data creazione      : 02/02/2006
   Data revisione      :
   Annotazioni         : personalizzazione Comune di Siena
   ----------------------------------------------------------------------------------------------------- */
function openWinInvioSMS(tipo) {
 var w    = 500;
 var h    = 320;
 var winl = (screen.width - w) / 2;
 var wint = (screen.height - h) / 2;
 var winProps = "height=" + h + ", width=" + w + ", top= " + wint + ", left= " + winl;
 if (tipo=="A") {
  var msg = document.getElementById('MSGAVVIO').value;
 } else {
  var msg = document.getElementById('MSGCONCLUSIONE').value;
 }
 var mit = '';
 var tel = document.getElementById('CELLULARE').value;
 var pagina = "../jsp/InvioSMS.jsp?mit=" + mit + "&msg=" + msg +"&tel=" + tel;
 doc = window.open(pagina, "", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, " + winProps);
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : openDocumentoEdilizia
   Descrizione         : Questa funzione visualizza un documento associato alla pratica edilizia.
   Argomenti di Input  : id = indica il numero dela campo oggetto che contiene il testo da visualizzare.
   Argomenti di Output : Nessuno
   Autore              : Ernesto Bazan
   Data creazione      : 28/02/2006
   Data revisione      :
   Annotazioni         : personalizzazione Comune di Siena
   ----------------------------------------------------------------------------------------------------- */
function openDocumentoEdilizia(id) {
 var w    = 800;
 var h    = 600;
 var winl = (screen.width - w) / 2;
 var wint = (screen.height - h) / 2;
 var winProps = "height=" + h + ", width=" + w + ", top=" + wint + ", left= " + winl;
 var documento = eval("document.getElementById('Documento" + id + "').value");
 var titolo = eval("document.getElementById('Titolo" + id + "').value");
 popWindow = window.open("", "", "toolbar=no, location=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, " + winProps);
 popWindow.document.write("<LINK HRef='../css/Super@Style.css' Rel='StyleSheet' Type='text/css'>");
 popWindow.document.write("<TABLE BGColor='#F5F5F5' CellPadding='4' CellSpacing='2' Width='100%'>");
 popWindow.document.write(" <TR>");
 popWindow.document.write("  <TD>");
 popWindow.document.write("   <TABLE BGColor='#FFFFFF' CellPadding='1' CellSpacing='1' Width='100%'>");
 popWindow.document.write("    <TR>");
 popWindow.document.write("     <TD Style='border: 1px dashed #9A3030;' Width='99%'><B>" + titolo + "</B></TD>");
 popWindow.document.write("     <TD><INPUT Class='flatButton' Type='Button' Title=' Chiude la finestra ' Value=' Chiudi ' onClick='javascript:window.close();'></TD>");
 popWindow.document.write("    </TR>");
 popWindow.document.write("   </TABLE>");
 popWindow.document.write("  </TD>");
 popWindow.document.write(" </TR>");
 popWindow.document.write(" <TR>");
 popWindow.document.write("  <TD>");
 popWindow.document.write("   <TABLE BGColor='#FFFFFF' Border='1' CellPadding='2' CellSpacing='1' Width='100%'>");
 popWindow.document.write("    <TR>");
 popWindow.document.write("     <TD>" + documento + "</TD>");
 popWindow.document.write("    </TR>");
 popWindow.document.write("   </TABLE>");
 popWindow.document.write("  </TD>");
 popWindow.document.write(" </TR>");
 popWindow.document.write(" <TR>");
 popWindow.document.write("  <TD>");
 popWindow.document.write("   <TABLE BGColor='#FFFFFF' Border='0' CellPadding='2' CellSpacing='1' Width='100%'>");
 popWindow.document.write("    <TR>");
 popWindow.document.write("     <TD Style='border: 1px dashed #9A3030;' Align='Center'><I>Dati estratti dalla banca dati dell'Edilizia del Comune di Siena</I></TD>");
 popWindow.document.write("    </TR>");
 popWindow.document.write("   </TABLE>");
 popWindow.document.write("  </TD>");
 popWindow.document.write(" </TR>");
 popWindow.document.write("</TABLE>");
 popWindow.focus();
}

/* -----------------------------------------------------------------------------------------------------
  Funzione            : gestioneLayer
  Descrizione         : Questo gruppo di funzioni permette di gestire le tendine DIV a scomparsa
  Argomenti di Input  : id del layer da visualizzare/nascondere
  Argomenti di Output : Nessuno
  Autore              : Giuseppe Tito
  Data creazione      : 08/11/2004
  Autore              :
  Data revisione      :
  Annotazioni         : Visualizza il layer DIV, se non visualizzato, altrimenti lo nasconde
----------------------------------------------------------------------------------------------------- */
function gestioneLayer(id, ancora) {
 if (document.getElementById(id).style.overflow == 'visible') {
  document.getElementById(id).style.overflow = 'hidden';
  ancora.innerHTML = '&nbsp;+&nbsp;';
 } else {
  document.getElementById(id).style.overflow = 'visible';
  ancora.innerHTML = '&nbsp;-&nbsp;';
 }
 return true;
}

function controllaCampiFormCatasto(f) {
 return true;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaObbligatorietaNomeUtente
   Descrizione         : Questa funzione controlla obbligatorietà del campo nome in funzione del campo
                         sesso selezionato, il campo non è obbligatorio se il sesso è valorizzato con
                         azienda.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Antonio Flaccomio
   Data creazione      : 16/10/2007
   ----------------------------------------------------------------------------------------------------- */
function controllaObbligatorietaNomeUtente() {
	var stato = document.getElementById('siglaStato').value;
	if (stato == 'M' || stato == 'I') {
		var persona = (document.getElementById('UTE_SESSOA').checked == false);
		campoObbligatorio('UTE_DESNOME', persona);
	}
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : campoObbligatorio
   Descrizione         : Funzione di utilita': passato il nome di un campo e un flag booleano rende il
                         campo obbligatorio o meno. Usata da: controllaObbligatorietaNomeUtente()
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Antonio Flaccomio
   Data creazione      : 26/02/2007
   Autore              :
   Data revisione      : 25/07/2008 ep Protegge da errori a monte ed evita un errore che
                                       si verifica se il campo non è circondato dal div input-action
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function campoObbligatorio(campo, flgOb) {
 var oCampo=document.getElementById(campo);
 if(oCampo==null){
    alert('campoObbligatorio è stato richiamato su un campo inesistente: ' + campo);
    return;
 }
 for (var i=0; i<propColonne.length; i++) {
  if (propColonne[i].nomeCampo == campo) {
   propColonne[i].obbligatorio = flgOb;
   break;
  }
 }
 if (flgOb){
     if (oCampo.parentNode.parentNode.className == 'container-field-not-required' ) {
         oCampo.parentNode.parentNode.className = 'container-field-required';
     }
 } else{
   if (oCampo.parentNode.parentNode.className == 'container-field-required' ) {
       oCampo.parentNode.parentNode.className = 'container-field-not-required';
   }    
 }
 
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaSeDatiAttivazioneModificati
   Descrizione         : Verifica che i dati siano stati salvati peima di attivare una reg. tmp.
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Antonio Flaccomio
   Data creazione      : 14/04/2008
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaSeDatiAttivazioneModificati(f) {
 var nomiCampiMod = datiFormModificati(f);
 if (nomiCampiMod.length > 0) {
  alert('Alcuni valori sono stati modificati; è necessario salvare le modifiche prima di attivare l\'utenza!');
  return false;
 }
 return true;
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : verificaEliminaUtenteTmp
   Descrizione         : Verifica che l'utente (tmp) non sia stato attivato per consentire la sua eliminazione
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Antonio Flaccomio
   Data creazione      : 23/04/2008
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function verificaEliminaUtenteTmp() {
	var attivo = (document.getElementById('UTE_FLGREGTMP').value == 'A');
	if(attivo) {
	  alert('Non è possibile eliminare un utente già attivo!');
	  return false;
	} else {
		return confermaElimina();
	}
}

/* -----------------------------------------------------------------------------------------------------
   Funzione            : controllaObbligatorietaRegTmp
   Descrizione         : Verifica che il comune di nascita sia inserito nel campo descrittivo se 
                         il comune codificato selezionato e' 999999
   Argomenti di Input  : Nessuno
   Argomenti di Output : Nessuno
   Autore              : Antonio Flaccomio
   Data creazione      : 29/04/2008
   Autore              :
   Data revisione      :
   Annotazioni         :
   ----------------------------------------------------------------------------------------------------- */
function controllaObbligatorietaRegTmp(f) {
	if(controllaCampiForm(f)) {
	  var comCodNascita = document.getElementById('COM_CODNASCITA').value;
	  var comDesNascita = document.getElementById('UTE_DESCOMMNASCITA').value;
	  if((comCodNascita-0) == 999999 && comDesNascita == '') {
      alert('Il campo "Annotazione luogo di Nascita" deve essere riempito per comuni esteri!');
      return false;
	  }
	  var comCodResidenza = document.getElementById('COM_CODRESIDENZA').value;
	  var comDesResidenza = document.getElementById('UTE_DESRESCOMUNE').value;
	  if((comCodResidenza-0) == 999999 && comDesResidenza == '') {
      alert('Il campo "Annotazione luogo di Residenza" deve essere riempito per comuni esteri!');
      return false;
	  }
	  return true;
	} else {
	  return false;
	}
}
