Newsgroup: it.comp.lang.javascript
Titolo: Codice Fiscale: JS!

Ho appena tradotto e compattato un po' (100 righe tonde!) il tanto cercato frammento di script per il codice fiscale pubblicato un po' di tempo fa da VBS a JS.
L'ho provato col mio nome, e funziona, ma ora mi scoppia la testa e non ho + assolutamente voglia di "debuggare" a vuoto, quindi, per piacere, provatelo col vostro nome e cognome e la vostra data di nascita, e se non funziona ditemelo, che lo correggo.    :-o
Se mi volete aiutare ancora di + mi specificate pure se lo script sbaglia il nome o il cognome, e se mi volete tanto tanto bene, mi postate pure il nome o il cognome, e ciò che ne è venuto fuori.       :-))
Se invece lo script funziona perfettamente grazie comunque della collaborazione... :-)
Per  Ro<*¿*>berto:
Non è che sai anche come si ricavano gli ultimi 5 caratteri? Se hai uno script o una procedura in qualunque linguaggio (tranne aramaico, greco e cinese, pls :-) dovrebbe andare bene...     :~)
Forse se n'è già parlato, ma penso che il msg sia già scaduto, *ché OE non me lo mostra +.
Merci.
Codice JS:
"CodiceFiscale.js"
var rConsVoc=new Array("",""), rtotConsVoc=new Array(0,0);
var i, bPraenomen;
function eliminaSpazi(strNome)
{
var spcPos=strNome.indexOf(" ");
if (spcPos!=-1)
{
  return strNome.substring(0,spcPos)+eliminaSpazi(strNome.substring(spcPos+1,strNome.length+0))
}
else return strNome;
}
function Consona(strNome)
{
    var tmp, strVOCALI="AaàEeèéIiìOoòUuù", nowLook;
    noSpaces=eliminaSpazi(strNome);
    for (i=0;i<2;i++)
rConsVoc[i]=rtotConsVoc[i]="";
    for (i=0; i<noSpaces.length; i++)
    {
        nowLook=noSpaces.substring(i+1,i);
tmp=(strVOCALI.indexOf(nowLook)!=-1)+0;
rConsVoc[tmp]+=nowLook;
rtotConsVoc[tmp]++;
    }
}
function GetChars()
{
    switch(rtotConsVoc[0])
    {
        case 0:
        {
            switch(rtotConsVoc[1])
            {
                case 0:                    return("")
                case 1:                    return(rConsVoc[1] + "XX")
                case 2:                    return(rConsVoc[1] + "X")
                default:                   return(rConsVoc[1].substring(1,4))
            }
}
        case 1:
        {
            switch(rtotConsVoc[1])
            {
                case 0:                    return(rConsVoc[0] + "XX")
                case 1:                    return(rConsVoc[0] + rConsVoc[1] + "X")
                default:                   return(rConsVoc[0] + rConsVoc[1].substring(1, 3))
            }
}
        case 2:
        {
            switch(rtotConsVoc[1])
            {
                case 0:                    return(rConsVoc[0] + "X")
                case 1:                    return(rConsVoc[0] + rConsVoc[1])
                default:                   return(rConsVoc[0] + rConsVoc[1].substring(1, 2))
            }
}
        case 3:            return(rConsVoc[0])
        default:           if (bPraenomen)
    return(rConsVoc[0].substring(0, 1) + rConsVoc[0].substring(2, 3) + rConsVoc[0].substring(3, 4))
      else
    return(rConsVoc[0].substring(1, 4))
    }
}
function makeNome(nomePass)
{
    bPraenomen=true;
    Consona(nomePass);
    return GetChars();
}
function makeCognome(nomePass)
{
    bPraenomen=true;
    Consona(nomePass);
    return GetChars();
}
function makeData(dataPass, sexPass)
{
    var giorno, mese, anno, codMese="";
    var mesi="ABCDEHLMPRST";
    giorno = eval(dataPass.substring(1, 2)) +40*(sexPass=="F");
    mese   = eval(dataPass.substring(4, 2));
    anno   = eval(dataPass.substring(7, 4));
    codMese= mesi.substring(mese,mese-1);
   return (((anno<=9)?"0":"")+anno.toString() + codMese + ((giorno<=9)?"0":"")+giorno.toString())
}
Codice HTML, per lo script:
<html>
<head>
<script src="CodiceFiscale.js"></script>
</head>
<body>
<form name="formina">
COGNOME:<input name="nomen" size=20><BR>
NOME:<input name="praenomen" size=20><BR>
NASCITA:<input name="naissance" size=8 value=GGMMAA><BR>
SESSO:<input name="sex6sex" size=2 value="M/F"><BR>
<input type=button onclick="rRun()" value="Calcola">
<input name="lineacurva" size=50>
</form>
<script>
function rRun()
{
document.formina.lineacurva.value= makeCognome(document.formina.nomen.value)+ "-" + makeNome(document.formina.praenomen.value)+ "-" + makeData(document.formina.naissance.value,document.formina.sex6sex.value);
}
</script>
</body>
</html>
Ciao.
Darius  (
www.infotronica.it/darius/
)
 

...


 Merci.
De nada!!!
Un Saluto
Carlo :^)

...
Ho appena tradotto e compattato un po' (100 righe tonde!) il tanto cercato
frammento di script per il codice fiscale pubblicato un po' di tempo fa da
VBS a JS.
L'ho provato col mio nome, e funziona, ma ora mi scoppia la testa e non ho +
assolutamente voglia di "debuggare" a vuoto, quindi, per piacere, provatelo
col vostro nome e cognome e la vostra data di nascita, e se non funziona
ditemelo, che lo correggo.    :-o
Se mi volete aiutare ancora di + mi specificate pure se lo script sbaglia il
nome o il cognome, e se mi volete tanto tanto bene, mi postate pure il nome
o il cognome, e ciт che ne и venuto fuori.       :-))
Se invece lo script funziona perfettamente grazie comunque della
collaborazione... :-)
Per  Ro<*ї*>berto:
Non и che sai anche come si ricavano gli ultimi 5 caratteri? Se hai uno
script o una procedura in qualunque linguaggio (tranne aramaico, greco e
cinese, pls :-) dovrebbe andare bene...     :~)
Forse se n'и giа parlato, ma penso che il msg sia giа scaduto, *chй OE non
me lo mostra +.
Merci.
Codice JS:
"CodiceFiscale.js"
var rConsVoc=new Array("",""), rtotConsVoc=new Array(0,0);
var i, bPraenomen;
function eliminaSpazi(strNome)
{
var spcPos=strNome.indexOf(" ");
if (spcPos!=-1)
{
  return
strNome.substring(0,spcPos)+eliminaSpazi(strNome.substring(spcPos+1,strNome.
length+0))
}
else return strNome;
}
function Consona(strNome)
{
    var tmp, strVOCALI="AaаEeийIiмOoтUuщ", nowLook;


Hola Darius...
ti stavo mandando ieri per icq
il db con i comuni e quello che ti
manca...poi sei andato!!:(
.. si riprova oggi....
nel frattempo un bel G R A Z I E...
per quello fatto!!
poi lo provo..........
PS:... Voglio il tuo aiuto per le BioPagine!!!!!!!!!!!!!
:))
Bye
Ro<*¿*>berto

 in qualunque linguaggio (tranne aramaico, greco e cinese, pls :-) dovrebbe
andare bene...
Per quello e' necessario avere un database con i codici dei comuni o
qualcosa del genere... :-(
Complimenti comunque, un bel lavoro finora.
Che bello fare il beta-tester senza pericoli di crash! :-)))
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

Azz... ma sto codice fiscale tira più delle
Bio Pagine...
.....e se metto on line la foto di chi ha chiesto aiuto
.... 
http://www.probo.it/prove/Java/Lente/immagini/play.jpg
:)
...Chissà se serve!!


Corro a darle una mano di persona!
saluti a te Ro<*¿*>berto ed agli altri pure, ma soprattutto a *lei*!
--
   Antonio Liccardo #8)
  Microsoft Certified Professional
/------------------------------------------------------------------\
| L'esperto è una persona che non ha bisogno di pensare.


Sarei ben felice di avere il DB sui comuni, codici catastali, etc..
Mandameli via email: 
dmDa...@hotmail.com
Merci.
Con cosa associo i file .DBF?
Ciao.
Ргrпыs. [
www.infotronica.it/darius/
]
--
Posted from 
ro...@dns.infotronica.it
 [193.70.43.2]
via Mailgate.ORG Server - 
http://www.mailgate.org

PS:... Voglio il tuo aiuto per le BioPagine!!!!!!!!!!!!!
Ti mando via email ciò che volevo postare al NG.
Ho iniziato a fare già qualcosina... poi ti dico...
Scusami, ma ho di nuovo problemi al server news...
:))
Bye
Ro<*¿*>berto
Ciao.
Ðãrïûs. [
www.infotronica.it/darius/
]


Della serie "gli errori cretini li facciamo tutti": probabilmente il calcolo
dei cognomi lunghi ritornava sempre il primo dei caratteri errato, perché ho
sbagliato a settare il flag bPraenomen, dicendo alla funzione che si
trattava di un nome, anziché di un cognome.   :-(
Ora ho aggiustato anche la data di nascita... ora il tutto dovrebbe
funzionare, intanto che mi arriva il DB dei comuni...
Codice JS:
"CodiceFiscale.js"
var rConsVoc=new Array("",""), rtotConsVoc=new Array(0,0);
var i, bPraenomen;
function eliminaSpazi(strNome)
{
var spcPos=strNome.indexOf(" ");
if (spcPos!=-1)
{
  return
strNome.substring(0,spcPos)+eliminaSpazi(strNome.substring(spcPos+1,strNome.
length+0))
}
else return strNome;
}
function Consona(strNome)
{
    var tmp, strVOCALI="AaāEečéIiėOoōUuų", nowLook;
    noSpaces=eliminaSpazi(strNome);
    for (i=0;i<2;i++)
rConsVoc[i]=rtotConsVoc[i]="";
    for (i=0; i<noSpaces.length; i++)
    {
        nowLook=noSpaces.substring(i+1,i);
nowLook=nowLook.toUpperCase();


}

function makeCognome(nomePass)
{
    bPraenomen=false;
    Consona(nomePass);
    return GetChars();
}
function makeData(dataPass, sexPass)
{
    var giorno, mese, anno, codMese="";
    var mesi="ABCDEHLMPRST";
    giorno = eval(dataPass.substring(0, 2))
+40*(sexPass.toUpperCase()=="F");

    codMese= mesi.substring(mese,mese-1);


<html>



}
</script>
</body>
</html>
Ciao.


funzionare, intanto che mi arriva il DB dei comuni...
ok, funziona tutto!
ciao!
-- 
____________________________________
Blow Your Speaker with Rock 'n' Roll
http://members.xoom.com/terzai
(ora diventata IV i)
...tatatatatata Heavy Metal - Bart Simpson

 cannato a fare il codice fiscale ;)) )!
.... abbiamo quasi la funzione definitiva... ,
casomai riprovalo con quella prima di fare un esposto per
errata attribuzione di codice fiscale!!
:)
--
