/*
//////////////////////////////////////////////////////////////////////////////////
// Il mask accetta i sgg. valori :
//  N   : generico numerico 
//  L   : numerico formattato a Lire
//  E   : numerico formattato a Euro
//  UP  : stringa formattata UpperCase
//  LOW : stringa formattata LowerCase
//  D   : formattazione a data
//  T   : formattazione a orario

//ATTENZIONE: le funzioni per il maiuscolo minuscolo e simili sono onblur per
//            Netscape e Opera e onKeypress per IE, quindi devono sempre essere 
//            impostate le chiamate ad entrambe.

// Le funzioni devono prendere gli stessi parametri nelle versioni 
// per i vari browser
//   chrMode  e' il carattere che identifica il tipo di dato
//   lsEvent  e' l'evento (utile solo in Netscape) [event]
//   objInput e' il campo su cui fare il controllo
//   nDec     e' il numero di decimali da impostare (0 se non ne ha)

// La funzione su OnKeyPress non viene mai chiamata perchè in Opera si lavora solo 
// OnBlur quindi viene testato un codice INESISTENTE
*/
var intAnnoMax, intAnnoMin;
var Data = new Date();

intAnnoMax = Data.getFullYear() + 1;
intAnnoMin = 1993;

function setmenu(fl_submit)
{
	/* Mauro-Teseo - INIZIO */
	var divMenu = document.getElementById("divMenu");
	if(divMenu != null)
	{
		divMenu.className = "vis";
		if (document.getElementById("verify_script"))
		{
			document.getElementById("verify_script").value = 1;
		}
		if (fl_submit == 1)
			document.forms[0].submit();
	}
	
	/* Mauro-Teseo - FINE */
}

function checkLength(objTextArea, intLen)
{
	if (objTextArea.value.length > intLen)
	objTextArea.value = objTextArea.value.slice(0, intLen);
}

// -----------------------------------------
function fl_mask(chrMode, lsEvent, objInput, nDec)
{   
	if (chrMode == "XQ")
        fl_msk_num(lsEvent);
}

function fl_blur(chrMode, lsEvent, objInput, nDec)
{   
	if (chrMode == "N" || chrMode == "L") 
        fl_val_num(objInput, nDec);
	if (chrMode == "E") 
//        fl_val_num(objInput, 2);
        fl_val_val(objInput, chrMode);
	if (chrMode == "UP") // Stringa UpperCase
        fl_val_ucase(objInput);
	if (chrMode == "LOW")
        fl_val_lcase(objInput);
	if (chrMode == "D")
        fl_val_dt(objInput);
	if (chrMode == "T") // Campo Ora
        fl_val_time(false);
    if (chrMode == "CF")
		fl_val_cf(objInput);      
}

function fl_val_val(aEvent, aVal)
{   
    // trovo l'oggetto su cui e' avvenuto l'evento
	var l_val = aEvent.value;
    var l_len;
    var l_int;
    var l_dec;
    
    if (l_val.length == 0)
      return (true);
    else
    {
        if (aVal == "E")
        {
           // cerco la virgola e separo interi da decimali
            l_len = l_val.indexOf(",");
			if (l_len == -1)
				l_len = l_val.indexOf(".");
			
            if (l_len > -1)
            {
                l_int = new Number(l_val.substring(0,l_len));
                l_dec = l_val.substring(l_len+1,l_val.length);
            }
            else
            {
                l_int = new Number(l_val);
                l_dec = "";
            }
            // formatto i decimali (n cifre)
            if (l_dec.length > 2)
                l_dec = l_dec.substring(0,2);
            if (l_dec.length < 2)
            {
                for (l_len = l_dec.length; l_len < 2; l_len ++)
                    l_dec = l_dec + "0";
            }
            aEvent.value = l_int.toString() + "," + l_dec;
        }
        /*
        else
        {
            alert ("L");
        }
        */
    }
    return (true);
} 

function fl_val_num(objInput, l_nDec)
{   
	var l_val = objInput.value;
	var l_new = "";
	var count_virgole = 0;
      // ripulisco la presenza di caratteri non numerici
      for (l_cnt = 0; l_cnt < l_val.length; l_cnt++)
      {
         if (l_val.substring(l_cnt,l_cnt+1)=="0" ||
             l_val.substring(l_cnt,l_cnt+1)=="1" ||
             l_val.substring(l_cnt,l_cnt+1)=="2" ||
             l_val.substring(l_cnt,l_cnt+1)=="3" ||
             l_val.substring(l_cnt,l_cnt+1)=="4" ||
             l_val.substring(l_cnt,l_cnt+1)=="5" ||
             l_val.substring(l_cnt,l_cnt+1)=="6" ||
             l_val.substring(l_cnt,l_cnt+1)=="7" ||
             l_val.substring(l_cnt,l_cnt+1)=="8" ||
             l_val.substring(l_cnt,l_cnt+1)=="9")
         
             l_new += l_val.substring(l_cnt,l_cnt+1);
          if (l_nDec > 0)
          {
            if (l_val.substring(l_cnt,l_cnt+1)=="." || l_val.substring(l_cnt,l_cnt+1)=="," )
               if (count_virgole == 0)
               {
	               l_new += ",";
	               count_virgole++;
	           }
          }
      }
      if (l_val != l_new)
	      objInput.value = l_new;
}

function fl_val_ucase(objInput)
{   
	objInput.value = objInput.value.toUpperCase();
} 

function fl_val_lcase(objInput)
{   
	objInput.value = objInput.value.toLowerCase();
} 

function fl_val_dt(objInput)
{   
	var l_val = objInput.value;
	var l_new = "";
	var l_tmp = 0; // contatore di "/"
	var l_cnt;

      // ripulisco la presenza di caratteri non numerici
    for (l_cnt = 0; l_cnt < l_val.length; l_cnt++)
    {
		if (l_val.substring(l_cnt,l_cnt+1)=="-" ||
			l_val.substring(l_cnt,l_cnt+1)==" " ||
			l_val.substring(l_cnt,l_cnt+1)=="/" ||
			l_val.substring(l_cnt,l_cnt+1)==".") 
		{
			if (l_tmp < 2) // metto al massimo 2 barre
			{
				l_tmp++;
				l_new += "/";
			}
		}
		else
	        l_new += l_val.substring(l_cnt,l_cnt+1);
   }
	l_val = l_new;
	l_new = "";
      
// Aggiungo le barre mancanti al posto giusto
	if (l_val.length > 5 && l_tmp < 2)
	{
		for (l_cnt = 0; l_cnt < l_val.length; l_cnt++)
		{
			l_new = l_new + l_val.substring(l_cnt,l_cnt+1);
			if ( l_cnt == 1 || l_cnt == 3 )
			{
				l_new = l_new + "/";
			}          
		}
		l_val = l_new;
	}

	if (l_val.indexOf("/") == 1)
		l_val = "0" + l_val; // porto il giorno a 2 cifre qualora non lo sia

	if (l_val.indexOf("/", 3) == 4)
		l_val =  l_val.substring(0,3) + "0" + l_val.substring(3); // porto il mese a 2 cifre qualora non lo sia

	if ((l_val.length < 10) && (l_val.length > 6) )
	{
		if (l_val.length == 7)  // l'anno è a una cifra
			l_val =  l_val.substring(0,6) + "200" + l_val.substring(6); 
		else
			{
			if (l_val.substring(6,7) == "0") // la 1° cifra per l'anno è 0 => l'anno è < 10
				l_val = l_val.substring(0,6) + "20" + l_val.substring(6); // l'anno diventa 20NN
			else
				l_val = l_val.substring(0,6) + "19" + l_val.substring(6); // l'anno diventa 19NN
			}
	}

	for (l_cnt = 0; l_cnt < l_val.length; l_cnt++)
	{
	   if (l_val.substring(l_cnt,l_cnt+1)!="0" &&
	       l_val.substring(l_cnt,l_cnt+1)!="1" &&
	       l_val.substring(l_cnt,l_cnt+1)!="2" &&
	       l_val.substring(l_cnt,l_cnt+1)!="3" &&
	       l_val.substring(l_cnt,l_cnt+1)!="4" &&
	       l_val.substring(l_cnt,l_cnt+1)!="5" &&
	       l_val.substring(l_cnt,l_cnt+1)!="6" &&
	       l_val.substring(l_cnt,l_cnt+1)!="7" &&
	       l_val.substring(l_cnt,l_cnt+1)!="8" &&
	       l_val.substring(l_cnt,l_cnt+1)!="9" &&
	       l_val.substring(l_cnt,l_cnt+1)!="/")
	  	{
	            alert("'" + objInput.value + "' non e' una data valida!");
		    objInput.value = "";	  	
	  	    //alert("Data errata!");
	  	    //objInput.focus();
	  	    return (false);
	  	}         
	  }
  	objInput.value = l_val;
  	return (true);
} 

// Valuta il codice fiscale
function fl_val_cf(objInput)
{
	var l_cf = objInput.value;

	l_cf = l_cf.toUpperCase(); 
	objInput.value = l_cf;
	
    // Se non è stato inserito niente esce
    if (l_cf == 0)
		return;
		
	// Verifica la lunghezza	
	if (l_cf.length != 16)
	{
        alert("Lunghezza del codice fiscale errata!");
        return;	
	}

	// Verifica il formato
	var re = /^[A-Z0-9]{16}$/;
	if (!re.test(l_cf))
	{
		alert("Formato del codice fiscale non corretto!");
		return;
	}

	// calcola il carattere di cheksum
	var i, s, set1, set2, setpari, setdisp; 	
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX"; 
	
	s = 0; 	
	for( i = 1; i <= 13; i += 2 ) 
		s += setpari.indexOf(set2.charAt(set1.indexOf(l_cf.charAt(i)))); 
		
	for( i = 0; i <= 14; i += 2 ) 
		s += setdisp.indexOf(set2.charAt(set1.indexOf(l_cf.charAt(i)))); 
	
	if( s%26 != l_cf.charCodeAt(15) - 'A'.charCodeAt(0) ) 
	{
		alert("Codice di controllo del codice fiscale errato."); 
		return ; 
	}
}

//// funzione per il controllo dei campi obbligatori
function fl_req(strValue, strName)
{
	var strOuput; 

	if (strValue == "")
		strOutput = "Campo " + strName + " obbligatorio \u000D"; 
	else
		strOutput = ""; 
	return (strOutput) ;
}

function fl_cancel_event(e)
{
}

function fl_itemvalid(strVal)
{
    if (strVal.value == null || strVal.value == "")
        return (1);
    else
        return (0);
}

// Da il fuoco ad una riga di una tabella
// Nella versione per Opera non fa nulla
function setfocus(objTable, evFocus)
{
}
function setfocusCheck(objTable, evFocus)
{
}

// Da il fuoco ad una riga che contiene il checkbox nella prima colonna selezionato
// Nella versione per Opera non fa nulla
function RowFocus(objTable)
{
}

function chkField(objText, strNomeCampo, chDimension)
{
}
