codice:function ControllaCF(cf) { nome = document.anagr.nome.value; cognome = document.anagr.cognome.value; if (Trim(cf)=='') return ''; cf = cf.toUpperCase(); if (cf.length!=16) { return "La lunghezza del codice fiscale non è corretta: il codice fiscale dovrebbe essere lungo esattamente 16 caratteri."; } else { cchar = cf.substring(0, 6); if (isNaN(cchar)==false) { return "I primi sei caratteri sono riferiti al cognome ed il nome e non possono essere numerici."; } else { var cod_nominativo = getChars(cognome, false) + getChars(nome,true); if (cchar!=cod_nominativo) { return "I primi sei caratteri sono riferiti al cognome ed il nome e non sono corretti."; } } cchar = cf.substring(6, 8); strAnno = document.anagr.anno_field.value; strAnno = strAnno.substring(strAnno.length, strAnno.length-2); if (cchar!=strAnno) { return "Il settimo e l\'ottavo carattere sono riferiti all\' anno di nascita."; } cchar = cf.substring(8,9); switch (document.anagr.mese_field_desc.value) { case '1': strMese = 'A'; break; case '2': strMese = 'B'; break; case '3': strMese = 'C'; break; case '4': strMese = 'D'; break; case '5': strMese = 'E'; break; case '6': strMese = 'H'; break; case '7': strMese = 'L'; break; case '8': strMese = 'M'; break; case '9': strMese = 'P'; break; case '10': strMese = 'R'; break; case '11': strMese = 'S'; break; case '12': strMese = 'T'; break; } if (cchar!=strMese) { return "Il nono carattere si riferisce al mese di nascita."; } cchar = cf.substring(9,11); if (document.anagr.sex[1].checked==true) { cchar = cchar - 40; } if (parseFloat(cchar)!=document.anagr.giorno_field.value) { return "Il decimo e l'undicesimo carattere si riferiscono al giorno di nascita."; } validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for( i = 0; i < 16; i++ ){ if( validi.indexOf( cf.charAt(i) ) == -1 ) return "Il codice fiscale contiene un carattere non valido `" + cf.charAt(i) + "'.\nI caratteri validi sono le lettere e le cifre.\n"; } set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ"; setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX"; s = 0; for( i = 1; i <= 13; i += 2 ) s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) ))); for( i = 0; i <= 14; i += 2 ) s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) ))); if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ) return "Il codice fiscale non è corretto:\n"+ "il codice di controllo non corrisponde.\n"; return ""; } }