Facebook
From Smelly Marten, 7 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 291
  1. /* SLIDER OBJECT */
  2. var Slider = {
  3.         selectors: {
  4.                 slider: '.slider',
  5.                 dots: '.slick-dots',
  6.                 playPause: '.play-pause'
  7.         },
  8.         slider: null,
  9.         init: function() {
  10.                 var self = this;
  11.                 self.slider = $(self.selectors.slider).slick({
  12.                         dots: true,
  13.                         autoplay: true
  14.                 });
  15.                 self.appendPlayPause();
  16.         },
  17.         reinit: function() {
  18.                 var self = this;
  19.                 console.log('fired');
  20.                 self.slider.slick('unslick');
  21.                 self.init();
  22.         },
  23.         appendPlayPause: function() {
  24.                 var self = this;
  25.                 $(self.selectors.dots).append(
  26.                         '<li><i class="play-pause pause"></i></li>'
  27.                 );
  28.         },
  29.         addEvents: function() {
  30.                 var self = this;
  31.                 self.events.playPause();
  32.         },
  33.         events: {
  34.                 playPause: function() {
  35.                         $('body').on('click', Slider.selectors.playPause, function() {
  36.                                 if ($(this).hasClass('pause')) {
  37.                                         Slider.slider.slick('slickPause');
  38.                                         $(this).removeClass('pause').addClass('play');
  39.                                 } else {
  40.                                         Slider.slider.slick('slickPlay');
  41.                                         $(this).removeClass('play').addClass('pause');
  42.                                 }
  43.                         });
  44.                 }
  45.         }
  46. };
  47.  
  48. /* TOGGLE SEARCH */
  49. var toggleSearch = function() {
  50.         $('body').on('click', '.toggleSearch', function() {
  51.                 if ($(this).hasClass('hiddenSearch')) {
  52.                         $(this).removeClass('hiddenSearch');
  53.                         $(".searchButton input").show();
  54.                 } else {
  55.                         $(this).addClass('hiddenSearch');
  56.                         $(".searchButton input").hide();
  57.                 }  
  58.         });
  59. };
  60.  
  61. /* SMART RESIZE */
  62. (function($,sr){
  63.  
  64.         // debouncing function from John Hann
  65.         // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
  66.         var debounce = function (func, threshold, execAsap) {
  67.                 var timeout;
  68.  
  69.                 return function debounced () {
  70.                         var obj = this,
  71.                                 args = arguments;
  72.                         function delayed () {
  73.                                 if (!execAsap)
  74.                                         func.apply(obj, args);
  75.                                 timeout = null;
  76.                         };
  77.                         if (timeout)
  78.                                 clearTimeout(timeout);
  79.                         else if (execAsap)
  80.                                 func.apply(obj, args);
  81.                         timeout = setTimeout(delayed, threshold || 100);
  82.                 };
  83.         }
  84.     // smartresize
  85.     jQuery.fn[sr] = function(fn){  return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
  86.  
  87. })(jQuery,'smartresize');
  88.  
  89. $(window).smartresize(function(){
  90.         'use strict';
  91.  
  92.         Slider.reinit();
  93. });
  94.  
  95. /* DOCUMENT READY */
  96. $('document').ready(function(){
  97.         'use strict';
  98.  
  99.         Slider.init();
  100.         toggleSearch();
  101.         Slider.addEvents();
  102. });