'use strict';
var woosq_ids = [], woosq_products = [];
(function($) {
$(function() {
$('.woosq-btn, .woosq-link').each(function() {
var id = $(this).attr('data-id');
var pid = $(this).attr('data-pid');
var product_id = $(this).attr('data-product_id');
if (typeof pid !== typeof undefined && pid !== false) {
id = pid;
}
if (typeof product_id !== typeof undefined && product_id !== false) {
id = product_id;
}
if (-1 === $.inArray(id, woosq_ids)) {
woosq_ids.push(id);
woosq_products.push({
src: woosq_vars.wc_ajax_url.toString().
replace('%%endpoint%%', 'woosq_quickview') + '&product_id=' + id,
});
}
});
// quick view
if (woosq_vars.quick_view > 0) {
setTimeout(function() {
woosq_open(woosq_vars.quick_view);
}, 1000);
}
});
$(document).on('click touch', '[href*="#woosq-"]', function(e) {
var $this = $(this);
var href = $this.attr('href');
var reg = /#woosq-([0-9]+)/g;
var match = reg.exec(href);
if (match[1] !== undefined) {
var id = match[1];
var effect = $this.attr('data-effect');
var context = $this.attr('data-context');
woosq_open(id, effect, context);
e.preventDefault();
}
});
$(document).on('click touch', '.woosq-btn, .woosq-link', function(e) {
e.preventDefault();
var $this = $(this);
var id = $this.attr('data-id');
var pid = $this.attr('data-pid');
var product_id = $this.attr('data-product_id');
var effect = $this.attr('data-effect');
var context = $this.attr('data-context');
if (typeof pid !== typeof undefined && pid !== false) {
id = pid;
}
if (typeof product_id !== typeof undefined && product_id !== false) {
id = product_id;
}
woosq_open(id, effect, context);
});
$(document).on('added_to_cart', function() {
if (woosq_vars.auto_close === 'yes') {
if (woosq_vars.view === 'popup') {
$.magnificPopup.close();
}
woosq_close();
}
});
$(document).on('woosq_loaded', function() {
var form_variation = $('#woosq-popup').find('.variations_form');
form_variation.each(function() {
$(this).wc_variation_form();
});
woosq_init_content('loaded');
// add redirect
if (!$('#woosq-popup .woosq-redirect').length) {
if ((woosq_vars.cart_redirect === 'yes') &&
(woosq_vars.cart_url !== '')) {
$('#woosq-popup form').
prepend(
'');
} else {
$('#woosq-popup form').
prepend(
'');
}
}
});
$(window).on('resize', function() {
woosq_init_content('resize');
});
$(document).on('found_variation', function(e, t) {
if (!$(e['target']).closest('.woosb-product').length &&
!$(e['target']).closest('.woosg-product').length &&
!$(e['target']).closest('.woobt-product').length &&
!$(e['target']).closest('.woofs-product').length &&
$(e['target']).closest('#woosq-popup').length) {
if (t['image_id'] !== undefined) {
if ($('#woosq-popup .thumbnails .thumbnail').length > 1) {
var $thumb = $(
'.thumbnail:not(.slick-cloned)[data-id="' + t['image_id'] + '"]');
if ($thumb.length) {
var pos = $('#woosq-popup .thumbnails .thumbnail').index($thumb);
var $images = $('#woosq-popup .thumbnails .images');
if ((pos > 0) && $images.hasClass('slick-initialized')) {
setTimeout(function() {
$images.slick('slickGoTo', pos - 1);
}, 100);
}
}
}
}
}
});
$(document).on('reset_data', function(e) {
if ($(e['target']).closest('#woosq-popup').length) {
if (($('#woosq-popup .thumbnails .thumbnail').length > 1) &&
$('#woosq-popup .thumbnails .images').hasClass('slick-initialized')) {
$('#woosq-popup .thumbnails .images').slick('slickGoTo', 0);
}
}
});
if (woosq_vars.hashchange === 'yes') {
$(window).on('hashchange', function() {
if (location.href.indexOf('#woosq') < 0) {
if (woosq_vars.view === 'popup') {
$.magnificPopup.close();
}
woosq_close();
}
});
}
$(document).on('click touch', '.woosq-overlay, .woosq-close', function() {
woosq_close();
});
})(jQuery);
function woosq_open(id, effect, context) {
jQuery('body').addClass('woosq-open');
if (woosq_vars.view === 'sidebar') {
// sidebar
woosq_loading();
var data = {
action: 'woosq_quickview',
product_id: id,
context: context,
nonce: woosq_vars.nonce,
};
jQuery.post(woosq_vars.wc_ajax_url.toString().
replace('%%endpoint%%', 'woosq_quickview'), data, function(response) {
jQuery('.woosq-sidebar').html(response);
woosq_loaded();
jQuery(document.body).trigger('woosq_loaded', [id]);
});
} else {
// popup
if (-1 === jQuery.inArray(id, woosq_ids)) {
woosq_ids.push(id);
woosq_products.push({
src: woosq_vars.wc_ajax_url.toString().
replace('%%endpoint%%', 'woosq_quickview') + '&product_id=' + id,
});
}
var index = woosq_get_key(woosq_products, 'src',
woosq_vars.wc_ajax_url.toString().
replace('%%endpoint%%', 'woosq_quickview') + '&product_id=' + id);
var main_class = 'mfp-woosq';
if (typeof context !== typeof undefined && context !== false) {
main_class = main_class + ' mfp-woosq-' + context;
}
if (typeof effect !== typeof undefined && effect !== false) {
main_class = main_class + ' ' + effect;
} else {
main_class = main_class + ' ' + woosq_vars.effect;
}
jQuery.magnificPopup.open({
items: woosq_products,
type: 'ajax',
mainClass: main_class,
removalDelay: 160,
overflowY: 'scroll',
fixedContentPos: true,
tClose: woosq_vars.close,
gallery: {
tPrev: woosq_vars.prev,
tNext: woosq_vars.next,
enabled: woosq_vars.next_prev === 'yes',
},
ajax: {
settings: {
type: 'GET', data: {
nonce: woosq_vars.nonce,
},
},
},
callbacks: {
open: function() {
if (woosq_vars.hashchange === 'yes') {
location.href = location.href.split('#')[0] + '#woosq';
}
}, ajaxContentAdded: function() {
jQuery(document.body).trigger('woosq_loaded', [id]);
}, close: function() {
if (woosq_vars.hashchange === 'yes') {
if (location.hash) history.go(-1);
}
}, afterClose: function() {
jQuery(document.body).trigger('woosq_close', [id]);
},
},
}, index);
}
jQuery(document.body).trigger('woosq_open', [id]);
}
function woosq_close() {
jQuery('body').removeClass('woosq-open');
jQuery(document.body).trigger('woosq_close');
}
function woosq_loading() {
jQuery('.woosq-sidebar').addClass('woosq-loading');
}
function woosq_loaded() {
jQuery('.woosq-sidebar').removeClass('woosq-loading');
}
function woosq_init_content(context) {
if (context === 'loaded') {
woosq_thumbnails_zoom();
woosq_thumbnails_slick();
woosq_related_slick();
}
if (woosq_vars.view === 'sidebar') {
if (woosq_vars.scrollbar === 'yes') {
jQuery('.woosq-product').
perfectScrollbar('destroy').
perfectScrollbar({theme: 'wpc'});
}
} else {
// fix for popup
if (woosq_vars.scrollbar === 'yes') {
if (jQuery(window).width() < 1024) {
jQuery('.woosq-product .summary-content').perfectScrollbar('destroy');
jQuery('.woosq-product').
perfectScrollbar('destroy').
perfectScrollbar({theme: 'wpc'});
} else {
jQuery('.woosq-product').perfectScrollbar('destroy');
jQuery('.woosq-product .summary-content').
perfectScrollbar('destroy').
perfectScrollbar({theme: 'wpc'});
}
}
}
}
function woosq_get_key(array, key, value) {
for (var i = 0; i < array.length; i++) {
if (array[i][key] === value) {
return i;
}
}
return -1;
}
function woosq_thumbnails_zoom() {
if (woosq_vars.thumbnails_effect === 'zoom') {
jQuery('#woosq-popup .thumbnails .images .thumbnail').each(function() {
var $this = jQuery(this);
var zoom_params = JSON.parse(woosq_vars.thumbnails_zoom_params);
zoom_params.url = $this.find('img').attr('data-src');
// destroy first
$this.trigger('zoom.destroy');
$this.zoom(zoom_params);
});
}
}
function woosq_thumbnails_slick() {
if (jQuery('#woosq-popup .thumbnails .images .thumbnail').length > 1) {
if (jQuery('#woosq-popup .thumbnails .images').
hasClass('slick-initialized')) {
// unslick first
jQuery('#woosq-popup .thumbnails .images').slick('unslick');
}
jQuery('#woosq-popup .thumbnails .images').
slick(JSON.parse(woosq_vars.thumbnails_slick_params));
}
}
function woosq_related_slick() {
if (jQuery('.woosq-related-products').hasClass('slick-initialized')) {
// unslick first
jQuery('.woosq-related-products').slick('unslick');
}
if (jQuery('.woosq-related-product').length > 1) {
jQuery('.woosq-related-products').
slick(JSON.parse(woosq_vars.related_slick_params));
}
}