jQuery(function($) {
// Fixed nav
$.fn.checkHeaderPositioning = function(scrollEl, scrollClass) {
var $me = $(this);
if($(scrollEl).scrollTop() > 0) {
$me.addClass(scrollClass);
} else if($(scrollEl).scrollTop() === 0) {
$me.removeClass(scrollClass);
}
};
// Fade banner
$.fn.fadeBanner = function($el, scrollClass) {
if((this.offset().top < $(window).scrollTop()) && !$el.hasClass(scrollClass)) {
$el.addClass(scrollClass);
} else if((this.offset().top >= $(window).scrollTop()) && $el.hasClass(scrollClass)) {
$el.removeClass(scrollClass);
}
}
// Mobile sidebars
$.fn.expandableSidebar = function(expandedClass) {
var $me = this;
$me.on('click', function() {
if(!$me.hasClass(expandedClass)) {
$me.addClass(expandedClass);
} else {
$me.removeClass(expandedClass);
}
});
}
// Interval loop
$.fn.intervalLoop = function(condition, action, duration, limit) {
var counter = 0;
var looper = setInterval(function(){
if (counter >= limit || $.fn.checkIfElementExists(condition)) {
clearInterval(looper);
} else {
action();
counter++;
}
}, duration);
}
// Check if element exists
$.fn.checkIfElementExists = function(selector) {
return $(selector).length;
}
var birdseyeController = {
init: function(opts) {
var base = this;
if($('body').hasClass('page-has-banner')) {
// Check content positioning
$('body').checkHeaderPositioning(window, 'affix');
}
// Add classes to elements
base._addClasses();
setTimeout(function(){
base._checkCartItems();
base._attachEvents();
}, 1000);
},
_addClasses: function() {
var base = this;
// Add fade in class to nav + logo + banner
if($('.landing-page').length > 0) {
$('.landing-page').addClass('fade-in');
}
// Add class to nav items with subnav
$('.wsite-menu-default').find('li.wsite-menu-item-wrap').each(function(){
var $me = $(this);
if($me.children('.wsite-menu-wrap').length > 0) {
$me.addClass('has-submenu');
$('').insertAfter($me.children('a.wsite-menu-item'));
}
});
// Add class to subnav items with subnav
$('.wsite-menu').find('li.wsite-menu-subitem-wrap').each(function(){
var $me = $(this);
if($me.children('.wsite-menu-wrap').length > 0) {
$me.addClass('has-submenu');
$('').insertAfter($me.children('a.wsite-menu-subitem'));
}
});
// Keep subnav open if submenu item is active
$('li.wsite-menu-subitem-wrap.wsite-nav-current').parents('.wsite-menu-wrap').addClass('open');
// Add placeholder text to inputs
$('.wsite-form-sublabel').each(function(){
var sublabel = $(this).text();
$(this).prev('.wsite-form-input').attr('placeholder', sublabel);
});
// Add fullwidth class to gallery thumbs if less than 6
$('.imageGallery').each(function(){
if ($(this).children('div').length <= 6) {
$(this).children('div').addClass('fullwidth-mobile');
}
});
},
_checkCartItems: function() {
var base = this;
if($('#wsite-mini-cart').find('li.wsite-product-item').length > 0) {
$('body').addClass('cart-full');
} else {
$('body').removeClass('cart-full');
}
},
_moveLogin: function() {
var loginDetach = $('#member-login').detach();
$('.mobile-nav .wsite-menu-default > li:last-child').after(loginDetach);
},
_attachEvents: function() {
var base = this;
$('label.hamburger').on('click', function() {
if (!$('body').hasClass('nav-open')) {
$('body').addClass('nav-open');
} else {
$('body').removeClass('nav-open');
}
});
// Move cart + login
if ($(window).width() <= 992) {
$.fn.intervalLoop('.mobile-nav #member-login', base._moveLogin, 800, 5);
}
// Window scroll
if($('body').hasClass('page-has-banner')) {
// Fixed header
$(window).on('scroll', function() {
$('body').checkHeaderPositioning(window, 'affix');
// Fade out banner header
$('.banner').fadeBanner($('body'), 'fade-on-scroll');
});
}
if($('body').hasClass('splash-page')) {
// Check content positioning
$(window).on('scroll', function() {
if($('.splash-page').scrollTop() > 0) {
$('body').addClass('affix');
} else if($(window).scrollTop() === 0) {
$('body').removeClass('affix');
}
});
}
// Subnav toggle
$('li.has-submenu span.icon-caret').on('click', function() {
var $me = $(this);
if($me.siblings('.wsite-menu-wrap').hasClass('open')) {
$me.siblings('.wsite-menu-wrap').removeClass('open');
} else {
$me.siblings('.wsite-menu-wrap').addClass('open');
}
});
// Store category dropdown
$('.wsite-com-sidebar').expandableSidebar('sidebar-expanded');
// Search filters dropdown
$('#wsite-search-sidebar').expandableSidebar('sidebar-expanded');
// Init fancybox swipe on mobile
if ('ontouchstart' in window) {
$('body').on('click', 'a.w-fancybox', function() {
base._initSwipeGallery();
});
}
},
_initSwipeGallery: function() {
var base = this;
setTimeout(function(){
var touchGallery = document.getElementsByClassName('fancybox-wrap')[0];
var mc = new Hammer(touchGallery);
mc.on("panleft panright", function(ev) {
if (ev.type == "panleft") {
$("a.fancybox-next").trigger("click");
} else if (ev.type == "panright") {
$("a.fancybox-prev").trigger("click");
}
base._initSwipeGallery();
});
}, 500);
}
}
$(document).ready(function(){
birdseyeController.init();
});
});
function collapsible(location, toggleSpeed, toggleButton) {
console.log('collapsible() called');
if (location === undefined) location = '.page-main'; // if no loaction specified use the defualt .page-main
if (toggleSpeed === undefined) toggleSpeed = 'slow'; // specify what the toggle speed should be, if no value submitted use the defualt
if (toggleButton === undefined) toggleButton = false; // is there show/hide buttons to toggle
$(location + ' .collapsible').click(function () {
var id = $(this).attr('id');
var toggle = ('.' + id);
$(toggle).toggle(toggleSpeed);
});
}