var userID; /* *************************************************************************************************************** initializepage(): funzione per la gestione dell'identificativo utente.carrello La function viene richiamata dall'evento onLoad() delle pagine, ed esegue le seguenti operazioni: cerca di leggere un eventuale cooky relativo al dominio presente; se non esiste cookie, cerca di scriverne uno; se l'operazione va a buon fine, nel cookie avrò lo userID della sessione corrente; se no, l'utente non accetta i cookie: genero allora uno userID che attacco al tutti i link della pagina; *************************************************************************************************************** */ function initializepage() { var cookies=document.cookie; var URLuserid = new String(document.URL); userID = getuserid("carr", cookies, ";"); //se non esiste il cookie, vedo se viene da un sito esterno. Se si, assegno un userid random //se no, ci sarà già nell'url e lo leggo if (userID==null) { //var domainName="proxima07" var domainName="www.centroreach.it"; if (document.referrer.substr (7, domainName.length).toLowerCase() != domainName) { userID=randomnum(); } else { userID=getuserid("carr", URLuserid, "&"); } } //devo cambiare logica: se non c'è nell'URL, ALLORA usa il cookie collid=getuserid("carr", URLuserid, "&"); if (collid==null) collid = getuserid("carr", cookies, ";"); //Appende il parametro specificato ai links setlinks("carr", userID); if (collid!=null) setlinks("carr", collid); } /* ************************************************************************************************************* randomnum(): genera un numero casuale per assegnare un UserID sufficientemente random ************************************************************************************************************* */ function randomnum() { var Tday=new Date(); var rn = Math.floor(16000*Math.random()+1) + "-" + Tday.getHours()+Tday.getMinutes()+Tday.getSeconds(); return rn; } /* ************************************************************************************************************* setlinks(): appende a tutti i links della pagina corrente il parametro specificato. I parametri della funzione sono: n, nome del parametro da appendere v, valore del parametro Solo i links che puntano a URL vengono utilizzati: i link di tipo HREF="javascript:...." non sono modificati. Inoltre, sono ignorati gli attachments ************************************************************************************************************* */ function setlinks(n,v) { for (var i = 0; i < document.links.length; i++) { //Usa la search property del link per attaccarci lo userid //SOLO SE I LINK SONO DEL TIPO http:// (escludo i Javascript: if (document.links[i].href.substring(0,4)=="http") //SOLO SE CONTIENE ? (escludo links esterni senza comando Domino) if(document.links[i].href.indexOf('?')!=-1) //SOLO SE NON CONTIENE & (speriamo vada bene....) if(document.links[i].href.indexOf('&')==-1) //Escludo i file attachmentsper i quali fa casino if(document.links[i].href.indexOf('$FILE')==-1) document.links[i].search=document.links[i].search + "&" + n + "=" +v } } /* ************************************************************************************************************* fixpopuplinks(): setta il TARGET="_blank", cioè una nuova finestra, per tutti i link che abbiano un target diverso. La uso per i documenti che possono essere aperti anche in finestrella pop-up, e che pertanto hanno comportamenti diversi ************************************************************************************************************* */ function fixpopuplinks() { for (var i = 0; i < document.links.length; i++) { if(document.links[i].target) document.links[i].target="_blank"; } } /* ************************************************************************************************************* getuserid(): data in input una stringa qualunque, ritorna il valore del parametro specificato, dato anche il separatore tra parametri utilizzato (normalmente &) ************************************************************************************************************* */ function getuserid(name, inputstring, trunc) { inputstring = (inputstring+trunc).toLowerCase(); var start=inputstring.indexOf(name + "="); if (start>-1) { start=inputstring.indexOf("=", start)+1 } var end = inputstring.indexOf(trunc, start); if (start==-1 || end==-1) { value=null } else { var value=unescape(inputstring.substring(start,end)) } return value; } /* ************************************************************************************************************* coverAllSite(): inserita in framesets, esegue le verifiche su QueryString e Cookies e se necessario li setta all'ingresso. Server per coprire tutto il sito sotto riconoscimento affiliati ************************************************************************************************************* */ function coverAllSite(){ var theCookies=document.cookie.toLowerCase(); var URLstring = new String(document.location); if (theCookies.indexOf("collid")==-1){ //non è stato ancora settato il cookie del collid var collid=getuserid("collid", URLstring, "&"); if (collid!=""){ //Se viene letto dal QueryString un collid var nextMonth=new Date(); nextMonth.setMonth(nextMonth.getMonth()+1); document.cookie="collid=" + collid + "; expires=" + nextMonth.toGMTString(); } } if (theCookies.indexOf("cobra")==-1){ //non è stato ancora settato il cookie del cobranding var cobra=getuserid("cobra", URLstring, "&"); if (cobra!=""){ //Se viene letto dal QueryString un cobra document.cookie="cobra=" + cobra; } } } /* ************************************************************************************************************* apri(URL): apre una finestra indipendente senza menu, icone e altri elementi inutli. Accetta un minimo di un argomento (URL) e un massimo di sei (URL, width, height, left, top, scrollbar) La finestra ha le dimensioni di default di 650 x 500 e, se necessario, le barre di scorrimento. ************************************************************************************************************* */ function apri (){ var args=apri.arguments; URL=args[0]; args[1]?w=args[1]:w=657; args[2]?h=args[2]:h=500; args[3]?l=args[3]:l=100; args[4]?t=args[4]:t=100; args[5]?s=args[5]:s='yes'; var features ="menubar=no,toolbar=no,width="+w+",height="+h+",status=no,scrollbars="+s+",top="+t+",left="+l+",resizable=yes"; window.open(URL,"",features); } /* ************************************************************************************************************* vali_date(obj): Function di validazione sommaria di una data in formato italiano ************************************************************************************************************* */ function vali_date(obj) { if (obj.value==""){ return false; } //if (!(/\d{2}\/{1}\d{2}\/{1}\d{4}/g.test(obj.value)) || obj.value.length>10) { // alert('Il formato della data in ' + obj.name + ' deve essere GG/MM/AAAA.') // obj.focus() // obj.select() // return false //} if(obj.value.charAt(2)!="/"){ alert("Il formato della data in " +obj.name+" deve essere GG/MM/AAAA") obj.focus(); return false; } if(obj.value.charAt(5)!="/" ){ alert("Il formato della data in " +obj.name+" deve essere GG/MM/AAAA") obj.focus(); return false; } if(obj.value.length<10 | obj.value.length>10){ alert("Il formato della data in " +obj.name+" deve essere GG/MM/AAAA") obj.focus(); return false; } if(isNaN(obj.value.charAt(0))||isNaN(obj.value.charAt(1))||isNaN(obj.value.charAt(3))||isNaN(obj.value.charAt(4))||isNaN(obj.value.charAt(6))||isNaN(obj.value.charAt(7))||isNaN(obj.value.charAt(8))||isNaN(obj.value.charAt(9))) { alert("Il formato della data in " +obj.name+"deve essere GG/MM/AAAA") obj.focus(); return false; } dataOdierna = new Date(); var giorno=dataOdierna.getDate(); var ngiorno=eval(giorno); var mese=dataOdierna.getMonth(); var nmese=eval(mese)+1 var anno = dataOdierna.getUTCFullYear(); var nanno=eval(anno) //Mi leggo il giorno, il mese e l'anno della data di scadenza inserita e trasformo questi valori in numeri datascadenza=obj.value var dsgiorno=datascadenza.substring(0,2); var Ndsgiorno=eval(dsgiorno) var dsmese=datascadenza.substring(3,5); var Ndsmese=eval(dsmese) var dsanno=datascadenza.substring(6,10); var Ndsanno=eval(dsanno) if (Ndsanno<1900){ alert("L'anno non deve essere inferiore al 1900"); obj.focus(); return false; } if (Ndsmese>12 | Ndsmese==0){ alert("Il mese deve essere compreso fra 01 e 12"); obj.focus(); return false; } if ((Ndsmese==1 | Ndsmese==3 | Ndsmese==5 | Ndsmese==7 | Ndsmese==8 | Ndsmese==10 | Ndsmese==12 ) & (Ndsgiorno>31 | Ndsgiorno==0)){ alert("I giorni del mese inserito sono compresi fra 01 e 31"); obj.focus(); return false; } if ((Ndsmese==4 | Ndsmese==6 | Ndsmese==9 | Ndsmese==11 ) & (Ndsgiorno>30 | Ndsgiorno==0)){ alert("I giorni del mese inserito sono compresi fra 01 e 30"); obj.focus(); return false; } if(Ndsmese=='02' & Ndsgiorno==0){ alert('Il giorno del mese inserito non può essere uguale a 00'); obj.focus(); return false } if(Ndsmese=='02'){ //processo anno bisestile if(Ndsgiorno>29){ alert('Il mese di Febbraio ha meno di 30 giorni'); obj.focus(); return false } else if ((Ndsgiorno==29)&&(!((Ndsanno % 4 == 0) && (!(Ndsanno % 100 == 0)) || (Ndsanno % 400 == 0)))){ alert("L'anno inserito non è bisestile"); obj.focus(); return false; } } return true; } /* ************************************************************************************************************* vali_monthyear(obj): Function di validazione sommaria di una data in formato mm/aaaa ************************************************************************************************************* */ function vali_monthyear(obj) { if (obj.value==""){ return false; } //if (!(/\d{2}\/{1}\d{2}\/{1}\d{4}/g.test(obj.value)) || obj.value.length>7) { // alert('Il formato della data deve essere MM/AAAA.') // obj.focus() // obj.select() // return false //} if(obj.value.charAt(2)!="/"){ alert("Il formato della data deve essere MM/AAAA") obj.focus(); return false; } if(obj.value.length<7 | obj.value.length>7){ alert("Il formato della data deve essere MM/AAAA") obj.focus(); return false; } if(isNaN(obj.value.charAt(0))||isNaN(obj.value.charAt(1))||isNaN(obj.value.charAt(3))||isNaN(obj.value.charAt(4))||isNaN(obj.value.charAt(5))||isNaN(obj.value.charAt(6))) { alert("Il formato della data deve essere MM/AAAA") obj.focus(); return false; } dataOdierna = new Date(); var giorno=dataOdierna.getDate(); var ngiorno=eval(giorno); var mese=dataOdierna.getMonth(); var nmese=eval(mese)+1 var anno = dataOdierna.getUTCFullYear(); var nanno=eval(anno) //Mi leggo il giorno, il mese e l'anno della data di scadenza inserita e trasformo questi valori in numeri datascadenza=obj.value var dsmese=datascadenza.substring(0,2); var Ndsmese=eval(dsmese) var dsanno=datascadenza.substring(3,7); var Ndsanno=eval(dsanno) if (Ndsanno<1900){ alert("L'anno non deve essere inferiore al 1900"); obj.focus(); return false; } if (Ndsmese>12 | Ndsmese==0){ alert("Il mese deve essere compreso fra 01 e 12"); obj.focus(); return false; } return true; } /* ************************************************************************************************************* vali_mail(this): Function di validazione di una mail ************************************************************************************************************* */ function vali_mail(obj){ var it=obj.value; if (it=='') return false; // if (!(/\w+\@{1}\w+\.{1}\w+/g.test(it))){ if (!(it.match(/^\w+((\.|-){1}\w+)*\@{1}\w+((\.|-){1}\w+)*$/))){ alert("Verificare l'indirizzo e-mail"); obj.focus(); obj.select(); return false; } return true; } /* ************************************************************************************************************* function vali_num(this) Validazione dei campi numerici. Il campo viene rivalorizzato alla sola parte numerica. ************************************************************************************************************* */ function vali_num(obj) { if (obj.value=='') return false; if ( isNaN(parseInt (obj.value,10))) { alert('Il campo ' + obj.name + ' deve essere un numero') obj.focus() obj.select() } /* else // se faccio un replace, non passa Roma: 00195 diventa 195 obj.value = parseInt(obj.value.replace(/\./g,""),10) */ } /* ************************************************************************************************************* IMG Libreria standard di funzioni per il rollover ************************************************************************************************************* function IMGpreload() { var d=document; if(d.images){ if(!d.preload) d.preload=new Array(); var j=d.preload.length, a=IMGpreload.arguments; for(i=0; i6) sigla=sigla.substring(0,4)+ sigla.substring(5,7); var tabella = new Array("","A","B","C","D","E","H","L","M","P","R","S","T"); var cf = it.value.toUpperCase(); dn=frm.DataNascita.value; dd="0"+(parseInt(dn.substring(0,2),10)+(frm.Sesso[1].checked?40:0)); sigla+=dn.substr(dn.length-2,2)+tabella[parseInt(dn.substring(3,5),10)]+dd.substr(dd.length-2,2); if(it.value.substring(0,11).toUpperCase()!=sigla){ alert("Il codice fiscale è errato"); return false; } var cm=it.value.substring(11,it.value.length); // if (cm.length!=5 | !(/[A-Z]{1}\d{3}[A-Z]{1}/g.test(cm))){NETSCAPE non gradisce le regexp if (cm.length!=5){ alert("Il codice fiscale è errato"); return false; } return true; } /* ************************************************************************************************************* CCcodiceControllo - Ambito Carta di credito, doplicato a causa dei nomi dei campi che sono differenti Function di controllo del codice fiscale. La funzione verifica il codice fiscale nell'input "it" (il parametro), utilizzando un campo data per la verifica della sola parte del codice legata alla data di nascita del soggetto. Viene inoltre verificato il codice di controllo. Il controllo pertanto non è completo. ************************************************************************************************************* */ function CCcodiceControllo(it){ var sigla=""; var frm = document.forms[0] var ln=frm.CCLastName.value.toUpperCase(); var rec="BCDFGHJKLMNPQRSTVYXWZ"; for(i=0;i6) sigla=sigla.substring(0,4)+ sigla.substring(5,7); var tabella = new Array("","A","B","C","D","E","H","L","M","P","R","S","T"); var cf = it.value.toUpperCase(); dn=frm.CCDataNascita.value; dd="0"+(parseInt(dn.substring(0,2),10)+(frm.CCSesso[1].checked?40:0)); sigla+=dn.substr(dn.length-2,2)+tabella[parseInt(dn.substring(3,5),10)]+dd.substr(dd.length-2,2); if(it.value.substring(0,11).toUpperCase()!=sigla){ alert("Il codice fiscale è errato"); return false; } var cm=it.value.substring(11,it.value.length); // if (cm.length!=5 | !(/[A-Z]{1}\d{3}[A-Z]{1}/g.test(cm))){NETSCAPE non gradisce le regexp if (cm.length!=5){ alert("Il codice fiscale è errato"); return false; } return true; } /* ************************************************************************************************************* Function per caricare i dati contraente nella sezione dati assicurato ************************************************************************************************************* */ function contraenteAssicurato (){ var frm = document.forms[0] frm.AsFirstName.value=frm.FirstName.value frm.AsLastName.value=frm.LastName.value frm.AssVia.value=frm.Via.value frm.AssCAP.value=frm.CAP.value frm.AssCitta.value=frm.Citta.value frm.AssProv.value=frm.Prov.value frm.AsCittaNascita.value=frm.CittaNascita.value frm.AsDataNascita.value=frm.DataNascita.value frm.AsCF.value=frm.CF.value } /* ************************************************************************************************************* Function per caricare i dati contraente nella sezione dati bene ************************************************************************************************************* */ function indirizzoUbicazione (){ var frm = document.forms[0] frm.AsVia.value=frm.Via.value frm.AsCAP.value=frm.CAP.value frm.AsCitta.value=frm.Citta.value frm.AsProvincia.value=frm.Prov.value } /* ************************************************************************************************************* Function per caricare i dati contraente nella sezione dati intestatario PRA ************************************************************************************************************* */ function contraenteIntestatario (){ var frm = document.forms[0] frm.PRAFirstName.value=frm.FirstName.value frm.PRALastName.value=frm.LastName.value frm.PRAVia.value=frm.Via.value frm.PRACAP.value=frm.CAP.value frm.PRACitta.value=frm.Citta.value frm.PRAProv.value=frm.Prov.value frm.PRACittaNascita.value=frm.CittaNascita.value frm.PRADataNascita.value=frm.DataNascita.value frm.PRACF.value=frm.CF.value } /* ************************************************************************************************************* Function per PREcaricare le immagini - by BAMADO ************************************************************************************************************* */ function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i