');
}
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;
function focusTop(){try {$('html, body').animate({scrollTop: $("#fieldlist"+identifier+" .pb"+page).find("fieldset").offset().top}, 100);}catch(e){}}
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
{
if ($("#fieldlist"+identifier+" .pb"+page).find(".field").is(":visible"))
$("#fieldlist"+identifier+" .pb"+page).find(".field")[0].focus();
else
focusTop();
}
catch(e){focusTop()}
}
else
focusTop();
}
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 ) ); } );
$( document ).on("click","#fieldlist"+opt.identifier+" .pbSubmit", function( evt )
{
$("#fieldlist"+opt.identifier+" .pbSubmit").closest("form").submit();
});
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.title+''+((this.required)?"* ":"")+' '+this.userhelp+'
';
}
}
); $.fbuilder.controls[ 'femail' ] = function(){};
$.extend(
$.fbuilder.controls[ 'femail' ].prototype,
$.fbuilder.controls[ 'ffields' ].prototype,
{
title:"Email",
ftype:"femail",
predefined:"",
predefinedClick:false,
required:false,
size:"medium",
equalTo:"",
show:function()
{
return '';
},
val:function()
{
var e = $( '[id="' + this.name + '"]:not(.ignore)' );
if( e.length ) return $.fbuilder.parseValStr( e.val() );
return '';
}
}
);$.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,
showAllServices:false,
allowDifferentQuantities:false,
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,
percent:0,
notShowBookedDate:true,
showWeek:false,
autonum:0,
getSplittedSlots:function(d,s)
{
function splitSlots (a,serviceindex) {
var dots = new Array();
for (var i=0;ia[j].t1 && sa[j].t1 && e 0)
ind--;
return ind;
},
show:function()
{
return '';
},
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;
}
if (me.ignoreUsedSlots)
var data2 = $.merge(data1.slice(0),[]);
else
{
me.usedSlots[d] = me.usedSlots[d] || [];
var data2 = $.merge(data1.slice(0),me.usedSlots[d]);
var t = $.datepicker.parseDate("yy-mm-dd", d);
t.setDate(t.getDate() - 1);
var bd = $.datepicker.formatDate("yy-mm-dd", t);
me.usedSlots[bd] = me.usedSlots[bd] || [];
for (var i=0;i me.usedSlots[bd][i].h2 && me.usedSlots[bd][i].h2!=0) || me.usedSlots[bd][i].h2>24)
{
if (me.usedSlots[bd][i].h1>me.usedSlots[bd][i].h2)
me.usedSlots[bd][i].h2 += 24;
var obj = jQuery.extend({}, me.usedSlots[bd][i]);
obj.h2 = me.usedSlots[bd][i].h2 - 24;
obj.h1 = 0;obj.m1 = 0;
obj.d = d;
data2[data2.length] = obj;
}
}
}
for (var i=0;idata[i].t2)
data[i].t2 += 24 * 60;
}
if (typeof cp_hourbk_cmpublic !== 'undefined')
data = me.getSplittedSlots(data,s);
data = me.getCompatSlots(data);
for (var i=0;icapacity_service || (data[i].service.length==0 || (data[i].service.length && data[i].service[0]!=s)))
//|| (!me.avoidOverlaping && (data[i].quantity+me.quantity_selected>capacity_service && (typeof data[i].serviceindex === 'undefined' || data[i].serviceindex==s)) ))
|| (!me.avoidOverlaping && ((data[i].quantity+me.quantity_selected>capacity_service && data[i].serviceindex==s) || typeof data[i].serviceindex === 'undefined') ))
{
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);
j--;
}
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);
j--;
}
}
}
}
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;//var st = arr[i].t1 + duration + me.pb + me.pa;
while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + st*60*1000 <= currenttime)
{
if (!me.bSlotsCheckbox)
st += me.bduration;
else
st += duration + me.pb + me.pa;
//st += 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;
while ($.datepicker.parseDate("yy-mm-dd",arr[i].day).getTime() + (et + duration)*60*1000 <= currenttime)
et += 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+duration > 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
{
if (h==0 && mt!=2) h=12;
suffix = " AM";
}
}
return (((h<10)?((mt==2)?"0":"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)
{
var d = $.datepicker.parseDate("yy-mm-dd", obj.d);
if (tz!=0)
{
if (obj.st+tz<0)
d.setDate(d.getDate() - 1);
else if (obj.st+tz>24*60)
d.setDate(d.getDate() + 1);
}
str += ""+$.datepicker.formatDate(me.dateFormat, d)+" ";
}
str += (showdate?"":"");
str += me.formattime(obj.st+tz,me.militaryTime)+(me.showEndTime?("-"+me.formattime(obj.et+tz,me.militaryTime)):"");
str += (showdate?" ":"");
return str;
},
getCurrentSlots: function(arr,d,s)
{
var me = this;
var duration = parseFloat(me.services[s].duration);
var html = "";
var htmlSlots = new Array();
var pb = 0;
var pa = 0;
var v = false;
var capacity_service = me.services[s].capacity;
if (true)
{
var compactUsedSlots = me.getCompatSlots(me.htmlUsedSlots[d])
for (var i=0;i=capacity_service && compactUsedSlots[i].serviceindex==s)
if (compactUsedSlots[i].serviceindex==s)
{
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 = "";
var v = false;
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)
{
v = true;
}
}
else
v = true;
if (v)
{
if (compactUsedSlots[i].quantity>=capacity_service || compactUsedSlots[i].currentSelection)
compactUsedSlots[i].html = '';
compactUsedSlots[i].availableslot = false;
htmlSlots[htmlSlots.length] = compactUsedSlots[i];
}
}
}
}
if ((typeof specialPadding === 'undefined'))
{
pb = me.pb;
pa = me.pa;
}
for (var i=0;i= et)
et += 24 * 60;
st += me.pb;
while (st + duration + me.pa <=et && st < 24 * 60)
{
html = "";
htmlSlots[htmlSlots.length] = {availableslot:true,st:st,serviceindex:s,h1:Math.floor((st)/60),m1:((st)%60),h2:Math.floor((st+duration)/60),m2:((st+duration)%60),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
});
//remove duplicates
htmlSlots = htmlSlots.reduce(function(field, e1){
var matches = field.filter(function(e2){return e1.html== e2.html});
if (matches.length == 0){
field.push(e1);
}return field;
}, []);
htmlSlots = htmlSlots.reduce(function(field, e1){
var matches = field.filter(function(e2){return e1.t== e2.t});
if (matches.length == 0){
field.push(e1);
}
else
{
for (var i=0;i0 && htmlSlots.length>0)
for (var i=0;i=me.cacheArr[d][i].t2)
me.cacheArr[d][i].t2 += 24 * 60;
if (st<=me.cacheArr[d][i].t1 && et>=me.cacheArr[d][i].t1)
htmlSlots[htmlSlots.length] = jQuery.extend({}, me.cacheArr[d][i]);
}
for (var i=0;me.usedSlots[d] && i=me.usedSlots[d][i].t2)
me.usedSlots[d][i].t2 += 24 * 60;
if (st<=me.usedSlots[d][i].t1 && et>=me.usedSlots[d][i].t1)
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}],s);
}
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}],s),this.getAvailablePartialSlots(d,[{h1:24-this.tz,m1:0,h2:24,m2:0}],s));
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}],s),this.getAvailablePartialSlots(d1,[{h1:this.tz*-1,m1:0,h2:24,m2:0}],s));
me.htmlUsedSlots[d] = $.merge(setHtmlUsedSlots(d,this.tz*-1,24), setHtmlUsedSlots(d1,0,this.tz*-1));
}
var c = "s"+s+"q"+me.quantity_selected;
var slotsReal = 0;
var htmlSlots = me.getCurrentSlots(arr,d,s);
for (var j=0;j -1)
me.invalidDatesByService[c].splice($.inArray(d, me.invalidDatesByService[c]), 1);
}
return arr;
},
getAvailableSlots: function(d)
{
var me = this;
var a_max = [];
if (!me.showAllServices)
a_max = this.getAvailableSlotsByService(d,me.service_selected);
else
{
me.availableSlotsByService = [];
for (var i=0; i< me.services.length;i++)
{
me.availableSlotsByService[i] = this.getAvailableSlotsByService(d,i);
if (me.availableSlotsByService[i].length > a_max.length)
a_max = me.availableSlotsByService[i].slice(0);
}
}
var c = "sq"+me.quantity_selected;
if (a_max.length==0)
{
me.invalidDatesByService[c] = me.invalidDatesByService[c] || [];
if ($.inArray(d, me.invalidDatesByService[c]) == -1)
me.invalidDatesByService[c][me.invalidDatesByService[c].length] = d;
return [];
}
return a_max;
},
rC: function(d)
{
var me = this;
var day = $.datepicker.formatDate('yy-mm-dd', d);
var c = new Array(day,"d"+day);
if (me.working_dates[d.getDay()]==0 && ($.inArray(day, me.special_days) == -1))
c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled");
for( var i = 0, l = me.invalidDates.length; i < l; i++ )
{
if (d.getTime() === me.invalidDates[i].getTime() && ($.inArray(day, me.special_days) == -1))
c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled","invalidDate");
}
if (me.minDate!=="" && me.getMinDate!="" && day < $.datepicker.formatDate('yy-mm-dd', me.getMinDate))
c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled","beforemindate");
if (me.maxDate!=="" && me.getMaxDate!="" && day > $.datepicker.formatDate('yy-mm-dd', me.getMaxDate))
c.push("nonworking","ui-datepicker-unselectable","ui-state-disabled","aftermaxdate");
if (($.inArray("ui-datepicker-unselectable",c)==-1) && !me.emptySelectCheckbox || (me.emptySelectCheckbox && $(".fieldCalendarService"+me.name+" select option:selected").index() > 0 ))
{
var arr = me.getAvailableSlots(day);
if ($.inArray(day, me.invalidDatesByService["s"+(me.showAllServices?"":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 used = 0;
var cclass = c.join(" ");
var q = 0;
var total = 0;
if (!me.showAllServices)
{
var htmlSlots = me.getCurrentSlots(arr,day,me.service_selected);
for (var i=0;i0)/*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!="")
{
try{
var s = me.initialapp.split(";");
var s2 = "";
var ind = 0;
for (var i=0;i 0 )))
{
$( '#field' + me.form_identifier + '-' + me.index + ' .slotsCalendar'+me.name ).html("");
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 arr = me.getAvailableSlots(d);
var nextdateAvailable = $.datepicker.parseDate("yy-mm-dd", d);
var c = "s"+(me.showAllServices?"":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;
}
me.service_change = false;
function getStrSlots(arr,d,s)
{
var str = "";
var htmlSlots = me.getCurrentSlots(arr,d,s);
var capacity_service = me.services[s].capacity;
for (var i=0;i'+me.services[i].name+'
'+str_s+'';
}
}
if (str=="") str = cp_hourbk_nomore_label;
var before = "";
if (s.find(".slots").length>0)
{
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+") ["+(cp_hourbk_cancel_label?cp_hourbk_cancel_label:'cancel')+"] "+(((typeof cp_hourbk_repeat !== 'undefined'))?showrepeat(me,i):"")+"";
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*(1+me.percent/100);
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()
{
var q = parseFloat($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val());
if ((me.maxNumberOfApp==1 && me.allUsedSlots.length==me.maxNumberOfApp) || (me.allUsedSlots.length>0 && me.allUsedSlots[0].quantity!=q && !me.allowDifferentQuantities)) //cancel previous slot
{
for (var i = 0; (i -1)
{
me.invalidDatesByService[c].splice($.inArray(d, me.invalidDatesByService[c]), 1);
if ($.inArray(d, me.invalidDatesByService[c1]) > -1)
me.invalidDatesByService[c1].splice($.inArray(d, me.invalidDatesByService[c1]), 1);
}
me.usedSlots[me.allUsedSlots[i].d] = new Array();
me.allUsedSlots = new Array();
}
}
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;
if ($(this).parent().hasClass("currentSelection"))
return false;
me.allUsedSlots = me.allUsedSlots || [];
if (me.maxNumberOfApp==0 || me.allUsedSlots.length -1)
{
me.invalidDatesByService[c].splice($.inArray(d, me.invalidDatesByService[c]), 1);
if ($.inArray(d, me.invalidDatesByService[c1]) > -1)
me.invalidDatesByService[c1].splice($.inArray(d, me.invalidDatesByService[c1]), 1);
e.datepicker("setDate", me.getD);
}
onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD));
return false;
});
}
getSlots(d);
$(document).trigger("afterOnChange",{name:me.name, me:me});
}
if (typeof cpapphourbk_in_admin !== 'undefined')
{
me.minDate = "";
me.maxDate = "";
me.maxNumberOfApp = 0;
}
if (!me.loadOK)
{
me.formId = $(".fieldCalendarService"+me.name).parents("form").find('input[type="hidden"][name$="cp_appbooking_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;idata[i].h2 && data[i].h2!=0) || data[i].h2>24)
{
if (data[i].h1>data[i].h2)
data[i].h2 += 24;
var obj = jQuery.extend({}, data[i]);
obj.h2 = data[i].h2 - 24;
obj.h1 = 0;obj.m1 = 0;
var d = $.datepicker.parseDate("yy-mm-dd", dd);
d.setDate(d.getDate() + 1);
obj.d = $.datepicker.formatDate("yy-mm-dd", d);
data[i].h2 = 24;
me.cacheArr[obj.d] = me.cacheArr[obj.d] || [];
me.cacheArr[obj.d][me.cacheArr[obj.d].length] = obj;
}
}
me.loadOK = true;
}
});
}
this.invalidDates = this.invalidDates.replace( /\s+/g, '' );
try{
var df = "mm/dd/yy";
if (this.invalidDates.indexOf(".")!=-1)
df = me.dateFormat;
if( !/^\s*$/.test( this.invalidDates ) )
{
var counter = 0, dates = this.invalidDates.split( ',' );
this.invalidDates = [];
for( var i = 0, h = dates.length; i < h; i++ )
{
var range = dates[ i ].split( '-' );
if( range.length == 2 )
{
var fromD = $.datepicker.parseDate(df,range[ 0 ]),
toD = $.datepicker.parseDate(df,range[ 1 ]);
while( fromD <= toD )
{
if (fromD !== null)
{
this.invalidDates[ counter ] = fromD;
var tmp = new Date( fromD.valueOf() );
tmp.setDate( tmp.getDate() + 1 );
fromD = tmp;
counter++;
}
}
}
else
{
for( var j = 0, k = range.length; j < k; j++ )
{
if ($.datepicker.parseDate(df,range[ j ]) !== null)
{
this.invalidDates[ counter ] = $.datepicker.parseDate(df,range[ j ]);
counter++;
}
}
}
}
}
} catch (e) {}
if ($.validator.messages.date_format && $.validator.messages.date_format!="")
me.dateFormat = $.validator.messages.date_format;
var capacity = 1;
for (var i=0;i'+me.services[i].name+'';
me.services[i].capacity = (parseFloat(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 += ''+i+' ';
d.html(''+str+' '+((typeof cp_hourbk_quantity_label !== 'undefined')?cp_hourbk_quantity_label:'Quantity')+' '+str2+'
');
me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index());
me.quantity_selected = parseFloat($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val());
me.duration = parseFloat(me.services[me.service_selected].duration);
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.service_change = true;
me.service_selected = me.normalizeSelectIndex($(".fieldCalendarService"+me.name+" select.ahbfield_service option:selected").index());
me.duration = parseFloat(me.services[me.service_selected].duration);
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 += ''+i+' ';
$(".fieldCalendarService"+me.name+" select.ahbfield_quantity").html(str2);
me.quantity_selected = parseFloat($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val());
if (typeof me.getDMin!='undefined') me.getD = me.getDMin;
$( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", function(d){return me.rC(d)} );
onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD));
});
$(".fieldCalendarService"+me.name+" select.ahbfield_quantity").bind("change", function()
{
if (!me.allowDifferentQuantities)
{
me.quantity_selected = parseFloat($(".fieldCalendarService"+me.name+" select.ahbfield_quantity option:selected").val());
me.allUsedSlots = me.allUsedSlots || [];
for (var i=0;i=arr[j].t1 && s.h2*60+s.m2*1<=arr[j].t2)
find = true;
}
me.usedSlots[s.d] = me.usedSlots[s.d] || [];
f = false;
for (var j=0;j=0 && parseFloat(a[0]) < 24 && parseFloat(a[1])>=0 && parseFloat(a[1]) < 60 )
me.getMinDate = new Date(me.getMinDate.getFullYear(),me.getMinDate.getMonth(),me.getMinDate.getDate(),parseFloat(a[0]),parseFloat(a[1]));
}
e.datepicker("option", "minDate", me.getMinDate );
e.datepicker("setDate", me.getMinDate);
}
if (me.maxDate!=="")
try{me.getMaxDate = $.datepicker._getMinMaxDate( e.data('datepicker'), 'max' ); me.getMaxDate.setHours(23, 59, 59, 999);} catch (e) {}
if (typeof hrsMax !== 'undefined')
{
var t = new Date();
me.getMaxDate.setHours(t.getHours(), t.getMinutes(), t.getSeconds());
me.getMaxDate = new Date((me.getMaxDate.getTime() + hrsMax * 60 * 60 * 1000) );
}
try{
if (me.defaultDate!=="")
e.datepicker("setDate", me.defaultDate);
} catch (e) {}
e.datepicker("option", "maxDate", me.maxDate );
if (me.getMaxDate!="" && me.tz!=0) e.datepicker("option", "maxDate", new Date(me.getMaxDate.getTime()+me.tz*60*60*1000) );
me.tmpinvalidDatestime = new Array();
try {
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", function(d){return me.rC(d)} );
onChangeDateOrService($.datepicker.formatDate('yy-mm-dd', me.getD));
$( '#field' + me.form_identifier + '-' + me.index + ' .fieldCalendar'+me.name ).datepicker( "option", "beforeShowDay", function(d){return me.rC(d)} );
}
}
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).prop('selected', 'selected').change();
else
$(".fieldCalendarService"+me.name+" select.ahbfield_service").children().eq(v).prop('selected', 'selected').change();
}
if (typeof cp_hourbk_preselect !== 'undefined' && cp_hourbk_preselect!="")
preselect_service(cp_hourbk_preselect*1);
else
if (me.initialapp!="" && dd!="")
{
try{
me.getD = $.datepicker.parseDate("yy-mm-dd",dd);
e.datepicker("setDate", me.getD);
preselect_service(me.initialServiceInd);
onChangeDateOrService(dd);
} catch (e) {}
}
getExtrasVisible = function(f)
{
try{
var p = f.attr("id").split( '_' );
var items = $.fbuilder[ 'forms' ]["_"+p[p.length-1]].getItems();
for (var i=0;i 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 += ''
}
return '';
},
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;
}
}
); var fcount = 1;
var fcount_tags = 1;
var fnum = "_"+fcount;
var cp_avoid_hidden = false;
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 opt_identifier = $("#fieldlist_"+fcount_tags);
opt_identifier.attr("fcount_tags",fcount_tags);
opt_identifier.attr("fnum",fnum);
opt_identifier.addClass("cp_avoid_hidden")
var f = $("#fbuilder_"+fcount_tags).fbuilder(cp_appbooking_fbuilder_config);
f.fBuild.loadData("form_structure_"+fcount_tags);
$.fbuilder.configValidate($("#cp_appbooking_pform_"+fcount_tags));
if((typeof opt_identifier.attr("fnum") !== 'undefined') && !opt_identifier.is(':hidden'))
$(opt_identifier).addClass("cp_v_v");
else
cp_avoid_hidden = true;
} catch (e) {}
fcount++;
fcount_tags++;
fnum = "_"+fcount;
}
if (cp_avoid_hidden)
$( document ).each(
function()
{
(new MutationObserver(
function(mutationsList, observer)
{
for(let k in mutationsList)
{
var mutation = mutationsList[k];
if (mutation.type === 'childList')
{
if(mutation.addedNodes.length)
{
try{
$(".cp_avoid_hidden").each(function(){
var opt_identifier= $("#"+$(this).attr("id"));
if((typeof opt_identifier.attr("fnum") !== 'undefined') && !opt_identifier.is(':hidden') && !opt_identifier.hasClass("cp_v_v"))
{
$(opt_identifier).addClass("cp_v_v");
var fnum = opt_identifier.attr("fnum");
var fcount_tags = opt_identifier.attr("fcount_tags");
var cp_appbooking_fbuilder_config = eval("cp_appbooking_fbuilder_config"+fnum);
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);
$.fbuilder.configValidate(opt_identifier.closest("form"));
}
})
}catch(err){}
}
}
}
}
)).observe(this, { childList: true, subtree: true });
}
);
})(fbuilderjQuery);
});