;(function($, window, document, undefined) {
var $win = $(window);
var $doc = $(document);
var $field_container;
$doc.ready(function() {
$(document).on("booked-on-new-app", function(event) {
$field_container = $('.field.field-paid-service');
booked_wc_products_field($field_container);
});
booked_wc_btn_edit_appointment_shortcode();
booked_wc_btn_edit_appointment_popup_app();
booked_wc_btn_pay_appointment_shortcode();
$(document).on("booked-before-loading-calendar-booking-options", function(event) {
booked_wc_change_calendar_loading_paramenters();
});
$(document).on("booked-before-loading-booking-form", function(event) {
booked_wc_change_booking_form_paramenters();
});
$(document).on("booked-on-requested-appointment", function(event,redirectObj) {
redirectObj.redirect = booked_wc_redirect_to_checkout_if_product_option();
});
});
function booked_wc_products_field(field_container) {
var $dropdown = $('select', field_container);
if ( $dropdown.find( 'option' ).length < 3 ){
$dropdown.find( 'option:first-child' ).remove();
var calendar_id = parseInt( $dropdown.data('calendar-id') ),
product_id = $dropdown.val(),
field_name = $dropdown.attr('name'),
$variations_container = $dropdown.parent().find('.paid-variations');
booked_wc_load_variations(product_id, field_name, calendar_id, $variations_container);
}
$dropdown.on('change', function() {
var $this = $(this),
calendar_id = parseInt( $this.data('calendar-id') ),
product_id = $this.val(),
field_name = $this.attr('name'),
$variations_container = $this.parent().find('.paid-variations');
booked_wc_load_variations(product_id, field_name, calendar_id, $variations_container);
});
}
function booked_wc_load_variations( product_id, field_name, calendar_id, variations_container ) {
if ( !product_id ) {
variations_container.html('');
return;
};
var data = {
'action': booked_wc_variables.prefix + 'load_variations',
'product_id': parseInt(product_id),
'calendar_id': calendar_id,
'field_name': field_name
};
$.post(
booked_wc_variables.ajaxurl,
data,
function(response) {
variations_container.html(response);
resize_booked_modal();
}
);
}
function booked_wc_btn_edit_appointment_shortcode() {
$('.booked-profile-appt-list .appt-block .edit').on('click', function(event) {
event.preventDefault();
var $button = $(this),
appt_id = $button.attr('data-appt-id'),
calendar_link = $button.attr('data-app-calendar');
if (booked_wc_variables.i18n_confirm_appt_edit){
confirm_edit = confirm(booked_wc_variables.i18n_confirm_appt_edit);
} else {
confirm_edit = true;
}
if ( confirm_edit === true ) {
window.location.href = calendar_link;
}
return false;
});
}
function booked_wc_btn_pay_appointment_shortcode() {
$('.booked-profile-appt-list .appt-block .pay').on('click', function(event) {
event.preventDefault();
var $button = $(this),
appt_id = $button.attr('data-appt-id');
confirm_edit = confirm(booked_wc_variables.i18n_pay);
if ( confirm_edit===true ){
var data = {
'action': booked_wc_variables.prefix + 'add_to_cart',
'app_id': appt_id
};
jQuery.post(booked_wc_variables.ajaxurl, data, function(response) {
if ( response.status === 'success' ) {
window.location.href = booked_wc_variables.checkout_page;
} else {
alert( response.messages[0] );
};
}, 'json');
}
return false;
});
}
function booked_wc_change_calendar_loading_paramenters() {
if ( !booked_load_calendar_date_booking_options ) {
return;
};
var current_url = window.location.href,
url_parameters = current_url.replace(/^[^?]+\??/gi, ''),
url_parameters_parts = url_parameters ? url_parameters.split('&') : false;
if (url_parameters_parts && current_url.match('booked_wc_extension')) {
// populate additional loading parameters
for (var i = 0; i < url_parameters_parts.length; i++) {
var data = url_parameters_parts[i].split('='),
name = data[0].replace(/_\d+$/, ''),
value = data[1];
booked_load_calendar_date_booking_options[name] = value;
}
};
}
function booked_wc_change_booking_form_paramenters() {
if ( !booked_appt_form_options ) {
return;
};
var current_url = window.location.href,
url_parameters = current_url.replace(/^[^?]+\??/gi, ''),
url_parameters_parts = url_parameters ? url_parameters.split('&') : false;
if (url_parameters_parts && current_url.match('booked_wc_extension')) {
// populate additional loading parameters
for (var i = 0; i < url_parameters_parts.length; i++) {
var data = url_parameters_parts[i].split('='),
name = data[0].replace(/_\d+$/, ''),
value = data[1];
booked_appt_form_options[name] = value;
}
};
}
function booked_wc_redirect_to_checkout_if_product_option() {
var redirect = false,
$form = $('form#newAppointmentForm');
$('.field-paid-service', $form).each(function() {
var $this = $(this);
$('select', $this).each(function() {
var $this_select = $(this);
if ( $this_select.val()!=='' ) {
redirect = true;
};
});
});
if ( redirect ) {
window.location = booked_wc_variables.checkout_page;
return true;
}
return false;
}
function booked_wc_btn_edit_appointment_popup_app() {
$doc.on('click', '.booked-form input#submit-edit-request-appointment', function(e){
var $thisButton = $(this);
$('form#newAppointmentForm p.status').show().html(' ' + booked_js_vars.i18n_please_wait);
resize_booked_modal();
e.preventDefault();
$.ajax({
type : 'post',
url : booked_js_vars.ajax_url,
data : $('#newAppointmentForm').serialize(),
success : function(data) {
data = data.split('###');
var data_result = data[0].substr(data[0].length - 5);
if (data_result == 'error'){
$thisButton.attr('disabled',false);
$thisButton.parents('form').find('button.cancel').show();
$('.booked-form input').each(function(){
thisDefault = $(this).attr('title');
thisVal = $(this).val();
if (!thisVal){ $(this).val(thisDefault); }
});
$('form#newAppointmentForm p.status').show().html(' ' + data[1]);
resize_booked_modal();
} else {
window.location = booked_js_vars.profilePage
}
}
});
});
}
})(jQuery, window, document);