/**************************************
  Controllo del Codice Fiscale
***************************************/

function Validate_cf(cf)
{
  var validi, i, s, set1, set2, setpari, setdisp;
  if( cf == '' )  return '';
  cf = cf.toUpperCase();
  if( cf.length != 16 )
    return "La lunghezza del codice fiscale non è corretta";
  validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  for( i = 0; i < 16; i++ ){
    if( validi.indexOf( cf.charAt(i) ) == -1 )
      return "Il codice fiscale contiene caratteri non validi";
  }
  set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
  setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
  s = 0;
  for( i = 1; i <= 13; i += 2 )
    s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
  for( i = 0; i <= 14; i += 2 )
    s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
  if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
    return "Il codice fiscale non è corretto";
  return "";
}

/*
 * 28/03/2006, mb: questa funzione permette di passare il messaggio d'errore da visualizzare nella verifica del codice fiscale.
 * Ritorna TRUE se la verifica ha esito positivo, FALSE altrimenti.
 */
function CheckCF(cf, msg) {
  bRes = true;

  tmp_msg = Validate_cf(cf.value);
  if(tmp_msg != "") {
    bRes = false;
    errorMsg = ((msg == null || EmptyString(msg)) ? tmp_msg : msg);
    focusVar = cf;
  }

  return bRes;
} // Fine function CheckCF()



/*****************************************
  Controllo della Partita I.V.A.
******************************************/

function Validate_piva(pi)
{
  if( pi == '' )  return '';
  if( pi.length != 11 )
    return "La lunghezza della partita IVA non è corretta";
  validi = "0123456789";
  for( i = 0; i < 11; i++ ){
    if( validi.indexOf( pi.charAt(i) ) == -1 )
      return "La partita IVA contiene caratteri non validi";
  }
  s = 0;
  for( i = 0; i <= 9; i += 2 )
    s += pi.charCodeAt(i) - '0'.charCodeAt(0);
  for( i = 1; i <= 9; i += 2 ){
    c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
    if( c > 9 )  c = c - 9;
    s += c;
  }
  if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
    return "La partita IVA non è valida";
  return '';
}

/*
 * 28/03/2006, mb: questa funzione permette di passare il messaggio d'errore da visualizzare nella verifica della partita IVA.
 * Ritorna TRUE se la verifica ha esito positivo, FALSE altrimenti.
 */
function CheckPIVA(piva, msg) {
  bRes = true;

  tmp_msg = Validate_piva(piva.value);
  if(tmp_msg != "") {
    bRes = false;
    errorMsg = ((msg == null || EmptyString(msg)) ? tmp_msg : msg);
    focusVar = piva;
  }

  return bRes;
} // Fine function CheckPIVA()
