function VerificaCodFis(Obj,TipoVerifica,idDivAvviso) { //TipoVerifica indica se deve essere presente solo un Cod.Fis. ('C') o solo una P.IVA ('P') o possono coesistere tutte e due ('CP') var CodFisfield = Obj; Err=chkCodFis(Obj,TipoVerifica,idDivAvviso); ObjDivAvviso=document.getElementById(idDivAvviso); if (Err=="Ok") { ObjDivAvviso.innerHTML=""; return true; } else { ObjDivAvviso.innerHTML=Err; //ObjDivAvviso.innerHTML="Codice Fiscale errato"; return false; } } function chkCodFis(Obj,TipoVerifica,idDivAvviso) { var CodFis = Obj.value; CodFis=CodFis.toUpperCase(); //-------------------------------------------------------------------------------- Verifica della lunghezza if (CodFis.length<1) { return "Ok"; } if (TipoVerifica=="C") { if (CodFis.length!=16) { return "Lunghezza non valida: il Cod.Fisc. deve essere composto da 16 caratteri."; } } if (TipoVerifica=="P") { if (CodFis.length!=11) { return "Lunghezza non valida: la P.IVA deve essere composta da 11 numeri."; } } if (TipoVerifica=="CP") { if (CodFis.length!=11 && CodFis.length!=16) { return "Lunghezza non valida: deve essere di 11 caratteri (per la P.IVA) o di 16 (per il Cod.Fisc.)."; } } //-------------------------------------------------------------------------------- Verifica della sintassi if (CodFis.length==16) { //Verifico la sintassi del Cod.Fisc. // 123 456 78901 2345 6 // XXXXXXNNXNNXNNNX ES. DML DVD 75R26 L407 P // XXXXXXNNXNNXNNXX ES. DML DVD 75R26 L40T P (Es. di Omocodia) // XXXXXXNNXNNXNXNX ES. DML DVD 75R26 L4L7 P (Es. di Omocodia) Carattere="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; Pari = new Array(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25); Dispari = new Array(1,0,5,7,9,13,15,17,19,21,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); //---------------------------------------------------------------------- 1-->6 var i=new RegExp("([A-Z]{6})"); if(!i.test(CodFis.substr(0,6))) { return "I primi 6 caratteri devono contenere solo lettere."; } //---------------------------------------------------------------------- 7 //Costruisco un Codice fiscale senza codici di OMOCODIA e nel frattempo calcolo anche il CIN CodFisSintassi=""; NumOmocodici=0; NumCin=0; Msg=""; for (c=1;c<=16;c++) { Car=CodFis.charAt(c-1); // carico il carattere nella posizione corrispondente //Calcolo CIN: if (c!=16) { //Verifico se posizione PARI o DISPARI Indice=Carattere.indexOf(Car); if (parseInt(c/2)==c/2) { //PARI NumCin+=Pari[Indice]; //Msg+=c+":"+Car+" Indice="+Indice+":"+Pari[Indice]+"\n"; } else { //DISPARI NumCin+=Dispari[Indice]; //Msg+=c+":"+Car+" Indice="+Indice+":"+Dispari[Indice]+"\n"; } //Verifico se ci sono codici di OMOCODIA if (c==7 || c==8 || c==10 || c==11 || c==13 || c==14 || c==15) { if (Car=='L') {Car='0';NumOmocodici++;} if (Car=='M') {Car='1';NumOmocodici++;} if (Car=='N') {Car='2';NumOmocodici++;} if (Car=='P') {Car='3';NumOmocodici++;} if (Car=='Q') {Car='4';NumOmocodici++;} if (Car=='R') {Car='5';NumOmocodici++;} if (Car=='S') {Car='6';NumOmocodici++;} if (Car=='T') {Car='7';NumOmocodici++;} if (Car=='U') {Car='8';NumOmocodici++;} if (Car=='V') {Car='9';NumOmocodici++;} if (Car<'0' || Car>'9') { return "Sono stati messi dei caratteri non validi nelle posizioni 7,8,10,11,13,14,15; Vengono accettati solo numeri 0-9 o un codice omocodico (L,M,N,P,Q,R,S,T,U,V)."; } } } CodFisSintassi=CodFisSintassi+Car; } CIN=Carattere.charAt(NumCin%26+10); if (NumOmocodici>1) { return "Il Cod.Fisc. è composto da troppi Omocodici - forma accettata: XXX XXX NNXNN XNNN X, dove X corrisponde un carattere e N un numero o solo un codice omocodico (L,M,N,P,Q,R,S,T,U,V)."; } //Verifico se le cifre del giorno di nascita vanno bene (non OMOCODICO) GiornoNascita=CodFisSintassi.substr(9,2); if (GiornoNascita<'01' || (GiornoNascita>'31' && GiornoNascita<'41') || GiornoNascita>'71') { return "I caratteri riferiti al giorno di nascita (posizione 10 e 11) non sono validi (Se Maschio dal 01 al 31; se Femmina dal 41 al 71)."; } //Verifico se il codice del Comune di nascita è corretto if(CodFis.substr(15,1)!=CIN) { //return "Il CIN (16° carattere) non corrisponde a quello calcolato (\""+CIN+"\")."; return "Il CIN (16° carattere) non corrisponde a quello calcolato."; } //Verifico la sintassi di questo codice fiscale var i=new RegExp("([A-Z]{6})([0-9]{2})([A-Z]{1})([0-9]{2})([A-Z]{1})([0-9]{3})([A-Z]{1})"); if(!i.test(CodFisSintassi)) { return "Il Cod.Fisc. non è nella forma XXX XXX NNXNN XNNN X, dove X corrisponde un carattere e N un numero o un codice omocodico (L,M,N,P,Q,R,S,T,U,V)."; } return "Ok"; } else { //Verifico la P.IVA. var i=new RegExp("([0-9]{11})"); if(!i.test(CodFis)) { return "La P.IVA deve essere composta solo da cifre!"; } //Verifico se il codice della provincia esiste (ultime 3 cifre, a parte il CIN) CodiceProvincia=parseInt(CodFis.substr(7,3),10); //CodiceProvinciaNum=parseInt(CodiceProvincia); if (CodiceProvincia==0 || (CodiceProvincia>121 && CodiceProvincia!=888)) { return "La Partita Iva contiene un codice provincia ("+CodiceProvincia+") non valido (sintassi: NNNNNNNXXXC dove X indica il 'Codice provincia' e C il 'Codice di controllo')"; } //Calcolo e verifico l'ultima cifra della partita iva NumCin=0; //Le cifre al posto dispari vanno sommate tra di loro for(s=1;s<=9;s+=2) {NumCin+=parseInt(CodFis.substr(s-1,1));} //Le cifre al posto pari vanno moltiplicate per 2: se risulta un numero maggiore di 9, sotrarre 9 for(s=2;s<=10;s+=2) { n=parseInt(CodFis.substr(s-1,1))*2; if(n>9) {n=n-9;} NumCin+=n; } CIN=10-NumCin%10;//Il CIN è ottenuto da 10 sottratto il resto ottenuto dalla divisione del nuemro appena trovato e diviso per 10 if (CIN==10) {CIN=0;} //Il CIN se 10 diventa 0 //Controllo il carattere CIN if(CodFis.substr(10,1)!=CIN) { //return "Il Codice di controllo (\""+CodFis.substr(10,1)+"\") presente nella P.IVA come ultima cifra, non corrisponde a quello calcolato (\""+CIN+"\")."; return "Il Codice di controllo (\""+CodFis.substr(10,1)+"\") presente nella P.IVA come ultima cifra, non corrisponde a quello calcolato."; } return "Ok"; } } /* http://jqueryui.com/ */ function JQ_ApriPoPup(idDiv,Funzione) { // Dialog if (Funzione!=null) { $('#'+idDiv).dialog({ width: 600, modal: true, buttons: { "Annulla": function() {$(this).dialog("close");}, "Ok": function() {eval(Funzione);} } }); } else { $('#'+idDiv).dialog({ width: 600, modal: true, buttons: { "Chiudi": function() {$(this).dialog("close");} } }); } }function debug(testo) { var generator=window.open('','name','height=400,width=500'); generator.document.write(testo); generator.document.close(); } function VerificaInt(Obj) { Num=parseInt(Obj.value); if (isNaN(Num)) { alert("Il campo deve essere un numero intero."); Obj.focus(); return false; } Obj.value=Num; return true; } function EvOverOut(NomeOggetto,Classe,Stato) { //Questa funzione serve per cambiare la classe dell'oggetto passato in caso di passaggio // del mouse sopra viene richiamata dalla funzione php "EvidenziaOverOut" presente // in "FunzioniGeneriche.php" ObjBoxOggetto=document.getElementById(NomeOggetto); if (Stato==1) { ObjBoxOggetto.className=Classe+"Hover"; } else { ObjBoxOggetto.className=Classe; } } function CampoOraChange(NomeCampo) { ObjCampo=document.getElementById("id"+NomeCampo+"_Ora"); ObjCampoOre=document.getElementById("id"+NomeCampo+"_OreSelect").value; ObjCampoMinuti=document.getElementById("id"+NomeCampo+"_MinutiSelect").value; if (ObjCampoOre!="" && ObjCampoMinuti!="") { ObjCampo.value=ObjCampoOre+":"+ObjCampoMinuti+":00"; } else { ObjCampo.value=""; } } function WdgTabs_MN(MostraId,ElencoId) { //Ciclo ElencoId con valori separati da "," ArrayId=ElencoId.split(","); for (i=0;i'; infowindow[IDOggetto]=new google.maps.InfoWindow({ content: Descrizione}); google.maps.event.addListener(marker, 'click', function() {infowindow[IDOggetto].open(map,marker);}); } function MapsApriChiudiInfowindow(IDOggetto) { for(var i=1;i