var $ = jQuery.noConflict();
/* function to get total ticket and service amount */
function fs_ticket_total(){
var p = 0;
var s = 0;
jQuery("input[class=fs-ticketqty]").each(function () {
var ticket_id = jQuery(this).attr('data-bind');
var ticket_qty = parseInt(jQuery('#single-ticket-'+ticket_id).find('.fs-ticketqty').val());
var ticket_price = parseFloat(jQuery('#single-ticket-'+ticket_id).find('.ticket-price').html());
p += (ticket_price * ticket_qty);
jQuery('#single-ticket-'+ticket_id).find("input:checkbox[class=fs-service-cb]:checked").each(function () {
var service_price = jQuery(this).val();
s += (parseInt(service_price) * ticket_qty);
});
});
var total_price_id = jQuery('.total-price-value');
total_price_id.html((p + s).toFixed(2));
}
/* to check service checkbox checked or not */
$(document).on('click',".fs-service-cb",function() {
if(jQuery(this).is(":checked"))
{
fs_ticket_total();
}else{
fs_ticket_total();
}
});
/* increase and decrease ticket */
$(document).on( 'click', 'button.fs-plus, button.fs-minus', function() {
var ticket_id = jQuery( this ).attr('data-bind');
var services = jQuery('#single-ticket-'+ticket_id).find('.fs-service-cb');
var qty = jQuery( this ).closest( '.fs-ticket-quantity' ).find( '.fs-ticketqty' );
var val = parseFloat(qty.val());
var max = parseFloat(qty.attr( 'max' ));
var min = parseFloat(qty.attr( 'min' ));
var step = parseFloat(qty.attr( 'step' ));
var total_qty_id = jQuery('.qty-value');
var total_qty = parseInt(total_qty_id.html());
if(total_qty-1 == 0){
jQuery(".fs-get-ticket-button").prop("disabled", true);
}
if(val-1 == 0){
services.prop("disabled", true);
}
// Change the value if plus or minus
if ( jQuery( this ).is( '.fs-plus' ) ) {
services.prop("disabled", false);
jQuery(".fs-get-ticket-button").prop("disabled", false);
jQuery('.fs-total-qty').attr('aria-hidden',false);
jQuery('.fs-total-price').attr('aria-hidden',false);
if ( max && ( max <= val ) ) {
qty.val( max );
}
else {
qty.val( val + step );
total_qty_id.html(total_qty + step);
fs_ticket_total();
}
}else {
if ( min && ( min >= val ) ) {
qty.val( min );
}
else if ( val > 0 ) {
qty.val( val - step );
total_qty_id.html(total_qty - step);
fs_ticket_total();
}
}
});
/* for stripe payment gateway */
function stripe_payment(){
var stripe_Pk = jQuery('#fs_stripe_Pk').val();
var stripe = Stripe(stripe_Pk);
// Create an instance of Elements.
var elements = stripe.elements();
// Custom styling can be passed to options when creating an Element.
// (Note that this demo uses a wider set of styles than the guide below.)
var style = {
base: {
color: '#32325d',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: 'antialiased',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
}
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a'
}
};
// Create an instance of the card Element.
var card = elements.create('card', {style: style});
// Add an instance of the card Element into the `card-element`
.
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
// Create a source or display an error when the form is submitted.
var form = document.getElementById('payment-form');
var symbol;
form.addEventListener('submit', function(event) {
event.preventDefault();
var currency = document.getElementById('fs_currency').innerHTML;
switch (currency) {
case 'र':
symbol = 'INR';
break;
case '$':
symbol = 'USD';
break;
case '£':
symbol = 'GBP';
break;
case '¥':
symbol = 'JPY';
break;
case '€':
symbol = 'EUR';
break;
default:
symbol = 'GBP';
}
var ownerInfo = {
amount: parseInt(document.getElementById("fs_ticket_price").innerHTML)*100,
currency: symbol,
owner: {
name: document.getElementById("billing_first_name").value+" "+document.getElementById("billing_last_name").value,
address: {
line1: document.getElementById("billing_address").value,
city: document.getElementById("billing_city").value,
state: document.getElementById("billing_state").value,
postal_code: document.getElementById("billing_postcode").value,
country: document.getElementById("billing_country").value,
},
email: document.getElementById("billing_email_address").value,
},
};
stripe.createSource(card,ownerInfo).then(function(result) {
if (result.error) {
// Inform the user if there was an error
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
// Send the source to your server
stripeSourceHandler(result.source);
}
});
});
}
function stripeSourceHandler(source) {
// Insert the source ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeSource');
hiddenInput.setAttribute('value', source.id);
form.appendChild(hiddenInput);
// Submit the form
form.submit();
}
/* checkout page payment type radiobutton */
$(document).on( 'click', '.input-radio', function() {
var radio = jQuery('input[name=fs_payment_method]:checked');
if (radio.val() == "cod") {
jQuery('#payment_method').val("cash on delivery");
jQuery('.fs-cod-comment').show();
jQuery('.fs-paypal-comment').hide();
jQuery('.fs-stripe-comment').hide();
}else if (radio.val() == "paypal") {
jQuery('#payment_method').val("paypal");
jQuery('.fs-cod-comment').hide();
jQuery('.fs-paypal-comment').show();
jQuery('.fs-stripe-comment').hide();
}else if (radio.val() == "stripe") {
stripe_payment();
jQuery('#payment_method').val("stripe");
jQuery('.fs-cod-comment').hide();
jQuery('.fs-paypal-comment').hide();
jQuery('.fs-stripe-comment').show();
}
});
/* validation for terms and condition checkbox on checkout page*/
$(document).on( 'click', '.fs-terms-checkbox', function() {
if(jQuery(this).is(":checked")){
jQuery(".fs-order-place-button").prop("disabled", false);
}else{
jQuery(".fs-order-place-button").prop("disabled", true);
}
});
/* validation for form fields checkout page */
$(document).on( 'submit', '#payment-form', function() {
var name = jQuery('input[name=billing_first_name]').val();
var last = jQuery('input[name=billing_last_name]').val();
var country = jQuery('select[name=billing_country]').val();
var email = jQuery('input[name=billing_email_address]').val();
var phone = jQuery('input[name=billing_phone_number]').val();
var address = jQuery('input[name=billing_address]').val();
var city = jQuery('input[name=billing_city]').val();
var state = jQuery('input[name=billing_state]').val();
var postcode = jQuery('input[name=billing_postcode]').val();
var method = jQuery('#payment_method').val();
if( name == '' || last == '' || country == 'none selected' || email == '' || phone == '' || address == '' || city == '' || state == '' || postcode == '' || method == ''){
alert('Fields are required!!!');
return false;
}
});
/* Checkout page phone and postcode validation */
$( document ).on( 'keyup', '#billing_phone_number,#billing_postcode', function( e ) {
e.preventDefault();
var regex = new RegExp( '[^0-9]+', 'gi' );
var value = jQuery(this).val();
// alert(value);
var newvalue = value.replace( regex, '' );
if ( value !== newvalue ) {
jQuery(this).val( newvalue );
}
} );
/* ajax call for checkin and checkout */
$(document).on('click', '.fs-check-in', function() {
var booking_id = jQuery(this).attr('data-bind');
var val = jQuery(this).val();
var checkin_id = jQuery('#fs-total-checkin');
var checkin_val = parseInt(checkin_id.html());
// alert(checkin_val);
var params = {
action: 'fs_check_in',
booking_id: booking_id,
value: val
};
jQuery.post(
ajaxurl,
params,
function( response ) {
console.log(response);
if ( ! response.success ) {
return;
}
if(response.data == 1){
jQuery('#checkin-'+booking_id).hide();
jQuery('#undo-checkin-'+booking_id).show();
checkin_id.html(checkin_val+1);
}else if(response.data == 0){
jQuery('#undo-checkin-'+booking_id).hide();
jQuery('#checkin-'+booking_id).show();
checkin_id.html(checkin_val-1);
}else{
window.location.href = response.data;
}
},
'json'
);
});
/* show refund div on single order */
$(document).on('click', '.fs-refund', function() {
jQuery(this).hide();
jQuery('.fs-order-refund-info').show();
});
/* Refund amount validation function */
amountValidate = function(amount_field){
var regex = new RegExp( '[^\.0-9\.]+', 'gi' );
// alert(regex);
var value = amount_field.val();
// alert(value);
var newvalue = value.replace( regex, '' );
if ( value !== newvalue ) {
amount_field.val( newvalue );
}
}
/* Ticket price validation */
$( document ).on( 'keyup', '#fs_refund_amount', function( e ) {
e.preventDefault();
var amount_field = jQuery( this );
amountValidate(amount_field);
} );
/* ajax call for refund */
$(document).on('click', '.fs-do-refund', function() {
var refund_amount = jQuery('#fs_refund_amount').val();
var order_id = jQuery('#fs_order_id').val();
var pay_method = jQuery('#fs_pay_method').val();
if( refund_amount == '' ){
alert('Refund amount is required!!!');
jQuery('#fs_refund_amount').focus();
return false;
}
var params = {
action: 'fs_amount_refund',
refund_amount: refund_amount,
order_id: order_id,
pay_method: pay_method
};
jQuery.post(
ajaxurl,
params,
function( response ) {
// console.log(response);
if ( ! response.success ) {
return;
}
alert("Your order amount is refunded to your account.")
},
'json'
);
});
/* hide refund div on single order */
$(document).on('click', '.fs-cancel-action', function() {
jQuery('.fs-order-refund-info').hide();
jQuery('.fs-refund').show();
});