smoothslider 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1599 @@
1
+ var Froogaloop=function(){function e(c){return new e.fn.init(c)}function g(c,b,a){if(!a.contentWindow.postMessage)return!1;var d=a.getAttribute("src").split("?")[0],c=JSON.stringify({method:c,value:b});a.contentWindow.postMessage(c,d)}function i(c){var b,a;try{b=JSON.parse(c.data),a=b.event||b.method}catch(l){}"ready"==a&&!h&&(h=!0);if(c.origin!=j)return!1;var c=b.value,e=b.data,f=""===f?null:b.player_id;b=f?d[f][a]:d[a];a=[];if(!b)return!1;void 0!==c&&a.push(c);e&&a.push(e);f&&a.push(f);return 0<
2
+ a.length?b.apply(null,a):b.call()}function k(c,b,a){a?(d[a]||(d[a]={}),d[a][c]=b):d[c]=b}var d={},h=!1,j="";e.fn=e.prototype={element:null,init:function(c){"string"===typeof c&&(c=document.getElementById(c));this.element=c;for(var c=this.element.getAttribute("src").split("/"),b="",a=0,d=c.length;a<d;a++){if(3>a)b+=c[a];else break;2>a&&(b+="/")}j=b;return this},api:function(c,b){if(!this.element||!c)return!1;var a=this.element,d=""!==a.id?a.id:null,e=!b||!b.constructor||!b.call||!b.apply?b:null,f=
3
+ b&&b.constructor&&b.call&&b.apply?b:null;f&&k(c,f,d);g(c,e,a);return this},addEvent:function(c,b){if(!this.element)return!1;var a=this.element,d=""!==a.id?a.id:null;k(c,b,d);"ready"!=c?g("addEventListener",c,a):"ready"==c&&h&&b.call(null,d);return this},removeEvent:function(c){if(!this.element)return!1;var b=this.element,a;a:{if((a=""!==b.id?b.id:null)&&d[a]){if(!d[a][c]){a=!1;break a}d[a][c]=null}else{if(!d[c]){a=!1;break a}d[c]=null}a=!0}"ready"!=c&&a&&g("removeEventListener",c,b)}};e.fn.init.prototype=
4
+ e.fn;window.addEventListener?window.addEventListener("message",i,!1):window.attachEvent("onmessage",i,!1);return window.Froogaloop=window.$f=e}();
5
+
6
+
7
+ /*
8
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
9
+ *
10
+ * Uses the built in easing capabilities added In jQuery 1.1
11
+ * to offer multiple easing options
12
+ *
13
+ * TERMS OF USE - jQuery Easing
14
+ *
15
+ * Open source under the BSD License.
16
+ *
17
+ * Copyright © 2008 George McGinley Smith
18
+ * All rights reserved.
19
+ *
20
+ * Redistribution and use in source and binary forms, with or without modification,
21
+ * are permitted provided that the following conditions are met:
22
+ *
23
+ * Redistributions of source code must retain the above copyright notice, this list of
24
+ * conditions and the following disclaimer.
25
+ * Redistributions in binary form must reproduce the above copyright notice, this list
26
+ * of conditions and the following disclaimer in the documentation and/or other materials
27
+ * provided with the distribution.
28
+ *
29
+ * Neither the name of the author nor the names of contributors may be used to endorse
30
+ * or promote products derived from this software without specific prior written permission.
31
+ *
32
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
33
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
34
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
35
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
36
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
37
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
38
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
39
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
40
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
41
+ *
42
+ */
43
+
44
+ // t: current time, b: begInnIng value, c: change In value, d: duration
45
+ jQuery.easing['jswing'] = jQuery.easing['swing'];
46
+
47
+ jQuery.extend( jQuery.easing,
48
+ {
49
+ def: 'easeOutQuad',
50
+ swing: function (x, t, b, c, d) {
51
+ //alert(jQuery.easing.default);
52
+ return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
53
+ },
54
+ easeInQuad: function (x, t, b, c, d) {
55
+ return c*(t/=d)*t + b;
56
+ },
57
+ easeOutQuad: function (x, t, b, c, d) {
58
+ return -c *(t/=d)*(t-2) + b;
59
+ },
60
+ easeInOutQuad: function (x, t, b, c, d) {
61
+ if ((t/=d/2) < 1) return c/2*t*t + b;
62
+ return -c/2 * ((--t)*(t-2) - 1) + b;
63
+ },
64
+ easeInCubic: function (x, t, b, c, d) {
65
+ return c*(t/=d)*t*t + b;
66
+ },
67
+ easeOutCubic: function (x, t, b, c, d) {
68
+ return c*((t=t/d-1)*t*t + 1) + b;
69
+ },
70
+ easeInOutCubic: function (x, t, b, c, d) {
71
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
72
+ return c/2*((t-=2)*t*t + 2) + b;
73
+ },
74
+ easeInQuart: function (x, t, b, c, d) {
75
+ return c*(t/=d)*t*t*t + b;
76
+ },
77
+ easeOutQuart: function (x, t, b, c, d) {
78
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
79
+ },
80
+ easeInOutQuart: function (x, t, b, c, d) {
81
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
82
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
83
+ },
84
+ easeInQuint: function (x, t, b, c, d) {
85
+ return c*(t/=d)*t*t*t*t + b;
86
+ },
87
+ easeOutQuint: function (x, t, b, c, d) {
88
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
89
+ },
90
+ easeInOutQuint: function (x, t, b, c, d) {
91
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
92
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
93
+ },
94
+ easeInSine: function (x, t, b, c, d) {
95
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
96
+ },
97
+ easeOutSine: function (x, t, b, c, d) {
98
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
99
+ },
100
+ easeInOutSine: function (x, t, b, c, d) {
101
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
102
+ },
103
+ easeInExpo: function (x, t, b, c, d) {
104
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
105
+ },
106
+ easeOutExpo: function (x, t, b, c, d) {
107
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
108
+ },
109
+ easeInOutExpo: function (x, t, b, c, d) {
110
+ if (t==0) return b;
111
+ if (t==d) return b+c;
112
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
113
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
114
+ },
115
+ easeInCirc: function (x, t, b, c, d) {
116
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
117
+ },
118
+ easeOutCirc: function (x, t, b, c, d) {
119
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
120
+ },
121
+ easeInOutCirc: function (x, t, b, c, d) {
122
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
123
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
124
+ },
125
+ easeInElastic: function (x, t, b, c, d) {
126
+ var s=1.70158;var p=0;var a=c;
127
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
128
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
129
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
130
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
131
+ },
132
+ easeOutElastic: function (x, t, b, c, d) {
133
+ var s=1.70158;var p=0;var a=c;
134
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
135
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
136
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
137
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
138
+ },
139
+ easeInOutElastic: function (x, t, b, c, d) {
140
+ var s=1.70158;var p=0;var a=c;
141
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
142
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
143
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
144
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
145
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
146
+ },
147
+ easeInBack: function (x, t, b, c, d, s) {
148
+ if (s == undefined) s = 1.70158;
149
+ return c*(t/=d)*t*((s+1)*t - s) + b;
150
+ },
151
+ easeOutBack: function (x, t, b, c, d, s) {
152
+ if (s == undefined) s = 1.70158;
153
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
154
+ },
155
+ easeInOutBack: function (x, t, b, c, d, s) {
156
+ if (s == undefined) s = 1.70158;
157
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
158
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
159
+ },
160
+ easeInBounce: function (x, t, b, c, d) {
161
+ return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
162
+ },
163
+ easeOutBounce: function (x, t, b, c, d) {
164
+ if ((t/=d) < (1/2.75)) {
165
+ return c*(7.5625*t*t) + b;
166
+ } else if (t < (2/2.75)) {
167
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
168
+ } else if (t < (2.5/2.75)) {
169
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
170
+ } else {
171
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
172
+ }
173
+ },
174
+ easeInOutBounce: function (x, t, b, c, d) {
175
+ if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
176
+ return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
177
+ }
178
+ });
179
+
180
+ /*
181
+ *
182
+ * TERMS OF USE - EASING EQUATIONS
183
+ *
184
+ * Open source under the BSD License.
185
+ *
186
+ * Copyright © 2001 Robert Penner
187
+ * All rights reserved.
188
+ *
189
+ * Redistribution and use in source and binary forms, with or without modification,
190
+ * are permitted provided that the following conditions are met:
191
+ *
192
+ * Redistributions of source code must retain the above copyright notice, this list of
193
+ * conditions and the following disclaimer.
194
+ * Redistributions in binary form must reproduce the above copyright notice, this list
195
+ * of conditions and the following disclaimer in the documentation and/or other materials
196
+ * provided with the distribution.
197
+ *
198
+ * Neither the name of the author nor the names of contributors may be used to endorse
199
+ * or promote products derived from this software without specific prior written permission.
200
+ *
201
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
202
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
203
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
204
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
205
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
206
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
207
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
208
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
209
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
210
+ *
211
+ */
212
+
213
+ /*global jQuery */
214
+ /*jshint browser:true */
215
+ /*!
216
+ * FitVids 1.1
217
+ *
218
+ * Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
219
+ * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
220
+ * Released under the WTFPL license - http://sam.zoy.org/wtfpl/
221
+ *
222
+ */
223
+
224
+ (function( $ ){
225
+
226
+ "use strict";
227
+
228
+ $.fn.fitVids = function( options ) {
229
+ var settings = {
230
+ customSelector: null,
231
+ ignore: null,
232
+ };
233
+
234
+ if(!document.getElementById('fit-vids-style')) {
235
+ // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
236
+ var head = document.head || document.getElementsByTagName('head')[0];
237
+ var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
238
+ var div = document.createElement('div');
239
+ div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
240
+ head.appendChild(div.childNodes[1]);
241
+ }
242
+
243
+ if ( options ) {
244
+ $.extend( settings, options );
245
+ }
246
+
247
+ return this.each(function(){
248
+ var selectors = [
249
+ "iframe[src*='player.vimeo.com']",
250
+ "iframe[src*='youtube.com']",
251
+ "iframe[src*='youtube-nocookie.com']",
252
+ "iframe[src*='kickstarter.com'][src*='video.html']",
253
+ "iframe[src^='http://fast.wistia.com']",
254
+ "object",
255
+ "embed"
256
+ ];
257
+
258
+ if (settings.customSelector) {
259
+ selectors.push(settings.customSelector);
260
+ }
261
+
262
+ var ignoreList = '.fitvidsignore';
263
+
264
+ if(settings.ignore) {
265
+ ignoreList = ignoreList + ', ' + settings.ignore;
266
+ }
267
+
268
+ var $allVideos = $(this).find(selectors.join(','));
269
+ $allVideos = $allVideos.not("object object"); // SwfObj conflict patch
270
+ $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
271
+
272
+ $allVideos.each(function(){
273
+ var $this = $(this);
274
+ if($this.parents(ignoreList).length > 0) {
275
+ return; // Disable FitVids on this video.
276
+ }
277
+ if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
278
+ if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
279
+ {
280
+ $this.attr('height', 9);
281
+ $this.attr('width', 16);
282
+ }
283
+ var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
284
+ width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
285
+ aspectRatio = height / width;
286
+ if(!$this.attr('id')){
287
+ var videoID = 'fitvid' + Math.floor(Math.random()*999999);
288
+ $this.attr('id', videoID);
289
+ }
290
+ $this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%");
291
+ $this.removeAttr('height').removeAttr('width');
292
+ });
293
+ });
294
+ };
295
+ // Works with either jQuery or Zepto
296
+ })( window.jQuery || window.Zepto );
297
+
298
+
299
+ /*
300
+ * jQuery smoothslider v2.6.2
301
+ * Copyright 2012 WooThemes
302
+ * Contributing Author: Tyler Smith
303
+ */
304
+ ;
305
+ (function ($) {
306
+
307
+ var focused = true;
308
+
309
+ //smoothslider: Object Instance
310
+ $.smoothslider = function(el, options) {
311
+ var slider = $(el);
312
+
313
+ // making variables public
314
+ slider.vars = $.extend({}, $.smoothslider.defaults, options);
315
+
316
+ var namespace = slider.vars.namespace,
317
+ msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
318
+ touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,
319
+ // depricating this idea, as devices are being released with both of these events
320
+ eventType = "click touchend MSPointerUp keyup",
321
+ watchedEvent = "",
322
+ watchedEventClearTimer,
323
+ vertical = slider.vars.direction === "vertical",
324
+ reverse = slider.vars.reverse,
325
+ carousel = (slider.vars.itemWidth > 0),
326
+ fade = slider.vars.animation === "fade",
327
+ asNav = slider.vars.asNavFor !== "",
328
+ methods = {};
329
+
330
+ // Store a reference to the slider object
331
+ $.data(el, "smoothslider", slider);
332
+
333
+ // Private slider methods
334
+ methods = {
335
+ init: function() {
336
+ slider.animating = false;
337
+ // Get current slide and make sure it is a number
338
+ slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );
339
+ if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; }
340
+ slider.animatingTo = slider.currentSlide;
341
+ slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
342
+ slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));
343
+ slider.slides = $(slider.vars.selector, slider);
344
+ slider.container = $(slider.containerSelector, slider);
345
+ slider.count = slider.slides.length;
346
+ // SYNC:
347
+ slider.syncExists = $(slider.vars.sync).length > 0;
348
+ // SLIDE:
349
+ if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; }
350
+ slider.prop = (vertical) ? "top" : "marginLeft";
351
+ slider.args = {};
352
+ // SLIDESHOW:
353
+ slider.manualPause = false;
354
+ slider.stopped = false;
355
+ //PAUSE WHEN INVISIBLE
356
+ slider.started = false;
357
+ slider.startTimeout = null;
358
+ // TOUCH/USECSS:
359
+ slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {
360
+ var obj = document.createElement('div'),
361
+ props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
362
+ for (var i in props) {
363
+ if ( obj.style[ props[i] ] !== undefined ) {
364
+ slider.pfx = props[i].replace('Perspective','').toLowerCase();
365
+ slider.prop = "-" + slider.pfx + "-transform";
366
+ return true;
367
+ }
368
+ }
369
+ return false;
370
+ }());
371
+ slider.ensureAnimationEnd = '';
372
+ // CONTROLSCONTAINER:
373
+ if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);
374
+ // MANUAL:
375
+ if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
376
+
377
+ // CUSTOM DIRECTION NAV:
378
+ if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav);
379
+
380
+ // RANDOMIZE:
381
+ if (slider.vars.randomize) {
382
+ slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
383
+ slider.container.empty().append(slider.slides);
384
+ }
385
+
386
+ slider.doMath();
387
+
388
+ // INIT
389
+ slider.setup("init");
390
+
391
+ // CONTROLNAV:
392
+ if (slider.vars.controlNav) { methods.controlNav.setup(); }
393
+
394
+ // DIRECTIONNAV:
395
+ if (slider.vars.directionNav) { methods.directionNav.setup(); }
396
+
397
+ // KEYBOARD:
398
+ if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {
399
+ $(document).bind('keyup', function(event) {
400
+ var keycode = event.keyCode;
401
+ if (!slider.animating && (keycode === 39 || keycode === 37)) {
402
+ var target = (keycode === 39) ? slider.getTarget('next') :
403
+ (keycode === 37) ? slider.getTarget('prev') : false;
404
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
405
+ }
406
+ });
407
+ }
408
+ // MOUSEWHEEL:
409
+ if (slider.vars.mousewheel) {
410
+ slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
411
+ event.preventDefault();
412
+ var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
413
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
414
+ });
415
+ }
416
+
417
+ // PAUSEPLAY
418
+ if (slider.vars.pausePlay) { methods.pausePlay.setup(); }
419
+
420
+ //PAUSE WHEN INVISIBLE
421
+ if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); }
422
+
423
+ // SLIDSESHOW
424
+ if (slider.vars.slideshow) {
425
+ if (slider.vars.pauseOnHover) {
426
+ slider.hover(function() {
427
+ if (!slider.manualPlay && !slider.manualPause) { slider.pause(); }
428
+ }, function() {
429
+ if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); }
430
+ });
431
+ }
432
+ // initialize animation
433
+ //If we're visible, or we don't use PageVisibility API
434
+ if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {
435
+ (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();
436
+ }
437
+ }
438
+
439
+ // ASNAV:
440
+ if (asNav) { methods.asNav.setup(); }
441
+
442
+ // TOUCH
443
+ if (touch && slider.vars.touch) { methods.touch(); }
444
+
445
+ // FADE&&SMOOTHHEIGHT || SLIDE:
446
+ if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange focus", methods.resize); }
447
+
448
+ slider.find("img").attr("draggable", "false");
449
+
450
+ // API: start() Callback
451
+ setTimeout(function(){
452
+ slider.vars.start(slider);
453
+ }, 200);
454
+ },
455
+ asNav: {
456
+ setup: function() {
457
+ slider.asNav = true;
458
+ slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
459
+ slider.currentItem = slider.currentSlide;
460
+ slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
461
+ if(!msGesture){
462
+ slider.slides.on(eventType, function(e){
463
+ e.preventDefault();
464
+ var $slide = $(this),
465
+ target = $slide.index();
466
+ var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container
467
+ if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {
468
+ slider.flexAnimate(slider.getTarget("prev"), true);
469
+ } else if (!$(slider.vars.asNavFor).data('smoothslider').animating && !$slide.hasClass(namespace + "active-slide")) {
470
+ slider.direction = (slider.currentItem < target) ? "next" : "prev";
471
+ slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
472
+ }
473
+ });
474
+ }else{
475
+ el._slider = slider;
476
+ slider.slides.each(function (){
477
+ var that = this;
478
+ that._gesture = new MSGesture();
479
+ that._gesture.target = that;
480
+ that.addEventListener("MSPointerDown", function (e){
481
+ e.preventDefault();
482
+ if(e.currentTarget._gesture) {
483
+ e.currentTarget._gesture.addPointer(e.pointerId);
484
+ }
485
+ }, false);
486
+ that.addEventListener("MSGestureTap", function (e){
487
+ e.preventDefault();
488
+ var $slide = $(this),
489
+ target = $slide.index();
490
+ if (!$(slider.vars.asNavFor).data('smoothslider').animating && !$slide.hasClass('active')) {
491
+ slider.direction = (slider.currentItem < target) ? "next" : "prev";
492
+ slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
493
+ }
494
+ });
495
+ });
496
+ }
497
+ }
498
+ },
499
+ controlNav: {
500
+ setup: function() {
501
+ if (!slider.manualControls) {
502
+ methods.controlNav.setupPaging();
503
+ } else { // MANUALCONTROLS:
504
+ methods.controlNav.setupManual();
505
+ }
506
+ },
507
+ setupPaging: function() {
508
+ var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
509
+ j = 1,
510
+ item,
511
+ slide;
512
+
513
+ slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
514
+
515
+ if (slider.pagingCount > 1) {
516
+ for (var i = 0; i < slider.pagingCount; i++) {
517
+ slide = slider.slides.eq(i);
518
+ if ( undefined === slide.attr( 'data-thumb-alt' ) ) { slide.attr( 'data-thumb-alt', '' ); }
519
+ var altText = ( '' !== slide.attr( 'data-thumb-alt' ) ) ? altText = ' alt="' + slide.attr( 'data-thumb-alt' ) + '"' : '';
520
+ item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"' + altText + '/>' : '<a href="#">' + j + '</a>';
521
+ if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
522
+ var captn = slide.attr( 'data-thumbcaption' );
523
+ if ( '' !== captn && undefined !== captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; }
524
+ }
525
+ slider.controlNavScaffold.append('<li>' + item + '</li>');
526
+ j++;
527
+ }
528
+ }
529
+
530
+ // CONTROLSCONTAINER:
531
+ (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
532
+ methods.controlNav.set();
533
+
534
+ methods.controlNav.active();
535
+
536
+ slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
537
+ event.preventDefault();
538
+
539
+ if (watchedEvent === "" || watchedEvent === event.type) {
540
+ var $this = $(this),
541
+ target = slider.controlNav.index($this);
542
+
543
+ if (!$this.hasClass(namespace + 'active')) {
544
+ slider.direction = (target > slider.currentSlide) ? "next" : "prev";
545
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
546
+ }
547
+ }
548
+
549
+ // setup flags to prevent event duplication
550
+ if (watchedEvent === "") {
551
+ watchedEvent = event.type;
552
+ }
553
+ methods.setToClearWatchedEvent();
554
+
555
+ });
556
+ },
557
+ setupManual: function() {
558
+ slider.controlNav = slider.manualControls;
559
+ methods.controlNav.active();
560
+
561
+ slider.controlNav.bind(eventType, function(event) {
562
+ event.preventDefault();
563
+
564
+ if (watchedEvent === "" || watchedEvent === event.type) {
565
+ var $this = $(this),
566
+ target = slider.controlNav.index($this);
567
+
568
+ if (!$this.hasClass(namespace + 'active')) {
569
+ (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
570
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
571
+ }
572
+ }
573
+
574
+ // setup flags to prevent event duplication
575
+ if (watchedEvent === "") {
576
+ watchedEvent = event.type;
577
+ }
578
+ methods.setToClearWatchedEvent();
579
+ });
580
+ },
581
+ set: function() {
582
+ var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a';
583
+ slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
584
+ },
585
+ active: function() {
586
+ slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
587
+ },
588
+ update: function(action, pos) {
589
+ if (slider.pagingCount > 1 && action === "add") {
590
+ slider.controlNavScaffold.append($('<li><a href="#">' + slider.count + '</a></li>'));
591
+ } else if (slider.pagingCount === 1) {
592
+ slider.controlNavScaffold.find('li').remove();
593
+ } else {
594
+ slider.controlNav.eq(pos).closest('li').remove();
595
+ }
596
+ methods.controlNav.set();
597
+ (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
598
+ }
599
+ },
600
+ directionNav: {
601
+ setup: function() {
602
+ var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li class="' + namespace + 'nav-prev"><a class="' + namespace + 'prev" href="#">' + slider.vars.prevText + '</a></li><li class="' + namespace + 'nav-next"><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>');
603
+
604
+ // CUSTOM DIRECTION NAV:
605
+ if (slider.customDirectionNav) {
606
+ slider.directionNav = slider.customDirectionNav;
607
+ // CONTROLSCONTAINER:
608
+ } else if (slider.controlsContainer) {
609
+ $(slider.controlsContainer).append(directionNavScaffold);
610
+ slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
611
+ } else {
612
+ slider.append(directionNavScaffold);
613
+ slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
614
+ }
615
+
616
+ methods.directionNav.update();
617
+
618
+ slider.directionNav.bind(eventType, function(event) {
619
+ event.preventDefault();
620
+ var target;
621
+
622
+ if (watchedEvent === "" || watchedEvent === event.type) {
623
+ target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
624
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
625
+ }
626
+
627
+ // setup flags to prevent event duplication
628
+ if (watchedEvent === "") {
629
+ watchedEvent = event.type;
630
+ }
631
+ methods.setToClearWatchedEvent();
632
+ });
633
+ },
634
+ update: function() {
635
+ var disabledClass = namespace + 'disabled';
636
+ if (slider.pagingCount === 1) {
637
+ slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');
638
+ } else if (!slider.vars.animationLoop) {
639
+ if (slider.animatingTo === 0) {
640
+ slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1');
641
+ } else if (slider.animatingTo === slider.last) {
642
+ slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1');
643
+ } else {
644
+ slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
645
+ }
646
+ } else {
647
+ slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
648
+ }
649
+ }
650
+ },
651
+ pausePlay: {
652
+ setup: function() {
653
+ var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a href="#"></a></div>');
654
+
655
+ // CONTROLSCONTAINER:
656
+ if (slider.controlsContainer) {
657
+ slider.controlsContainer.append(pausePlayScaffold);
658
+ slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
659
+ } else {
660
+ slider.append(pausePlayScaffold);
661
+ slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
662
+ }
663
+
664
+ methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
665
+
666
+ slider.pausePlay.bind(eventType, function(event) {
667
+ event.preventDefault();
668
+
669
+ if (watchedEvent === "" || watchedEvent === event.type) {
670
+ if ($(this).hasClass(namespace + 'pause')) {
671
+ slider.manualPause = true;
672
+ slider.manualPlay = false;
673
+ slider.pause();
674
+ } else {
675
+ slider.manualPause = false;
676
+ slider.manualPlay = true;
677
+ slider.play();
678
+ }
679
+ }
680
+
681
+ // setup flags to prevent event duplication
682
+ if (watchedEvent === "") {
683
+ watchedEvent = event.type;
684
+ }
685
+ methods.setToClearWatchedEvent();
686
+ });
687
+ },
688
+ update: function(state) {
689
+ (state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);
690
+ }
691
+ },
692
+ touch: function() {
693
+ var startX,
694
+ startY,
695
+ offset,
696
+ cwidth,
697
+ dx,
698
+ startT,
699
+ onTouchStart,
700
+ onTouchMove,
701
+ onTouchEnd,
702
+ scrolling = false,
703
+ localX = 0,
704
+ localY = 0,
705
+ accDx = 0;
706
+
707
+ if(!msGesture){
708
+ onTouchStart = function(e) {
709
+ if (slider.animating) {
710
+ e.preventDefault();
711
+ } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
712
+ slider.pause();
713
+ // CAROUSEL:
714
+ cwidth = (vertical) ? slider.h : slider. w;
715
+ startT = Number(new Date());
716
+ // CAROUSEL:
717
+
718
+ // Local vars for X and Y points.
719
+ localX = e.touches[0].pageX;
720
+ localY = e.touches[0].pageY;
721
+
722
+ offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
723
+ (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
724
+ (carousel && slider.currentSlide === slider.last) ? slider.limit :
725
+ (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
726
+ (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
727
+ startX = (vertical) ? localY : localX;
728
+ startY = (vertical) ? localX : localY;
729
+
730
+ el.addEventListener('touchmove', onTouchMove, false);
731
+ el.addEventListener('touchend', onTouchEnd, false);
732
+ }
733
+ };
734
+
735
+ onTouchMove = function(e) {
736
+ // Local vars for X and Y points.
737
+
738
+ localX = e.touches[0].pageX;
739
+ localY = e.touches[0].pageY;
740
+
741
+ dx = (vertical) ? startX - localY : startX - localX;
742
+ scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
743
+
744
+ var fxms = 500;
745
+
746
+ if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
747
+ e.preventDefault();
748
+ if (!fade && slider.transitions) {
749
+ if (!slider.vars.animationLoop) {
750
+ dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
751
+ }
752
+ slider.setProps(offset + dx, "setTouch");
753
+ }
754
+ }
755
+ };
756
+
757
+ onTouchEnd = function(e) {
758
+ // finish the touch by undoing the touch session
759
+ el.removeEventListener('touchmove', onTouchMove, false);
760
+
761
+ if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
762
+ var updateDx = (reverse) ? -dx : dx,
763
+ target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
764
+
765
+ if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
766
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
767
+ } else {
768
+ if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
769
+ }
770
+ }
771
+ el.removeEventListener('touchend', onTouchEnd, false);
772
+
773
+ startX = null;
774
+ startY = null;
775
+ dx = null;
776
+ offset = null;
777
+ };
778
+
779
+ el.addEventListener('touchstart', onTouchStart, false);
780
+ }else{
781
+ el.style.msTouchAction = "none";
782
+ el._gesture = new MSGesture();
783
+ el._gesture.target = el;
784
+ el.addEventListener("MSPointerDown", onMSPointerDown, false);
785
+ el._slider = slider;
786
+ el.addEventListener("MSGestureChange", onMSGestureChange, false);
787
+ el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
788
+
789
+ function onMSPointerDown(e){
790
+ e.stopPropagation();
791
+ if (slider.animating) {
792
+ e.preventDefault();
793
+ }else{
794
+ slider.pause();
795
+ el._gesture.addPointer(e.pointerId);
796
+ accDx = 0;
797
+ cwidth = (vertical) ? slider.h : slider. w;
798
+ startT = Number(new Date());
799
+ // CAROUSEL:
800
+
801
+ offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
802
+ (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
803
+ (carousel && slider.currentSlide === slider.last) ? slider.limit :
804
+ (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
805
+ (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
806
+ }
807
+ }
808
+
809
+ function onMSGestureChange(e) {
810
+ e.stopPropagation();
811
+ var slider = e.target._slider;
812
+ if(!slider){
813
+ return;
814
+ }
815
+ var transX = -e.translationX,
816
+ transY = -e.translationY;
817
+
818
+ //Accumulate translations.
819
+ accDx = accDx + ((vertical) ? transY : transX);
820
+ dx = accDx;
821
+ scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
822
+
823
+ if(e.detail === e.MSGESTURE_FLAG_INERTIA){
824
+ setImmediate(function (){
825
+ el._gesture.stop();
826
+ });
827
+
828
+ return;
829
+ }
830
+
831
+ if (!scrolling || Number(new Date()) - startT > 500) {
832
+ e.preventDefault();
833
+ if (!fade && slider.transitions) {
834
+ if (!slider.vars.animationLoop) {
835
+ dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
836
+ }
837
+ slider.setProps(offset + dx, "setTouch");
838
+ }
839
+ }
840
+ }
841
+
842
+ function onMSGestureEnd(e) {
843
+ e.stopPropagation();
844
+ var slider = e.target._slider;
845
+ if(!slider){
846
+ return;
847
+ }
848
+ if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
849
+ var updateDx = (reverse) ? -dx : dx,
850
+ target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
851
+
852
+ if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
853
+ slider.flexAnimate(target, slider.vars.pauseOnAction);
854
+ } else {
855
+ if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
856
+ }
857
+ }
858
+
859
+ startX = null;
860
+ startY = null;
861
+ dx = null;
862
+ offset = null;
863
+ accDx = 0;
864
+ }
865
+ }
866
+ },
867
+ resize: function() {
868
+ if (!slider.animating && slider.is(':visible')) {
869
+ if (!carousel) { slider.doMath(); }
870
+
871
+ if (fade) {
872
+ // SMOOTH HEIGHT:
873
+ methods.smoothHeight();
874
+ } else if (carousel) { //CAROUSEL:
875
+ slider.slides.width(slider.computedW);
876
+ slider.update(slider.pagingCount);
877
+ slider.setProps();
878
+ }
879
+ else if (vertical) { //VERTICAL:
880
+ slider.viewport.height(slider.h);
881
+ slider.setProps(slider.h, "setTotal");
882
+ } else {
883
+ // SMOOTH HEIGHT:
884
+ if (slider.vars.smoothHeight) { methods.smoothHeight(); }
885
+ slider.newSlides.width(slider.computedW);
886
+ slider.setProps(slider.computedW, "setTotal");
887
+ }
888
+ }
889
+ },
890
+ smoothHeight: function(dur) {
891
+ if (!vertical || fade) {
892
+ var $obj = (fade) ? slider : slider.viewport;
893
+ (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).innerHeight()}, dur).css('overflow', 'visible') : $obj.innerHeight(slider.slides.eq(slider.animatingTo).innerHeight());
894
+ }
895
+ },
896
+ sync: function(action) {
897
+ var $obj = $(slider.vars.sync).data("smoothslider"),
898
+ target = slider.animatingTo;
899
+
900
+ switch (action) {
901
+ case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
902
+ case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
903
+ case "pause": $obj.pause(); break;
904
+ }
905
+ },
906
+ uniqueID: function($clone) {
907
+ // Append _clone to current level and children elements with id attributes
908
+ $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {
909
+ var $this = $(this);
910
+ $this.attr( 'id', $this.attr( 'id' ) + '_clone' );
911
+ });
912
+ return $clone;
913
+ },
914
+ pauseInvisible: {
915
+ visProp: null,
916
+ init: function() {
917
+ var visProp = methods.pauseInvisible.getHiddenProp();
918
+ if (visProp) {
919
+ var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
920
+ document.addEventListener(evtname, function() {
921
+ if (methods.pauseInvisible.isHidden()) {
922
+ if(slider.startTimeout) {
923
+ clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
924
+ } else {
925
+ slider.pause(); //Or just pause
926
+ }
927
+ }
928
+ else {
929
+ if(slider.started) {
930
+ slider.play(); //Initiated before, just play
931
+ } else {
932
+ if (slider.vars.initDelay > 0) {
933
+ setTimeout(slider.play, slider.vars.initDelay);
934
+ } else {
935
+ slider.play(); //Didn't init before: simply init or wait for it
936
+ }
937
+ }
938
+ }
939
+ });
940
+ }
941
+ },
942
+ isHidden: function() {
943
+ var prop = methods.pauseInvisible.getHiddenProp();
944
+ if (!prop) {
945
+ return false;
946
+ }
947
+ return document[prop];
948
+ },
949
+ getHiddenProp: function() {
950
+ var prefixes = ['webkit','moz','ms','o'];
951
+ // if 'hidden' is natively supported just return it
952
+ if ('hidden' in document) {
953
+ return 'hidden';
954
+ }
955
+ // otherwise loop over all the known prefixes until we find one
956
+ for ( var i = 0; i < prefixes.length; i++ ) {
957
+ if ((prefixes[i] + 'Hidden') in document) {
958
+ return prefixes[i] + 'Hidden';
959
+ }
960
+ }
961
+ // otherwise it's not supported
962
+ return null;
963
+ }
964
+ },
965
+ setToClearWatchedEvent: function() {
966
+ clearTimeout(watchedEventClearTimer);
967
+ watchedEventClearTimer = setTimeout(function() {
968
+ watchedEvent = "";
969
+ }, 3000);
970
+ }
971
+ };
972
+
973
+ // public methods
974
+ slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
975
+ if (!slider.vars.animationLoop && target !== slider.currentSlide) {
976
+ slider.direction = (target > slider.currentSlide) ? "next" : "prev";
977
+ }
978
+
979
+ if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
980
+
981
+ if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
982
+ if (asNav && withSync) {
983
+ var master = $(slider.vars.asNavFor).data('smoothslider');
984
+ slider.atEnd = target === 0 || target === slider.count - 1;
985
+ master.flexAnimate(target, true, false, true, fromNav);
986
+ slider.direction = (slider.currentItem < target) ? "next" : "prev";
987
+ master.direction = slider.direction;
988
+
989
+ if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
990
+ slider.currentItem = target;
991
+ slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
992
+ target = Math.floor(target/slider.visible);
993
+ } else {
994
+ slider.currentItem = target;
995
+ slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
996
+ return false;
997
+ }
998
+ }
999
+
1000
+ slider.animating = true;
1001
+ slider.animatingTo = target;
1002
+
1003
+ // SLIDESHOW:
1004
+ if (pause) { slider.pause(); }
1005
+
1006
+ // API: before() animation Callback
1007
+ slider.vars.before(slider);
1008
+
1009
+ // SYNC:
1010
+ if (slider.syncExists && !fromNav) { methods.sync("animate"); }
1011
+
1012
+ // CONTROLNAV
1013
+ if (slider.vars.controlNav) { methods.controlNav.active(); }
1014
+
1015
+ // !CAROUSEL:
1016
+ // CANDIDATE: slide active class (for add/remove slide)
1017
+ if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }
1018
+
1019
+ // INFINITE LOOP:
1020
+ // CANDIDATE: atEnd
1021
+ slider.atEnd = target === 0 || target === slider.last;
1022
+
1023
+ // DIRECTIONNAV:
1024
+ if (slider.vars.directionNav) { methods.directionNav.update(); }
1025
+
1026
+ if (target === slider.last) {
1027
+ // API: end() of cycle Callback
1028
+ slider.vars.end(slider);
1029
+ // SLIDESHOW && !INFINITE LOOP:
1030
+ if (!slider.vars.animationLoop) { slider.pause(); }
1031
+ }
1032
+
1033
+ // SLIDE:
1034
+ if (!fade) {
1035
+ var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
1036
+ margin, slideString, calcNext;
1037
+
1038
+ // INFINITE LOOP / REVERSE:
1039
+ if (carousel) {
1040
+ margin = slider.vars.itemMargin;
1041
+ calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
1042
+ slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
1043
+ } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
1044
+ slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
1045
+ } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
1046
+ slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
1047
+ } else {
1048
+ slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
1049
+ }
1050
+ slider.setProps(slideString, "", slider.vars.animationSpeed);
1051
+ if (slider.transitions) {
1052
+ if (!slider.vars.animationLoop || !slider.atEnd) {
1053
+ slider.animating = false;
1054
+ slider.currentSlide = slider.animatingTo;
1055
+ }
1056
+
1057
+ // Unbind previous transitionEnd events and re-bind new transitionEnd event
1058
+ slider.container.unbind("webkitTransitionEnd transitionend");
1059
+ slider.container.bind("webkitTransitionEnd transitionend", function() {
1060
+ clearTimeout(slider.ensureAnimationEnd);
1061
+ slider.wrapup(dimension);
1062
+ });
1063
+
1064
+ // Insurance for the ever-so-fickle transitionEnd event
1065
+ clearTimeout(slider.ensureAnimationEnd);
1066
+ slider.ensureAnimationEnd = setTimeout(function() {
1067
+ slider.wrapup(dimension);
1068
+ }, slider.vars.animationSpeed + 100);
1069
+
1070
+ } else {
1071
+ slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
1072
+ slider.wrapup(dimension);
1073
+ });
1074
+ }
1075
+ } else { // FADE:
1076
+ if (!touch) {
1077
+ //slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationSpeed, slider.vars.easing);
1078
+ //slider.slides.eq(target).fadeIn(slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
1079
+
1080
+ slider.slides.eq(slider.currentSlide).css({"zIndex": 1, "display": "none"}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
1081
+ slider.slides.eq(target).css({"zIndex": 2, "display": "block"}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
1082
+
1083
+ } else {
1084
+ slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1, "display": "none" });
1085
+ slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2, "display": "block" });
1086
+ slider.wrapup(dimension);
1087
+ }
1088
+ }
1089
+ // SMOOTH HEIGHT:
1090
+ if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }
1091
+ }
1092
+ };
1093
+ slider.wrapup = function(dimension) {
1094
+ // SLIDE:
1095
+ if (!fade && !carousel) {
1096
+ if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
1097
+ slider.setProps(dimension, "jumpEnd");
1098
+ } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
1099
+ slider.setProps(dimension, "jumpStart");
1100
+ }
1101
+ }
1102
+ slider.animating = false;
1103
+ slider.currentSlide = slider.animatingTo;
1104
+ // API: after() animation Callback
1105
+ slider.vars.after(slider);
1106
+ };
1107
+
1108
+ // SLIDESHOW:
1109
+ slider.animateSlides = function() {
1110
+ if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); }
1111
+ };
1112
+ // SLIDESHOW:
1113
+ slider.pause = function() {
1114
+ clearInterval(slider.animatedSlides);
1115
+ slider.animatedSlides = null;
1116
+ slider.playing = false;
1117
+ // PAUSEPLAY:
1118
+ if (slider.vars.pausePlay) { methods.pausePlay.update("play"); }
1119
+ // SYNC:
1120
+ if (slider.syncExists) { methods.sync("pause"); }
1121
+ };
1122
+ // SLIDESHOW:
1123
+ slider.play = function() {
1124
+ if (slider.playing) { clearInterval(slider.animatedSlides); }
1125
+ slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
1126
+ slider.started = slider.playing = true;
1127
+ // PAUSEPLAY:
1128
+ if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); }
1129
+ // SYNC:
1130
+ if (slider.syncExists) { methods.sync("play"); }
1131
+ };
1132
+ // STOP:
1133
+ slider.stop = function () {
1134
+ slider.pause();
1135
+ slider.stopped = true;
1136
+ };
1137
+ slider.canAdvance = function(target, fromNav) {
1138
+ // ASNAV:
1139
+ var last = (asNav) ? slider.pagingCount - 1 : slider.last;
1140
+ return (fromNav) ? true :
1141
+ (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
1142
+ (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
1143
+ (target === slider.currentSlide && !asNav) ? false :
1144
+ (slider.vars.animationLoop) ? true :
1145
+ (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
1146
+ (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
1147
+ true;
1148
+ };
1149
+ slider.getTarget = function(dir) {
1150
+ slider.direction = dir;
1151
+ if (dir === "next") {
1152
+ return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
1153
+ } else {
1154
+ return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
1155
+ }
1156
+ };
1157
+
1158
+ // SLIDE:
1159
+ slider.setProps = function(pos, special, dur) {
1160
+ var target = (function() {
1161
+ var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
1162
+ posCalc = (function() {
1163
+ if (carousel) {
1164
+ return (special === "setTouch") ? pos :
1165
+ (reverse && slider.animatingTo === slider.last) ? 0 :
1166
+ (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
1167
+ (slider.animatingTo === slider.last) ? slider.limit : posCheck;
1168
+ } else {
1169
+ switch (special) {
1170
+ case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
1171
+ case "setTouch": return (reverse) ? pos : pos;
1172
+ case "jumpEnd": return (reverse) ? pos : slider.count * pos;
1173
+ case "jumpStart": return (reverse) ? slider.count * pos : pos;
1174
+ default: return pos;
1175
+ }
1176
+ }
1177
+ }());
1178
+
1179
+ return (posCalc * -1) + "px";
1180
+ }());
1181
+
1182
+ if (slider.transitions) {
1183
+ target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
1184
+ dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
1185
+ slider.container.css("-" + slider.pfx + "-transition-duration", dur);
1186
+ slider.container.css("transition-duration", dur);
1187
+ }
1188
+
1189
+ slider.args[slider.prop] = target;
1190
+ if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }
1191
+
1192
+ slider.container.css('transform',target);
1193
+ };
1194
+
1195
+ slider.setup = function(type) {
1196
+ // SLIDE:
1197
+ if (!fade) {
1198
+ var sliderOffset, arr;
1199
+
1200
+ if (type === "init") {
1201
+ slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
1202
+ // INFINITE LOOP:
1203
+ slider.cloneCount = 0;
1204
+ slider.cloneOffset = 0;
1205
+ // REVERSE:
1206
+ if (reverse) {
1207
+ arr = $.makeArray(slider.slides).reverse();
1208
+ slider.slides = $(arr);
1209
+ slider.container.empty().append(slider.slides);
1210
+ }
1211
+ }
1212
+ // INFINITE LOOP && !CAROUSEL:
1213
+ if (slider.vars.animationLoop && !carousel) {
1214
+ slider.cloneCount = 2;
1215
+ slider.cloneOffset = 1;
1216
+ // clear out old clones
1217
+ if (type !== "init") { slider.container.find('.clone').remove(); }
1218
+ slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))
1219
+ .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));
1220
+ }
1221
+ slider.newSlides = $(slider.vars.selector, slider);
1222
+
1223
+ sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
1224
+ // VERTICAL:
1225
+ if (vertical && !carousel) {
1226
+ slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
1227
+ setTimeout(function(){
1228
+ slider.newSlides.css({"display": "block"});
1229
+ slider.doMath();
1230
+ slider.viewport.height(slider.h);
1231
+ slider.setProps(sliderOffset * slider.h, "init");
1232
+ }, (type === "init") ? 100 : 0);
1233
+ } else {
1234
+ slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
1235
+ slider.setProps(sliderOffset * slider.computedW, "init");
1236
+ setTimeout(function(){
1237
+ slider.doMath();
1238
+ slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"});
1239
+ // SMOOTH HEIGHT:
1240
+ if (slider.vars.smoothHeight) { methods.smoothHeight(); }
1241
+ }, (type === "init") ? 100 : 0);
1242
+ }
1243
+ } else { // FADE:
1244
+ slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
1245
+ if (type === "init") {
1246
+ if (!touch) {
1247
+ //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
1248
+ if (slider.vars.fadeFirstSlide == false) {
1249
+ slider.slides.css({ "opacity": 0, "display": "none", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2, "display": "block"}).css({"opacity": 1});
1250
+ } else {
1251
+ slider.slides.css({ "opacity": 0, "display": "none", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2, "display": "block"}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
1252
+ }
1253
+ } else {
1254
+ slider.slides.css({ "opacity": 0, "display": "none", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2, "display": "block"});
1255
+ }
1256
+ }
1257
+ // SMOOTH HEIGHT:
1258
+ if (slider.vars.smoothHeight) { methods.smoothHeight(); }
1259
+ }
1260
+ // !CAROUSEL:
1261
+ // CANDIDATE: active slide
1262
+ if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); }
1263
+
1264
+ //smoothslider: init() Callback
1265
+ slider.vars.init(slider);
1266
+ };
1267
+
1268
+ slider.doMath = function() {
1269
+ var slide = slider.slides.first(),
1270
+ slideMargin = slider.vars.itemMargin,
1271
+ minItems = slider.vars.minItems,
1272
+ maxItems = slider.vars.maxItems;
1273
+
1274
+ slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
1275
+ slider.h = slide.height();
1276
+ slider.boxPadding = slide.outerWidth() - slide.width();
1277
+
1278
+ // CAROUSEL:
1279
+ if (carousel) {
1280
+ slider.itemT = slider.vars.itemWidth + slideMargin;
1281
+ slider.itemM = slideMargin;
1282
+ slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
1283
+ slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
1284
+ slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
1285
+ (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
1286
+ (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
1287
+
1288
+ slider.visible = Math.floor(slider.w/(slider.itemW));
1289
+ slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
1290
+ slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
1291
+ slider.last = slider.pagingCount - 1;
1292
+ slider.limit = (slider.pagingCount === 1) ? 0 :
1293
+ (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
1294
+ } else {
1295
+ slider.itemW = slider.w;
1296
+ slider.itemM = slideMargin;
1297
+ slider.pagingCount = slider.count;
1298
+ slider.last = slider.count - 1;
1299
+ }
1300
+ slider.computedW = slider.itemW - slider.boxPadding;
1301
+ slider.computedM = slider.itemM;
1302
+ };
1303
+
1304
+ slider.update = function(pos, action) {
1305
+ slider.doMath();
1306
+
1307
+ // update currentSlide and slider.animatingTo if necessary
1308
+ if (!carousel) {
1309
+ if (pos < slider.currentSlide) {
1310
+ slider.currentSlide += 1;
1311
+ } else if (pos <= slider.currentSlide && pos !== 0) {
1312
+ slider.currentSlide -= 1;
1313
+ }
1314
+ slider.animatingTo = slider.currentSlide;
1315
+ }
1316
+
1317
+ // update controlNav
1318
+ if (slider.vars.controlNav && !slider.manualControls) {
1319
+ if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
1320
+ methods.controlNav.update("add");
1321
+ } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
1322
+ if (carousel && slider.currentSlide > slider.last) {
1323
+ slider.currentSlide -= 1;
1324
+ slider.animatingTo -= 1;
1325
+ }
1326
+ methods.controlNav.update("remove", slider.last);
1327
+ }
1328
+ }
1329
+ // update directionNav
1330
+ if (slider.vars.directionNav) { methods.directionNav.update(); }
1331
+
1332
+ };
1333
+
1334
+ slider.addSlide = function(obj, pos) {
1335
+ var $obj = $(obj);
1336
+
1337
+ slider.count += 1;
1338
+ slider.last = slider.count - 1;
1339
+
1340
+ // append new slide
1341
+ if (vertical && reverse) {
1342
+ (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
1343
+ } else {
1344
+ (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
1345
+ }
1346
+
1347
+ // update currentSlide, animatingTo, controlNav, and directionNav
1348
+ slider.update(pos, "add");
1349
+
1350
+ // update slider.slides
1351
+ slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1352
+ // re-setup the slider to accomdate new slide
1353
+ slider.setup();
1354
+
1355
+ //smoothslider: added() Callback
1356
+ slider.vars.added(slider);
1357
+ };
1358
+ slider.removeSlide = function(obj) {
1359
+ var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
1360
+
1361
+ // update count
1362
+ slider.count -= 1;
1363
+ slider.last = slider.count - 1;
1364
+
1365
+ // remove slide
1366
+ if (isNaN(obj)) {
1367
+ $(obj, slider.slides).remove();
1368
+ } else {
1369
+ (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
1370
+ }
1371
+
1372
+ // update currentSlide, animatingTo, controlNav, and directionNav
1373
+ slider.doMath();
1374
+ slider.update(pos, "remove");
1375
+
1376
+ // update slider.slides
1377
+ slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1378
+ // re-setup the slider to accomdate new slide
1379
+ slider.setup();
1380
+
1381
+ // smoothslider: removed() Callback
1382
+ slider.vars.removed(slider);
1383
+ };
1384
+
1385
+ //smoothslider: Initialize
1386
+ methods.init();
1387
+ };
1388
+
1389
+ // Ensure the slider isn't focussed if the window loses focus.
1390
+ $( window ).blur( function ( e ) {
1391
+ focused = false;
1392
+ }).focus( function ( e ) {
1393
+ focused = true;
1394
+ });
1395
+
1396
+ //smoothslider: Default Settings
1397
+ $.smoothslider.defaults = {
1398
+ namespace: "flex-", //{NEW} String: Prefix string attached to the class of every element generated by the plugin
1399
+ selector: ".slides > li", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
1400
+ animation: "fade", //String: Select your animation type, "fade" or "slide"
1401
+ easing: "swing", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
1402
+ direction: "horizontal", //String: Select the sliding direction, "horizontal" or "vertical"
1403
+ reverse: false, //{NEW} Boolean: Reverse the animation direction
1404
+ animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
1405
+ smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
1406
+ startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide)
1407
+ slideshow: true, //Boolean: Animate slider automatically
1408
+ slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds
1409
+ animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds
1410
+ initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds
1411
+ randomize: false, //Boolean: Randomize slide order
1412
+ fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is "fade"
1413
+ thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
1414
+
1415
+ // Usability features
1416
+ pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
1417
+ pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
1418
+ pauseInvisible: true, //{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
1419
+ useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available
1420
+ touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
1421
+ video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
1422
+
1423
+ // Primary Controls
1424
+ controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage
1425
+ directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false)
1426
+ prevText: "Previous", //String: Set the text for the "previous" directionNav item
1427
+ nextText: "Next", //String: Set the text for the "next" directionNav item
1428
+
1429
+ // Secondary Navigation
1430
+ keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys
1431
+ multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
1432
+ mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
1433
+ pausePlay: false, //Boolean: Create pause/play dynamic element
1434
+ pauseText: "Pause", //String: Set the text for the "pause" pausePlay item
1435
+ playText: "Play", //String: Set the text for the "play" pausePlay item
1436
+
1437
+ // Special properties
1438
+ controlsContainer: "", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the smoothslider element. Example use would be $(".smoothslider-container"). Property is ignored if given element is not found.
1439
+ manualControls: "", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
1440
+ customDirectionNav: "", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace)
1441
+ sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
1442
+ asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
1443
+
1444
+ // Carousel Options
1445
+ itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
1446
+ itemMargin: 0, //{NEW} Integer: Margin between carousel items.
1447
+ minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
1448
+ maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
1449
+ move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
1450
+ allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
1451
+
1452
+ // Callback API
1453
+ start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide
1454
+ before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation
1455
+ after: function(){}, //Callback: function(slider) - Fires after each slider animation completes
1456
+ end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
1457
+ added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added
1458
+ removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed
1459
+ init: function() {} //{NEW} Callback: function(slider) - Fires after the slider is initially setup
1460
+ };
1461
+
1462
+ //smoothslider: Plugin Function
1463
+ $.fn.smoothslider = function(options) {
1464
+ if (options === undefined) { options = {}; }
1465
+
1466
+ if (typeof options === "object") {
1467
+ return this.each(function() {
1468
+ var $this = $(this),
1469
+ selector = (options.selector) ? options.selector : ".slides > li",
1470
+ $slides = $this.find(selector);
1471
+
1472
+ if ( ( $slides.length === 1 && options.allowOneSlide === false ) || $slides.length === 0 ) {
1473
+ $slides.fadeIn(400);
1474
+ if (options.start) { options.start($this); }
1475
+ } else if ($this.data('smoothslider') === undefined) {
1476
+ new $.smoothslider(this, options);
1477
+ }
1478
+ });
1479
+ } else {
1480
+ // Helper strings to quickly perform functions on the slider
1481
+ var $slider = $(this).data('smoothslider');
1482
+ switch (options) {
1483
+ case "play": $slider.play(); break;
1484
+ case "pause": $slider.pause(); break;
1485
+ case "stop": $slider.stop(); break;
1486
+ case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
1487
+ case "prev":
1488
+ case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
1489
+ default: if (typeof options === "number") { $slider.flexAnimate(options, true); }
1490
+ }
1491
+ }
1492
+ };
1493
+ })(jQuery);
1494
+
1495
+
1496
+ /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
1497
+ * Licensed under the MIT License (LICENSE.txt).
1498
+ *
1499
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
1500
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
1501
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
1502
+ *
1503
+ * Version: 3.0.6
1504
+ *
1505
+ * Requires: 1.2.2+
1506
+ */
1507
+
1508
+ (function($) {
1509
+
1510
+ var types = ['DOMMouseScroll', 'mousewheel'];
1511
+
1512
+ if ($.event.fixHooks) {
1513
+ for ( var i=types.length; i; ) {
1514
+ $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
1515
+ }
1516
+ }
1517
+
1518
+ $.event.special.mousewheel = {
1519
+ setup: function() {
1520
+ if ( this.addEventListener ) {
1521
+ for ( var i=types.length; i; ) {
1522
+ this.addEventListener( types[--i], handler, false );
1523
+ }
1524
+ } else {
1525
+ this.onmousewheel = handler;
1526
+ }
1527
+ },
1528
+
1529
+ teardown: function() {
1530
+ if ( this.removeEventListener ) {
1531
+ for ( var i=types.length; i; ) {
1532
+ this.removeEventListener( types[--i], handler, false );
1533
+ }
1534
+ } else {
1535
+ this.onmousewheel = null;
1536
+ }
1537
+ }
1538
+ };
1539
+
1540
+ $.fn.extend({
1541
+ mousewheel: function(fn) {
1542
+ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
1543
+ },
1544
+
1545
+ unmousewheel: function(fn) {
1546
+ return this.unbind("mousewheel", fn);
1547
+ }
1548
+ });
1549
+
1550
+
1551
+ function handler(event) {
1552
+ var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
1553
+ event = $.event.fix(orgEvent);
1554
+ event.type = "mousewheel";
1555
+
1556
+ // Old school scrollwheel delta
1557
+ if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
1558
+ if ( orgEvent.detail ) { delta = -orgEvent.detail/3; }
1559
+
1560
+ // New school multidimensional scroll (touchpads) deltas
1561
+ deltaY = delta;
1562
+
1563
+ // Gecko
1564
+ if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
1565
+ deltaY = 0;
1566
+ deltaX = -1*delta;
1567
+ }
1568
+
1569
+ // Webkit
1570
+ if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
1571
+ if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
1572
+
1573
+ // Add event and delta to the front of the arguments
1574
+ args.unshift(event, delta, deltaX, deltaY);
1575
+
1576
+ return ($.event.dispatch || $.event.handle).apply(this, args);
1577
+ }
1578
+
1579
+ })(jQuery);
1580
+
1581
+ /* Modernizr 2.0.6 (Custom Build) | MIT & BSD */
1582
+ ;window.Modernizr=function(a,b,c){function D(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+o.join(c+" ")+c).split(" ");return C(d,b)}function C(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function B(a,b){return!!~(""+a).indexOf(b)}function A(a,b){return typeof a===b}function z(a,b){return y(n.join(a+";")+(b||""))}function y(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),o="Webkit Moz O ms Khtml".split(" "),p={},q={},r={},s=[],t=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["&shy;","<style>",a,"</style>"].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},u=function(b){if(a.matchMedia)return matchMedia(b).matches;var c;t("@media "+b+" { #"+i+" { position: absolute; } }",function(b){c=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position=="absolute"});return c},v,w={}.hasOwnProperty,x;!A(w,c)&&!A(w.call,c)?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],c)},p.rgba=function(){y("background-color:rgba(150,255,150,.5)");return B(k.backgroundColor,"rgba")},p.boxshadow=function(){return D("boxShadow")},p.csstransitions=function(){return D("transitionProperty")};for(var E in p)x(p,E)&&(v=E.toLowerCase(),e[v]=p[E](),s.push((e[v]?"":"no-")+v));e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return;b=typeof b=="boolean"?b:!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b}return e},y(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,e._prefixes=n,e._domPrefixes=o,e.mq=u,e.testProp=function(a){return C([a])},e.testAllProps=D,e.testStyles=t,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+s.join(" "):"");return e}(this,this.document),function(a,b){function u(){r(!0)}a.respond={},respond.update=function(){},respond.mediaQueriesSupported=b;if(!b){var c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=j.getElementsByTagName("link"),l=[],m=function(){var b=k,c=b.length,d=0,e,f,g,i;for(;d<c;d++)e=b[d],f=e.href,g=e.media,i=e.rel&&e.rel.toLowerCase()==="stylesheet",!!f&&i&&!h[f]&&(!/^([a-zA-Z]+?:(\/\/)?(www\.)?)/.test(f)||f.replace(RegExp.$1,"").split("/")[0]===a.location.host?l.push({href:f,media:g}):h[f]=!0);n()},n=function(){if(l.length){var a=l.shift();s(a.href,function(b){o(b,a.href,a.media),h[a.href]=!0,n()})}},o=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]+\{[^\}\{]+\})+/gi),g=d&&d.length||0,b=b.substring(0,b.lastIndexOf("/")),h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c,j=0,k,l,m,n,o;b.length&&(b+="/"),i&&(g=1);for(;j<g;j++){k=0,i?(l=c,f.push(h(a))):(l=d[j].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),n=l.split(","),o=n.length;for(;k<o;k++)m=n[k],e.push({media:m.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:f.length-1,minw:m.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:m.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}r()},p,q,r=function(a){var b="clientWidth",h=d[b],l=c.compatMode==="CSS1Compat"&&h||c.body[b]||h,m={},n=c.createDocumentFragment(),o=k[k.length-1],s=(new Date).getTime();if(a&&p&&s-p<i)clearTimeout(q),q=setTimeout(r,i);else{p=s;for(var t in e){var u=e[t];if(!u.minw&&!u.maxw||(!u.minw||u.minw&&l>=u.minw)&&(!u.maxw||u.maxw&&l<=u.maxw))m[u.media]||(m[u.media]=[]),m[u.media].push(f[u.rules])}for(var t in g)g[t]&&g[t].parentNode===j&&j.removeChild(g[t]);for(var t in m){var v=c.createElement("style"),w=m[t].join("\n");v.type="text/css",v.media=t,v.styleSheet?v.styleSheet.cssText=w:v.appendChild(c.createTextNode(w)),n.appendChild(v),g.push(v)}j.insertBefore(n,o.nextSibling)}},s=function(a,b){var c=t();if(!!c){c.open("GET",a,!0),c.onreadystatechange=function(){c.readyState==4&&(c.status==200||c.status==304)&&b(c.responseText)};if(c.readyState==4)return;c.send()}},t=function(){var a=!1,b=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new XMLHttpRequest}],c=b.length;while(c--){try{a=b[c]()}catch(d){continue}break}return function(){return a}}();m(),respond.update=m,a.addEventListener?a.addEventListener("resize",u,!1):a.attachEvent&&a.attachEvent("onresize",u)}}(this,Modernizr.mq("only all")),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
1583
+
1584
+ $(function(){
1585
+ var toggles = $('.toggle a'),
1586
+ codes = $('.code');
1587
+
1588
+ toggles.on("click", function(event){
1589
+ event.preventDefault();
1590
+ var $this = $(this);
1591
+
1592
+ if (!$this.hasClass("active")) {
1593
+ toggles.removeClass("active");
1594
+ $this.addClass("active");
1595
+ codes.hide().filter(this.hash).show();
1596
+ }
1597
+ });
1598
+ toggles.first().click();
1599
+ });