Ok, vi posto il programma monco
codice:
<script>
// --------------------------------------------------
// by br1 - 20 dic 2003
// note: sono esclusi tutti i controlli sulla presenza
// e validita' dei parametri passati
// --------------------------------------------------
function CalcoloCodFis(Cognome, Nome, DataNascita, Sesso, CodiceComune) {
Cognome = Cognome.toUpperCase()
Nome = Nome.toUpperCase()
ggmmaa = DataNascita.split("/")
Sesso = Sesso.toUpperCase()
CodiceComune = CodiceComune.toUpperCase()
// qui costruisco il codice
TxtCodFis = ""
// RICAVO IL COGNOME (1-3)
Vocali = ""
Consonanti = ""
for(var i=0; i<Cognome.length; i++) {
a = Cognome.charAt(i)
if (/[AEIOU]/.test(a)) Vocali += a
if (/[BCDFGHJKLMNPQRSTVWXYZ]/.test(a)) Consonanti += a
}
Consonanti = (Consonanti+Vocali+"XXX").substr(0,3)
TxtCodFis = Consonanti
// RICAVO IL NOME (4-6)
Vocali = ""
Consonanti = ""
for(var i=0; i<Nome.length; i++) {
a = Nome.charAt(i)
if (/[AEIOU]/.test(a)) Vocali += a
if (/[BCDFGHJKLMNPQRSTVWXYZ]/.test(a)) Consonanti += a
}
if (Consonanti.length>3) {
// isolo la prima, terza e quarta consonante
Consonanti = Consonanti.charAt(0)+Consonanti.substr(2,2)
} else {
Consonanti = (Consonanti+Vocali+"XXX").substr(0,3)
}
TxtCodFis += Consonanti
// Anno di nascita (7-8)
aa = String(10000+parseFloat(ggmmaa[2])).substr(3)
TxtCodFis += aa
// Mese di nascita (9)
TxtCodFis += (" ABCDEHLMPRST").charAt(ggmmaa[1])
// Giorno di nascita e sesso (10-11)
Sesso = (Sesso=="F")?140:100;
gg = String(parseFloat(ggmmaa[0]) + Sesso).substr(1)
TxtCodFis += gg
// Codice Località di nascita (12-15)
TxtCodFis += CodiceComune
// Codice di Controllo: Ultima lettera (16)
TxtCodFis += getCtrlChar(TxtCodFis)
// finito!
return (TxtCodFis)
}
// --------------------------------------------------
function getCtrlChar(cfp) { // questa non l'ho fatta io
var sump = 0;
var sumd = 0;
var car = new Array(1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23);
for (var j=1;j<=13;j+=2) sump += cfp.charCodeAt(j)
sump-=404;
for (j=0;j<=4;j+=2) sumd += car[cfp.charCodeAt(j)-65];
sumd += car[cfp.charCodeAt(6)-48] + car[cfp.charCodeAt(8)-65] +
car[cfp.charCodeAt(10)-48] + car[cfp.charCodeAt(12)-48] +
car[cfp.charCodeAt(14)-48];
return (String.fromCharCode((sump+sumd)%26+65));
}
// --------------------------------------------------
// esempio:
alert(CalcoloCodFis("Buon","Natale","25/12/2003","M","H501"))
</script>
ciao