/* Document ready */
jQuery(document).ready(function($) {
"use strict";
/**
* Check if a node is blocked for processing.
*
* @param {JQuery Object} $node
* @return {bool} True if the DOM Element is UI Blocked, false if not.
*/
var mini_cart_ext_is_blocked = function($node) {
return $node.is('.processing') || $node.parents('.processing').length;
};
/**
* Block a node visually for processing.
*
* @param {JQuery Object} $node
*/
var mini_cart_ext_block = function($node) {
$('body').trigger('nasa_publish_coupon_refresh');
if (!mini_cart_ext_is_blocked($node)) {
var $color = $('body').hasClass('nasa-dark') ? '#000' : '#fff';
$node.addClass('processing').block({
message: null,
overlayCSS: {
background: $color,
opacity: 0.6
}
});
}
};
/**
* Unblock a node after processing is complete.
*
* @param {JQuery Object} $node
*/
var mini_cart_ext_unblock = function($node) {
$node.removeClass('processing').unblock();
if ($node.find('.nasa-close-node').length) {
$node.find('.nasa-close-node').trigger('click');
}
$('body').trigger('nasa_publish_coupon_refresh');
if ($('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').length) {
$('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').trigger('change');
$(document.body).trigger('country_to_state_changed'); // Trigger select2 to load.
}
};
var mini_cart_ext_url = function(endpoint) {
return ext_mini_cart_params.wc_ajax_url.toString().replace('%%endpoint%%', endpoint);
};
/**
* Show mess
* @param {type} mess
* @returns {undefined}
*/
var _ext_remove_mess;
var mini_cart_ext_mess = function(mess) {
$('.ext-mini-cart-wrap .mess-wrap').remove();
$('.ext-mini-cart-wrap').append('
' + mess + '
');
if (_ext_remove_mess) {
clearTimeout(_ext_remove_mess);
}
_ext_remove_mess = setTimeout(function() {
$('.ext-mini-cart-wrap .mess-wrap').remove();
}, 5000);
};
$('body').on('nasa_opened_cart_sidebar', function() {
if (!$('body').hasClass('canvas-on')) {
$('body').addClass('canvas-on');
}
$('body').trigger('ns_render_ext_mini_cart_nonce');
$('body').trigger('nasa_publish_coupon_refresh');
});
$('body').on('nasa_after_close_fog_window', function() {
$('body').removeClass('canvas-on');
});
/**
* Close Node
*/
$('body').on('click', '.nasa-close-node', function() {
var _cart = $(this).parents('.nasa-static-sidebar');
var _node = $(this).parents('.ext-node');
if($(this).parents('.ns-cart-popup-wrap').length) {
_cart = $(this).parents('.ns-cart-popup');
}
if ($(_cart).length) {
$(_cart).removeClass('ext-loading');
}
if ($(_node).length) {
$(_node).removeClass('active');
}
if ($(_node).hasClass('mini-cart-change-variation')) {
nasa_quick_viewimg = false;
setTimeout(function(){
$(_node).find('.product-lightbox').remove();
},100);
}
$(_cart).find('.close-nodes').remove();
});
/**
* Global Close
*/
$('body').on('click', '.nasa-static-sidebar .close-nodes, .ns-cart-popup .close-nodes', function() {
var _wrap = $(this).parents('.ns-cart-popup-wrap').length ? $(this).parents('.ns-cart-popup') : $(this).parents('.nasa-static-sidebar');;
var _close = $(_wrap).find('.ext-nodes-wrap .ext-node.active .nasa-close-node');
if ($(_close).length) {
$(_close).trigger('click');
}
});
/**
* Open ext mini cart
*/
$('body').on('click', '.ext-mini-cart', function() {
var _act = $(this).attr('data-act'),
_cart = $(this).parents('.nasa-static-sidebar');
if($(this).parents('.ns-cart-popup-wrap').length) {
_cart = $(this).parents('.ns-cart-popup');
}
if ($(_cart).find('.ext-mini-cart-wrap').length && !$(_cart).find('.ext-mini-cart-wrap').hasClass('nasa-disable')) {
if (!$('body').hasClass('canvas-on')) {
$('body').addClass('canvas-on');
}
if (!$(_cart).hasClass('ext-loading')) {
$(_cart).addClass('ext-loading');
}
if ($(_cart).find('.close-nodes').length < 1) {
$(_cart).append('');
}
$(_cart).find('.ext-nodes-wrap .ext-node').removeClass('active');
if ($(_cart).find('.ext-nodes-wrap .ext-node.mini-cart-' + _act).length) {
$(_cart).find('.ext-nodes-wrap .ext-node.mini-cart-' + _act).addClass('active');
}
}
});
/**
* ext mini cart Note
*/
$('body').on('click', '#mini-cart-save_note', function(e) {
e.preventDefault();
var _this = $(this);
var _wnote = $(_this).parents('.ext-node');
if (!$(_this).hasClass('nasa-disable')) {
$(_this).addClass('nasa-disable');
var _wrap = $(_this).parents('.nasa-static-sidebar');
if ($(_wrap).length < 1) {
_wrap = $(_this).parents('.widget_shopping_cart_content');
}
var _note = $('.mini-cart-note textarea[name="order_comments"]').val();
mini_cart_ext_block(_wrap);
$(_wnote).removeClass('active');
$.ajax({
url: mini_cart_ext_url('nasa_mini_cart_note'),
type: 'post',
dataType: 'json',
cache: false,
data: {
order_comments: _note
},
success: function(data) {
$('#cart-sidebar').find('.woocommerce-error, .woocommerce-message, .woocommerce-info').remove();
$(_this).removeClass('nasa-disable');
if (data) {
if (data.fragments) {
$.each(data.fragments, function(key, value) {
if ($(key).length) {
$(key).replaceWith(value);
}
});
// $('body').trigger('added_to_cart', [data.fragments, data.cart_hash, _this]);
$('body').trigger('wc_fragments_refreshed');
// $('body').trigger('wc_fragment_refresh');
/**
* notification free shipping
*/
$('body').trigger('nasa_init_shipping_free_notification');
}
/**
* mess
*/
if (data.mess) {
mini_cart_ext_mess(data.mess);
}
}
$('body').trigger('mini_cart_mobile_layout_change');
mini_cart_ext_unblock(_wrap);
},
complete: function() {
mini_cart_ext_unblock(_wrap);
}
});
}
});
$('body').on('wc_fragments_refreshed', function() {
if ($('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').length) {
$('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').trigger('change');
$(document.body).trigger('country_to_state_changed'); // Trigger select2 to load.
}
});
/**
* Publish Coupons
*/
$('body').on('nasa_publish_coupon_refresh', function() {
if ($('.mini-cart-coupon .publish-coupon').length) {
$('.mini-cart-coupon .publish-coupon').each(function() {
var _this = $(this);
var _code = $(_this).attr('data-code');
$(_this).removeClass('nasa-actived');
if ($('.coupon-wrap[data-code="' + _code + '"]').length) {
$(_this).addClass('nasa-actived');
}
});
}
});
/**
* From Publish Coupon
*/
$('body').on('click', '.mini-cart-coupon .publish-coupon:not(.nasa-actived)', function() {
var _this = (this);
var _code = $(_this).attr('data-code');
if ($('#mini-cart-add-coupon_code').length) {
$('#mini-cart-add-coupon_code').val(_code).trigger('change');
if ($('#mini-cart-apply_coupon').length) {
$('#mini-cart-apply_coupon').trigger('click');
}
}
});
/**
* Apply Coupon
*/
$('body').on('click', '#mini-cart-apply_coupon', function(e) {
e.preventDefault();
var _this = $(this);
var _wnote = $(_this).parents('.ext-node');
var _nonce = $('.mini-cart-ajax-nonce input[name=apply_coupon_nonce]').length ? $('.mini-cart-ajax-nonce input[name=apply_coupon_nonce]').val() : null;
if (_nonce && !$(_this).hasClass('nasa-disable')) {
$(_this).addClass('nasa-disable');
var _wrap = $(_this).parents('.nasa-static-sidebar');
if ($(_wrap).length < 1) {
_wrap = $(_this).parents('.widget_shopping_cart_content');
}
var coupon = $('input#mini-cart-add-coupon_code').val();
if (coupon) {
mini_cart_ext_block(_wrap);
$(_wnote).removeClass('active');
var _data = {
security: _nonce,
coupon_code: coupon
};
$.ajax({
type: 'POST',
url: mini_cart_ext_url('nasa_mini_cart_apply_coupon'),
data: _data,
dataType: 'json',
success: function(data) {
$('#cart-sidebar').find('.woocommerce-error, .woocommerce-message, .woocommerce-info').remove();
$(_this).removeClass('nasa-disable');
if (data) {
if (data.fragments) {
$.each(data.fragments, function(key, value) {
if ($(key).length) {
$(key).replaceWith(value);
}
});
// $('body').trigger('added_to_cart', [data.fragments, data.cart_hash, _this]);
$('body').trigger('wc_fragments_refreshed');
// $('body').trigger('wc_fragment_refresh');
/**
* notification free shipping
*/
$('body').trigger('nasa_init_shipping_free_notification');
}
/**
* mess
*/
if (data.mess) {
mini_cart_ext_mess(data.mess);
}
$('input#mini-cart-add-coupon_code').val('').trigger('change');
}
$('body').trigger('mini_cart_mobile_layout_change');
mini_cart_ext_unblock(_wrap);
},
complete: function() {
mini_cart_ext_unblock(_wrap);
}
});
}
else {
$(_this).removeClass('nasa-disable');
}
}
});
/**
* Remove Coupon
*/
$('body').on('click', '.widget_shopping_cart_content .woocommerce-remove-coupon', function(e) {
e.preventDefault();
var _this = $(this);
var _nonce = $('.mini-cart-ajax-nonce input[name=remove_coupon_nonce]').length ? $('.mini-cart-ajax-nonce input[name=remove_coupon_nonce]').val() : null;
if (_nonce && !$(_this).hasClass('nasa-disable')) {
$(_this).addClass('nasa-disable');
var _wrap = $(_this).parents('.nasa-static-sidebar');
if ($(_wrap).length < 1) {
_wrap = $(_this).parents('.widget_shopping_cart_content');
}
mini_cart_ext_block(_wrap);
var coupon = $(_this).attr('data-coupon');
var _data = {
security: _nonce,
coupon: coupon
};
$.ajax({
type: 'POST',
url: mini_cart_ext_url('nasa_mini_cart_remove_coupon'),
data: _data,
dataType: 'json',
success: function(data) {
$('#cart-sidebar').find('.woocommerce-error, .woocommerce-message, .woocommerce-info').remove();
$(_this).removeClass('nasa-disable');
if (data) {
if (data.fragments) {
$.each(data.fragments, function(key, value) {
if ($(key).length) {
$(key).replaceWith(value);
}
});
// $('body').trigger('added_to_cart', [data.fragments, data.cart_hash, _this]);
$('body').trigger('wc_fragments_refreshed');
// $('body').trigger('wc_fragment_refresh');
/**
* notification free shipping
*/
$('body').trigger('nasa_init_shipping_free_notification');
}
/**
* mess
*/
if (data.mess) {
mini_cart_ext_mess(data.mess);
}
}
mini_cart_ext_unblock(_wrap);
},
complete: function() {
mini_cart_ext_unblock(_wrap);
}
});
}
});
/**
* Calculate Shipping Rate
*/
$('body').on('click', '.mini-cart-shipping [name="calc_shipping"]', function(e) {
e.preventDefault();
var _this = $(this);
var _wnote = $(_this).parents('.ext-node');
if (!$(_this).hasClass('nasa-disable')) {
$(_this).addClass('nasa-disable');
var _wrap = $(_this).parents('.nasa-static-sidebar');
var $form = $(_this).parents('form');
mini_cart_ext_block(_wrap);
$(_wnote).removeClass('active');
$('').attr('type', 'hidden')
.attr('name', 'calc_shipping')
.attr('value', 'x')
.appendTo($form);
var _data = $form.serialize();
$.ajax({
type: 'POST',
url: mini_cart_ext_url('nasa_mini_cart_calculate_shipping'),
data: _data,
dataType: 'json',
success: function(data) {
$('#cart-sidebar').find('.woocommerce-error, .woocommerce-message, .woocommerce-info').remove();
$(_this).removeClass('nasa-disable');
if (data) {
if (data.fragments) {
$.each(data.fragments, function(key, value) {
if ($(key).length) {
$(key).replaceWith(value);
}
});
// $('body').trigger('added_to_cart', [data.fragments, data.cart_hash, _this]);
$('body').trigger('wc_fragments_refreshed');
// $('body').trigger('wc_fragment_refresh');
/**
* notification free shipping
*/
$('body').trigger('nasa_init_shipping_free_notification');
}
/**
* mess
*/
if (data.mess) {
mini_cart_ext_mess(data.mess);
}
}
$('body').trigger('mini_cart_mobile_layout_change');
mini_cart_ext_unblock(_wrap);
},
complete: function() {
mini_cart_ext_unblock(_wrap);
}
});
}
});
/**
* Refresh nonce code
*/
var ns_ext_now = Date.now();
$('body').on('ns_render_ext_mini_cart_nonce', function() {
if ($('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').length) {
$('#cart-sidebar select.country_to_state, #cart-sidebar input.country_to_state').trigger('change');
$(document.body).trigger('country_to_state_changed'); // Trigger select2 to load.
}
var ns_now_click = Date.now();
/**
* Accept with 10 min ago
*/
if ($('#cart-sidebar .mini-cart-ajax-nonce').length <= 0 && (ns_now_click - ns_ext_now) / 1000 / 60 < 10) {
$.ajax({
url: mini_cart_ext_url('nasa_ext_cart_ajax_nonce'),
type: 'post',
dataType: 'json',
cache: false,
data: {},
success: function(data) {
if (data) {
if (data.fds) {
$('#cart-sidebar').append(data.fds);
}
if (data.scalc && $('input#woocommerce-shipping-calculator-nonce').length) {
$('input#woocommerce-shipping-calculator-nonce').val(data.scalc);
}
}
},
complete: function() {
}
});
}
});
});
/* End Document Ready */