/* il file della lingua è /wms_js/i18n/vivaticket-xx.js e va caricato nell'header.
* La variabile usata in questo file è frasi.anagrafica
*/
var cfDialog = '';
var bl_nascita_testo = '';
function chkEditPwd () {
if ($('#editPwd').length) return $('#editPwd').val() ==1;
else return true;
}
function chkCountryIT(nazione) {return ($(nazione).val()=='' || $(nazione).val() == 'it');}
function chkCountryNOTIT(nazione) {return !chkCountryIT(nazione);}
function chkFullReg (){return $('#regType').val() == 'f';}
function chkFullRegFatt (){return $('#regType').val() == 'f' && $('#int_altro').is(':checked');}
function chkOp () {return $('input[name=tipo_visitatore]:checked').val() == 1; }
function chkVis () {return $('input[name=tipo_visitatore]:checked').val() == 2; }
function hideSection (section) {
$(section).hide();
$(section).find('input, textarea, select').prop('disabled', true);
}
function showSection (section) {
$(section).show();
$(section).find('input, textarea, select').prop('disabled', false);
}
//Imposto il Namespace per ANAGRAFICA e funzioni comuni
var ANAGRAFICA = {
/**
* Funzioni accessorie per caricare Nazioni, Province e Comuni
*/
//Carica i dati passati e li mette nella select indicata
chargeData: function (_data, field, selectedValue) {
$.each(_data, function(key, value) {
var sel = selectedValue == key;
$(field).append($('', { value : key, text: value, selected: sel }));
});
},
changeEstero: function (nazione, provincia, comune, reset) {
var parent = nazione.parents('fieldset');
if (parent.length == 0) parent = nazione.parents('form');
if (nazione.val()=='') {
parent.find('.soloItalia').hide();
parent.find('.soloEstero').hide();
parent.find('.soloItalia input, .soloItalia select').prop('disabled', true);
parent.find('.soloEstero input, .soloEstero select').prop('disabled', true);
}
else if (nazione.val()=='ITA' || nazione.val()=='it') {
//Visualizzo l'italia e ne faccio usare i campi
parent.find('.soloItalia').show();
parent.find('.soloItalia input, .soloItalia select').prop('disabled', false);
//Nascondo l'estero e rendo i campi non usabili
parent.find('.soloEstero').hide();
parent.find('.soloEstero input, .soloEstero select').prop('disabled', true);
}
else {
//Nascondo l'italia e rendo i campi non usabili
parent.find('.soloItalia').hide();
parent.find('.soloItalia input, .soloItalia select').prop('disabled', true);
//Visualizzo l'estero e ne faccio usare i campi
parent.find('.soloEstero').show();
parent.find('.soloEstero input, .soloEstero select').prop('disabled', false);
}
if (reset != false) {
//Quando cambio nazione nascita devo resettare tutto
parent.find('.soloItalia '+provincia).val('');
parent.find('.soloItalia '+comune).empty();
parent.find('.soloItalia input, .soloEstero input').val('');
}
},
changeComuni: function (provincia, setComune, field, selectCap) {
//Se non ho la provincia non serve
if (provincia.val() == '') { return; }
// mi salvo la provincia
var id=provincia.attr('id');
var code=$('input[name='+id+']').val();
if (!code || code != provincia.val()) {
$('input[name='+id+']').val(provincia.val());
}
// solo visitatore -> non serve comune
if (chkVis()) { return;}
//Se non ho la provincia non serve
var url = "/inc/retriever.php?nome_provincia="+provincia.val();
var parent = provincia.parents('fieldset');
if (parent.length == 0) parent = provincia.parents('form');
parent.find('.stillWait').html(' ');
$.getJSON(url, function(comuniHash) { ANAGRAFICA.fillComuni ( provincia, comuniHash, setComune, field, selectCap); });
},
fillComuni: function (provincia, comuniHash, setComune, field, selectCap) {
var parent = provincia.parents('fieldset');
if (parent.length == 0) parent = provincia.parents('form');
var campo = parent.find('.soloItalia '+field);
campo.empty();
if (comuniHash !== null)
$.each(comuniHash, function(key, valore) {
var sel=false;
if (setComune) {
sel = setComune.toUpperCase() == valore.nome_comune.toUpperCase();
}
campo.append($(' ', { value : valore.id_comune+";"+valore.nome_comune, text: valore.nome_comune, selected: sel }));
});
parent.find('.stillWait').html('');
ANAGRAFICA.changeCAP($(field), $(selectCap).data('selected'), selectCap);
},
changeCAP: function (comune, setCap, field) {
// recupero il comune vecchio
var id=comune.attr('id');
var code=$('input[name='+id+']').val();
//Se non ho il comune, piallo ed esco
if (comune.val() == '' || comune.val() == undefined) {
if (code)
$('input[name='+id+']').val('');
code=$(field).val();
if (code)
$('input[name='+id+']').val('');
return;
}
if (!code || code != comune.val()) {
$('input[name='+id+']').val(comune.val());
}
var e = comune.val().split(';');
var url = "/inc/retriever.php?comune="+e[0];
var parent = comune.parents('fieldset');
if (parent.length == 0) parent = comune.parents('form');
parent.find('.stillWait').html(' ');
$.getJSON(url, function(CAPHash) {
ANAGRAFICA.fillCAP ( comune, CAPHash, setCap, field);
ANAGRAFICA.updateCAP($(field));
});
},
fillCAP: function (comune, CAPHash, setCap, field) {
var parent = comune.parents('fieldset');
if (parent.length == 0) parent = comune.parents('form');
var campo = parent.find('.soloItalia '+field);
campo.empty();
if (CAPHash.length>1 || CAPHash.length==0) {
if (eng == 0) campo.append($(' ', { value : '', text: '-seleziona-' }));
else campo.append($(' ', { value : '', text: '-select-' }));
}
if (CAPHash !== null) {
var first=false;
if (!setCap && CAPHash.length==1) first=true;
$.each(CAPHash, function(key, valore) {
var sel = false;
if (setCap == valore || first) {
sel = true;
if (first) {
first=false;
}
}
campo.append($(' ', { value : valore, text: valore, selected: sel }));
});
}
parent.find('.stillWait').html('');
},
updateCAP: function (cap) {
var id=cap.attr('id');
var code=$('input[name='+id+']').val();
if (!code || code != cap.val()) {
$('input[name='+id+']').val(cap.val());
}
},
//Metto assieme il tutto
changeAddressData: function (dati, selectNazione, selectProvincia, selectComune, selectCap) {
//Carico i dati della nazione, regione e comune
ANAGRAFICA.chargeData(dati.countryHash, selectNazione, $(selectNazione).data('selected')? $(selectNazione).data('selected'):'ITA');
ANAGRAFICA.chargeData(dati.regionHash, selectProvincia, $(selectProvincia).data('selected'));
ANAGRAFICA.changeComuni($(selectProvincia), $(selectComune).data('selected'), selectComune, selectCap);
if (selectProvincia == 'select#wuf_provincia') {
ANAGRAFICA.changeCAP($(selectComune), $(selectCap).data('selected'), selectCap);
}
//Faccio i visualizzare i campi corretti tra estero e non
//NB: non faccio il reset dei campi
ANAGRAFICA.changeEstero($(selectNazione), selectProvincia, selectComune, false);
//Imposto onchange sulla nazione
$(selectNazione).change (function () {
ANAGRAFICA.changeEstero($(this), selectProvincia, selectComune);
});
//Imposto l'onchange sulla provincia
$(selectProvincia).change (function () { ANAGRAFICA.changeComuni($(this), '' , selectComune, selectCap); });
if (selectProvincia == 'select#wuf_provincia') {
//Imposto l'onchange sul comune
$(selectComune).change (function () { ANAGRAFICA.changeCAP($(this), '' , selectCap); });
// Imposto l'onchange sul cap per salvarmi il campo
$(selectCap).change (function () { ANAGRAFICA.updateCAP($(this)); });
}
}
};
function impostaAttivita () {
$('.attivita').hide();
$('.attivita').find('input').prop('disabled', true);
if ( $('#campo_attivita').val() != 0 ){
$('.row.attivita').show();
$('.attivita.A_'+$('#campo_attivita').val()).show();
$('.attivita.A_'+$('#campo_attivita').val()).find('input').prop('disabled', false);
}
}
function impostaCF (btn_no_cf) {
var parent = btn_no_cf.parents('fieldset');
if (parent.length == 0) parent = btn_no_cf.parents('form');
parent.find('.straniero').val(btn_no_cf.is(':checked')?1:0);
if (btn_no_cf.is(':checked')) {
parent.find('.italian').hide();
parent.find('.foreigner').show();
parent.find('.labelFiscale').html(frasi.anagrafica['documento']);
}
else {
parent.find('.foreigner').hide();
parent.find('.italian').show();
parent.find('.labelFiscale').html(frasi.anagrafica['CFiscale']);
}
}
$(document).ready(function(){
//TIPO VISITATORE
$('.operatore, .visitatore').hide();
/** CAMPI MAIL - PWD */
if ($('input[name=tipo_visitatore]:checked').val() == 1) {
hideSection ('.visitatore');
showSection ('.operatore');
}
else if ($('input[name=tipo_visitatore]:checked').val() == 2) {
hideSection ('.operatore');
showSection ('.visitatore');
}
$('#tipo_operatore').click(function () {
hideSection ('.visitatore');
showSection ('.operatore');
});
$('#tipo_visitatore').click(function () {
hideSection ('.operatore');
showSection ('.visitatore');
});
if ($('#modifica').val() == 0) {
hideSection ('.inModifica');
showSection ('.inRegistrazione');
}
else if ($('#modifica').val() == 0) {
hideSection ('.inRegistrazione');
showSection ('.inModifica');
}
impostaAttivita();
$('#campo_attivita').change (function () {impostaAttivita();});
//DATE
var datepickerConfig= {
changeMonth: true, changeYear: true, yearRange: "-120:+0",
autoclose: true, buttonImage: hostServerImage+"wms_images/calendario.jpg", buttonImageOnly: true
};
$('#data_nascita').datepicker(datepickerConfig);
$('#bl_data_nascita').datepicker(datepickerConfig);
//CODICE FISCALE
// Cambia il layout da registrazione italiano/straniero
if ($('#no_cf_y').length != 0) {
if ($('#no_cf').prop('checked'))
$('#no_cf_n').prop('checked',true);
else
$('#no_cf_y').prop('checked',true);
}
$('#no_cf').click( function () {
if ($('#no_cf_y').length == 0) {
impostaCF ($(this)) ;
}
});
$('#no_cf_y, #no_cf_n').click( function () {
$('#no_cf').prop('checked', !$('#no_cf_y').prop('checked'));
impostaCF ( $('#no_cf')) ;
});
var ccbutton = eng == 0? 'Calcola e chiudi':'Calculate and close';
$('#cfDialog').dialog({
autoOpen: false,
modal: true,
width: 350,
buttons: [{
text: ccbutton,
click: function() { cfDialogCalcola(); },
}],
});
$("#calcolaCodFisc").click(function() {cfDialogOpen ('a');});
$("#bl_nascita").change (function() { if ($(this).val() != bl_nascita_testo ) $('#bl_nascita_codice').val(''); });
$("#bl_nascita").autocomplete ({
source: function (request, response) {
$.ajax( {
url:"/inc/retriever.php?callback=?",
dataType: 'json',
data: { limit: 20, comune_cf: request.term},
success: function (data) {
var suggestions = [];
$.each(data, function(i, val){ suggestions.push(val); });
response(suggestions);
}
} );
},
minLength: 2,
select: function( event, ui ) {
event.preventDefault();
bl_nascita_testo = ui.item.label;
$('#bl_nascita_codice').val(ui.item.value);
$('#bl_nascita').val(ui.item.label);
},
focus: function() {
if (this.value != bl_nascita_testo ) $('#bl_nascita_codice').val('');
}
});
ANAGRAFICA.changeAddressData(dati, 'select#nazione', 'select#provincia', 'select#citta', 'select#cap');
ANAGRAFICA.changeAddressData(dati, 'select#wuf_nazione', 'select#wuf_provincia', 'select#ft_citta', 'select#ft_cap');
if ($('select#wuf_nazione').val() == 'it')
$('.partita_iva').addClass('RequiredField');
else
$('.partita_iva').removeClass('RequiredField');
$('select#wuf_nazione').click (function () {
if ($(this).val() == 'it')
$('.partita_iva').addClass('RequiredField');
else
$('.partita_iva').removeClass('RequiredField');
});
$('#mailFieldsMod').click (function () { $('.email_inRegistrazione').show(); $('.email_inModifica').hide(); });
//PASSWORD
$('#btnPwdEdit').click (function () {
$('.pwdFields, #btnPwdUndoEdit').show();
$('#editPwd').val(1);
$('#btnPwdEdit, .pwdShow').hide();
$('.editPwd').prop('disabled', false);
});
$('#btnPwdUndoEdit').click (function () {
$('.pwdFields, #btnPwdUndoEdit').hide();
$('#editPwd').val(0);
$('#btnPwdEdit, .pwdShow').show();
$('.editPwd').prop('disabled', true);
});
//VALIDATE
$("#signUp").validate({
//debug: true,
rules: {
tipo_visitatore: {required: true },
email: {
required: {depends: function() {return $('#modifica').val()==0;}},
email: true,
remote: {
param: {
url: "/inc/retriever.php",
type: "post",
dataType: 'text',
beforeSend: function () {$('#email').val($.trim($('#email').val().toLowerCase()));},
dataFilter: function (risposta) {
controllo_email = $('#email').val().toLowerCase();
if (risposta == 'KO')
return frasi.anagrafica['emailAlreadyUsed'];
else if (risposta == 'KO ATTIVA')
return frasi.anagrafica['emailAlreadyUsedNotActive'] + ' '+ frasi.anagrafica['accountActivation']+' ';
else if (risposta == 'KO RECUPERO')
return frasi.anagrafica['emailAlreadyUsedActive'] + ' '+ frasi.anagrafica['accountRetrieve']+' .';
else return true;
}
},
depends: function () { return $('#email').val().toLowerCase() != controllo_email.toLowerCase();}
}
},
login: {
required: {depends: function() {return $('#modifica').val()==0;}},
rangelength: [5, 25],
remote: {
param: {
url: "/inc/retriever.php",
type: "post",
dataType: 'text',
cache: false,
beforeSend: function () {$('#username').val($.trim($('#username').val()));},
dataFilter: function (risposta) {
controllo_login = $('#username').val().toLowerCase();
if (risposta == 'KO')
return frasi.anagrafica['usernameAlreadyUsed'];
else return true;
}
},
depends: function () { return $('#username').val().toLowerCase() != controllo_login.toLowerCase();}
}
},
privacy1:{required: true },
privacy2:{required: true },
privacy3:{required: true },
// oldPassword: {required: {depends: chkEditPwd}},
password: {required: {depends: chkEditPwd}, minlength: 8, equalTo: '#password2'},
titolo: {required: true },
nome: {required: true, rangelength: [2, 25] },
cognome: {required: true, rangelength: [2, 25] },
data_nascita: {required: true, dateITA: true },
professione: {required: {depends: function() {return chkOp();}},
rangelength: [2, 50] },
telefono: {rangelength: [6, 21], phone: true },
sitoweb: {url: true },
ft_ragsoc: {required: true, NOTpattern: NOTpattern_strNum},
ft_fiscale: {required: {depends: function() {return chkCountryIT('#wuf_nazione');}},
partita_iva: {depends: function() {return chkCountryIT('#wuf_nazione'); }},
rangelength: {depends: function() {return chkCountryNOTIT('#wuf_nazione') && $('#ft_no_cf').is(':checked');}, param: [2, 20]},
NOTpattern: {depends: function() {return chkCountryNOTIT('#wuf_nazione') && $('#ft_no_cf').is(':checked');}, param: NOTpattern_strNum }
},
wuf_nazione: {required: true},
wuf_provincia:{required: {depends: function() {return chkCountryIT('#wuf_nazione');}},
rangelength: {depends: function() {return chkCountryNOTIT('#wuf_nazione');}, param:[2, 25]},
NOTpattern: NOTpattern_str},
ft_citta: {required: true,
rangelength: {depends: function() {return chkCountryNOTIT('#wuf_nazione');}, param:[2, 35]},
NOTpattern: {depends: function() {return chkCountryNOTIT('#wuf_nazione');}, param: NOTpattern_str}},
ft_cap: {required: true,
rangelength: {depends: function() {return chkCountryNOTIT('#wuf_nazione');}, param:[3, 11]},
NOTpattern: NOTpattern_strNum},
wuf_indirizzo: {required: true,
rangelength: [2, 70],
NOTpattern: NOTpattern_strNum},
//campo_attivita: {required: true },
'specifica_attivita[]': {maxlength: 3},
'specifica_attivita_altro': {required: {depends: function (){
var req = false;
$('input[name^=specifica_attivita]:checked').each (function(key, check) {
if (check.defaultValue == '1.7'||
check.defaultValue == '2.9'||
check.defaultValue == '3.6'||
check.defaultValue == '4.6'||
check.defaultValue == '5.9'||
check.defaultValue == '6.9'||
check.defaultValue == '7.10'||
check.defaultValue == '8.7'
) req = true;
});
return req;
}
}
},
'settore_interesse[]': {maxlength: 3},
'settore_interesse_altro': {required: {depends: function (){
var req = false;
$('input[name^=settore_interesse]:checked').each (function(key, check) {
if (check.defaultValue == 'M') req = true;
});
return req;
}
}
},
//DOCUMENTO
fiscale: {required: true,
rangelength: {depends: function() {return $('#no_cf').is(':checked');}, param: [2, 20]},
NOTpattern: {depends: function() {return $('#no_cf').is(':checked');}, param: NOTpattern_strNum },
codiceFiscale: {depends: function() {return !$('#no_cf').is(':checked'); }}},
//INDIRIZZO
nazione: {required: true },
provincia: {required: {depends: function() {return chkCountryIT('#nazione');}},
rangelength: {depends: function() {return chkCountryNOTIT('#nazione');}, param:[2, 25]},
NOTpattern: NOTpattern_str},
regolamento: {required: true}
},
messages: {
privacy: {required: frasi.anagrafica['privacy'], min: frasi.anagrafica['privacy']},
'specifica_attivita[]': {maxlength: eng==0? "Selezionare non più di {0} caselle":"Check no more than {0} boxes"},
'settore_interesse[]': {maxlength: eng==0? "Selezionare non più di {0} caselle":"Check no more than {0} boxes"}
},
});
});
/* Mostra/nasconde baloon per calcolo codice fiscale
* Parametro action: "o" = Open | "c" = Close | "cc" = Check and Close
* Parametro which: "a" = Anagrafica | "f" = Fatturazione
*/
function cfDialogOpen (which){
cfDialog = which;
if (which == 'a') {
$('#bl_nome').val($('#nome').val());
$('#bl_cognome').val($('#cognome').val());
$('#bl_sesso').val($('#sesso').val());
$('#bl_data_nascita').val($('#data_nascita').val());
} else {
$('#bl_nome').val($('#ft_nome').val());
$('#bl_cognome').val($('#ft_cognome').val());
$('#bl_sesso').val('');
$('#bl_data_nascita').val('');
}
$('#bl_nascita').val(''); $('#bl_nascita_codice').val('');
$('#cfDialog').dialog( "open" );
}
function cfDialogCalcola() {
if (!controllaDatiCodiceFiscale ($('#bl_nome').val(), $('#bl_cognome').val(), $('#bl_sesso').val(),
$('#bl_data_nascita').val(), $('#bl_nascita').val(), $('#bl_nascita_codice').val()
)) return false;
var cf = calcolaCodiceFiscale($('#bl_nome').val(), $('#bl_cognome').val(), $('#bl_sesso').val(),
$('#bl_data_nascita').val(), $('#bl_nascita_codice').val());
if (cfDialog == 'a') {
$('#fiscale').val(cf);
$('#nome').val($('#bl_nome').val());
$('#cognome').val($('#bl_cognome').val());
$('#sesso').val($('#bl_sesso').val());
$('#data_nascita').val($('#bl_data_nascita').val());
$('#data_nascita').change();
} else {
$('#ft_fiscale').val(cf);
$('#ft_nome').val($('#bl_nome').val());
$('#ft_cognome').val($('#bl_cognome').val());
}
$('#cfDialog').dialog("close");
return true;
}
/* ************************ Codice Fiscale ********************************* */
function controllaDatiCodiceFiscale (nome, cognome, sesso, data, luogo, luogo_code) {
var errMsg = '';
var ckdate = false;
var ok = true;
if (!nome) errMsg = frasi.anagrafica['nome']+'\n';
if (!cognome) errMsg += frasi.anagrafica['cognome']+'\n';
if (!sesso) errMsg += frasi.anagrafica['sesso']+'\n';
if (!data) errMsg += frasi.anagrafica['data_nascita']+'\n';
else ckdate = true;
// non ho digitato nulla oppure ho digitato e non trovato nulla
if (!luogo) errMsg += frasi.anagrafica['luogo_nascita']+'\n';
else if (!luogo_code) {
luogo.focus();
ok = false;
}
if (errMsg) errMsg = frasi.anagrafica['emptyErrorChkCF']+'\n'+errMsg;
if (ckdate && !chkDate (data))
errMsg += frasi.anagrafica['errorChkBDate']+'\n';
if (errMsg) {
alert (errMsg);
ok = false;
}
return ok;
}
//Controllo data di nascita
function chkDate (date) {
var matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(date);
if (matches == null) return false;
var d = matches[1];
var m = matches[2] - 1;
var y = matches[3];
var composedDate = new Date(y, m, d, 12, 0, 0);
return composedDate.getDate() == d &&
composedDate.getMonth() == m &&
composedDate.getFullYear() == y;
}
function calcolaCodiceFiscale (nome, cognome, sesso, data, luogo_code) {
var vocali = /[AEIOU\s]/g ;
var notVocali = /[^AEIOU]/g ;
//cognome
var consCognome = cognome.toUpperCase().replace(vocali,'');
var vocCognome = cognome.toUpperCase().replace(notVocali,'');
var codCognome = (consCognome+vocCognome+"XXX").substring(0,3);
//nome
var consNome = nome.toUpperCase().replace(vocali,'');
if (consNome.length>=4) { //voglio 134
var re = /^(.)(.)(.)(.).*/g;
consNome = consNome.replace (re, "$1$3$4");
}
var vocNome = nome.toUpperCase().replace(notVocali,'');
var codNome = (consNome+vocNome+"XXX").substring(0,3);
//Data di nascita + luogo di nascita
var matches = /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/.exec(data);
var dd = matches[1];
var mm = matches[2] - 1;
var yy = matches[3];
var anno = yy.substring(2,4);
var mese = 'ABCDEHLMPRST'.charAt(eval(mm));
var gg = (sesso == 'F')? eval(dd)+40 : eval(dd);
gg = (gg<10)? '0'+gg : gg;
var cf = codCognome + codNome + anno + mese + gg + luogo_code;
var controllo = calcolaCodiceDiControlloCF (cf);
cf = cf + controllo;
return cf;
}
//calcolo del codice di controllo del codice fiscale
function calcolaCodiceDiControlloCF (cf) {
set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
var s = 0;
for( var 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) )));
var c = String.fromCharCode (s%26+'A'.charCodeAt(0));
return c;
}
/* ************************************************************** */
/* switch grafici */
/* ************************************************************** */
function confermaAnagrafica () {
if (!$('#accetto').is(':checked') && $('#modifica').val() != 1) {
alert (frasi.anagrafica['condizioni']+"\n");
return false;
}
return true;
}