/* SLIDER OBJECT */ var Slider = { selectors: { slider: '.slider', dots: '.slick-dots', playPause: '.play-pause' }, slider: null, init: function() { var self = this; self.slider = $(self.selectors.slider).slick({ dots: true, autoplay: true }); self.appendPlayPause(); }, reinit: function() { var self = this; console.log('fired'); self.slider.slick('unslick'); self.init(); }, appendPlayPause: function() { var self = this; $(self.selectors.dots).append( '
  • ' ); }, addEvents: function() { var self = this; self.events.playPause(); }, events: { playPause: function() { $('body').on('click', Slider.selectors.playPause, function() { if ($(this).hasClass('pause')) { Slider.slider.slick('slickPause'); $(this).removeClass('pause').addClass('play'); } else { Slider.slider.slick('slickPlay'); $(this).removeClass('play').addClass('pause'); } }); } } }; /* TOGGLE SEARCH */ var toggleSearch = function() { $('body').on('click', '.toggleSearch', function() { if ($(this).hasClass('hiddenSearch')) { $(this).removeClass('hiddenSearch'); $(".searchButton input").show(); } else { $(this).addClass('hiddenSearch'); $(".searchButton input").hide(); } }); }; /* SMART RESIZE */ (function($,sr){ // debouncing function from John Hann // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ var debounce = function (func, threshold, execAsap) { var timeout; return function debounced () { var obj = this, args = arguments; function delayed () { if (!execAsap) func.apply(obj, args); timeout = null; }; if (timeout) clearTimeout(timeout); else if (execAsap) func.apply(obj, args); timeout = setTimeout(delayed, threshold || 100); }; } // smartresize jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); }; })(jQuery,'smartresize'); $(window).smartresize(function(){ 'use strict'; Slider.reinit(); }); /* DOCUMENT READY */ $('document').ready(function(){ 'use strict'; Slider.init(); toggleSearch(); Slider.addEvents(); });