/* SCRIPT ************************************************************** codice_fiscale.js | v1.1.0 Obiettivo Fornire un insieme di funzioni per il controllo e la manipolazione del codice fiscale Revisioni 14.04.2003: Internazionalizzazione (Enrico Sodacci) [v1.1.0] 10.05.2002: Passaggio in staging (Alessio Mazzieri) [v1.1.0] 24.04.2002: Ristrutturazione per integrazione applicazione PagoNET (Alessio Mazzieri) [v1.0.0] **************************************************************************************************/ /* FUNZIONE ******************************************************************* verificaCF | v1.0.0 Obiettivo Verificare l'esattezza sintattica del codice fiscale (o della partita IVA) digitata dall'utente Parametri IN [codiceFiscale] Stringa contenente il codice fiscale o la partita IVA IN [tipoCodice] "cf" per codice fiscale oppure "pi" per partita IVA Risultato TRUE se il codice fiscale (o la partita IVA) sono sintatticamente corretti, FALSE altrimenti Revisioni 24.04.2002: Ristrutturazione per integrazione applicazione PagoNET (Alessio Mazzieri) [v1.0.0] **************************************************************************************************/ function verificaCF(codiceFiscale, tipoCodice) { var posizioneCF = 0 var sommaControllo = 0 var carattereControllo = "" if (tipoCodice=="pi") { /* Si tratta di una azienda, quindi viene restituito se la lunghezza è 11 ed è un numero */ return (codiceFiscale.length = 11 && !isNaN(codiceFiscale)); } else { /* Si tratta di un codice fiscale, quindi viene calcolato il codice di controllo */ for (posizioneCF = 0; posizioneCF < 15; posizioneCF++) { if (((posizioneCF + 1) % 2) != 0) { /* Carattere in posizione dispari */ switch (codiceFiscale.charAt(posizioneCF)) { case "0": { sommaControllo += 01; break; } case "1": { sommaControllo += 00; break; } case "2": { sommaControllo += 05; break; } case "3": { sommaControllo += 07; break; } case "4": { sommaControllo += 09; break; } case "5": { sommaControllo += 13; break; } case "6": { sommaControllo += 15; break; } case "7": { sommaControllo += 17; break; } case "8": { sommaControllo += 19; break; } case "9": { sommaControllo += 21; break; } case "A": { sommaControllo += 01; break; } case "B": { sommaControllo += 00; break; } case "C": { sommaControllo += 05; break; } case "D": { sommaControllo += 07; break; } case "E": { sommaControllo += 09; break; } case "F": { sommaControllo += 13; break; } case "G": { sommaControllo += 15; break; } case "H": { sommaControllo += 17; break; } case "I": { sommaControllo += 19; break; } case "J": { sommaControllo += 21; break; } case "K": { sommaControllo += 02; break; } case "L": { sommaControllo += 04; break; } case "M": { sommaControllo += 18; break; } case "N": { sommaControllo += 20; break; } case "O": { sommaControllo += 11; break; } case "P": { sommaControllo += 03; break; } case "Q": { sommaControllo += 06; break; } case "R": { sommaControllo += 08; break; } case "S": { sommaControllo += 12; break; } case "T": { sommaControllo += 14; break; } case "U": { sommaControllo += 16; break; } case "V": { sommaControllo += 10; break; } case "W": { sommaControllo += 22; break; } case "X": { sommaControllo += 25; break; } case "Y": { sommaControllo += 24; break; } case "Z": { sommaControllo += 23; break; } } } else { /* Carattere in posizione pari */ switch (codiceFiscale.charAt(posizioneCF)) { case "0": { sommaControllo += 00; break; } case "1": { sommaControllo += 01; break; } case "2": { sommaControllo += 02; break; } case "3": { sommaControllo += 03; break; } case "4": { sommaControllo += 04; break; } case "5": { sommaControllo += 05; break; } case "6": { sommaControllo += 06; break; } case "7": { sommaControllo += 07; break; } case "8": { sommaControllo += 08; break; } case "9": { sommaControllo += 09; break; } case "A": { sommaControllo += 00; break; } case "B": { sommaControllo += 01; break; } case "C": { sommaControllo += 02; break; } case "D": { sommaControllo += 03; break; } case "E": { sommaControllo += 04; break; } case "F": { sommaControllo += 05; break; } case "G": { sommaControllo += 06; break; } case "H": { sommaControllo += 07; break; } case "I": { sommaControllo += 08; break; } case "J": { sommaControllo += 09; break; } case "K": { sommaControllo += 10; break; } case "L": { sommaControllo += 11; break; } case "M": { sommaControllo += 12; break; } case "N": { sommaControllo += 13; break; } case "O": { sommaControllo += 14; break; } case "P": { sommaControllo += 15; break; } case "Q": { sommaControllo += 16; break; } case "R": { sommaControllo += 17; break; } case "S": { sommaControllo += 18; break; } case "T": { sommaControllo += 19; break; } case "U": { sommaControllo += 20; break; } case "V": { sommaControllo += 21; break; } case "W": { sommaControllo += 22; break; } case "X": { sommaControllo += 23; break; } case "Y": { sommaControllo += 24; break; } case "Z": { sommaControllo += 25; break; } } } } /* Somma di controllo modulo 26, calcolo lettera */ sommaControllo %= 26 switch (sommaControllo) { case 00: { carattereControllo = "A"; break; } case 01: { carattereControllo = "B"; break; } case 02: { carattereControllo = "C"; break; } case 03: { carattereControllo = "D"; break; } case 04: { carattereControllo = "E"; break; } case 05: { carattereControllo = "F"; break; } case 06: { carattereControllo = "G"; break; } case 07: { carattereControllo = "H"; break; } case 08: { carattereControllo = "I"; break; } case 09: { carattereControllo = "J"; break; } case 10: { carattereControllo = "K"; break; } case 11: { carattereControllo = "L"; break; } case 12: { carattereControllo = "M"; break; } case 13: { carattereControllo = "N"; break; } case 14: { carattereControllo = "O"; break; } case 15: { carattereControllo = "P"; break; } case 16: { carattereControllo = "Q"; break; } case 17: { carattereControllo = "R"; break; } case 18: { carattereControllo = "S"; break; } case 19: { carattereControllo = "T"; break; } case 20: { carattereControllo = "U"; break; } case 21: { carattereControllo = "V"; break; } case 22: { carattereControllo = "W"; break; } case 23: { carattereControllo = "X"; break; } case 24: { carattereControllo = "Y"; break; } case 25: { carattereControllo = "Z"; break; } } return (codiceFiscale.charAt(codiceFiscale.length - 1) == carattereControllo) } }