WordPress Online Booking and Scheduling Plugin – Bookly - Version 16.5

Version Description

Download this release

Release Info

Developer Ladela
Plugin Icon 128x128 WordPress Online Booking and Scheduling Plugin – Bookly
Version 16.5
Comparing to
See all releases

Code changes from version 16.4 to 16.5

backend/components/dialogs/appointment/edit/Ajax.php CHANGED
@@ -427,7 +427,7 @@ class Ajax extends Lib\Base\Ajax
427
  ->addItem( 0, DataHolders\Series::create( $series ) );
428
  }
429
 
430
- foreach ( $schedule as $slot ) {
431
  $slot = json_decode( $slot, true );
432
  $start_date = $slot[0][2];
433
  $end_date = Lib\Slots\DatePoint::fromStr( $start_date )->modify( $duration )->format( 'Y-m-d H:i:s' );
@@ -479,7 +479,7 @@ class Ajax extends Lib\Base\Ajax
479
  $item = DataHolders\Simple::create( $ca )
480
  ->setService( $service )
481
  ->setAppointment( $appointment );
482
- $orders[ $ca->getCustomerId() ]->getItem( 0 )->addItem( $item );
483
  }
484
  }
485
  }
427
  ->addItem( 0, DataHolders\Series::create( $series ) );
428
  }
429
 
430
+ foreach ( $schedule as $i => $slot ) {
431
  $slot = json_decode( $slot, true );
432
  $start_date = $slot[0][2];
433
  $end_date = Lib\Slots\DatePoint::fromStr( $start_date )->modify( $duration )->format( 'Y-m-d H:i:s' );
479
  $item = DataHolders\Simple::create( $ca )
480
  ->setService( $service )
481
  ->setAppointment( $appointment );
482
+ $orders[ $ca->getCustomerId() ]->getItem( 0 )->addItem( $i, $item );
483
  }
484
  }
485
  }
backend/components/dialogs/appointment/edit/resources/js/ng-appointment.js CHANGED
@@ -35,6 +35,7 @@
35
  date : null,
36
  start_time : null,
37
  end_time : null,
 
38
  repeat : {
39
  enabled : null,
40
  repeat : null,
@@ -228,7 +229,8 @@
228
  ds.form.end_time_data = ds.getDataForEndTime();
229
  var d = ds.form.service ? ds.form.service.duration * ds.form.service.units_min : ds.data.time_interval;
230
  if (d < 86400) {
231
- ds.form.end_time = ds.findTime('end', moment(ds.form.start_time.value, 'HH:mm').add(d, 'seconds').format('HH:mm'));
 
232
  }
233
  },
234
  getStartAndEndDates : function() {
@@ -257,6 +259,7 @@
257
  } else {
258
  start_time = ds.form.start_time.value.split(':');
259
  end_time = ds.form.end_time.value.split(':');
 
260
  }
261
  start_date.hours(start_time[0]);
262
  start_date.minutes(start_time[1]);
@@ -417,6 +420,7 @@
417
  skip_date : start_date === null ? 1 : 0,
418
  end_time : null,
419
  end_time_data : [],
 
420
  repeat : {
421
  enabled : 0,
422
  repeat : 'daily',
@@ -441,10 +445,15 @@
441
  if (start_date !== null) {
442
  $scope.form.date = start_date.clone().local().toDate();
443
  $scope.form.start_time = $scope.dataSource.findTime('start', start_date.format('HH:mm'));
444
- $scope.dataSource.setEndTimeBasedOnService();
445
- $scope.form.end_time = start_date.format('YYYY-MM-DD') == end_date.format('YYYY-MM-DD')
446
- ? $scope.dataSource.findTime('end', end_date.format('HH:mm'))
447
- : $scope.dataSource.findTime('end', (Math.floor((end_date - start_date) / 3600000) + start_date.hour()) + end_date.format(':mm'));
 
 
 
 
 
448
  } else {
449
  $scope.form.date = moment().local().toDate();
450
  $scope.form.start_time = $scope.dataSource.findTime('start', moment().format('HH:mm'));
35
  date : null,
36
  start_time : null,
37
  end_time : null,
38
+ end_date : null,
39
  repeat : {
40
  enabled : null,
41
  repeat : null,
229
  ds.form.end_time_data = ds.getDataForEndTime();
230
  var d = ds.form.service ? ds.form.service.duration * ds.form.service.units_min : ds.data.time_interval;
231
  if (d < 86400) {
232
+ ds.form.end_date = moment(ds.form.start_time.value, 'HH:mm').add(d, 'seconds');
233
+ ds.form.end_time = ds.findTime('end', ds.form.end_date.format('HH:mm'));
234
  }
235
  },
236
  getStartAndEndDates : function() {
259
  } else {
260
  start_time = ds.form.start_time.value.split(':');
261
  end_time = ds.form.end_time.value.split(':');
262
+ end_date = ds.form.end_date;
263
  }
264
  start_date.hours(start_time[0]);
265
  start_date.minutes(start_time[1]);
420
  skip_date : start_date === null ? 1 : 0,
421
  end_time : null,
422
  end_time_data : [],
423
+ end_date : end_date,
424
  repeat : {
425
  enabled : 0,
426
  repeat : 'daily',
445
  if (start_date !== null) {
446
  $scope.form.date = start_date.clone().local().toDate();
447
  $scope.form.start_time = $scope.dataSource.findTime('start', start_date.format('HH:mm'));
448
+ if(response.data.service_id) {
449
+ $scope.dataSource.setEndTimeBasedOnService();
450
+ $scope.form.end_time = start_date.format('YYYY-MM-DD') == end_date.format('YYYY-MM-DD')
451
+ ? $scope.dataSource.findTime('end', end_date.format('HH:mm'))
452
+ : $scope.dataSource.findTime('end', (Math.floor((end_date - start_date) / 3600000) + start_date.hour()) + end_date.format(':mm'));
453
+ } else {
454
+ $scope.form.end_time_data = $scope.dataSource.getDataForEndTime();
455
+ $scope.form.end_time = $scope.dataSource.findTime('end', moment(end_date, 'HH:mm').format('HH:mm'));
456
+ }
457
  } else {
458
  $scope.form.date = moment().local().toDate();
459
  $scope.form.start_time = $scope.dataSource.findTime('start', moment().format('HH:mm'));
backend/modules/appearance/resources/js/appearance.js CHANGED
@@ -297,13 +297,6 @@ jQuery(function($) {
297
  // Show number of persons
298
  $show_nop.on('change', function () {
299
  $('.bookly-js-nop').toggle( this.checked );
300
- if (this.checked) {
301
- $time_step_nop.closest('[data-toggle="popover"]').popover('destroy');
302
- $time_step_nop.prop('disabled', false);
303
- } else {
304
- $time_step_nop.closest('[data-toggle="popover"]').popover();
305
- $time_step_nop.prop('checked', false).prop('disabled', true).trigger('change');
306
- }
307
  }).trigger('change');
308
 
309
  // Show quantity
297
  // Show number of persons
298
  $show_nop.on('change', function () {
299
  $('.bookly-js-nop').toggle( this.checked );
 
 
 
 
 
 
 
300
  }).trigger('change');
301
 
302
  // Show quantity
backend/modules/calendar/Page.php CHANGED
@@ -96,7 +96,8 @@ class Page extends Lib\Base\Ajax
96
  );
97
  }
98
  } else {
99
- $staff_members = array( Lib\Entities\Staff::query()->findOne() );
 
100
  $staff_dropdown_data = array(
101
  0 => array(
102
  'name' => '',
96
  );
97
  }
98
  } else {
99
+ $staff = Lib\Entities\Staff::query()->findOne();
100
+ $staff_members = $staff ? array( $staff ) : array();
101
  $staff_dropdown_data = array(
102
  0 => array(
103
  'name' => '',
backend/modules/payments/templates/index.php CHANGED
@@ -96,8 +96,17 @@ use Bookly\Backend\Modules\Payments\Proxy;
96
  </thead>
97
  <tfoot>
98
  <tr>
99
- <th colspan="7"><div class="pull-right"><?php _e( 'Total', 'bookly' ) ?>:</div></th>
100
- <th colspan="4"><span id="bookly-payment-total"></span></th>
 
 
 
 
 
 
 
 
 
101
  </tr>
102
  </tfoot>
103
  </table>
96
  </thead>
97
  <tfoot>
98
  <tr>
99
+ <th></th>
100
+ <th></th>
101
+ <th></th>
102
+ <th></th>
103
+ <th></th>
104
+ <th></th>
105
+ <th><div class="pull-right"><?php _e( 'Total', 'bookly' ) ?>:</div></th>
106
+ <th><span id="bookly-payment-total"></span></th>
107
+ <th></th>
108
+ <th></th>
109
+ <th></th>
110
  </tr>
111
  </tfoot>
112
  </table>
frontend/modules/booking/Ajax.php CHANGED
@@ -216,7 +216,7 @@ class Ajax extends Lib\Base\Ajax
216
  'data' => $slot->buildSlotData(),
217
  'time_text' => $slot->start()->toClientTz()->formatI18n( $finder->isServiceDurationInDays() ? 'D, M d' : get_option( 'time_format' ) ),
218
  'status' => $slot->waitingListEverStarted() ? 'waiting-list' : ( $slot->fullyBooked() ? 'booked' : '' ),
219
- 'additional_text' => $slot->waitingListEverStarted() ? '(' . $slot->maxOnWaitingList() . ')' : ( Lib\Config::groupBookingActive() && get_option( 'bookly_group_booking_enabled' ) ? Proxy\GroupBooking::getTimeSlotText( $slot ) : '' ),
220
  );
221
  }
222
  }
@@ -286,7 +286,7 @@ class Ajax extends Lib\Base\Ajax
286
  'data' => $slot->buildSlotData(),
287
  'time_text' => $slot->start()->toClientTz()->formatI18n( $finder->isServiceDurationInDays() ? 'D, M d' : get_option( 'time_format' ) ),
288
  'status' => $slot->waitingListEverStarted() ? 'waiting-list' : ( $slot->fullyBooked() ? 'booked' : '' ),
289
- 'additional_text' => $slot->waitingListEverStarted() ? '(' . $slot->maxOnWaitingList() . ')' : ( Lib\Config::groupBookingActive() && get_option( 'bookly_group_booking_enabled' ) ? Proxy\GroupBooking::getTimeSlotText( $slot ) : '' ),
290
  );
291
  }
292
  }
216
  'data' => $slot->buildSlotData(),
217
  'time_text' => $slot->start()->toClientTz()->formatI18n( $finder->isServiceDurationInDays() ? 'D, M d' : get_option( 'time_format' ) ),
218
  'status' => $slot->waitingListEverStarted() ? 'waiting-list' : ( $slot->fullyBooked() ? 'booked' : '' ),
219
+ 'additional_text' => $slot->waitingListEverStarted() ? '(' . $slot->maxOnWaitingList() . ')' : ( Lib\Config::groupBookingActive() ? Proxy\GroupBooking::getTimeSlotText( $slot ) : '' ),
220
  );
221
  }
222
  }
286
  'data' => $slot->buildSlotData(),
287
  'time_text' => $slot->start()->toClientTz()->formatI18n( $finder->isServiceDurationInDays() ? 'D, M d' : get_option( 'time_format' ) ),
288
  'status' => $slot->waitingListEverStarted() ? 'waiting-list' : ( $slot->fullyBooked() ? 'booked' : '' ),
289
+ 'additional_text' => $slot->waitingListEverStarted() ? '(' . $slot->maxOnWaitingList() . ')' : ( Lib\Config::groupBookingActive() ? Proxy\GroupBooking::getTimeSlotText( $slot ) : '' ),
290
  );
291
  }
292
  }
frontend/modules/booking/ShortCode.php CHANGED
@@ -10,9 +10,6 @@ use Bookly\Frontend\Modules\Booking\Lib\Errors;
10
  */
11
  class ShortCode extends Lib\Base\Component
12
  {
13
- /** @var bool Whether inline CSS has already been printed or not */
14
- protected static $css_printed = false;
15
-
16
  /**
17
  * Init component.
18
  */
10
  */
11
  class ShortCode extends Lib\Base\Component
12
  {
 
 
 
13
  /**
14
  * Init component.
15
  */
frontend/modules/booking/templates/short_code.php CHANGED
@@ -6,7 +6,7 @@ Plugin Name: Bookly – Responsive WordPress Appointment Booking and Scheduling
6
  Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
7
  Version: <?php echo Lib\Plugin::getVersion() ?>
8
  -->
9
- <?php if ( ! $self::$css_printed ) : include '_css.php'; $self::$css_printed = true; endif ?>
10
  <div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
11
  <div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
12
  </div>
6
  Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
7
  Version: <?php echo Lib\Plugin::getVersion() ?>
8
  -->
9
+ <?php include '_css.php' ?>
10
  <div id="bookly-form-<?php echo $form_id ?>" class="bookly-form" data-form_id="<?php echo $form_id ?>">
11
  <div style="text-align: center"><img src="<?php echo includes_url( 'js/tinymce/skins/lightgray/img/loader.gif' ) ?>" alt="<?php esc_attr_e( 'Loading...', 'bookly' ) ?>" /></div>
12
  </div>
frontend/resources/js/bookly.js CHANGED
@@ -1839,10 +1839,6 @@
1839
  }
1840
  return;
1841
  }
1842
- if (xhr_render_time != null) {
1843
- xhr_render_time.abort();
1844
- xhr_render_time = null;
1845
- }
1846
  var data = {
1847
  action : 'bookly_render_time',
1848
  csrf_token: BooklyL10n.csrf_token,
@@ -1874,6 +1870,13 @@
1874
  return response;
1875
  }
1876
 
 
 
 
 
 
 
 
1877
  xhr_render_time = $.ajax({
1878
  url : BooklyL10n.ajaxurl,
1879
  data : data,
@@ -1935,6 +1938,7 @@
1935
  opt[params.form_id].timeZone = this.value;
1936
  opt[params.form_id].timeZoneOffset = undefined;
1937
  showSpinner();
 
1938
  stepTime({
1939
  form_id: params.form_id,
1940
  time_zone: opt[params.form_id].timeZone
@@ -1975,6 +1979,7 @@
1975
  $time_next_button.toggle($screens.length != 1);
1976
  } else {
1977
  // Load new data from server.
 
1978
  stepTime({form_id: params.form_id, selected_date : date});
1979
  showSpinner();
1980
  }
@@ -1986,13 +1991,15 @@
1986
  },
1987
  onRender: function() {
1988
  var date = new Date(Date.UTC(this.get('view').year, this.get('view').month));
1989
- $('.picker__nav--next').on('click', function() {
1990
  date.setUTCMonth(date.getUTCMonth() + 1);
 
1991
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
1992
  showSpinner();
1993
  });
1994
- $('.picker__nav--prev').on('click', function() {
1995
  date.setUTCMonth(date.getUTCMonth() - 1);
 
1996
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
1997
  showSpinner();
1998
  });
@@ -2271,7 +2278,12 @@
2271
  });
2272
 
2273
  // On click on a slot.
 
2274
  $('button.bookly-hour', $container).off('click').on('click', function (e) {
 
 
 
 
2275
  e.preventDefault();
2276
  var $this = $(this),
2277
  data = {
@@ -2282,7 +2294,7 @@
2282
  };
2283
  $this.attr({'data-style': 'zoom-in','data-spinner-color':'#333','data-spinner-size':'40'});
2284
  laddaStart(this);
2285
- $.ajax({
2286
  type : 'POST',
2287
  url : BooklyL10n.ajaxurl,
2288
  data : data,
1839
  }
1840
  return;
1841
  }
 
 
 
 
1842
  var data = {
1843
  action : 'bookly_render_time',
1844
  csrf_token: BooklyL10n.csrf_token,
1870
  return response;
1871
  }
1872
 
1873
+ function dropAjax() {
1874
+ if (xhr_render_time != null) {
1875
+ xhr_render_time.abort();
1876
+ xhr_render_time = null;
1877
+ }
1878
+ }
1879
+
1880
  xhr_render_time = $.ajax({
1881
  url : BooklyL10n.ajaxurl,
1882
  data : data,
1938
  opt[params.form_id].timeZone = this.value;
1939
  opt[params.form_id].timeZoneOffset = undefined;
1940
  showSpinner();
1941
+ dropAjax();
1942
  stepTime({
1943
  form_id: params.form_id,
1944
  time_zone: opt[params.form_id].timeZone
1979
  $time_next_button.toggle($screens.length != 1);
1980
  } else {
1981
  // Load new data from server.
1982
+ dropAjax();
1983
  stepTime({form_id: params.form_id, selected_date : date});
1984
  showSpinner();
1985
  }
1991
  },
1992
  onRender: function() {
1993
  var date = new Date(Date.UTC(this.get('view').year, this.get('view').month));
1994
+ $('.picker__nav--next', $container).on('click', function() {
1995
  date.setUTCMonth(date.getUTCMonth() + 1);
1996
+ dropAjax();
1997
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
1998
  showSpinner();
1999
  });
2000
+ $('.picker__nav--prev', $container).on('click', function() {
2001
  date.setUTCMonth(date.getUTCMonth() - 1);
2002
+ dropAjax();
2003
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
2004
  showSpinner();
2005
  });
2278
  });
2279
 
2280
  // On click on a slot.
2281
+ var xhr_session_save = null;
2282
  $('button.bookly-hour', $container).off('click').on('click', function (e) {
2283
+ if ( xhr_session_save != null) {
2284
+ xhr_session_save.abort();
2285
+ xhr_session_save = null;
2286
+ }
2287
  e.preventDefault();
2288
  var $this = $(this),
2289
  data = {
2294
  };
2295
  $this.attr({'data-style': 'zoom-in','data-spinner-color':'#333','data-spinner-size':'40'});
2296
  laddaStart(this);
2297
+ xhr_session_save = $.ajax({
2298
  type : 'POST',
2299
  url : BooklyL10n.ajaxurl,
2300
  data : data,
frontend/resources/js/bookly.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(V){"use strict";V=V&&V.hasOwnProperty("default")?V.default:V;var ee={};function oe(e){var o=Ladda.create(e);return o.start(),o}function te(e){var o=e.offset().top,t=V(window).scrollTop();(o<V(window).scrollTop()||o>t+window.innerHeight)&&V("html,body").animate({scrollTop:o-24},500)}function ae(e){var o=V.extend({action:"bookly_render_complete",csrf_token:BooklyL10n.csrf_token},e),t=ee[e.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:o,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(e.final_step_url&&!o.error?document.location.href=e.final_step_url:(t.html(e.html),te(t)))}})}function se(l){var d=ee[l.form_id].$container;V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_render_payment",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,page_url:document.URL.split("#")[0]},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){if(e.disabled)return void c(l.form_id);d.html(e.html),te(d),"cancelled"==ee[l.form_id].status.booking&&(ee[l.form_id].status.booking="ok");var o=V(".bookly-payment",d),t=V(".bookly-js-apply-coupon",d),a=V("input.bookly-user-coupon",d),s=V(".bookly-js-coupon-error",d),i=V("input[type=radio][name=bookly-full-payment]",d),r=V(".bookly-info-text-coupon",d),n=V(".bookly-gateway-buttons,form.bookly-authorize_net,form.bookly-stripe",d);o.on("click",function(){n.hide(),V(".bookly-gateway-buttons.pay-"+V(this).val(),d).show(),"card"==V(this).val()&&V("form.bookly-"+V(this).data("form"),d).show()}),o.eq(0).trigger("click"),i.on("change",function(){var e={action:"bookly_deposit_payments_apply_payment_method",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,deposit_full:V(this).val()};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&se({form_id:l.form_id})}})}),t.on("click",function(e){var o=oe(this);s.text(""),a.removeClass("bookly-error");var t={action:"bookly_coupons_apply_coupon",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,coupon_code:a.val()};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?se({form_id:l.form_id}):(s.html(ee[l.form_id].errors[e.error]),a.addClass("bookly-error"),r.html(e.text),te(s),o.stop())},error:function(){o.stop()}})}),V(".bookly-js-next-step",d).on("click",function(e){var t,a=oe(this);if(V(".bookly-payment[value=local]",d).is(":checked")||V(this).hasClass("bookly-js-coupon-payment"))e.preventDefault(),c(l.form_id);else if(V(".bookly-payment[value=card]",d).is(":checked")){var o=V(".bookly-payment[data-form=stripe]",d).is(":checked"),s=o?"bookly_stripe_payment":"bookly_authorize_net_aim_payment";t=d.find(o?".bookly-stripe":".bookly-authorize_net"),e.preventDefault();var i={action:s,csrf_token:BooklyL10n.csrf_token,card:{number:t.find('input[name="card_number"]').val(),cvc:t.find('input[name="card_cvc"]').val(),exp_month:t.find('select[name="card_exp_month"]').val(),exp_year:t.find('select[name="card_exp_year"]').val()},form_id:l.form_id},r=function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?ae({form_id:l.form_id}):"cart_item_not_available"==e.error?f(e,l.form_id):"payment_error"==e.error&&(a.stop(),t.find(".bookly-js-card-error").text(e.error_message))}})};if(o&&t.find("#publishable_key").val())try{Stripe.setPublishableKey(t.find("#publishable_key").val()),Stripe.createToken(i.card,function(e,o){o.error?(t.find(".bookly-js-card-error").text(o.error.message),a.stop()):(i.card=o.id,r(i))})}catch(e){t.find(".bookly-js-card-error").text(e.message),a.stop()}else r(i)}else(V(".bookly-payment[value=paypal]",d).is(":checked")||V(".bookly-payment[value=2checkout]",d).is(":checked")||V(".bookly-payment[value=payu_biz]",d).is(":checked")||V(".bookly-payment[value=payu_latam]",d).is(":checked")||V(".bookly-payment[value=payson]",d).is(":checked")||V(".bookly-payment[value=mollie]",d).is(":checked"))&&(e.preventDefault(),0<(t=V(this).closest("form")).find("input.bookly-payment-id").length?V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_pro_save_pending_appointment",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,payment_type:t.data("gateway")},dataType:"json",success:function(e){e.success?(t.find("input.bookly-payment-id").val(e.payment_id),t.submit()):"cart_item_not_available"==e.error&&f(e,l.form_id)}}):V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_check_cart",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id},dataType:"json",success:function(e){e.success?t.submit():"cart_item_not_available"==e.error&&f(e,l.form_id)}}))}),V(".bookly-js-back-step",d).on("click",function(e){e.preventDefault(),oe(this),D({form_id:l.form_id})})}}})}function c(o){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_save_appointment",csrf_token:BooklyL10n.csrf_token,form_id:o},dataType:"json"}).done(function(e){e.success?ae({form_id:o}):"cart_item_not_available"==e.error&&f(e,o)})}function f(e,o){ee[o].skip_steps.cart?ne({form_id:o},ee[o].errors[e.error]):ie({form_id:o},{failed_key:e.failed_cart_key,message:ee[o].errors[e.error]})}function D(W){var e=V.extend({action:"bookly_render_details",csrf_token:BooklyL10n.csrf_token},W),G=ee[W.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){G.html(e.html),te(G);var l=e.intlTelInput,d=e.update_details_dialog,c=e.woocommerce;ee[W.form_id].hasOwnProperty("google_maps")&&ee[W.form_id].google_maps.enabled&&(G||V(".bookly-form .bookly-details-step")).each(function(){!function(t){var e=t.find(".bookly-js-cst-address-autocomplete");if(e.length){var i=new google.maps.places.Autocomplete(e[0],{types:["geocode"]}),o=[{selector:".bookly-js-address-country",val:function(){return a("country")},short:function(){return a("country",!0)}},{selector:".bookly-js-address-postcode",val:function(){return a("postal_code")}},{selector:".bookly-js-address-city",val:function(){return a("locality")}},{selector:".bookly-js-address-state",val:function(){return a("administrative_area_level_1")},short:function(){return a("administrative_area_level_1",!0)}},{selector:".bookly-js-address-street",val:function(){return a("route")}},{selector:".bookly-js-address-street_number",val:function(){return a("street_number")}}],a=function(e,o){for(var t=i.getPlace().address_components,a=0;a<t.length;a++){var s=t[a].types[0];if(s===e)return o?t[a].short_name:t[a].long_name}return""};i.addListener("place_changed",function(){o.forEach(function(e){var o=t.find(e.selector);0!==o.length&&(o.val(e.val()),"function"==typeof e.short&&o.data("short",e.short()))})})}}(V(this))}),V(document.body).trigger("bookly.render.step_detail",[G]);var f="",t=V(".bookly-js-guest",G),m=V(".bookly-js-user-phone-input",G),y=V(".bookly-js-user-email",G),u=V(".bookly-js-user-email-confirm",G),_=V(".bookly-js-select-birthday-day",G),k=V(".bookly-js-select-birthday-month",G),p=V(".bookly-js-select-birthday-year",G),h=V(".bookly-js-address-country",G),b=V(".bookly-js-address-state",G),v=V(".bookly-js-address-postcode",G),j=V(".bookly-js-address-city",G),g=V(".bookly-js-address-street",G),w=V(".bookly-js-address-street_number",G),x=V(".bookly-js-address-additional_address",G),C=V(".bookly-js-address-country-error",G),L=V(".bookly-js-address-state-error",G),B=V(".bookly-js-address-postcode-error",G),T=V(".bookly-js-address-city-error",G),D=V(".bookly-js-address-street-error",G),S=V(".bookly-js-address-street_number-error",G),O=V(".bookly-js-address-additional_address-error",G),M=V(".bookly-js-select-birthday-day-error",G),q=V(".bookly-js-select-birthday-month-error",G),P=V(".bookly-js-select-birthday-year-error",G),F=V(".bookly-js-full-name",G),E=V(".bookly-js-first-name",G),R=V(".bookly-js-last-name",G),H=V(".bookly-js-user-notes",G),o=V(".bookly-custom-field",G),a=V(".bookly-js-info-field",G),X=V(".bookly-js-user-phone-error",G),I=V(".bookly-js-user-email-error",G),z=V(".bookly-js-user-email-confirm-error",G),N=V(".bookly-js-full-name-error",G),Y=V(".bookly-js-first-name-error",G),Z=V(".bookly-js-last-name-error",G),s=V(".bookly-js-captcha-img",G),i=V(".bookly-custom-field-error",G),r=V(".bookly-js-info-field-error",G),n=V(".bookly-js-modal",G),J=V(".bookly-js-login",G),$=V(".bookly-js-cst-duplicate",G),A=V(".bookly-js-next-step",G),U=V([M,q,P,C,L,B,T,D,S,O,N,Y,Z,X,I,z,i,r]).map(V.fn.toArray),K=V([_,k,p,j,h,v,b,g,w,x,F,E,R,m,y,u,o,a]).map(V.fn.toArray),Q=function(e){if(F.val(e.data.full_name).removeClass("bookly-error"),E.val(e.data.first_name).removeClass("bookly-error"),R.val(e.data.last_name).removeClass("bookly-error"),e.data.birthday){var o=e.data.birthday.split("-"),t=parseInt(o[0]),a=parseInt(o[1]),s=parseInt(o[2]);_.val(s).removeClass("bookly-error"),k.val(a).removeClass("bookly-error"),p.val(t).removeClass("bookly-error")}e.data.phone&&(m.removeClass("bookly-error"),l.enabled?m.intlTelInput("setNumber",e.data.phone):m.val(e.data.phone)),e.data.country&&h.val(e.data.country).removeClass("bookly-error"),e.data.state&&b.val(e.data.state).removeClass("bookly-error"),e.data.postcode&&v.val(e.data.postcode).removeClass("bookly-error"),e.data.city&&j.val(e.data.city).removeClass("bookly-error"),e.data.street&&g.val(e.data.street).removeClass("bookly-error"),e.data.street_number&&w.val(e.data.street_number).removeClass("bookly-error"),e.data.additional_address&&x.val(e.data.additional_address).removeClass("bookly-error"),y.val(e.data.email).removeClass("bookly-error"),e.data.info_fields&&e.data.info_fields.forEach(function(e){var o=G.find('.bookly-js-info-field-row[data-id="'+e.id+'"]');switch(o.data("type")){case"checkboxes":e.value.forEach(function(e){o.find(".bookly-js-info-field").filter(function(){return this.value==e}).prop("checked",!0)});break;case"radio-buttons":o.find(".bookly-js-info-field").filter(function(){return this.value==e.value}).prop("checked",!0);break;default:o.find(".bookly-js-info-field").val(e.value)}}),U.filter(":not(.bookly-custom-field-error)").html("")};l.enabled&&m.intlTelInput({preferredCountries:[l.country],initialCountry:l.country,geoIpLookup:function(t){V.get("https://ipinfo.io",function(){},"jsonp").always(function(e){var o=e&&e.country?e.country:"";t(o)})},utilsScript:l.utils}),V("body > .bookly-js-modal."+W.form_id).remove(),n.addClass(W.form_id).appendTo("body").on("click",".bookly-js-close",function(e){e.preventDefault(),V(e.delegateTarget).removeClass("bookly-in").find("form").trigger("reset").end().find("input").removeClass("bookly-error").end().find(".bookly-label-error").html("")}),V(".bookly-js-login-show",G).on("click",function(e){e.preventDefault(),J.addClass("bookly-in")}),V("button:submit",J).on("click",function(e){e.preventDefault();var o=Ladda.create(this);o.start(),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_wp_user_login",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id,log:J.find('[name="log"]').val(),pwd:J.find('[name="pwd"]').val(),rememberme:J.find('[name="rememberme"]').prop("checked")?1:0},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?(BooklyL10n.csrf_token=e.data.csrf_token,t.fadeOut("slow"),Q(e),J.removeClass("bookly-in")):"incorrect_username_password"==e.error&&(J.find("input").addClass("bookly-error"),J.find(".bookly-label-error").html(ee[W.form_id].errors[e.error])),o.stop()}})}),V("button:submit",$).on("click",function(e){e.preventDefault(),$.removeClass("bookly-in"),A.trigger("click",[1])}),ee[W.form_id].hasOwnProperty("facebook")&&ee[W.form_id].facebook.enabled&&(FB.XFBML.parse(V(".bookly-js-fb-login-button",G).parent().get(0)),ee[W.form_id].facebook.onStatusChange=function(e){"connected"===e.status&&(ee[W.form_id].facebook.enabled=!1,ee[W.form_id].facebook.onStatusChange=void 0,t.fadeOut("slow",function(){V(".bookly-js-fb-login-button").hide()}),FB.api("/me",{fields:"id,name,first_name,last_name,email"},function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:V.extend(e,{action:"bookly_pro_facebook_login",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id}),dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&Q(e)}})}))}),A.on("click",function(e,o){e.preventDefault();var a,t=[],s={},i=[],r=oe(this);V("div.bookly-js-info-field-row",G).each(function(){var e=V(this);switch(e.data("type")){case"text-field":t.push({id:e.data("id"),value:e.find("input.bookly-js-info-field").val()});break;case"textarea":t.push({id:e.data("id"),value:e.find("textarea.bookly-js-info-field").val()});break;case"checkboxes":a=[],e.find("input.bookly-js-info-field:checked").each(function(){a.push(this.value)}),t.push({id:e.data("id"),value:a});break;case"radio-buttons":t.push({id:e.data("id"),value:e.find("input.bookly-js-info-field:checked").val()||null});break;case"drop-down":t.push({id:e.data("id"),value:e.find("select.bookly-js-info-field").val()})}}),V(".bookly-custom-fields-container",G).each(function(){var e=V(this),o=e.data("key"),t=[];V("div.bookly-custom-field-row",e).each(function(){var e=V(this);switch(e.data("type")){case"text-field":case"file":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field").val()});break;case"textarea":t.push({id:e.data("id"),value:e.find("textarea.bookly-custom-field").val()});break;case"checkboxes":a=[],e.find("input.bookly-custom-field:checked").each(function(){a.push(this.value)}),t.push({id:e.data("id"),value:a});break;case"radio-buttons":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field:checked").val()||null});break;case"drop-down":t.push({id:e.data("id"),value:e.find("select.bookly-custom-field").val()});break;case"captcha":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field").val()}),i.push(e.data("id"))}}),s[o]={custom_fields:JSON.stringify(t)}});try{""==(f=l.enabled?m.intlTelInput("getNumber"):m.val())&&(f=m.val())}catch(e){f=m.val()}var n={action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id,full_name:F.val(),first_name:E.val(),last_name:R.val(),phone:f,email:y.val(),email_confirm:u.val(),birthday:{day:_.val(),month:k.val(),year:p.val()},country:h.val(),state:b.val(),postcode:v.val(),city:j.val(),street:g.val(),street_number:w.val(),additional_address:x.val(),address_iso:{country:h.data("short"),state:b.data("short")},info_fields:t,notes:H.val(),cart:s,captcha_ids:JSON.stringify(i),force_update_customer:!d||o};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:n,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(o){if(U.empty(),K.removeClass("bookly-error"),o.success)if(c.enabled){var e={action:"bookly_pro_add_to_woocommerce_cart",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?window.location.href=c.cart_url:(r.stop(),ne({form_id:W.form_id},ee[W.form_id].errors[e.error]))}})}else se({form_id:W.form_id});else{var i=null;if(o.appointments_limit_reached)ae({form_id:W.form_id,error:"appointments_limit_reached"});else{r.stop();[{name:"full_name",errorElement:N,formElement:F},{name:"first_name",errorElement:Y,formElement:E},{name:"last_name",errorElement:Z,formElement:R},{name:"phone",errorElement:X,formElement:m},{name:"email",errorElement:I,formElement:y},{name:"email_confirm",errorElement:z,formElement:u},{name:"birthday_day",errorElement:M,formElement:_},{name:"birthday_month",errorElement:q,formElement:k},{name:"birthday_year",errorElement:P,formElement:p},{name:"country",errorElement:C,formElement:h},{name:"state",errorElement:L,formElement:b},{name:"postcode",errorElement:B,formElement:v},{name:"city",errorElement:T,formElement:j},{name:"street",errorElement:D,formElement:g},{name:"street_number",errorElement:S,formElement:w},{name:"additional_address",errorElement:O,formElement:x}].forEach(function(e){o[e.name]&&(e.errorElement.html(o[e.name]),e.formElement.addClass("bookly-error"),null===i&&(i=e.formElement))}),o.info_fields&&V.each(o.info_fields,function(e,o){var t=V('div.bookly-js-info-field-row[data-id="'+e+'"]',G);t.find(".bookly-js-info-field-error").html(o),t.find(".bookly-js-info-field").addClass("bookly-error"),null===i&&(i=t.find(".bookly-js-info-field"))}),o.custom_fields&&V.each(o.custom_fields,function(s,e){V.each(e,function(e,o){var t=V('.bookly-custom-fields-container[data-key="'+s+'"]',G),a=V('[data-id="'+e+'"]',t);a.find(".bookly-custom-field-error").html(o),a.find(".bookly-custom-field").addClass("bookly-error"),null===i&&(i=a.find(".bookly-custom-field"))})}),o.customer&&$.find(".bookly-js-modal-body").html(o.customer).end().addClass("bookly-in")}null!==i&&te(i)}}})}),V(".bookly-js-back-step",G).on("click",function(e){e.preventDefault(),oe(this),ee[W.form_id].skip_steps.cart?ee[W.form_id].no_time?ee[W.form_id].no_extras?de({form_id:W.form_id}):le({form_id:W.form_id}):ee[W.form_id].skip_steps.repeat?ee[W.form_id].skip_steps.extras||"after_step_time"!=ee[W.form_id].step_extras||ee[W.form_id].no_extras?ne({form_id:W.form_id}):le({form_id:W.form_id}):re({form_id:W.form_id}):ie({form_id:W.form_id})}),V(".bookly-js-captcha-refresh",G).on("click",function(){s.css("opacity","0.5"),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_custom_fields_captcha_refresh",form_id:W.form_id,csrf_token:BooklyL10n.csrf_token},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&s.attr("src",e.data.captcha_url).on("load",function(){s.css("opacity","1")})}})})}}})}function ie(o,t){if(ee[o.form_id].skip_steps.cart)D(o);else{o&&o.from_step&&(ee[o.form_id].cart_prev_step=o.from_step);var e=V.extend({action:"bookly_render_cart",csrf_token:BooklyL10n.csrf_token},o),s=ee[o.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(s.html(e.html),t?(V(".bookly-label-error",s).html(t.message),V('tr[data-cart-key="'+t.failed_key+'"]',s).addClass("bookly-label-error")):V(".bookly-label-error",s).hide(),te(s),V(".bookly-js-next-step",s).on("click",function(){oe(this),D({form_id:o.form_id})}),V(".bookly-add-item",s).on("click",function(){oe(this),de({form_id:o.form_id,new_chain:!0})}),V(".bookly-js-back-step",s).on("click",function(e){switch(e.preventDefault(),oe(this),ee[o.form_id].cart_prev_step){case"service":de({form_id:o.form_id});break;case"extras":le({form_id:o.form_id});break;case"time":ne({form_id:o.form_id});break;case"repeat":re({form_id:o.form_id});break;default:de({form_id:o.form_id})}}),V(".bookly-js-actions button",s).on("click",function(){oe(this);var e=V(this),a=e.closest("tr");switch(e.data("action")){case"drop":V.ajax({url:BooklyL10n.ajaxurl,data:{action:"bookly_cart_drop_item",csrf_token:BooklyL10n.csrf_token,form_id:o.form_id,cart_key:a.data("cart-key")},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){var o=a.data("cart-key"),t=V('tr[data-cart-key="'+o+'"]',s);a.delay(300).fadeOut(200,function(){e.data.total_waiting_list?(V(".bookly-js-waiting-list-price",s).html(e.data.waiting_list_price),V(".bookly-js-waiting-list-deposit",s).html(e.data.waiting_list_deposit)):V(".bookly-js-waiting-list-price",s).closest("tr").remove(),V(".bookly-js-subtotal-price",s).html(e.data.subtotal_price),V(".bookly-js-subtotal-deposit",s).html(e.data.subtotal_deposit),V(".bookly-js-pay-now-deposit",s).html(e.data.pay_now_deposit),V(".bookly-js-pay-now-tax",s).html(e.data.pay_now_tax),V(".bookly-js-total-price",s).html(e.data.total_price),V(".bookly-js-total-tax",s).html(e.data.total_tax),t.remove(),0==V("tr[data-cart-key]").length&&(V(".bookly-js-back-step",s).hide(),V(".bookly-js-next-step",s).hide())})}}});break;case"edit":de({form_id:o.form_id,edit_cart_item:a.data("cart-key")})}}))}})}}function re(M,e){if(ee[M.form_id].skip_steps.repeat)ie(M,e);else{var o=V.extend({action:"bookly_render_repeat",csrf_token:BooklyL10n.csrf_token},M),q=ee[M.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:o,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){q.html(e.html),te(q);var o=V(".bookly-js-repeat-appointment-enabled",q),f=V(".bookly-js-next-step",q),t=V(".bookly-js-repeat-variants-container",q),a=V('[class^="bookly-js-variant"]',t),s=V(".bookly-js-repeat-variant",t),i=V(".bookly-js-get-schedule",t),r=V(".bookly-js-variant-weekly",t),n=V(".bookly-js-repeat-variant-monthly",t),l=V(".bookly-js-repeat-until",t),d=V(".bookly-js-repeat-times",t),c=V(".bookly-js-monthly-specific-day",t),m=V(".bookly-js-monthly-week-day",t),y=V(".bookly-js-repeat-daily-every",t),u=V(".bookly-js-week-day",t),_=V(".bookly-js-schedule-container",q),k=V(".bookly-js-days-error",t),p=V(".bookly-js-schedule-slots",_),h=V(".bookly-js-intersection-info",_),b=V(".bookly-js-schedule-help",_),v=V(".bookly-well",_),j=V(".bookly-pagination",_),g=V(".bookly-schedule-row-template .bookly-schedule-row",_),w=e.pages_warning_info,x=e.short_date_format,C={min:e.date_min||!0,max:e.date_max||!0},L=[],B={prepareButtonNextState:function(){for(var e=f.prop("disabled"),o=0==L.length,t=0;t<L.length;t++)if(e){if(!L[t].deleted){o=!1;break}}else{if(!L[t].deleted){o=!1;break}o=!0}f.prop("disabled",o)},addTimeSlotControl:function(e,o,a,s){var i,r="";o.length&&(r=V("<select/>"),V.each(o,function(e,o){var t=V("<option/>");t.text(o.title).val(o.value),o.disabled&&t.attr("disabled","disabled"),r.append(t),i||o.disabled||(o.title==a?(r.val(o.value),i=!0):o.title==s&&r.val(o.value))}));e.find(".bookly-js-schedule-time").html(r),e.find("div.bookly-label-error").toggle(!o.length)},renderSchedulePage:function(e){var o,t=L.length,a=5*e-5,s=[];p.html("");for(var i=a,r=0;r<5&&i<t;i++,r++)(o=g.clone()).data("datetime",L[i].datetime),o.data("index",L[i].index),V("> div:first-child",o).html(L[i].index),V(".bookly-schedule-date",o).html(L[i].display_date),void 0!==L[i].all_day_service_time?(V(".bookly-js-schedule-time",o).hide(),V(".bookly-js-schedule-all-day-time",o).html(L[i].all_day_service_time).show()):(V(".bookly-js-schedule-time",o).html(L[i].display_time).show(),V(".bookly-js-schedule-all-day-time",o).hide()),L[i].another_time&&V(".bookly-schedule-intersect",o).show(),L[i].deleted&&o.find(".bookly-schedule-appointment").addClass("bookly-appointment-hidden"),p.append(o);if(5<t){var n=V("<li/>").html("«");for(n.on("click",function(){var e=parseInt(j.find(".active").html());1<e&&B.renderSchedulePage(e-1)}),j.html(n),i=0,r=1;i<t;i+=5,r++)n=V("<li/>").html(r),j.append(n),n.on("click",function(){B.renderSchedulePage(V(this).html())});for(j.find("li:eq("+e+")").addClass("active"),(n=V("<li/>").html("»")).on("click",function(){var e=parseInt(j.find(".active").html());e<t/5&&B.renderSchedulePage(e+1)}),j.append(n).show(),i=0;i<t;i++)L[i].another_time&&(e=parseInt(i/5)+1,s.push(e),i=5*e-1);0<s.length&&h.html(w.replace("{list}",s.join(", "))),v.toggle(0<s.length),j.toggle(5<t)}else for(j.hide(),v.hide(),i=0;i<t;i++)if(L[i].another_time){b.show();break}},renderFullSchedule:function(e){L=e;var c=null;V.each(L,function(e,o){c||o.another_time||(c=o.display_time)}),B.renderSchedulePage(1),_.show(),f.prop("disabled",0==L.length),p.on("click","button[data-action]",function(){var o=V(this).closest(".bookly-schedule-row"),a=o.data("index")-1;switch(V(this).data("action")){case"drop":L[a].deleted=!0,o.find(".bookly-schedule-appointment").addClass("bookly-appointment-hidden"),B.prepareButtonNextState();break;case"restore":L[a].deleted=!1,o.find(".bookly-schedule-appointment").removeClass("bookly-appointment-hidden"),f.prop("disabled",!1);break;case"edit":var e=V('<input type="text"/>'),s=V(this),i=oe(this);o.find(".bookly-schedule-date").html(e),e.pickadate({min:C.min,max:C.max,formatSubmit:"yyyy-mm-dd",format:x,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[M.form_id].start_of_week,onSet:function(){var t=[];V.each(L,function(e,o){a==e||o.deleted||t.push(o.slots)}),V.ajax({url:BooklyL10n.ajaxurl,type:"POST",data:{action:"bookly_recurring_appointments_get_daily_customer_schedule",csrf_token:BooklyL10n.csrf_token,date:this.get("select","yyyy-mm-dd"),form_id:M.form_id,exclude:t},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){s.hide(),i.stop(),e.data.length?(B.addTimeSlotControl(o,e.data[0].options,c,L[a].display_time,e.data[0].all_day_service_time),o.find('button[data-action="save"]').show()):(B.addTimeSlotControl(o,[]),o.find('button[data-action="save"]').hide())}})}});var t=JSON.parse(L[a].slots);e.pickadate("picker").set("select",new Date(t[0][2]));break;case"save":V(this).hide(),o.find('button[data-action="edit"]').show();var r=o.find(".bookly-schedule-date"),n=o.find(".bookly-js-schedule-time"),l=n.find("select"),d=l.find("option:selected");L[a].slots=l.val(),L[a].display_date=r.find("input").val(),L[a].display_time=d.text(),r.html(L[a].display_date),n.html(L[a].display_time)}})},isDateMatchesSelections:function(e){switch(s.val()){case"daily":if((6<y.val()||-1!=V.inArray(e.format("ddd").toLowerCase(),B.week_days))&&e.diff(B.date_from,"days")%y.val()==0)return!0;break;case"weekly":case"biweekly":if(("weekly"==s.val()||e.diff(B.date_from.clone().startOf("isoWeek"),"weeks")%2==0)&&-1!=V.inArray(e.format("ddd").toLowerCase(),B.checked_week_days))return!0;break;case"monthly":switch(n.val()){case"specific":if(e.format("D")==c.val())return!0;break;case"last":if(e.format("ddd").toLowerCase()==m.val()&&e.clone().endOf("month").diff(e,"days")<7)return!0;break;default:var o=e.diff(e.clone().startOf("month"),"days");if(e.format("ddd").toLowerCase()==m.val()&&o>=7*(n.prop("selectedIndex")-1)&&o<7*n.prop("selectedIndex"))return!0}}return!1},updateRepeatDate:function(){var e=0,o=d.val(),t=C.min.slice(),a=l.pickadate("picker").get("select"),s=moment().year(a.year).month(a.month).date(a.date).add(5,"years");t[1]++,B.date_from=moment(t.join(","),"YYYY,M,D"),B.week_days=[],m.find("option").each(function(){B.week_days.push(V(this).val())}),B.checked_week_days=[],u.each(function(){V(this).prop("checked")&&B.checked_week_days.push(V(this).val())});for(var i=B.date_from.clone();B.isDateMatchesSelections(i)&&e++,i.add(1,"days"),e<o&&i.isBefore(s););l.val(i.subtract(1,"days").format("MMMM D, YYYY")),l.pickadate("picker").set("select",new Date(i.format("YYYY"),i.format("M")-1,i.format("D")))},updateRepeatTimes:function(){var e=0,o=C.min.slice(),t=l.pickadate("picker").get("select"),a=moment().year(t.year).month(t.month).date(t.date);o[1]++,B.date_from=moment(o.join(","),"YYYY,M,D"),B.week_days=[],m.find("option").each(function(){B.week_days.push(V(this).val())}),B.checked_week_days=[],u.each(function(){V(this).prop("checked")&&B.checked_week_days.push(V(this).val())});for(var s=B.date_from.clone();B.isDateMatchesSelections(s)&&e++,s.add(1,"days"),s.isBefore(a););d.val(e)}};l.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[M.form_id].date_format,min:C.min,max:C.max,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[M.form_id].start_of_week});var T=o.on("change",function(){t.toggle(V(this).prop("checked")),V(this).prop("checked")?B.prepareButtonNextState():f.prop("disabled",!1)});if(e.repeated){var D=e.repeat_data,S=D.params;o.prop("checked",!0),s.val(D.repeat);var O=D.until.split("-");switch(l.pickadate("set").set("select",new Date(O[0],O[1]-1,O[2])),D.repeat){case"daily":y.val(S.every);break;case"weekly":case"biweekly":V(".bookly-js-week-days input.bookly-js-week-day",t).prop("checked",!1).parent().removeClass("active"),S.on.forEach(function(e){V(".bookly-js-week-days input.bookly-js-week-day[value="+e+"]",t).prop("checked",!0).parent().addClass("active")});break;case"monthly":"day"===S.on?(n.val("specific"),V(".bookly-js-monthly-specific-day[value="+S.day+"]",t).prop("checked",!0)):(n.val(S.on),m.val(S.weekday))}B.renderFullSchedule(e.schedule)}T.trigger("change"),e.could_be_repeated||o.attr("disabled",!0),s.on("change",function(){a.hide(),t.find(".bookly-js-variant-"+this.value).show(),B.updateRepeatTimes()}).trigger("change"),n.on("change",function(){m.toggle("specific"!=this.value),c.toggle("specific"==this.value),B.updateRepeatTimes()}).trigger("change"),u.on("change",function(){var e=V(this);e.is(":checked")?e.parent().not("[class*='active']").addClass("active"):e.parent().removeClass("active"),B.updateRepeatTimes()}),c.val(e.date_min[2]),c.on("change",function(){B.updateRepeatTimes()}),m.on("change",function(){B.updateRepeatTimes()}),l.on("change",function(){B.updateRepeatTimes()}),y.on("change",function(){B.updateRepeatTimes()}),d.on("change",function(){B.updateRepeatDate()}),i.on("click",function(){_.hide();var e={action:"bookly_recurring_appointments_get_customer_schedule",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,repeat:s.val(),until:l.pickadate("picker").get("select","yyyy-mm-dd"),params:{}},o=oe(this);switch(e.repeat){case"daily":e.params={every:y.val()};break;case"weekly":case"biweekly":if(e.params.on=[],V(".bookly-js-week-days input.bookly-js-week-day:checked",r).each(function(){e.params.on.push(this.value)}),0==e.params.on.length)return k.toggle(!0),o.stop(),!1;k.toggle(!1);break;case"monthly":"specific"==n.val()?e.params={on:"day",day:c.val()}:e.params={on:n.val(),weekday:m.val()}}p.off("click"),V.ajax({url:BooklyL10n.ajaxurl,type:"POST",data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(B.renderFullSchedule(e.data),o.stop())}})}),V(".bookly-js-back-step",q).on("click",function(e){e.preventDefault(),oe(this),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,unrepeat:1},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[M.form_id].skip_steps.extras||"after_step_time"!=ee[M.form_id].step_extras||ee[M.form_id].no_extras?ne({form_id:M.form_id}):le({form_id:M.form_id})}})}),V(".bookly-js-go-to-cart",q).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:M.form_id,from_step:"repeat"})}),V(".bookly-js-next-step",q).on("click",function(e){if(oe(this),o.is(":checked")){var t=[],a=0;L.forEach(function(e){if(!e.deleted){var o=JSON.parse(e.slots);t=t.concat(o),a++}}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,slots:JSON.stringify(t),repeat:a},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ie({form_id:M.form_id,add_to_cart:!0,from_step:"repeat"})}})}else V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,unrepeat:1},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ie({form_id:M.form_id,add_to_cart:!0,from_step:"repeat"})}})})}}})}}var o=null;function ne(C,L){if(ee[C.form_id].no_time||ee[C.form_id].skip_steps.time)ee[C.form_id].skip_steps.extras||"after_step_time"!=ee[C.form_id].step_extras||ee[C.form_id].no_extras?ee[C.form_id].skip_steps.cart?D({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:C&&C.prev_step?C.prev_step:"service"}):le({form_id:C.form_id});else{null!=o&&(o.abort(),o=null);var e={action:"bookly_render_time",csrf_token:BooklyL10n.csrf_token},B=ee[C.form_id].$container;ee[C.form_id].skip_steps.service&&ee[C.form_id].use_client_time_zone&&(e.time_zone=ee[C.form_id].timeZone,e.time_zone_offset=ee[C.form_id].timeZoneOffset),V.extend(e,C),o=V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(0!=e.success){BooklyL10n.csrf_token=e.csrf_token,B.html(e.html);var f,m,y,u=V(".bookly-columnizer-wrap",B),_=V(".bookly-columnizer",u),i=V(".bookly-time-next",B),a=V(".bookly-time-prev",B),k=null,p=e.time_slots_wide?205:127,h=e.time_slots_wide?"bookly-column bookly-column-wide":"bookly-column",b=0,r=0,v=e.has_more_slots,j=!1,o=e.show_calendar,n=e.is_rtl,g=e.day_one_column,t=T(e.slots_data,e.selected_date);if(V(".bookly-js-back-step",B).on("click",function(e){e.preventDefault(),oe(this),ee[C.form_id].skip_steps.extras||ee[C.form_id].no_extras?de({form_id:C.form_id}):"before_step_time"==ee[C.form_id].step_extras?le({form_id:C.form_id}):de({form_id:C.form_id})}).toggle(!ee[C.form_id].skip_steps.service||!ee[C.form_id].skip_steps.extras),V(".bookly-js-go-to-cart",B).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:C.form_id,from_step:"time"})}),V(".bookly-js-time-zone-switcher",B).on("change",function(e){ee[C.form_id].timeZone=this.value,ee[C.form_id].timeZoneOffset=void 0,w(),ne({form_id:C.form_id,time_zone:ee[C.form_id].timeZone})}),o){var s=V(".bookly-js-selected-date",B);s.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[C.form_id].date_format,min:e.date_min||!0,max:e.date_max||!0,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,monthsFull:BooklyL10n.months,firstDay:ee[C.form_id].start_of_week,clear:!1,close:!1,today:!1,disable:e.disabled_days,closeOnSelect:!1,klass:{picker:"picker picker--opened picker--focused"},onSet:function(e){if(e.select){var o=this.get("select","yyyy-mm-dd");t[o]?(_.html(t[o]).css("left","0px"),r=b=0,k=null,x(),a.hide(),i.toggle(1!=f.length)):(ne({form_id:C.form_id,selected_date:o}),w())}this.open()},onClose:function(){this.open(!1)},onRender:function(){var e=new Date(Date.UTC(this.get("view").year,this.get("view").month));V(".picker__nav--next").on("click",function(){e.setUTCMonth(e.getUTCMonth()+1),ne({form_id:C.form_id,selected_date:e.toJSON().substr(0,10)}),w()}),V(".picker__nav--prev").on("click",function(){e.setUTCMonth(e.getUTCMonth()-1),ne({form_id:C.form_id,selected_date:e.toJSON().substr(0,10)}),w()})}});var l=s.pickadate("picker").get("select","yyyy-mm-dd");_.html(t[l])}else{var d="";V.each(t,function(e,o){d+=o}),_.html(d)}if(e.has_slots){L?B.find(".bookly-label-error").html(L):B.find(".bookly-label-error").hide(),(m=parseInt(V(window).height()/36,10))<4?m=4:10<m&&(m=10),10<(y=parseInt(u.width()/p,10))?y=10:0==y&&(j=!0,y=4),x(),v||1!=f.length||i.hide();var c=V(".bookly-time-step",B).hammer({swipe_velocity:.1});c.on("swipeleft",function(){i.is(":visible")&&i.trigger("click")}),c.on("swiperight",function(){a.is(":visible")&&a.trigger("click")}),i.on("click",function(e){if(a.show(),f.eq(r+1).length)_.animate({left:(n?"+":"-")+(r+1)*k.width()},{duration:800}),k=f.eq(++r),u.animate({height:k.height()},{duration:800}),r+1!=f.length||v||i.hide();else if(v){var o=V("> button:last",_);0==o.length&&0==(o=V(".bookly-column:hidden:last > button:last",_)).length&&(o=V(".bookly-column:last > button:last",_));var t={action:"bookly_render_next_time",csrf_token:BooklyL10n.csrf_token,form_id:C.form_id,last_slot:o.val()},s=oe(this);V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success)if(e.has_slots){v=e.has_more_slots;var t="";V.each(T(e.slots_data,e.selected_date),function(e,o){t+=o});var o=V(t),a=o.eq(0);V('button.bookly-day[value="'+a.attr("value")+'"]',B).length&&(o=o.not(":first")),_.append(o),x(),i.trigger("click")}else i.hide();else i.hide();s.stop()}})}}),a.on("click",function(){i.show(),k=f.eq(--r),_.animate({left:(n?"+":"-")+r*k.width()},{duration:800}),u.animate({height:k.height()},{duration:800}),0===r&&a.hide()})}void 0===C&&te(B)}else de({form_id:C.form_id});function w(){V(".bookly-time-screen,.bookly-not-time-screen",B).addClass("bookly-spin-overlay");var e={lines:11,length:11,width:4,radius:5};f?new Spinner(e).spin(f.eq(r).get(0)):new Spinner(e).spin(V(".bookly-not-time-screen",B).get(0))}function x(){var e,o,t,a=V("> button",_),s=0,i=0;if(g)for(;0<a.length;)a.eq(0).hasClass("bookly-day")?(s=1,o=V('<div class="'+h+'" />'),(e=V(a.splice(0,1))).addClass("bookly-js-first-child"),o.append(e)):(s++,e=V(a.splice(0,1)),!a.length||a.eq(0).hasClass("bookly-day")?(e.addClass("bookly-last-child"),o.append(e),_.append(o)):o.append(e)),i<s&&(i=s);else for(;v?a.length>m:a.length;){o=V('<div class="'+h+'" />'),i=m,b%y!=0||a.eq(0).hasClass("bookly-day")||--i;for(var r=0;r<i&&(r+1!=i||!a.eq(0).hasClass("bookly-day"));++r)e=V(a.splice(0,1)),0==r?e.addClass("bookly-js-first-child"):r+1==i&&e.addClass("bookly-last-child"),o.append(e);_.append(o),++b}for(var n=V("> .bookly-column",_);v?n.length>=y:n.length;){t=V('<div class="bookly-time-screen"/>');for(r=0;r<y;++r){if(o=V(n.splice(0,1)),0==r){o.addClass("bookly-js-first-column");var l=o.find(".bookly-js-first-child");if(!l.hasClass("bookly-day")){var d=l.data("group"),c=V('button.bookly-day[value="'+d+'"]:last',B);o.prepend(c.clone())}}t.append(o)}_.append(t)}f=V(".bookly-time-screen",_),null===k&&(k=f.eq(0)),V("button.bookly-time-skip",B).off("click").on("click",function(e){oe(this),ee[C.form_id].skip_steps.cart?D({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:"time"})}),V("button.bookly-hour",B).off("click").on("click",function(e){e.preventDefault();var o=V(this),t={action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:C.form_id,slots:this.value};o.attr({"data-style":"zoom-in","data-spinner-color":"#333","data-spinner-size":"40"}),oe(this),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[C.form_id].skip_steps.extras||"after_step_time"!=ee[C.form_id].step_extras||ee[C.form_id].no_extras?ee[C.form_id].skip_steps.repeat?ee[C.form_id].skip_steps.cart?D({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:"time"}):re({form_id:C.form_id}):le({form_id:C.form_id})}})}),V(".bookly-time-step",B).width(y*p),u.height(j?39*V(".bookly-column.bookly-js-first-column button",k).length:k.height()),j=!1}}})}function T(e,s){var o={};return V.each(e,function(t,e){var a='<button class="bookly-day" value="'+t+'">'+e.title+"</button>";V.each(e.slots,function(e,o){a+='<button value="'+JSON.stringify(o.data).replace(/"/g,"&quot;")+'" data-group="'+t+'" class="bookly-hour'+("waiting-list"==o.status?" bookly-slot-in-waiting-list":"booked"==o.status?" booked":"")+'"'+("booked"==o.status?" disabled":"")+'><span class="ladda-label bookly-time-main'+(o.data[0][2]==s?" bookly-bold":"")+'"><i class="bookly-hour-icon"><span></span></i>'+o.time_text+'</span><span class="bookly-time-additional'+("waiting-list"==o.status?" bookly-waiting-list":"")+'"> '+o.additional_text+"</span></button>"}),o[t]=a}),o}}function le(c){var e={action:"bookly_render_extras",csrf_token:BooklyL10n.csrf_token},f=ee[c.form_id].$container;ee[c.form_id].skip_steps.service&&ee[c.form_id].use_client_time_zone&&(e.time_zone=ee[c.form_id].timeZone,e.time_zone_offset=ee[c.form_id].timeZoneOffset),V.extend(e,c),V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){BooklyL10n.csrf_token=e.csrf_token,f.html(e.html),void 0===c&&te(f);var s,i,o=V(".bookly-js-next-step",f),t=V(".bookly-js-back-step",f),a=V(".bookly-js-go-to-cart",f),r=V(".bookly-js-extras-item",f),n=V(".bookly-js-extras-summary span",f),l=e.currency,d=function(e,o){var t=e.find("input"),a=e.find(".bookly-js-extras-total-price"),s=o*parseFloat(e.data("price"));a.text(l.format.replace("1",s.toFixed(l.precision))),t.val(o),e.find(".bookly-js-extras-thumb").toggleClass("bookly-extras-selected",0<o);var i=0;r.each(function(e,o){var t=V(this),a=t.closest(".bookly-js-extras-container").data("multiplier");i+=parseFloat(t.data("price"))*t.find("input").val()*a}),i?n.html(" + "+l.format.replace("1",i.toFixed(l.precision))):n.html("")};r.each(function(e,o){var t=V(this),a=t.find("input");t.find(".bookly-js-extras-thumb").on("click",function(){d(t,0<a.val()?0:1)}),t.find(".bookly-js-count-control").on("click",function(){var e=parseInt(a.val());e=V(this).hasClass("bookly-js-extras-increment")?Math.min(t.data("max_quantity"),e+1):Math.max(0,e-1),d(t,e)})}),a.on("click",function(e){e.preventDefault(),oe(this),ie({form_id:c.form_id,from_step:"extras"})}),o.on("click",function(e){e.preventDefault(),oe(this);var a={};V(".bookly-js-extras-container",f).each(function(){var e=V(this),o=e.data("chain"),t={};e.find(".bookly-js-extras-item").each(function(e,o){s=V(this),0<(i=s.find("input")).val()&&(t[s.data("id")]=i.val())}),a[o]=JSON.stringify(t)}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:c.form_id,extras:a},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){"before_step_time"==ee[c.form_id].step_extras?ne({form_id:c.form_id,prev_step:"extras"}):ee[c.form_id].skip_steps.repeat?ee[c.form_id].skip_steps.cart?D({form_id:c.form_id,add_to_cart:!0}):ie({form_id:c.form_id,add_to_cart:!0,from_step:"time"}):re({form_id:c.form_id})}})}),t.on("click",function(e){e.preventDefault(),oe(this),"after_step_time"!=ee[c.form_id].step_extras||ee[c.form_id].no_time?de({form_id:c.form_id}):ne({form_id:c.form_id,prev_step:"extras"})})}}})}function de(q){if(ee[q.form_id].skip_steps.service)ee[q.form_id].skip_steps.extras||"before_step_time"!=ee[q.form_id].step_extras?ne(q):le(q);else{var e={action:"bookly_render_service",csrf_token:BooklyL10n.csrf_token},P=ee[q.form_id].$container;ee[q.form_id].use_client_time_zone&&(e.time_zone=ee[q.form_id].timeZone,e.time_zone_offset=ee[q.form_id].timeZoneOffset),V.extend(e,q),V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){BooklyL10n.csrf_token=e.csrf_token,P.html(e.html),void 0===q&&te(P);var a=V(".bookly-js-chain-item.bookly-js-draft",P),o=V(".bookly-js-select-location",P),t=V(".bookly-js-select-category",P),s=V(".bookly-js-select-service",P),i=V(".bookly-js-select-employee",P),r=V(".bookly-js-select-units-duration",P),n=V(".bookly-js-select-number-of-persons",P),l=V(".bookly-js-select-quantity",P),d=V(".bookly-js-date-from",P),c=V(".bookly-js-week-day",P),f=V(".bookly-js-select-time-from",P),m=V(".bookly-js-select-time-to",P),y=V(".bookly-js-next-step",P),u=V(".bookly-js-mobile-next-step",P),_=V(".bookly-js-mobile-prev-step",P),h=e.locations,b=e.categories,v=e.services,j=e.staff,k=e.chain,p=e.required,g=e.defaults,w=e.services_per_location,x=0,C=!1,L=e.service_name_with_duration,B=e.show_ratings;d.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[q.form_id].date_format,min:e.date_min||!0,max:e.date_max||!0,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[q.form_id].start_of_week,onSet:function(e){if(V.isNumeric(e.select)){var o=new Date(e.select);V('.bookly-js-week-day[value="'+(o.getDay()+1)+'"]:not(:checked)',P).attr("checked",!0).trigger("change")}}}),V(".bookly-js-go-to-cart",P).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:q.form_id,from_step:"service"})});var T=function(e,o,t){V('option:not([value=""])',e).remove();var a,s=document.createDocumentFragment();o=(a=o,Object.keys(a).map(function(e){return a[e]})).sort(function(e,o){return parseInt(e.pos)<parseInt(o.pos)?-1:parseInt(e.pos)>parseInt(o.pos)?1:0}),V.each(o,function(e,o){var t=document.createElement("option");t.value=o.id,t.text=o.name,s.appendChild(t)}),e.append(s),e.find('option[value="'+t+'"]').length&&e.val(t)},D=function(e,o,s,i,t){var r=w&&o?o:0,n={},a={},l={},d={},c=null,f=null;if(V.each(j,function(t,a){o&&!h[o].staff.hasOwnProperty(t)||(i?a.services.hasOwnProperty(i)&&V.each(a.services[i].locations,function(e,o){if(r&&r!=e)return!0;f=f?Math.min(f,o.min_capacity):o.min_capacity,c=c?Math.max(c,o.max_capacity):o.max_capacity,n[t]={id:t,name:a.name+(null==o.price||!r&&w?"":" ("+o.price+")"),pos:a.pos}}):s?V.each(a.services,function(e){if(v[e].category_id==s)return n[t]=V.extend({},a),!1}):n[t]=V.extend({},a))}),o){var m=[],y=[];V.each(n,function(o){V.each(j[o].services,function(e){j[o].services[e].locations.hasOwnProperty(r)&&(m.push(v[e].category_id),y.push(e))})}),V.each(b,function(e,o){-1<V.inArray(parseInt(e),m)&&(l[e]=o)}),V.each(v,function(e,o){-1<V.inArray(e,y)&&(s&&o.category_id!=s||t&&!j[t].services.hasOwnProperty(e)||(a[e]=o))})}else l=b,V.each(v,function(e,o){s&&o.category_id!=s||t&&!j[t].services.hasOwnProperty(e)||(a[e]=o)});for(var u=V(".bookly-js-select-number-of-persons",e).val()||1,_=i?t?j[t].services[i].locations.hasOwnProperty(r)?j[t].services[i].locations[r].max_capacity:1:c||1:1,k=i?t?j[t].services[i].locations.hasOwnProperty(r)?j[t].services[i].locations[r].min_capacity:1:f||1:1,p=k;p<=_;++p)d[p]={id:p,name:p,pos:p};_<u&&(u=_),(u<k||!ee[q.form_id].form_attributes.show_number_of_persons)&&(u=k),B&&V.each(j,function(e,o){n.hasOwnProperty(o.id)&&(i?o.services.hasOwnProperty(i)&&o.services[i].rating&&(n[o.id].name="★"+o.services[i].rating+" "+n[o.id].name):o.rating&&(n[o.id].name="★"+o.rating+" "+n[o.id].name))}),T(e.find(".bookly-js-select-category"),l,s),T(e.find(".bookly-js-select-service"),a,i),T(e.find(".bookly-js-select-employee"),n,t),T(e.find(".bookly-js-select-number-of-persons"),d,u)};P.off("click").off("change"),P.on("change",".bookly-js-select-location",function(){var e=V(this).closest(".bookly-js-chain-item"),o=this.value,t=e.find(".bookly-js-select-category").val(),a=e.find(".bookly-js-select-service").val(),s=e.find(".bookly-js-select-employee").val();if(o){var i=w?o:0;if(s&&(h[o].staff.hasOwnProperty(s)?a&&!j[s].services[a].locations.hasOwnProperty(i)&&(s=""):s=""),a){var r=!1;V.each(h[o].staff,function(e){if(j[e].services.hasOwnProperty(a)&&j[e].services[a].locations.hasOwnProperty(i))return!(r=!0)}),r||(a="")}if(t){r=!1;V.each(h[o].staff,function(e){if(V.each(j[e].services,function(e){if(v[e].category_id==t)return!(r=!0)}),r)return!1}),r||(t="")}}D(e,o,t,a,s),S(e,a,s,o)}),P.on("change",".bookly-js-select-category",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=this.value,a=e.find(".bookly-js-select-service").val(),s=e.find(".bookly-js-select-employee").val();if(t){if(C=!0,a&&v[a].category_id!=t&&(a=""),s){var i=!1;V.each(j[s].services,function(e){if(v[e].category_id==t)return!(i=!0)}),i||(s="")}}else C=!1;D(e,o,t,a,s)});var S=function(e,a,o,s){var t=e.find(".bookly-js-select-units-duration"),i=t.val();if(t.find("option").remove(),a){V.each(function(e){if(!e||w&&!s)return v[a].hasOwnProperty("units")?v[a].units:[{value:"",title:"-"}];var o=s||0,t=j[e].services[a].locations;return void 0===t?[{value:"",title:"-"}]:(t.hasOwnProperty(o)?t[o]:t[0]).units||[{value:"",title:"-"}]}(o),function(e,o){t.append(V("<option>",{value:o.value,text:o.title}))}),0!=t.find('option[value="'+i+'"]').length&&t.val(i)}else t.append(V("<option>",{value:"",text:"-"}))};if(P.on("change",".bookly-js-select-service",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=C?e.find(".bookly-js-select-category").val():"",a=this.value,s=e.find(".bookly-js-select-employee").val();a&&s&&!j[s].services.hasOwnProperty(a)&&(s=""),D(e,o,t,a,s),a&&e.find(".bookly-js-select-category").val(v[a].category_id),S(e,a,s,o)}),P.on("change",".bookly-js-select-employee",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=V(".bookly-js-select-category",e).val(),a=e.find(".bookly-js-select-service").val(),s=this.value;D(e,o,t,a,s),S(e,a,s,o)}),L&&V.each(v,function(e,o){o.name=o.name+" ( "+o.duration+" )"}),T(o,h),T(t,b),T(s,v),B){var O={};V.each(j,function(e,o){O[e]=V.extend({},o),o.rating&&(O[e].name="★"+o.rating+" "+O[e].name)}),T(i,O)}else T(i,j);o.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_locations),t.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_categories),s.closest(".bookly-form-group").toggle(!(ee[q.form_id].form_attributes.hide_services&&g.service_id)),i.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_staff_members),r.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_service_duration),n.closest(".bookly-form-group").toggle(ee[q.form_id].form_attributes.show_number_of_persons),l.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_quantity),g.location_id&&o.val(g.location_id).trigger("change"),g.category_id&&t.val(g.category_id).trigger("change"),g.service_id&&s.val(g.service_id).trigger("change"),g.staff_id&&i.val(g.staff_id).trigger("change"),ee[q.form_id].form_attributes.hide_date&&V(".bookly-js-available-date",P).hide(),ee[q.form_id].form_attributes.hide_week_days&&V(".bookly-js-week-days",P).hide(),ee[q.form_id].form_attributes.hide_time_range&&V(".bookly-js-time-range",P).hide(),V.each(k,function(e,o){var t=a.clone().data("chain_key",e).removeClass("bookly-js-draft").css("display","table");a.find("select").each(function(e,o){t.find("select:eq("+e+")").val(o.value)}),0==(x=e)&&t.find('.bookly-js-actions button[data-action="drop"]').remove(),V(".bookly-js-chain-item:last",P).after(t),!ee[q.form_id].form_attributes.hide_locations&&o.location_id&&V(".bookly-js-select-location",t).val(o.location_id).trigger("change"),o.service_id&&(V(".bookly-js-select-service",t).val(o.service_id).trigger("change"),ee[q.form_id].form_attributes.hide_categories&&(ee[q.form_id].form_attributes.hasOwnProperty("const_category_id")?V(".bookly-js-select-category",t).val(ee[q.form_id].form_attributes.const_category_id):V(".bookly-js-select-category",t).val(""))),!ee[q.form_id].form_attributes.hide_staff_members&&1==o.staff_ids.length&&o.staff_ids[0]&&V(".bookly-js-select-employee",t).val(o.staff_ids[0]).trigger("change"),1<o.number_of_persons&&V(".bookly-js-select-number-of-persons",t).val(o.number_of_persons),1<o.units&&V(".bookly-js-select-units-duration",t).val(o.units),1<o.quantity&&V(".bookly-js-select-quantity",t).val(o.quantity)}),P.on("click",".bookly-js-mobile-step-1 .bookly-js-actions button",function(){switch(V(this).data("action")){case"plus":var t=a.clone();a.find("select").each(function(e,o){t.find("select:eq("+e+")").val(o.value)}),V(".bookly-js-chain-item:last",P).after(t.data("chain_key",++x).removeClass("bookly-js-draft").css("display","table"));break;case"drop":V(this).closest(".bookly-js-chain-item").remove()}}),c.on("change",function(){var e=V(this);e.is(":checked")?e.parent().not("[class*='active']").addClass("active"):e.parent().removeClass("active")}),f.on("change",function(){var e=V(this).val(),o=m.val(),t=V("option:last",f);m.empty(),f[0].selectedIndex<t.index()?V("option",this).each(function(){V(this).val()>e&&m.append(V(this).clone())}):m.append(t.clone()).val(t.val());var a=V("option:first",m).val();m.val(a<=o?o:a)});var M=function(){V(".bookly-js-select-service-error",P).hide(),V(".bookly-js-select-employee-error",P).hide(),V(".bookly-js-select-location-error",P).hide();var o=!0,t=null,a=null,s=null,i=null;return V(".bookly-js-chain-item:not(.bookly-js-draft)",P).each(function(){var e=V(this);t=V(".bookly-js-select-service",e),a=V(".bookly-js-select-employee",e),s=V(".bookly-js-select-location",e),t.removeClass("bookly-error"),a.removeClass("bookly-error"),s.removeClass("bookly-error"),t.val()||(o=!1,t.addClass("bookly-error"),V(".bookly-js-select-service-error",e).show(),i=t),p.hasOwnProperty("location")&&p.location&&!s.val()&&(o=!1,s.addClass("bookly-error"),V(".bookly-js-select-location-error",e).show(),i=s),p.staff&&!a.val()&&(o=!1,a.addClass("bookly-error"),V(".bookly-js-select-employee-error",e).show(),i=a)}),d.removeClass("bookly-error"),d.val()||(o=!1,d.addClass("bookly-error"),null===i&&(i=d)),V(".bookly-js-week-day:checked",P).length||(o=!1,null===i&&(i=c)),null!==i&&te(i),o};y.on("click",function(e){if(e.preventDefault(),M()){oe(this);var a={},s=0,i=0,r={required:2,optional:1,off:0};V(".bookly-js-chain-item:not(.bookly-js-draft)",P).each(function(){var e=V(this),o=[],t=v[V(".bookly-js-select-service",e).val()];V(".bookly-js-select-employee",e).val()?o.push(V(".bookly-js-select-employee",e).val()):V(".bookly-js-select-employee",e).find("option").each(function(){this.value&&o.push(this.value)}),a[e.data("chain_key")]={location_id:V(".bookly-js-select-location",e).val(),service_id:V(".bookly-js-select-service",e).val(),staff_ids:o,units:V(".bookly-js-select-units-duration",e).val()||1,number_of_persons:V(".bookly-js-select-number-of-persons",e).val()||1,quantity:V(".bookly-js-select-quantity",e).val()?V(".bookly-js-select-quantity",e).val():1},i=Math.max(i,r[t.hasOwnProperty("time_requirements")?t.time_requirements:"required"]),s+=t.has_extras});var o=[];V(".bookly-js-week-days .active input.bookly-js-week-day",P).each(function(){o.push(this.value)}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:q.form_id,chain:a,date_from:d.pickadate("picker").get("select","yyyy-mm-dd"),days:o,time_from:f.val(),time_to:m.val(),no_extras:0==s},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[q.form_id].no_time=0==i,ee[q.form_id].no_extras=0==s,ee[q.form_id].skip_steps.extras?ne({form_id:q.form_id}):0==s||"after_step_time"==ee[q.form_id].step_extras?ne({form_id:q.form_id}):le({form_id:q.form_id})}})}}),u.on("click",function(e,o){return M()&&(ee[q.form_id].skip_steps.service_part2?(oe(this),y.trigger("click")):(V(".bookly-js-mobile-step-1",P).hide(),V(".bookly-js-mobile-step-2",P).css("display","block"),1!=o&&te(P))),!1}),ee[q.form_id].skip_steps.service_part1?(u.trigger("click",[!0]),_.remove()):_.on("click",function(){return V(".bookly-js-mobile-step-1",P).show(),V(".bookly-js-mobile-step-2",P).hide(),s.val()&&V(".bookly-js-select-service",P).parent().removeClass("bookly-error"),!1})}}})}}window.bookly=function(e){var o;(ee[e.form_id]=e,ee[e.form_id].$container=V("#bookly-form-"+e.form_id),ee[e.form_id].timeZone="object"==typeof Intl?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0,ee[e.form_id].timeZoneOffset=(new Date).getTimezoneOffset(),ee[e.form_id].skip_steps.service=e.skip_steps.service_part1&&e.skip_steps.service_part2,"finished"==e.status.booking?ae({form_id:e.form_id}):"cancelled"==e.status.booking?se({form_id:e.form_id}):de({form_id:e.form_id,new_chain:!0}),e.hasOwnProperty("facebook")&&e.facebook.enabled&&(o=e,FB.init({appId:o.facebook.appId,status:!0,version:"v2.12"}),FB.getLoginStatus(function(e){"connected"===e.status?(o.facebook.enabled=!1,FB.api("/me",{fields:"id,name,first_name,last_name,email,link"},function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:V.extend(e,{action:"bookly_pro_facebook_login",csrf_token:BooklyL10n.csrf_token,form_id:o.form_id}),dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){}})})):FB.Event.subscribe("auth.statusChange",function(e){o.facebook.onStatusChange&&o.facebook.onStatusChange(e)})})),e.hasOwnProperty("google_maps")&&e.google_maps.enabled)&&function(e,o,t){var a=document.createElement("script");a.type="text/javascript",void 0!==o&&(a.async=o);t instanceof Function&&(a.onload=t);document.head.appendChild(a),a.src=e}("https://maps.googleapis.com/maps/api/js?key="+e.google_maps.api_key+"&libraries=places",!0)}}(jQuery);
2
  //# sourceMappingURL=bookly.min.js.map
1
+ !function(V){"use strict";V=V&&V.hasOwnProperty("default")?V.default:V;var ee={};function oe(e){var o=Ladda.create(e);return o.start(),o}function te(e){var o=e.offset().top,t=V(window).scrollTop();(o<V(window).scrollTop()||o>t+window.innerHeight)&&V("html,body").animate({scrollTop:o-24},500)}function ae(e){var o=V.extend({action:"bookly_render_complete",csrf_token:BooklyL10n.csrf_token},e),t=ee[e.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:o,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(e.final_step_url&&!o.error?document.location.href=e.final_step_url:(t.html(e.html),te(t)))}})}function se(l){var d=ee[l.form_id].$container;V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_render_payment",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,page_url:document.URL.split("#")[0]},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){if(e.disabled)return void c(l.form_id);d.html(e.html),te(d),"cancelled"==ee[l.form_id].status.booking&&(ee[l.form_id].status.booking="ok");var o=V(".bookly-payment",d),t=V(".bookly-js-apply-coupon",d),a=V("input.bookly-user-coupon",d),s=V(".bookly-js-coupon-error",d),i=V("input[type=radio][name=bookly-full-payment]",d),r=V(".bookly-info-text-coupon",d),n=V(".bookly-gateway-buttons,form.bookly-authorize_net,form.bookly-stripe",d);o.on("click",function(){n.hide(),V(".bookly-gateway-buttons.pay-"+V(this).val(),d).show(),"card"==V(this).val()&&V("form.bookly-"+V(this).data("form"),d).show()}),o.eq(0).trigger("click"),i.on("change",function(){var e={action:"bookly_deposit_payments_apply_payment_method",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,deposit_full:V(this).val()};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&se({form_id:l.form_id})}})}),t.on("click",function(e){var o=oe(this);s.text(""),a.removeClass("bookly-error");var t={action:"bookly_coupons_apply_coupon",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,coupon_code:a.val()};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?se({form_id:l.form_id}):(s.html(ee[l.form_id].errors[e.error]),a.addClass("bookly-error"),r.html(e.text),te(s),o.stop())},error:function(){o.stop()}})}),V(".bookly-js-next-step",d).on("click",function(e){var t,a=oe(this);if(V(".bookly-payment[value=local]",d).is(":checked")||V(this).hasClass("bookly-js-coupon-payment"))e.preventDefault(),c(l.form_id);else if(V(".bookly-payment[value=card]",d).is(":checked")){var o=V(".bookly-payment[data-form=stripe]",d).is(":checked"),s=o?"bookly_stripe_payment":"bookly_authorize_net_aim_payment";t=d.find(o?".bookly-stripe":".bookly-authorize_net"),e.preventDefault();var i={action:s,csrf_token:BooklyL10n.csrf_token,card:{number:t.find('input[name="card_number"]').val(),cvc:t.find('input[name="card_cvc"]').val(),exp_month:t.find('select[name="card_exp_month"]').val(),exp_year:t.find('select[name="card_exp_year"]').val()},form_id:l.form_id},r=function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?ae({form_id:l.form_id}):"cart_item_not_available"==e.error?f(e,l.form_id):"payment_error"==e.error&&(a.stop(),t.find(".bookly-js-card-error").text(e.error_message))}})};if(o&&t.find("#publishable_key").val())try{Stripe.setPublishableKey(t.find("#publishable_key").val()),Stripe.createToken(i.card,function(e,o){o.error?(t.find(".bookly-js-card-error").text(o.error.message),a.stop()):(i.card=o.id,r(i))})}catch(e){t.find(".bookly-js-card-error").text(e.message),a.stop()}else r(i)}else(V(".bookly-payment[value=paypal]",d).is(":checked")||V(".bookly-payment[value=2checkout]",d).is(":checked")||V(".bookly-payment[value=payu_biz]",d).is(":checked")||V(".bookly-payment[value=payu_latam]",d).is(":checked")||V(".bookly-payment[value=payson]",d).is(":checked")||V(".bookly-payment[value=mollie]",d).is(":checked"))&&(e.preventDefault(),0<(t=V(this).closest("form")).find("input.bookly-payment-id").length?V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_pro_save_pending_appointment",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id,payment_type:t.data("gateway")},dataType:"json",success:function(e){e.success?(t.find("input.bookly-payment-id").val(e.payment_id),t.submit()):"cart_item_not_available"==e.error&&f(e,l.form_id)}}):V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_check_cart",csrf_token:BooklyL10n.csrf_token,form_id:l.form_id},dataType:"json",success:function(e){e.success?t.submit():"cart_item_not_available"==e.error&&f(e,l.form_id)}}))}),V(".bookly-js-back-step",d).on("click",function(e){e.preventDefault(),oe(this),S({form_id:l.form_id})})}}})}function c(o){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,data:{action:"bookly_save_appointment",csrf_token:BooklyL10n.csrf_token,form_id:o},dataType:"json"}).done(function(e){e.success?ae({form_id:o}):"cart_item_not_available"==e.error&&f(e,o)})}function f(e,o){ee[o].skip_steps.cart?ne({form_id:o},ee[o].errors[e.error]):ie({form_id:o},{failed_key:e.failed_cart_key,message:ee[o].errors[e.error]})}function S(W){var e=V.extend({action:"bookly_render_details",csrf_token:BooklyL10n.csrf_token},W),G=ee[W.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){G.html(e.html),te(G);var l=e.intlTelInput,d=e.update_details_dialog,c=e.woocommerce;ee[W.form_id].hasOwnProperty("google_maps")&&ee[W.form_id].google_maps.enabled&&(G||V(".bookly-form .bookly-details-step")).each(function(){!function(t){var e=t.find(".bookly-js-cst-address-autocomplete");if(e.length){var i=new google.maps.places.Autocomplete(e[0],{types:["geocode"]}),o=[{selector:".bookly-js-address-country",val:function(){return a("country")},short:function(){return a("country",!0)}},{selector:".bookly-js-address-postcode",val:function(){return a("postal_code")}},{selector:".bookly-js-address-city",val:function(){return a("locality")}},{selector:".bookly-js-address-state",val:function(){return a("administrative_area_level_1")},short:function(){return a("administrative_area_level_1",!0)}},{selector:".bookly-js-address-street",val:function(){return a("route")}},{selector:".bookly-js-address-street_number",val:function(){return a("street_number")}}],a=function(e,o){for(var t=i.getPlace().address_components,a=0;a<t.length;a++){var s=t[a].types[0];if(s===e)return o?t[a].short_name:t[a].long_name}return""};i.addListener("place_changed",function(){o.forEach(function(e){var o=t.find(e.selector);0!==o.length&&(o.val(e.val()),"function"==typeof e.short&&o.data("short",e.short()))})})}}(V(this))}),V(document.body).trigger("bookly.render.step_detail",[G]);var f="",t=V(".bookly-js-guest",G),m=V(".bookly-js-user-phone-input",G),y=V(".bookly-js-user-email",G),u=V(".bookly-js-user-email-confirm",G),_=V(".bookly-js-select-birthday-day",G),k=V(".bookly-js-select-birthday-month",G),p=V(".bookly-js-select-birthday-year",G),h=V(".bookly-js-address-country",G),b=V(".bookly-js-address-state",G),v=V(".bookly-js-address-postcode",G),j=V(".bookly-js-address-city",G),g=V(".bookly-js-address-street",G),w=V(".bookly-js-address-street_number",G),x=V(".bookly-js-address-additional_address",G),C=V(".bookly-js-address-country-error",G),L=V(".bookly-js-address-state-error",G),B=V(".bookly-js-address-postcode-error",G),T=V(".bookly-js-address-city-error",G),D=V(".bookly-js-address-street-error",G),S=V(".bookly-js-address-street_number-error",G),O=V(".bookly-js-address-additional_address-error",G),M=V(".bookly-js-select-birthday-day-error",G),q=V(".bookly-js-select-birthday-month-error",G),P=V(".bookly-js-select-birthday-year-error",G),F=V(".bookly-js-full-name",G),E=V(".bookly-js-first-name",G),R=V(".bookly-js-last-name",G),H=V(".bookly-js-user-notes",G),o=V(".bookly-custom-field",G),a=V(".bookly-js-info-field",G),X=V(".bookly-js-user-phone-error",G),I=V(".bookly-js-user-email-error",G),z=V(".bookly-js-user-email-confirm-error",G),N=V(".bookly-js-full-name-error",G),Y=V(".bookly-js-first-name-error",G),Z=V(".bookly-js-last-name-error",G),s=V(".bookly-js-captcha-img",G),i=V(".bookly-custom-field-error",G),r=V(".bookly-js-info-field-error",G),n=V(".bookly-js-modal",G),J=V(".bookly-js-login",G),$=V(".bookly-js-cst-duplicate",G),A=V(".bookly-js-next-step",G),U=V([M,q,P,C,L,B,T,D,S,O,N,Y,Z,X,I,z,i,r]).map(V.fn.toArray),K=V([_,k,p,j,h,v,b,g,w,x,F,E,R,m,y,u,o,a]).map(V.fn.toArray),Q=function(e){if(F.val(e.data.full_name).removeClass("bookly-error"),E.val(e.data.first_name).removeClass("bookly-error"),R.val(e.data.last_name).removeClass("bookly-error"),e.data.birthday){var o=e.data.birthday.split("-"),t=parseInt(o[0]),a=parseInt(o[1]),s=parseInt(o[2]);_.val(s).removeClass("bookly-error"),k.val(a).removeClass("bookly-error"),p.val(t).removeClass("bookly-error")}e.data.phone&&(m.removeClass("bookly-error"),l.enabled?m.intlTelInput("setNumber",e.data.phone):m.val(e.data.phone)),e.data.country&&h.val(e.data.country).removeClass("bookly-error"),e.data.state&&b.val(e.data.state).removeClass("bookly-error"),e.data.postcode&&v.val(e.data.postcode).removeClass("bookly-error"),e.data.city&&j.val(e.data.city).removeClass("bookly-error"),e.data.street&&g.val(e.data.street).removeClass("bookly-error"),e.data.street_number&&w.val(e.data.street_number).removeClass("bookly-error"),e.data.additional_address&&x.val(e.data.additional_address).removeClass("bookly-error"),y.val(e.data.email).removeClass("bookly-error"),e.data.info_fields&&e.data.info_fields.forEach(function(e){var o=G.find('.bookly-js-info-field-row[data-id="'+e.id+'"]');switch(o.data("type")){case"checkboxes":e.value.forEach(function(e){o.find(".bookly-js-info-field").filter(function(){return this.value==e}).prop("checked",!0)});break;case"radio-buttons":o.find(".bookly-js-info-field").filter(function(){return this.value==e.value}).prop("checked",!0);break;default:o.find(".bookly-js-info-field").val(e.value)}}),U.filter(":not(.bookly-custom-field-error)").html("")};l.enabled&&m.intlTelInput({preferredCountries:[l.country],initialCountry:l.country,geoIpLookup:function(t){V.get("https://ipinfo.io",function(){},"jsonp").always(function(e){var o=e&&e.country?e.country:"";t(o)})},utilsScript:l.utils}),V("body > .bookly-js-modal."+W.form_id).remove(),n.addClass(W.form_id).appendTo("body").on("click",".bookly-js-close",function(e){e.preventDefault(),V(e.delegateTarget).removeClass("bookly-in").find("form").trigger("reset").end().find("input").removeClass("bookly-error").end().find(".bookly-label-error").html("")}),V(".bookly-js-login-show",G).on("click",function(e){e.preventDefault(),J.addClass("bookly-in")}),V("button:submit",J).on("click",function(e){e.preventDefault();var o=Ladda.create(this);o.start(),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_wp_user_login",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id,log:J.find('[name="log"]').val(),pwd:J.find('[name="pwd"]').val(),rememberme:J.find('[name="rememberme"]').prop("checked")?1:0},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?(BooklyL10n.csrf_token=e.data.csrf_token,t.fadeOut("slow"),Q(e),J.removeClass("bookly-in")):"incorrect_username_password"==e.error&&(J.find("input").addClass("bookly-error"),J.find(".bookly-label-error").html(ee[W.form_id].errors[e.error])),o.stop()}})}),V("button:submit",$).on("click",function(e){e.preventDefault(),$.removeClass("bookly-in"),A.trigger("click",[1])}),ee[W.form_id].hasOwnProperty("facebook")&&ee[W.form_id].facebook.enabled&&(FB.XFBML.parse(V(".bookly-js-fb-login-button",G).parent().get(0)),ee[W.form_id].facebook.onStatusChange=function(e){"connected"===e.status&&(ee[W.form_id].facebook.enabled=!1,ee[W.form_id].facebook.onStatusChange=void 0,t.fadeOut("slow",function(){V(".bookly-js-fb-login-button").hide()}),FB.api("/me",{fields:"id,name,first_name,last_name,email"},function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:V.extend(e,{action:"bookly_pro_facebook_login",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id}),dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&Q(e)}})}))}),A.on("click",function(e,o){e.preventDefault();var a,t=[],s={},i=[],r=oe(this);V("div.bookly-js-info-field-row",G).each(function(){var e=V(this);switch(e.data("type")){case"text-field":t.push({id:e.data("id"),value:e.find("input.bookly-js-info-field").val()});break;case"textarea":t.push({id:e.data("id"),value:e.find("textarea.bookly-js-info-field").val()});break;case"checkboxes":a=[],e.find("input.bookly-js-info-field:checked").each(function(){a.push(this.value)}),t.push({id:e.data("id"),value:a});break;case"radio-buttons":t.push({id:e.data("id"),value:e.find("input.bookly-js-info-field:checked").val()||null});break;case"drop-down":t.push({id:e.data("id"),value:e.find("select.bookly-js-info-field").val()})}}),V(".bookly-custom-fields-container",G).each(function(){var e=V(this),o=e.data("key"),t=[];V("div.bookly-custom-field-row",e).each(function(){var e=V(this);switch(e.data("type")){case"text-field":case"file":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field").val()});break;case"textarea":t.push({id:e.data("id"),value:e.find("textarea.bookly-custom-field").val()});break;case"checkboxes":a=[],e.find("input.bookly-custom-field:checked").each(function(){a.push(this.value)}),t.push({id:e.data("id"),value:a});break;case"radio-buttons":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field:checked").val()||null});break;case"drop-down":t.push({id:e.data("id"),value:e.find("select.bookly-custom-field").val()});break;case"captcha":t.push({id:e.data("id"),value:e.find("input.bookly-custom-field").val()}),i.push(e.data("id"))}}),s[o]={custom_fields:JSON.stringify(t)}});try{""==(f=l.enabled?m.intlTelInput("getNumber"):m.val())&&(f=m.val())}catch(e){f=m.val()}var n={action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id,full_name:F.val(),first_name:E.val(),last_name:R.val(),phone:f,email:y.val(),email_confirm:u.val(),birthday:{day:_.val(),month:k.val(),year:p.val()},country:h.val(),state:b.val(),postcode:v.val(),city:j.val(),street:g.val(),street_number:w.val(),additional_address:x.val(),address_iso:{country:h.data("short"),state:b.data("short")},info_fields:t,notes:H.val(),cart:s,captcha_ids:JSON.stringify(i),force_update_customer:!d||o};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:n,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(o){if(U.empty(),K.removeClass("bookly-error"),o.success)if(c.enabled){var e={action:"bookly_pro_add_to_woocommerce_cart",csrf_token:BooklyL10n.csrf_token,form_id:W.form_id};V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success?window.location.href=c.cart_url:(r.stop(),ne({form_id:W.form_id},ee[W.form_id].errors[e.error]))}})}else se({form_id:W.form_id});else{var i=null;if(o.appointments_limit_reached)ae({form_id:W.form_id,error:"appointments_limit_reached"});else{r.stop();[{name:"full_name",errorElement:N,formElement:F},{name:"first_name",errorElement:Y,formElement:E},{name:"last_name",errorElement:Z,formElement:R},{name:"phone",errorElement:X,formElement:m},{name:"email",errorElement:I,formElement:y},{name:"email_confirm",errorElement:z,formElement:u},{name:"birthday_day",errorElement:M,formElement:_},{name:"birthday_month",errorElement:q,formElement:k},{name:"birthday_year",errorElement:P,formElement:p},{name:"country",errorElement:C,formElement:h},{name:"state",errorElement:L,formElement:b},{name:"postcode",errorElement:B,formElement:v},{name:"city",errorElement:T,formElement:j},{name:"street",errorElement:D,formElement:g},{name:"street_number",errorElement:S,formElement:w},{name:"additional_address",errorElement:O,formElement:x}].forEach(function(e){o[e.name]&&(e.errorElement.html(o[e.name]),e.formElement.addClass("bookly-error"),null===i&&(i=e.formElement))}),o.info_fields&&V.each(o.info_fields,function(e,o){var t=V('div.bookly-js-info-field-row[data-id="'+e+'"]',G);t.find(".bookly-js-info-field-error").html(o),t.find(".bookly-js-info-field").addClass("bookly-error"),null===i&&(i=t.find(".bookly-js-info-field"))}),o.custom_fields&&V.each(o.custom_fields,function(s,e){V.each(e,function(e,o){var t=V('.bookly-custom-fields-container[data-key="'+s+'"]',G),a=V('[data-id="'+e+'"]',t);a.find(".bookly-custom-field-error").html(o),a.find(".bookly-custom-field").addClass("bookly-error"),null===i&&(i=a.find(".bookly-custom-field"))})}),o.customer&&$.find(".bookly-js-modal-body").html(o.customer).end().addClass("bookly-in")}null!==i&&te(i)}}})}),V(".bookly-js-back-step",G).on("click",function(e){e.preventDefault(),oe(this),ee[W.form_id].skip_steps.cart?ee[W.form_id].no_time?ee[W.form_id].no_extras?de({form_id:W.form_id}):le({form_id:W.form_id}):ee[W.form_id].skip_steps.repeat?ee[W.form_id].skip_steps.extras||"after_step_time"!=ee[W.form_id].step_extras||ee[W.form_id].no_extras?ne({form_id:W.form_id}):le({form_id:W.form_id}):re({form_id:W.form_id}):ie({form_id:W.form_id})}),V(".bookly-js-captcha-refresh",G).on("click",function(){s.css("opacity","0.5"),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_custom_fields_captcha_refresh",form_id:W.form_id,csrf_token:BooklyL10n.csrf_token},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&s.attr("src",e.data.captcha_url).on("load",function(){s.css("opacity","1")})}})})}}})}function ie(o,t){if(ee[o.form_id].skip_steps.cart)S(o);else{o&&o.from_step&&(ee[o.form_id].cart_prev_step=o.from_step);var e=V.extend({action:"bookly_render_cart",csrf_token:BooklyL10n.csrf_token},o),s=ee[o.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(s.html(e.html),t?(V(".bookly-label-error",s).html(t.message),V('tr[data-cart-key="'+t.failed_key+'"]',s).addClass("bookly-label-error")):V(".bookly-label-error",s).hide(),te(s),V(".bookly-js-next-step",s).on("click",function(){oe(this),S({form_id:o.form_id})}),V(".bookly-add-item",s).on("click",function(){oe(this),de({form_id:o.form_id,new_chain:!0})}),V(".bookly-js-back-step",s).on("click",function(e){switch(e.preventDefault(),oe(this),ee[o.form_id].cart_prev_step){case"service":de({form_id:o.form_id});break;case"extras":le({form_id:o.form_id});break;case"time":ne({form_id:o.form_id});break;case"repeat":re({form_id:o.form_id});break;default:de({form_id:o.form_id})}}),V(".bookly-js-actions button",s).on("click",function(){oe(this);var e=V(this),a=e.closest("tr");switch(e.data("action")){case"drop":V.ajax({url:BooklyL10n.ajaxurl,data:{action:"bookly_cart_drop_item",csrf_token:BooklyL10n.csrf_token,form_id:o.form_id,cart_key:a.data("cart-key")},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){var o=a.data("cart-key"),t=V('tr[data-cart-key="'+o+'"]',s);a.delay(300).fadeOut(200,function(){e.data.total_waiting_list?(V(".bookly-js-waiting-list-price",s).html(e.data.waiting_list_price),V(".bookly-js-waiting-list-deposit",s).html(e.data.waiting_list_deposit)):V(".bookly-js-waiting-list-price",s).closest("tr").remove(),V(".bookly-js-subtotal-price",s).html(e.data.subtotal_price),V(".bookly-js-subtotal-deposit",s).html(e.data.subtotal_deposit),V(".bookly-js-pay-now-deposit",s).html(e.data.pay_now_deposit),V(".bookly-js-pay-now-tax",s).html(e.data.pay_now_tax),V(".bookly-js-total-price",s).html(e.data.total_price),V(".bookly-js-total-tax",s).html(e.data.total_tax),t.remove(),0==V("tr[data-cart-key]").length&&(V(".bookly-js-back-step",s).hide(),V(".bookly-js-next-step",s).hide())})}}});break;case"edit":de({form_id:o.form_id,edit_cart_item:a.data("cart-key")})}}))}})}}function re(M,e){if(ee[M.form_id].skip_steps.repeat)ie(M,e);else{var o=V.extend({action:"bookly_render_repeat",csrf_token:BooklyL10n.csrf_token},M),q=ee[M.form_id].$container;V.ajax({url:BooklyL10n.ajaxurl,data:o,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){q.html(e.html),te(q);var o=V(".bookly-js-repeat-appointment-enabled",q),f=V(".bookly-js-next-step",q),t=V(".bookly-js-repeat-variants-container",q),a=V('[class^="bookly-js-variant"]',t),s=V(".bookly-js-repeat-variant",t),i=V(".bookly-js-get-schedule",t),r=V(".bookly-js-variant-weekly",t),n=V(".bookly-js-repeat-variant-monthly",t),l=V(".bookly-js-repeat-until",t),d=V(".bookly-js-repeat-times",t),c=V(".bookly-js-monthly-specific-day",t),m=V(".bookly-js-monthly-week-day",t),y=V(".bookly-js-repeat-daily-every",t),u=V(".bookly-js-week-day",t),_=V(".bookly-js-schedule-container",q),k=V(".bookly-js-days-error",t),p=V(".bookly-js-schedule-slots",_),h=V(".bookly-js-intersection-info",_),b=V(".bookly-js-schedule-help",_),v=V(".bookly-well",_),j=V(".bookly-pagination",_),g=V(".bookly-schedule-row-template .bookly-schedule-row",_),w=e.pages_warning_info,x=e.short_date_format,C={min:e.date_min||!0,max:e.date_max||!0},L=[],B={prepareButtonNextState:function(){for(var e=f.prop("disabled"),o=0==L.length,t=0;t<L.length;t++)if(e){if(!L[t].deleted){o=!1;break}}else{if(!L[t].deleted){o=!1;break}o=!0}f.prop("disabled",o)},addTimeSlotControl:function(e,o,a,s){var i,r="";o.length&&(r=V("<select/>"),V.each(o,function(e,o){var t=V("<option/>");t.text(o.title).val(o.value),o.disabled&&t.attr("disabled","disabled"),r.append(t),i||o.disabled||(o.title==a?(r.val(o.value),i=!0):o.title==s&&r.val(o.value))}));e.find(".bookly-js-schedule-time").html(r),e.find("div.bookly-label-error").toggle(!o.length)},renderSchedulePage:function(e){var o,t=L.length,a=5*e-5,s=[];p.html("");for(var i=a,r=0;r<5&&i<t;i++,r++)(o=g.clone()).data("datetime",L[i].datetime),o.data("index",L[i].index),V("> div:first-child",o).html(L[i].index),V(".bookly-schedule-date",o).html(L[i].display_date),void 0!==L[i].all_day_service_time?(V(".bookly-js-schedule-time",o).hide(),V(".bookly-js-schedule-all-day-time",o).html(L[i].all_day_service_time).show()):(V(".bookly-js-schedule-time",o).html(L[i].display_time).show(),V(".bookly-js-schedule-all-day-time",o).hide()),L[i].another_time&&V(".bookly-schedule-intersect",o).show(),L[i].deleted&&o.find(".bookly-schedule-appointment").addClass("bookly-appointment-hidden"),p.append(o);if(5<t){var n=V("<li/>").html("«");for(n.on("click",function(){var e=parseInt(j.find(".active").html());1<e&&B.renderSchedulePage(e-1)}),j.html(n),i=0,r=1;i<t;i+=5,r++)n=V("<li/>").html(r),j.append(n),n.on("click",function(){B.renderSchedulePage(V(this).html())});for(j.find("li:eq("+e+")").addClass("active"),(n=V("<li/>").html("»")).on("click",function(){var e=parseInt(j.find(".active").html());e<t/5&&B.renderSchedulePage(e+1)}),j.append(n).show(),i=0;i<t;i++)L[i].another_time&&(e=parseInt(i/5)+1,s.push(e),i=5*e-1);0<s.length&&h.html(w.replace("{list}",s.join(", "))),v.toggle(0<s.length),j.toggle(5<t)}else for(j.hide(),v.hide(),i=0;i<t;i++)if(L[i].another_time){b.show();break}},renderFullSchedule:function(e){L=e;var c=null;V.each(L,function(e,o){c||o.another_time||(c=o.display_time)}),B.renderSchedulePage(1),_.show(),f.prop("disabled",0==L.length),p.on("click","button[data-action]",function(){var o=V(this).closest(".bookly-schedule-row"),a=o.data("index")-1;switch(V(this).data("action")){case"drop":L[a].deleted=!0,o.find(".bookly-schedule-appointment").addClass("bookly-appointment-hidden"),B.prepareButtonNextState();break;case"restore":L[a].deleted=!1,o.find(".bookly-schedule-appointment").removeClass("bookly-appointment-hidden"),f.prop("disabled",!1);break;case"edit":var e=V('<input type="text"/>'),s=V(this),i=oe(this);o.find(".bookly-schedule-date").html(e),e.pickadate({min:C.min,max:C.max,formatSubmit:"yyyy-mm-dd",format:x,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[M.form_id].start_of_week,onSet:function(){var t=[];V.each(L,function(e,o){a==e||o.deleted||t.push(o.slots)}),V.ajax({url:BooklyL10n.ajaxurl,type:"POST",data:{action:"bookly_recurring_appointments_get_daily_customer_schedule",csrf_token:BooklyL10n.csrf_token,date:this.get("select","yyyy-mm-dd"),form_id:M.form_id,exclude:t},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){s.hide(),i.stop(),e.data.length?(B.addTimeSlotControl(o,e.data[0].options,c,L[a].display_time,e.data[0].all_day_service_time),o.find('button[data-action="save"]').show()):(B.addTimeSlotControl(o,[]),o.find('button[data-action="save"]').hide())}})}});var t=JSON.parse(L[a].slots);e.pickadate("picker").set("select",new Date(t[0][2]));break;case"save":V(this).hide(),o.find('button[data-action="edit"]').show();var r=o.find(".bookly-schedule-date"),n=o.find(".bookly-js-schedule-time"),l=n.find("select"),d=l.find("option:selected");L[a].slots=l.val(),L[a].display_date=r.find("input").val(),L[a].display_time=d.text(),r.html(L[a].display_date),n.html(L[a].display_time)}})},isDateMatchesSelections:function(e){switch(s.val()){case"daily":if((6<y.val()||-1!=V.inArray(e.format("ddd").toLowerCase(),B.week_days))&&e.diff(B.date_from,"days")%y.val()==0)return!0;break;case"weekly":case"biweekly":if(("weekly"==s.val()||e.diff(B.date_from.clone().startOf("isoWeek"),"weeks")%2==0)&&-1!=V.inArray(e.format("ddd").toLowerCase(),B.checked_week_days))return!0;break;case"monthly":switch(n.val()){case"specific":if(e.format("D")==c.val())return!0;break;case"last":if(e.format("ddd").toLowerCase()==m.val()&&e.clone().endOf("month").diff(e,"days")<7)return!0;break;default:var o=e.diff(e.clone().startOf("month"),"days");if(e.format("ddd").toLowerCase()==m.val()&&o>=7*(n.prop("selectedIndex")-1)&&o<7*n.prop("selectedIndex"))return!0}}return!1},updateRepeatDate:function(){var e=0,o=d.val(),t=C.min.slice(),a=l.pickadate("picker").get("select"),s=moment().year(a.year).month(a.month).date(a.date).add(5,"years");t[1]++,B.date_from=moment(t.join(","),"YYYY,M,D"),B.week_days=[],m.find("option").each(function(){B.week_days.push(V(this).val())}),B.checked_week_days=[],u.each(function(){V(this).prop("checked")&&B.checked_week_days.push(V(this).val())});for(var i=B.date_from.clone();B.isDateMatchesSelections(i)&&e++,i.add(1,"days"),e<o&&i.isBefore(s););l.val(i.subtract(1,"days").format("MMMM D, YYYY")),l.pickadate("picker").set("select",new Date(i.format("YYYY"),i.format("M")-1,i.format("D")))},updateRepeatTimes:function(){var e=0,o=C.min.slice(),t=l.pickadate("picker").get("select"),a=moment().year(t.year).month(t.month).date(t.date);o[1]++,B.date_from=moment(o.join(","),"YYYY,M,D"),B.week_days=[],m.find("option").each(function(){B.week_days.push(V(this).val())}),B.checked_week_days=[],u.each(function(){V(this).prop("checked")&&B.checked_week_days.push(V(this).val())});for(var s=B.date_from.clone();B.isDateMatchesSelections(s)&&e++,s.add(1,"days"),s.isBefore(a););d.val(e)}};l.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[M.form_id].date_format,min:C.min,max:C.max,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[M.form_id].start_of_week});var T=o.on("change",function(){t.toggle(V(this).prop("checked")),V(this).prop("checked")?B.prepareButtonNextState():f.prop("disabled",!1)});if(e.repeated){var D=e.repeat_data,S=D.params;o.prop("checked",!0),s.val(D.repeat);var O=D.until.split("-");switch(l.pickadate("set").set("select",new Date(O[0],O[1]-1,O[2])),D.repeat){case"daily":y.val(S.every);break;case"weekly":case"biweekly":V(".bookly-js-week-days input.bookly-js-week-day",t).prop("checked",!1).parent().removeClass("active"),S.on.forEach(function(e){V(".bookly-js-week-days input.bookly-js-week-day[value="+e+"]",t).prop("checked",!0).parent().addClass("active")});break;case"monthly":"day"===S.on?(n.val("specific"),V(".bookly-js-monthly-specific-day[value="+S.day+"]",t).prop("checked",!0)):(n.val(S.on),m.val(S.weekday))}B.renderFullSchedule(e.schedule)}T.trigger("change"),e.could_be_repeated||o.attr("disabled",!0),s.on("change",function(){a.hide(),t.find(".bookly-js-variant-"+this.value).show(),B.updateRepeatTimes()}).trigger("change"),n.on("change",function(){m.toggle("specific"!=this.value),c.toggle("specific"==this.value),B.updateRepeatTimes()}).trigger("change"),u.on("change",function(){var e=V(this);e.is(":checked")?e.parent().not("[class*='active']").addClass("active"):e.parent().removeClass("active"),B.updateRepeatTimes()}),c.val(e.date_min[2]),c.on("change",function(){B.updateRepeatTimes()}),m.on("change",function(){B.updateRepeatTimes()}),l.on("change",function(){B.updateRepeatTimes()}),y.on("change",function(){B.updateRepeatTimes()}),d.on("change",function(){B.updateRepeatDate()}),i.on("click",function(){_.hide();var e={action:"bookly_recurring_appointments_get_customer_schedule",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,repeat:s.val(),until:l.pickadate("picker").get("select","yyyy-mm-dd"),params:{}},o=oe(this);switch(e.repeat){case"daily":e.params={every:y.val()};break;case"weekly":case"biweekly":if(e.params.on=[],V(".bookly-js-week-days input.bookly-js-week-day:checked",r).each(function(){e.params.on.push(this.value)}),0==e.params.on.length)return k.toggle(!0),o.stop(),!1;k.toggle(!1);break;case"monthly":"specific"==n.val()?e.params={on:"day",day:c.val()}:e.params={on:n.val(),weekday:m.val()}}p.off("click"),V.ajax({url:BooklyL10n.ajaxurl,type:"POST",data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){e.success&&(B.renderFullSchedule(e.data),o.stop())}})}),V(".bookly-js-back-step",q).on("click",function(e){e.preventDefault(),oe(this),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,unrepeat:1},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[M.form_id].skip_steps.extras||"after_step_time"!=ee[M.form_id].step_extras||ee[M.form_id].no_extras?ne({form_id:M.form_id}):le({form_id:M.form_id})}})}),V(".bookly-js-go-to-cart",q).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:M.form_id,from_step:"repeat"})}),V(".bookly-js-next-step",q).on("click",function(e){if(oe(this),o.is(":checked")){var t=[],a=0;L.forEach(function(e){if(!e.deleted){var o=JSON.parse(e.slots);t=t.concat(o),a++}}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,slots:JSON.stringify(t),repeat:a},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ie({form_id:M.form_id,add_to_cart:!0,from_step:"repeat"})}})}else V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:M.form_id,unrepeat:1},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ie({form_id:M.form_id,add_to_cart:!0,from_step:"repeat"})}})})}}})}}var o=null;function ne(C,L){if(ee[C.form_id].no_time||ee[C.form_id].skip_steps.time)ee[C.form_id].skip_steps.extras||"after_step_time"!=ee[C.form_id].step_extras||ee[C.form_id].no_extras?ee[C.form_id].skip_steps.cart?S({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:C&&C.prev_step?C.prev_step:"service"}):le({form_id:C.form_id});else{var e={action:"bookly_render_time",csrf_token:BooklyL10n.csrf_token},B=ee[C.form_id].$container;ee[C.form_id].skip_steps.service&&ee[C.form_id].use_client_time_zone&&(e.time_zone=ee[C.form_id].timeZone,e.time_zone_offset=ee[C.form_id].timeZoneOffset),V.extend(e,C),o=V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(0!=e.success){BooklyL10n.csrf_token=e.csrf_token,B.html(e.html);var m,y,u,_=V(".bookly-columnizer-wrap",B),k=V(".bookly-columnizer",_),i=V(".bookly-time-next",B),a=V(".bookly-time-prev",B),p=null,h=e.time_slots_wide?205:127,b=e.time_slots_wide?"bookly-column bookly-column-wide":"bookly-column",v=0,r=0,j=e.has_more_slots,g=!1,o=e.show_calendar,n=e.is_rtl,w=e.day_one_column,t=T(e.slots_data,e.selected_date);if(V(".bookly-js-back-step",B).on("click",function(e){e.preventDefault(),oe(this),ee[C.form_id].skip_steps.extras||ee[C.form_id].no_extras?de({form_id:C.form_id}):"before_step_time"==ee[C.form_id].step_extras?le({form_id:C.form_id}):de({form_id:C.form_id})}).toggle(!ee[C.form_id].skip_steps.service||!ee[C.form_id].skip_steps.extras),V(".bookly-js-go-to-cart",B).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:C.form_id,from_step:"time"})}),V(".bookly-js-time-zone-switcher",B).on("change",function(e){ee[C.form_id].timeZone=this.value,ee[C.form_id].timeZoneOffset=void 0,f(),D(),ne({form_id:C.form_id,time_zone:ee[C.form_id].timeZone})}),o){var s=V(".bookly-js-selected-date",B);s.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[C.form_id].date_format,min:e.date_min||!0,max:e.date_max||!0,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,monthsFull:BooklyL10n.months,firstDay:ee[C.form_id].start_of_week,clear:!1,close:!1,today:!1,disable:e.disabled_days,closeOnSelect:!1,klass:{picker:"picker picker--opened picker--focused"},onSet:function(e){if(e.select){var o=this.get("select","yyyy-mm-dd");t[o]?(k.html(t[o]).css("left","0px"),r=v=0,p=null,x(),a.hide(),i.toggle(1!=m.length)):(D(),ne({form_id:C.form_id,selected_date:o}),f())}this.open()},onClose:function(){this.open(!1)},onRender:function(){var e=new Date(Date.UTC(this.get("view").year,this.get("view").month));V(".picker__nav--next",B).on("click",function(){e.setUTCMonth(e.getUTCMonth()+1),D(),ne({form_id:C.form_id,selected_date:e.toJSON().substr(0,10)}),f()}),V(".picker__nav--prev",B).on("click",function(){e.setUTCMonth(e.getUTCMonth()-1),D(),ne({form_id:C.form_id,selected_date:e.toJSON().substr(0,10)}),f()})}});var l=s.pickadate("picker").get("select","yyyy-mm-dd");k.html(t[l])}else{var d="";V.each(t,function(e,o){d+=o}),k.html(d)}if(e.has_slots){L?B.find(".bookly-label-error").html(L):B.find(".bookly-label-error").hide(),(y=parseInt(V(window).height()/36,10))<4?y=4:10<y&&(y=10),10<(u=parseInt(_.width()/h,10))?u=10:0==u&&(g=!0,u=4),x(),j||1!=m.length||i.hide();var c=V(".bookly-time-step",B).hammer({swipe_velocity:.1});c.on("swipeleft",function(){i.is(":visible")&&i.trigger("click")}),c.on("swiperight",function(){a.is(":visible")&&a.trigger("click")}),i.on("click",function(e){if(a.show(),m.eq(r+1).length)k.animate({left:(n?"+":"-")+(r+1)*p.width()},{duration:800}),p=m.eq(++r),_.animate({height:p.height()},{duration:800}),r+1!=m.length||j||i.hide();else if(j){var o=V("> button:last",k);0==o.length&&0==(o=V(".bookly-column:hidden:last > button:last",k)).length&&(o=V(".bookly-column:last > button:last",k));var t={action:"bookly_render_next_time",csrf_token:BooklyL10n.csrf_token,form_id:C.form_id,last_slot:o.val()},s=oe(this);V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success)if(e.has_slots){j=e.has_more_slots;var t="";V.each(T(e.slots_data,e.selected_date),function(e,o){t+=o});var o=V(t),a=o.eq(0);V('button.bookly-day[value="'+a.attr("value")+'"]',B).length&&(o=o.not(":first")),k.append(o),x(),i.trigger("click")}else i.hide();else i.hide();s.stop()}})}}),a.on("click",function(){i.show(),p=m.eq(--r),k.animate({left:(n?"+":"-")+r*p.width()},{duration:800}),_.animate({height:p.height()},{duration:800}),0===r&&a.hide()})}void 0===C&&te(B)}else de({form_id:C.form_id});function f(){V(".bookly-time-screen,.bookly-not-time-screen",B).addClass("bookly-spin-overlay");var e={lines:11,length:11,width:4,radius:5};m?new Spinner(e).spin(m.eq(r).get(0)):new Spinner(e).spin(V(".bookly-not-time-screen",B).get(0))}function x(){var e,o,t,a=V("> button",k),s=0,i=0;if(w)for(;0<a.length;)a.eq(0).hasClass("bookly-day")?(s=1,o=V('<div class="'+b+'" />'),(e=V(a.splice(0,1))).addClass("bookly-js-first-child"),o.append(e)):(s++,e=V(a.splice(0,1)),!a.length||a.eq(0).hasClass("bookly-day")?(e.addClass("bookly-last-child"),o.append(e),k.append(o)):o.append(e)),i<s&&(i=s);else for(;j?a.length>y:a.length;){o=V('<div class="'+b+'" />'),i=y,v%u!=0||a.eq(0).hasClass("bookly-day")||--i;for(var r=0;r<i&&(r+1!=i||!a.eq(0).hasClass("bookly-day"));++r)e=V(a.splice(0,1)),0==r?e.addClass("bookly-js-first-child"):r+1==i&&e.addClass("bookly-last-child"),o.append(e);k.append(o),++v}for(var n=V("> .bookly-column",k);j?n.length>=u:n.length;){t=V('<div class="bookly-time-screen"/>');for(r=0;r<u;++r){if(o=V(n.splice(0,1)),0==r){o.addClass("bookly-js-first-column");var l=o.find(".bookly-js-first-child");if(!l.hasClass("bookly-day")){var d=l.data("group"),c=V('button.bookly-day[value="'+d+'"]:last',B);o.prepend(c.clone())}}t.append(o)}k.append(t)}m=V(".bookly-time-screen",k),null===p&&(p=m.eq(0)),V("button.bookly-time-skip",B).off("click").on("click",function(e){oe(this),ee[C.form_id].skip_steps.cart?S({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:"time"})});var f=null;V("button.bookly-hour",B).off("click").on("click",function(e){null!=f&&(f.abort(),f=null),e.preventDefault();var o=V(this),t={action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:C.form_id,slots:this.value};o.attr({"data-style":"zoom-in","data-spinner-color":"#333","data-spinner-size":"40"}),oe(this),f=V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:t,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[C.form_id].skip_steps.extras||"after_step_time"!=ee[C.form_id].step_extras||ee[C.form_id].no_extras?ee[C.form_id].skip_steps.repeat?ee[C.form_id].skip_steps.cart?S({form_id:C.form_id,add_to_cart:!0}):ie({form_id:C.form_id,add_to_cart:!0,from_step:"time"}):re({form_id:C.form_id}):le({form_id:C.form_id})}})}),V(".bookly-time-step",B).width(u*h),_.height(g?39*V(".bookly-column.bookly-js-first-column button",p).length:p.height()),g=!1}}})}function T(e,s){var o={};return V.each(e,function(t,e){var a='<button class="bookly-day" value="'+t+'">'+e.title+"</button>";V.each(e.slots,function(e,o){a+='<button value="'+JSON.stringify(o.data).replace(/"/g,"&quot;")+'" data-group="'+t+'" class="bookly-hour'+("waiting-list"==o.status?" bookly-slot-in-waiting-list":"booked"==o.status?" booked":"")+'"'+("booked"==o.status?" disabled":"")+'><span class="ladda-label bookly-time-main'+(o.data[0][2]==s?" bookly-bold":"")+'"><i class="bookly-hour-icon"><span></span></i>'+o.time_text+'</span><span class="bookly-time-additional'+("waiting-list"==o.status?" bookly-waiting-list":"")+'"> '+o.additional_text+"</span></button>"}),o[t]=a}),o}function D(){null!=o&&(o.abort(),o=null)}}function le(c){var e={action:"bookly_render_extras",csrf_token:BooklyL10n.csrf_token},f=ee[c.form_id].$container;ee[c.form_id].skip_steps.service&&ee[c.form_id].use_client_time_zone&&(e.time_zone=ee[c.form_id].timeZone,e.time_zone_offset=ee[c.form_id].timeZoneOffset),V.extend(e,c),V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){BooklyL10n.csrf_token=e.csrf_token,f.html(e.html),void 0===c&&te(f);var s,i,o=V(".bookly-js-next-step",f),t=V(".bookly-js-back-step",f),a=V(".bookly-js-go-to-cart",f),r=V(".bookly-js-extras-item",f),n=V(".bookly-js-extras-summary span",f),l=e.currency,d=function(e,o){var t=e.find("input"),a=e.find(".bookly-js-extras-total-price"),s=o*parseFloat(e.data("price"));a.text(l.format.replace("1",s.toFixed(l.precision))),t.val(o),e.find(".bookly-js-extras-thumb").toggleClass("bookly-extras-selected",0<o);var i=0;r.each(function(e,o){var t=V(this),a=t.closest(".bookly-js-extras-container").data("multiplier");i+=parseFloat(t.data("price"))*t.find("input").val()*a}),i?n.html(" + "+l.format.replace("1",i.toFixed(l.precision))):n.html("")};r.each(function(e,o){var t=V(this),a=t.find("input");t.find(".bookly-js-extras-thumb").on("click",function(){d(t,0<a.val()?0:1)}),t.find(".bookly-js-count-control").on("click",function(){var e=parseInt(a.val());e=V(this).hasClass("bookly-js-extras-increment")?Math.min(t.data("max_quantity"),e+1):Math.max(0,e-1),d(t,e)})}),a.on("click",function(e){e.preventDefault(),oe(this),ie({form_id:c.form_id,from_step:"extras"})}),o.on("click",function(e){e.preventDefault(),oe(this);var a={};V(".bookly-js-extras-container",f).each(function(){var e=V(this),o=e.data("chain"),t={};e.find(".bookly-js-extras-item").each(function(e,o){s=V(this),0<(i=s.find("input")).val()&&(t[s.data("id")]=i.val())}),a[o]=JSON.stringify(t)}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:c.form_id,extras:a},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){"before_step_time"==ee[c.form_id].step_extras?ne({form_id:c.form_id,prev_step:"extras"}):ee[c.form_id].skip_steps.repeat?ee[c.form_id].skip_steps.cart?S({form_id:c.form_id,add_to_cart:!0}):ie({form_id:c.form_id,add_to_cart:!0,from_step:"time"}):re({form_id:c.form_id})}})}),t.on("click",function(e){e.preventDefault(),oe(this),"after_step_time"!=ee[c.form_id].step_extras||ee[c.form_id].no_time?de({form_id:c.form_id}):ne({form_id:c.form_id,prev_step:"extras"})})}}})}function de(q){if(ee[q.form_id].skip_steps.service)ee[q.form_id].skip_steps.extras||"before_step_time"!=ee[q.form_id].step_extras?ne(q):le(q);else{var e={action:"bookly_render_service",csrf_token:BooklyL10n.csrf_token},P=ee[q.form_id].$container;ee[q.form_id].use_client_time_zone&&(e.time_zone=ee[q.form_id].timeZone,e.time_zone_offset=ee[q.form_id].timeZoneOffset),V.extend(e,q),V.ajax({url:BooklyL10n.ajaxurl,data:e,dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){if(e.success){BooklyL10n.csrf_token=e.csrf_token,P.html(e.html),void 0===q&&te(P);var a=V(".bookly-js-chain-item.bookly-js-draft",P),o=V(".bookly-js-select-location",P),t=V(".bookly-js-select-category",P),s=V(".bookly-js-select-service",P),i=V(".bookly-js-select-employee",P),r=V(".bookly-js-select-units-duration",P),n=V(".bookly-js-select-number-of-persons",P),l=V(".bookly-js-select-quantity",P),d=V(".bookly-js-date-from",P),c=V(".bookly-js-week-day",P),f=V(".bookly-js-select-time-from",P),m=V(".bookly-js-select-time-to",P),y=V(".bookly-js-next-step",P),u=V(".bookly-js-mobile-next-step",P),_=V(".bookly-js-mobile-prev-step",P),h=e.locations,b=e.categories,v=e.services,j=e.staff,k=e.chain,p=e.required,g=e.defaults,w=e.services_per_location,x=0,C=!1,L=e.service_name_with_duration,B=e.show_ratings;d.pickadate({formatSubmit:"yyyy-mm-dd",format:ee[q.form_id].date_format,min:e.date_min||!0,max:e.date_max||!0,clear:!1,close:!1,today:BooklyL10n.today,monthsFull:BooklyL10n.months,weekdaysFull:BooklyL10n.days,weekdaysShort:BooklyL10n.daysShort,labelMonthNext:BooklyL10n.nextMonth,labelMonthPrev:BooklyL10n.prevMonth,firstDay:ee[q.form_id].start_of_week,onSet:function(e){if(V.isNumeric(e.select)){var o=new Date(e.select);V('.bookly-js-week-day[value="'+(o.getDay()+1)+'"]:not(:checked)',P).attr("checked",!0).trigger("change")}}}),V(".bookly-js-go-to-cart",P).on("click",function(e){e.preventDefault(),oe(this),ie({form_id:q.form_id,from_step:"service"})});var T=function(e,o,t){V('option:not([value=""])',e).remove();var a,s=document.createDocumentFragment();o=(a=o,Object.keys(a).map(function(e){return a[e]})).sort(function(e,o){return parseInt(e.pos)<parseInt(o.pos)?-1:parseInt(e.pos)>parseInt(o.pos)?1:0}),V.each(o,function(e,o){var t=document.createElement("option");t.value=o.id,t.text=o.name,s.appendChild(t)}),e.append(s),e.find('option[value="'+t+'"]').length&&e.val(t)},D=function(e,o,s,i,t){var r=w&&o?o:0,n={},a={},l={},d={},c=null,f=null;if(V.each(j,function(t,a){o&&!h[o].staff.hasOwnProperty(t)||(i?a.services.hasOwnProperty(i)&&V.each(a.services[i].locations,function(e,o){if(r&&r!=e)return!0;f=f?Math.min(f,o.min_capacity):o.min_capacity,c=c?Math.max(c,o.max_capacity):o.max_capacity,n[t]={id:t,name:a.name+(null==o.price||!r&&w?"":" ("+o.price+")"),pos:a.pos}}):s?V.each(a.services,function(e){if(v[e].category_id==s)return n[t]=V.extend({},a),!1}):n[t]=V.extend({},a))}),o){var m=[],y=[];V.each(n,function(o){V.each(j[o].services,function(e){j[o].services[e].locations.hasOwnProperty(r)&&(m.push(v[e].category_id),y.push(e))})}),V.each(b,function(e,o){-1<V.inArray(parseInt(e),m)&&(l[e]=o)}),V.each(v,function(e,o){-1<V.inArray(e,y)&&(s&&o.category_id!=s||t&&!j[t].services.hasOwnProperty(e)||(a[e]=o))})}else l=b,V.each(v,function(e,o){s&&o.category_id!=s||t&&!j[t].services.hasOwnProperty(e)||(a[e]=o)});for(var u=V(".bookly-js-select-number-of-persons",e).val()||1,_=i?t?j[t].services[i].locations.hasOwnProperty(r)?j[t].services[i].locations[r].max_capacity:1:c||1:1,k=i?t?j[t].services[i].locations.hasOwnProperty(r)?j[t].services[i].locations[r].min_capacity:1:f||1:1,p=k;p<=_;++p)d[p]={id:p,name:p,pos:p};_<u&&(u=_),(u<k||!ee[q.form_id].form_attributes.show_number_of_persons)&&(u=k),B&&V.each(j,function(e,o){n.hasOwnProperty(o.id)&&(i?o.services.hasOwnProperty(i)&&o.services[i].rating&&(n[o.id].name="★"+o.services[i].rating+" "+n[o.id].name):o.rating&&(n[o.id].name="★"+o.rating+" "+n[o.id].name))}),T(e.find(".bookly-js-select-category"),l,s),T(e.find(".bookly-js-select-service"),a,i),T(e.find(".bookly-js-select-employee"),n,t),T(e.find(".bookly-js-select-number-of-persons"),d,u)};P.off("click").off("change"),P.on("change",".bookly-js-select-location",function(){var e=V(this).closest(".bookly-js-chain-item"),o=this.value,t=e.find(".bookly-js-select-category").val(),a=e.find(".bookly-js-select-service").val(),s=e.find(".bookly-js-select-employee").val();if(o){var i=w?o:0;if(s&&(h[o].staff.hasOwnProperty(s)?a&&!j[s].services[a].locations.hasOwnProperty(i)&&(s=""):s=""),a){var r=!1;V.each(h[o].staff,function(e){if(j[e].services.hasOwnProperty(a)&&j[e].services[a].locations.hasOwnProperty(i))return!(r=!0)}),r||(a="")}if(t){r=!1;V.each(h[o].staff,function(e){if(V.each(j[e].services,function(e){if(v[e].category_id==t)return!(r=!0)}),r)return!1}),r||(t="")}}D(e,o,t,a,s),S(e,a,s,o)}),P.on("change",".bookly-js-select-category",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=this.value,a=e.find(".bookly-js-select-service").val(),s=e.find(".bookly-js-select-employee").val();if(t){if(C=!0,a&&v[a].category_id!=t&&(a=""),s){var i=!1;V.each(j[s].services,function(e){if(v[e].category_id==t)return!(i=!0)}),i||(s="")}}else C=!1;D(e,o,t,a,s)});var S=function(e,a,o,s){var t=e.find(".bookly-js-select-units-duration"),i=t.val();if(t.find("option").remove(),a){V.each(function(e){if(!e||w&&!s)return v[a].hasOwnProperty("units")?v[a].units:[{value:"",title:"-"}];var o=s||0,t=j[e].services[a].locations;return void 0===t?[{value:"",title:"-"}]:(t.hasOwnProperty(o)?t[o]:t[0]).units||[{value:"",title:"-"}]}(o),function(e,o){t.append(V("<option>",{value:o.value,text:o.title}))}),0!=t.find('option[value="'+i+'"]').length&&t.val(i)}else t.append(V("<option>",{value:"",text:"-"}))};if(P.on("change",".bookly-js-select-service",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=C?e.find(".bookly-js-select-category").val():"",a=this.value,s=e.find(".bookly-js-select-employee").val();a&&s&&!j[s].services.hasOwnProperty(a)&&(s=""),D(e,o,t,a,s),a&&e.find(".bookly-js-select-category").val(v[a].category_id),S(e,a,s,o)}),P.on("change",".bookly-js-select-employee",function(){var e=V(this).closest(".bookly-js-chain-item"),o=e.find(".bookly-js-select-location").val(),t=V(".bookly-js-select-category",e).val(),a=e.find(".bookly-js-select-service").val(),s=this.value;D(e,o,t,a,s),S(e,a,s,o)}),L&&V.each(v,function(e,o){o.name=o.name+" ( "+o.duration+" )"}),T(o,h),T(t,b),T(s,v),B){var O={};V.each(j,function(e,o){O[e]=V.extend({},o),o.rating&&(O[e].name="★"+o.rating+" "+O[e].name)}),T(i,O)}else T(i,j);o.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_locations),t.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_categories),s.closest(".bookly-form-group").toggle(!(ee[q.form_id].form_attributes.hide_services&&g.service_id)),i.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_staff_members),r.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_service_duration),n.closest(".bookly-form-group").toggle(ee[q.form_id].form_attributes.show_number_of_persons),l.closest(".bookly-form-group").toggle(!ee[q.form_id].form_attributes.hide_quantity),g.location_id&&o.val(g.location_id).trigger("change"),g.category_id&&t.val(g.category_id).trigger("change"),g.service_id&&s.val(g.service_id).trigger("change"),g.staff_id&&i.val(g.staff_id).trigger("change"),ee[q.form_id].form_attributes.hide_date&&V(".bookly-js-available-date",P).hide(),ee[q.form_id].form_attributes.hide_week_days&&V(".bookly-js-week-days",P).hide(),ee[q.form_id].form_attributes.hide_time_range&&V(".bookly-js-time-range",P).hide(),V.each(k,function(e,o){var t=a.clone().data("chain_key",e).removeClass("bookly-js-draft").css("display","table");a.find("select").each(function(e,o){t.find("select:eq("+e+")").val(o.value)}),0==(x=e)&&t.find('.bookly-js-actions button[data-action="drop"]').remove(),V(".bookly-js-chain-item:last",P).after(t),!ee[q.form_id].form_attributes.hide_locations&&o.location_id&&V(".bookly-js-select-location",t).val(o.location_id).trigger("change"),o.service_id&&(V(".bookly-js-select-service",t).val(o.service_id).trigger("change"),ee[q.form_id].form_attributes.hide_categories&&(ee[q.form_id].form_attributes.hasOwnProperty("const_category_id")?V(".bookly-js-select-category",t).val(ee[q.form_id].form_attributes.const_category_id):V(".bookly-js-select-category",t).val(""))),!ee[q.form_id].form_attributes.hide_staff_members&&1==o.staff_ids.length&&o.staff_ids[0]&&V(".bookly-js-select-employee",t).val(o.staff_ids[0]).trigger("change"),1<o.number_of_persons&&V(".bookly-js-select-number-of-persons",t).val(o.number_of_persons),1<o.units&&V(".bookly-js-select-units-duration",t).val(o.units),1<o.quantity&&V(".bookly-js-select-quantity",t).val(o.quantity)}),P.on("click",".bookly-js-mobile-step-1 .bookly-js-actions button",function(){switch(V(this).data("action")){case"plus":var t=a.clone();a.find("select").each(function(e,o){t.find("select:eq("+e+")").val(o.value)}),V(".bookly-js-chain-item:last",P).after(t.data("chain_key",++x).removeClass("bookly-js-draft").css("display","table"));break;case"drop":V(this).closest(".bookly-js-chain-item").remove()}}),c.on("change",function(){var e=V(this);e.is(":checked")?e.parent().not("[class*='active']").addClass("active"):e.parent().removeClass("active")}),f.on("change",function(){var e=V(this).val(),o=m.val(),t=V("option:last",f);m.empty(),f[0].selectedIndex<t.index()?V("option",this).each(function(){V(this).val()>e&&m.append(V(this).clone())}):m.append(t.clone()).val(t.val());var a=V("option:first",m).val();m.val(a<=o?o:a)});var M=function(){V(".bookly-js-select-service-error",P).hide(),V(".bookly-js-select-employee-error",P).hide(),V(".bookly-js-select-location-error",P).hide();var o=!0,t=null,a=null,s=null,i=null;return V(".bookly-js-chain-item:not(.bookly-js-draft)",P).each(function(){var e=V(this);t=V(".bookly-js-select-service",e),a=V(".bookly-js-select-employee",e),s=V(".bookly-js-select-location",e),t.removeClass("bookly-error"),a.removeClass("bookly-error"),s.removeClass("bookly-error"),t.val()||(o=!1,t.addClass("bookly-error"),V(".bookly-js-select-service-error",e).show(),i=t),p.hasOwnProperty("location")&&p.location&&!s.val()&&(o=!1,s.addClass("bookly-error"),V(".bookly-js-select-location-error",e).show(),i=s),p.staff&&!a.val()&&(o=!1,a.addClass("bookly-error"),V(".bookly-js-select-employee-error",e).show(),i=a)}),d.removeClass("bookly-error"),d.val()||(o=!1,d.addClass("bookly-error"),null===i&&(i=d)),V(".bookly-js-week-day:checked",P).length||(o=!1,null===i&&(i=c)),null!==i&&te(i),o};y.on("click",function(e){if(e.preventDefault(),M()){oe(this);var a={},s=0,i=0,r={required:2,optional:1,off:0};V(".bookly-js-chain-item:not(.bookly-js-draft)",P).each(function(){var e=V(this),o=[],t=v[V(".bookly-js-select-service",e).val()];V(".bookly-js-select-employee",e).val()?o.push(V(".bookly-js-select-employee",e).val()):V(".bookly-js-select-employee",e).find("option").each(function(){this.value&&o.push(this.value)}),a[e.data("chain_key")]={location_id:V(".bookly-js-select-location",e).val(),service_id:V(".bookly-js-select-service",e).val(),staff_ids:o,units:V(".bookly-js-select-units-duration",e).val()||1,number_of_persons:V(".bookly-js-select-number-of-persons",e).val()||1,quantity:V(".bookly-js-select-quantity",e).val()?V(".bookly-js-select-quantity",e).val():1},i=Math.max(i,r[t.hasOwnProperty("time_requirements")?t.time_requirements:"required"]),s+=t.has_extras});var o=[];V(".bookly-js-week-days .active input.bookly-js-week-day",P).each(function(){o.push(this.value)}),V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:{action:"bookly_session_save",csrf_token:BooklyL10n.csrf_token,form_id:q.form_id,chain:a,date_from:d.pickadate("picker").get("select","yyyy-mm-dd"),days:o,time_from:f.val(),time_to:m.val(),no_extras:0==s},dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){ee[q.form_id].no_time=0==i,ee[q.form_id].no_extras=0==s,ee[q.form_id].skip_steps.extras?ne({form_id:q.form_id}):0==s||"after_step_time"==ee[q.form_id].step_extras?ne({form_id:q.form_id}):le({form_id:q.form_id})}})}}),u.on("click",function(e,o){return M()&&(ee[q.form_id].skip_steps.service_part2?(oe(this),y.trigger("click")):(V(".bookly-js-mobile-step-1",P).hide(),V(".bookly-js-mobile-step-2",P).css("display","block"),1!=o&&te(P))),!1}),ee[q.form_id].skip_steps.service_part1?(u.trigger("click",[!0]),_.remove()):_.on("click",function(){return V(".bookly-js-mobile-step-1",P).show(),V(".bookly-js-mobile-step-2",P).hide(),s.val()&&V(".bookly-js-select-service",P).parent().removeClass("bookly-error"),!1})}}})}}window.bookly=function(e){var o;(ee[e.form_id]=e,ee[e.form_id].$container=V("#bookly-form-"+e.form_id),ee[e.form_id].timeZone="object"==typeof Intl?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0,ee[e.form_id].timeZoneOffset=(new Date).getTimezoneOffset(),ee[e.form_id].skip_steps.service=e.skip_steps.service_part1&&e.skip_steps.service_part2,"finished"==e.status.booking?ae({form_id:e.form_id}):"cancelled"==e.status.booking?se({form_id:e.form_id}):de({form_id:e.form_id,new_chain:!0}),e.hasOwnProperty("facebook")&&e.facebook.enabled&&(o=e,FB.init({appId:o.facebook.appId,status:!0,version:"v2.12"}),FB.getLoginStatus(function(e){"connected"===e.status?(o.facebook.enabled=!1,FB.api("/me",{fields:"id,name,first_name,last_name,email,link"},function(e){V.ajax({type:"POST",url:BooklyL10n.ajaxurl,data:V.extend(e,{action:"bookly_pro_facebook_login",csrf_token:BooklyL10n.csrf_token,form_id:o.form_id}),dataType:"json",xhrFields:{withCredentials:!0},crossDomain:"withCredentials"in new XMLHttpRequest,success:function(e){}})})):FB.Event.subscribe("auth.statusChange",function(e){o.facebook.onStatusChange&&o.facebook.onStatusChange(e)})})),e.hasOwnProperty("google_maps")&&e.google_maps.enabled)&&function(e,o,t){var a=document.createElement("script");a.type="text/javascript",void 0!==o&&(a.async=o);t instanceof Function&&(a.onload=t);document.head.appendChild(a),a.src=e}("https://maps.googleapis.com/maps/api/js?key="+e.google_maps.api_key+"&libraries=places",!0)}}(jQuery);
2
  //# sourceMappingURL=bookly.min.js.map
frontend/resources/js/bookly.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["bookly.js"],"names":["$","hasOwnProperty","opt","laddaStart","elem","ladda","Ladda","create","start","scrollTo","$elem","elemTop","offset","top","scrollTop","window","innerHeight","animate","stepComplete","params","data","extend","action","csrf_token","BooklyL10n","$container","form_id","ajax","url","ajaxurl","dataType","xhrFields","withCredentials","crossDomain","XMLHttpRequest","success","response","final_step_url","error","document","location","href","html","stepPayment","type","page_url","URL","split","disabled","save","status","booking","$payments","$apply_coupon_button","$coupon_input","$coupon_error","$deposit_mode","$coupon_info_text","$buttons","on","hide","this","val","show","eq","trigger","deposit_full","e","text","removeClass","coupon_code","errors","addClass","stop","$form","is","hasClass","preventDefault","stripe","card_action","find","card","number","cvc","exp_month","exp_year","cardPayment","handleErrorCartItemNotAvailable","error_message","Stripe","setPublishableKey","createToken","message","closest","length","payment_type","payment_id","submit","stepDetails","done","skip_steps","cart","stepTime","stepCart","failed_key","failed_cart_key","intlTelInput","update_details_dialog","woocommerce","google_maps","enabled","each","autocompleteInput","autocomplete","google","maps","places","Autocomplete","types","autocompleteFeidls","selector","getFieldValueByType","short","useShortName","addressComponents","getPlace","address_components","i","addressType","addListener","forEach","field","element","initGooglePlacesAutocomplete","body","phone_number","$guest_info","$phone_field","$email_field","$email_confirm_field","$birthday_day_field","$birthday_month_field","$birthday_year_field","$address_country_field","$address_state_field","$address_postcode_field","$address_city_field","$address_street_field","$address_street_number_field","$address_additional_field","$address_country_error","$address_state_error","$address_postcode_error","$address_city_error","$address_street_error","$address_street_number_error","$address_additional_error","$birthday_day_error","$birthday_month_error","$birthday_year_error","$full_name_field","$first_name_field","$last_name_field","$notes_field","$custom_field","$info_field","$phone_error","$email_error","$email_confirm_error","$name_error","$first_name_error","$last_name_error","$captcha","$custom_error","$info_error","$modals","$login_modal","$cst_modal","$next_btn","$errors","map","fn","toArray","$fields","populateForm","full_name","first_name","last_name","birthday","dateParts","year","parseInt","month","day","phone","country","state","postcode","city","street","street_number","additional_address","email","info_fields","id","value","filter","prop","preferredCountries","initialCountry","geoIpLookup","callback","get","always","resp","countryCode","utilsScript","utils","remove","appendTo","delegateTarget","end","log","pwd","rememberme","fadeOut","facebook","FB","XFBML","parse","parent","onStatusChange","undefined","api","fields","userInfo","force_update_customer","checkbox_values","custom_fields","captcha_ids","$this","push","$cf_container","key","custom_fields_data","JSON","stringify","email_confirm","address_iso","notes","empty","cart_url","$scroll_to","appointments_limit_reached","name","errorElement","formElement","field_id","$div","$custom_fields_collector","customer","no_time","no_extras","stepService","stepExtras","repeat","extras","step_extras","stepRepeat","css","attr","captcha_url","from_step","cart_prev_step","new_chain","$cart_item","cart_key","remove_cart_key","$trs_to_remove","delay","total_waiting_list","waiting_list_price","waiting_list_deposit","subtotal_price","subtotal_deposit","pay_now_deposit","pay_now_tax","total_price","total_tax","edit_cart_item","$repeat_enabled","$next_step","$repeat_container","$variants","$repeat_variant","$button_get_schedule","$variant_weekly","$variant_monthly","$date_until","$repeat_times","$monthly_specific_day","$monthly_week_day","$repeat_every_day","$week_day","$schedule_container","$days_error","$schedule_slots","$intersection_info","$info_help","$info_wells","$pagination","$schedule_row_template","pages_warning_info","short_date_format","bound_date","min","date_min","max","date_max","schedule","prepareButtonNextState","is_disabled","new_prop_disabled","deleted","addTimeSlotControl","$schedule_row","options","preferred_time","selected_time","prefer","$time","index","option","$option","title","append","toggle","renderSchedulePage","page","$row","count","warning_pages","j","clone","datetime","display_date","all_day_service_time","display_time","another_time","$btn","replace","join","renderFullSchedule","item","row_index","$date","$edit_button","ladda_round","pickadate","formatSubmit","format","clear","close","today","monthsFull","months","weekdaysFull","days","weekdaysShort","daysShort","labelMonthNext","nextMonth","labelMonthPrev","prevMonth","firstDay","start_of_week","onSet","exclude","slots","date","set","Date","$date_container","$time_container","$select","isDateMatchesSelections","current_date","inArray","toLowerCase","week_days","diff","date_from","startOf","checked_week_days","endOf","month_diff","updateRepeatDate","number_of_times","repeat_times","slice","date_until","moment_until","moment","add","isBefore","subtract","updateRepeatTimes","date_format","open_repeat_onchange","repeated","repeat_data","repeat_params","until","every","weekday","could_be_repeated","not","off","unrepeat","slots_to_send","concat","add_to_cart","xhr_render_time","time","prev_step","abort","service","use_client_time_zone","time_zone","timeZone","time_zone_offset","timeZoneOffset","$screens","slots_per_column","columns_per_screen","$columnizer_wrap","$columnizer","$time_next_button","$time_prev_button","$current_screen","column_width","time_slots_wide","column_class","columns","screen_index","has_more_slots","form_hidden","show_calendar","is_rtl","show_day_per_column","day_one_column","prepareSlotsHtml","slots_data","selected_date","showSpinner","$input","disable","disabled_days","closeOnSelect","klass","picker","select","initSlots","open","onClose","onRender","UTC","setUTCMonth","getUTCMonth","toJSON","substr","group","group_slots","has_slots","height","width","hammertime","hammer","swipe_velocity","left","duration","$button","last_slot","$html","$first_day","opts","lines","radius","Spinner","spin","$column","$screen","slots_count","max_slots","splice","$columns","$first_slot","$group_slot","prepend","data-style","data-spinner-color","data-spinner-size","slot","time_text","additional_text","$back_step","$goto_cart","$extras_items","$extras_summary","currency","extrasChanged","$extras_item","quantity","$total","parseFloat","toFixed","precision","toggleClass","amount","multiplier","Math","$extras_container","chain_id","chain_extras","$chain_item_draft","$select_location","$select_category","$select_service","$select_employee","$select_duration","$select_nop","$select_quantity","$date_from","$select_time_from","$select_time_to","$mobile_next_step","$mobile_prev_step","locations","categories","services","staff","chain","required","defaults","services_per_location","last_chain_key","category_selected","service_name_with_duration","show_ratings","timestamp","isNumeric","getDay","setSelect","obj","docFragment","createDocumentFragment","Object","keys","sort","a","b","pos","object","createElement","appendChild","setSelects","$chain_item","location_id","category_id","service_id","staff_id","_location_id","_staff","_services","_categories","_nop","_max_capacity","_min_capacity","staff_member","loc_id","loc_srv","min_capacity","max_capacity","price","s_id","category_ids","service_ids","st_id","category","nop","form_attributes","show_number_of_persons","rating","valid","updateServiceDurationSelect","$units_duration","current_duration","locationId","staffLocations","units","getUnitsByStaffId","hide_locations","hide_categories","hide_services","hide_staff_members","hide_service_duration","hide_quantity","hide_date","hide_week_days","hide_time_range","chain_item","after","const_category_id","staff_ids","number_of_persons","$new_chain","start_time","end_time","$last_time_entry","selectedIndex","first_value","stepServiceValidator","$chain","has_extras","time_requirements","_time_requirements","optional","_service","time_from","time_to","skip_scroll","service_part2","service_part1","bookly","Intl","DateTimeFormat","resolvedOptions","getTimezoneOffset","init","appId","version","getLoginStatus","Event","subscribe","src","async","onLoad","script","Function","onload","head","importScript","api_key","jQuery"],"mappings":"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"}
1
+ {"version":3,"sources":["bookly.js"],"names":["$","hasOwnProperty","opt","laddaStart","elem","ladda","Ladda","create","start","scrollTo","$elem","elemTop","offset","top","scrollTop","window","innerHeight","animate","stepComplete","params","data","extend","action","csrf_token","BooklyL10n","$container","form_id","ajax","url","ajaxurl","dataType","xhrFields","withCredentials","crossDomain","XMLHttpRequest","success","response","final_step_url","error","document","location","href","html","stepPayment","type","page_url","URL","split","disabled","save","status","booking","$payments","$apply_coupon_button","$coupon_input","$coupon_error","$deposit_mode","$coupon_info_text","$buttons","on","hide","this","val","show","eq","trigger","deposit_full","e","text","removeClass","coupon_code","errors","addClass","stop","$form","is","hasClass","preventDefault","stripe","card_action","find","card","number","cvc","exp_month","exp_year","cardPayment","handleErrorCartItemNotAvailable","error_message","Stripe","setPublishableKey","createToken","message","closest","length","payment_type","payment_id","submit","stepDetails","done","skip_steps","cart","stepTime","stepCart","failed_key","failed_cart_key","intlTelInput","update_details_dialog","woocommerce","google_maps","enabled","each","autocompleteInput","autocomplete","google","maps","places","Autocomplete","types","autocompleteFeidls","selector","getFieldValueByType","short","useShortName","addressComponents","getPlace","address_components","i","addressType","addListener","forEach","field","element","initGooglePlacesAutocomplete","body","phone_number","$guest_info","$phone_field","$email_field","$email_confirm_field","$birthday_day_field","$birthday_month_field","$birthday_year_field","$address_country_field","$address_state_field","$address_postcode_field","$address_city_field","$address_street_field","$address_street_number_field","$address_additional_field","$address_country_error","$address_state_error","$address_postcode_error","$address_city_error","$address_street_error","$address_street_number_error","$address_additional_error","$birthday_day_error","$birthday_month_error","$birthday_year_error","$full_name_field","$first_name_field","$last_name_field","$notes_field","$custom_field","$info_field","$phone_error","$email_error","$email_confirm_error","$name_error","$first_name_error","$last_name_error","$captcha","$custom_error","$info_error","$modals","$login_modal","$cst_modal","$next_btn","$errors","map","fn","toArray","$fields","populateForm","full_name","first_name","last_name","birthday","dateParts","year","parseInt","month","day","phone","country","state","postcode","city","street","street_number","additional_address","email","info_fields","id","value","filter","prop","preferredCountries","initialCountry","geoIpLookup","callback","get","always","resp","countryCode","utilsScript","utils","remove","appendTo","delegateTarget","end","log","pwd","rememberme","fadeOut","facebook","FB","XFBML","parse","parent","onStatusChange","undefined","api","fields","userInfo","force_update_customer","checkbox_values","custom_fields","captcha_ids","$this","push","$cf_container","key","custom_fields_data","JSON","stringify","email_confirm","address_iso","notes","empty","cart_url","$scroll_to","appointments_limit_reached","name","errorElement","formElement","field_id","$div","$custom_fields_collector","customer","no_time","no_extras","stepService","stepExtras","repeat","extras","step_extras","stepRepeat","css","attr","captcha_url","from_step","cart_prev_step","new_chain","$cart_item","cart_key","remove_cart_key","$trs_to_remove","delay","total_waiting_list","waiting_list_price","waiting_list_deposit","subtotal_price","subtotal_deposit","pay_now_deposit","pay_now_tax","total_price","total_tax","edit_cart_item","$repeat_enabled","$next_step","$repeat_container","$variants","$repeat_variant","$button_get_schedule","$variant_weekly","$variant_monthly","$date_until","$repeat_times","$monthly_specific_day","$monthly_week_day","$repeat_every_day","$week_day","$schedule_container","$days_error","$schedule_slots","$intersection_info","$info_help","$info_wells","$pagination","$schedule_row_template","pages_warning_info","short_date_format","bound_date","min","date_min","max","date_max","schedule","prepareButtonNextState","is_disabled","new_prop_disabled","deleted","addTimeSlotControl","$schedule_row","options","preferred_time","selected_time","prefer","$time","index","option","$option","title","append","toggle","renderSchedulePage","page","$row","count","warning_pages","j","clone","datetime","display_date","all_day_service_time","display_time","another_time","$btn","replace","join","renderFullSchedule","item","row_index","$date","$edit_button","ladda_round","pickadate","formatSubmit","format","clear","close","today","monthsFull","months","weekdaysFull","days","weekdaysShort","daysShort","labelMonthNext","nextMonth","labelMonthPrev","prevMonth","firstDay","start_of_week","onSet","exclude","slots","date","set","Date","$date_container","$time_container","$select","isDateMatchesSelections","current_date","inArray","toLowerCase","week_days","diff","date_from","startOf","checked_week_days","endOf","month_diff","updateRepeatDate","number_of_times","repeat_times","slice","date_until","moment_until","moment","add","isBefore","subtract","updateRepeatTimes","date_format","open_repeat_onchange","repeated","repeat_data","repeat_params","until","every","weekday","could_be_repeated","not","off","unrepeat","slots_to_send","concat","add_to_cart","xhr_render_time","time","prev_step","service","use_client_time_zone","time_zone","timeZone","time_zone_offset","timeZoneOffset","$screens","slots_per_column","columns_per_screen","$columnizer_wrap","$columnizer","$time_next_button","$time_prev_button","$current_screen","column_width","time_slots_wide","column_class","columns","screen_index","has_more_slots","form_hidden","show_calendar","is_rtl","show_day_per_column","day_one_column","prepareSlotsHtml","slots_data","selected_date","showSpinner","dropAjax","$input","disable","disabled_days","closeOnSelect","klass","picker","select","initSlots","open","onClose","onRender","UTC","setUTCMonth","getUTCMonth","toJSON","substr","group","group_slots","has_slots","height","width","hammertime","hammer","swipe_velocity","left","duration","$button","last_slot","$html","$first_day","opts","lines","radius","Spinner","spin","$column","$screen","slots_count","max_slots","splice","$columns","$first_slot","$group_slot","prepend","xhr_session_save","abort","data-style","data-spinner-color","data-spinner-size","slot","time_text","additional_text","$back_step","$goto_cart","$extras_items","$extras_summary","currency","extrasChanged","$extras_item","quantity","$total","parseFloat","toFixed","precision","toggleClass","amount","multiplier","Math","$extras_container","chain_id","chain_extras","$chain_item_draft","$select_location","$select_category","$select_service","$select_employee","$select_duration","$select_nop","$select_quantity","$date_from","$select_time_from","$select_time_to","$mobile_next_step","$mobile_prev_step","locations","categories","services","staff","chain","required","defaults","services_per_location","last_chain_key","category_selected","service_name_with_duration","show_ratings","timestamp","isNumeric","getDay","setSelect","obj","docFragment","createDocumentFragment","Object","keys","sort","a","b","pos","object","createElement","appendChild","setSelects","$chain_item","location_id","category_id","service_id","staff_id","_location_id","_staff","_services","_categories","_nop","_max_capacity","_min_capacity","staff_member","loc_id","loc_srv","min_capacity","max_capacity","price","s_id","category_ids","service_ids","st_id","category","nop","form_attributes","show_number_of_persons","rating","valid","updateServiceDurationSelect","$units_duration","current_duration","locationId","staffLocations","units","getUnitsByStaffId","hide_locations","hide_categories","hide_services","hide_staff_members","hide_service_duration","hide_quantity","hide_date","hide_week_days","hide_time_range","chain_item","after","const_category_id","staff_ids","number_of_persons","$new_chain","start_time","end_time","$last_time_entry","selectedIndex","first_value","stepServiceValidator","$chain","has_extras","time_requirements","_time_requirements","optional","_service","time_from","time_to","skip_scroll","service_part2","service_part1","bookly","Intl","DateTimeFormat","resolvedOptions","getTimezoneOffset","init","appId","version","getLoginStatus","Event","subscribe","src","async","onLoad","script","Function","onload","head","importScript","api_key","jQuery"],"mappings":"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"}
frontend/resources/js/src/time_step.js CHANGED
@@ -21,10 +21,6 @@ export default function stepTime(params, error_message) {
21
  }
22
  return;
23
  }
24
- if (xhr_render_time != null) {
25
- xhr_render_time.abort();
26
- xhr_render_time = null;
27
- }
28
  var data = {
29
  action : 'bookly_render_time',
30
  csrf_token: BooklyL10n.csrf_token,
@@ -56,6 +52,13 @@ export default function stepTime(params, error_message) {
56
  return response;
57
  }
58
 
 
 
 
 
 
 
 
59
  xhr_render_time = $.ajax({
60
  url : BooklyL10n.ajaxurl,
61
  data : data,
@@ -117,6 +120,7 @@ export default function stepTime(params, error_message) {
117
  opt[params.form_id].timeZone = this.value;
118
  opt[params.form_id].timeZoneOffset = undefined;
119
  showSpinner();
 
120
  stepTime({
121
  form_id: params.form_id,
122
  time_zone: opt[params.form_id].timeZone
@@ -157,6 +161,7 @@ export default function stepTime(params, error_message) {
157
  $time_next_button.toggle($screens.length != 1);
158
  } else {
159
  // Load new data from server.
 
160
  stepTime({form_id: params.form_id, selected_date : date});
161
  showSpinner();
162
  }
@@ -168,13 +173,15 @@ export default function stepTime(params, error_message) {
168
  },
169
  onRender: function() {
170
  var date = new Date(Date.UTC(this.get('view').year, this.get('view').month));
171
- $('.picker__nav--next').on('click', function() {
172
  date.setUTCMonth(date.getUTCMonth() + 1);
 
173
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
174
  showSpinner();
175
  });
176
- $('.picker__nav--prev').on('click', function() {
177
  date.setUTCMonth(date.getUTCMonth() - 1);
 
178
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
179
  showSpinner();
180
  });
@@ -453,7 +460,12 @@ export default function stepTime(params, error_message) {
453
  });
454
 
455
  // On click on a slot.
 
456
  $('button.bookly-hour', $container).off('click').on('click', function (e) {
 
 
 
 
457
  e.preventDefault();
458
  var $this = $(this),
459
  data = {
@@ -464,7 +476,7 @@ export default function stepTime(params, error_message) {
464
  };
465
  $this.attr({'data-style': 'zoom-in','data-spinner-color':'#333','data-spinner-size':'40'});
466
  laddaStart(this);
467
- $.ajax({
468
  type : 'POST',
469
  url : BooklyL10n.ajaxurl,
470
  data : data,
21
  }
22
  return;
23
  }
 
 
 
 
24
  var data = {
25
  action : 'bookly_render_time',
26
  csrf_token: BooklyL10n.csrf_token,
52
  return response;
53
  }
54
 
55
+ function dropAjax() {
56
+ if (xhr_render_time != null) {
57
+ xhr_render_time.abort();
58
+ xhr_render_time = null;
59
+ }
60
+ }
61
+
62
  xhr_render_time = $.ajax({
63
  url : BooklyL10n.ajaxurl,
64
  data : data,
120
  opt[params.form_id].timeZone = this.value;
121
  opt[params.form_id].timeZoneOffset = undefined;
122
  showSpinner();
123
+ dropAjax();
124
  stepTime({
125
  form_id: params.form_id,
126
  time_zone: opt[params.form_id].timeZone
161
  $time_next_button.toggle($screens.length != 1);
162
  } else {
163
  // Load new data from server.
164
+ dropAjax();
165
  stepTime({form_id: params.form_id, selected_date : date});
166
  showSpinner();
167
  }
173
  },
174
  onRender: function() {
175
  var date = new Date(Date.UTC(this.get('view').year, this.get('view').month));
176
+ $('.picker__nav--next', $container).on('click', function() {
177
  date.setUTCMonth(date.getUTCMonth() + 1);
178
+ dropAjax();
179
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
180
  showSpinner();
181
  });
182
+ $('.picker__nav--prev', $container).on('click', function() {
183
  date.setUTCMonth(date.getUTCMonth() - 1);
184
+ dropAjax();
185
  stepTime({form_id: params.form_id, selected_date : date.toJSON().substr(0, 10)});
186
  showSpinner();
187
  });
460
  });
461
 
462
  // On click on a slot.
463
+ var xhr_session_save = null;
464
  $('button.bookly-hour', $container).off('click').on('click', function (e) {
465
+ if ( xhr_session_save != null) {
466
+ xhr_session_save.abort();
467
+ xhr_session_save = null;
468
+ }
469
  e.preventDefault();
470
  var $this = $(this),
471
  data = {
476
  };
477
  $this.attr({'data-style': 'zoom-in','data-spinner-color':'#333','data-spinner-size':'40'});
478
  laddaStart(this);
479
+ xhr_session_save = $.ajax({
480
  type : 'POST',
481
  url : BooklyL10n.ajaxurl,
482
  data : data,
languages/bookly-ru_RU.mo CHANGED
Binary file
languages/bookly-ru_RU.po CHANGED
@@ -3757,6 +3757,18 @@ msgstr "Дорогой(ая) {client_name}.\n"
3757
  "{company_phone}\n"
3758
  "{company_website}"
3759
 
 
 
 
 
 
 
 
 
 
 
 
 
3760
  #:
3761
  msgid "Invoice for your appointment"
3762
  msgstr "Счёт за вашу встречу"
@@ -5858,6 +5870,10 @@ msgstr "общий налог для бронирования (суммарно
5858
  msgid "total price without tax"
5859
  msgstr "общая стоимость бронирования без налога"
5860
 
 
 
 
 
5861
  #:
5862
  msgid "Dear {client_name}.\n"
5863
  "\n"
@@ -6139,7 +6155,7 @@ msgstr "Необходимо указать название группы"
6139
 
6140
  #:
6141
  msgid "Important: for two-way sync, your website must use HTTPS. Google Calendar API will be able to send notifications to HTTPS address only if there is a valid SSL certificate installed on your web server. Follow the steps in this <a href=\"%s\" target=\"_blank\">document</a> to <b>verify and register your domain</b>."
6142
- msgstr "Важно: для двусторонней синхронизации ваш сайт должен использовать HTTPS. API Google Календаря сможет отправлять уведомления на HTTPS-адрес только в том случае, если на вашем веб-сервере установлен действительный SSL сертификат. Выполните действия, описанные в этом <a href=\"%s\" target=\"_blank\"> документе </a>, чтобы <b> проверить и зарегистрировать свой домен </b>."
6143
 
6144
  #:
6145
  msgid "Allows to set the start and end times for an appointment for services with the duration of 1 day or longer. This time will be displayed in notifications to customers, backend calendar and codes for booking form."
3757
  "{company_phone}\n"
3758
  "{company_website}"
3759
 
3760
+ #:
3761
+ msgid "New invoice #{invoice_number}"
3762
+ msgstr "Новый счёт №{invoice_number}"
3763
+
3764
+ #:
3765
+ msgid "Hello.\n"
3766
+ "\n"
3767
+ "Attached please find invoice #{invoice_number} for an appointment scheduled by {client_first_name} {client_last_name}"
3768
+ msgstr "Здравствуйте.\n"
3769
+ "\n"
3770
+ "В прикрепленном файле прилагается счёт №{invoice_number} за встречу, назначенную {client_first_name} {client_last_name}"
3771
+
3772
  #:
3773
  msgid "Invoice for your appointment"
3774
  msgstr "Счёт за вашу встречу"
5870
  msgid "total price without tax"
5871
  msgstr "общая стоимость бронирования без налога"
5872
 
5873
+ #:
5874
+ msgid "Note if you use price correction to change the service cost according to the payment gateway used, tax will not be calculated for the additional amount to the cost. If you need to report the exact tax amount to the payment system, do not use additional charge."
5875
+ msgstr "Обратите внимание, если вы используете корректировку цены для изменения стоимости услуги в соответствии с используемой платежной системой, налог не будет рассчитываться для надбавки к стоимости. Если вам нужно сообщить точную сумму налога в платежную систему, не используйте надбавку к стоимости."
5876
+
5877
  #:
5878
  msgid "Dear {client_name}.\n"
5879
  "\n"
6155
 
6156
  #:
6157
  msgid "Important: for two-way sync, your website must use HTTPS. Google Calendar API will be able to send notifications to HTTPS address only if there is a valid SSL certificate installed on your web server. Follow the steps in this <a href=\"%s\" target=\"_blank\">document</a> to <b>verify and register your domain</b>."
6158
+ msgstr "Важно: для двусторонней синхронизации ваш сайт должен использовать HTTPS. API Google Календаря сможет отправлять уведомления на HTTPS-адрес только в том случае, если на вашем веб-сервере установлен действительный SSL сертификат. Выполните действия, описанные в этом <a href=\"%s\" target=\"_blank\"> документе </a>, чтобы <b> проверить и зарегистрировать свой домен </ b>."
6159
 
6160
  #:
6161
  msgid "Allows to set the start and end times for an appointment for services with the duration of 1 day or longer. This time will be displayed in notifications to customers, backend calendar and codes for booking form."
lib/Cart.php CHANGED
@@ -220,8 +220,14 @@ class Cart
220
  }
221
 
222
  foreach ( $cart_item->getSlots() as $key => $slot ) {
223
- list ( $service_id, $staff_id, $datetime ) = $slot;
 
224
  $service = Entities\Service::find( $service_id );
 
 
 
 
 
225
 
226
  /*
227
  * Get appointment with the same params.
@@ -230,11 +236,12 @@ class Cart
230
  */
231
  $appointment = new Entities\Appointment();
232
  // Do not try to find appointment for tasks
233
- if ( $datetime !== null ) {
234
  $appointment->loadBy( array(
235
  'service_id' => $service_id,
236
  'staff_id' => $staff_id,
237
- 'start_date' => $datetime,
 
238
  ) );
239
  }
240
  if ( $appointment->isLoaded() == false ) {
@@ -244,16 +251,8 @@ class Cart
244
  ->setServiceId( $service_id )
245
  ->setStaffId( $staff_id )
246
  ->setStaffAny( count( $cart_item->getStaffIds() ) > 1 )
247
- ->setStartDate( $datetime )
248
- ->setEndDate(
249
- $datetime !== null
250
- ? date( 'Y-m-d H:i:s', strtotime( $datetime ) + (
251
- $collaborative_max_duration !== null
252
- ? $collaborative_max_duration - $collaborative_extras_durations[ $key ]
253
- : $cart_item->getUnits() * $service->getDuration()
254
- ) )
255
- : null
256
- )
257
  ->save();
258
  } else {
259
  $update = false;
@@ -331,7 +330,7 @@ class Cart
331
  $item = $collaborative->addItem( $item );
332
  }
333
  if ( $series ) {
334
- $series->addItem( $item );
335
  } else {
336
  $order->addItem( $i, $item );
337
  }
220
  }
221
 
222
  foreach ( $cart_item->getSlots() as $key => $slot ) {
223
+ list ( $service_id, $staff_id, $start_datetime ) = $slot;
224
+
225
  $service = Entities\Service::find( $service_id );
226
+ $item_duration = $collaborative_max_duration !== null
227
+ ? $collaborative_max_duration - $collaborative_extras_durations[ $key ]
228
+ : $cart_item->getUnits() * $service->getDuration();
229
+
230
+ $end_datetime = $start_datetime !== null ? date( 'Y-m-d H:i:s', strtotime( $start_datetime ) + $item_duration ) : null;
231
 
232
  /*
233
  * Get appointment with the same params.
236
  */
237
  $appointment = new Entities\Appointment();
238
  // Do not try to find appointment for tasks
239
+ if ( $start_datetime !== null ) {
240
  $appointment->loadBy( array(
241
  'service_id' => $service_id,
242
  'staff_id' => $staff_id,
243
+ 'start_date' => $start_datetime,
244
+ 'end_date' => $end_datetime,
245
  ) );
246
  }
247
  if ( $appointment->isLoaded() == false ) {
251
  ->setServiceId( $service_id )
252
  ->setStaffId( $staff_id )
253
  ->setStaffAny( count( $cart_item->getStaffIds() ) > 1 )
254
+ ->setStartDate( $start_datetime )
255
+ ->setEndDate( $end_datetime )
 
 
 
 
 
 
 
 
256
  ->save();
257
  } else {
258
  $update = false;
330
  $item = $collaborative->addItem( $item );
331
  }
332
  if ( $series ) {
333
+ $series->addItem( $i, $item );
334
  } else {
335
  $order->addItem( $i, $item );
336
  }
lib/Config.php CHANGED
@@ -440,7 +440,7 @@ abstract class Config
440
  */
441
  public static function showWideTimeSlots()
442
  {
443
- return self::groupBookingActive() && get_option( 'bookly_group_booking_enabled' ) && get_option( 'bookly_group_booking_app_show_nop' );
444
  }
445
 
446
  /**
440
  */
441
  public static function showWideTimeSlots()
442
  {
443
+ return self::groupBookingActive() && get_option( 'bookly_group_booking_app_show_nop' );
444
  }
445
 
446
  /**
lib/UserBookingData.php CHANGED
@@ -193,30 +193,31 @@ class UserBookingData
193
  ->setEmailConfirm( $current_user->user_email );
194
  }
195
  } elseif ( get_option( 'bookly_cst_remember_in_cookie' ) && isset( $_COOKIE['bookly-cst-full-name'] ) ) {
196
- $date = explode( '-', $_COOKIE['bookly-cst-birthday'] );
197
- $birthday = array(
198
- 'year' => $date[0],
199
- 'month' => isset( $date[1] ) ? (int) $date[1] : 0,
200
- 'day' => isset( $date[2] ) ? (int) $date[2] : 0,
201
- );
202
-
203
  $this
204
  ->setFullName( $_COOKIE['bookly-cst-full-name'] )
205
- ->setFirstName( $_COOKIE['bookly-cst-first-name'] )
206
- ->setLastName( $_COOKIE['bookly-cst-last-name'] )
207
  ->setEmail( $_COOKIE['bookly-cst-email'] )
208
  ->setEmailConfirm( $_COOKIE['bookly-cst-email'] )
209
  ->setPhone( $_COOKIE['bookly-cst-phone'] )
210
- ->setBirthday( $birthday )
211
- ->setCountry( $_COOKIE['bookly-cst-country'] )
212
- ->setState( $_COOKIE['bookly-cst-state'] )
213
- ->setPostcode( $_COOKIE['bookly-cst-postcode'] )
214
- ->setCity( $_COOKIE['bookly-cst-city'] )
215
- ->setStreet( $_COOKIE['bookly-cst-street'] )
216
- ->setStreetNumber( $_COOKIE['bookly-cst-street-number'] )
217
- ->setAdditionalAddress( $_COOKIE['bookly-cst-additional-address'] )
218
  ->setInfoFields( (array) json_decode( stripslashes( $_COOKIE['bookly-cst-info-fields'] ), true ) )
219
  ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  }
221
 
222
  // Register destructor (should work in cases when regular __destruct() does not work).
193
  ->setEmailConfirm( $current_user->user_email );
194
  }
195
  } elseif ( get_option( 'bookly_cst_remember_in_cookie' ) && isset( $_COOKIE['bookly-cst-full-name'] ) ) {
 
 
 
 
 
 
 
196
  $this
197
  ->setFullName( $_COOKIE['bookly-cst-full-name'] )
 
 
198
  ->setEmail( $_COOKIE['bookly-cst-email'] )
199
  ->setEmailConfirm( $_COOKIE['bookly-cst-email'] )
200
  ->setPhone( $_COOKIE['bookly-cst-phone'] )
 
 
 
 
 
 
 
 
201
  ->setInfoFields( (array) json_decode( stripslashes( $_COOKIE['bookly-cst-info-fields'] ), true ) )
202
  ;
203
+ if ( isset( $_COOKIE['bookly-cst-birthday'] ) ) {
204
+ $date = explode( '-', $_COOKIE['bookly-cst-birthday'] );
205
+ $birthday = array(
206
+ 'year' => $date[0],
207
+ 'month' => isset( $date[1] ) ? (int) $date[1] : 0,
208
+ 'day' => isset( $date[2] ) ? (int) $date[2] : 0,
209
+ );
210
+ $this->setBirthday( $birthday );
211
+ }
212
+ if ( isset( $_COOKIE['bookly-cst-first-name'] ) ) { $this->setFirstName( $_COOKIE['bookly-cst-first-name'] ); }
213
+ if ( isset( $_COOKIE['bookly-cst-last-name'] ) ) { $this->setLastName( $_COOKIE['bookly-cst-last-name'] ); }
214
+ if ( isset( $_COOKIE['bookly-cst-country'] ) ) { $this->setCountry( $_COOKIE['bookly-cst-country'] ); }
215
+ if ( isset( $_COOKIE['bookly-cst-state'] ) ) { $this->setState( $_COOKIE['bookly-cst-state'] ); }
216
+ if ( isset( $_COOKIE['bookly-cst-postcode'] ) ) { $this->setPostcode( $_COOKIE['bookly-cst-postcode'] ); }
217
+ if ( isset( $_COOKIE['bookly-cst-city'] ) ) { $this->setCity( $_COOKIE['bookly-cst-city'] ); }
218
+ if ( isset( $_COOKIE['bookly-cst-street'] ) ) { $this->setStreet( $_COOKIE['bookly-cst-street'] ); }
219
+ if ( isset( $_COOKIE['bookly-cst-street-number'] ) ) { $this->setStreetNumber( $_COOKIE['bookly-cst-street-number'] ); }
220
+ if ( isset( $_COOKIE['bookly-cst-additional-address'] ) ) { $this->setAdditionalAddress( $_COOKIE['bookly-cst-additional-address'] ); }
221
  }
222
 
223
  // Register destructor (should work in cases when regular __destruct() does not work).
lib/base/Installer.php CHANGED
@@ -116,8 +116,11 @@ abstract class Installer extends Schema
116
  private function getTables()
117
  {
118
  $tables = array();
119
- foreach ( \Bookly\Lib\Plugin::getEntityClasses() as $entity_class ) {
120
- $tables[] = $entity_class::getTableName();
 
 
 
121
  }
122
 
123
  return $tables;
116
  private function getTables()
117
  {
118
  $tables = array();
119
+ // Check instance because, add-ons for Bookly < 16.4 can call this method, and drop Bookly tables
120
+ if ( $this instanceof \Bookly\Lib\Installer ) {
121
+ foreach ( \Bookly\Lib\Plugin::getEntityClasses() as $entity_class ) {
122
+ $tables[] = $entity_class::getTableName();
123
+ }
124
  }
125
 
126
  return $tables;
lib/data_holders/booking/Order.php CHANGED
@@ -207,7 +207,7 @@ class Order
207
  $item = $compound->addItem( $item );
208
  }
209
  if ( $series ) {
210
- $series->addItem( $item );
211
  } else {
212
  $order->addItem( $i, $item );
213
  }
207
  $item = $compound->addItem( $item );
208
  }
209
  if ( $series ) {
210
+ $series->addItem( $i, $item );
211
  } else {
212
  $order->addItem( $i, $item );
213
  }
lib/data_holders/booking/Series.php CHANGED
@@ -60,12 +60,13 @@ class Series extends Item
60
  /**
61
  * Add item.
62
  *
 
63
  * @param Item $item
64
  * @return $this
65
  */
66
- public function addItem( Item $item )
67
  {
68
- $this->items[] = $item;
69
 
70
  return $this;
71
  }
60
  /**
61
  * Add item.
62
  *
63
+ * @param string $id
64
  * @param Item $item
65
  * @return $this
66
  */
67
+ public function addItem( $id, Item $item )
68
  {
69
+ $this->items[ $id ] = $item;
70
 
71
  return $this;
72
  }
lib/entities/CustomerAppointment.php CHANGED
@@ -175,6 +175,8 @@ class CustomerAppointment extends Lib\Base\Entity
175
  } else {
176
  if ( $this->getCompoundToken() ) {
177
  Lib\Proxy\CompoundServices::cancelAppointment( $this );
 
 
178
  } else {
179
  $this->save();
180
  if ( $this->getExtras() != '[]' ) {
175
  } else {
176
  if ( $this->getCompoundToken() ) {
177
  Lib\Proxy\CompoundServices::cancelAppointment( $this );
178
+ } elseif ( $this->getCollaborativeToken() ) {
179
+ Lib\Proxy\CollaborativeServices::cancelAppointment( $this );
180
  } else {
181
  $this->save();
182
  if ( $this->getExtras() != '[]' ) {
lib/notifications/base/Codes.php DELETED
@@ -1,93 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\Base;
3
-
4
- use Bookly\Lib\Utils;
5
-
6
- /**
7
- * Class Codes
8
- * @package Bookly\Lib\Notifications\Base
9
- */
10
- abstract class Codes
11
- {
12
- /**
13
- * Protected constructor.
14
- */
15
- protected function __construct()
16
- {
17
- // Use static methods for creating new objects.
18
- }
19
-
20
- /**
21
- * Do replacements.
22
- *
23
- * @param string $text
24
- * @param string $format
25
- * @return string
26
- */
27
- public function replace( $text, $format = 'text' )
28
- {
29
- $codes = $this->getReplaceCodes( $format );
30
-
31
- return strtr( $text, $codes );
32
- }
33
-
34
- /**
35
- * Do replacements for SMS.
36
- * Returns both personal and impersonal text.
37
- *
38
- * @param string $text
39
- * @return array
40
- */
41
- public function replaceForSms( $text )
42
- {
43
- $codes = $this->getReplaceCodes( 'text' );
44
-
45
- // Impersonal codes.
46
- $impersonal_codes = array();
47
- foreach ( $codes as $name => $code ) {
48
- $count = Utils\SMSCounter::count( strval( $code ) );
49
- if ( $count->encoding == Utils\SMSCounter::UTF16 ) {
50
- $impersonal_symbol = "ϔ";
51
- } else {
52
- $impersonal_symbol = "X";
53
- }
54
- $impersonal_codes[ $name ] = preg_replace( '/[^\s]/', $impersonal_symbol, $code );
55
- }
56
-
57
- return array(
58
- 'personal' => strtr( $text, $codes ),
59
- 'impersonal' => strtr( $text, $impersonal_codes ),
60
- );
61
- }
62
-
63
- /**
64
- * Get replacement codes for given format.
65
- *
66
- * @param string $format
67
- * @return array
68
- */
69
- protected function getReplaceCodes( $format )
70
- {
71
- $company_logo = '';
72
-
73
- if ( $format == 'html' ) {
74
- $img = wp_get_attachment_image_src( get_option( 'bookly_co_logo_attachment_id' ), 'full' );
75
- // Company logo as <img> tag.
76
- if ( $img ) {
77
- $company_logo = sprintf(
78
- '<img src="%s" alt="%s" />',
79
- esc_attr( $img[0] ),
80
- esc_attr( get_option( 'bookly_co_name' ) )
81
- );
82
- }
83
- }
84
-
85
- return array(
86
- '{company_address}' => $format == 'html' ? nl2br( get_option( 'bookly_co_address' ) ) : get_option( 'bookly_co_address' ),
87
- '{company_logo}' => $company_logo,
88
- '{company_name}' => get_option( 'bookly_co_name' ),
89
- '{company_phone}' => get_option( 'bookly_co_phone' ),
90
- '{company_website}' => get_option( 'bookly_co_website' ),
91
- );
92
- }
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/base/Sender.php DELETED
@@ -1,222 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\Base;
3
-
4
- use Bookly\Lib\Config;
5
- use Bookly\Lib\Entities\Notification;
6
- use Bookly\Lib\Proxy;
7
- use Bookly\Lib\SMS;
8
- use Bookly\Lib\Utils;
9
-
10
- /**
11
- * Class Sender
12
- * @package Bookly\Lib\Notifications\Base
13
- */
14
- abstract class Sender
15
- {
16
- /** @var SMS */
17
- protected static $sms;
18
-
19
- /**
20
- * Protected constructor.
21
- */
22
- protected function __construct()
23
- {
24
- // Use static methods for creating new objects.
25
- }
26
-
27
- /**
28
- * Send email to administrators.
29
- *
30
- * @param Notification $notification
31
- * @param Codes $codes
32
- * @param array $attachments
33
- * @param array $extra_headers
34
- * @return bool
35
- */
36
- protected function sendEmailToAdmins( Notification $notification, Codes $codes, $attachments = array(), $extra_headers = array() )
37
- {
38
- $admin_emails = Utils\Common::getAdminEmails();
39
- if ( empty ( $admin_emails ) ) {
40
- return false;
41
- }
42
-
43
- return $this->_sendEmail(
44
- $admin_emails,
45
- $notification->getSubject(),
46
- Proxy\Pro::prepareNotificationMessage( $notification->getMessage(), 'admin', 'email' ),
47
- $codes,
48
- $attachments,
49
- $extra_headers
50
- );
51
- }
52
-
53
- /**
54
- * Send email to client.
55
- *
56
- * @param string $email
57
- * @param Notification $notification
58
- * @param Codes $codes
59
- * @param array $attachments
60
- * @param array $extra_headers
61
- * @return bool
62
- */
63
- protected function sendEmailToClient( $email, Notification $notification, Codes $codes, $attachments = array(), $extra_headers = array() )
64
- {
65
- if ( $email == '' ) {
66
- return false;
67
- }
68
-
69
- return $this->_sendEmail(
70
- $email,
71
- $notification->getTranslatedSubject(),
72
- $notification->getTranslatedMessage(),
73
- $codes,
74
- $attachments,
75
- $extra_headers
76
- );
77
- }
78
-
79
- /**
80
- * Send email to staff.
81
- *
82
- * @param string $email
83
- * @param Notification $notification
84
- * @param Codes $codes
85
- * @param array $attachments
86
- * @param array $extra_headers
87
- * @return bool
88
- */
89
- protected function sendEmailToStaff( $email, Notification $notification, Codes $codes, $attachments = array(), $extra_headers = array() )
90
- {
91
- if ( $email == '' ) {
92
- return false;
93
- }
94
-
95
- return $this->_sendEmail(
96
- $email,
97
- $notification->getSubject(),
98
- Proxy\Pro::prepareNotificationMessage( $notification->getMessage(), 'staff', 'email' ),
99
- $codes,
100
- $attachments,
101
- $extra_headers
102
- );
103
- }
104
-
105
- /**
106
- * Send SMS to admin.
107
- *
108
- * @param Notification $notification
109
- * @param Codes $codes
110
- * @return bool
111
- */
112
- protected function sendSmsToAdmin( Notification $notification, Codes $codes )
113
- {
114
- $phone = get_option( 'bookly_sms_administrator_phone', '' );
115
- if ( $phone == '' ) {
116
- return false;
117
- }
118
-
119
- return $this->_sendSms(
120
- $phone,
121
- Proxy\Pro::prepareNotificationMessage( $notification->getMessage(), 'admin', 'sms' ),
122
- $codes,
123
- $notification->getTypeId()
124
- );
125
- }
126
-
127
- /**
128
- * Send SMS to client.
129
- *
130
- * @param string $phone
131
- * @param Notification $notification
132
- * @param Codes $codes
133
- * @return bool
134
- */
135
- protected function sendSmsToClient( $phone, Notification $notification, Codes $codes )
136
- {
137
- if ( $phone == '' ) {
138
- return false;
139
- }
140
-
141
- return $this->_sendSms(
142
- $phone,
143
- $notification->getTranslatedMessage(),
144
- $codes,
145
- $notification->getTypeId()
146
- );
147
- }
148
-
149
- /**
150
- * Send SMS to staff.
151
- *
152
- * @param string $phone
153
- * @param Notification $notification
154
- * @param Codes $codes
155
- * @return bool
156
- */
157
- protected function sendSmsToStaff( $phone, Notification $notification, Codes $codes )
158
- {
159
- if ( $phone == '' ) {
160
- return false;
161
- }
162
-
163
- return $this->_sendSms(
164
- $phone,
165
- Proxy\Pro::prepareNotificationMessage( $notification->getMessage(), 'staff', 'sms' ),
166
- $codes,
167
- $notification->getTypeId()
168
- );
169
- }
170
-
171
- /**
172
- * Send email.
173
- *
174
- * @param string|array $email
175
- * @param string $subject
176
- * @param string $message
177
- * @param Codes $codes
178
- * @param array $attachments
179
- * @param array $extra_headers
180
- * @return bool
181
- */
182
- private function _sendEmail( $email, $subject, $message, Codes $codes, $attachments = array(), $extra_headers = array() )
183
- {
184
- // Subject.
185
- $subject = $codes->replace( $subject, 'text' );
186
-
187
- // Message.
188
- if ( Config::sendEmailAsHtml() ) {
189
- $message = wpautop( $codes->replace( $message, 'html' ) );
190
- } else {
191
- $message = $codes->replace( $message, 'text' );
192
- }
193
-
194
- // Headers.
195
- $headers = Utils\Common::getEmailHeaders( $extra_headers );
196
-
197
- // Do send.
198
- return wp_mail( $email, $subject, $message, $headers, $attachments );
199
- }
200
-
201
- /**
202
- * Send SMS.
203
- *
204
- * @param string $phone
205
- * @param string $message
206
- * @param Codes $codes
207
- * @param int $type_id
208
- * @return bool
209
- */
210
- private function _sendSms( $phone, $message, Codes $codes, $type_id )
211
- {
212
- if ( self::$sms === null ) {
213
- self::$sms = new SMS();
214
- }
215
-
216
- // Message.
217
- $message = $codes->replaceForSms( $message );
218
-
219
- // Do send.
220
- return self::$sms->sendSms( $phone, $message['personal'], $message['impersonal'], $type_id );
221
- }
222
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/booking/Sender.php DELETED
@@ -1,250 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\Booking;
3
-
4
- use Bookly\Lib\DataHolders\Booking as DataHolders;
5
- use Bookly\Lib\Entities\Notification;
6
- use Bookly\Lib\Notifications;
7
- use Bookly\Lib\Notifications\NewBooking\Codes;
8
- use Bookly\Lib\Notifications\NewBooking\ICS;
9
- use Bookly\Lib\Proxy;
10
-
11
- /**
12
- * Class Sender
13
- * @package Bookly\Lib\Notifications\Booking
14
- */
15
- class Sender extends Notifications\Base\Sender
16
- {
17
- /** @var DataHolders\Order */
18
- protected $order;
19
- /** @var Codes */
20
- protected $codes;
21
-
22
- /**
23
- * Create new instance.
24
- *
25
- * @param DataHolders\Order $order
26
- * @param Codes $codes
27
- * @return static
28
- */
29
- public static function create( DataHolders\Order $order, Codes $codes )
30
- {
31
- $sender = new static();
32
- $sender->order = $order;
33
- $sender->codes = $codes;
34
-
35
- return $sender;
36
- }
37
-
38
- /**
39
- * Send notifications to client.
40
- *
41
- * @param DataHolders\Item $item
42
- * @param string $lang
43
- */
44
- public function sendToClient( DataHolders\Item $item, $lang )
45
- {
46
- foreach ( $this->getNotificationsForClient() as $notification ) {
47
- switch ( $notification->getGateway() ) {
48
- case 'email':
49
- $this->notifyClientByEmail( $notification, $item, $lang );
50
- break;
51
- case 'sms':
52
- $this->notifyClientBySms( $notification, $item, $lang );
53
- break;
54
- }
55
- }
56
- }
57
-
58
- /**
59
- * Send notifications to staff and/or admins.
60
- *
61
- * @param DataHolders\Item $item
62
- * @param string $lang
63
- */
64
- public function sendToStaffAndAdmins( DataHolders\Item $item, $lang )
65
- {
66
- // Notify staff and admins.
67
- foreach ( $this->getNotificationsForStaffAndAdmins() as $notification ) {
68
- if ( ! $notification->getToAdmin() && $item->getStaff()->isArchived() ) {
69
- // No recipient.
70
- continue;
71
- }
72
- switch ( $notification->getGateway() ) {
73
- case 'email':
74
- $this->notifyStaffAndAdminsByEmail( $notification, $item, $lang );
75
- break;
76
- case 'sms':
77
- $this->notifyStaffAndAdminBySms( $notification, $item, $lang );
78
- break;
79
- }
80
- }
81
- }
82
-
83
- /**
84
- * Notify client by email.
85
- *
86
- * @param Notification $notification
87
- * @param DataHolders\Item $item
88
- * @param string $lang
89
- */
90
- protected function notifyClientByEmail( Notification $notification, DataHolders\Item $item, $lang )
91
- {
92
- if ( $this->order->getCustomer()->getEmail() == '' ) {
93
- // No recipient.
94
- return;
95
- }
96
-
97
- // Prepare codes for this item.
98
- $this->codes->prepareForItem( $item, $lang, true );
99
-
100
- // Attachments.
101
- $attachments = $this->createAttachments( $notification );
102
-
103
- // Send email to client.
104
- $this->sendEmailToClient( $this->order->getCustomer()->getEmail(), $notification, $this->codes, $attachments );
105
-
106
- // Clean up attachments.
107
- $this->clearAttachments( $attachments );
108
- }
109
-
110
- /**
111
- * Notify client by SMS.
112
- *
113
- * @param Notification $notification
114
- * @param DataHolders\Item $item
115
- * @param string $lang
116
- */
117
- protected function notifyClientBySms( Notification $notification, DataHolders\Item $item, $lang )
118
- {
119
- if ( $this->order->getCustomer()->getPhone() == '' ) {
120
- // No recipient.
121
- return;
122
- }
123
-
124
- // Prepare codes for this item.
125
- $this->codes->prepareForItem( $item, $lang, true );
126
-
127
- // Send SMS to client.
128
- $this->sendSmsToClient( $this->order->getCustomer()->getPhone(), $notification, $this->codes );
129
- }
130
-
131
- /**
132
- * Notify staff and/or administrators by email.
133
- *
134
- * @param Notification $notification
135
- * @param DataHolders\Item $item
136
- * @param string $lang
137
- */
138
- protected function notifyStaffAndAdminsByEmail( Notification $notification, DataHolders\Item $item, $lang )
139
- {
140
- if ( ! $notification->getToAdmin() && $item->getStaff()->getEmail() == '' ) {
141
- // No recipient.
142
- return;
143
- }
144
-
145
- // Prepare codes for this item.
146
- $this->codes->prepareForItem( $item, $lang, false );
147
-
148
- // Attachments.
149
- $attachments = $this->createAttachments( $notification );
150
-
151
- // Extra headers.
152
- $extra_headers = array();
153
- if ( get_option( 'bookly_email_reply_to_customers' ) ) {
154
- $customer = $this->order->getCustomer();
155
- $extra_headers = array( 'reply-to' => array( 'email' => $customer->getEmail(), 'name' => $customer->getFullName() ) );
156
- }
157
-
158
- // Send email to staff.
159
- if ( $notification->getToStaff() ) {
160
- $this->sendEmailToStaff( $item->getStaff()->getEmail(), $notification, $this->codes, $attachments, $extra_headers );
161
- }
162
-
163
- // Send email to administrators.
164
- if ( $notification->getToAdmin() ) {
165
- $this->sendEmailToAdmins( $notification, $this->codes, $attachments, $extra_headers );
166
- }
167
-
168
- // Clean up attachments.
169
- $this->clearAttachments( $attachments );
170
- }
171
-
172
- /**
173
- * Notify staff and/or administrator by SMS.
174
- *
175
- * @param Notification $notification
176
- * @param DataHolders\Item $item
177
- * @param string $lang
178
- */
179
- protected function notifyStaffAndAdminBySms( Notification $notification, DataHolders\Item $item, $lang )
180
- {
181
- if ( ! $notification->getToAdmin() && $item->getStaff()->getPhone() == '' ) {
182
- // No recipients for this item.
183
- return;
184
- }
185
-
186
- // Prepare codes for this item.
187
- $this->codes->prepareForItem( $item, $lang, false );
188
-
189
- // Send SMS to staff.
190
- if ( $notification->getToStaff() ) {
191
- $this->sendSmsToStaff( $item->getStaff()->getPhone(), $notification, $this->codes );
192
- }
193
-
194
- // Send SMS to administrator.
195
- if ( $notification->getToAdmin() ) {
196
- $this->sendSmsToAdmin( $notification, $this->codes );
197
- }
198
- }
199
-
200
- /**
201
- * @inheritdoc
202
- */
203
- protected function createAttachments( Notification $notification )
204
- {
205
- $attachments = array();
206
-
207
- // ICS.
208
- if ( $notification->getAttachIcs() ) {
209
- $file = $this->createIcs( $this->codes );
210
- if ( $file ) {
211
- $attachments[] = $file;
212
- }
213
- }
214
-
215
- // Invoices.
216
- if ( $notification->getAttachInvoice() && $this->order->hasPayment() ) {
217
- $file = Proxy\Invoices::getInvoice( $this->order->getPayment() );
218
- if ( $file ) {
219
- $attachments[] = $file;
220
- }
221
- }
222
-
223
- return $attachments;
224
- }
225
-
226
- /**
227
- * Create ICS attachment.
228
- *
229
- * @param Codes $codes
230
- * @return bool|string
231
- */
232
- protected function createIcs( Codes $codes )
233
- {
234
- $ics = new ICS( $codes );
235
-
236
- return $ics->create();
237
- }
238
-
239
- /**
240
- * Remove attachment files.
241
- *
242
- * @param array $attachments
243
- */
244
- protected function clearAttachments( array $attachments )
245
- {
246
- foreach ( $attachments as $file ) {
247
- unlink( $file );
248
- }
249
- }
250
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/codes/Combined.php DELETED
@@ -1,154 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\Codes;
3
-
4
- use Bookly\Lib\Config;
5
- use Bookly\Lib\Proxy;
6
- use Bookly\Lib\Utils;
7
-
8
- /**
9
- * Class Codes
10
- * @package Bookly\Lib\Notifications\Codes
11
- */
12
- class Combined extends Codes
13
- {
14
- public $cart_info;
15
-
16
- /**
17
- * @inheritdoc
18
- */
19
- protected function getCodes( $format )
20
- {
21
- $cart_info_c = $cart_info = '';
22
-
23
- // Cart info.
24
- $cart_info_data = $this->cart_info;
25
- if ( ! empty ( $cart_info_data ) ) {
26
- $cart_columns = get_option( 'bookly_cart_show_columns', array() );
27
- if ( empty( $cart_columns ) ) {
28
- $cart_columns = array(
29
- 'service' => array( 'show' => '1', ),
30
- 'date' => array( 'show' => '1', ),
31
- 'time' => array( 'show' => '1', ),
32
- 'employee' => array( 'show' => '1', ),
33
- 'price' => array( 'show' => '1', ),
34
- 'deposit' => array( 'show' => (int) Config::depositPaymentsActive() ),
35
- 'tax' => array( 'show' => (int) Config::taxesActive(), ),
36
- );
37
- }
38
- if ( ! Proxy\Taxes::showTaxColumn() ) {
39
- unset( $cart_columns['tax'] );
40
- }
41
- if ( ! Config::depositPaymentsActive() ) {
42
- unset( $cart_columns['deposit'] );
43
- }
44
- $ths = array();
45
- foreach ( $cart_columns as $column => $attr ) {
46
- if ( $attr['show'] ) {
47
- switch ( $column ) {
48
- case 'service':
49
- $ths[] = Utils\Common::getTranslatedOption( 'bookly_l10n_label_service' );
50
- break;
51
- case 'date':
52
- $ths[] = __( 'Date', 'bookly' );
53
- break;
54
- case 'time':
55
- $ths[] = __( 'Time', 'bookly' );
56
- break;
57
- case 'tax':
58
- $ths[] = __( 'Tax', 'bookly' );
59
- break;
60
- case 'employee':
61
- $ths[] = Utils\Common::getTranslatedOption( 'bookly_l10n_label_employee' );
62
- break;
63
- case 'price':
64
- $ths[] = __( 'Price', 'bookly' );
65
- break;
66
- case 'deposit':
67
- $ths[] = __( 'Deposit', 'bookly' );
68
- break;
69
- }
70
- }
71
- }
72
- $trs = array();
73
- foreach ( $cart_info_data as $codes ) {
74
- $tds = array();
75
- foreach ( $cart_columns as $column => $attr ) {
76
- if ( $attr['show'] ) {
77
- switch ( $column ) {
78
- case 'service':
79
- $service_name = $codes['service_name'];
80
- if ( ! empty ( $codes['extras'] ) ) {
81
- $extras = '';
82
- if ( $format == 'html' ) {
83
- foreach ( $codes['extras'] as $extra ) {
84
- $extras .= '<li>' . $extra['title'] . '</li>';
85
- }
86
- $extras = '<ul>' . $extras . '</ul>';
87
- } else {
88
- foreach ( $codes['extras'] as $extra ) {
89
- $extras .= ', ' . str_replace( '&nbsp;&times;&nbsp;', ' x ', $extra['title'] );
90
- }
91
- }
92
- $service_name .= $extras;
93
- }
94
- $tds[] = $service_name;
95
- break;
96
- case 'date':
97
- $tds[] = $codes['appointment_start'] === null ? __( 'N/A', 'bookly' ) : Utils\DateTime::formatDate( $codes['appointment_start'] );
98
- break;
99
- case 'time':
100
- if ( $codes['appointment_start_info'] !== null ) {
101
- $tds[] = $codes['appointment_start_info'];
102
- } else {
103
- $tds[] = $codes['appointment_start'] === null ? __( 'N/A', 'bookly' ) : Utils\DateTime::formatTime( $codes['appointment_start'] );
104
- }
105
- break;
106
- case 'tax':
107
- $tds[] = Utils\Price::format( $codes['tax'] );
108
- break;
109
- case 'employee':
110
- $tds[] = $codes['staff_name'];
111
- break;
112
- case 'price':
113
- $tds[] = Utils\Price::format( $codes['appointment_price'] );
114
- break;
115
- case 'deposit':
116
- $tds[] = $codes['deposit'];
117
- break;
118
- }
119
- }
120
- }
121
- $tds[] = $codes['cancel_url'];
122
- $trs[] = $tds;
123
- }
124
- if ( $format == 'html' ) {
125
- $cart_info = '<table cellspacing="1" border="1" cellpadding="5"><thead><tr><th>' . implode( '</th><th>', $ths ) . '</th></tr></thead><tbody>';
126
- $cart_info_c = '<table cellspacing="1" border="1" cellpadding="5"><thead><tr><th>' . implode( '</th><th>', $ths ) . '</th><th>' . __( 'Cancel', 'bookly' ) . '</th></tr></thead><tbody>';
127
- foreach ( $trs as $tr ) {
128
- $cancel_url = array_pop( $tr );
129
- $cart_info .= '<tr><td>' . implode( '</td><td>', $tr ) . '</td></tr>';
130
- $cart_info_c .= '<tr><td>' . implode( '</td><td>', $tr ) . '</td><td><a href="' . $cancel_url . '">' . __( 'Cancel', 'bookly' ) . '</a></td></tr>';
131
- }
132
- $cart_info .= '</tbody></table>';
133
- $cart_info_c .= '</tbody></table>';
134
- } else {
135
- foreach ( $trs as $tr ) {
136
- $cancel_url = array_pop( $tr );
137
- foreach ( $ths as $position => $column ) {
138
- $cart_info .= $column . ' ' . $tr[ $position ] . "\r\n";
139
- $cart_info_c .= $column . ' ' . $tr[ $position ] . "\r\n";
140
- }
141
- $cart_info .= "\r\n";
142
- $cart_info_c .= __( 'Cancel', 'bookly' ) . ' ' . $cancel_url . "\r\n\r\n";
143
- }
144
- }
145
- }
146
- // Codes.
147
- $codes = array_merge( parent::getCodes( $format ), array(
148
- '{cart_info}' => $cart_info,
149
- '{cart_info_c}' => $cart_info_c,
150
- ) );
151
-
152
- return $codes;
153
- }
154
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/new_booking/Codes.php DELETED
@@ -1,306 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\NewBooking;
3
-
4
- use Bookly\Lib\Config;
5
- use Bookly\Lib\DataHolders\Booking as DataHolders;
6
- use Bookly\Lib\Entities;
7
- use Bookly\Lib\Notifications\Base;
8
- use Bookly\Lib\Utils;
9
-
10
- /**
11
- * Class Codes
12
- * @package Bookly\Lib\Notifications\NewBooking
13
- */
14
- class Codes extends Base\Codes
15
- {
16
- public $agenda_date;
17
- public $amount_due;
18
- public $amount_paid;
19
- public $appointment_end;
20
- public $appointment_end_info;
21
- public $appointment_notes;
22
- public $appointment_schedule;
23
- public $appointment_schedule_c;
24
- public $appointment_start;
25
- public $appointment_start_info;
26
- public $appointment_token;
27
- public $appointment_waiting_list;
28
- public $booking_number;
29
- public $cancellation_reason;
30
- public $cart_info;
31
- public $category_name;
32
- public $client_email;
33
- public $client_address;
34
- public $client_first_name;
35
- public $client_last_name;
36
- public $client_name;
37
- public $client_phone;
38
- public $client_timezone;
39
- public $custom_fields;
40
- public $custom_fields_2c;
41
- public $deposit_value;
42
- public $extras;
43
- public $extras_total_price;
44
- public $files_count;
45
- public $google_calendar_url;
46
- public $invoice_date;
47
- public $invoice_due_date;
48
- public $invoice_due_days;
49
- public $invoice_link;
50
- public $invoice_number; // payment_id
51
- public $location_info;
52
- public $location_name;
53
- public $new_password;
54
- public $new_username;
55
- public $next_day_agenda;
56
- public $next_day_agenda_extended;
57
- public $number_of_persons;
58
- public $package_life_time;
59
- public $package_name;
60
- public $package_price;
61
- public $package_size;
62
- public $payment_type;
63
- public $payment_status;
64
- public $schedule;
65
- public $series_token;
66
- public $service_duration;
67
- public $service_info;
68
- public $service_name;
69
- public $service_price;
70
- public $service_tax;
71
- public $service_tax_rate;
72
- public $site_address;
73
- public $staff_email;
74
- public $staff_info;
75
- public $staff_name;
76
- public $staff_phone;
77
- public $staff_photo;
78
- public $staff_rating_url;
79
- public $total_price;
80
- public $total_tax;
81
-
82
- /** @var DataHolders\Order */
83
- protected $order;
84
- /** @var DataHolders\Item */
85
- protected $item;
86
- /** @var string */
87
- protected $lang;
88
- /** @var bool */
89
- protected $use_client_tz;
90
-
91
- /**
92
- * Create new instance.
93
- *
94
- * @param DataHolders\Order $order
95
- * @return static
96
- */
97
- public static function create( DataHolders\Order $order )
98
- {
99
- $codes = new static();
100
-
101
- $codes->order = $order;
102
-
103
- $codes->client_address = $order->getCustomer()->getAddress();
104
- $codes->client_email = $order->getCustomer()->getEmail();
105
- $codes->client_first_name = $order->getCustomer()->getFirstName();
106
- $codes->client_last_name = $order->getCustomer()->getLastName();
107
- $codes->client_name = $order->getCustomer()->getFullName();
108
- $codes->client_phone = $order->getCustomer()->getPhone();
109
- if ( $order->hasPayment() ) {
110
- $codes->amount_paid = $order->getPayment()->getPaid();
111
- $codes->amount_due = $order->getPayment()->getTotal() - $order->getPayment()->getPaid();
112
- $codes->total_price = $order->getPayment()->getTotal();
113
- $codes->total_tax = $order->getPayment()->getTax();
114
- $codes->invoice_number = $order->getPayment()->getId();
115
- $codes->payment_status = $order->getPayment()->getStatus();
116
- $codes->payment_type = $order->getPayment()->getType();
117
- }
118
-
119
- Proxy\Shared::prepareCodesForOrder( $codes );
120
-
121
- return $codes;
122
- }
123
-
124
- /**
125
- * Prepare codes for given order item.
126
- *
127
- * @param DataHolders\Item $item
128
- * @param string $lang
129
- * @param bool $use_client_tz
130
- */
131
- public function prepareForItem( DataHolders\Item $item, $lang, $use_client_tz )
132
- {
133
- if (
134
- $this->item === $item &&
135
- $this->lang == $lang &&
136
- ( $this->use_client_tz == $use_client_tz || $item->getCA()->getTimeZoneOffset() === null )
137
- ) {
138
- return;
139
- }
140
-
141
- $this->item = $item;
142
- $this->lang = $lang;
143
- $this->use_client_tz = $use_client_tz;
144
-
145
- $staff_photo = wp_get_attachment_image_src( $item->getStaff()->getAttachmentId(), 'full' );
146
-
147
- $this->appointment_end = $this->tz( $item->getTotalEnd()->format( 'Y-m-d H:i:s' ) );
148
- $this->appointment_end_info = $item->getService()->getEndTimeInfo();
149
- $this->appointment_notes = $item->getCA()->getNotes();
150
- $this->appointment_start = $this->tz( $item->getAppointment()->getStartDate() );
151
- $this->appointment_start_info = $item->getService()->getStartTimeInfo();
152
- $this->appointment_token = $item->getCA()->getToken();
153
- $this->booking_number = $item->getAppointment()->getId();
154
- $this->category_name = $item->getService()->getTranslatedCategoryName();
155
- $this->client_timezone = $item->getCA()->getTimeZone() ?: (
156
- $item->getCA()->getTimeZoneOffset() !== null
157
- ? 'UTC' . Utils\DateTime::guessTimeZone( - $item->getCA()->getTimeZoneOffset() * 60 )
158
- : ''
159
- );
160
- $this->number_of_persons = $item->getCA()->getNumberOfPersons();
161
- $this->service_duration = $item->getServiceDuration();
162
- $this->service_info = $item->getService()->getTranslatedInfo();
163
- $this->service_name = $item->getService()->getTranslatedTitle();
164
- $this->service_price = $item->getServicePrice();
165
- $this->staff_email = $item->getStaff()->getEmail();
166
- $this->staff_info = $item->getStaff()->getTranslatedInfo();
167
- $this->staff_name = $item->getStaff()->getTranslatedName();
168
- $this->staff_phone = $item->getStaff()->getPhone();
169
- $this->staff_photo = $staff_photo ? $staff_photo[0] : '';
170
- if ( ! $this->order->hasPayment() ) {
171
- $this->total_price = $item->getTotalPrice();
172
- $this->total_tax = $item->getTax();
173
- if ( Config::taxesActive() && get_option( 'bookly_taxes_in_price' ) == 'excluded' ) {
174
- $this->total_price += $this->total_tax;
175
- }
176
- }
177
-
178
- Proxy\Shared::prepareCodesForItem( $this );
179
- }
180
-
181
- /**
182
- * @inheritdoc
183
- */
184
- protected function getReplaceCodes( $format )
185
- {
186
- $replace_codes = parent::getReplaceCodes( $format );
187
-
188
- // Prepare data.
189
- $staff_photo = '';
190
- if ( $format == 'html' ) {
191
- if ( $this->staff_photo != '' ) {
192
- // Staff photo as <img> tag.
193
- $staff_photo = sprintf(
194
- '<img src="%s" alt="%s" />',
195
- esc_attr( $this->staff_photo ),
196
- esc_attr( $this->staff_name )
197
- );
198
- }
199
- }
200
- $cancel_appointment_confirm_url = get_option( 'bookly_url_cancel_confirm_page_url' );
201
- $cancel_appointment_confirm_url = $this->appointment_token
202
- ? add_query_arg( 'bookly-appointment-token', $this->appointment_token, $cancel_appointment_confirm_url )
203
- : '';
204
-
205
- // Add replace codes.
206
- $replace_codes += array(
207
- '{agenda_date}' => $this->agenda_date ? Utils\DateTime::formatDate( $this->agenda_date ) : '',
208
- '{amount_due}' => Utils\Price::format( $this->amount_due ),
209
- '{amount_paid}' => Utils\Price::format( $this->amount_paid ),
210
- '{appointment_date}' => $this->appointment_start === null ? __( 'N/A', 'bookly' ) : Utils\DateTime::formatDate( $this->appointment_start ),
211
- '{appointment_time}' => $this->appointment_start === null ? __( 'N/A', 'bookly' ) : ( $this->service_duration < DAY_IN_SECONDS ? Utils\DateTime::formatTime( $this->appointment_start ) : $this->appointment_start_info ),
212
- '{appointment_end_date}' => $this->appointment_start === null ? __( 'N/A', 'bookly' ) : Utils\DateTime::formatDate( $this->appointment_end ),
213
- '{appointment_end_time}' => $this->appointment_start === null ? __( 'N/A', 'bookly' ) : ( $this->service_duration < DAY_IN_SECONDS ? Utils\DateTime::formatTime( $this->appointment_end ) : $this->appointment_end_info ),
214
- '{appointment_notes}' => $format == 'html' ? nl2br( $this->appointment_notes ) : $this->appointment_notes,
215
- '{approve_appointment_url}' => $this->appointment_token ? admin_url( 'admin-ajax.php?action=bookly_approve_appointment&token=' . urlencode( Utils\Common::xorEncrypt( $this->appointment_token, 'approve' ) ) ) : '',
216
- '{booking_number}' => $this->booking_number,
217
- '{cancel_appointment_url}' => $this->appointment_token ? admin_url( 'admin-ajax.php?action=bookly_cancel_appointment&token=' . $this->appointment_token ) : '',
218
- '{cancel_appointment_confirm_url}' => $cancel_appointment_confirm_url,
219
- '{category_name}' => $this->category_name,
220
- '{client_email}' => $this->client_email,
221
- '{client_address}' => $this->client_address,
222
- '{client_name}' => $this->client_name,
223
- '{client_first_name}' => $this->client_first_name,
224
- '{client_last_name}' => $this->client_last_name,
225
- '{client_phone}' => $this->client_phone,
226
- '{client_timezone}' => $this->client_timezone,
227
- '{google_calendar_url}' => sprintf( 'https://calendar.google.com/calendar/render?action=TEMPLATE&text=%s&dates=%s/%s&details=%s',
228
- urlencode( $this->service_name ),
229
- date( 'Ymd\THis', strtotime( $this->appointment_start ) ),
230
- date( 'Ymd\THis', strtotime( $this->appointment_end ) ),
231
- urlencode( sprintf( "%s\n%s", $this->service_name, $this->staff_name ) )
232
- ),
233
- '{new_password}' => $this->new_password,
234
- '{new_username}' => $this->new_username,
235
- '{next_day_agenda}' => $this->next_day_agenda,
236
- '{next_day_agenda_extended}' => $this->next_day_agenda_extended,
237
- '{number_of_persons}' => $this->number_of_persons,
238
- '{payment_type}' => Entities\Payment::typeToString( $this->payment_type ),
239
- '{payment_status}' => Entities\Payment::statusToString( $this->payment_status ),
240
- '{reject_appointment_url}' => $this->appointment_token ? admin_url( 'admin-ajax.php?action=bookly_reject_appointment&token=' . urlencode( Utils\Common::xorEncrypt( $this->appointment_token, 'reject' ) ) ) : '',
241
- '{service_info}' => $format == 'html' ? nl2br( $this->service_info ) : $this->service_info,
242
- '{service_name}' => $this->service_name,
243
- '{service_price}' => Utils\Price::format( $this->service_price ),
244
- '{service_duration}' => $this->appointment_start === null ? __( 'N/A', 'bookly' ) : Utils\DateTime::secondsToInterval( $this->service_duration ),
245
- '{site_address}' => $this->site_address,
246
- '{staff_email}' => $this->staff_email,
247
- '{staff_info}' => $format == 'html' ? nl2br( $this->staff_info ) : $this->staff_info,
248
- '{staff_name}' => $this->staff_name,
249
- '{staff_phone}' => $this->staff_phone,
250
- '{staff_photo}' => $staff_photo,
251
- '{tomorrow_date}' => Utils\DateTime::formatDate( date_create( current_time( 'mysql' ) )->modify( '+1 day' )->format( 'Y-m-d' ) ),
252
- '{total_price}' => Utils\Price::format( $this->total_price ),
253
- '{total_tax}' => Utils\Price::format( $this->total_tax ),
254
- '{total_price_no_tax}' => Utils\Price::format( $this->total_price - $this->total_tax ),
255
- '{cancellation_reason}' => $this->cancellation_reason,
256
- );
257
- $replace_codes['{cancel_appointment}'] = $format == 'html'
258
- ? sprintf( '<a href="%1$s">%1$s</a>', $replace_codes['{cancel_appointment_url}'] )
259
- : $replace_codes['{cancel_appointment_url}'];
260
-
261
- return Proxy\Shared::prepareReplaceCodes( $replace_codes, $this, $format );
262
- }
263
-
264
- /**
265
- * Get order.
266
- *
267
- * @return DataHolders\Order
268
- */
269
- public function getOrder()
270
- {
271
- return $this->order;
272
- }
273
-
274
- /**
275
- * Get item.
276
- *
277
- * @return DataHolders\Item
278
- */
279
- public function getItem()
280
- {
281
- return $this->item;
282
- }
283
-
284
- /**
285
- * Apply client time zone to given datetime string in WP time zone if use_client_tz is true.
286
- *
287
- * @param string $datetime
288
- * @return mixed
289
- */
290
- public function tz( $datetime )
291
- {
292
- if ( $this->use_client_tz && $datetime != '' ) {
293
- $time_zone = $this->item->getCA()->getTimeZone();
294
- $time_zone_offset = $this->item->getCA()->getTimeZoneOffset();
295
-
296
- if ( $time_zone !== null ) {
297
- $datetime = date_create( $datetime . ' ' . Config::getWPTimeZone() );
298
- return date_format( date_timestamp_set( date_create( $time_zone ), $datetime->getTimestamp() ), 'Y-m-d H:i:s' );
299
- } else if ( $time_zone_offset !== null ) {
300
- return Utils\DateTime::applyTimeZoneOffset( $datetime, $time_zone_offset );
301
- }
302
- }
303
-
304
- return $datetime;
305
- }
306
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/new_booking/Sender.php DELETED
@@ -1,142 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\NewBooking;
3
-
4
- use Bookly\Lib\DataHolders\Booking as DataHolders;
5
-
6
- /**
7
- * Class Sender
8
- * @package Bookly\Lib\Notifications\NewBooking
9
- */
10
- class Sender
11
- {
12
- /** @var DataHolders\Order */
13
- protected $order;
14
- /** @var ItemSenders\Base[] */
15
- protected $item_senders;
16
- /** @var Codes */
17
- protected $codes;
18
- /** @var string */
19
- protected $initial_lang;
20
-
21
- /**
22
- * Create new sender for order.
23
- *
24
- * @param DataHolders\Order $order
25
- * @return static
26
- */
27
- public static function createForOrder( DataHolders\Order $order )
28
- {
29
- $sender = new static();
30
- $sender->order = $order;
31
- $sender->codes = Codes::create( $order );
32
-
33
- return $sender;
34
- }
35
-
36
- /**
37
- * Send notifications.
38
- */
39
- public function send()
40
- {
41
- foreach ( $this->order->getItems() as $item ) {
42
- $sender = $this->getSenderForItem( $item );
43
- if ( $sender ) {
44
- // Notify client.
45
- $lang = $this->wpmlSwitchToItemLang( $item );
46
- $sender->sendToClient( $item, $lang );
47
- // Notify staff and admins.
48
- $lang = $this->wpmlSwitchToDefaultLang();
49
- $sender->sendToStaffAndAdmins( $item, $lang );
50
- }
51
- }
52
- $this->wpmlRestoreLang();
53
- }
54
-
55
- /**
56
- * Get sender for given order item.
57
- *
58
- * @param DataHolders\Item $item
59
- * @return ItemSenders\Base|null
60
- */
61
- protected function getSenderForItem( DataHolders\Item $item )
62
- {
63
- if ( ! isset ( $this->item_senders[ $item->getType() ] ) ) {
64
- $sender = $item->isSimple()
65
- ? ItemSenders\Simple::create( $this->order, $this->codes )
66
- : Proxy\Shared::getSenderForItem( null, $item, $this->order, $this->codes );
67
- $this->item_senders[ $item->getType() ] = $sender;
68
- }
69
-
70
- return $this->item_senders[ $item->getType() ];
71
- }
72
-
73
- /**
74
- * Switch WPML lang.
75
- *
76
- * @param string $lang
77
- * @return string|null
78
- */
79
- protected function wpmlSwitchLang( $lang )
80
- {
81
- global $sitepress;
82
-
83
- if ( $sitepress instanceof \SitePress ) {
84
- if ( $lang != $sitepress->get_current_language() ) {
85
- if ( $this->initial_lang === null ) {
86
- $this->initial_lang = $sitepress->get_current_language();
87
- }
88
- $sitepress->switch_lang( $lang );
89
- // WPML Multilingual CMS 3.9.2 // 2018-02
90
- // Does not overload the date translation
91
- $GLOBALS['wp_locale'] = new \WP_Locale();
92
- }
93
-
94
- return $lang;
95
- }
96
-
97
- return null;
98
- }
99
-
100
- /**
101
- * Switch WPML to default lang.
102
- *
103
- * @return string|null
104
- */
105
- protected function wpmlSwitchToDefaultLang()
106
- {
107
- global $sitepress;
108
-
109
- if ( $sitepress instanceof \SitePress ) {
110
- return $this->wpmlSwitchLang( $sitepress->get_default_language() );
111
- }
112
-
113
- return null;
114
- }
115
-
116
- /**
117
- * Switch WPML to client lang of given order item.
118
- *
119
- * @param DataHolders\Item $item
120
- * @return string|null
121
- */
122
- protected function wpmlSwitchToItemLang( DataHolders\Item $item )
123
- {
124
- $lang = $item->getCA()->getLocale();
125
- if ( $lang ) {
126
- return $this->wpmlSwitchLang( $lang );
127
- } else {
128
- return $this->wpmlSwitchToDefaultLang();
129
- }
130
- }
131
-
132
- /**
133
- * Restore WPML lang.
134
- */
135
- protected function wpmlRestoreLang()
136
- {
137
- if ( $this->initial_lang !== null ) {
138
- $this->wpmlSwitchLang( $this->initial_lang );
139
- $this->initial_lang = null;
140
- }
141
- }
142
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/new_booking/proxy/Shared.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\NewBooking\Proxy;
3
-
4
- use Bookly\Lib;
5
- use Bookly\Lib\DataHolders\Booking\Item;
6
- use Bookly\Lib\DataHolders\Booking\Order;
7
- use Bookly\Lib\Notifications\NewBooking\Codes;
8
- use Bookly\Lib\Notifications\NewBooking\ItemSenders;
9
-
10
- /**
11
- * Class Shared
12
- * @package Bookly\Lib\Notifications\NewBooking\Proxy
13
- *
14
- * @method static ItemSenders\Base getSenderForItem( $default, Item $item, Order $order, Codes $codes ) Get sender for given order item.
15
- * @method static void prepareCodesForItem( Codes $codes ) Prepare codes data for new order item (translatable data should be set here).
16
- * @method static void prepareCodesForOrder( Codes $codes ) Prepare codes data for order.
17
- * @method static array prepareNotificationTitles( array $titles ) Prepare notification titles.
18
- * @method static array prepareNotificationTypeIds( array $type_ids ) Prepare notification type IDs.
19
- * @method static array prepareReplaceCodes( array $replace_codes, Codes $codes, $format ) Prepare codes for replacements.
20
- * @method static Lib\Notifications\Codes prepareTestNotificationCodes( Lib\Notifications\Codes $codes ) Prepare codes for testing email templates
21
- */
22
- abstract class Shared extends Lib\Base\Proxy
23
- {
24
-
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/notifications/status_changed/StatusChanged.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
- namespace Bookly\Lib\Notifications\Senders;
3
-
4
- use Bookly\Lib\Config;
5
- use Bookly\Lib\DataHolders\Booking as DataHolders;
6
- use Bookly\Lib\DataHolders\Notification\Settings;
7
- use Bookly\Lib\Entities\Notification;
8
- use Bookly\Lib\Notifications\Codes;
9
-
10
- /**
11
- * Class StatusChanged
12
- * @package Bookly\Lib\Notifications\Senders
13
- */
14
- class StatusChanged extends BaseSender
15
- {
16
- /**
17
- * Create new instance.
18
- *
19
- * @param DataHolders\Item $item
20
- * @return static
21
- */
22
- public static function create( DataHolders\Item $item )
23
- {
24
- $sender = new static();
25
- $sender->order = DataHolders\Order::createFromItem( $item );
26
- $sender->codes = Codes\Codes::createForOrder( $sender->order );
27
-
28
- return $sender;
29
- }
30
-
31
- /**
32
- * @inheritdoc
33
- */
34
- protected function fetchNotifications()
35
- {
36
- $this->client_notifications = array();
37
- $this->staff_notifications = array();
38
- /** @var Notification[] $notifications */
39
- $notifications = Notification::query()
40
- ->where( '`type`', Notification::TYPE_CUSTOMER_APPOINTMENT_STATUS_CHANGED )
41
- ->where( 'active', '1' )
42
- ->find()
43
- ;
44
- foreach ( $notifications as $notification ) {
45
- if ( Config::proActive() || $notification->getGateway() == 'sms' ) {
46
- $settings = new Settings( $notification );
47
- if ( $settings->getInstant() && ! $settings->getRepeated() ) {
48
- if ( $notification->getToCustomer() ) {
49
- $this->client_notifications[] = $notification;
50
- }
51
- if ( $notification->getToStaff() || $notification->getToAdmin() ) {
52
- $this->staff_notifications[] = $notification;
53
- }
54
- }
55
- }
56
- }
57
- }
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/slots/Staff.php CHANGED
@@ -40,7 +40,9 @@ class Staff
40
  */
41
  public function getSchedule( $location_id = 0 )
42
  {
43
- return $this->schedule[ $location_id ];
 
 
44
  }
45
 
46
  /**
40
  */
41
  public function getSchedule( $location_id = 0 )
42
  {
43
+ return isset ( $this->schedule[ $location_id ] )
44
+ ? $this->schedule[ $location_id ]
45
+ : $this->schedule[0];
46
  }
47
 
48
  /**
main.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Bookly
4
  Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
5
  Description: Bookly Plugin – is a great easy-to-use and easy-to-manage booking tool for service providers who think about their customers. The plugin supports a wide range of services provided by business and individuals who offer reservations through websites. Set up any reservation quickly, pleasantly and easily with Bookly!
6
- Version: 16.4
7
  Author: Bookly
8
  Author URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
9
  Text Domain: bookly
3
  Plugin Name: Bookly
4
  Plugin URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
5
  Description: Bookly Plugin – is a great easy-to-use and easy-to-manage booking tool for service providers who think about their customers. The plugin supports a wide range of services provided by business and individuals who offer reservations through websites. Set up any reservation quickly, pleasantly and easily with Bookly!
6
+ Version: 16.5
7
  Author: Bookly
8
  Author URI: https://www.booking-wp-plugin.com/?utm_source=bookly_admin&utm_medium=plugins_page&utm_campaign=plugins_page
9
  Text Domain: bookly
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: https://www.booking-wp-plugin.com/
5
  Requires at least: 3.7
6
  Tested up to: 4.9.8
7
  Requires PHP: 5.3.7
8
- Stable tag: 16.4
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
 
5
  Requires at least: 3.7
6
  Tested up to: 4.9.8
7
  Requires PHP: 5.3.7
8
+ Stable tag: 16.5
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11