Ok, vi posto il programma monco![]()
ciaocodice:<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>

Rispondi quotando