/* * SET DI FUNZIONI PER IL LOAD DELLE PRENOTAZIONI E DEI FORM NEL PANNELLO * */ function load_area_prenotazioni_camera($elemento_id,$mese,$anno,$gestione){ $('#area_prenotazioni_'+$elemento_id).html(' Caricamento area prenotazioni in corso...'); $('#area_prenotazioni_'+$elemento_id).show().load('/_ajax/area_prenotazioni_camere.php?id='+$elemento_id+'&mese='+$mese+'&anno='+$anno+'&gestione='+$gestione); } function load_prenota_camera($camera_id,date,gestione){ $('#modifica_prenotazioni_'+$camera_id).html(' Caricamento area prenotazioni in corso...'); $('#modifica_prenotazioni_'+$camera_id).show().load('/_ajax/prenota_camera.php?id='+$camera_id+'&date='+date+'&gestione='+gestione); } function load_container_camera($camera_id,date,$prenotazione_id,$blocca_giorno){ $('#container_prenotazioni_'+$camera_id).html(' Caricamento area prenotazioni in corso...'); $('#container_prenotazioni_'+$camera_id).show().load('/_ajax/prenota_camera.php?id='+$camera_id+'&date='+date+'&prenotazione_id='+$prenotazione_id+'&blocca_giorno='+$blocca_giorno); } /* * FUNZIONE DI AUTOCOMPLETE COMUNI NEL FORM DI PRENOTAZIONE * */ function autocomplete_comuni($camera_id){ $( "#seleziona_citta"+$camera_id).autocomplete({ source: function(request, response) { $.ajax({ url: "/_ajax/seleziona_citta.php", data: { term: request.term }, type: "POST", // a jQuery ajax POST transmits in querystring format in utf-8 dataType: "json", //return data in json format success: function(data) { if(data != null){ response($.map(data, function(item) { return { value: item.value, sigla: item.sigla, id: item.id } })) } } }); }, select: function( event, ui ) { $('#citta_selezionata'+$camera_id).val(ui.item.id); }, minLength: 3 }); } /* * FUNZIONE CHE DATO IL TIPO DI CAMERA,ARRIVO E PARTENZA CALCOLA IL PREZZO (PANNELLO) */ function calcola_prezzo_camera($camera_id){ var $arrivo = $('#arrivo_'+$camera_id).val(); var $partenza = $('#partenza_'+$camera_id).val(); var $tipo_uso_id = $('#tipo_uso_id_'+$camera_id).val(); if( ($arrivo != '') && ($partenza != '') && ($tipo_uso_id != '') && (typeof($tipo_uso_id) != 'undefined') ){ // MANDO LA FUNZIONE $.post('/_ajax/calcola_prezzo.php', { arrivo: $arrivo, partenza: $partenza, tipo_uso_id: $tipo_uso_id, camera_id: $camera_id }, function(data){ $('#prezzo_'+$camera_id).val(data); } ); } // MANDO LA FUNZIONE } /* * VALIDATE DEL FORM DI PRENOTAZIONE - PANNELLO!! */ function validate_form_prenotazione($camera_id){ return $("#form_prenotazione_"+$camera_id).validate({ rules : { "email" : { required: false, email: true }, "numero_carta" : { required: false, creditcard: true }, "arrivo" : { required: true }, "partenza" : { required: true }, "camera_id" : { required: true } }, messages : { "arrivo" : "
Obbligatorio", "partenza" : "
Obbligatorio", "nome" : "
Obbligatorio", "cognome" : "
Obbligatorio", "email" : "
Inserire una email valida", "tipo_uso_id": "
Obbligatorio", "carta_credito_id": "
Obbligatorio", "mese_scadenza_carta": "
Obbligatorio", "anno_scadenza_carta":"
Obbligatorio", "cvv2": "
Obbligatorio", "titolare_carta": "
Obbligatorio", "numero_carta": "
Inserire un numero carta di credito valido" } }).form(); } function obbligatorioSP(){ if($('#payment_mode_after').is(':checked')){ return true; } else{ return false; } } /* * VALIDATE DEL FORM DI PRENOTAZIONE - SITO!! */ function validate_form_prenotazione_sito(){ $("#form_prenotazione_sito").validate({ rules : { "email" : { required: true, email: true }, "numero_carta" : { required: function(element){ return obbligatorioSP(); }, creditcard: true }, "carta_credito_id" : { required: function(element){ return obbligatorioSP(); } }, "mese_scadenza_carta" : { required: function(element){ return obbligatorioSP(); } }, "anno_scadenza_carta" : { required: function(element){ return obbligatorioSP(); } }, "cvv2" : { required: function(element){ return obbligatorioSP(); }, number: true, minlength: 3 }, "titolare_carta" : { required: function(element){ return obbligatorioSP(); } }, /* "code" : { required: true, remote: '/_ajax/controllo_captcha.php' }, */ "tel" : { required: true // number: true } }, messages : { "email" : "
Inserire una email valida", "numero_carta": "
Inserire un numero di carta corretto", "code": "
Inserire correttamente il codice di sicurezza", "cvv2": "
Inserire correttamente il Cvv2", "tel": "
Inserire correttamente il num.telefono" } }); } /* * FUNZIONE CHE DA IL PROSPETTO PER LE PRENOTAZIONI A 3 MESI PER LE CAMERE - PANNELLO!! */ function calendario_prenotazioni($camera_id,mese,anno,gestione){ months = new Array(), days = new Array(), years = new Array(), confirmed = new Array(), bloccato = new Array(); $.post('/_ajax/giorni_occupati.php', { pannello : 1, tipo : 0, camera_id: $camera_id, mese : mese, anno: anno, mesi_durata : 3 }, function(data){ for (x = 0; x < data.length; x++) { months.push(data[x].mese); days.push(data[x].giorno); years.push(data[x].anno); confirmed.push(data[x].confermata); bloccato.push(data[x].bloccato); } var pickerOpts = { beforeShowDay: function(date){ // BEFORE SHOW DAY if(gestione == 'inserimento'){ // INSERIMENTO for(x = 0; x < days.length; x++) { if( date.getMonth() == months[x] - 1 && date.getDate() == days[x] && date.getFullYear() == years[x] ) { if(bloccato[x] == 1){ // PRENOTAZIONE CONFERMATA return [false, "prenotato"]; } else{ // PRENOTAZIONE NON CONFERMATA // return [false, "non_confermato"]; return [true, ""]; } } } return [true, ""]; } // FINE INSERIMENTO else { // MODIFICA for(x = 0; x < days.length; x++) { if( date.getMonth() == months[x] - 1 && date.getDate() == days[x] && date.getFullYear() == years[x] ) { if(confirmed[x] == 1){ // PRENOTAZIONE CONFERMATA return [true, "prenotato"]; } else{ // PRENOTAZIONE NON CONFERMATA return [true, "non_confermato"]; } } } return [false, ""]; } // FINE MODIFICA },// BEFORE SHOW DAY onChangeMonthYear: function(year, month, inst) { $('.calendario_prenotazioni').each(function(){ if($(this).is(':visible')){ $elemento_id = $(this).attr('rel'); load_area_prenotazioni_camera($elemento_id, month, year,gestione); } }); }, numberOfMonths: 3, defaultDate: new Date(anno,mese-1), onSelect: function(date,inst){ inst.inline = false; load_prenota_camera($camera_id,date,gestione); } }; $("#prenotazioni_"+$camera_id).datepicker(pickerOpts); $('a.ui-state-active').removeClass('ui-state-active'); } ,'json'); } /* * FUNZIONE CHE GENERA IL DATEPICKER ARRIVO PER LE PRENOTAZIONI CAMERE */ function datepicker_form_prenotazione_arrivo($camera_id,$prenotazione_id,$arrivo_id,$partenza_id,$post,$pannello){ var months = []; var days = []; var years = []; confirmed = new Array(); bloccato = new Array(); if(!$arrivo_id && !$partenza_id){ // PANNELLO $arrivo_id = 'arrivo'; $partenza_id = 'partenza'; $post = 'giorni_occupati'; } $.post('/_ajax/'+$post+'.php', { pannello:$pannello, tipo : 0, camera_id: $camera_id, mese : new Date().getMonth(), anno: new Date().getFullYear(), mesi_durata : 14, prenotazione_id : $prenotazione_id }, function(data){ for (x = 0; x < data.length; x++) { months.push(data[x].mese); days.push(data[x].giorno); years.push(data[x].anno); confirmed.push(data[x].confermata); bloccato.push(data[x].bloccato); } var pickerOpts = { beforeShowDay: function(date){ // SE IL GIORNO E' PRENOTATO NON E' SELEZIONABILE for(x = 0; x < days.length; x++) { if( date.getMonth() == months[x] - 1 && date.getDate() == days[x] && date.getFullYear() == years[x] && bloccato[x] == 1 ) { return [false, ""]; } } return [true, ""]; }, numberOfMonths: 1, dateFormat : 'dd/mm/yy', showOn: "both", buttonImage: "/immagini/calendar.png", buttonImageOnly: true, minDate:0, maxDate:'+1y', onSelect: function(selectedDate) { instance = $( this ).data("datepicker"), date = $.datepicker.parseDate( instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings ); // SELEZIONO ARRIVO -> CAMBIO MINDATE DI PARTENZA +1 GIORNO // SELEZIONO PARTENZA -> CAMBIO MAXDATE DI ARRIVO - 1 GIORN0 date.setDate(date.getDate()+1); minDate = new Date(); minDate.setTime(date.valueOf()); $('#'+$partenza_id).datepicker("option","minDate",minDate); // SETTO MAXDATE DI PARTENZA AL PRIMO GIORNO OCCUPATO loop_date = new Date(); loop_date.setTime(minDate.valueOf()); maxDate = ''; for(loop = 0; loop < 364; loop++){ if(loop != 0){ loop_date.setDate(loop_date.getDate()+1); } for(x = 0; x < days.length; x++) { if( loop_date.getMonth() == months[x] - 1 && loop_date.getDate() == days[x] && loop_date.getFullYear() == years[x] && bloccato[x] == 1 ) { maxDate = loop_date; break; } } if(maxDate != ''){ break; } } if(maxDate != ''){ $('#'+$partenza_id).datepicker("option","maxDate",maxDate ); } else { $('#'+$partenza_id).datepicker("option","maxDate",'+1y' ); } $('#'+$partenza_id).val(''); if(/arrivo/.test($arrivo_id)){ // SITO/PRENOTAZIONI E PANNELLO $ce_partenza = $('#'+$partenza_id).val(); if($ce_partenza){ calcola_prezzo_camera($arrivo_id.slice(7)); load_disponibilita(); load_area_elementi_prenotati(); } } } }; $('#'+$arrivo_id).datepicker(pickerOpts); } ,'json'); } /* * FUNZIONE CHE GENERA IL DATEPICKER PARTENZA PER LE PRENOTAZIONI CAMERE */ function datepicker_form_prenotazione_partenza($camera_id,$mese,$anno,$stringa_data_partenza,$prenotazione_id,$arrivo_id,$partenza_id,$post,$pannello){ var months = []; var days = []; var years = []; confirmed = new Array(); bloccato = new Array(); if(!$arrivo_id && !$partenza_id){ $arrivo_id = 'arrivo'; $partenza_id = 'partenza'; $post = 'giorni_occupati'; } $.post('/_ajax/'+$post+'.php', { pannello:$pannello, tipo : 0, camera_id: $camera_id, mese : $mese, anno: $anno, mesi_durata : 14, prenotazione_id : $prenotazione_id }, function(data){ for (x = 0; x < data.length; x++) { months.push(data[x].mese); days.push(data[x].giorno); years.push(data[x].anno); confirmed.push(data[x].confermata); bloccato.push(data[x].bloccato); } var pickerOpts = { beforeShow: function(input, inst) { data_arrivo = $('#'+$arrivo_id).datepicker('getDate'); if(!data_arrivo){ // PER LA PRENOTAZIONE DALLA SCHEDA CAMERA SUL SITO data_arrivo = new Date(); } loop_date = new Date(); loop_date.setTime(data_arrivo.valueOf()); maxDate = ''; for(loop = 1; loop < 367; loop++){ loop_date.setDate(loop_date.getDate()+1); for(x = 0; x < days.length; x++) { if( loop_date.getMonth() == months[x] - 1 && loop_date.getDate() == days[x] && loop_date.getFullYear() == years[x] && bloccato[x] == 1 ) { maxDate = loop_date; break; } } if(maxDate != ''){ break; } } if(maxDate != ''){ $('#'+$partenza_id).datepicker("option","maxDate",maxDate ); } else { $('#'+$partenza_id).datepicker("option","maxDate",'+1y' ); } }, numberOfMonths: 1, dateFormat : 'dd/mm/yy', showOn: "both", buttonImage: "/immagini/calendar.png", buttonImageOnly: true, minDate:$stringa_data_partenza, onSelect: function(selectedDate) { instance = $( this ).data("datepicker"), date = $.datepicker.parseDate( instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings ); // SELEZIONO ARRIVO -> CAMBIO MINDATE DI PARTENZA +1 GIORNO // SELEZIONO PARTENZA -> CAMBIO MAXDATE DI ARRIVO - 1 GIORNO date.setDate(date.getDate()-1); //$('#arrivo').datepicker("option", "maxDate",date); // HO COMMENTATO LA RIGA PRECEDENTE PER AVERE ARRIVO SEMPRE LIBERO, PARTENZA SI REGOLA DI CONSEGUENZA if(/arrivo/.test($arrivo_id)){ // SITO/PRENOTAZIONI E PANNELLO calcola_prezzo_camera($arrivo_id.slice(7)); load_disponibilita(); load_area_elementi_prenotati(); } } }; $('#'+$partenza_id).datepicker(pickerOpts); } ,'json'); } function disablegiorniferiali(date) { var daysToDisable = [0, 1, 2, 3, 4, 5]; var day = date.getDay(); for (i = 0; i < daysToDisable.length; i++) { if ($.inArray(day, daysToDisable) != -1) { return false; } } return true; } function controlla_div_prezzi(){ if($('#payment_mode_now').is(':checked')){ $('#div_totale_prenotazione_scontato').show(); $('#div_totale_prenotazione').hide(); } else{ $('#div_totale_prenotazione_scontato').hide(); $('#div_totale_prenotazione').show(); } } $(document).ready(function(){ $('#ccInfoTable select,#ccInfoTable input').change(function(){ $('#payment_mode_after').attr('checked',"checked"); }); controlla_div_prezzi(); $('input[name="payment_mode"]').change(function(){ controlla_div_prezzi(); }); // PRENOTAZIONE CAMERE $('#scegli_camera').val(''); $('#scegli_camera').unbind('change').bind('change',function(){ $camera = $(this).val(); $tipo = $(this).attr('rel'); $gestione = $('input[name="gestione"]:checked').val(); today = new Date(); mese = today.getMonth()+1; //January is 0! anno = today.getFullYear(); if($camera && $gestione){ $('.div_prenotazioni').empty().hide(); $array_camere = $camera.split(','); for ($camera_id in $array_camere) { load_area_prenotazioni_camera($array_camere[$camera_id],mese,anno,$gestione); } } }); $('input[name="gestione"]').click(function(){ $('#scegli_camera').trigger('change'); }); $('.tasto_prenota').click(function(){ $elemento_id = $(this).attr('rel'); prenota_elemento($elemento_id); }); $('select.num_persone_live').live('change',function(){ $elemento_id = $(this).attr('rel'); $num_persone = $(this).val(); cambia_persone_elemento($elemento_id,$num_persone); }); $('.cambia_tipo_uso').unbind('change').bind('change',function(){ $id = $(this).attr('id'); $camera_id = $(this).attr('rel'); cambia_tipo_uso($camera_id,$id); }); $('#apri_carta_credito').click(function(){ $('.credito').toggle('slow'); }); $('#submit_testata').click(function(){ $arrivo = $('#prenotazione_dal').datepicker('getDate'); $partenza = $('#prenotazione_al').datepicker('getDate'); if($arrivo && $partenza && !controllo_date($arrivo,$partenza)){ var $dialog_box = $("#dialog_box"); $('.ui-dialog').remove(); $dialog_box.dialog({ autoOpen:true, width: 200, resizable: false, closeOnEscape: true }); setTimeout(function() { $dialog_box.dialog('close'); }, 2 * 1000); } else{ $('#form_testata').submit(); } }); }); /* * FUNZIONE CHE RICARICA LE DISPONIBILITA IN RISPOSTA A NUOVE SELEZIONI (PAGINA PRENOTAZIONI SITO) */ function load_disponibilita(){ //TIPO DI SELEZIONE (CAMERE O CASE) $tipo_id = $('input[name="tipo_scelta_pagina_prenotazioni"]:checked').val(); $data_partenza = $('#partenza').val(); $data_arrivo = $('#arrivo').val(); $partenza = $('#partenza').datepicker('getDate'); $arrivo = $('#arrivo').datepicker('getDate'); if($arrivo && $partenza && !controllo_date($arrivo,$partenza)){ var $dialog_box = $("#dialog_box"); $('.ui-dialog').remove(); $dialog_box.dialog({ autoOpen:true, width: 200, resizable: false, closeOnEscape: true }); setTimeout(function() { $dialog_box.dialog('close'); }, 3 * 1000); } else{ $('#disponibilita').html(' '); $('#disponibilita').show().load('/_ajax/disponibilita.php?tipo_id='+$tipo_id+'&partenza='+$data_partenza+'&arrivo='+$data_arrivo); } } /* * FUNZIONE CHE RICARICA IL TOTALE DEI SERVIZI AGGIUNTIVI IN RISPOSTA A NUOVE SELEZIONI (PAGINA PRENOTAZIONI SITO) */ function load_totale_servizi_aggiuntivi($elemento_id,$tipo_elemento){ $.post('/_ajax/totale_servizi_aggiuntivi.php', { elemento_id : $elemento_id, tipo_elemento : $tipo_elemento }, function(data){ $('.servizi_aggiuntivi_'+$elemento_id).html(data); /* if(data.totale != ''){ $('#scritta_totale_colorbox_'+$elemento_id).html(data.scritta_totale); $('#totale_colorbox_'+$elemento_id).html(data.totale); } else{ $('#scritta_totale_colorbox_'+$elemento_id).empty(); $('#totale_colorbox_'+$elemento_id).html("-"); } */ // load_totale_prenotazione(); }); } /* * FUNZIONE CHE SEGNA PRENOTATO UN ELEMENTO (PAGINA PRENOTAZIONI SITO) */ function cambia_persone_elemento($elemento_id,$num_persone){ $.post('/_ajax/num_persone_elemento.php', { elemento_id : $elemento_id, num_persone: $num_persone }); } function prenota_elemento($elemento_id){ $tipo_uso = $('input[name="tipo_uso_'+$elemento_id+'"]:checked').val(); // TROVO IL TIPO USO (NEL CASO DI CAMERE) $prezzo = $('.prezzo_da_usare_'+$elemento_id).val(); // TROVO IL PREZZO $num_persone = $("select[rel='"+$elemento_id+"']").val(); $prezzo_intero = $('.prezzo_intero_da_usare_'+$elemento_id).val(); // TROVO IL PREZZO INTERO $.post('/_ajax/prenota_elemento.php', { elemento_id : $elemento_id, tipo_uso : $tipo_uso, num_persone: $num_persone, prezzo : $prezzo, prezzo_intero : $prezzo_intero }, function(data){ $('#div_elemento_'+$elemento_id).toggle(); $('.checkbox_'+$elemento_id+"_"+$tipo_uso).attr('checked', 'checked'); load_area_elementi_prenotati(); var $ci_sono_ancora = false; $('.ei').each(function(){ if($(this).is(':visible')){ $ci_sono_ancora = true; } }); if($ci_sono_ancora != true){ $("#camereDisponibili").hide(); } else{ if(!$("#camereDisponibili").is(':visible')){ $("#camereDisponibili").show(); } } if(data==1){ // var new_position = $('#anchor_elementi_prenotati').offset(); // window.scrollTo(new_position.left,new_position.top); return false; } },'json'); } function controllo_date($arrivo,$partenza){ $return = ($arrivo<$partenza) ? true : false; return $return; } /* * FUNZIONE CHE CAMBIA IL TIPO D'USO E QUINDI IL PREZZO DI UNA CAMERA IN PRENOTAZIONE */ function cambia_tipo_uso($camera_id,$id){ $prezzo_da_stampare = $('.prezzo_'+$id).val(); $prezzo_intero = $('.prezzo_intero_'+$id).val(); $offerta_id = $('.offerta_'+$id).val(); $('.div_prezzo_'+$camera_id).html('€ '+number_format($prezzo_da_stampare,2)); $('.div_prezzo_intero_'+$camera_id).html('€ '+number_format($prezzo_intero,2)); $('.prezzo_da_usare_'+$camera_id).val($('.prezzo_'+$id).val()); $('.prezzo_intero_da_usare_'+$camera_id).val($('.prezzo_intero_'+$id).val()); if($offerta_id != ''){ $('.div_prezzo_intero_'+$camera_id).show(); $('.div_offerta_elemento_'+$camera_id).load('/_ajax/box_offerta.php?offerta_id='+$offerta_id).show(); $('.div_promozione_'+$camera_id).show(); } else{ $('.div_prezzo_intero_'+$camera_id).hide(); $('.div_offerta_elemento_'+$camera_id).hide(); $('.div_promozione_'+$camera_id).hide(); } $prezzo_da_impostare = $('.prezzo_'+$id).val(); imposta_prezzo_elemento($camera_id,$id,$prezzo_da_impostare,$prezzo_intero); } function load_area_elementi_prenotati(){ $('#area_elementi_prenotati').load('/_ajax/area_elementi_prenotati.php'); } function load_totale_prenotazione(){ $('#totale_prenotazione').load('/_ajax/totale_prenotazione.php'); } function imposta_prezzo_elemento($elemento_id,$tipo_uso,$prezzo_da_impostare){ $.post('/_ajax/imposta_prezzo_elemento.php', { elemento_id : $elemento_id, tipo_uso : $tipo_uso, prezzo : $prezzo_da_impostare, prezzo_intero : $prezzo_intero }, function(data){ load_totale_prenotazione(); },'json'); } function load_servizi_aggiuntivi($tipo,$camera_id,$div_camera_id){ $('#servizi_aggiuntivi_'+$div_camera_id).show(); $.post('/_ajax/load_servizi_aggiuntivi.php', { tipo: $tipo, camera_id: $camera_id, div_camera_id : $div_camera_id }, function(data){ $('#servizi_aggiuntivi_'+$div_camera_id).html(data); }); }