var publicVars = publicVars || {};
;(function($, window, undefined)
{
"use strict";
$(document).ready(function()
{
// Define global vars
publicVars.$body = $("body");
publicVars.$header = publicVars.$body.find('.site-header');
publicVars.$footer = publicVars.$body.find('.site-footer');
publicVars.$headerTopMenu = publicVars.$header.find('.top-menu');
publicVars.$mainMenu = publicVars.$header.find('nav.main-menu');
publicVars.$mobileMenu = publicVars.$body.find('.mobile-menu').first();
publicVars.$cartCounter = publicVars.$body.find('.cart-counter');
publicVars.$miniCart = publicVars.$body.find('.lab-mini-cart');
publicVars.$loginForm = publicVars.$body.find('.login-form-env');
// Setup Menu
var subMenuVisibleClass = 'sub-visible';
publicVars.$mainMenu.find('li:has(> ul)').each(function(i, el)
{
var $li = $(el),
$a = $li.find( '> a' );
$a.on( 'click', function( ev ) {
if ( is_touch_device() ) {
return false;
}
} );
$li.hoverIntent({
over: function(){
$li.addClass(subMenuVisibleClass);
},
out: function(){
$li.removeClass(subMenuVisibleClass);
},
interval: 50,
timeout: 250
});
});
// Header Search Form
var $searchForm = publicVars.$header.find('.search-form');
if($searchForm.length === 1)
{
var $searchInput = $searchForm.find('.search-input');
$searchInput.blur(function()
{
if($.trim($searchInput.val()).length === 0)
{
$searchForm.removeClass('input-visible');
}
});
$searchForm.on('click', '.search-btn', function(ev)
{
if($.trim($searchInput.val()).length === 0)
{
ev.preventDefault();
$searchForm.addClass('input-visible');
setTimeout(function(){$searchInput.focus();}, 200);
}
else
{
$searchForm.submit();
}
});
}
// Top Menu Subs
publicVars.$header.find('.top-menu nav li:has(> ul)').each(function(i, el)
{
var $li = $(el);
$li.hoverIntent({
over: function(){
$li.addClass(subMenuVisibleClass);
},
out: function(){
$li.removeClass(subMenuVisibleClass);
},
timeout: 200,
interval: 10
});
});
// Sticky Menu
if(publicVars.$header.hasClass('sticky'))
{
setupStickyMenu();
}
// Mobile Menu
setupMobileMenu();
// Footer Expand
publicVars.$footer.find('.expand-footer').on('click', function(ev)
{
ev.preventDefault();
publicVars.$footer.find('.footer-widgets').removeClass('hidden-xs').prev().removeClass('visible-xs').addClass('hidden');
});
// Autosize
if($.isFunction($.fn.autosize))
{
$(".autosize, .autogrow").autosize();
}
// Lightbox
if($.isFunction($.fn.nivoLightbox))
{
var isNivoDisabled = function() {
return publicVars.$body.hasClass( 'nivo-disabled-product' ) && $( window ).width() < 768;
}
window.isNivoDisabled = isNivoDisabled;
var lightbox_options = {
effect: 'fade',
theme: 'default',
};
$(".nivo a, a.nivo").nivoLightbox( lightbox_options );
if ( isNivoDisabled() && publicVars.$body.hasClass( 'single-product' ) ) {
$(".nivo a, a.nivo").unbind().on( 'click', function( ev ) {
ev.preventDefault();
} )
}
if( publicVars.$body.hasClass( 'single-post-lightbox-on' ) ) {
$( '.single-post-lightbox-on .post-content a:has(img)' ).nivoLightbox( lightbox_options );
}
}
// Owl Slider
if($.isFunction($.fn.owlCarousel))
{
$(".owl-slider").each(function(i, el)
{
var $el = $(el),
auto_play = false;
if($el.data('autoswitch') || $el.data('autoswitch').length)
auto_play = $el.data('autoswitch') * 1000;
$el.owlCarousel({
singleItem: true,
navigation: true,
autoPlay: auto_play,
stopOnHover: true,
direction: _rtl()
});
$el.find('a.hidden').removeClass('hidden');
});
}
// WooCommerce JS
var $wc_ordering = $(".woocommerce-ordering");
if($wc_ordering.length)
{
$wc_ordering.on('click', '.dropdown-menu a', function(ev)
{
ev.preventDefault();
var id = $(this).attr('href').replace('#', '');
$('select[name="orderby"] option').each(function(i, el)
{
var $el = $(el);
$el.prop('selected', false);
if($el.val() == id)
{
$el.prop('selected', true);
}
});
$wc_ordering.submit();
});
}
$('[data-toggle="tooltip"]').tooltip();
// Radio Buttons Replacement
$('input[type="radio"] + label').each(function(i, el)
{
$(el).prev().addClass('replaced-radio-buttons');
});
$('input[type="checkbox"] + label').each(function(i, el)
{
$(el).prev().addClass('replaced-checkboxes');
});
// Fix Possible Tooltip Error on Add to Cart
$( document.body ).on( 'adding_to_cart', function( ev, $button, data ) {
$.each( data, function( key, val ) {
if ( typeof val == 'object' ) {
data[ key ] = '';
}
} );
} );
$( document.body ).on( 'mouseout', '.add_to_cart_button[data-toggle="tooltip"]', function( ev ) {
$( this ).tooltip( 'hide' );
} );
// Added to cart update fragments
$( document.body ).on( 'added_to_cart', function( ev, fragments, cart_hash, $button ) {
// Add to Cart Tooltip
var title = $button.data( 'title' ),
title_loaded = $button.data( 'titleLoaded' ),
tm = $button.data( 'tooltipTimeout' );
$button.attr( 'title', title_loaded );
// Update Cart Fragments
aurumUpdateWCFragments()
// Toggle success message and/or tooltips
if ( $button.is( '[data-toggle="tooltip"]' ) ) {
$button.tooltip( 'fixTitle').tooltip( 'show' );
$button.data( 'bs.tooltip' ).$tip.addClass( 'tooltip-green' );
if( _is_rtl() ) {
$button.data('bs.tooltip').options.placement = 'right';
}
// Hide Tooltip and set back the previous title
window.clearTimeout( tm );
tm = setTimeout( function() {
$button.tooltip( 'hide' ).removeClass( 'added' );
setTimeout( function() {
$button.data( 'bs.tooltip' ).$tip.removeClass( 'tooltip-green' );
$button.attr( 'title', title ).tooltip( 'fixTitle' )
}, 250 );
}, 2500 );
} else {
window.clearTimeout( tm );
tm = setTimeout( function() {
$button.removeClass( 'added' );
}, 2500 );
}
} );
// Shop Images Lazy Loading
function initShopHovers() {
// Fade effect + with slide
$(".shop-item.hover-effect-1:has(.lazy-load-shop-image)").each(function(i, el)
{
var $el = $(el),
imagesLoaded = false;
if ( $el.data( 'is-init' ) ) {
return false;
}
$el.data( 'is-init', false );
$el.addClass('has-images');
$el
.on('mouseenter', function()
{
$el[imagesLoaded ? 'removeClass' : 'addClass']('is-loading');
startLoadingImages($el.find('.lazy-load-shop-image'), function()
{
$el.removeClass('is-loading').unbind();
});
})
.on('mouseout', function()
{
$el.removeClass('is-loading');
});
});
// Effect 2 (gallery slides)
$(".shop-item.hover-effect-2:has(.lazy-load-shop-image)").each(function(i, el)
{
var $el = $(el),
$images = $el.find('.item-image img'),
$nav = $(''),
images_total = $images.length;
if ( $el.data( 'is-init' ) ) {
return false;
}
$el.data( 'is-init', false );
$el.addClass('has-images').find('.item-image').append( $nav );
$images.each(function(j, img)
{
var $img = $(img),
$a = $('');
$a.data({
index: j
}).html(j + 1);
if(j == 0)
$a.addClass('active');
$nav.append( $a );
});
$nav.on('click', 'a', function(ev)
{
ev.preventDefault();
var $a = $(this),
$img = $images.eq( $a.data('index') );
$a.addClass('active');
$a.siblings().not($a).removeClass('active');
if( ! $img.data('loaded'))
{
$el.addClass('is-loading');
startLoadingImages($img, function()
{
$img.addClass('active');
$images.not($img).removeClass('active');
$el.removeClass('is-loading');
});
}
else
{
$img.addClass('active');
$images.not($img).removeClass('active');
}
});
});
}
initShopHovers();
jQuery( document ).ajaxComplete( function( ev, req, settings ) {
if ( typeof settings.data == 'string' && settings.data.match( /action=prdctfltr_respond/ ) ) {
initShopHovers();
}
} );
// Lazy load all shop images when window has finished loading
$(window).on('load', function()
{
if(publicVars.$body.hasClass('product-images-lazyload'))
{
return; // Disable automatic loading
}
$('.shop-item img:not(.lazy-load-shop-image)').data('loaded', true);
startLoadingImages($('.shop-item .lazy-load-shop-image'));
});
function startLoadingImages($images, callback)
{
var total_images = $images.length,
loaded_images = 0;
$images.each(function(i, el)
{
var $img = $(el),
loader = new Image(),
src = $img.data('src');
var afterLoaded = function()
{
$img.attr('src', src).data('loaded', true).removeAttr('data-src');
loaded_images++;
if(loaded_images == total_images)
{
if(typeof callback == 'function')
{
callback();
}
}
};
loader.src = src;
loader.onload = afterLoaded;
loader.onerror = afterLoaded;
});
}
function updateCartNumber(fragments)
{
if(publicVars.$cartCounter.length)
{
var $badge = publicVars.$cartCounter.find('.badge'),
items = fragments.aurumCartItems,
html = fragments.aurumMinicart;
publicVars.$cartCounter[items > 0 ? 'addClass' : 'removeClass']('has-notifications');
TweenMax.to($badge, .25, {css: {transform: "scale(.6)"}, onComplete: function()
{
$badge.html(items);
TweenMax.to($badge, .15, {css: {transform: "scale(1)"}});
if ( items > 0 ) {
publicVars.$cartCounter.removeClass( 'cart-zero' );
} else {
publicVars.$cartCounter.addClass( 'cart-zero' );
}
if ( html ) {
publicVars.$miniCart.html(html);
}
TweenMax.to(publicVars.$miniCart.find('.cart_list'), .15, {css: {autoAlpha: 1}});
publicVars.$miniCart.find('.cart_list').perfectScrollbar();
}});
}
}
// Select Picker
if($.isFunction($.fn.selectpicker))
{
$(".selectpicker").selectpicker();
}
// Quantity
$(".quantity.buttons_added .input-text").attr('type', 'text');
// Owl Carousel
var singleItemProductCarousel = {};
if($.isFunction($.fn.owlCarousel))
{
var $mainImages = $(".item-details-single .product-images"),
$itemThumbs = $(".item-details-single .product-thumbnails a"),
miAutoswitch = parseInt($mainImages.data('autoswitch'), 10);
$mainImages.find('a').data('is-general', true);
singleItemProductCarousel = {
singleItem: true,
navigation: true,
autoPlay: miAutoswitch > 0 ? miAutoswitch : false,
stopOnHover: true,
navigationText: ['', ''],
items: 'a',
afterMove: function(e)
{
var index = $mainImages.data('owlCarousel').currentItem,
minus = 0;
$mainImages.find('a').each(function(i, el){
if( ! $(el).data('is-general'))
{
minus++;
}
});
index -= minus;
index = index < 0 ? 0 : index;
$itemThumbs.removeClass('active').eq(index).addClass('active');
if( ! $itemThumbs.eq(index).hasClass('current'))
{
if($(".shop.shop-item-single .product-thumbnails").data('anVerticalCarousel'))
{
$(".shop.shop-item-single .product-thumbnails").data('anVerticalCarousel').fns.setIndex(index);
}
}
},
direction: _rtl()
};
if($itemThumbs.length > 0)
{
$mainImages.owlCarousel(singleItemProductCarousel).find('.hidden').removeClass('hidden');
$itemThumbs.on('click', function(ev)
{
ev.preventDefault();
var index = $(this).index();
// Extra Images Added
$mainImages.find('a').each(function(i, el){
if( ! $(el).data('is-general'))
{
index++;
}
});
$mainImages.data('owlCarousel').goTo(index);
});
var $thumbnails = $(".shop.shop-item-single .product-thumbnails[data-show]");
if($thumbnails.length)
{
$thumbnails.anVerticalCarousel({
items: "a",
show: $thumbnails.data('show')
});
}
}
// Variations selector
$( 'form.variations_form' )
.on('found_variation', function(ev, variation){
if(variation.image_src)
{
showVariation(variation);
}
})
.on('wc_additional_variation_images_frontend_lightbox', function(a)
{
var html = $(".images .thumbnails").html();
if(html)
showVariation(null, html);
})
.on('reset_image', function(){
showVariation();
});
var showVariation = function(variation, extra)
{
if($mainImages.data('owlCarousel'))
$mainImages.data('owlCarousel').destroy();
// Remove Non-general images
if( ! extra)
{
$mainImages.find('a').each(function(i, el)
{
var $el = $(el);
if( ! $el.data('is-general'))
{
$el.remove();
}
});
}
if(variation)
{
// Variation has Image
if( variation.image_src )
{
var $a = $(''),
$img = $('');
$a.attr({
'href': variation.image_src,
'title': variation.image_title,
'data-lightbox-gallery': 'shop-gallery'
});
$img.attr({
src: variation.image_src
});
$a.append($img);
$mainImages.prepend($a)
}
}
if(extra)
{
$mainImages.find('a').first().after(extra);
}
if($.isFunction($.fn.nivoLightbox))
{
if ( ! isNivoDisabled() ) {
$mainImages.find('a').nivoLightbox({
effect: 'fade',
theme: 'default',
});
} else {
$mainImages.find('a').on( 'click', function( ev ) {
ev.preventDefault();
} );
}
}
$mainImages.owlCarousel(singleItemProductCarousel);
};
}
// Stars Rating
$(".comment-form-rating p.stars").on('click', function(ev)
{
$(this)[ $(this).has('.active') ? 'addClass' : 'removeClass' ]('has-rating');
});
// WooCommerce Review Link
$(".woocommerce-review-link").on('click', function(ev)
{
ev.preventDefault();
var $reviews = $(".reviews_tab");
var obj = {pos: $(window).scrollTop()};
TweenLite.to(obj, 1, {pos: $reviews.offset().top, ease:Power4.easeOut, onUpdate: function()
{
$(window).scrollTop(obj.pos);
}});
});
// Coupon Env
$( 'div.woocommerce' ).on( 'click', '.coupon-env .coupon-enter', function( ev ) {
ev.preventDefault();
var $couponEnv = $( this ).parent(),
$input = $couponEnv.find('.form-control');
$couponEnv.addClass('coupon-visible');
setTimeout(function(){ $input.focus(); }, 200);
} ).on( 'click', '.coupon-env .close-coupon', function( ev ) {
ev.preventDefault();
$( this ).closest( '.coupon-env' ).removeClass('coupon-visible');
} );
$("body").on('country_to_state_changing', function(ev)
{
$("#calc_shipping_state").addClass('form-control');
});
$('input[name="update_cart"]').show();
$("#update-cart-btn").on('click', function(ev)
{
ev.preventDefault();
$('input[name="update_cart"]').click();
});
// Remove From Cart
$(".item-image").each(function(i, el)
{
var $el = $(el);
$el.on('click', '.remove-item', function(ev)
{
$el.closest('tr').addClass('item-removing');
});
});
// Cart Counter
publicVars.$cartCounter.on('click', function(ev)
{
if ( jQuery( window ).width() <= 768 || publicVars.$cartCounter.hasClass( 'direct-link' ) ) {
return true;
}
ev.preventDefault();
publicVars.$miniCart.toggleClass('cart-visible');
if(publicVars.$miniCart.hasClass('cart-visible'))
{
setTimeout(function()
{
$(document).on('click', checkForOutSideEventsToCloseMinicart);
}, 1);
}
else
{
$(document).off('click', checkForOutSideEventsToCloseMinicart);
}
});
var checkForOutSideEventsToCloseMinicart = function(ev)
{
if( ! $(ev.target).closest(publicVars.$miniCart).length)
{
publicVars.$miniCart.removeClass('cart-visible');
$(document).off('click', checkForOutSideEventsToCloseMinicart);
}
};
// Mini Cart show on Hover
if(publicVars.$cartCounter.hasClass('hover-activated'))
{
publicVars.$cartCounter.hoverIntent({
over: function()
{
publicVars.$miniCart.addClass('cart-visible');
},
out: function()
{
if(publicVars.$miniCart.hasClass('is-hovered') == false)
{
publicVars.$miniCart.removeClass('cart-visible');
}
},
timeout: 400
});
publicVars.$miniCart.hoverIntent({
over: function()
{
publicVars.$miniCart.addClass('is-hovered');
},
out: function()
{
publicVars.$miniCart.removeClass('is-hovered cart-visible');
},
interval: 1,
timeout: 300
});
}
// Cart List Scrollbar
publicVars.$miniCart.find('.cart_list').perfectScrollbar();
// Login Form Open
$(".login-button").on('click', function(ev)
{
ev.preventDefault();
if(publicVars.$loginForm.data('is-busy'))
return false;
publicVars.$loginForm.data('is-busy', true);
if(publicVars.$loginForm.is(':visible'))
{
TweenMax.to(publicVars.$loginForm, .5, {css: {height: 0, autoAlpha: 0}, onComplete: function()
{
publicVars.$loginForm.attr('style', 'display:none');
publicVars.$loginForm.data('is-busy', false);
}});
}
else
{
var login_height = publicVars.$loginForm.show().outerHeight();
publicVars.$loginForm.css({
height: 0,
opacity: 0
});
TweenMax.to(publicVars.$loginForm, .5, {css: {height: login_height, autoAlpha: 1}, onComplete: function()
{
publicVars.$loginForm.data('is-busy', false);
publicVars.$loginForm.attr('style', '');
}});
}
});
// Styling Select Elements
$("select.country_select").addClass('form-control');
// Proceed to Checkout
$("#proceed-to-checkout").on('click', function(ev)
{
ev.preventDefault();
$('input[name="proceed"]').click();
});
// Insert WooCommerce Messages inside Shop
if($(".woocommerce-error, .woocommerce-message").length && $(".woocommerce .woocommerce-error, .woocommerce .woocommerce-message").length == 0)
{
$("section.woocommerce .container").prepend( $(".woocommerce-error, .woocommerce-message") );
}
// Bacs
$(".order_details.bacs_details").each(function(i, el)
{
var $el = $(el);
if($el.prev().is('h3'))
{
$el.prepend( $el.prev() );
}
});
// Extra Tabs
var $wc_social_login_plugin = $(".wc-social-login-profile");
if($(".content-pane").length > 0 && $wc_social_login_plugin.length)
{
var $slp_pane = $('