File: /home/salamatk/takarzan.ir/wp-content/themes/xts-luman/js/scripts/productsTabs.js
/* global xts_settings */
(function($) {
XTSThemeModule.xtsElementorAddAction('frontend/element_ready/xts_product_tabs.default', function() {
XTSThemeModule.productsTabs();
XTSThemeModule.$document.trigger('xtsElementorProductTabsReady');
XTSThemeModule.$document.trigger('xts_countDownTimer');
});
XTSThemeModule.productsTabs = function() {
var process = false;
$('.xts-products-tabs').each(function() {
var $wrapper = $(this);
var $content = $wrapper.find('.xts-products-tab-content');
var cache = [];
cache[0] = {
html: $content.html()
};
$wrapper.find('.xts-products-tab-title').on('click', function(e) {
e.preventDefault();
var $this = $(this);
var atts = $this.data('atts');
var index = $this.index();
if (process || $this.hasClass('xts-active')) {
return;
}
process = true;
loadTab(atts, index, $content, $this, cache, function(data) {
var itemQueue = [];
var queueTimer;
// Animations
function processItemQueue(delay) {
if (queueTimer) {
return;
}
queueTimer = window.setInterval(function() {
if (itemQueue.length) {
$(itemQueue.shift()).addClass('xts-animated');
processItemQueue(delay);
} else {
window.clearInterval(queueTimer);
queueTimer = null;
}
}, delay);
}
if (data.html) {
$content.html(data.html);
if ($content.find('.xts-products.xts-in-view-animation').length > 0 ) {
$content.find('.xts-products').removeClass('xts-inited xts-loaded');
// Animations
if (typeof ($.fn.waypoint) !== 'undefined') {
$content.find('.xts-col').each(function() {
var $element = $(this);
$element.data('xts-waypoint', 'inited');
$element.waypoint(function() {
var $this = $($(this)[0].element);
var delay = $this.parents('.xts-in-view-animation').data('animation-delay');
$this.addClass('xts-animation-ready');
itemQueue.push($this);
processItemQueue(delay);
}, {
offset: '90%'
});
});
}
}
XTSThemeModule.$document.trigger('xtsProductTabLoaded');
XTSThemeModule.$document.trigger('xtsImagesLoaded');
}
});
});
});
var loadTab = function(atts, index, $holder, $btn, cache, callback) {
$btn.parent().find('.xts-active').removeClass('xts-active');
$btn.addClass('xts-active');
if (cache[index]) {
$holder.addClass('xts-loading');
setTimeout(function() {
callback(cache[index]);
$holder.removeClass('xts-loading');
process = false;
}, 300);
return;
}
$holder.addClass('xts-loading').parent().addClass('xts-loading');
$btn.addClass('xts-loading');
$.ajax({
url : xts_settings.ajaxurl,
data : {
atts : atts,
action: 'xts_get_products_tab_element'
},
dataType: 'json',
method : 'POST',
success : function(data) {
cache[index] = data;
callback(data);
},
error : function() {
console.log('ajax error');
},
complete: function() {
$holder.removeClass('xts-loading').parent().removeClass('xts-loading');
$btn.removeClass('xts-loading');
process = false;
}
});
};
};
$(document).ready(function() {
XTSThemeModule.productsTabs();
});
})(jQuery);