/***************** Variabili globali esterne *****************/
/*
 * - flgPrn
 * - topMen
 * - ussNum
 * - appNam
 */

function escapeKeyPress(){
  if( window.event.keyCode == 27 ) {
     closeWindow();
  }
}

/*
 * Eventuali init specifici della funzione attuale
 * Funzioni speciali (a.e. print e export)
 */
function init(){
  if(window.iniFnz){
    iniFnz();
  }
  /*
   * Gestione stampa
   */
  if(flgPrn){
    /*
     * Export
     */
     printPage();
   }
}


function printPage(){
  onbeforeunload = null;
  self.print();
}

function about(){
  document.location.href = 'about:blank';
}

/*
 * Funzione per visualizzare il messagio di errore.
 * Dopo la visualizzazione richiama la funzione processError (se esiste)
 * che permette di fare una gestione specifica dell'errore alle funzioni.
 * Params:
 * - cod: codice del messaggio
 * - msg: testo del messaggio
 * - fld: nome del campo del form dove fare focus (prima verifica l'esistenza)
*/
function error(cod, msg, fld){
  self.focus();
  showMsg("Errore: "+msg+" (ref. "+cod+")");
  //Se esiste field e è abilitato fa il focus
  setFocusByName(fld);
  /*
   * Chiama funzione processError (se esiste)
   */
  if(window.processError){
    processError(cod, msg, fld);
  }
}

/*
 * Visualizza il messaggio.
 * Params:
 * - msg: messaggio da visualizzare
 */
function showMsg(msg){
  alert(msg);
}

function closeWindow() {
  parent.close();
}

/*
 * Modifica lo status bar.
 * Params:
 * - txt: testo del window status
 */
function showStatus(txt){
  window.status = txt;
  return true;
}

/*
 * Conferma cancellazione. Params:
 * - theForm: nome del form HTML
 * - msg: messaggio da visualizzare nella conferma
 * - fnzCod: codice funzione per submit in caso di annulla conferma
 */
function confirmDelete(theForm, msg, fnzCod){
  if(!confirm(msg)){
    /*
     * Annulla cancellazione: redirect a modifica
     */
    theForm.wkParFnz.value = ''; //View type
    theForm.fnzCod.value = fnzCod;
  }
  theForm.submit();
}

/*
 *  Visualizza un Alert per il doppio click
 */
 function doppioClick(){
   alert('Attenzione: il doppio click è disabilitato');
 }

/*
 * Fa il focus sul field fld (se abilitato)
 */
function setFocus(fld){
  if(fld != ""){
    /*
     * Se il campo è un array vuole dire che abbiamo più di 1 campo con questo
     * nome (a.e. input disabled + input hidden).
     * In questo caso non facciamo il focus (non sapremo su qualle farlo!)
     * TODO: test per sapere se un oggetto è un array (fld.type?)
     */
    if(!fld.type){
      /*
       * Array: non facciamo focus
       */
       fld[0].focus();
    }
    else{
      /*
       * Non array: focus solo se diverso di hidden e non disable
       */
      if((fld.type.toUpperCase() != "HIDDEN")
      && (!fld.disabled)){
        fld.focus();
      }
    }
  }
}

/*
 * Fa il focus sul field di nome fldNam (se abilitato)
 */
function setFocusByName(fldNam, fldFrm){
  if(arguments.length == 1)
    setFocus(getField(fldNam));
  else
    setFocus(getField(fldNam, fldFrm));
}
function getField(fldNam, fldFrm){
  if(fldNam == '')
     return "";

  if(containsDate(fldNam)){
    // FldNam di tipo date: aggiungiamo suffiso per focus in campo giorno
    fldNam += PREFIX_DD;
  }

  if(containsTime(fldNam)){
    // FldNam di tipo date: aggiungiamo suffiso per focus in campo giorno
    fldNam += PREFIX_HH;
  }
  if(arguments.length == 1){
    // fldNam globale
    fldFrm = document;
  }
  else{
    fldFrm = document;
  }
  if(fldFrm){
  
	  if(fldFrm.getElementById(fldNam)){
	    return fldFrm.getElementById(fldNam);
	  }
	  else{
	    return "";
	  }
  }
  else{
    return "";
  }
	  
}