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(); });