Newsgroup: it.comp.lang.javascript
Titolo: COD.FISCALE Helpppp

Ciao :-)
come cavolo si calcola il cod. fiscale ???
dovrei fare un controllo sulla validità ma
non so da dove partire .....
Grazie mille in anticipo :-D

 non so da dove partire .....
  Non e' farina del mio sacco. Ma non ricordando
piu' da dove l'ho preso lo posto qua. Togli le parti
file:// commento
  Non voglio neanche sapere perche' Outlook
 si permette di aggiungere (a volte toglie) schifezze;
 le porcherie Microsoft vanno rispettate solo perche'
 hanno un'utenza tale che fa guadagnare la pagnotta
 a schiere d'informatici.
 // Java Script functions
// Calcolo del codice fiscale
// (c) Copyright 1998-1999 Nicola Asuni
// start          : 03/11/1998
// ultima modifica: 16/11/1999
// Autore:
// -----------------------------
// Nicola Asuni
// Via Ugo Foscolo n.19
// 09045 Quartu Sant'Elena (CA)
// 
nicol...@geocities.com
// 
http://www.nicolaasuni.da.ru
// -----------------------------
// Variables:
// -------------------------------------------------------------------------
-
var strCodFis="";
var strcognome="";
var strnome="";
var strgiornosex="";
var chrcontrollo='';
// Controls/Definitions:
// -------------------------------------------------------------------------
-
DefaultValues();
// -------------------------------------------------------------------------
-
// Functions:
// -------------------------------------------------------------------------
-
// Setta i prodotti ed i valori di default
// -------------------------------------------------------------------------
-
function DefaultValues()
{
 strCodFis="";
 strcognome="";
 strnome="";
 strgiornosex="";
 chrcontrollo='';
 Cognome = "";
 Nome = "";
 Sesso = 0;
 Comune = "";
 CodiceFiscale = "";
 AnnoCento = 19;
 AnnoDieci = "0";
 AnnoZero = "0";
 Mese = "A";
 Giorno = 1;
return;
}
// -------------------------------------------------------------------------
-
function CheckCognome()
{
 if(document.FormCodFis.Cognome.value.length < 1)
   {
    alert("Attenzione:\nManca il Cognome!");
    return(0);
   }
document.FormCodFis.Cognome.value =
document.FormCodFis.Cognome.value.toUpperCase();
return(1);
}
// -------------------------------------------------------------------------
-
function CheckNome()
{
 if(document.FormCodFis.Nome.value.length < 1)
   {
    alert("Attenzione:\nManca il Nome!");
    return(0);
   }
document.FormCodFis.Nome.value =
document.FormCodFis.Nome.value.toUpperCase();
return(1);
}
// -------------------------------------------------------------------------
-
function CheckComune()
{
 if(document.FormCodFis.Comune.value.length < 1)
   {
    alert("Attenzione:\nManca il Comune!");
    return(0);
   }
document.FormCodFis.Comune.value =
document.FormCodFis.Comune.value.toUpperCase();
return(1);
}
// -------------------------------------------------------------------------
-
function CalcolaCodiceFiscale()
{
 var gs=0;
 var i=0;
 var somma=0;
 strCodFis="";
 strcognome="";
 strnome="";
 strgiornosex="";
 chrcontrollo='';
Giorno =
parseInt(document.FormCodFis.Giorno.options[document.FormCodFis.Giorno.selec
tedIndex].value,10);
AnnoCento =
parseInt(document.FormCodFis.AnnoCento.options[document.FormCodFis.AnnoCento
.selectedIndex].value,10);
AnnoDieci =
document.FormCodFis.AnnoDieci.options[document.FormCodFis.AnnoDieci.selected
Index].value;
AnnoZero =
document.FormCodFis.AnnoZero.options[document.FormCodFis.AnnoZero.selectedIn
dex].value;
Mese =
document.FormCodFis.Mese.options[document.FormCodFis.Mese.selectedIndex].val
ue;
Comune = document.FormCodFis.Comune.value;
Sesso =
parseInt(document.FormCodFis.Sesso.options[document.FormCodFis.Sesso.selecte
dIndex].value,10);
if(CheckCognome() && CheckNome())
 {
  // Processa il cognome
  file://----------------------------------------------------------------
    for (i=0; i<document.FormCodFis.Cognome.value.length; i++)
        {
         switch (document.FormCodFis.Cognome.value.charAt(i))
                {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': break;
                  default :
                  if((document.FormCodFis.Cognome.value.charAt(i)<='Z')&&
(document.FormCodFis.Cognome.value.charAt(i)>'A'))
                   strcognome = strcognome +
document.FormCodFis.Cognome.value.charAt(i);
                }
        }
    if (strcognome.length < 3)
      {
       for (i=0; i<document.FormCodFis.Cognome.value.length; i++)
          {
           switch (document.FormCodFis.Cognome.value.charAt(i))
                 {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': strcognome = strcognome +
document.FormCodFis.Cognome.value.charAt(i);
                 }
          }
       if (strcognome.length < 3)
         {
          for (i=strcognome.length; i<=3; i++)
             { strcognome = strcognome + 'X'; }
         }
      }
   strcognome = strcognome.substring(0,3);
file://------------------------------------------------------------
  // processa il nome
  file://----------------------------------------------------------------
    for (i=0; i<document.FormCodFis.Nome.value.length; i++)
       {
        switch (document.FormCodFis.Nome.value.charAt(i))
              {
               case 'A':
               case 'E':
               case 'I':
               case 'O':
               case 'U': break;
               default:
 if((document.FormCodFis.Nome.value.charAt(i)<='Z')&&
(document.FormCodFis.Nome.value.charAt(i)>'A'))
                  strnome = strnome +
document.FormCodFis.Nome.value.charAt(i);
              }
       }
    if (strnome.length > 3)
      {
        strnome = strnome.substring(0,1) + strnome.substring(2,4);
      }
    else {
          if (strnome.length < 3)
            {
             for (i=0; i<document.FormCodFis.Nome.value.length; i++)
                {
                  switch (document.FormCodFis.Nome.value.charAt(i))
                        {
                         case 'A':
                         case 'E':
                         case 'I':
                         case 'O':
                         case 'U': strnome = strnome +
document.FormCodFis.Nome.value.charAt(i);
                        }
                }
             if (strnome.length < 3)
               {
                for (i=strnome.length; i<=3; i++)
                   {strnome = strnome + 'X';}
               }
            }
          strnome = strnome.substring(0,3);
         }
 file://--------------------------------------- Fine processa nome
 // processa giorno e sesso
 file://--------------------------------------------
  gs = Giorno + (40 * Sesso);
  if(gs<10) strgiornosex = "0" + gs;
  else strgiornosex =  gs;
 file://--------------------------------------------
 strCodFis = strcognome + strnome + AnnoDieci + AnnoZero + Mese +
strgiornosex + Comune;
 // calcola la cifra di controllo
 file://--------------------------------------------
    for (i=0; i<15; i++)
       {
        if (((i+1) % 2) != 0) file://caratteri dispari
          {
           switch (strCodFis.charAt(i))
                 {
                  case '0':
                  case 'A':{ somma += 1; break;}
                  case '1':
                  case 'B':{ somma += 0; break;}
                  case '2':
                  case 'C':{ somma += 5; break;}
                  case '3':
                  case 'D':{ somma += 7; break;}
                  case '4':
                  case 'E':{ somma += 9; break;}
                  case '5':
                  case 'F':{ somma += 13; break;}
                  case '6':
                  case 'G':{ somma += 15; break;}
                  case '7':
                  case 'H':{ somma += 17; break;}
                  case '8':
                  case 'I':{ somma += 19; break;}
                  case '9':
                  case 'J':{ somma += 21; break;}
                  case 'K':{ somma += 2; break;}
                  case 'L':{ somma += 4; break;}
                  case 'M':{ somma += 18; break;}
                  case 'N':{ somma += 20; break;}
                  case 'O':{ somma += 11; break;}
                  case 'P':{ somma += 3; break;}
                  case 'Q':{ somma += 6; break;}
                  case 'R':{ somma += 8; break;}
                  case 'S':{ somma += 12; break;}
                  case 'T':{ somma += 14; break;}
                  case 'U':{ somma += 16; break;}
                  case 'V':{ somma += 10; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 25; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 23; break;}
                 }
          }
        else file://caratteri pari
            {
              switch (strCodFis.charAt(i))
                 {
                  case '0':
                  case 'A':{ somma += 0; break;}
                  case '1':
                  case 'B':{ somma += 1; break;}
                  case '2':
                  case 'C':{ somma += 2; break;}
                  case '3':
                  case 'D':{ somma += 3; break;}
                  case '4':
                  case 'E':{ somma += 4; break;}
                  case '5':
                  case 'F':{ somma += 5; break;}
                  case '6':
                  case 'G':{ somma += 6; break;}
                  case '7':
                  case 'H':{ somma += 7; break;}
                  case '8':
                  case 'I':{ somma += 8; break;}
                  case '9':
                  case 'J':{ somma += 9; break;}
                  case 'K':{ somma += 10; break;}
                  case 'L':{ somma += 11; break;}
                  case 'M':{ somma += 12; break;}
                  case 'N':{ somma += 13; break;}
                  case 'O':{ somma += 14; break;}
                  case 'P':{ somma += 15; break;}
                  case 'Q':{ somma += 16; break;}
                  case 'R':{ somma += 17; break;}
                  case 'S':{ somma += 18; break;}
                  case 'T':{ somma += 19; break;}
                  case 'U':{ somma += 20; break;}
                  case 'V':{ somma += 21; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 23; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 25; break;}
                 }
            }
    }
   somma %= 26;
   switch (somma)
         {
          case 0: {chrcontrollo='A'; break;}
          case 1: {chrcontrollo='B'; break;}
          case 2: {chrcontrollo='C'; break;}
          case 3: {chrcontrollo='D'; break;}
          case 4: {chrcontrollo='E'; break;}
          case 5: {chrcontrollo='F'; break;}
          case 6: {chrcontrollo='G'; break;}
          case 7: {chrcontrollo='H'; break;}
          case 8: {chrcontrollo='I'; break;}
          case 9: {chrcontrollo='J'; break;}
          case 10: {chrcontrollo='K'; break;}
          case 11: {chrcontrollo='L'; break;}
          case 12: {chrcontrollo='M'; break;}
          case 13: {chrcontrollo='N'; break;}
          case 14: {chrcontrollo='O'; break;}
          case 15: {chrcontrollo='P'; break;}
          case 16: {chrcontrollo='Q'; break;}
          case 17: {chrcontrollo='R'; break;}
          case 18: {chrcontrollo='S'; break;}
          case 19: {chrcontrollo='T'; break;}
          case 20: {chrcontrollo='U'; break;}
          case 21: {chrcontrollo='V'; break;}
          case 22: {chrcontrollo='W'; break;}
          case 23: {chrcontrollo='X'; break;}
          case 24: {chrcontrollo='Y'; break;}
          case 25: {chrcontrollo='Z'; break;}
         }
 file://--------------------------------------------
document.FormCodFis.CodiceFiscale.value = strCodFis + chrcontrollo;
 }
 return;
}
// -------------------------------------------------------------------------
-
//  END OF SCRIPT
// -------------------------------------------------------------------------
-

 ha scritto nel messaggio
news:ldlI6.4798$UW4.6...@news.infostrada.it...
