(function ($){
'use strict';
var productDealsCarouselHandler=function ($scope, $){
$scope.find('.mf-elementor-product-deals-carousel').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: true,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
responsive: [
{
breakpoint: 1366,
settings: {
slidesToShow: slidesToShow > 5 ? 5:slidesToShow,
slidesToScroll: slidesToScroll > 5 ? 5:slidesToScroll
}},
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
},
},
{
breakpoint: 992,
settings: {
slidesToShow: 3,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: 2,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
},
}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var productDealsCarousel2Handler=function ($scope, $){
$scope.find('.mf-product-deals-carousel-2').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings'),
$gallery=$selector.find('.woocommerce-product-gallery');
$selector.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots: false,
infinite: 'yes'===elementSettings.infinite,
prevArrow: $selector.find('.slick-prev-arrow'),
nextArrow: $selector.find('.slick-next-arrow'),
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed)
});
var options={
selector: '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image',
allowOneSlide: false,
animation: "slide",
animationLoop: false,
animationSpeed: 500,
controlNav: "thumbnails",
directionNav: false,
rtl: false,
slideshow: false,
smoothHeight: true,
start: function (){
$gallery.css('opacity', 1);
},
};
$gallery.flexslider(options);
$selector.find('.deal-expire-countdown').each(function (){
$(document).trigger('deal_expire_countdown', $(this));
});
$gallery.each(function (){
var $el=$(this);
$el.imagesLoaded(function (){
var $thumbnail=$el.find('.flex-control-thumbs');
setTimeout(function (){
if($thumbnail.length < 1){
return;
}
var columns=$el.data('columns');
var count=$thumbnail.find('li').length;
if(count > columns){
$thumbnail.not('.slick-initialized').slick({
slidesToShow: columns,
slidesToScroll: 1,
focusOnSelect: true,
vertical: true,
infinite: false,
prevArrow: '<span class="icon-chevron-up slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-down slick-next-arrow"></span>',
responsive: [
{
breakpoint: 768,
settings: {
slidesToShow: 4
}},
{
breakpoint: 480,
settings: {
slidesToShow: 3
}}
]
});
}else{
$thumbnail.addClass('no-slick');
}}, 100);
});
});
$selector.find('.woocommerce-product-gallery__image').on('click', function (){
var href=$(this).closest('div.product').find('.product-title > a').attr('href');
location.href=href;
return false;
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var lazyLoadHandler=function ($els){
if($els.length===0){
$els=$('body');
}
$els.find('img.lazy').lazyload({
load: function (){
$(this).removeClass('lazy');
}});
};
var getProductsCarouselHandler=function ($els){
var $selector=$els,
elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: true,
infinite: 'yes'===elementSettings.infinite,
prevArrow: elementSettings.arrows_background=='yes' ? '<span class="icon-chevron-left slick-prev-arrow"><span class="mf-arrow-bg"><svg xmlns="http://www.w3.org/2000/svg" width="28" height="123" viewBox="0 0 28 123"><path fill="currentColor" fill-rule="evenodd" d="M135,1763s1.945-18.7,11.511-28.64c14.019-14.57,16.641-21.14,16.481-33.19-0.3-22.74-27.992-30.59-27.992-57.81V1763Z" transform="translate(-135 -1640)"/> </svg></span></span>':'<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow:  elementSettings.arrows_background=='yes' ? '<span class="icon-chevron-right slick-next-arrow"><span class="mf-arrow-bg"><svg xmlns="http://www.w3.org/2000/svg" width="28" height="123" viewBox="0 0 28 123"><path fill="currentColor" fill-rule="evenodd" d="M1785,1763s-1.94-18.7-11.51-28.64c-14.02-14.57-16.64-21.14-16.48-33.19,0.3-22.74,27.99-30.59,27.99-57.81V1763Z" transform="translate(-1757 -1640)"/></svg></span></span>':'<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 1500,
settings: {
slidesToShow: slidesToShow > 6 ? 6:slidesToShow,
slidesToScroll: slidesToScroll > 6 ? 6:slidesToScroll
}},
{
breakpoint: 1366,
settings: {
slidesToShow: slidesToShow > 5 ? 5:slidesToShow,
slidesToScroll: slidesToScroll > 5 ? 5:slidesToScroll
}},
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
};
var countDownHandler=function ($scope, $){
$scope.find('.martfury-countdown').mf_countdown();
};
var categoryTabsCarouselHandler=function ($scope, $){
$scope.find('.mf-category-tabs').each(function (){
var $selector=$(this);
$selector.find('ul.tabs-nav').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: 8,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
infinite: false,
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 6,
slidesToScroll: 6
}},
{
breakpoint: 992,
settings: {
slidesToShow: 4,
slidesToScroll: 4
}},
{
breakpoint: 480,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var categoryTabsHandler=function ($scope, $){
$scope.find('.martfury-tabs').mrtabs();
};
var productsListCarouselHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-list-carousel');
getProductsCarouselHandler($selector);
};
var productsCarouselHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-carousel');
if(!$selector.hasClass('no-infinite')){
productCarouselInfinite($selector);
}else{
getProductsCarouselHandler($selector);
}
function productCarouselInfinite($selector){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
getProductCarouselAjax($selector);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function getProductCarouselAjax($selector){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-carousel-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsCarousel'
},
success: function (response){
$selector.html(response.data);
getProductsCarouselHandler($selector);
lazyLoadHandler($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
}};
var recentlyViewedProductsCarouselHandler=function ($scope, $){
$scope.find('.mf-product-recently-viewed-carousel').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: true,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 1600,
settings: {
slidesToShow: slidesToShow > 5 ? 5:slidesToShow,
slidesToScroll: slidesToScroll > 5 ? 5:slidesToScroll
}},
{
breakpoint: 1366,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var productsGridHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-grid');
if(!$selector.hasClass('no-infinite')){
productGridInfinite($selector);
}
function productGridInfinite($selector){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
getProductGridAjax($selector);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function getProductGridAjax($selector){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-grid-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsGrid'
},
success: function (response){
$selector.html(response.data);
lazyLoadHandler($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
}};
var productBrandsHandler=function ($scope, $){
var $selector=$scope.find('.mf-elementor-brands-grid');
getProductBrandCarousel($selector);
productBrandsInfinite($selector);
function productBrandsInfinite($selector){
$(window).on('scroll', function (){
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
$selector.find('.navigation-number a').trigger('click');
}}).trigger('scroll');
$selector.on('click', '.navigation-number a', function (e){
e.preventDefault();
var $el=$(this);
if($el.data('requestRunning')){
return;
}
$el.data('requestRunning', true);
var $pagination=$el.closest('.navigation-number'),
$products=$pagination.prev('.product-brands');
$el.addClass('loading');
$.get($el.attr('href'),
function (response){
var $wrapper=$(response).find('.mf-elementor-brands-grid'),
content=$wrapper.find('.product-brands').children('.brand-item-wrapper'),
$pagination_html=$wrapper.find('.navigation-number').html();
$pagination.html($pagination_html);
$products.append(content);
lazyLoadHandler(content);
getProductBrandCarousel(content.closest('.mf-elementor-brands-grid'));
$pagination.find('a')
.data('requestRunning', false);
$el.removeClass('loading');
}
);
});
}
function getProductBrandCarousel($selector){
var elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: false,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 480,
settings: {
slidesToShow: slidesToShow > 1 ? 1:slidesToShow,
slidesToScroll: slidesToScroll > 1 ? 1:slidesToScroll
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
}};
var brandsImagesCarouselHandler=function ($scope, $){
var $selector=$scope.find('.elementor-brand-images-carousel');
var elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('.images-list').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: false,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 800,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 600,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 400,
settings: {
slidesToShow: slidesToShow > 1 ? 1:slidesToShow,
slidesToScroll: slidesToScroll > 1 ? 1:slidesToScroll
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
}
var productTabsCarouselHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-tabs-carousel');
if(!$selector.hasClass('no-infinite')){
productTabsCarouselInfinite($selector);
}else{
getProductsCarouselHandler($selector);
productTabsActive($selector);
$selector.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
getProductsTabsAJAXHandler($(this), $selector, true);
});
}
function productTabsCarouselInfinite($selector){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
getProductTabsCarouselAjax($selector);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function getProductTabsCarouselAjax($selector){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-tabs-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsTabsCarousel'
},
success: function (response){
$selector.html(response.data);
getProductsCarouselHandler($selector);
lazyLoadHandler($selector);
productTabsActive($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
$(document.body).on('martfury_get_products_ajax_success', function (){
$selector.find('.slick-slider').slick('setPosition');
});
}};
var productTabsActive=function ($selector){
$selector.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
var $this=$(this),
currentTab=$this.data('href');
if($this.hasClass('active')){
return;
}
$selector.find('.tabs-nav a').removeClass('active');
$this.addClass('active');
$selector.find('.tabs-panel').removeClass('active');
$selector.find('.tabs-' + currentTab).addClass('active');
$selector.find('.slick-slider').slick('setPosition');
lazyLoadHandler($selector.find('.tabs-' + currentTab));
});
};
var productTabsGridHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-tabs-grid');
if(!$selector.hasClass('no-infinite')){
productTabsGridInfinite($selector);
}else{
productTabsActive($selector);
$selector.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
getProductsTabsAJAXHandler($(this), $selector, false);
});
}
function productTabsGridInfinite($selector){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
getProductTabsGridAjax($selector);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function getProductTabsGridAjax($selector){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-tabs-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsTabsGrid'
},
success: function (response){
$selector.html(response.data);
lazyLoadHandler($selector);
productTabsActive($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
}};
var getProductsTabsAJAXHandler=function ($el, $tabs, carousel){
if(typeof mf_elementor_data==='undefined'){
return;
}
var tab=$el.data('href'),
$content=$tabs.find('.tabs-' + tab);
if($content.hasClass('tab-loaded')){
return;
}
var data={},
elementSettings=$content.data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_load_products');
$.each(elementSettings, function (key, value){
data[key]=value;
});
$.post(ajax_url,
data,
function (response){
if(!response){
return;
}
$content.html(response.data);
if(carousel===true){
getProductsCarouselHandler($content.closest('.mf-products-tabs'));
}
lazyLoadHandler($content);
$content.addClass('tab-loaded');
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
};
var testimonialSlidesHandler=function ($scope, $){
$scope.find('.mf-elementor-testimonial-slides').each(function (){
var $selector=$(this),
$arrow_wrapper=$(this).find('.arrow-wrapper'),
elementSettings=$selector.data('settings');
var options={
rtl: $('body').hasClass('rtl'),
slidesToShow: 2,
arrows: true,
dots: true,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<div class="mf-left-arrow"><i class="icon-chevron-left"></i></div>',
nextArrow: '<div class="mf-right-arrow"><i class="icon-chevron-right"></i></div>',
appendArrows: $arrow_wrapper,
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 480,
settings: {
slidesToShow: 1,
}}
]
};
$selector.find('.testimonial-list').not('.slick-initialized').slick(options);
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var testimonialSlides2Handler=function ($scope, $){
$scope.find('.mf-elementor-testimonial-slides-2').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings');
var options={
rtl: $('body').hasClass('rtl'),
slidesToShow: 1,
arrows: false,
dots: true,
infinite: 'yes'===elementSettings.infinite,
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
};
$selector.find('.testimonial-list').not('.slick-initialized').slick(options);
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var partnerSlidesHandler=function ($scope, $){
$scope.find('.martfury-partner-carousel').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings');
$selector.find('.list-item').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: elementSettings.columns,
infinite: false,
arrows: false,
dots: false,
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: parseInt(elementSettings.autoplay_speed) > 4 ? 4:elementSettings.autoplay_speed
}},
{
breakpoint: 768,
settings: {
slidesToShow: 3
}},
{
breakpoint: 480,
settings: {
slidesToShow: 2
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var imagesCarouselHandler=function ($scope, $){
$scope.find('.mf-images-gallery--slide').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.find('.images-list').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: false,
dots: 'yes'===elementSettings.dots,
infinite: 'yes'===elementSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var imageBoxCarouselHandler=function ($scope, $){
$scope.find('.martfury-image-box-carousel__wrapper').each(function (){
var $selector=$(this),
elementSettings=$selector.data('settings'),
slidesToShow=parseInt(elementSettings.slidesToShow),
slidesToScroll=parseInt(elementSettings.slidesToScroll);
$selector.not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: true,
infinite: 'yes'===elementSettings.infinite,
prevArrow: $scope.find('.slick-prev-arrow'),
nextArrow: $scope.find('.slick-next-arrow'),
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
speed: parseInt(elementSettings.speed),
responsive: [
{
breakpoint: 1600,
settings: {
slidesToShow: slidesToShow > 6 ? 6:slidesToShow,
slidesToScroll: slidesToScroll > 6 ? 6:slidesToScroll
}},
{
breakpoint: 1366,
settings: {
slidesToShow: slidesToShow > 5 ? 5:slidesToShow,
slidesToScroll: slidesToScroll > 5 ? 5:slidesToScroll
}},
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}}
]
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
var journeyHandler=function ($scope, $){
$scope.find('.martfury-journey-els').each(function (){
var $el=$(this),
$tabs=$el.find('ul li a'),
$first=$tabs.filter(':first'),
$content=$el.find('.journey-wrapper'),
width=$el.find('ul').width(),
elementSettings=$el.data('settings'),
num=parseInt(elementSettings.number),
space, pos, val;
if(num==1){
space=0;
}else{
space=(width - 40) / (num - 1);
}
for (var i=1; i <=num; i++){
var $this=$('.journey-tab-' + i);
if($('body').hasClass('rtl')){
if($this.hasClass('reverse')){
pos='left';
val=(i - num) * space * -1;
}else{
pos='right';
val=(i - 1) * space;
}}else{
if($this.hasClass('reverse')){
pos='right';
val=(i - num) * space * -1;
}else{
pos='left';
val=(i - 1) * space;
}}
$this.css(pos, val);
}
$first.addClass('active');
$content.filter(':first').addClass('active');
$tabs.on('click', function (e){
e.preventDefault();
var $this=$(this),
tab_id=$this.attr('data-tab');
if($this.hasClass('active')){
return;
}
$tabs.removeClass('active');
$content.removeClass('active');
$this.addClass('active');
$('#' + tab_id).addClass('active');
});
});
};
var counterHandler=function ($scope, $){
$scope.find('.martfury-counter-els').each(function (){
var $selector=$(this);
$selector.find('.counter-value').counterUp();
});
};
var productsOfCategoryHandler=function ($scope, $){
var $selector=$scope.find('.mf-products-of-category'),
elementSettings=$selector.data('settings');
if(!$selector.hasClass('no-infinite')){
productsOfCategoryAJAX($selector, elementSettings);
}else{
bannersCarousel($selector, elementSettings);
}
function productsOfCategoryAJAX($selector, elementSettings){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
productsOfCatAjax($selector, elementSettings);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function productsOfCatAjax($selector, elementSettings){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-of-category-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsOfCat'
},
success: function (response){
$selector.html(response.data);
bannersCarousel($selector, elementSettings);
lazyLoadHandler($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
}
function bannersCarousel($selector, elementSettings){
$selector.find('.images-list').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: 1,
arrows: 'yes'===elementSettings.arrows,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
infinite: 'yes'===elementSettings.infinite,
autoplay: 'yes'===elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplay_speed),
dots: 'yes'===elementSettings.dots,
speed: parseInt(elementSettings.speed),
});
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
}};
var productOfCategory2Handler=function ($scope, $){
var $selector=$scope.find('.mf-products-of-category-2');
if(!$selector.hasClass('no-infinite')){
productsOfCategory2Infinite($selector);
}else{
bannerCarousel($selector);
productCarousel($selector);
productTabsActive($selector);
}
function productsOfCategory2Infinite($selector){
$(window).on('scroll', function (){
if($selector.hasClass('no-infinite')){
return;
}
var offSet=0;
if($selector.is(':in-viewport(' + offSet + ')')){
productsOfCat2Ajax($selector);
$selector.addClass('no-infinite');
}}).trigger('scroll');
}
function productsOfCat2Ajax($selector){
if(typeof mf_elementor_data==='undefined'){
return;
}
var dataSettings=$selector.find('.mf-products-of-category-loading').data('settings'),
ajax_url=mf_elementor_data.ajax_url.toString().replace('%%endpoint%%', 'mf_elementor_get_elements');
$.ajax({
url: ajax_url,
dataType: 'json',
method: 'post',
data: {
params: JSON.stringify(dataSettings),
element: 'productsOfCat2'
},
success: function (response){
$selector.html(response.data);
bannerCarousel($selector);
productCarousel($selector);
lazyLoadHandler($selector);
productTabsActive($selector);
$(document.body).trigger('martfury_get_products_ajax_success');
}});
}
function bannerCarousel($selector){
var $banners=$selector.find('.images-slider'),
bannerSettings=$banners.data('settings');
$banners.find('.images-list').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: 1,
arrows: 'yes'===bannerSettings.arrows,
dots: false,
infinite: 'yes'===bannerSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===bannerSettings.autoplay,
autoplaySpeed: parseInt(bannerSettings.autoplay_speed),
speed: parseInt(bannerSettings.speed),
});
$banners.on('afterChange', function (){
lazyLoadHandler($banners);
});
}
function productCarousel($selector){
var $products=$selector.find('.mf-products-tabs'),
productSettings=$products.data('settings'),
slidesToShow=parseInt(productSettings.slidesToShow),
slidesToScroll=parseInt(productSettings.slidesToScroll);
$products.find('ul.products').not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: true,
dots: true,
infinite: 'yes'===productSettings.infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: 'yes'===productSettings.autoplay,
autoplaySpeed: parseInt(productSettings.autoplay_speed),
speed: parseInt(productSettings.speed),
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 767,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}}
]
});
$products.on('afterChange', function (){
lazyLoadHandler($products);
});
$products.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
getProductsTabsAJAXHandler($(this), $products, true);
});
}};
var slideCarouselHandler=function ($scope, $){
$scope.find('.mf-slides-wrapper').each(function (){
var $selector=$(this).find('.mf-slides'),
elementSettings=$selector.data('slider_options'),
$arrow_wrapper=$(this).find('.arrows-inner'),
slidesToShow=parseInt(elementSettings.slidesToShow);
$selector.not('.slick-initialized').slick({
rtl: $('body').hasClass('rtl'),
slidesToShow: slidesToShow,
arrows: elementSettings.arrows,
appendArrows: $arrow_wrapper,
dots: elementSettings.dots,
infinite: elementSettings.infinite,
prevArrow: '<span class="slick-prev-arrow"><i class="icon-chevron-left"></i></span>',
nextArrow: '<span class="slick-next-arrow"><i class="icon-chevron-right"></i></span>',
autoplay: elementSettings.autoplay,
autoplaySpeed: parseInt(elementSettings.autoplaySpeed),
speed: parseInt(elementSettings.speed),
pauseOnHover: elementSettings.pauseOnHover,
fade: elementSettings.fade,
cssEase: elementSettings.fade ? 'linear':'',
responsive: []
});
$selector.imagesLoaded(function (){
$selector.closest('.mf-slides-wrapper').removeClass('loading');
});
var animation=$selector.data('animation');
if(animation){
$selector
.on('beforeChange', function (){
var $sliderContent=$selector.find('.mf-slide-content'),
$sliderPriceBox=$selector.find('.mf-slide-price-box');
$sliderContent.removeClass('animated' + ' ' + animation).hide();
$sliderPriceBox.removeClass('animated zoomIn').hide();
})
.on('afterChange', function (event, slick, currentSlide){
var $currentSlide=$(slick.$slides.get(currentSlide)).find('.mf-slide-content'),
$currentPriceBox=$(slick.$slides.get(currentSlide)).find('.mf-slide-price-box');
$currentSlide.show().addClass('animated' + ' ' + animation);
$currentPriceBox.show().addClass('animated zoomIn');
});
}
$selector.on('afterChange', function (){
lazyLoadHandler($selector);
});
});
};
$(window).on("elementor/frontend/init", function (){
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-deals-carousel.default",
productDealsCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-deals-carousel.default",
countDownHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-deals-grid.default",
countDownHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-deals-carousel-2.default",
productDealsCarousel2Handler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-of-category.default",
productsOfCategoryHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-category-tabs.default",
categoryTabsCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-category-tabs.default",
categoryTabsHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-tabs-carousel.default",
productTabsCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-product-tabs-grid.default",
productTabsGridHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-list-carousel.default",
productsListCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-carousel.default",
productsCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-recently-viewed-products-carousel.default",
recentlyViewedProductsCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-testimonial-slides.default",
testimonialSlidesHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-testimonial-slides-2.default",
testimonialSlides2Handler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-counter.default",
counterHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-journey.default",
journeyHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-grid.default",
productsGridHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-brands.default",
productBrandsHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/mf-brand-images-carousel.default",
brandsImagesCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/widget",
lazyLoadHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-countdown.default",
countDownHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-products-of-category-2.default",
productOfCategory2Handler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-partner.default",
partnerSlidesHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-images-carousel.default",
imagesCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-image-box-carousel.default",
imageBoxCarouselHandler
);
elementorFrontend.hooks.addAction("frontend/element_ready/martfury-slides.default",
slideCarouselHandler
);
});
})
(jQuery);
(function ($){
'use strict';
var martfury=martfury||{};
martfury.init=function (){
martfury.$body=$(document.body),
martfury.$window=$(window),
martfury.$header=$('#masthead');
this.journey();
this.testimonialSlides();
this.partnerCarousel();
this.gmaps();
this.productsOfCategory();
this.productsOfCategory2();
this.productsTabs();
this.categoryTabs();
this.productsCarousel();
this.dealsOfDay();
this.productDealsCarousel();
this.topSelling();
this.productsListCarousel();
this.brandsGrid();
this.brandImagesCarousel();
if($.fn.counterUp){
$('.martfury-counter .counter-value').counterUp();
}};
martfury.journey=function (){
$('.martfury-journey').each(function (){
var $el=$(this),
$tabs=$el.find('ul li a'),
$first=$tabs.filter(':first'),
$content=$el.find('.journey-wrapper'),
width=$el.find('ul').width(),
num=$el.attr('data-number'),
space, pos, val;
if(num==1){
space=0;
}else{
space=(width - 40) / (num - 1);
}
for (var i=1; i <=num; i++){
var $this=$('.journey-tab-' + i);
if(martfuryShortCode.direction==='true'){
if($this.hasClass('reverse')){
pos='left';
val=(i - num) * space * -1;
}else{
pos='right';
val=(i - 1) * space;
}}else{
if($this.hasClass('reverse')){
pos='right';
val=(i - num) * space * -1;
}else{
pos='left';
val=(i - 1) * space;
}}
$this.css(pos, val + 15);
}
$first.addClass('active');
$content.filter(':first').addClass('active');
$tabs.on('click', function (e){
e.preventDefault();
var $this=$(this),
tab_id=$this.attr('data-tab');
if($this.hasClass('active')){
return;
}
$tabs.removeClass('active');
$content.removeClass('active');
$this.addClass('active');
$('#' + tab_id).addClass('active');
});
});
};
martfury.testimonialSlides=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.testimonial==='undefined'){
return;
}
$.each(martfuryShortCode.testimonial, function (id, testimonialData){
var $testimonial=$(document.getElementById(id));
$testimonial.not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: 2,
infinite: testimonialData.autoplay,
arrows: testimonialData.nav,
prevArrow: '<div class="mf-left-arrow"><i class="icon-chevron-left"></i></div>',
nextArrow: '<div class="mf-right-arrow"><i class="icon-chevron-right"></i></div>',
autoplay: testimonialData.autoplay,
autoplaySpeed: testimonialData.autoplay_speed,
speed: 800,
dots: testimonialData.dot,
responsive: [
{
breakpoint: 1200,
settings: {
arrows: false,
dots: true
}},
{
breakpoint: 768,
settings: {
arrows: false,
dots: true
}},
{
breakpoint: 480,
settings: {
slidesToShow: 1,
arrows: false,
dots: true
}}
]
});
$testimonial.on('afterChange', function (){
martfury.lazyLoad($testimonial);
});
});
};
martfury.partnerCarousel=function (){
$('.martfury-partner.carousel-type').each(function (){
var $this=$(this),
$items=$this.find('.list-item'),
columns=$this.data('columns'),
autoplay=$this.data('auto'),
autoplaySpeed=autoplay;
autoplay=parseInt(autoplaySpeed) > 0 ? true:false;
$items.not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: columns,
infinite: false,
arrows: false,
dots: false,
autoplay: autoplay,
autoplaySpeed: autoplaySpeed,
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 4
}},
{
breakpoint: 768,
settings: {
slidesToShow: 3
}},
{
breakpoint: 480,
settings: {
slidesToShow: 2
}}
]
});
});
};
martfury.productsOfCategory=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsOfCategory==='undefined'){
return;
}
$.each(martfuryShortCode.productsOfCategory, function (id, productsOfCategoryData){
var $viewPort=$(document.getElementById(id));
martfury.catBannerCarousel($viewPort.find('.images-list'), productsOfCategoryData);
});
$(window).on('scroll', function (){
var offSet=0;
$.each(martfuryShortCode.productsOfCategory, function (id, productsOfCategoryData){
var $viewPort=$(document.getElementById(id));
if(!$viewPort.hasClass('no-infinite')){
if($viewPort.is(':in-viewport(' + offSet + ')')){
productsOfCatAjax($viewPort, productsOfCategoryData);
$viewPort.addClass('no-infinite');
}}
});
}).trigger('scroll');
function productsOfCatAjax($viewPort, productsOfCategoryData){
var data={
nonce: martfuryData.nonce,
params: productsOfCategoryData.params,
element: 'productsOfCat'
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'martfury_get_shortcode_ajax');
$.post(ajax_url,
data,
function (response){
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.catBannerCarousel($viewPort.find('.images-list'), productsOfCategoryData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
}};
martfury.productsOfCategory2=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsOfCategory2==='undefined'){
return;
}
$.each(martfuryShortCode.productsOfCategory2, function (id, productsOfCategoryData){
var $viewPort=$(document.getElementById(id));
martfury.catBannerCarousel($viewPort.find('.images-list'), productsOfCategoryData);
});
$(window).on('scroll', function (){
var offSet=0;
$.each(martfuryShortCode.productsOfCategory2, function (id, productsOfCategoryData){
var $viewPort=$(document.getElementById(id));
if(!$viewPort.hasClass('no-infinite')){
if($viewPort.is(':in-viewport(' + offSet + ')')){
productsOfCatAjax($viewPort, productsOfCategoryData);
$viewPort.addClass('no-infinite');
}}
});
}).trigger('scroll');
function productsOfCatAjax($viewPort, productsOfCategoryData){
var data={
nonce: martfuryData.nonce,
params: productsOfCategoryData.params,
element: 'productsOfCat2'
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'martfury_get_shortcode_ajax');
$.post(ajax_url,
data,
function (response){
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.catBannerCarousel($viewPort.find('.images-list'), productsOfCategoryData);
martfury.getproductsCarousel($viewPort.find('.mf-products-tabs'), productsOfCategoryData);
martfury.productTabsActive($viewPort);
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
}};
martfury.productTabsActive=function ($viewPort){
$viewPort.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
var $this=$(this),
currentTab=$this.data('href');
if($this.hasClass('active')){
return;
}
$viewPort.find('.tabs-nav a').removeClass('active');
$this.addClass('active');
$viewPort.find('.tabs-panel').removeClass('active');
$viewPort.find('.tabs-' + currentTab).addClass('active');
});
}
martfury.catBannerCarousel=function ($id, productsOfCategoryData){
$id.not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: 1,
arrows: productsOfCategoryData.navigation,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
infinite: productsOfCategoryData.infinite,
autoplay: productsOfCategoryData.autoplay,
autoplaySpeed: productsOfCategoryData.autoplay_speed,
dots: productsOfCategoryData.pagination
});
$id.on('afterChange', function (){
martfury.lazyLoad($id);
});
};
martfury.productsTabs=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsTabs==='undefined'){
return;
}
$.each(martfuryShortCode.productsTabs, function (id, productsTabsData){
var $viewPort=$(document.getElementById(id));
martfury.getproductsCarousel($viewPort, productsTabsData);
$viewPort.find('.tabs-nav').on('click', 'a', function (e){
e.preventDefault();
var $this=$(this),
currentTab=$this.data('href'),
$currentEl=$this.closest('.mf-products-tabs');
if($this.hasClass('active')){
return;
}
$viewPort.find('.tabs-nav a').removeClass('active');
$this.addClass('active');
$viewPort.find('.tabs-panel').removeClass('active');
$viewPort.find('.tabs-' + currentTab).addClass('active');
getProductsAJAXHandler($this, $currentEl, productsTabsData);
});
});
$(window).on('scroll', function (){
var offSet=0;
$.each(martfuryShortCode.productsTabs, function (id, productsTabsData){
var $viewPort=$(document.getElementById(id));
if(!$viewPort.hasClass('no-infinite')){
if($viewPort.is(':in-viewport(' + offSet + ')')){
productsTabsAjax($viewPort, productsTabsData);
$viewPort.addClass('no-infinite');
}}
});
}).trigger('scroll');
function productsTabsAjax($viewPort, productsTabsData){
var data={
nonce: martfuryData.nonce,
params: productsTabsData.params,
element: 'productTabs'
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'martfury_get_shortcode_ajax');
$.post(ajax_url,
data,
function (response){
$viewPort.find('.tabs-content').html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsTabsData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
}
function getProductsAJAXHandler($el, $tabs, productsTabsData){
var tab=$el.data('href'),
$content=$tabs.find('.tabs-' + tab);
if($content.hasClass('tab-loaded')){
return;
}
var data={
'columns': productsTabsData.pro_columns,
'products': tab,
'per_page': productsTabsData.per_page,
'product_cats': productsTabsData.pro_cats,
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'mf_wpbakery_load_products');
$.post(ajax_url,
data,
function (response){
if(!response){
return;
}
$content.html(response.data);
martfury.lazyLoad($content);
martfury.getproductsCarousel($content, productsTabsData);
$content.addClass('tab-loaded');
}
);
};};
martfury.productsCarousel=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsCarousel==='undefined'){
return;
}
$.each(martfuryShortCode.productsCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id));
martfury.getproductsCarousel($viewPort, productsData);
});
$(window).on('scroll', function (){
var offSet=0;
$.each(martfuryShortCode.productsCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id));
if(!$viewPort.hasClass('no-infinite')){
if($viewPort.is(':in-viewport(' + offSet + ')')){
productsCarouselAjax($viewPort, productsData);
$viewPort.addClass('no-infinite');
}}
});
}).trigger('scroll');
function productsCarouselAjax($viewPort, productsData){
var data={
nonce: martfuryData.nonce,
params: productsData.params,
element: 'productsCarousel'
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'martfury_get_shortcode_ajax');
$.post(ajax_url,
data,
function (response){
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
}};
martfury.dealsOfDay=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.DealsOfDay==='undefined'){
return;
}
$.each(martfuryShortCode.DealsOfDay, function (id, productsData){
var $viewPort=$(document.getElementById(id));
$viewPort.find('ul.products').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: productsData.pro_columns,
slidesToScroll: productsData.pro_columns,
arrows: productsData.pro_navigation,
dots: productsData.pro_navigation,
infinite: productsData.pro_infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: productsData.pro_autoplay,
autoplaySpeed: productsData.pro_autoplay_speed,
responsive: [
{
breakpoint: 1366,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 5 ? 5:productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 5 ? 5:productsData.pro_columns
}},
{
breakpoint: 1200,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 4 ? 4:productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 4 ? 4:productsData.pro_columns
}},
{
breakpoint: 992,
settings: {
slidesToShow: 3,
slidesToScroll: 3
}},
{
breakpoint: 767,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}}
]
});
$viewPort.on('afterChange', function (){
martfury.lazyLoad($viewPort);
});
});
};
martfury.productDealsCarousel=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productDealsCarousel==='undefined'){
return;
}
$.each(martfuryShortCode.productDealsCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id));
$viewPort.find('.products').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: productsData.pro_columns,
slidesToScroll: productsData.pro_columns,
arrows: productsData.pro_navigation,
infinite: productsData.pro_infinite,
prevArrow: $viewPort.find('.slick-prev-arrow'),
nextArrow: $viewPort.find('.slick-next-arrow'),
autoplay: productsData.pro_autoplay,
autoplaySpeed: productsData.pro_autoplay_speed
});
$viewPort.find('.woocommerce-product-gallery__image').on('click', function (){
var href=$(this).closest('div.product').find('.product-title > a').attr('href');
location.href=href;
return false;
});
$viewPort.on('afterChange', function (){
martfury.lazyLoad($viewPort);
});
});
};
martfury.topSelling=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.topSelling==='undefined'){
return;
}
$.each(martfuryShortCode.topSelling, function (id, productsData){
var $viewPort=$(document.getElementById(id));
martfury.getproductsCarousel($viewPort, productsData);
});
$(window).on('scroll', function (){
var offSet=0;
$.each(martfuryShortCode.topSelling, function (id, productsData){
var $viewPort=$(document.getElementById(id));
if(!$viewPort.hasClass('no-infinite')){
if($viewPort.is(':in-viewport(' + offSet + ')')){
productsCarouselAjax($viewPort, productsData);
$viewPort.addClass('no-infinite');
}}
});
}).trigger('scroll');
function productsCarouselAjax($viewPort, productsData){
var data={
nonce: martfuryData.nonce,
params: productsData.params,
element: 'topSelling'
},
ajax_url=martfuryShortCode.wc_ajax_url.toString().replace('%%endpoint%%', 'martfury_get_shortcode_ajax');
$.post(ajax_url,
data,
function (response){
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
);
}};
martfury.productsListCarousel=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsListCarousel==='undefined'){
return;
}
$.each(martfuryShortCode.productsListCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id));
$viewPort.find('ul.products').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
dots: productsData.dots,
infinite: productsData.infinite,
autoplay: productsData.autoplay,
autoplaySpeed: productsData.autoplay_speed
});
$viewPort.on('afterChange', function (){
martfury.lazyLoad($viewPort);
});
});
};
martfury.getproductsCarousel=function ($id, productsData){
$id.find('ul.products').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: productsData.pro_columns,
slidesToScroll: productsData.pro_columns,
arrows: productsData.pro_navigation,
dots: productsData.pro_navigation,
infinite: productsData.pro_infinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: productsData.pro_autoplay,
autoplaySpeed: productsData.pro_autoplay_speed,
responsive: [
{
breakpoint: 1600,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 6 ? 6:productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 6 ? 6:productsData.pro_columns
}},
{
breakpoint: 1366,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 5 ? 5:productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 5 ? 5:productsData.pro_columns
}},
{
breakpoint: 1200,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 4 ? 4:productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 4 ? 4:productsData.pro_columns
}},
{
breakpoint: 992,
settings: {
slidesToShow: 3,
slidesToScroll: 3
}},
{
breakpoint: 767,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}}
]
});
$id.on('afterChange', function (){
martfury.lazyLoad($id);
});
};
martfury.categoryTabs=function (){
var $tabs=$('.mf-category-tabs');
if($tabs.length < 1){
return;
}
$tabs.find('ul.tabs-nav').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: 8,
infinite: false,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 6,
slidesToScroll: 6
}},
{
breakpoint: 992,
settings: {
slidesToShow: 4,
slidesToScroll: 4
}},
{
breakpoint: 480,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}}
]
});
};
martfury.lazyLoad=function ($els){
$els.find('img.lazy').lazyload({
load: function (){
$(this).removeClass('lazy');
}}).trigger('appear');
};
martfury.gmaps=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.map==='undefined'){
return;
}
var mapOptions={
scrollwheel: false,
draggable: true,
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
panControl: false,
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL
},
scaleControl: false,
streetViewControl: false
},
customMap;
var bounds=new google.maps.LatLngBounds();
var infoWindow=new google.maps.InfoWindow();
$.each(martfuryShortCode.map, function (id, mapData){
var map_color=mapData.map_color,
road_highway_color=mapData.road_highway_color;
var styles =
[
{
'featureType': 'administrative',
'elementType': 'labels.text.fill',
'stylers': [{'color': '#444444'}]
},
{
'featureType': 'landscape',
'elementType': 'all',
'stylers': [{'color': '#f2f2f2'}]
},
{
'featureType': 'landscape',
'elementType': 'geometry.fill',
'stylers': [{'color': '#f2f2f2'}]
},
{
'featureType': 'landscape',
'elementType': 'geometry.stroke',
'stylers': [{'color': '#000000'}]
},
{
'featureType': 'poi',
'elementType': 'all',
'stylers': [{'visibility': 'off'}]
},
{
'featureType': 'road',
'elementType': 'all',
'stylers': [{'saturation': -100}, {'lightness': 45}]
},
{
'featureType': 'road.highway',
'elementType': 'all',
'stylers': [{'visibility': 'simplified'}]
},
{
'featureType': 'road.highway',
'elementType': 'geometry.fill',
'stylers': [{'color': road_highway_color}]
},
{
'featureType': 'road.arterial',
'elementType': 'labels.icon',
'stylers': [{'visibility': 'off'}]
},
{
'featureType': 'road.local',
'elementType': 'geometry.fill',
'stylers': [{'color': '#e6e6e6'}]
},
{
'featureType': 'transit',
'elementType': 'all',
'stylers': [{'visibility': 'off'}]
},
{
'featureType': 'water',
'elementType': 'all',
'stylers': [{'visibility': 'on'}, {'color': map_color}]
}
];
customMap=new google.maps.StyledMapType(styles,
{name: 'Styled Map'});
if(mapData.number > 1){
mutiMaps(infoWindow, bounds, mapOptions, mapData, id, styles, customMap);
}else{
singleMap(mapOptions, mapData, id, styles, customMap);
}});
};
function singleMap(mapOptions, mapData, id, styles, customMap){
var map,
marker,
location=new google.maps.LatLng(mapData.lat, mapData.lng);
mapOptions.zoom=parseInt(mapData.zoom, 10);
mapOptions.center=location;
mapOptions.mapTypeControlOptions={
mapTypeIds: [google.maps.MapTypeId.ROADMAP]
};
map=new google.maps.Map(document.getElementById(id), mapOptions);
var markerOptions={
map: map,
position: location
};
if(mapData.marker){
markerOptions.icon={
url: mapData.marker
};}
map.mapTypes.set('map_style', customMap);
map.setMapTypeId('map_style');
marker=new google.maps.Marker(markerOptions);
if(mapData.info){
var infoWindow=new google.maps.InfoWindow({
content: '<div class="info-box mf-map">' + mapData.info + '</div>',
maxWidth: 600
});
google.maps.event.addListener(marker, 'click', function (){
infoWindow.open(map, marker);
});
}}
function mutiMaps(infoWindow, bounds, mapOptions, mapData, id, styles, customMap){
mapOptions.zoom=parseInt(mapData.zoom, 10);
mapOptions.mapTypeControlOptions={
mapTypeIds: [google.maps.MapTypeId.ROADMAP]
};
var map=new google.maps.Map(document.getElementById(id), mapOptions);
map.mapTypes.set('map_style', customMap);
map.setMapTypeId('map_style');
for (var i=0; i < mapData.number; i++){
var lats=mapData.lat,
lng=mapData.lng,
info=mapData.info;
var position=new google.maps.LatLng(lats[i], lng[i]);
bounds.extend(position);
var markerOptions={
map: map,
position: position
};
if(mapData.marker){
markerOptions.icon={
url: mapData.marker
};}
var marker=new google.maps.Marker(markerOptions);
googleMaps(infoWindow, map, marker, info[i]);
map.fitBounds(bounds);
}}
function googleMaps(infoWindow, map, marker, info){
google.maps.event.addListener(marker, 'click', function (){
infoWindow.setContent(info);
infoWindow.open(map, marker);
});
}
martfury.brandsGrid=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsbrandCarousel==='undefined'){
return;
}
$.each(martfuryShortCode.productsbrandCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id));
productBrandsCarousel($viewPort, productsData);
productBrandsInfinite($viewPort);
function productBrandsInfinite($viewPort){
$(window).on('scroll', function (){
var offSet=0;
if($viewPort.is(':in-viewport(' + offSet + ')')){
$viewPort.find('.navigation-number a').trigger('click');
}}).trigger('scroll');
$viewPort.find('.navigation-number').on('click', 'a', function (e){
e.preventDefault();
var $el=$(this);
if($el.data('requestRunning')){
return;
}
$el.data('requestRunning', true);
var $pagination=$el.closest('.navigation-number'),
$products=$pagination.prev('.product-brands'),
href=$el.attr('href');
$el.parent().addClass('loading');
$.get(href,
function (response){
var content=$(response).find('.mf-brands-grid .product-brands').children('.brand-item-wrapper'),
$pagination_html=$(response).find('.navigation-number').html();
$pagination.html($pagination_html);
$products.append(content);
martfury.lazyLoad(content);
productBrandsCarousel(content, productsData);
$pagination.find('a').data('requestRunning', false);
$pagination.removeClass('loading');
}
);
});
}});
function productBrandsCarousel($viewPort, productsData){
var slidesToShow=parseInt(productsData.slidesToShow),
slidesToScroll=parseInt(productsData.slidesToScroll);
$viewPort.find('ul.products').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: productsData.slidesArrows,
infinite: productsData.slideInfinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: productsData.slideAutoplay,
autoplaySpeed: productsData.slideAutoplaySpeed,
responsive: [
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 480,
settings: {
slidesToShow: slidesToShow > 1 ? 1:slidesToShow,
slidesToScroll: slidesToScroll > 1 ? 1:slidesToScroll
}}
]
});
$viewPort.on('afterChange', function (){
martfury.lazyLoad($viewPort);
});
}};
martfury.brandImagesCarousel=function (){
if(martfuryShortCode.length===0||typeof martfuryShortCode.productsImagesCarousel==='undefined'){
return;
}
$.each(martfuryShortCode.productsImagesCarousel, function (id, productsData){
var $viewPort=$(document.getElementById(id)),
slidesToShow=parseInt(productsData.slidesToShow),
slidesToScroll=parseInt(productsData.slidesToScroll);
$viewPort.find('.images-list').not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction==='true'),
slidesToShow: slidesToShow,
slidesToScroll: slidesToScroll,
arrows: productsData.slidesArrows,
infinite: productsData.slideInfinite,
prevArrow: '<span class="icon-chevron-left slick-prev-arrow"></span>',
nextArrow: '<span class="icon-chevron-right slick-next-arrow"></span>',
autoplay: productsData.slideAutoplay,
autoplaySpeed: productsData.slideAutoplaySpeed,
responsive: [
{
breakpoint: 992,
settings: {
slidesToShow: slidesToShow > 4 ? 4:slidesToShow,
slidesToScroll: slidesToScroll > 4 ? 4:slidesToScroll
}},
{
breakpoint: 800,
settings: {
slidesToShow: slidesToShow > 3 ? 3:slidesToShow,
slidesToScroll: slidesToScroll > 3 ? 3:slidesToScroll
}},
{
breakpoint: 600,
settings: {
slidesToShow: slidesToShow > 2 ? 2:slidesToShow,
slidesToScroll: slidesToScroll > 2 ? 2:slidesToScroll
}},
{
breakpoint: 400,
settings: {
slidesToShow: slidesToShow > 1 ? 1:slidesToShow,
slidesToScroll: slidesToScroll > 1 ? 1:slidesToScroll
}}
]
});
$viewPort.on('afterChange', function (){
martfury.lazyLoad($viewPort);
});
});
}
$(function (){
martfury.init();
});
})(jQuery);