( function ( $ ) {
var wcf_toggle_optimized_fields = function () {
jQuery.each(
cartflows_optimized_fields,
function ( field, cartflows_optimized_field ) {
if ( cartflows_optimized_field.is_optimized ) {
jQuery( '#' + field ).prepend(
'<a href="#" id="wcf_optimized_' +
field +
'">' +
cartflows_optimized_field.field_label +
'</a>'
);
jQuery( '#wcf_optimized_' + field ).on(
'click',
function ( e ) {
e.preventDefault();
jQuery( '#' + field ).removeClass(
'wcf-hide-field'
);
// jQuery("#" + field).removeClass('mt20')
var field_id = field.replace( /_field/g, '' );
$( '#' + field_id ).trigger( 'focus' );
jQuery( this ).remove();
}
);
}
}
);
};
var wcf_page_title_notification = {
vars: {
originalTitle: document.title,
interval: null,
},
On: function ( notification, intervalSpeed ) {
var _this = this;
_this.vars.interval = setInterval(
function () {
document.title =
_this.vars.originalTitle == document.title
? notification
: _this.vars.originalTitle;
},
intervalSpeed ? intervalSpeed : 1000
);
},
Off: function () {
clearInterval( this.vars.interval );
document.title = this.vars.originalTitle;
},
};
var wcf_animate_browser_tab = function () {
if ( 'yes' !== cartflows_animate_tab_fields.enabled ) {
return;
}
$( window ).blur( function () {
wcf_page_title_notification.On(
cartflows_animate_tab_fields.title
);
} );
$( window ).on( 'focus', function () {
wcf_page_title_notification.Off();
} );
};
// Scroll to top for the two step navigation.
var wcf_scroll_to_top = function ( scrollTo ) {
if ( scrollTo.length ) {
event.preventDefault();
$( 'html, body' )
.stop()
.animate(
{
scrollTop: scrollTo.offset().top - 50,
},
100
);
}
};
var wcf_display_spinner = function () {
$(
'.woocommerce-checkout-review-order-table, .wcf-product-option-wrap'
).block( {
message: null,
overlayCSS: {
background: '#fff',
opacity: 0.6,
},
} );
};
var wcf_remove_spinner = function ( rsp ) {
if ( jQuery( '.wc_payment_methods' ).length ) {
if ( rsp.hasOwnProperty( 'cart_total' ) ) {
var cart_total = parseFloat( rsp.cart_total );
if ( cart_total > 0 ) {
if ( rsp.hasOwnProperty( 'fragments' ) ) {
$.each( rsp.fragments, function ( key, value ) {
$( key ).replaceWith( value );
} );
}
$(
'.woocommerce-checkout-review-order-table, .wcf-product-option-wrap'
).unblock();
} else {
$( 'body' ).trigger( 'update_checkout' );
$(
'.woocommerce-checkout-review-order-table, .wcf-product-option-wrap'
).unblock();
}
}
} else {
$( 'body' ).trigger( 'update_checkout' );
$(
'.woocommerce-checkout-review-order-table, .wcf-product-option-wrap'
).unblock();
}
};
var wcf_product_quantity_var_options = function () {
var wcf_variation_validation_trigger_click = function () {
$( 'form.woocommerce-checkout' ).on(
'checkout_place_order',
function ( e ) {
var invalid_var = $(
'.wcf-select-variation-attribute.wcf-invalid-variation'
);
if ( invalid_var.length > 0 ) {
e.preventDefault();
wcf_scroll_to_top( invalid_var );
return ! 1;
}
}
);
$( '.wcf-select-variation-attribute' ).on( 'click', function ( e ) {
e.preventDefault();
var wrap = $( this ).closest( '.wcf-qty-row' );
wrap.find( '.wcf-item-choose-options a' ).trigger( 'click' );
} );
};
/* Single Selection */
$( document ).on( 'change', '.wcf-single-sel', function () {
var $this = $( this );
var wrap = $this.closest( '.wcf-qty-row' );
var option = wrap.data( 'options' );
var input = wrap.find( '.wcf-qty input' );
var input_quantity = parseInt( input.val() );
var checkout_id = $( '._wcf_checkout_id' ).val();
if ( 0 >= input_quantity || isNaN( input_quantity ) ) {
input.val( 1 );
input_quantity = 1;
}
option[ 'input_quantity' ] = input_quantity;
option[ 'checkout_id' ] = checkout_id;
wcf_display_spinner();
$.ajax( {
url: cartflows.ajax_url,
data: {
action: 'wcf_single_selection',
option: option,
security: cartflows.wcf_single_selection_nonce,
},
dataType: 'json',
type: 'POST',
success: function ( response ) {
if ( response.hasOwnProperty( 'cartflows_data' ) ) {
wrap.find( '.wcf-display-quantity' ).html(
response.cartflows_data.display_quantity
);
wrap.find( '.wcf-display-price' ).html(
response.cartflows_data.display_price
);
wrap.find( '.wcf-display-discount-value' ).html(
response.cartflows_data.display_discount_value
);
wrap.find( '.wcf-display-discount-percent' ).html(
response.cartflows_data.display_discount_percent
);
wrap.find( '.wcf_subscription_price' ).html(
response.cartflows_data.subscription_price
);
wrap.find( '.wcf_subscription_fee' ).html(
response.cartflows_data.sign_up_fee
);
console.log( response );
}
wcf_remove_spinner( response );
option[ 'cart_item_key' ] = response.cart_item_key;
wrap.attr( 'data-options', JSON.stringify( option ) );
// Re-calculate the cart total
$( document.body ).trigger( 'updated_cart_totals' );
},
error: function ( error ) {
$( '.woocommerce-checkout-review-order-table' ).unblock();
},
} );
} );
/* Multiple Selection */
$( document ).on( 'change', '.wcf-multiple-sel', function () {
var checked_cb = $( '.wcf-multiple-sel:checked' );
var $this = $( this );
var wrap = $this.closest( '.wcf-qty-row' );
var option = wrap.data( 'options' );
var input = wrap.find( '.wcf-qty input' );
var input_quantity = parseInt( input.val() );
var checkout_id = $( '._wcf_checkout_id' ).val();
if ( 0 >= input_quantity || isNaN( input_quantity ) ) {
input.val( 1 );
input_quantity = 1;
}
if ( 0 == checked_cb.length ) {
$this.prop( 'checked', true );
$this.prop( 'disabled', true );
return;
}
if ( 1 == checked_cb.length ) {
checked_cb.prop( 'disabled', true );
} else {
checked_cb.removeAttr( 'disabled' );
}
option[ 'checkout_id' ] = checkout_id;
option[ 'input_quantity' ] = input_quantity;
option[ 'checked' ] = 'no';
if ( $this.is( ':checked' ) ) {
option[ 'checked' ] = 'yes';
}
wcf_display_spinner();
$.ajax( {
url: cartflows.ajax_url,
data: {
action: 'wcf_multiple_selection',
option: option,
security: cartflows.wcf_multiple_selection_nonce,
},
dataType: 'json',
type: 'POST',
success: function ( response ) {
if ( response.hasOwnProperty( 'cartflows_data' ) ) {
wrap.find( '.wcf-display-quantity' ).html(
response.cartflows_data.display_quantity
);
wrap.find( '.wcf-display-price' ).html(
response.cartflows_data.display_price
);
wrap.find( '.wcf-display-discount-value' ).html(
response.cartflows_data.display_discount_value
);
wrap.find( '.wcf-display-discount-percent' ).html(
response.cartflows_data.display_discount_percent
);
wrap.find( '.wcf_subscription_price' ).html(
response.cartflows_data.subscription_price
);
wrap.find( '.wcf_subscription_fee' ).html(
response.cartflows_data.sign_up_fee
);
}
wcf_remove_spinner( response );
option[ 'cart_item_key' ] = response.cart_item_key;
wrap.attr( 'data-options', JSON.stringify( option ) );
// Re-calculate the cart total
$( document.body ).trigger( 'updated_cart_totals' );
},
error: function ( error ) {
$( '.woocommerce-checkout-review-order-table' ).unblock();
},
} );
} );
/* Force All Selection */
$( document ).on( 'change', '.wcf-var-sel', function () {
var $this = $( this );
var wrap = $this.closest( '.wcf-qty-row' );
var input = wrap.find( '.wcf-qty input' );
var option = wrap.data( 'options' );
var input_quantity = parseInt( input.val() );
var checkout_id = $( '._wcf_checkout_id' ).val();
option[ 'checkout_id' ] = checkout_id;
option[ 'input_quantity' ] = input_quantity;
wcf_display_spinner();
$.ajax( {
url: cartflows.ajax_url,
data: {
action: 'wcf_variation_selection',
option: option,
security: cartflows.wcf_variation_selection_nonce,
},
dataType: 'json',
type: 'POST',
success: function ( response ) {
if ( response.hasOwnProperty( 'cartflows_data' ) ) {
wrap.find( '.wcf-display-quantity' ).html(
response.cartflows_data.display_quantity
);
wrap.find( '.wcf-display-price' ).html(
response.cartflows_data.display_price
);
wrap.find( '.wcf-display-discount-value' ).html(
response.cartflows_data.display_discount_value
);
wrap.find( '.wcf-display-discount-percent' ).html(
response.cartflows_data.display_discount_percent
);
wrap.find( '.wcf_subscription_price' ).html(
response.cartflows_data.subscription_price
);
wrap.find( '.wcf_subscription_fee' ).html(
response.cartflows_data.sign_up_fee
);
}
wcf_remove_spinner( response );
// Re-calculate the cart total
Loading ...