fbuilderjQuery = (typeof fbuilderjQuery != 'undefined' ) ? fbuilderjQuery : jQuery; fbuilderjQuery(function(){ (function($) { // Namespace of fbuilder $.fbuilder = $.fbuilder || {}; $.fbuilder[ 'objName' ] = 'fbuilderjQuery'; $.fbuilder[ 'controls' ] = ( typeof $.fbuilder[ 'controls' ] != 'undefined' ) ? $.fbuilder[ 'controls' ]: {}; $.fbuilder[ 'forms' ] = ( typeof $.fbuilder[ 'forms' ] != 'undefined' ) ? $.fbuilder[ 'forms' ]: {}; $.fbuilder[ 'htmlEncode' ] = function(value) { value = $('
').text(value).html() value = value.replace( /&/g, '&').replace(/"/g, """); return value; }; $.fbuilder['htmlDecode']=function(value) { if(/&(?:#x[a-f0-9]+|#[0-9]+|[a-z0-9]+);?/ig.test(value))value=$('
').html(value).text();return value; }; $.fbuilder[ 'escape_symbol' ] = function( value ) // Escape the symbols used in regulars expressions { return value.replace(/([\^\$\-\.\,\[\]\(\)\/\\\*\?\+\!\{\}])/g, "\\$1"); }; $.fbuilder[ 'parseValStr' ] = function( value ) { return '"' + value.replace(/'/g, "\\'").replace( /\$/g, '') + '"'; }; $.fbuilder[ 'parseVal' ] = function( value, thousandSeparator, decimalSymbol ) { if( value == '' ) return 0; value += ''; thousandSeparator = new RegExp( $.fbuilder.escape_symbol( ( typeof thousandSeparator == 'undefined' ) ? ',' : thousandSeparator ), 'g' ); decimalSymbol = new RegExp( $.fbuilder.escape_symbol( ( typeof decimalSymbol == 'undefined' ) ? '.' : decimalSymbol ), 'g' ); var t = value.replace( thousandSeparator, '' ).replace( decimalSymbol, '.' ).replace( /\s/g, '' ), p = /[+-]?((\d+(\.\d+)?)|(\.\d+))/.exec( t ); return ( p ) ? p[0]*1 : $.fbuilder[ 'parseValStr' ]( value ); }; $.fn.fbuilder = function(options){ var opt = $.extend({}, { pub:false, identifier:"", title:"" },options, true); opt.messages = $.extend({ previous: "Previous", next: "Next", pageof: "Page {0} of {0}", required: "This field is required.", email: "Please enter a valid email address.", datemmddyyyy: "Please enter a valid date with this format(mm/dd/yyyy)", dateddmmyyyy: "Please enter a valid date with this format(dd/mm/yyyy)", number: "Please enter a valid number.", digits: "Please enter only digits.", maxlength: $.validator.format("Please enter no more than {0} characters"), minlength: $.validator.format("Please enter at least {0} characters."), equalTo: "Please enter the same value again.", max: $.validator.format("Please enter a value less than or equal to {0}."), min: $.validator.format("Please enter a value greater than or equal to {0}.") },opt.messages); opt.messages.max = $.validator.format(opt.messages.max); opt.messages.min = $.validator.format(opt.messages.min); $.extend($.validator.messages, opt.messages); var items = []; var reloadItemsPublic = function() { $("#fieldlist"+opt.identifier).closest( 'form' ).addClass( theForm.formtemplate ); $("#fieldlist"+opt.identifier).html("").addClass(theForm.formlayout); $("#formheader"+opt.identifier).html(theForm.show()); var page = 0; $("#fieldlist"+opt.identifier).append('
'); for (var i=0;i
'); } else { $("#fieldlist"+opt.identifier+" .pb"+page).append(items[i].show()); if (items[i].predefinedClick) { $("#fieldlist"+opt.identifier+" .pb"+page).find("#"+items[i].name).attr("placeholder",items[i].predefined); $("#fieldlist"+opt.identifier+" .pb"+page).find("#"+items[i].name).attr("value",""); } if (items[i].userhelpTooltip) { var uh = $("#fieldlist"+opt.identifier+" .pb"+page).find("#"+items[i].name).closest(".fields"); uh.find(".uh").css("display","none"); if (uh.find(".uh").text()!="") { uh.attr("uh",uh.find(".uh").text()); } } } } if (page>0) { $("#fieldlist"+opt.identifier+" .pb"+page).addClass("pbEnd"); $("#fieldlist"+opt.identifier+" .pbreak").each(function(index) { var code = $(this).html(); var bSubmit = ''; if (index == page) { if ( $( "#cpcaptchalayer"+opt.identifier ).length && !/^\s*$/.test( $( "#cpcaptchalayer"+opt.identifier ).html() ) ) { code += '
'+$("#cpcaptchalayer"+opt.identifier).html()+'
'; $("#cpcaptchalayer"+opt.identifier).html(""); } if ($("#cp_subbtn"+opt.identifier).html()) { bSubmit = '
'+$("#cp_subbtn"+opt.identifier).html()+'
'; } } $(this).html('
'+opt.messages.pageof.replace( /\{\s*\d+\s*\}/, (index+1) ).replace( /\{\s*\d+\s*\}/, (page+1) )+''+code+'
'+opt.messages.previous+'
'+opt.messages.next+'
'+bSubmit+'
'); }); $( '#fieldlist'+opt.identifier).find(".pbPrevious,.pbNext").bind("click", { 'identifier' : opt.identifier }, function( evt ) { var identifier = evt.data.identifier; if ( ($(this).hasClass("pbPrevious")) || (($(this).hasClass("pbNext")) && $(this).parents("form").valid()) ) { var page = parseInt($(this).parents(".pbreak").attr("page")); (($(this).hasClass("pbPrevious"))?page--:page++); $("#fieldlist"+identifier+" .pbreak").css("display","none"); $("#fieldlist"+identifier+" .pbreak").find(".field").addClass("ignorepb"); $("#fieldlist"+identifier+" .pb"+page).css("display","block"); $("#fieldlist"+identifier+" .pb"+page).find(".field").removeClass("ignorepb"); if ($("#fieldlist"+identifier+" .pb"+page).find(".field").length>0) { try { $("#fieldlist"+identifier+" .pb"+page).find(".field")[0].focus(); } catch(e){} } } else { $(this).parents("form").validate().focusInvalid(); } return false; }); } else { if ( $( "#cpcaptchalayer"+opt.identifier ).length && !/^\s*$/.test( $( "#cpcaptchalayer"+opt.identifier ).html() ) ) { $("#fieldlist"+opt.identifier+" .pb"+page).append('
'+$("#cpcaptchalayer"+opt.identifier).html()+'
'); $("#cpcaptchalayer"+opt.identifier).html(""); } if ($("#cp_subbtn"+opt.identifier).html()) { $("#fieldlist"+opt.identifier+" .pb"+page).append('
'+$("#cp_subbtn"+opt.identifier).html()+'
'); } } // Set Captcha Event $( document ).on( 'click', '#fbuilder .captcha img', function(){ var e = $( this ); e.attr( 'src', e.attr( 'src' ).replace( /&\d+$/, '' ) + '&' + Math.floor( Math.random()*1000 ) ); } ); $( '#fieldlist'+opt.identifier).find(".pbSubmit").bind("click", { 'identifier' : opt.identifier }, function( evt ) { console.log('ENVIO'); $(this).css({ display: 'none', width: '0px', height: '0px', margin: '0px', padding: '0px', fontSize: '0px', lineHeight: '0px' }); $(this).closest("form").submit(); $('#field_1-2 .dfield').css('opacity',0); $('#field_1-2').addClass('barrita'); }); if (i>0) { theForm.after_show( opt.identifier ); for (var i=0;i'+(this.title!=''?'

'+this.title+'

':'')+(this.description!=''?''+this.description+'':'')+'
'; }, after_show:function( id ){ $( '#cp_calculatedfieldsf_pform'+id ).attr( 'data-evalequations', this.evalequations ).attr( 'autocomplete', ( ( this.autocomplete ) ? 'on' : 'off' ) ); } }); //var theForm = new fform(), var theForm, ffunct = { getItem: function( name ) { for( var i in items ) { if( items[ i ].name == name ) { return items[ i ]; } } return false; }, getItems: function() { return items; }, loadData:function(f) { var d, e = $("#"+f); this.formId = e.parents( 'form' ).attr( 'id' ); if ( d = $.parseJSON( e.val() )) { if (d.length==2) { items = []; for (var i=0;i
'+this.userhelp+'
'; } } );$.fbuilder.controls[ 'fapp' ] = function(){}; $.extend( $.fbuilder.controls[ 'fapp' ].prototype, $.fbuilder.controls[ 'ffields' ].prototype, { title:"Number", ftype:"fapp", services:new Array({name:"Service 1",price:1,capacity:1,duration:60,pb:0,pa:0,ohindex:0}), /*openhours:new Array({type:"all",d:"",h1:8,m1:0,h2:17,m2:0}),new Array({name:"Default",openhours:new Array({type:"all",d:"",h1:8,m1:0,h2:17,m2:0})})*/ openhours:new Array(), allOH:new Array({name:"Default",openhours:new Array({type:"all",d:"",h1:8,m1:0,h2:17,m2:0})}), usedSlots:new Array(), dateFormat:"mm/dd/yy", showDropdown:false, showTotalCost:false, showTotalCostFormat:"$ {0}", showEndTime:false, usedSlotsCheckbox:false, avoidOverlaping:true, emptySelectCheckbox:false, emptySelect:"-- Please select service --", dropdownRange:"-10:+10", working_dates:[true,true,true,true,true,true,true], numberOfMonths:1, maxNumberOfApp:0, firstDay:0, minDate:"0", maxDate:"", defaultDate:"", invalidDates:"", required:true, bSlotsCheckbox: true, bSlots:30, militaryTime:1, cacheArr:new Array(), getD:new Date(), formId:0, getMinDate:"", getMaxDate:"", arr:new Array(), allUsedSlots:new Array(), invalidDatesByService:new Array(), service_selected:0, quantity_selected:1, tz:0, loadOK:false, ignoreUsedSlots:false, initialapp:"", initialID:0, pctByDay:new Array(), htmlUsedSlots:new Array(), extras:0, sub_cost:0, notShowBookedDate:true, getCompatSlots:function(d) { var data = new Array(); var find = false; for (var i=0;i 0) ind--; return ind; }, show:function() { return '
'+this.userhelp+'
'; }, getSpecialDays:function() { var me = this; var a = new Array(); if (!me.emptySelectCheckbox || (me.emptySelectCheckbox && $(".fieldCalendarService"+me.name+" select option:selected").index() > 0 )) { var ohindex = me.services[me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select option:selected").index())].ohindex; for (var i=0;i=arr[i].t2) arr[i].t2 += 24 * 60; } me.usedSlots[d] = me.usedSlots[d] || []; if (me.ignoreUsedSlots) var data2 = $.merge(data1.slice(0),[]); else var data2 = $.merge(data1.slice(0),me.usedSlots[d]); for (var i=0;idata[i].t2) data[i].t2 += 24 * 60; for (var i=0;icapacity_service || (data[i].service.length==0 || (data[i].service.length && data[i].service[0]!=me.service_selected))) || (!me.avoidOverlaping && (data[i].quantity+me.quantity_selected>capacity_service && (typeof data[i].serviceindex === 'undefined' || data[i].serviceindex==me.service_selected)) )) { for (var j=0;j arr[j].t1) && (data[i].t1 < arr[j].t2) && (data[i].t2 > arr[j].t1) && (data[i].t2 < arr[j].t2)) { var v1 = {t1:arr[j].t1, t2:data[i].t1, h1:arr[j].h1, h2:data[i].h1, m1:arr[j].m1, m2:data[i].m1}; var v2 = {t1:data[i].t2, t2:arr[j].t2, h1:data[i].h2, h2:arr[j].h2, m1:data[i].m2, m2:arr[j].m2}; arr.splice(j, 1, v1, v2); } else if ((data[i].t1 > arr[j].t1) && (data[i].t1 < arr[j].t2)) { arr[j].t2 = data[i].t1; arr[j].h2 = data[i].h1; arr[j].m2 = data[i].m1; } else if ((data[i].t2 > arr[j].t1) && (data[i].t2 < arr[j].t2)) { arr[j].t1 = data[i].t2; arr[j].h1 = data[i].h2; arr[j].m1 = data[i].m2; } else if ((data[i].t1 <= arr[j].t1) && (data[i].t2 >= arr[j].t2)) { arr.splice(j, 1); } } } } for (var i=0;i=0;i--) { if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t2*60*1000 <= currenttime) arr.splice(i, 1 ); else if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t1*60*1000 <= currenttime) { var st = arr[i].t1 + me.duration + me.pb + me.pa; while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + st*60*1000 <= currenttime) st += me.duration + me.pb + me.pa; var m1 = st % 60; var h1 = (st - m1)/60; arr[i].t1 = st; arr[i].h1 = h1; arr[i].m1 = m1; } } } if (me.maxDate!=="" && me.getMaxDate!="") { var current = me.getMaxDate; var currenttime = current.getTime()-me.tz*60*60*1000; for (var i=arr.length-1;i>=0;i--) { if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t1*60*1000 >= currenttime) arr.splice(i, 1 ); else if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t2*60*1000 >= currenttime) { var et = arr[i].t1 + me.duration; while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + et*60*1000 <= currenttime) et += me.duration; var m2 = et % 60; var h2 = (et - m2)/60; arr[i].t2 = et; arr[i].h2 = h2; arr[i].m2 = m2; } } } for (var i=arr.length-1;i>=0;i--) if (arr[i].t1+me.bduration > arr[i].t2 || arr[i].t1 > 24*60) arr.splice(i, 1 ); return arr; }, formattime: function(t,mt)/*mt=2 for database 09:00*/ { if (t<0) t+=(24*60); t = t % (24*60); var h = Math.floor(t/60); var m = t%60; var suffix = ""; if (mt==0) { if (h>12) { h = h-12; suffix = " PM"; } else if (h==12) suffix = " PM"; else suffix = " AM"; } return (((h<10)?((mt==2)?"0":""):"")+h+":"+(m<10?"0":"")+m)+suffix; }, formatString: function(obj,showdate,tz) { var me = this; tz = tz * 60; if (typeof obj.st === 'undefined') obj.st = obj.h1*60+obj.m1*1; if (typeof obj.et === 'undefined') obj.et = obj.h2*60+obj.m2*1; var str = ""; if (showdate) str += $.datepicker.formatDate(me.dateFormat, $.datepicker.parseDate("yy-mm-dd", obj.d))+" "; str += me.formattime(obj.st+tz,me.militaryTime)+(me.showEndTime?("-"+me.formattime(obj.et+tz,me.militaryTime)):""); return str; }, getCurrentSlots: function(arr,d) { var me = this; var duration = me.duration; var html = ""; var htmlSlots = new Array(); var pb = 0; var pa = 0; var capacity_service = me.services[me.service_selected].capacity; if (true) { var ya_reserva = new Object(); var hora = new Object(); var todos_datos = new Object(); var compactUsedSlots = me.getCompatSlots(me.htmlUsedSlots[d]) for (var i=0;i=capacity_service && compactUsedSlots[i].serviceindex==me.service_selected) if (compactUsedSlots[i].serviceindex==me.service_selected) { compactUsedSlots[i].st = compactUsedSlots[i].h1 * 60 + compactUsedSlots[i].m1; compactUsedSlots[i].t = $.datepicker.parseDate("yy-mm-dd",compactUsedSlots[i].d).getTime()+compactUsedSlots[i].st*60*1000; compactUsedSlots[i].html = ""; if (me.minDate!=="" && me.getMinDate!="") //check with the min date { var current = me.getMinDate; var currenttime = current.getTime()-me.tz*60*60*1000; if (compactUsedSlots[i].t > currenttime) { if (compactUsedSlots[i].quantity>=capacity_service){ // console.log(Object.getOwnPropertyNames(compactUsedSlots[i])); // console.log(compactUsedSlots[i].d); dataDate = compactUsedSlots[i].d.split("-").reverse().join("/"); dataDato = compactUsedSlots[i].d.split("-").reverse().join("-"); // console.log(dataDato); ya_reserva[dataDato] = new Array(); hora[dataDato] = new Array(); todos_datos[dataDato] = new Array(); ya_reserva[dataDato][0] = ''; ya_reserva[dataDato][1] = ''; todos_datos[dataDato] = ['','']; $('#fieldname2_1').animate({opacity:'1'}); $('.pbSubmit').animate({opacity:'1'}); hora[dataDato][0] = me.formatString(compactUsedSlots[i],false,me.tz); if (compactUsedSlots[1]) hora[dataDato][1] = me.formatString(compactUsedSlots[i],false,me.tz); k=i; $.ajax({ url: "//osmaracos.com/ya_reserva.php", type: "POST", data: { 'date' : dataDate, 'hora' : compactUsedSlots[0].h1 }, beforeSend: function(){ ya_reserva[dataDato][0] = hora[dataDato][0]+'...'; }, success: function(datos) { todos_datos[dataDato][0] = datos; ident = '#datos'+dataDato+'0' console.log(todos_datos[dataDato]); if (datos != ''){ ya_reserva[dataDato][0] = todos_datos[dataDato][0]; $(ident).html(ya_reserva[dataDato][0]); }else{ $(ident).html(todos_datos[dataDato][0]); } // console.log(datos); }, }); if (compactUsedSlots[1]){ $.ajax({ url: "//osmaracos.com/ya_reserva.php", type: "POST", data: { 'date' : dataDate, 'hora' : compactUsedSlots[1].h1 }, beforeSend: function(){ ya_reserva[dataDato][1] = hora[dataDato][1]+'...'; }, success: function(datos) { todos_datos[dataDato][1] = datos; ident = '#datos'+dataDato+'1' console.log(todos_datos[dataDato]); if (datos != ''){ ya_reserva[dataDato][1] = todos_datos[dataDato][1]; $(ident).html(ya_reserva[dataDato][1]); console.log($(ident).html()); }else{ $(ident).html(todos_datos[dataDato][1]); } // console.log(datos); }, }); } compactUsedSlots[i].html = '
'+me.formatString(compactUsedSlots[i],false,me.tz)+''+((typeof compactUsedSlots[i].e !== 'undefined')?"
"+compactUsedSlots[i].e+"
":"")+'
'+ya_reserva[dataDato][k]+'
'; } //if (me.bSlotsCheckbox && me.usedSlotsCheckbox) if (me.usedSlotsCheckbox) htmlSlots[htmlSlots.length] = compactUsedSlots[i]; // console.log(Object.values(me.index)); } } } } } if ((typeof specialPadding === 'undefined')) { pb = me.pb; pa = me.pa; } for (var i=0;i= et) et += 24 * 60; while (st + me.bduration + me.pa <=et && st<24 * 60) { html = ""; htmlSlots[htmlSlots.length] = {st:st,html:html,t:$.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+st*60*1000}; if (!me.bSlotsCheckbox) st += me.bduration; else st += me.bduration + pa + pb; } } htmlSlots.sort(function(a, b){ if ((typeof cp_hourbk_cmpublic !== 'undefined') && (a.t == b.t)) { if ((typeof a.quantity !== 'undefined') && (typeof b.quantity === 'undefined')) { b.html = b.html.replace("ahbslotavailabilityP",(capacity_service - a.quantity)); b.quantity = a.quantity; } else if ((typeof b.quantity !== 'undefined') && (typeof a.quantity === 'undefined')) { a.html = a.html.replace("ahbslotavailabilityP",(capacity_service - b.quantity)); a.quantity = b.quantity; } } return a.t - b.t }); return htmlSlots; }, getAvailableSlots: function(d) { var me = this; function setHtmlUsedSlots(d,st,et) { st = st * 60; et = et * 60; var htmlSlots = new Array(); //if (me.bSlotsCheckbox && me.usedSlotsCheckbox) if (me.usedSlotsCheckbox) { me.cacheArr[d] = me.cacheArr[d] || []; for (var i=0;i=me.cacheArr[d][i].h2*60+me.cacheArr[d][i].m2) htmlSlots[htmlSlots.length] = jQuery.extend({}, me.cacheArr[d][i]); for (var i=0;me.usedSlots[d] && i=me.usedSlots[d][i].h2*60+me.usedSlots[d][i].m2) htmlSlots[htmlSlots.length] = jQuery.extend({}, me.usedSlots[d][i]); } } return htmlSlots; } var day = $.datepicker.parseDate("yy-mm-dd", d); if (this.tz==0) { me.htmlUsedSlots[d] = setHtmlUsedSlots(d,0,24); var arr = this.getAvailablePartialSlots(d,[{h1:0,m1:0,h2:0,m2:0}]); } else if (this.tz > 0) { day.setDate(day.getDate() - 1); var d1 = $.datepicker.formatDate("yy-mm-dd",day); var arr = $.merge(this.getAvailablePartialSlots(d1,[{h1:0,m1:0,h2:24-this.tz,m2:0}]),this.getAvailablePartialSlots(d,[{h1:24-this.tz,m1:0,h2:24,m2:0}])); me.htmlUsedSlots[d] = $.merge(setHtmlUsedSlots(d1,24-this.tz,24), setHtmlUsedSlots(d,0,24-this.tz)); } else { day.setDate(day.getDate() + 1); var d1 = $.datepicker.formatDate("yy-mm-dd",day); var arr = $.merge(this.getAvailablePartialSlots(d,[{h1:0,m1:0,h2:this.tz*-1,m2:0}]),this.getAvailablePartialSlots(d1,[{h1:this.tz*-1,m1:0,h2:24,m2:0}])); me.htmlUsedSlots[d] = $.merge(setHtmlUsedSlots(d1,this.tz*-1,24), setHtmlUsedSlots(d,0,this.tz*-1)); } var c = "s"+me.service_selected+"q"+me.quantity_selected; if (arr.length==0) { me.invalidDatesByService[c] = me.invalidDatesByService[c] || []; if ($.inArray(d, me.invalidDatesByService[c]) == -1) me.invalidDatesByService[c][me.invalidDatesByService[c].length] = d; } return arr; }, after_show:function() { function closeOtherDatepicker(){ $('#ui-datepicker-div').css("display","none"); } setTimeout(closeOtherDatepicker,100); if (typeof cp_hourbk_timezone !== 'undefined') { var gmt = (parseInt(cp_hourbk_timezone)); var local = (new Date().getTimezoneOffset() * -1)/60; this.tz = local - gmt; } var me = this, e = $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ), d = $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendarService'+me.name ), str = "", op = ""; e.addClass("notranslate") if (me.openhours.length>0)/*compatible with old version*/ { if (!me.openhours[0].name) { var obj = {name:"Default",openhours:me.openhours.slice(0)}; me.openhours = new Array(); me.openhours[0] = obj; } me.allOH = new Array(); me.allOH = me.openhours.slice(0); me.openhours = new Array(); } var dd = ""; if (me.initialapp!="") { var s = me.initialapp.split(";"); var s2 = ""; var ind = 0; for (var i=0;i 0 )) { if ($.inArray(day, me.invalidDatesByService["s"+me.service_selected+"q"+me.quantity_selected]) > -1 && me.notShowBookedDate){ c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled","notavailslot"); } if (typeof cp_hourbk_cmpublic !== 'undefined') { var cclass = c.join(" "); var q = 0; for (var i=0;i 0 ))) return; function getSlots(d) { var data1 = me.cacheArr[d]; var duration = me.duration; me.bduration = me.duration; if (!me.bSlotsCheckbox) me.bduration = me.bSlots*1; var str = ""; var arr = me.getAvailableSlots(d); var nextdateAvailable = $.datepicker.parseDate("yy-mm-dd", d); var c = "s"+me.service_selected+"q"+me.quantity_selected; var s = $( '#field' + me.form_identifier + '-' + me.index + ' .slotsCalendar'+me.name ); var i =0; if (me.notShowBookedDate && (me.maxNumberOfApp==0 || me.allUsedSlots.length0 ) { e.datepicker("setDate", nextdateAvailable); me.getD = nextdateAvailable; onChangeDateOrService($.datepicker.formatDate("yy-mm-dd", nextdateAvailable)); } else if (me.invalidDatesByService[c].length>=365) { if (me.getMinDate != "" && me.getMinDate.getTime() < me.getD.getTime()) { e.datepicker("setDate", me.getMinDate); me.getD = me.getMinDate; me.invalidDatesByService[c] = new Array(); onChangeDateOrService($.datepicker.formatDate("yy-mm-dd", me.getD)); return; } e.datepicker("setDate", me.getMinDate); s.html("
"+cp_hourbk_nomore_label+"
"); } return; } var htmlSlots = me.getCurrentSlots(arr,d); var capacity_service = me.services[me.service_selected].capacity; for (var i=0;i0) { before = s.find(".slots").attr("d"); } s.html("
"+$.datepicker.formatDate(me.dateFormat, $.datepicker.parseDate("yy-mm-dd", d))+"
"+str+"
"); if (before!="" && before!=d) { s.find(".slots span:first").hide().show(200); } var str1="",str2=""; me.allUsedSlots = me.allUsedSlots || []; me.allUsedSlots.sort(function(a, b){ return ($.datepicker.parseDate("yy-mm-dd", a.d).getTime()+(a.h1*60+a.m1)*60*1000) - ($.datepicker.parseDate("yy-mm-dd", b.d).getTime()+(b.h1*60+b.m1)*60*1000)}); j = 0; var total = 0; for (var i=0;i"+me.formatString(me.allUsedSlots[i],true,me.tz)+""+me.services[me.allUsedSlots[i].serviceindex].name+""+((me.allUsedSlots[i].quantity>1)?"("+me.allUsedSlots[i].quantity+")":"")+"["+(cp_hourbk_cancel_label?cp_hourbk_cancel_label:'cancel')+"]"+(((typeof cp_hourbk_repeat !== 'undefined') && i==0)?showrepeat(me.name):"")+""; str2 += ((str2=="")?"":";")+me.allUsedSlots[i].d+" "+me.formattime(me.allUsedSlots[i].h1*60+me.allUsedSlots[i].m1*1,2)+"/"+me.formattime(me.allUsedSlots[i].h2*60+me.allUsedSlots[i].m2*1,2)+" "+me.allUsedSlots[i].serviceindex+" "+me.allUsedSlots[i].quantity; if (me.allUsedSlots[i].d==d) j++; } me.sub_cost = total; total = me.sub_cost + me.extras; total = total.toFixed(2); if (me.showTotalCost && (str1!="")) str1 += '
'+cp_hourbk_cost_label+' '+me.showTotalCostFormat.replace("{0}", total)+'
'; $( '.usedSlots'+me.name ).html(str1); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).val(str2); $( '#field' + me.form_identifier + '-' + me.index + ' #tcost'+me.name ).val(total); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).change(); try { $( "#fbuilder .slots div a" ).tooltip({ position: { my: "left top+10" }, open: function (event, ui) { $(this).tooltip( "option", "content", $(this).parent().find(".ahbmoreinfo").html() ); }, tooltipClass: "ahbtooltip" }); } catch (e) {} $( '.slotsCalendar' + me.name + ' .slots a').off("click").on("click", function() { if ($(this).parents("fieldset").hasClass("ahbgutenberg_editor")) return false; $( "#field" + me.form_identifier + "-" + me.index + " div.cpefb_error").remove(); if ($(this).parent().hasClass("htmlUsed")) return false; me.allUsedSlots = me.allUsedSlots || []; if (me.maxNumberOfApp==0 || me.allUsedSlots.length -1) { me.invalidDatesByService[c].splice($.inArray(d, me.invalidDatesByService[c]), 1); e.datepicker("setDate", me.getD); } onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); return false; }); } getSlots(d); } if (typeof cpapphourbk_in_admin !== 'undefined') { me.minDate = ""; me.maxDate = ""; } if (!me.loadOK) { me.formId = $(".fieldCalendarService"+me.name).parents("form").find('input[type="hidden"][name$="_id"]').val(); $.ajax( { dataType : 'json', type: "POST", url : document.location.href, cache : true, data : { cp_app_action: 'get_slots', formid: me.formId, initialID: me.initialID, formfield: me.name.replace(me.form_identifier, "") }, success : function( data ){ for (var i=0;i'+me.services[i].name+''; me.services[i].capacity = (parseInt(me.services[i].capacity)>0)?me.services[i].capacity:1; if (capacity'+ str ; var str2 = ""; for (var i=1;i<=me.services[0].capacity;i++) str2 += ''; d.html('

'); me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index()); me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); me.duration = $(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").val()*1; me.pa = me.services[me.service_selected].pa * 1 || 0; me.pb = me.services[me.service_selected].pb * 1 || 0; $(".fieldCalendarService"+me.name+" select.ahbfield_service").bind("change", function() { me.duration = $(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").val()*1; me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index()); me.pa = me.services[me.service_selected].pa * 1 || 0; me.pb = me.services[me.service_selected].pb * 1 || 0; me.cacheOpenHours = new Array(); me.special_days = me.getSpecialDays(); var str2 = ""; for (var i=1;i<=me.services[me.service_selected].capacity;i++) str2 += ''; $(".fieldCalendarService"+me.name+" select.ahbfield_quantity").html(str2); me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); }); $(".fieldCalendarService"+me.name+" select.ahbfield_quantity").bind("change", function() { me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); }); $("#"+me.name).bind("change", function() { if ($(this).attr("reload")=="reload") { $(this).attr("reload",""); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); } }); try{ me.special_days = me.getSpecialDays(); } catch (e) {} var hrs = 0; me.getMinDate = ""; if (me.minDate!=="") { if (me.minDate.indexOf("h")!= -1) { if (me.minDate.indexOf(" ")!= -1) { var a = me.minDate.split(" "); var find = false; for (var i=0;(i -1 ) return false; if (me.working_dates[date.getDay()]==0) return false; return true; } var sum = 0; for (var i=0;i0) { var nextdateAvailable = e.datepicker("getDate"); while (!DisableSpecificDates(nextdateAvailable)) nextdateAvailable.setDate(nextdateAvailable.getDate() + 1); e.datepicker("setDate", nextdateAvailable); me.getD = nextdateAvailable; function ifLoadOk() { if (!me.loadOK) setTimeout(ifLoadOk,100); else { $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); } } ifLoadOk(); } preselect_service = function(v) { $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().removeAttr("selected"); if (me.emptySelectCheckbox) $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().eq(v+1).attr('selected', 'selected').change(); else $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().eq(v).attr('selected', 'selected').change(); } if (typeof cp_hourbk_preselect !== 'undefined' && cp_hourbk_preselect!="") preselect_service(cp_hourbk_preselect*1); else if (me.initialapp!="" && dd!="") { preselect_service(me.initialServiceInd); onChangeDateOrService(dd); } getExtras=function() { var f = $( '#field' + me.form_identifier + '-' + me.index ).parents( "form" ); var v = 0; var find = false; var e = f.find(".ahb_service").find(':checked:not(.ignore)'); if( e.length ) { find = true; e.each( function(){ v += this.value*1; }); } e = f.find(".ahb_service_per_slot").find(':checked:not(.ignore)'); me.allUsedSlots = me.allUsedSlots || []; var s = me.allUsedSlots.length; if( e.length ) { find = true; e.each( function(){ v += this.value * s; } ); } e = f.find(".ahb_service_per_quantity_selection").find(':checked:not(.ignore)'); var q = f.find(".ahbfield_quantity").val(); if (!parseInt(q)) q = 1; if( e.length ) { find = true; e.each( function(){ v += this.value * q; } ); } f.find('#'+me.name+'_services').val(v); if (find) { me.extras = v; var total = me.sub_cost + me.extras; total = total.toFixed(2); $( '#field' + me.form_identifier + '-' + me.index ).find(".totalCost .n").html(" " +me.showTotalCostFormat.replace("{0}",total)); $( '#field' + me.form_identifier + '-' + me.index + ' #tcost'+me.name ).val(total); } } $( '#field' + me.form_identifier + '-' + me.index ).parents( "form" ).find(".ahb_service,.ahb_service_per_slot,.ahb_service_per_quantity_selection").on("click", function(){ getExtras(); }); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).change(function( ) { getExtras(); }); if (typeof cp_hourbk_overlapping_label != "undefined") $.extend($.validator.messages, {avoid_overlapping: $.validator.format(cp_hourbk_overlapping_label)}); if(!('avoid_overlapping' in $.validator.methods)) { function avoid_over_function(value, element){ var validator = this, previous = validator.previousValue( element ); if ( previous.old === value ) { return previous.valid; } previous.old = value; validator.startRequest( element ); var p = element.id.split( '_' ), _index = ( p.length > 1 ) ? '_'+p[ 1 ] : '', me = ( typeof $.fbuilder[ 'forms' ] != 'undefined' && typeof $.fbuilder[ 'forms' ][ _index ] != 'undefined' ) ? $.fbuilder[ 'forms' ][ _index ].getItem( p[ 0 ]+'_'+p[ 1 ] ) : null; if( me != null ) { $.ajax({ dataType : 'json', type: "POST", url : document.location.href, data : { cp_app_action: 'get_slots', formid: me.formId, initialID: me.initialID, formfield: me.name.replace(me.form_identifier, "") }, success: function(data) { var overlapping = false; var find = false; me.ignoreUsedSlots = true; me.cacheArr = new Array(); for (var i=0;i=t2) find = true; } overlapping = !find; } me.ignoreUsedSlots = false; var isValid = !overlapping; if (true === isValid) { var submitted = validator.formSubmitted; validator.prepareElement( element ); validator.formSubmitted = submitted; validator.successList.push( element ); delete validator.invalid[ element.name ]; validator.showErrors(); } else { for (var i=0;i 0) ind--; return ind; }, show:function() { return '
'+this.userhelp+'
'; }, getSpecialDays:function() { var me = this; var a = new Array(); if (!me.emptySelectCheckbox || (me.emptySelectCheckbox && $(".fieldCalendarService"+me.name+" select option:selected").index() > 0 )) { var ohindex = me.services[me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select option:selected").index())].ohindex; for (var i=0;i=arr[i].t2) arr[i].t2 += 24 * 60; } me.usedSlots[d] = me.usedSlots[d] || []; if (me.ignoreUsedSlots) var data2 = $.merge(data1.slice(0),[]); else var data2 = $.merge(data1.slice(0),me.usedSlots[d]); for (var i=0;idata[i].t2) data[i].t2 += 24 * 60; for (var i=0;icapacity_service || (data[i].service.length==0 || (data[i].service.length && data[i].service[0]!=me.service_selected))) || (!me.avoidOverlaping && (data[i].quantity+me.quantity_selected>capacity_service && (typeof data[i].serviceindex === 'undefined' || data[i].serviceindex==me.service_selected)) )) { for (var j=0;j arr[j].t1) && (data[i].t1 < arr[j].t2) && (data[i].t2 > arr[j].t1) && (data[i].t2 < arr[j].t2)) { var v1 = {t1:arr[j].t1, t2:data[i].t1, h1:arr[j].h1, h2:data[i].h1, m1:arr[j].m1, m2:data[i].m1}; var v2 = {t1:data[i].t2, t2:arr[j].t2, h1:data[i].h2, h2:arr[j].h2, m1:data[i].m2, m2:arr[j].m2}; arr.splice(j, 1, v1, v2); } else if ((data[i].t1 > arr[j].t1) && (data[i].t1 < arr[j].t2)) { arr[j].t2 = data[i].t1; arr[j].h2 = data[i].h1; arr[j].m2 = data[i].m1; } else if ((data[i].t2 > arr[j].t1) && (data[i].t2 < arr[j].t2)) { arr[j].t1 = data[i].t2; arr[j].h1 = data[i].h2; arr[j].m1 = data[i].m2; } else if ((data[i].t1 <= arr[j].t1) && (data[i].t2 >= arr[j].t2)) { arr.splice(j, 1); } } } } for (var i=0;i=0;i--) { if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t2*60*1000 <= currenttime) arr.splice(i, 1 ); else if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t1*60*1000 <= currenttime) { var st = arr[i].t1 + me.duration + me.pb + me.pa; while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + st*60*1000 <= currenttime) st += me.duration + me.pb + me.pa; var m1 = st % 60; var h1 = (st - m1)/60; arr[i].t1 = st; arr[i].h1 = h1; arr[i].m1 = m1; } } } if (me.maxDate!=="" && me.getMaxDate!="") { var current = me.getMaxDate; var currenttime = current.getTime()-me.tz*60*60*1000; for (var i=arr.length-1;i>=0;i--) { if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t1*60*1000 >= currenttime) arr.splice(i, 1 ); else if ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+arr[i].t2*60*1000 >= currenttime) { var et = arr[i].t1 + me.duration; while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + et*60*1000 <= currenttime) et += me.duration; var m2 = et % 60; var h2 = (et - m2)/60; arr[i].t2 = et; arr[i].h2 = h2; arr[i].m2 = m2; } } } for (var i=arr.length-1;i>=0;i--) if (arr[i].t1+me.bduration > arr[i].t2 || arr[i].t1 > 24*60) arr.splice(i, 1 ); return arr; }, formattime: function(t,mt)/*mt=2 for database 09:00*/ { if (t<0) t+=(24*60); t = t % (24*60); var h = Math.floor(t/60); var m = t%60; var suffix = ""; if (mt==0) { if (h>12) { h = h-12; suffix = " PM"; } else if (h==12) suffix = " PM"; else suffix = " AM"; } return (((h<10)?((mt==2)?"0":""):"")+h+":"+(m<10?"0":"")+m)+suffix; }, formatString: function(obj,showdate,tz) { var me = this; tz = tz * 60; if (typeof obj.st === 'undefined') obj.st = obj.h1*60+obj.m1*1; if (typeof obj.et === 'undefined') obj.et = obj.h2*60+obj.m2*1; var str = ""; if (showdate) str += $.datepicker.formatDate(me.dateFormat, $.datepicker.parseDate("yy-mm-dd", obj.d))+" "; str += me.formattime(obj.st+tz,me.militaryTime)+(me.showEndTime?("-"+me.formattime(obj.et+tz,me.militaryTime)):""); return str; }, getCurrentSlots: function(arr,d) { var me = this; var duration = me.duration; var html = ""; var htmlSlots = new Array(); var pb = 0; var pa = 0; var capacity_service = me.services[me.service_selected].capacity; if (true) { ya_reserva = new Array(); hora = new Array(); todos_datos = new Array(); dataDato = new Array(); var compactUsedSlots = me.getCompatSlots(me.htmlUsedSlots[d]) for (var i=0;i=capacity_service && compactUsedSlots[i].serviceindex==me.service_selected) if (compactUsedSlots[i].serviceindex==me.service_selected) { compactUsedSlots[i].st = compactUsedSlots[i].h1 * 60 + compactUsedSlots[i].m1; compactUsedSlots[i].t = $.datepicker.parseDate("yy-mm-dd",compactUsedSlots[i].d).getTime()+compactUsedSlots[i].st*60*1000; compactUsedSlots[i].html = ""; if (me.minDate!=="" && me.getMinDate!="") //check with the min date { var current = me.getMinDate; var currenttime = current.getTime()-me.tz*60*60*1000; if (compactUsedSlots[i].t > currenttime) { if (compactUsedSlots[i].quantity>=capacity_service){ // console.log(Object.getOwnPropertyNames(compactUsedSlots[i])); // console.log(compactUsedSlots[i].d); var dataDate = compactUsedSlots[i].d.split("-").reverse().join("/"); var dataDato = compactUsedSlots[i].d; // console.log(dataDate); ya_reserva[dataDato]= new Array(); hora[dataDato] = new Array(); // ya_reserva[dataDato][0] = ''; // ya_reserva[dataDato][1] = ''; // $('#fieldname2_1').animate({opacity:'1'}); // $('.pbSubmit').animate({opacity:'1'}); //console.log('¿se ve?'); hora[dataDato][0] = me.formatString(compactUsedSlots[i],false,me.tz); if (i==1) hora[dataDato][1] = me.formatString(compactUsedSlots[i],false,me.tz); k=i; //console.log('i= '+i); if (i==0){ $.ajax({ url: "//osmaracos.com/ya_reserva.php", type: "POST", data: { 'date' : dataDate, 'hora' : compactUsedSlots[0].h1 }, beforeSend: function(){ ya_reserva[dataDato][0] = hora[dataDato][0]+'...'; //console.log('SENDING AJAX! 0 -> hora: '+compactUsedSlots[0].h1); }, success: function(datos0) { console.log('RECIBO AJAX! 0 -> hora: '+compactUsedSlots[0].h1+' -> '+datos0); if (datos0 != ''){ $('#datos0-'+dataDato).html(datos0); console.log('#datos0-'+dataDato); }else{ $('#datos0-'+dataDato).html(''); console.log('ERROR! 0'); } //console.log(datos0); }, }); } if (i==1){ //console.log('START AJAX! 1 -> hora: '+compactUsedSlots[1].h1); $.ajax({ url: "//osmaracos.com/ya_reserva.php", type: "POST", data: { 'date' : dataDate, 'hora' : compactUsedSlots[1].h1 }, beforeSend: function(){ ya_reserva[dataDato][1] = hora[dataDato][1]+'...'; console.log('SENDING AJAX! 1'); }, success: function(datos1) { console.log('RECIBO AJAX! 1 -> hora: '+compactUsedSlots[1].h1+' -> '+datos1); if (datos1 != ''){ $('#datos1-'+dataDato).html(datos1); console.log('OK 1 -> #datos1-'+dataDato); }else{ $('#datos1-'+dataDato).html(''); console.log('ERROR! 1'); } //console.log(datos1); }, }); } compactUsedSlots[i].html = '
'+me.formatString(compactUsedSlots[i],false,me.tz)+''+((typeof compactUsedSlots[i].e !== 'undefined')?"
"+compactUsedSlots[i].e+"
":"")+'
'+ya_reserva[dataDato][i]+'
'; } //if (me.bSlotsCheckbox && me.usedSlotsCheckbox) if (me.usedSlotsCheckbox) htmlSlots[htmlSlots.length] = compactUsedSlots[i]; // console.log(Object.values(me.index)); } } } } } if ((typeof specialPadding === 'undefined')) { pb = me.pb; pa = me.pa; } for (var i=0;i= et) et += 24 * 60; while (st + me.bduration + me.pa <=et && st<24 * 60) { html = ""; htmlSlots[htmlSlots.length] = {st:st,html:html,t:$.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime()+st*60*1000}; if (!me.bSlotsCheckbox) st += me.bduration; else st += me.bduration + pa + pb; } } htmlSlots.sort(function(a, b){ if ((typeof cp_hourbk_cmpublic !== 'undefined') && (a.t == b.t)) { if ((typeof a.quantity !== 'undefined') && (typeof b.quantity === 'undefined')) { b.html = b.html.replace("ahbslotavailabilityP",(capacity_service - a.quantity)); b.quantity = a.quantity; } else if ((typeof b.quantity !== 'undefined') && (typeof a.quantity === 'undefined')) { a.html = a.html.replace("ahbslotavailabilityP",(capacity_service - b.quantity)); a.quantity = b.quantity; } } return a.t - b.t }); return htmlSlots; }, getAvailableSlots: function(d) { var me = this; function setHtmlUsedSlots(d,st,et) { st = st * 60; et = et * 60; var htmlSlots = new Array(); //if (me.bSlotsCheckbox && me.usedSlotsCheckbox) if (me.usedSlotsCheckbox) { me.cacheArr[d] = me.cacheArr[d] || []; for (var i=0;i=me.cacheArr[d][i].h2*60+me.cacheArr[d][i].m2) htmlSlots[htmlSlots.length] = jQuery.extend({}, me.cacheArr[d][i]); for (var i=0;me.usedSlots[d] && i=me.usedSlots[d][i].h2*60+me.usedSlots[d][i].m2) htmlSlots[htmlSlots.length] = jQuery.extend({}, me.usedSlots[d][i]); } } return htmlSlots; } var day = $.datepicker.parseDate("yy-mm-dd", d); if (this.tz==0) { me.htmlUsedSlots[d] = setHtmlUsedSlots(d,0,24); var arr = this.getAvailablePartialSlots(d,[{h1:0,m1:0,h2:0,m2:0}]); } else if (this.tz > 0) { day.setDate(day.getDate() - 1); var d1 = $.datepicker.formatDate("yy-mm-dd",day); var arr = $.merge(this.getAvailablePartialSlots(d1,[{h1:0,m1:0,h2:24-this.tz,m2:0}]),this.getAvailablePartialSlots(d,[{h1:24-this.tz,m1:0,h2:24,m2:0}])); me.htmlUsedSlots[d] = $.merge(setHtmlUsedSlots(d1,24-this.tz,24), setHtmlUsedSlots(d,0,24-this.tz)); } else { day.setDate(day.getDate() + 1); var d1 = $.datepicker.formatDate("yy-mm-dd",day); var arr = $.merge(this.getAvailablePartialSlots(d,[{h1:0,m1:0,h2:this.tz*-1,m2:0}]),this.getAvailablePartialSlots(d1,[{h1:this.tz*-1,m1:0,h2:24,m2:0}])); me.htmlUsedSlots[d] = $.merge(setHtmlUsedSlots(d1,this.tz*-1,24), setHtmlUsedSlots(d,0,this.tz*-1)); } var c = "s"+me.service_selected+"q"+me.quantity_selected; if (arr.length==0) { me.invalidDatesByService[c] = me.invalidDatesByService[c] || []; if ($.inArray(d, me.invalidDatesByService[c]) == -1) me.invalidDatesByService[c][me.invalidDatesByService[c].length] = d; } return arr; }, after_show:function() { function closeOtherDatepicker(){ $('#ui-datepicker-div').css("display","none"); } setTimeout(closeOtherDatepicker,100); if (typeof cp_hourbk_timezone !== 'undefined') { var gmt = (parseInt(cp_hourbk_timezone)); var local = (new Date().getTimezoneOffset() * -1)/60; this.tz = local - gmt; } var me = this, e = $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ), d = $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendarService'+me.name ), str = "", op = ""; e.addClass("notranslate") if (me.openhours.length>0)/*compatible with old version*/ { if (!me.openhours[0].name) { var obj = {name:"Default",openhours:me.openhours.slice(0)}; me.openhours = new Array(); me.openhours[0] = obj; } me.allOH = new Array(); me.allOH = me.openhours.slice(0); me.openhours = new Array(); } var dd = ""; if (me.initialapp!="") { var s = me.initialapp.split(";"); var s2 = ""; var ind = 0; for (var i=0;i 0 )) { if ($.inArray(day, me.invalidDatesByService["s"+me.service_selected+"q"+me.quantity_selected]) > -1 && me.notShowBookedDate){ // c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled","notavailslot"); c.push("notavailslot"); } if (typeof cp_hourbk_cmpublic !== 'undefined') { var cclass = c.join(" "); var q = 0; for (var i=0;i 0 ))) return; function getSlots(d) { var data1 = me.cacheArr[d]; var duration = me.duration; me.bduration = me.duration; if (!me.bSlotsCheckbox) me.bduration = me.bSlots*1; var str = ""; var arr = me.getAvailableSlots(d); var nextdateAvailable = $.datepicker.parseDate("yy-mm-dd", d); var c = "s"+me.service_selected+"q"+me.quantity_selected; var s = $( '#field' + me.form_identifier + '-' + me.index + ' .slotsCalendar'+me.name ); var i =0; /* if (me.notShowBookedDate && (me.maxNumberOfApp==0 || me.allUsedSlots.length0 ) { e.datepicker("setDate", nextdateAvailable); me.getD = nextdateAvailable; onChangeDateOrService($.datepicker.formatDate("yy-mm-dd", nextdateAvailable)); } else if (me.invalidDatesByService[c].length>=365) { if (me.getMinDate != "" && me.getMinDate.getTime() < me.getD.getTime()) { e.datepicker("setDate", me.getMinDate); me.getD = me.getMinDate; me.invalidDatesByService[c] = new Array(); onChangeDateOrService($.datepicker.formatDate("yy-mm-dd", me.getD)); return; } e.datepicker("setDate", me.getMinDate); s.html("
"+cp_hourbk_nomore_label+"
"); } return; } */ var htmlSlots = me.getCurrentSlots(arr,d); var capacity_service = me.services[me.service_selected].capacity; for (var i=0;i0) { before = s.find(".slots").attr("d"); } s.html("
"+$.datepicker.formatDate(me.dateFormat, $.datepicker.parseDate("yy-mm-dd", d))+"
"+str+"
"); if (before!="" && before!=d) { s.find(".slots span:first").hide().show(200); } var str1="",str2=""; me.allUsedSlots = me.allUsedSlots || []; me.allUsedSlots.sort(function(a, b){ return ($.datepicker.parseDate("yy-mm-dd", a.d).getTime()+(a.h1*60+a.m1)*60*1000) - ($.datepicker.parseDate("yy-mm-dd", b.d).getTime()+(b.h1*60+b.m1)*60*1000)}); j = 0; var total = 0; for (var i=0;i"+me.formatString(me.allUsedSlots[i],true,me.tz)+""+me.services[me.allUsedSlots[i].serviceindex].name+""+((me.allUsedSlots[i].quantity>1)?"("+me.allUsedSlots[i].quantity+")":"")+"["+(cp_hourbk_cancel_label?cp_hourbk_cancel_label:'cancel')+"]"+(((typeof cp_hourbk_repeat !== 'undefined') && i==0)?showrepeat(me.name):"")+""; str2 += ((str2=="")?"":";")+me.allUsedSlots[i].d+" "+me.formattime(me.allUsedSlots[i].h1*60+me.allUsedSlots[i].m1*1,2)+"/"+me.formattime(me.allUsedSlots[i].h2*60+me.allUsedSlots[i].m2*1,2)+" "+me.allUsedSlots[i].serviceindex+" "+me.allUsedSlots[i].quantity; if (me.allUsedSlots[i].d==d) j++; } me.sub_cost = total; total = me.sub_cost + me.extras; total = total.toFixed(2); if (me.showTotalCost && (str1!="")) str1 += '
'+cp_hourbk_cost_label+' '+me.showTotalCostFormat.replace("{0}", total)+'
'; $( '.usedSlots'+me.name ).html(str1); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).val(str2); $( '#field' + me.form_identifier + '-' + me.index + ' #tcost'+me.name ).val(total); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).change(); try { $( "#fbuilder .slots div a" ).tooltip({ position: { my: "left top+10" }, open: function (event, ui) { $(this).tooltip( "option", "content", $(this).parent().find(".ahbmoreinfo").html() ); }, tooltipClass: "ahbtooltip" }); } catch (e) {} $( '.slotsCalendar' + me.name + ' .slots a').off("click").on("click", function() { $('#fieldname2_1').animate({opacity:'1'}); $('.pbSubmit').animate({opacity:'1'}); if ($(this).parents("fieldset").hasClass("ahbgutenberg_editor")) return false; $( "#field" + me.form_identifier + "-" + me.index + " div.cpefb_error").remove(); if ($(this).parent().hasClass("htmlUsed")) return false; me.allUsedSlots = me.allUsedSlots || []; if (me.maxNumberOfApp==0 || me.allUsedSlots.length -1) { me.invalidDatesByService[c].splice($.inArray(d, me.invalidDatesByService[c]), 1); e.datepicker("setDate", me.getD); } onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); return false; }); } getSlots(d); console.log($("a.cancel").length); if ($("a.cancel").length == 0){ $('#fieldname2_1').animate({opacity:'0'}); $('.pbSubmit').animate({opacity:'0'}); } } if (typeof cpapphourbk_in_admin !== 'undefined') { me.minDate = ""; me.maxDate = ""; } if (!me.loadOK) { me.formId = $(".fieldCalendarService"+me.name).parents("form").find('input[type="hidden"][name$="_id"]').val(); $.ajax( { dataType : 'json', type: "POST", url : document.location.href, cache : true, data : { cp_app_action: 'get_slots', formid: me.formId, initialID: me.initialID, formfield: me.name.replace(me.form_identifier, "") }, success : function( data ){ for (var i=0;i'+me.services[i].name+''; me.services[i].capacity = (parseInt(me.services[i].capacity)>0)?me.services[i].capacity:1; if (capacity'+ str ; var str2 = ""; for (var i=1;i<=me.services[0].capacity;i++) str2 += ''; d.html('

'); me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index()); me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); me.duration = $(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").val()*1; me.pa = me.services[me.service_selected].pa * 1 || 0; me.pb = me.services[me.service_selected].pb * 1 || 0; $(".fieldCalendarService"+me.name+" select.ahbfield_service").bind("change", function() { me.duration = $(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").val()*1; me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index()); me.pa = me.services[me.service_selected].pa * 1 || 0; me.pb = me.services[me.service_selected].pb * 1 || 0; me.cacheOpenHours = new Array(); me.special_days = me.getSpecialDays(); var str2 = ""; for (var i=1;i<=me.services[me.service_selected].capacity;i++) str2 += ''; $(".fieldCalendarService"+me.name+" select.ahbfield_quantity").html(str2); me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); }); $(".fieldCalendarService"+me.name+" select.ahbfield_quantity").bind("change", function() { me.quantity_selected = parseInt($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val()); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); }); $("#"+me.name).bind("change", function() { if ($(this).attr("reload")=="reload") { $(this).attr("reload",""); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); } }); try{ me.special_days = me.getSpecialDays(); } catch (e) {} var hrs = 0; me.getMinDate = ""; if (me.minDate!=="") { if (me.minDate.indexOf("h")!= -1) { if (me.minDate.indexOf(" ")!= -1) { var a = me.minDate.split(" "); var find = false; for (var i=0;(i -1 ) return false; if (me.working_dates[date.getDay()]==0) return false; return true; } var sum = 0; for (var i=0;i0) { var nextdateAvailable = e.datepicker("getDate"); while (!DisableSpecificDates(nextdateAvailable)) nextdateAvailable.setDate(nextdateAvailable.getDate() + 1); e.datepicker("setDate", nextdateAvailable); me.getD = nextdateAvailable; function ifLoadOk() { if (!me.loadOK) setTimeout(ifLoadOk,100); else { $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD)); $( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", renderCalendarCallback ); } } ifLoadOk(); } preselect_service = function(v) { $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().removeAttr("selected"); if (me.emptySelectCheckbox) $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().eq(v+1).attr('selected', 'selected').change(); else $(".fieldCalendarService"+me.name+" select.ahbfield_service").children().eq(v).attr('selected', 'selected').change(); } if (typeof cp_hourbk_preselect !== 'undefined' && cp_hourbk_preselect!="") preselect_service(cp_hourbk_preselect*1); else if (me.initialapp!="" && dd!="") { preselect_service(me.initialServiceInd); onChangeDateOrService(dd); } getExtras=function() { var f = $( '#field' + me.form_identifier + '-' + me.index ).parents( "form" ); var v = 0; var find = false; var e = f.find(".ahb_service").find(':checked:not(.ignore)'); if( e.length ) { find = true; e.each( function(){ v += this.value*1; }); } e = f.find(".ahb_service_per_slot").find(':checked:not(.ignore)'); me.allUsedSlots = me.allUsedSlots || []; var s = me.allUsedSlots.length; if( e.length ) { find = true; e.each( function(){ v += this.value * s; } ); } e = f.find(".ahb_service_per_quantity_selection").find(':checked:not(.ignore)'); var q = f.find(".ahbfield_quantity").val(); if (!parseInt(q)) q = 1; if( e.length ) { find = true; e.each( function(){ v += this.value * q; } ); } f.find('#'+me.name+'_services').val(v); if (find) { me.extras = v; var total = me.sub_cost + me.extras; total = total.toFixed(2); $( '#field' + me.form_identifier + '-' + me.index ).find(".totalCost .n").html(" " +me.showTotalCostFormat.replace("{0}",total)); $( '#field' + me.form_identifier + '-' + me.index + ' #tcost'+me.name ).val(total); } } $( '#field' + me.form_identifier + '-' + me.index ).parents( "form" ).find(".ahb_service,.ahb_service_per_slot,.ahb_service_per_quantity_selection").on("click", function(){ getExtras(); }); $( '#field' + me.form_identifier + '-' + me.index + ' #'+me.name ).change(function( ) { getExtras(); }); if (typeof cp_hourbk_overlapping_label != "undefined") $.extend($.validator.messages, {avoid_overlapping: $.validator.format(cp_hourbk_overlapping_label)}); if(!('avoid_overlapping' in $.validator.methods)) { function avoid_over_function(value, element){ var validator = this, previous = validator.previousValue( element ); if ( previous.old === value ) { return previous.valid; } previous.old = value; validator.startRequest( element ); var p = element.id.split( '_' ), _index = ( p.length > 1 ) ? '_'+p[ 1 ] : '', me = ( typeof $.fbuilder[ 'forms' ] != 'undefined' && typeof $.fbuilder[ 'forms' ][ _index ] != 'undefined' ) ? $.fbuilder[ 'forms' ][ _index ].getItem( p[ 0 ]+'_'+p[ 1 ] ) : null; if( me != null ) { $.ajax({ dataType : 'json', type: "POST", url : document.location.href, data : { cp_app_action: 'get_slots', formid: me.formId, initialID: me.initialID, formfield: me.name.replace(me.form_identifier, "") }, success: function(data) { var overlapping = false; var find = false; me.ignoreUsedSlots = true; me.cacheArr = new Array(); for (var i=0;i=t2) find = true; } overlapping = !find; } me.ignoreUsedSlots = false; var isValid = !overlapping; if (true === isValid) { var submitted = validator.formSubmitted; validator.prepareElement( element ); validator.formSubmitted = submitted; validator.successList.push( element ); delete validator.invalid[ element.name ]; validator.showErrors(); } else { for (var i=0;i'+label+''; } else if(!/^\s*$/.test(me.message)) { label = ''+label+''; dlg += '
'+me.message+'
' } return '
'+ '
'+ dlg+ '
'; }, after_show:function() { $(document).on('click','.cff-open-dlg', function(){ var dlg = $(this).closest('.fields').find('.cff-dialog'), w = dlg.data('width'), h=dlg.data('height'); dlg.removeClass('hide'); if('undefined' == typeof w) w = Math.min($(this).closest('form').width(), $(window).width(), dlg.width()); if('undefined' == typeof h) h = Math.min($(this).closest('form').height(), $(window).height(), dlg.height()); dlg.data('width',w); dlg.data('height',h); dlg.css({'width': w+'px', 'height': h+'px', 'margin-top': (-1*h/2)+'px', 'margin-left': (-1*w/2)+'px'}); }); $(document).on('click','.cff-close-dlg', function(){$(this).closest('.cff-dialog').addClass('hide');}); }, val:function() { var e = $('[id="'+this.name+'"]:checked:not(.ignore)'); if( e.length ) { var t = $.fbuilder.parseValStr( e[0].value ); if(!$.isNumeric(t)) t = t.replace(/^"/,'').replace(/"$/,''); } return (v) ? (($.isNumeric(v)) ? v : '"'+v+'"') : 0; } } ); $.fbuilder.controls[ 'femail' ] = function(){}; console.log('email del usuario: '); $.extend( $.fbuilder.controls[ 'femail' ].prototype, $.fbuilder.controls[ 'ffields' ].prototype, { title:"Email", ftype:"femail", predefined:"", predefinedClick:false, required:false, size:"medium", equalTo:"", show:function() { return '
'+this.userhelp+'
'; }, val:function() { var e = $( '[id="' + this.name + '"]:not(.ignore)' ); if( e.length ) return $.fbuilder.parseValStr( e.val() ); return ''; } } ); var fcount = 1; var fcount_tags = 1; var fnum = "_"+fcount; while (20>fcount || eval("typeof cp_appbooking_fbuilder_config"+fnum+" != 'undefined'")) { try { var cp_appbooking_fbuilder_config = eval("cp_appbooking_fbuilder_config"+fnum); while (20>fcount_tags && !$("#fbuilder_"+fcount_tags).length) fcount_tags++; cp_appbooking_fbuilder_config = $.parseJSON(cp_appbooking_fbuilder_config.obj); cp_appbooking_fbuilder_config.identifier = "_"+fcount_tags; var f = $("#fbuilder_"+fcount_tags).fbuilder(cp_appbooking_fbuilder_config); f.fBuild.loadData("form_structure_"+fcount_tags); $("#cp_appbooking_pform_"+fcount_tags).validate({ ignore:".ignore,.ignorepb", errorElement: "div", errorClass:"cpefb_error", errorPlacement: function(e, element) { if (element.hasClass('group')) element = element.parent(); e.insertBefore(element); e.addClass('message'); // add a class to the wrapper e.css('position', 'absolute'); e.css('left',0 ); e.css('top',element.parent().outerHeight(true)); } }); } catch (e) {} fcount++; fcount_tags++; fnum = "_"+fcount; } })(fbuilderjQuery); });