Newsgroup: it.comp.lang.javascript
Titolo: funzione incompleta calcolo codice fiscale

ho trovato questa funzione che calcola il codice fiscale ma è monca, manca
la funzione CalcolaNascita
qualcuno la sta utilizzando e magari può postarla?
ciao a tutti e grazie
// JavaScript Document
var consonanti =  "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ";
var numeri = "0123456789";
var arrMese=Array(
Array("A","1"),
Array("A","01"),
Array("B","2"),
Array("B","02"),
Array("C","3"),
Array("C","03"),
Array("D","4"),
Array("D","04"),
Array("E","5"),
Array("E","05"),
Array("H","6"),
Array("H","06"),
Array("L","7"),
Array("L","07"),
Array("M","8"),
Array("M","08"),
Array("P","9"),
Array("P","09"),
Array("R","10"),
Array("S","11"),
Array("T","12"));
function
CalcolaCodiceFiscaleCompleto(Cognome,Nome,GiornoNascita,MeseNascita,AnnoNascita,Sesso,Luogo)
    {
   if (Cognome != "" && Nome != "" && Luogo != "")
   {
      rc = CalcolaCodiceFiscaleCognome(Cognome);
      rn = CalcolaCodiceFiscaleNome(Nome)
      rN = CalcolaNascita(GiornoNascita, MeseNascita, AnnoNascita, Sesso);
      var cf = rc+rn+rN+Luogo;
      cf +=CalcolaK(rc+rn+rN+Luogo);
      alert(cf);
      return cf;
   }
}
function CalcolaCodiceFiscaleCognome(Cognome)
{
   var code = "";
   code = GetConsonanti(Cognome);
   if (code.length >= 3)
      code = code.substring(0, 3);
   else
   {
      code += GetVocali(Cognome).substring(0, 3 - code.length)
      if (code.length < 3)
         for (i = code.length; i < 3; i++)
            code += "X";
   }
   return code;
}
function CalcolaCodiceFiscaleNome(Nome)
{
   var code = "";
   cons = GetConsonanti(Nome);
   if (cons.length > 3)
      code = cons.substring(0, 1) + cons.substring(2, 3) +
cons.substring(3, 4);
   else if (cons.length == 3)
      code = cons;
   else
   {
      code = cons + GetVocali(Nome).substring(0, 3 - cons.length);
      if (code.length < 3)
         for (i = code.length; i < 3; i++)
            code += "X";
   }
   return code;
}
function CalcolaK(Stringa)
{
   var somma = 0, k;
   var arrPari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var arrDispari = new Array(
      Array(0,1),
      Array(1,0),
      Array(2,5),
      Array(3,7),
      Array(4,9),
      Array(5,13),
      Array(6,15),
      Array(7,17),
      Array(8,19),
      Array(9,21),
      Array("A",1),
      Array("B",0),
      Array("C",5),
      Array("D",7),
      Array("E",9),
      Array("F",13),
      Array("G",15),
      Array("H",17),
      Array("I",19),
      Array("J",21),
      Array("K",2),
      Array("L",4),
      Array("M",18),
      Array("N",20),
      Array("O",11),
      Array("P",3),
      Array("Q",6),
      Array("R",8),
      Array("S",12),
      Array("T",14),
      Array("U",16),
      Array("V",10),
      Array("W",22),
      Array("X",25),
      Array("Y",24),
      Array("Z",23)
   );
   for (i = 0; i < Stringa.length; i += 2)
   {
      for (j = 0; j < arrDispari.length; j++)
      {
         if (Stringa.substring(i, i + 1).toUpperCase() == arrDispari[j][0])
         {
            somma += parseInt(arrDispari[j][1],10);
            break;
         }
      }
   }
   for (i = 1; i < Stringa.length; i += 2)
   {
      if (isNaN(Stringa.substring(i, i + 1)))
         somma += parseInt(arrPari.indexOf(Stringa.substring(i, i +
1)),10);
      else
         somma += parseInt(Stringa.substring(i, i + 1),10);
   }
   k = somma % 26;
   k = arrPari.charAt(k);
   return k;
}
function GetConsonanti(Stringa)
{
   var cns = "";
   for (i = 0; i < Stringa.length; i++)
      if (consonanti.indexOf(Stringa.substring(i, i + 1)) != -1)
         cns += Stringa.substring(i, i + 1);
   return cns.toUpperCase();
}
function GetVocali(Stringa)
{
   var voc = "";
   for (i = 0; i < Stringa.length; i++)
      if (consonanti.indexOf(Stringa.substring(i, i + 1)) == -1 &&
Stringa.substring(i, i + 1) != " ")
         voc += Stringa.substring(i, i + 1);
   return voc.toUpperCase();
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 qualcuno la sta utilizzando e magari può postarla?
Se ti può essere utile:
http://www.marok.org/Utility/codfisc.htm
Tieni conto che è un codice molto vecchio,
è fatto in quel modo per andare più velocemente.
Adesso che più nessuno usa 56k sarebbe più ragionevole semplificarlo...
ma non ho mai avuto voglia! :)
MaRoK

 qualcuno la sta utilizzando e magari può postarla?
 
http://www.google.com/codesearch?q=CalcolaNascita
M