/*
_ _ _ _
___| (_) ___| | __ (_)___
/ __| | |/ __| |/ / | / __|
\__ \ | | (__| < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
|__/
version: 1.9.0
author: ken wheeler
website: http://kenwheeler.github.io
docs: http://kenwheeler.github.io/slick
repo: http://github.com/kenwheeler/slick
issues: http://github.com/kenwheeler/slick/issues
*/
/* global window, document, define, jquery, setinterval, clearinterval */
;
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else if (typeof exports !== 'undefined') {
module.exports = factory(require('jquery'));
} else {
factory(jquery);
}
}(function($) {
'use strict';
var slick = window.slick || {};
slick = (function() {
var instanceuid = 0;
function slick(element, settings) {
var _ = this,
datasettings;
_.defaults = {
accessibility: true,
adaptiveheight: true,
appendarrows: $(element),
appenddots: $(element),
arrows: false,
asnavfor: null,
prevarrow: '',
nextarrow: '',
autoplay: true,
autoplayspeed: 4000,
centermode: false,
centerpadding: '0px',
cssease: 'ease',
custompaging: function(slider, i) {
return $('').text(i + 1);
},
dots: false,
dotsclass: 'slick-dots',
draggable: true,
easing: 'linear',
edgefriction: 0.35,
fade: false,
focusonselect: false,
focusonchange: false,
infinite: true,
initialslide: 0,
lazyload: 'ondemand',
mobilefirst: false,
pauseonhover: true,
pauseonfocus: true,
pauseondotshover: false,
respondto: 'window',
responsive: null,
rows: 1,
rtl: false,
slide: '',
slidesperrow: 1,
slidestoshow: 1,
slidestoscroll: 1,
speed: 500,
swipe: true,
swipetoslide: false,
touchmove: true,
touchthreshold: 5,
usecss: true,
usetransform: true,
variablewidth: false,
vertical: false,
verticalswiping: false,
waitforanimate: true,
zindex: 1000
};
_.initials = {
animating: false,
dragging: false,
autoplaytimer: null,
currentdirection: 0,
currentleft: null,
currentslide: 0,
direction: 1,
$dots: null,
listwidth: null,
listheight: null,
loadindex: 0,
$nextarrow: null,
$prevarrow: null,
scrolling: false,
slidecount: null,
slidewidth: null,
$slidetrack: null,
$slides: null,
sliding: false,
slideoffset: 0,
swipeleft: null,
swiping: false,
$list: null,
touchobject: {},
transformsenabled: false,
unslicked: false
};
$.extend(_, _.initials);
_.activebreakpoint = null;
_.animtype = null;
_.animprop = null;
_.breakpoints = [];
_.breakpointsettings = [];
_.csstransitions = false;
_.focussed = false;
_.interrupted = false;
_.hidden = 'hidden';
_.paused = true;
_.positionprop = null;
_.respondto = null;
_.rowcount = 1;
_.shouldclick = true;
_.$slider = $(element);
_.$slidescache = null;
_.transformtype = null;
_.transitiontype = null;
_.visibilitychange = 'visibilitychange';
_.windowwidth = 0;
_.windowtimer = null;
datasettings = $(element).data('slick') || {};
_.options = $.extend({}, _.defaults, settings, datasettings);
_.currentslide = _.options.initialslide;
_.originalsettings = _.options;
if (typeof document.mozhidden !== 'undefined') {
_.hidden = 'mozhidden';
_.visibilitychange = 'mozvisibilitychange';
} else if (typeof document.webkithidden !== 'undefined') {
_.hidden = 'webkithidden';
_.visibilitychange = 'webkitvisibilitychange';
}
_.autoplay = $.proxy(_.autoplay, _);
_.autoplayclear = $.proxy(_.autoplayclear, _);
_.autoplayiterator = $.proxy(_.autoplayiterator, _);
_.changeslide = $.proxy(_.changeslide, _);
_.clickhandler = $.proxy(_.clickhandler, _);
_.selecthandler = $.proxy(_.selecthandler, _);
_.setposition = $.proxy(_.setposition, _);
_.swipehandler = $.proxy(_.swipehandler, _);
_.draghandler = $.proxy(_.draghandler, _);
_.keyhandler = $.proxy(_.keyhandler, _);
_.instanceuid = instanceuid++;
// a simple way to check for html strings
// strict html recognition (must start with <)
// extracted from jquery v1.11 source
_.htmlexpr = /^(?:\s*(<[\w\w]+>)[^>]*)$/;
_.registerbreakpoints();
_.init(true);
}
return slick;
}());
slick.prototype.activateada = function() {
var _ = this;
_.$slidetrack.find('.slick-active').attr({
'aria-hidden': 'false'
}).find('a, input, button, select').attr({
'tabindex': '0'
});
};
slick.prototype.addslide = slick.prototype.slickadd = function(markup, index, addbefore) {
var _ = this;
if (typeof(index) === 'boolean') {
addbefore = index;
index = null;
} else if (index < 0 || (index >= _.slidecount)) {
return false;
}
_.unload();
if (typeof(index) === 'number') {
if (index === 0 && _.$slides.length === 0) {
$(markup).appendto(_.$slidetrack);
} else if (addbefore) {
$(markup).insertbefore(_.$slides.eq(index));
} else {
$(markup).insertafter(_.$slides.eq(index));
}
} else {
if (addbefore === true) {
$(markup).prependto(_.$slidetrack);
} else {
$(markup).appendto(_.$slidetrack);
}
}
_.$slides = _.$slidetrack.children(this.options.slide);
_.$slidetrack.children(this.options.slide).detach();
_.$slidetrack.append(_.$slides);
_.$slides.each(function(index, element) {
$(element).attr('data-slick-index', index);
});
_.$slidescache = _.$slides;
_.reinit();
};
slick.prototype.animateheight = function() {
var _ = this;
if (_.options.slidestoshow === 1 && _.options.adaptiveheight === true && _.options.vertical === false) {
var targetheight = _.$slides.eq(_.currentslide).outerheight(true);
_.$list.animate({
height: targetheight
}, _.options.speed);
}
};
slick.prototype.animateslide = function(targetleft, callback) {
var animprops = {},
_ = this;
_.animateheight();
if (_.options.rtl === true && _.options.vertical === false) {
targetleft = -targetleft;
}
if (_.transformsenabled === false) {
if (_.options.vertical === false) {
_.$slidetrack.animate({
left: targetleft
}, _.options.speed, _.options.easing, callback);
} else {
_.$slidetrack.animate({
top: targetleft
}, _.options.speed, _.options.easing, callback);
}
} else {
if (_.csstransitions === false) {
if (_.options.rtl === true) {
_.currentleft = -(_.currentleft);
}
$({
animstart: _.currentleft
}).animate({
animstart: targetleft
}, {
duration: _.options.speed,
easing: _.options.easing,
step: function(now) {
now = math.ceil(now);
if (_.options.vertical === false) {
animprops[_.animtype] = 'translate(' +
now + 'px, 0px)';
_.$slidetrack.css(animprops);
} else {
animprops[_.animtype] = 'translate(0px,' +
now + 'px)';
_.$slidetrack.css(animprops);
}
},
complete: function() {
if (callback) {
callback.call();
}
}
});
} else {
_.applytransition();
targetleft = math.ceil(targetleft);
if (_.options.vertical === false) {
animprops[_.animtype] = 'translate3d(' + targetleft + 'px, 0px, 0px)';
} else {
animprops[_.animtype] = 'translate3d(0px,' + targetleft + 'px, 0px)';
}
_.$slidetrack.css(animprops);
if (callback) {
settimeout(function() {
_.disabletransition();
callback.call();
}, _.options.speed);
}
}
}
};
slick.prototype.getnavtarget = function() {
var _ = this,
asnavfor = _.options.asnavfor;
if (asnavfor && asnavfor !== null) {
asnavfor = $(asnavfor).not(_.$slider);
}
return asnavfor;
};
slick.prototype.asnavfor = function(index) {
var _ = this,
asnavfor = _.getnavtarget();
if (asnavfor !== null && typeof asnavfor === 'object') {
asnavfor.each(function() {
var target = $(this).slick('getslick');
if (!target.unslicked) {
target.slidehandler(index, true);
}
});
}
};
slick.prototype.applytransition = function(slide) {
var _ = this,
transition = {};
if (_.options.fade === false) {
transition[_.transitiontype] = _.transformtype + ' ' + _.options.speed + 'ms ' + _.options.cssease;
} else {
transition[_.transitiontype] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssease;
}
if (_.options.fade === false) {
_.$slidetrack.css(transition);
} else {
_.$slides.eq(slide).css(transition);
}
};
slick.prototype.autoplay = function() {
var _ = this;
_.autoplayclear();
if (_.slidecount > _.options.slidestoshow) {
_.autoplaytimer = setinterval(_.autoplayiterator, _.options.autoplayspeed);
}
};
slick.prototype.autoplayclear = function() {
var _ = this;
if (_.autoplaytimer) {
clearinterval(_.autoplaytimer);
}
};
slick.prototype.autoplayiterator = function() {
var _ = this,
slideto = _.currentslide + _.options.slidestoscroll;
if (!_.paused && !_.interrupted && !_.focussed) {
if (_.options.infinite === false) {
if (_.direction === 1 && (_.currentslide + 1) === (_.slidecount - 1)) {
_.direction = 0;
} else if (_.direction === 0) {
slideto = _.currentslide - _.options.slidestoscroll;
if (_.currentslide - 1 === 0) {
_.direction = 1;
}
}
}
_.slidehandler(slideto);
}
};
slick.prototype.buildarrows = function() {
var _ = this;
if (_.options.arrows === true) {
_.$prevarrow = $(_.options.prevarrow).addclass('slick-arrow');
_.$nextarrow = $(_.options.nextarrow).addclass('slick-arrow');
if (_.slidecount > _.options.slidestoshow) {
_.$prevarrow.removeclass('slick-hidden').removeattr('aria-hidden tabindex');
_.$nextarrow.removeclass('slick-hidden').removeattr('aria-hidden tabindex');
if (_.htmlexpr.test(_.options.prevarrow)) {
_.$prevarrow.prependto(_.options.appendarrows);
}
if (_.htmlexpr.test(_.options.nextarrow)) {
_.$nextarrow.appendto(_.options.appendarrows);
}
if (_.options.infinite !== true) {
_.$prevarrow
.addclass('slick-disabled')
.attr('aria-disabled', 'true');
}
} else {
_.$prevarrow.add(_.$nextarrow)
.addclass('slick-hidden')
.attr({
'aria-disabled': 'true',
'tabindex': '-1'
});
}
}
};
slick.prototype.builddots = function() {
var _ = this,
i, dot;
if (_.options.dots === true && _.slidecount > _.options.slidestoshow) {
_.$slider.addclass('slick-dotted');
dot = $('
').addclass(_.options.dotsclass);
for (i = 0; i <= _.getdotcount(); i += 1) {
dot.append($('').append(_.options.custompaging.call(this, _, i)));
}
_.$dots = dot.appendto(_.options.appenddots);
_.$dots.find('li').first().addclass('slick-active');
}
};
slick.prototype.buildout = function() {
var _ = this;
_.$slides =
_.$slider
.children(_.options.slide + ':not(.slick-cloned)')
.addclass('slick-slide');
_.slidecount = _.$slides.length;
_.$slides.each(function(index, element) {
$(element)
.attr('data-slick-index', index)
.data('originalstyling', $(element).attr('style') || '');
});
_.$slider.addclass('slick-slider');
_.$slidetrack = (_.slidecount === 0) ?
$('').appendto(_.$slider) :
_.$slides.wrapall('').parent();
_.$list = _.$slidetrack.wrap(
'').parent();
_.$slidetrack.css('opacity', 0);
if (_.options.centermode === true || _.options.swipetoslide === true) {
_.options.slidestoscroll = 1;
}
$('img[data-lazy]', _.$slider).not('[src]').addclass('slick-loading');
_.setupinfinite();
_.buildarrows();
_.builddots();
_.updatedots();
_.setslideclasses(typeof _.currentslide === 'number' ? _.currentslide : 0);
if (_.options.draggable === true) {
_.$list.addclass('draggable');
}
};
slick.prototype.buildrows = function() {
var _ = this,
a, b, c, newslides, numofslides, originalslides, slidespersection;
newslides = document.createdocumentfragment();
originalslides = _.$slider.children();
if (_.options.rows > 0) {
slidespersection = _.options.slidesperrow * _.options.rows;
numofslides = math.ceil(
originalslides.length / slidespersection
);
for (a = 0; a < numofslides; a++) {
var slide = document.createelement('div');
for (b = 0; b < _.options.rows; b++) {
var row = document.createelement('div');
for (c = 0; c < _.options.slidesperrow; c++) {
var target = (a * slidespersection + ((b * _.options.slidesperrow) + c));
if (originalslides.get(target)) {
row.appendchild(originalslides.get(target));
}
}
slide.appendchild(row);
}
newslides.appendchild(slide);
}
_.$slider.empty().append(newslides);
_.$slider.children().children().children()
.css({
'width': (100 / _.options.slidesperrow) + '%',
'display': 'inline-block'
});
}
};
slick.prototype.checkresponsive = function(initial, forceupdate) {
var _ = this,
breakpoint, targetbreakpoint, respondtowidth, triggerbreakpoint = false;
var sliderwidth = _.$slider.width();
var windowwidth = window.innerwidth || $(window).width();
if (_.respondto === 'window') {
respondtowidth = windowwidth;
} else if (_.respondto === 'slider') {
respondtowidth = sliderwidth;
} else if (_.respondto === 'min') {
respondtowidth = math.min(windowwidth, sliderwidth);
}
if (_.options.responsive &&
_.options.responsive.length &&
_.options.responsive !== null) {
targetbreakpoint = null;
for (breakpoint in _.breakpoints) {
if (_.breakpoints.hasownproperty(breakpoint)) {
if (_.originalsettings.mobilefirst === false) {
if (respondtowidth < _.breakpoints[breakpoint]) {
targetbreakpoint = _.breakpoints[breakpoint];
}
} else {
if (respondtowidth > _.breakpoints[breakpoint]) {
targetbreakpoint = _.breakpoints[breakpoint];
}
}
}
}
if (targetbreakpoint !== null) {
if (_.activebreakpoint !== null) {
if (targetbreakpoint !== _.activebreakpoint || forceupdate) {
_.activebreakpoint =
targetbreakpoint;
if (_.breakpointsettings[targetbreakpoint] === 'unslick') {
_.unslick(targetbreakpoint);
} else {
_.options = $.extend({}, _.originalsettings,
_.breakpointsettings[
targetbreakpoint]);
if (initial === true) {
_.currentslide = _.options.initialslide;
}
_.refresh(initial);
}
triggerbreakpoint = targetbreakpoint;
}
} else {
_.activebreakpoint = targetbreakpoint;
if (_.breakpointsettings[targetbreakpoint] === 'unslick') {
_.unslick(targetbreakpoint);
} else {
_.options = $.extend({}, _.originalsettings,
_.breakpointsettings[
targetbreakpoint]);
if (initial === true) {
_.currentslide = _.options.initialslide;
}
_.refresh(initial);
}
triggerbreakpoint = targetbreakpoint;
}
} else {
if (_.activebreakpoint !== null) {
_.activebreakpoint = null;
_.options = _.originalsettings;
if (initial === true) {
_.currentslide = _.options.initialslide;
}
_.refresh(initial);
triggerbreakpoint = targetbreakpoint;
}
}
// only trigger breakpoints during an actual break. not on initialize.
if (!initial && triggerbreakpoint !== false) {
_.$slider.trigger('breakpoint', [_, triggerbreakpoint]);
}
}
};
slick.prototype.changeslide = function(event, dontanimate) {
var _ = this,
$target = $(event.currenttarget),
indexoffset, slideoffset, unevenoffset;
// if target is a link, prevent default action.
if ($target.is('a')) {
event.preventdefault();
}
// if target is not the element (ie: a child), find the .
if (!$target.is('li')) {
$target = $target.closest('li');
}
unevenoffset = (_.slidecount % _.options.slidestoscroll !== 0);
indexoffset = unevenoffset ? 0 : (_.slidecount - _.currentslide) % _.options.slidestoscroll;
switch (event.data.message) {
case 'previous':
slideoffset = indexoffset === 0 ? _.options.slidestoscroll : _.options.slidestoshow - indexoffset;
if (_.slidecount > _.options.slidestoshow) {
_.slidehandler(_.currentslide - slideoffset, false, dontanimate);
}
break;
case 'next':
slideoffset = indexoffset === 0 ? _.options.slidestoscroll : indexoffset;
if (_.slidecount > _.options.slidestoshow) {
_.slidehandler(_.currentslide + slideoffset, false, dontanimate);
}
break;
case 'index':
var index = event.data.index === 0 ? 0 :
event.data.index || $target.index() * _.options.slidestoscroll;
_.slidehandler(_.checknavigable(index), false, dontanimate);
$target.children().trigger('focus');
break;
default:
return;
}
};
slick.prototype.checknavigable = function(index) {
var _ = this,
navigables, prevnavigable;
navigables = _.getnavigableindexes();
prevnavigable = 0;
if (index > navigables[navigables.length - 1]) {
index = navigables[navigables.length - 1];
} else {
for (var n in navigables) {
if (index < navigables[n]) {
index = prevnavigable;
break;
}
prevnavigable = navigables[n];
}
}
return index;
};
slick.prototype.cleanupevents = function() {
var _ = this;
if (_.options.dots && _.$dots !== null) {
$('li', _.$dots)
.off('click.slick', _.changeslide)
.off('mouseenter.slick', $.proxy(_.interrupt, _, true))
.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
if (_.options.accessibility === true) {
_.$dots.off('keydown.slick', _.keyhandler);
}
}
_.$slider.off('focus.slick blur.slick');
if (_.options.arrows === true && _.slidecount > _.options.slidestoshow) {
_.$prevarrow && _.$prevarrow.off('click.slick', _.changeslide);
_.$nextarrow && _.$nextarrow.off('click.slick', _.changeslide);
if (_.options.accessibility === true) {
_.$prevarrow && _.$prevarrow.off('keydown.slick', _.keyhandler);
_.$nextarrow && _.$nextarrow.off('keydown.slick', _.keyhandler);
}
}
_.$list.off('touchstart.slick mousedown.slick', _.swipehandler);
_.$list.off('touchmove.slick mousemove.slick', _.swipehandler);
_.$list.off('touchend.slick mouseup.slick', _.swipehandler);
_.$list.off('touchcancel.slick mouseleave.slick', _.swipehandler);
_.$list.off('click.slick', _.clickhandler);
$(document).off(_.visibilitychange, _.visibility);
_.cleanupslideevents();
if (_.options.accessibility === true) {
_.$list.off('keydown.slick', _.keyhandler);
}
if (_.options.focusonselect === true) {
$(_.$slidetrack).children().off('click.slick', _.selecthandler);
}
$(window).off('orientationchange.slick.slick-' + _.instanceuid, _.orientationchange);
$(window).off('resize.slick.slick-' + _.instanceuid, _.resize);
$('[draggable!=true]', _.$slidetrack).off('dragstart', _.preventdefault);
$(window).off('load.slick.slick-' + _.instanceuid, _.setposition);
};
slick.prototype.cleanupslideevents = function() {
var _ = this;
_.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
_.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
};
slick.prototype.cleanuprows = function() {
var _ = this,
originalslides;
if (_.options.rows > 0) {
originalslides = _.$slides.children().children();
originalslides.removeattr('style');
_.$slider.empty().append(originalslides);
}
};
slick.prototype.clickhandler = function(event) {
var _ = this;
if (_.shouldclick === false) {
event.stopimmediatepropagation();
event.stoppropagation();
event.preventdefault();
}
};
slick.prototype.destroy = function(refresh) {
var _ = this;
_.autoplayclear();
_.touchobject = {};
_.cleanupevents();
$('.slick-cloned', _.$slider).detach();
if (_.$dots) {
_.$dots.remove();
}
if (_.$prevarrow && _.$prevarrow.length) {
_.$prevarrow
.removeclass('slick-disabled slick-arrow slick-hidden')
.removeattr('aria-hidden aria-disabled tabindex')
.css('display', '');
if (_.htmlexpr.test(_.options.prevarrow)) {
_.$prevarrow.remove();
}
}
if (_.$nextarrow && _.$nextarrow.length) {
_.$nextarrow
.removeclass('slick-disabled slick-arrow slick-hidden')
.removeattr('aria-hidden aria-disabled tabindex')
.css('display', '');
if (_.htmlexpr.test(_.options.nextarrow)) {
_.$nextarrow.remove();
}
}
if (_.$slides) {
_.$slides
.removeclass('slick-slide slick-active slick-center slick-visible slick-current')
.removeattr('aria-hidden')
.removeattr('data-slick-index')
.each(function() {
$(this).attr('style', $(this).data('originalstyling'));
});
_.$slidetrack.children(this.options.slide).detach();
_.$slidetrack.detach();
_.$list.detach();
_.$slider.append(_.$slides);
}
_.cleanuprows();
_.$slider.removeclass('slick-slider');
_.$slider.removeclass('slick-initialized');
_.$slider.removeclass('slick-dotted');
_.unslicked = true;
if (!refresh) {
_.$slider.trigger('destroy', [_]);
}
};
slick.prototype.disabletransition = function(slide) {
var _ = this,
transition = {};
transition[_.transitiontype] = '';
if (_.options.fade === false) {
_.$slidetrack.css(transition);
} else {
_.$slides.eq(slide).css(transition);
}
};
slick.prototype.fadeslide = function(slideindex, callback) {
var _ = this;
if (_.csstransitions === false) {
_.$slides.eq(slideindex).css({
zindex: _.options.zindex
});
_.$slides.eq(slideindex).animate({
opacity: 1
}, _.options.speed, _.options.easing, callback);
} else {
_.applytransition(slideindex);
_.$slides.eq(slideindex).css({
opacity: 1,
zindex: _.options.zindex
});
if (callback) {
settimeout(function() {
_.disabletransition(slideindex);
callback.call();
}, _.options.speed);
}
}
};
slick.prototype.fadeslideout = function(slideindex) {
var _ = this;
if (_.csstransitions === false) {
_.$slides.eq(slideindex).animate({
opacity: 0,
zindex: _.options.zindex - 2
}, _.options.speed, _.options.easing);
} else {
_.applytransition(slideindex);
_.$slides.eq(slideindex).css({
opacity: 0,
zindex: _.options.zindex - 2
});
}
};
slick.prototype.filterslides = slick.prototype.slickfilter = function(filter) {
var _ = this;
if (filter !== null) {
_.$slidescache = _.$slides;
_.unload();
_.$slidetrack.children(this.options.slide).detach();
_.$slidescache.filter(filter).appendto(_.$slidetrack);
_.reinit();
}
};
slick.prototype.focushandler = function() {
var _ = this;
// if any child element receives focus within the slider we need to pause the autoplay
_.$slider
.off('focus.slick blur.slick')
.on(
'focus.slick',
'*',
function(event) {
var $sf = $(this);
settimeout(function() {
if (_.options.pauseonfocus) {
if ($sf.is(':focus')) {
_.focussed = true;
_.autoplay();
}
}
}, 0);
}
).on(
'blur.slick',
'*',
function(event) {
var $sf = $(this);
// when a blur occurs on any elements within the slider we become unfocused
if (_.options.pauseonfocus) {
_.focussed = false;
_.autoplay();
}
}
);
};
slick.prototype.getcurrent = slick.prototype.slickcurrentslide = function() {
var _ = this;
return _.currentslide;
};
slick.prototype.getdotcount = function() {
var _ = this;
var breakpoint = 0;
var counter = 0;
var pagerqty = 0;
if (_.options.infinite === true) {
if (_.slidecount <= _.options.slidestoshow) {
++pagerqty;
} else {
while (breakpoint < _.slidecount) {
++pagerqty;
breakpoint = counter + _.options.slidestoscroll;
counter += _.options.slidestoscroll <= _.options.slidestoshow ? _.options.slidestoscroll : _.options.slidestoshow;
}
}
} else if (_.options.centermode === true) {
pagerqty = _.slidecount;
} else if (!_.options.asnavfor) {
pagerqty = 1 + math.ceil((_.slidecount - _.options.slidestoshow) / _.options.slidestoscroll);
} else {
while (breakpoint < _.slidecount) {
++pagerqty;
breakpoint = counter + _.options.slidestoscroll;
counter += _.options.slidestoscroll <= _.options.slidestoshow ? _.options.slidestoscroll : _.options.slidestoshow;
}
}
return pagerqty - 1;
};
slick.prototype.getleft = function(slideindex) {
var _ = this,
targetleft,
verticalheight,
verticaloffset = 0,
targetslide,
coef;
_.slideoffset = 0;
verticalheight = _.$slides.first().outerheight(true);
if (_.options.infinite === true) {
if (_.slidecount > _.options.slidestoshow) {
_.slideoffset = (_.slidewidth * _.options.slidestoshow) * -1;
coef = -1
if (_.options.vertical === true && _.options.centermode === true) {
if (_.options.slidestoshow === 2) {
coef = -1.5;
} else if (_.options.slidestoshow === 1) {
coef = -2
}
}
verticaloffset = (verticalheight * _.options.slidestoshow) * coef;
}
if (_.slidecount % _.options.slidestoscroll !== 0) {
if (slideindex + _.options.slidestoscroll > _.slidecount && _.slidecount > _.options.slidestoshow) {
if (slideindex > _.slidecount) {
_.slideoffset = ((_.options.slidestoshow - (slideindex - _.slidecount)) * _.slidewidth) * -1;
verticaloffset = ((_.options.slidestoshow - (slideindex - _.slidecount)) * verticalheight) * -1;
} else {
_.slideoffset = ((_.slidecount % _.options.slidestoscroll) * _.slidewidth) * -1;
verticaloffset = ((_.slidecount % _.options.slidestoscroll) * verticalheight) * -1;
}
}
}
} else {
if (slideindex + _.options.slidestoshow > _.slidecount) {
_.slideoffset = ((slideindex + _.options.slidestoshow) - _.slidecount) * _.slidewidth;
verticaloffset = ((slideindex + _.options.slidestoshow) - _.slidecount) * verticalheight;
}
}
if (_.slidecount <= _.options.slidestoshow) {
_.slideoffset = 0;
verticaloffset = 0;
}
if (_.options.centermode === true && _.slidecount <= _.options.slidestoshow) {
_.slideoffset = ((_.slidewidth * math.floor(_.options.slidestoshow)) / 2) - ((_.slidewidth * _.slidecount) / 2);
} else if (_.options.centermode === true && _.options.infinite === true) {
_.slideoffset += _.slidewidth * math.floor(_.options.slidestoshow / 2) - _.slidewidth;
} else if (_.options.centermode === true) {
_.slideoffset = 0;
_.slideoffset += _.slidewidth * math.floor(_.options.slidestoshow / 2);
}
if (_.options.vertical === false) {
targetleft = ((slideindex * _.slidewidth) * -1) + _.slideoffset;
} else {
targetleft = ((slideindex * verticalheight) * -1) + verticaloffset;
}
if (_.options.variablewidth === true) {
if (_.slidecount <= _.options.slidestoshow || _.options.infinite === false) {
targetslide = _.$slidetrack.children('.slick-slide').eq(slideindex);
} else {
targetslide = _.$slidetrack.children('.slick-slide').eq(slideindex + _.options.slidestoshow);
}
if (_.options.rtl === true) {
if (targetslide[0]) {
targetleft = (_.$slidetrack.width() - targetslide[0].offsetleft - targetslide.width()) * -1;
} else {
targetleft = 0;
}
} else {
targetleft = targetslide[0] ? targetslide[0].offsetleft * -1 : 0;
}
if (_.options.centermode === true) {
if (_.slidecount <= _.options.slidestoshow || _.options.infinite === false) {
targetslide = _.$slidetrack.children('.slick-slide').eq(slideindex);
} else {
targetslide = _.$slidetrack.children('.slick-slide').eq(slideindex + _.options.slidestoshow + 1);
}
if (_.options.rtl === true) {
if (targetslide[0]) {
targetleft = (_.$slidetrack.width() - targetslide[0].offsetleft - targetslide.width()) * -1;
} else {
targetleft = 0;
}
} else {
targetleft = targetslide[0] ? targetslide[0].offsetleft * -1 : 0;
}
targetleft += (_.$list.width() - targetslide.outerwidth()) / 2;
}
}
return targetleft;
};
slick.prototype.getoption = slick.prototype.slickgetoption = function(option) {
var _ = this;
return _.options[option];
};
slick.prototype.getnavigableindexes = function() {
var _ = this,
breakpoint = 0,
counter = 0,
indexes = [],
max;
if (_.options.infinite === false) {
max = _.slidecount;
} else {
breakpoint = _.options.slidestoscroll * -1;
counter = _.options.slidestoscroll * -1;
max = _.slidecount * 2;
}
while (breakpoint < max) {
indexes.push(breakpoint);
breakpoint = counter + _.options.slidestoscroll;
counter += _.options.slidestoscroll <= _.options.slidestoshow ? _.options.slidestoscroll : _.options.slidestoshow;
}
return indexes;
};
slick.prototype.getslick = function() {
return this;
};
slick.prototype.getslidecount = function() {
var _ = this,
slidestraversed, swipedslide, swipetarget, centeroffset;
centeroffset = _.options.centermode === true ? math.floor(_.$list.width() / 2) : 0;
swipetarget = (_.swipeleft * -1) + centeroffset;
if (_.options.swipetoslide === true) {
_.$slidetrack.find('.slick-slide').each(function(index, slide) {
var slideouterwidth, slideoffset, sliderightboundary;
slideouterwidth = $(slide).outerwidth();
slideoffset = slide.offsetleft;
if (_.options.centermode !== true) {
slideoffset += (slideouterwidth / 2);
}
sliderightboundary = slideoffset + (slideouterwidth);
if (swipetarget < sliderightboundary) {
swipedslide = slide;
return false;
}
});
slidestraversed = math.abs($(swipedslide).attr('data-slick-index') - _.currentslide) || 1;
return slidestraversed;
} else {
return _.options.slidestoscroll;
}
};
slick.prototype.goto = slick.prototype.slickgoto = function(slide, dontanimate) {
var _ = this;
_.changeslide({
data: {
message: 'index',
index: parseint(slide)
}
}, dontanimate);
};
slick.prototype.init = function(creation) {
var _ = this;
if (!$(_.$slider).hasclass('slick-initialized')) {
$(_.$slider).addclass('slick-initialized');
_.buildrows();
_.buildout();
_.setprops();
_.startload();
_.loadslider();
_.initializeevents();
_.updatearrows();
_.updatedots();
_.checkresponsive(true);
_.focushandler();
}
if (creation) {
_.$slider.trigger('init', [_]);
}
if (_.options.accessibility === true) {
_.initada();
}
if (_.options.autoplay) {
_.paused = false;
_.autoplay();
}
};
slick.prototype.initada = function() {
var _ = this,
numdotgroups = math.ceil(_.slidecount / _.options.slidestoshow),
tabcontrolindexes = _.getnavigableindexes().filter(function(val) {
return (val >= 0) && (val < _.slidecount);
});
_.$slides.add(_.$slidetrack.find('.slick-cloned')).attr({
'aria-hidden': 'true',
'tabindex': '-1'
}).find('a, input, button, select').attr({
'tabindex': '-1'
});
if (_.$dots !== null) {
_.$slides.not(_.$slidetrack.find('.slick-cloned')).each(function(i) {
var slidecontrolindex = tabcontrolindexes.indexof(i);
$(this).attr({
'role': 'tabpanel',
'id': 'slick-slide' + _.instanceuid + i,
'tabindex': -1
});
if (slidecontrolindex !== -1) {
var ariabuttoncontrol = 'slick-slide-control' + _.instanceuid + slidecontrolindex
if ($('#' + ariabuttoncontrol).length) {
$(this).attr({
'aria-describedby': ariabuttoncontrol
});
}
}
});
_.$dots.attr('role', 'tablist').find('li').each(function(i) {
var mappedslideindex = tabcontrolindexes[i];
$(this).attr({
'role': 'presentation'
});
$(this).find('button').first().attr({
'role': 'tab',
'id': 'slick-slide-control' + _.instanceuid + i,
'aria-controls': 'slick-slide' + _.instanceuid + mappedslideindex,
'aria-label': (i + 1) + ' of ' + numdotgroups,
'aria-selected': null,
'tabindex': '-1'
});
}).eq(_.currentslide).find('button').attr({
'aria-selected': 'true',
'tabindex': '0'
}).end();
}
for (var i = _.currentslide, max = i + _.options.slidestoshow; i < max; i++) {
if (_.options.focusonchange) {
_.$slides.eq(i).attr({ 'tabindex': '0' });
} else {
_.$slides.eq(i).removeattr('tabindex');
}
}
_.activateada();
};
slick.prototype.initarrowevents = function() {
var _ = this;
if (_.options.arrows === true && _.slidecount > _.options.slidestoshow) {
_.$prevarrow
.off('click.slick')
.on('click.slick', {
message: 'previous'
}, _.changeslide);
_.$nextarrow
.off('click.slick')
.on('click.slick', {
message: 'next'
}, _.changeslide);
if (_.options.accessibility === true) {
_.$prevarrow.on('keydown.slick', _.keyhandler);
_.$nextarrow.on('keydown.slick', _.keyhandler);
}
}
};
slick.prototype.initdotevents = function() {
var _ = this;
if (_.options.dots === true && _.slidecount > _.options.slidestoshow) {
$('li', _.$dots).on('click.slick', {
message: 'index'
}, _.changeslide);
if (_.options.accessibility === true) {
_.$dots.on('keydown.slick', _.keyhandler);
}
}
if (_.options.dots === true && _.options.pauseondotshover === true && _.slidecount > _.options.slidestoshow) {
$('li', _.$dots)
.on('mouseenter.slick', $.proxy(_.interrupt, _, true))
.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
}
};
slick.prototype.initslideevents = function() {
var _ = this;
if (_.options.pauseonhover) {
_.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
_.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
}
};
slick.prototype.initializeevents = function() {
var _ = this;
_.initarrowevents();
_.initdotevents();
_.initslideevents();
_.$list.on('touchstart.slick mousedown.slick', {
action: 'start'
}, _.swipehandler);
_.$list.on('touchmove.slick mousemove.slick', {
action: 'move'
}, _.swipehandler);
_.$list.on('touchend.slick mouseup.slick', {
action: 'end'
}, _.swipehandler);
_.$list.on('touchcancel.slick mouseleave.slick', {
action: 'end'
}, _.swipehandler);
_.$list.on('click.slick', _.clickhandler);
$(document).on(_.visibilitychange, $.proxy(_.visibility, _));
if (_.options.accessibility === true) {
_.$list.on('keydown.slick', _.keyhandler);
}
if (_.options.focusonselect === true) {
$(_.$slidetrack).children().on('click.slick', _.selecthandler);
}
$(window).on('orientationchange.slick.slick-' + _.instanceuid, $.proxy(_.orientationchange, _));
$(window).on('resize.slick.slick-' + _.instanceuid, $.proxy(_.resize, _));
$('[draggable!=true]', _.$slidetrack).on('dragstart', _.preventdefault);
$(window).on('load.slick.slick-' + _.instanceuid, _.setposition);
$(_.setposition);
};
slick.prototype.initui = function() {
var _ = this;
if (_.options.arrows === true && _.slidecount > _.options.slidestoshow) {
_.$prevarrow.show();
_.$nextarrow.show();
}
if (_.options.dots === true && _.slidecount > _.options.slidestoshow) {
_.$dots.show();
}
};
slick.prototype.keyhandler = function(event) {
var _ = this;
//dont slide if the cursor is inside the form fields and arrow keys are pressed
if (!event.target.tagname.match('textarea|input|select')) {
if (event.keycode === 37 && _.options.accessibility === true) {
_.changeslide({
data: {
message: _.options.rtl === true ? 'next' : 'previous'
}
});
} else if (event.keycode === 39 && _.options.accessibility === true) {
_.changeslide({
data: {
message: _.options.rtl === true ? 'previous' : 'next'
}
});
}
}
};
slick.prototype.lazyload = function() {
var _ = this,
loadrange, clonerange, rangestart, rangeend;
function loadimages(imagesscope) {
$('img[data-lazy]', imagesscope).each(function() {
var image = $(this),
imagesource = $(this).attr('data-lazy'),
imagesrcset = $(this).attr('data-srcset'),
imagesizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
imagetoload = document.createelement('img');
imagetoload.onload = function() {
image
.animate({ opacity: 0 }, 100, function() {
if (imagesrcset) {
image
.attr('srcset', imagesrcset);
if (imagesizes) {
image
.attr('sizes', imagesizes);
}
}
image
.attr('src', imagesource)
.animate({ opacity: 1 }, 200, function() {
image
.removeattr('data-lazy data-srcset data-sizes')
.removeclass('slick-loading');
});
_.$slider.trigger('lazyloaded', [_, image, imagesource]);
});
};
imagetoload.onerror = function() {
image
.removeattr('data-lazy')
.removeclass('slick-loading')
.addclass('slick-lazyload-error');
_.$slider.trigger('lazyloaderror', [_, image, imagesource]);
};
imagetoload.src = imagesource;
});
}
if (_.options.centermode === true) {
if (_.options.infinite === true) {
rangestart = _.currentslide + (_.options.slidestoshow / 2 + 1);
rangeend = rangestart + _.options.slidestoshow + 2;
} else {
rangestart = math.max(0, _.currentslide - (_.options.slidestoshow / 2 + 1));
rangeend = 2 + (_.options.slidestoshow / 2 + 1) + _.currentslide;
}
} else {
rangestart = _.options.infinite ? _.options.slidestoshow + _.currentslide : _.currentslide;
rangeend = math.ceil(rangestart + _.options.slidestoshow);
if (_.options.fade === true) {
if (rangestart > 0) rangestart--;
if (rangeend <= _.slidecount) rangeend++;
}
}
loadrange = _.$slider.find('.slick-slide').slice(rangestart, rangeend);
if (_.options.lazyload === 'anticipated') {
var prevslide = rangestart - 1,
nextslide = rangeend,
$slides = _.$slider.find('.slick-slide');
for (var i = 0; i < _.options.slidestoscroll; i++) {
if (prevslide < 0) prevslide = _.slidecount - 1;
loadrange = loadrange.add($slides.eq(prevslide));
loadrange = loadrange.add($slides.eq(nextslide));
prevslide--;
nextslide++;
}
}
loadimages(loadrange);
if (_.slidecount <= _.options.slidestoshow) {
clonerange = _.$slider.find('.slick-slide');
loadimages(clonerange);
} else
if (_.currentslide >= _.slidecount - _.options.slidestoshow) {
clonerange = _.$slider.find('.slick-cloned').slice(0, _.options.slidestoshow);
loadimages(clonerange);
} else if (_.currentslide === 0) {
clonerange = _.$slider.find('.slick-cloned').slice(_.options.slidestoshow * -1);
loadimages(clonerange);
}
};
slick.prototype.loadslider = function() {
var _ = this;
_.setposition();
_.$slidetrack.css({
opacity: 1
});
_.$slider.removeclass('slick-loading');
_.initui();
if (_.options.lazyload === 'progressive') {
_.progressivelazyload();
}
};
slick.prototype.next = slick.prototype.slicknext = function() {
var _ = this;
_.changeslide({
data: {
message: 'next'
}
});
};
slick.prototype.orientationchange = function() {
var _ = this;
_.checkresponsive();
_.setposition();
};
slick.prototype.pause = slick.prototype.slickpause = function() {
var _ = this;
_.autoplayclear();
_.paused = true;
};
slick.prototype.play = slick.prototype.slickplay = function() {
var _ = this;
_.autoplay();
_.options.autoplay = true;
_.paused = false;
_.focussed = false;
_.interrupted = false;
};
slick.prototype.postslide = function(index) {
var _ = this;
if (!_.unslicked) {
_.$slider.trigger('afterchange', [_, index]);
_.animating = false;
if (_.slidecount > _.options.slidestoshow) {
_.setposition();
}
_.swipeleft = null;
if (_.options.autoplay) {
_.autoplay();
}
if (_.options.accessibility === true) {
_.initada();
if (_.options.focusonchange) {
var $currentslide = $(_.$slides.get(_.currentslide));
$currentslide.attr('tabindex', 0).focus();
}
}
}
};
slick.prototype.prev = slick.prototype.slickprev = function() {
var _ = this;
_.changeslide({
data: {
message: 'previous'
}
});
};
slick.prototype.preventdefault = function(event) {
event.preventdefault();
};
slick.prototype.progressivelazyload = function(trycount) {
trycount = trycount || 1;
var _ = this,
$imgstoload = $('img[data-lazy]', _.$slider),
image,
imagesource,
imagesrcset,
imagesizes,
imagetoload;
if ($imgstoload.length) {
image = $imgstoload.first();
imagesource = image.attr('data-lazy');
imagesrcset = image.attr('data-srcset');
imagesizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');
imagetoload = document.createelement('img');
imagetoload.onload = function() {
if (imagesrcset) {
image
.attr('srcset', imagesrcset);
if (imagesizes) {
image
.attr('sizes', imagesizes);
}
}
image
.attr('src', imagesource)
.removeattr('data-lazy data-srcset data-sizes')
.removeclass('slick-loading');
if (_.options.adaptiveheight === true) {
_.setposition();
}
_.$slider.trigger('lazyloaded', [_, image, imagesource]);
_.progressivelazyload();
};
imagetoload.onerror = function() {
if (trycount < 3) {
/**
* try to load the image 3 times,
* leave a slight delay so we don't get
* servers blocking the request.
*/
settimeout(function() {
_.progressivelazyload(trycount + 1);
}, 500);
} else {
image
.removeattr('data-lazy')
.removeclass('slick-loading')
.addclass('slick-lazyload-error');
_.$slider.trigger('lazyloaderror', [_, image, imagesource]);
_.progressivelazyload();
}
};
imagetoload.src = imagesource;
} else {
_.$slider.trigger('allimagesloaded', [_]);
}
};
slick.prototype.refresh = function(initializing) {
var _ = this,
currentslide, lastvisibleindex;
lastvisibleindex = _.slidecount - _.options.slidestoshow;
// in non-infinite sliders, we don't want to go past the
// last visible index.
if (!_.options.infinite && (_.currentslide > lastvisibleindex)) {
_.currentslide = lastvisibleindex;
}
// if less slides than to show, go to start.
if (_.slidecount <= _.options.slidestoshow) {
_.currentslide = 0;
}
currentslide = _.currentslide;
_.destroy(true);
$.extend(_, _.initials, { currentslide: currentslide });
_.init();
if (!initializing) {
_.changeslide({
data: {
message: 'index',
index: currentslide
}
}, false);
}
};
slick.prototype.registerbreakpoints = function() {
var _ = this,
breakpoint, currentbreakpoint, l,
responsivesettings = _.options.responsive || null;
if ($.type(responsivesettings) === 'array' && responsivesettings.length) {
_.respondto = _.options.respondto || 'window';
for (breakpoint in responsivesettings) {
l = _.breakpoints.length - 1;
if (responsivesettings.hasownproperty(breakpoint)) {
currentbreakpoint = responsivesettings[breakpoint].breakpoint;
// loop through the breakpoints and cut out any existing
// ones with the same breakpoint number, we don't want dupes.
while (l >= 0) {
if (_.breakpoints[l] && _.breakpoints[l] === currentbreakpoint) {
_.breakpoints.splice(l, 1);
}
l--;
}
_.breakpoints.push(currentbreakpoint);
_.breakpointsettings[currentbreakpoint] = responsivesettings[breakpoint].settings;
}
}
_.breakpoints.sort(function(a, b) {
return (_.options.mobilefirst) ? a - b : b - a;
});
}
};
slick.prototype.reinit = function() {
var _ = this;
_.$slides =
_.$slidetrack
.children(_.options.slide)
.addclass('slick-slide');
_.slidecount = _.$slides.length;
if (_.currentslide >= _.slidecount && _.currentslide !== 0) {
_.currentslide = _.currentslide - _.options.slidestoscroll;
}
if (_.slidecount <= _.options.slidestoshow) {
_.currentslide = 0;
}
_.registerbreakpoints();
_.setprops();
_.setupinfinite();
_.buildarrows();
_.updatearrows();
_.initarrowevents();
_.builddots();
_.updatedots();
_.initdotevents();
_.cleanupslideevents();
_.initslideevents();
_.checkresponsive(false, true);
if (_.options.focusonselect === true) {
$(_.$slidetrack).children().on('click.slick', _.selecthandler);
}
_.setslideclasses(typeof _.currentslide === 'number' ? _.currentslide : 0);
_.setposition();
_.focushandler();
_.paused = !_.options.autoplay;
_.autoplay();
_.$slider.trigger('reinit', [_]);
};
slick.prototype.resize = function() {
var _ = this;
if ($(window).width() !== _.windowwidth) {
cleartimeout(_.windowdelay);
_.windowdelay = window.settimeout(function() {
_.windowwidth = $(window).width();
_.checkresponsive();
if (!_.unslicked) { _.setposition(); }
}, 50);
}
};
slick.prototype.removeslide = slick.prototype.slickremove = function(index, removebefore, removeall) {
var _ = this;
if (typeof(index) === 'boolean') {
removebefore = index;
index = removebefore === true ? 0 : _.slidecount - 1;
} else {
index = removebefore === true ? --index : index;
}
if (_.slidecount < 1 || index < 0 || index > _.slidecount - 1) {
return false;
}
_.unload();
if (removeall === true) {
_.$slidetrack.children().remove();
} else {
_.$slidetrack.children(this.options.slide).eq(index).remove();
}
_.$slides = _.$slidetrack.children(this.options.slide);
_.$slidetrack.children(this.options.slide).detach();
_.$slidetrack.append(_.$slides);
_.$slidescache = _.$slides;
_.reinit();
};
slick.prototype.setcss = function(position) {
var _ = this,
positionprops = {},
x, y;
if (_.options.rtl === true) {
position = -position;
}
x = _.positionprop == 'left' ? math.ceil(position) + 'px' : '0px';
y = _.positionprop == 'top' ? math.ceil(position) + 'px' : '0px';
positionprops[_.positionprop] = position;
if (_.transformsenabled === false) {
_.$slidetrack.css(positionprops);
} else {
positionprops = {};
if (_.csstransitions === false) {
positionprops[_.animtype] = 'translate(' + x + ', ' + y + ')';
_.$slidetrack.css(positionprops);
} else {
positionprops[_.animtype] = 'translate3d(' + x + ', ' + y + ', 0px)';
_.$slidetrack.css(positionprops);
}
}
};
slick.prototype.setdimensions = function() {
var _ = this;
if (_.options.vertical === false) {
if (_.options.centermode === true) {
_.$list.css({
padding: ('0px ' + _.options.centerpadding)
});
}
} else {
_.$list.height(_.$slides.first().outerheight(true) * _.options.slidestoshow);
if (_.options.centermode === true) {
_.$list.css({
padding: (_.options.centerpadding + ' 0px')
});
}
}
_.listwidth = _.$list.width();
_.listheight = _.$list.height();
if (_.options.vertical === false && _.options.variablewidth === false) {
_.slidewidth = math.ceil(_.listwidth / _.options.slidestoshow);
_.$slidetrack.width(math.ceil((_.slidewidth * _.$slidetrack.children('.slick-slide').length)));
} else if (_.options.variablewidth === true) {
_.$slidetrack.width(5000 * _.slidecount);
} else {
_.slidewidth = math.ceil(_.listwidth);
_.$slidetrack.height(math.ceil((_.$slides.first().outerheight(true) * _.$slidetrack.children('.slick-slide').length)));
}
var offset = _.$slides.first().outerwidth(true) - _.$slides.first().width();
if (_.options.variablewidth === false) _.$slidetrack.children('.slick-slide').width(_.slidewidth - offset);
};
slick.prototype.setfade = function() {
var _ = this,
targetleft;
_.$slides.each(function(index, element) {
targetleft = (_.slidewidth * index) * -1;
if (_.options.rtl === true) {
$(element).css({
position: 'relative',
right: targetleft,
top: 0,
zindex: _.options.zindex - 2,
opacity: 0
});
} else {
$(element).css({
position: 'relative',
left: targetleft,
top: 0,
zindex: _.options.zindex - 2,
opacity: 0
});
}
});
_.$slides.eq(_.currentslide).css({
zindex: _.options.zindex - 1,
opacity: 1
});
};
slick.prototype.setheight = function() {
var _ = this;
if (_.options.slidestoshow === 1 && _.options.adaptiveheight === true && _.options.vertical === false) {
var targetheight = _.$slides.eq(_.currentslide).outerheight(true);
_.$list.css('height', targetheight);
}
};
slick.prototype.setoption =
slick.prototype.slicksetoption = function() {
/**
* accepts arguments in format of:
*
* - for changing a single option's value:
* .slick("setoption", option, value, refresh )
*
* - for changing a set of responsive options:
* .slick("setoption", 'responsive', [{}, ...], refresh )
*
* - for updating multiple values at once (not responsive)
* .slick("setoption", { 'option': value, ... }, refresh )
*/
var _ = this,
l, item, option, value, refresh = false,
type;
if ($.type(arguments[0]) === 'object') {
option = arguments[0];
refresh = arguments[1];
type = 'multiple';
} else if ($.type(arguments[0]) === 'string') {
option = arguments[0];
value = arguments[1];
refresh = arguments[2];
if (arguments[0] === 'responsive' && $.type(arguments[1]) === 'array') {
type = 'responsive';
} else if (typeof arguments[1] !== 'undefined') {
type = 'single';
}
}
if (type === 'single') {
_.options[option] = value;
} else if (type === 'multiple') {
$.each(option, function(opt, val) {
_.options[opt] = val;
});
} else if (type === 'responsive') {
for (item in value) {
if ($.type(_.options.responsive) !== 'array') {
_.options.responsive = [value[item]];
} else {
l = _.options.responsive.length - 1;
// loop through the responsive object and splice out duplicates.
while (l >= 0) {
if (_.options.responsive[l].breakpoint === value[item].breakpoint) {
_.options.responsive.splice(l, 1);
}
l--;
}
_.options.responsive.push(value[item]);
}
}
}
if (refresh) {
_.unload();
_.reinit();
}
};
slick.prototype.setposition = function() {
var _ = this;
_.setdimensions();
_.setheight();
if (_.options.fade === false) {
_.setcss(_.getleft(_.currentslide));
} else {
_.setfade();
}
_.$slider.trigger('setposition', [_]);
};
slick.prototype.setprops = function() {
var _ = this,
bodystyle = document.body.style;
_.positionprop = _.options.vertical === true ? 'top' : 'left';
if (_.positionprop === 'top') {
_.$slider.addclass('slick-vertical');
} else {
_.$slider.removeclass('slick-vertical');
}
if (bodystyle.webkittransition !== undefined ||
bodystyle.moztransition !== undefined ||
bodystyle.mstransition !== undefined) {
if (_.options.usecss === true) {
_.csstransitions = true;
}
}
if (_.options.fade) {
if (typeof _.options.zindex === 'number') {
if (_.options.zindex < 3) {
_.options.zindex = 3;
}
} else {
_.options.zindex = _.defaults.zindex;
}
}
if (bodystyle.otransform !== undefined) {
_.animtype = 'otransform';
_.transformtype = '-o-transform';
_.transitiontype = 'otransition';
if (bodystyle.perspectiveproperty === undefined && bodystyle.webkitperspective === undefined) _.animtype = false;
}
if (bodystyle.moztransform !== undefined) {
_.animtype = 'moztransform';
_.transformtype = '-moz-transform';
_.transitiontype = 'moztransition';
if (bodystyle.perspectiveproperty === undefined && bodystyle.mozperspective === undefined) _.animtype = false;
}
if (bodystyle.webkittransform !== undefined) {
_.animtype = 'webkittransform';
_.transformtype = '-webkit-transform';
_.transitiontype = 'webkittransition';
if (bodystyle.perspectiveproperty === undefined && bodystyle.webkitperspective === undefined) _.animtype = false;
}
if (bodystyle.mstransform !== undefined) {
_.animtype = 'mstransform';
_.transformtype = '-ms-transform';
_.transitiontype = 'mstransition';
if (bodystyle.mstransform === undefined) _.animtype = false;
}
if (bodystyle.transform !== undefined && _.animtype !== false) {
_.animtype = 'transform';
_.transformtype = 'transform';
_.transitiontype = 'transition';
}
_.transformsenabled = _.options.usetransform && (_.animtype !== null && _.animtype !== false);
};
slick.prototype.setslideclasses = function(index) {
var _ = this,
centeroffset, allslides, indexoffset, remainder;
allslides = _.$slider
.find('.slick-slide')
.removeclass('slick-active slick-center slick-current')
.attr('aria-hidden', 'true');
_.$slides
.eq(index)
.addclass('slick-current');
if (_.options.centermode === true) {
var evencoef = _.options.slidestoshow % 2 === 0 ? 1 : 0;
centeroffset = math.floor(_.options.slidestoshow / 2);
if (_.options.infinite === true) {
if (index >= centeroffset && index <= (_.slidecount - 1) - centeroffset) {
_.$slides
.slice(index - centeroffset + evencoef, index + centeroffset + 1)
.addclass('slick-active')
.attr('aria-hidden', 'false');
} else {
indexoffset = _.options.slidestoshow + index;
allslides
.slice(indexoffset - centeroffset + 1 + evencoef, indexoffset + centeroffset + 2)
.addclass('slick-active')
.attr('aria-hidden', 'false');
}
if (index === 0) {
allslides
.eq(allslides.length - 1 - _.options.slidestoshow)
.addclass('slick-center');
} else if (index === _.slidecount - 1) {
allslides
.eq(_.options.slidestoshow)
.addclass('slick-center');
}
}
_.$slides
.eq(index)
.addclass('slick-center');
} else {
if (index >= 0 && index <= (_.slidecount - _.options.slidestoshow)) {
_.$slides
.slice(index, index + _.options.slidestoshow)
.addclass('slick-active')
.attr('aria-hidden', 'false');
} else if (allslides.length <= _.options.slidestoshow) {
allslides
.addclass('slick-active')
.attr('aria-hidden', 'false');
} else {
remainder = _.slidecount % _.options.slidestoshow;
indexoffset = _.options.infinite === true ? _.options.slidestoshow + index : index;
if (_.options.slidestoshow == _.options.slidestoscroll && (_.slidecount - index) < _.options.slidestoshow) {
allslides
.slice(indexoffset - (_.options.slidestoshow - remainder), indexoffset + remainder)
.addclass('slick-active')
.attr('aria-hidden', 'false');
} else {
allslides
.slice(indexoffset, indexoffset + _.options.slidestoshow)
.addclass('slick-active')
.attr('aria-hidden', 'false');
}
}
}
if (_.options.lazyload === 'ondemand' || _.options.lazyload === 'anticipated') {
_.lazyload();
}
};
slick.prototype.setupinfinite = function() {
var _ = this,
i, slideindex, infinitecount;
if (_.options.fade === true) {
_.options.centermode = false;
}
if (_.options.infinite === true && _.options.fade === false) {
slideindex = null;
if (_.slidecount > _.options.slidestoshow) {
if (_.options.centermode === true) {
infinitecount = _.options.slidestoshow + 1;
} else {
infinitecount = _.options.slidestoshow;
}
for (i = _.slidecount; i > (_.slidecount -
infinitecount); i -= 1) {
slideindex = i - 1;
$(_.$slides[slideindex]).clone(true).attr('id', '')
.attr('data-slick-index', slideindex - _.slidecount)
.prependto(_.$slidetrack).addclass('slick-cloned');
}
for (i = 0; i < infinitecount + _.slidecount; i += 1) {
slideindex = i;
$(_.$slides[slideindex]).clone(true).attr('id', '')
.attr('data-slick-index', slideindex + _.slidecount)
.appendto(_.$slidetrack).addclass('slick-cloned');
}
_.$slidetrack.find('.slick-cloned').find('[id]').each(function() {
$(this).attr('id', '');
});
}
}
};
slick.prototype.interrupt = function(toggle) {
var _ = this;
if (!toggle) {
_.autoplay();
}
_.interrupted = toggle;
};
slick.prototype.selecthandler = function(event) {
var _ = this;
var targetelement =
$(event.target).is('.slick-slide') ?
$(event.target) :
$(event.target).parents('.slick-slide');
var index = parseint(targetelement.attr('data-slick-index'));
if (!index) index = 0;
if (_.slidecount <= _.options.slidestoshow) {
_.slidehandler(index, false, true);
return;
}
_.slidehandler(index);
};
slick.prototype.slidehandler = function(index, sync, dontanimate) {
var targetslide, animslide, oldslide, slideleft, targetleft = null,
_ = this,
navtarget;
sync = sync || false;
if (_.animating === true && _.options.waitforanimate === true) {
return;
}
if (_.options.fade === true && _.currentslide === index) {
return;
}
if (sync === false) {
_.asnavfor(index);
}
targetslide = index;
targetleft = _.getleft(targetslide);
slideleft = _.getleft(_.currentslide);
_.currentleft = _.swipeleft === null ? slideleft : _.swipeleft;
if (_.options.infinite === false && _.options.centermode === false && (index < 0 || index > _.getdotcount() * _.options.slidestoscroll)) {
if (_.options.fade === false) {
targetslide = _.currentslide;
if (dontanimate !== true && _.slidecount > _.options.slidestoshow) {
_.animateslide(slideleft, function() {
_.postslide(targetslide);
});
} else {
_.postslide(targetslide);
}
}
return;
} else if (_.options.infinite === false && _.options.centermode === true && (index < 0 || index > (_.slidecount - _.options.slidestoscroll))) {
if (_.options.fade === false) {
targetslide = _.currentslide;
if (dontanimate !== true && _.slidecount > _.options.slidestoshow) {
_.animateslide(slideleft, function() {
_.postslide(targetslide);
});
} else {
_.postslide(targetslide);
}
}
return;
}
if (_.options.autoplay) {
clearinterval(_.autoplaytimer);
}
if (targetslide < 0) {
if (_.slidecount % _.options.slidestoscroll !== 0) {
animslide = _.slidecount - (_.slidecount % _.options.slidestoscroll);
} else {
animslide = _.slidecount + targetslide;
}
} else if (targetslide >= _.slidecount) {
if (_.slidecount % _.options.slidestoscroll !== 0) {
animslide = 0;
} else {
animslide = targetslide - _.slidecount;
}
} else {
animslide = targetslide;
}
_.animating = true;
_.$slider.trigger('beforechange', [_, _.currentslide, animslide]);
oldslide = _.currentslide;
_.currentslide = animslide;
_.setslideclasses(_.currentslide);
if (_.options.asnavfor) {
navtarget = _.getnavtarget();
navtarget = navtarget.slick('getslick');
if (navtarget.slidecount <= navtarget.options.slidestoshow) {
navtarget.setslideclasses(_.currentslide);
}
}
_.updatedots();
_.updatearrows();
if (_.options.fade === true) {
if (dontanimate !== true) {
_.fadeslideout(oldslide);
_.fadeslide(animslide, function() {
_.postslide(animslide);
});
} else {
_.postslide(animslide);
}
_.animateheight();
return;
}
if (dontanimate !== true && _.slidecount > _.options.slidestoshow) {
_.animateslide(targetleft, function() {
_.postslide(animslide);
});
} else {
_.postslide(animslide);
}
};
slick.prototype.startload = function() {
var _ = this;
if (_.options.arrows === true && _.slidecount > _.options.slidestoshow) {
_.$prevarrow.hide();
_.$nextarrow.hide();
}
if (_.options.dots === true && _.slidecount > _.options.slidestoshow) {
_.$dots.hide();
}
_.$slider.addclass('slick-loading');
};
slick.prototype.swipedirection = function() {
var xdist, ydist, r, swipeangle, _ = this;
xdist = _.touchobject.startx - _.touchobject.curx;
ydist = _.touchobject.starty - _.touchobject.cury;
r = math.atan2(ydist, xdist);
swipeangle = math.round(r * 180 / math.pi);
if (swipeangle < 0) {
swipeangle = 360 - math.abs(swipeangle);
}
if ((swipeangle <= 45) && (swipeangle >= 0)) {
return (_.options.rtl === false ? 'left' : 'right');
}
if ((swipeangle <= 360) && (swipeangle >= 315)) {
return (_.options.rtl === false ? 'left' : 'right');
}
if ((swipeangle >= 135) && (swipeangle <= 225)) {
return (_.options.rtl === false ? 'right' : 'left');
}
if (_.options.verticalswiping === true) {
if ((swipeangle >= 35) && (swipeangle <= 135)) {
return 'down';
} else {
return 'up';
}
}
return 'vertical';
};
slick.prototype.swipeend = function(event) {
var _ = this,
slidecount,
direction;
_.dragging = false;
_.swiping = false;
if (_.scrolling) {
_.scrolling = false;
return false;
}
_.interrupted = false;
_.shouldclick = (_.touchobject.swipelength > 10) ? false : true;
if (_.touchobject.curx === undefined) {
return false;
}
if (_.touchobject.edgehit === true) {
_.$slider.trigger('edge', [_, _.swipedirection()]);
}
if (_.touchobject.swipelength >= _.touchobject.minswipe) {
direction = _.swipedirection();
switch (direction) {
case 'left':
case 'down':
slidecount =
_.options.swipetoslide ?
_.checknavigable(_.currentslide + _.getslidecount()) :
_.currentslide + _.getslidecount();
_.currentdirection = 0;
break;
case 'right':
case 'up':
slidecount =
_.options.swipetoslide ?
_.checknavigable(_.currentslide - _.getslidecount()) :
_.currentslide - _.getslidecount();
_.currentdirection = 1;
break;
default:
}
if (direction != 'vertical') {
_.slidehandler(slidecount);
_.touchobject = {};
_.$slider.trigger('swipe', [_, direction]);
}
} else {
if (_.touchobject.startx !== _.touchobject.curx) {
_.slidehandler(_.currentslide);
_.touchobject = {};
}
}
};
slick.prototype.swipehandler = function(event) {
var _ = this;
if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
return;
} else if (_.options.draggable === false && event.type.indexof('mouse') !== -1) {
return;
}
_.touchobject.fingercount = event.originalevent && event.originalevent.touches !== undefined ?
event.originalevent.touches.length : 1;
_.touchobject.minswipe = _.listwidth / _.options
.touchthreshold;
if (_.options.verticalswiping === true) {
_.touchobject.minswipe = _.listheight / _.options
.touchthreshold;
}
switch (event.data.action) {
case 'start':
_.swipestart(event);
break;
case 'move':
_.swipemove(event);
break;
case 'end':
_.swipeend(event);
break;
}
};
slick.prototype.swipemove = function(event) {
var _ = this,
edgewashit = false,
curleft, swipedirection, swipelength, positionoffset, touches, verticalswipelength;
touches = event.originalevent !== undefined ? event.originalevent.touches : null;
if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
return false;
}
curleft = _.getleft(_.currentslide);
_.touchobject.curx = touches !== undefined ? touches[0].pagex : event.clientx;
_.touchobject.cury = touches !== undefined ? touches[0].pagey : event.clienty;
_.touchobject.swipelength = math.round(math.sqrt(
math.pow(_.touchobject.curx - _.touchobject.startx, 2)));
verticalswipelength = math.round(math.sqrt(
math.pow(_.touchobject.cury - _.touchobject.starty, 2)));
if (!_.options.verticalswiping && !_.swiping && verticalswipelength > 4) {
_.scrolling = true;
return false;
}
if (_.options.verticalswiping === true) {
_.touchobject.swipelength = verticalswipelength;
}
swipedirection = _.swipedirection();
if (event.originalevent !== undefined && _.touchobject.swipelength > 4) {
_.swiping = true;
event.preventdefault();
}
positionoffset = (_.options.rtl === false ? 1 : -1) * (_.touchobject.curx > _.touchobject.startx ? 1 : -1);
if (_.options.verticalswiping === true) {
positionoffset = _.touchobject.cury > _.touchobject.starty ? 1 : -1;
}
swipelength = _.touchobject.swipelength;
_.touchobject.edgehit = false;
if (_.options.infinite === false) {
if ((_.currentslide === 0 && swipedirection === 'right') || (_.currentslide >= _.getdotcount() && swipedirection === 'left')) {
swipelength = _.touchobject.swipelength * _.options.edgefriction;
_.touchobject.edgehit = true;
}
}
if (_.options.vertical === false) {
_.swipeleft = curleft + swipelength * positionoffset;
} else {
_.swipeleft = curleft + (swipelength * (_.$list.height() / _.listwidth)) * positionoffset;
}
if (_.options.verticalswiping === true) {
_.swipeleft = curleft + swipelength * positionoffset;
}
if (_.options.fade === true || _.options.touchmove === false) {
return false;
}
if (_.animating === true) {
_.swipeleft = null;
return false;
}
_.setcss(_.swipeleft);
};
slick.prototype.swipestart = function(event) {
var _ = this,
touches;
_.interrupted = true;
if (_.touchobject.fingercount !== 1 || _.slidecount <= _.options.slidestoshow) {
_.touchobject = {};
return false;
}
if (event.originalevent !== undefined && event.originalevent.touches !== undefined) {
touches = event.originalevent.touches[0];
}
_.touchobject.startx = _.touchobject.curx = touches !== undefined ? touches.pagex : event.clientx;
_.touchobject.starty = _.touchobject.cury = touches !== undefined ? touches.pagey : event.clienty;
_.dragging = true;
};
slick.prototype.unfilterslides = slick.prototype.slickunfilter = function() {
var _ = this;
if (_.$slidescache !== null) {
_.unload();
_.$slidetrack.children(this.options.slide).detach();
_.$slidescache.appendto(_.$slidetrack);
_.reinit();
}
};
slick.prototype.unload = function() {
var _ = this;
$('.slick-cloned', _.$slider).remove();
if (_.$dots) {
_.$dots.remove();
}
if (_.$prevarrow && _.htmlexpr.test(_.options.prevarrow)) {
_.$prevarrow.remove();
}
if (_.$nextarrow && _.htmlexpr.test(_.options.nextarrow)) {
_.$nextarrow.remove();
}
_.$slides
.removeclass('slick-slide slick-active slick-visible slick-current')
.attr('aria-hidden', 'true')
.css('width', '');
};
slick.prototype.unslick = function(frombreakpoint) {
var _ = this;
_.$slider.trigger('unslick', [_, frombreakpoint]);
_.destroy();
};
slick.prototype.updatearrows = function() {
var _ = this,
centeroffset;
centeroffset = math.floor(_.options.slidestoshow / 2);
if (_.options.arrows === true &&
_.slidecount > _.options.slidestoshow &&
!_.options.infinite) {
_.$prevarrow.removeclass('slick-disabled').attr('aria-disabled', 'false');
_.$nextarrow.removeclass('slick-disabled').attr('aria-disabled', 'false');
if (_.currentslide === 0) {
_.$prevarrow.addclass('slick-disabled').attr('aria-disabled', 'true');
_.$nextarrow.removeclass('slick-disabled').attr('aria-disabled', 'false');
} else if (_.currentslide >= _.slidecount - _.options.slidestoshow && _.options.centermode === false) {
_.$nextarrow.addclass('slick-disabled').attr('aria-disabled', 'true');
_.$prevarrow.removeclass('slick-disabled').attr('aria-disabled', 'false');
} else if (_.currentslide >= _.slidecount - 1 && _.options.centermode === true) {
_.$nextarrow.addclass('slick-disabled').attr('aria-disabled', 'true');
_.$prevarrow.removeclass('slick-disabled').attr('aria-disabled', 'false');
}
}
};
slick.prototype.updatedots = function() {
var _ = this;
if (_.$dots !== null) {
_.$dots
.find('li')
.removeclass('slick-active')
.end();
_.$dots
.find('li')
.eq(math.floor(_.currentslide / _.options.slidestoscroll))
.addclass('slick-active');
}
};
slick.prototype.visibility = function() {
var _ = this;
if (_.options.autoplay) {
if (document[_.hidden]) {
_.interrupted = true;
} else {
_.interrupted = false;
}
}
};
$.fn.slick = function() {
var _ = this,
opt = arguments[0],
args = array.prototype.slice.call(arguments, 1),
l = _.length,
i,
ret;
for (i = 0; i < l; i++) {
if (typeof opt == 'object' || typeof opt == 'undefined')
_[i].slick = new slick(_[i], opt);
else
ret = _[i].slick[opt].apply(_[i].slick, args);
if (typeof ret != 'undefined') return ret;
}
return _;
};
}));