(function ($) {
'use strict';
var martfury = martfury || {};
martfury.init = function () {
martfury.$body = $(document.body),
martfury.$window = $(window),
martfury.$header = $('#masthead');
this.rowParallax();
this.journey();
this.testimonialSlides();
this.partnerCarousel();
this.gmaps();
// products of category
this.productsOfCategory();
this.productsOfCategory2();
// product tabs
this.productsTabs();
// category Tabs
this.categoryTabs();
// products carousel
this.productsCarousel();
this.dealsOfDay();
this.productDealsCarousel();
this.topSelling();
this.productsListCarousel();
/*Couterup*/
$('.martfury-counter .counter-value').counterUp();
};
/*
* Vc row parallax
*/
martfury.rowParallax = function () {
var $parallaxsRow = $('.vc_row.parallax');
for (var i = 0; i < $parallaxsRow.length; i++) {
$($parallaxsRow[i]).parallax('50%', 0.6);
}
};
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');
});
});
};
/**
* Init testimonial carousel
*/
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: '
',
nextArrow: '
',
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');
$items.not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction === 'true'),
slidesToShow: columns,
infinite: false,
arrows: false,
dots: false,
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) {
$.ajax({
url: martfuryData.ajax_url,
dataType: 'json',
method: 'post',
data: {
action: 'martfury_get_shortcode_ajax',
nonce: martfuryData.nonce,
params: productsOfCategoryData.params,
element: 'productsOfCat'
},
success: 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) {
$.ajax({
url: martfuryData.ajax_url,
dataType: 'json',
method: 'post',
data: {
action: 'martfury_get_shortcode_ajax',
nonce: martfuryData.nonce,
params: productsOfCategoryData.params,
element: 'productsOfCat2'
},
success: function (response) {
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.catBannerCarousel($viewPort.find('.images-list'), productsOfCategoryData);
martfury.getproductsCarousel($viewPort.find('.mf-products-tabs'), productsOfCategoryData);
$(document.body).trigger('martfury_get_products_ajax_success');
$(document.body).trigger('martfury_get_tabs_ajax_success');
}
});
}
};
martfury.catBannerCarousel = function ($id, productsOfCategoryData) {
$id.not('.slick-initialized').slick({
rtl: (martfuryShortCode.direction === 'true'),
slidesToShow: 1,
arrows: productsOfCategoryData.navigation,
prevArrow: '',
nextArrow: '',
infinite: productsOfCategoryData.infinite,
autoplay: productsOfCategoryData.autoplay,
autoplaySpeed: productsOfCategoryData.autoplay_speed,
dots: productsOfCategoryData.pagination
});
$id.on('afterChange', function () {
martfury.lazyLoad($id);
});
};
/**
* Products Tabs
*/
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);
});
$(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) {
$.ajax({
url: martfuryData.ajax_url,
dataType: 'json',
method: 'post',
data: {
action: 'martfury_get_shortcode_ajax',
nonce: martfuryData.nonce,
params: productsTabsData.params,
element: 'productTabs'
},
success: function (response) {
$viewPort.find('.tabs-content').html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsTabsData);
$(document.body).trigger('martfury_get_tabs_ajax_success');
$(document.body).trigger('martfury_get_products_ajax_success');
}
});
}
};
/**
* Products carousel
*/
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) {
$.ajax({
url: martfuryData.ajax_url,
dataType: 'json',
method: 'post',
data: {
action: 'martfury_get_shortcode_ajax',
nonce: martfuryData.nonce,
params: productsData.params,
element: 'productsCarousel'
},
success: function (response) {
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
});
}
};
/**
* Products carousel
*/
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: '',
nextArrow: '',
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);
});
});
};
/**
* Products carousel
*/
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.on('afterChange', function () {
martfury.lazyLoad($viewPort);
});
});
};
/**
* Top Selling Products
*/
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) {
$.ajax({
url: martfuryData.ajax_url,
dataType: 'json',
method: 'post',
data: {
action: 'martfury_get_shortcode_ajax',
nonce: martfuryData.nonce,
params: productsData.params,
element: 'topSelling'
},
success: function (response) {
$viewPort.html(response.data);
martfury.lazyLoad($viewPort);
martfury.getproductsCarousel($viewPort, productsData);
$(document.body).trigger('martfury_get_products_ajax_success');
}
});
}
};
/**
* Top Selling Products
*/
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: '',
nextArrow: '',
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: 1400,
settings: {
slidesToShow: parseInt(productsData.pro_columns) > 6 ? 5 : productsData.pro_columns,
slidesToScroll: parseInt(productsData.pro_columns) > 6 ? 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);
});
};
/**
* Category Tabs
*/
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: '',
nextArrow: '',
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 6,
slidesToScroll: 6
}
},
{
breakpoint: 992,
settings: {
slidesToShow: 4,
slidesToScroll: 4
}
},
{
breakpoint: 480,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}
}
]
});
};
/**
* LazyLoad
*/
martfury.lazyLoad = function ($els) {
$els.find('img.lazy').lazyload({
load: function () {
$(this).removeClass('lazy');
}
}).trigger('appear');
};
/**
* Init Google maps
*/
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);
// Update map options
mapOptions.zoom = parseInt(mapData.zoom, 10);
mapOptions.center = location;
mapOptions.mapTypeControlOptions = {
mapTypeIds: [google.maps.MapTypeId.ROADMAP]
};
// Init map
map = new google.maps.Map(document.getElementById(id), mapOptions);
// Create marker options
var markerOptions = {
map: map,
position: location
};
if (mapData.marker) {
markerOptions.icon = {
url: mapData.marker
};
}
map.mapTypes.set('map_style', customMap);
map.setMapTypeId('map_style');
// Init marker
marker = new google.maps.Marker(markerOptions);
if (mapData.info) {
var infoWindow = new google.maps.InfoWindow({
content: '' + mapData.info + '
',
maxWidth: 600
});
google.maps.event.addListener(marker, 'click', function () {
infoWindow.open(map, marker);
});
}
}
function mutiMaps(infoWindow, bounds, mapOptions, mapData, id, styles, customMap) {
// Display a map on the page
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);
// Create marker options
var markerOptions = {
map: map,
position: position
};
if (mapData.marker) {
markerOptions.icon = {
url: mapData.marker
};
}
// Init marker
var marker = new google.maps.Marker(markerOptions);
// Allow each marker to have an info window
googleMaps(infoWindow, map, marker, info[i]);
// Automatically center the map fitting all markers on the screen
map.fitBounds(bounds);
}
}
function googleMaps(infoWindow, map, marker, info) {
google.maps.event.addListener(marker, 'click', function () {
infoWindow.setContent(info);
infoWindow.open(map, marker);
});
}
/**
* Document ready
*/
$(function () {
martfury.init();
});
})(jQuery);