PageSourceSearch

https://rasptut.co.uk/rw_common/themes/kuler_react/jquery/flexslider/jquery.flexslider.js

js rasptut.co.uk collected 2026-10-04 14:13:06 UTC 27,649 bytes, 594 lines download raw bytes

1/*
2 * jQuery FlexSlider v1.8
3 * http://flex.madebymufffin.com
4 *
5 * Copyright 2011, Tyler Smith
6 * Free to use under the MIT license.
7 * http://www.opensource.org/licenses/mit-license.php
8 *
9 * Contrib: Darin Richardson
10 */
11 jQuery(document).ready(function($){
12 	var $ = jQuery;
13 	function addShelf() {
14 		$('<div class="kulerSlides sixteen"></div>').insertBefore('#extraContainer3');
15 	}
16 	
17 	$(document).ready(function() {
18 		addShelf();
19 	});
20 	$(".flex-container").prependTo(".kulerSlides");
21 });
22
23;(function ($) {
24  
25  //FlexSlider: Object Instance
26  $.flexslider = function(el, options) {
27    var slider = el;
28
29    slider.init = function() {
30      slider.vars = $.extend({}, $.flexslider.defaults, options);
31      slider.data('flexslider', true);
32      slider.container = $('.slides', slider);
33      slider.slides = $('.slides > li', slider);
34      slider.count = slider.slides.length;
35      slider.animating = false;
36      slider.currentSlide = slider.vars.slideToStart;
37      slider.animatingTo = slider.currentSlide;
38      slider.atEnd = (slider.currentSlide == 0) ? true : false;
39      slider.eventType = ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click';
40      slider.cloneCount = 0;
41      slider.cloneOffset = 0;
42      slider.manualPause = false;
43      slider.vertical = (slider.vars.slideDirection == "vertical");
44      slider.prop = (slider.vertical) ? "top" : "marginLeft";
45      slider.args = {};
46      
47      //Test for webbkit CSS3 Animations
48      if( slider.hasClass('flex-video-slider') ){	//SevenSpark Customization to avoid Video problems with transforms
49      	slider.transitions = "webkitTransition" in document.body.style;
50      	if (slider.transitions) slider.prop = "-webkit-transform";
51      }
52      
53      //Test for controlsContainer
54      if (slider.vars.controlsContainer != "") {
55        slider.controlsContainer = $(slider.vars.controlsContainer).eq($('.slides').index(slider.container));
56        slider.containerExists = slider.controlsContainer.length > 0;
57      }
58      //Test for manualControls
59      if (slider.vars.manualControls != "") {
60        slider.manualControls = $(slider.vars.manualControls, ((slider.containerExists) ? slider.controlsContainer : slider));
61        slider.manualExists = slider.manualControls.length > 0;
62      }
63      
64      ///////////////////////////////////////////////////////////////////
65      // FlexSlider: Randomize Slides
66      if (slider.vars.randomize) {
67        slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
68        slider.container.empty().append(slider.slides);
69      }
70      ///////////////////////////////////////////////////////////////////
71      
72      ///////////////////////////////////////////////////////////////////
73      // FlexSlider: Slider Animation Initialize
74      if (slider.vars.animation.toLowerCase() == "slide") {
75        if (slider.transitions) {
76          slider.setTransition(0);
77        }
78        slider.css({"overflow": "hidden"});
79        if (slider.vars.animationLoop) {
80          slider.cloneCount = 2;
81          slider.cloneOffset = 1;
82          slider.container.append(slider.slides.filter(':first').clone().addClass('clone')).prepend(slider.slides.filter(':last').clone().addClass('clone'));
83        }
84        //create newSlides to capture possible clones
85        slider.newSlides = $('.slides > li', slider);
86        var sliderOffset = (-1 * (slider.currentSlide + slider.cloneOffset));
87        if (slider.vertical) {
88          slider.newSlides.css({"display": "block", "width": "100%", "float": "left"});
89          slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
90          //Timeout function to give browser enough time to get proper height initially
91          setTimeout(function() {
92            slider.css({"position": "relative"}).height(slider.slides.filter(':first').height());
93            slider.args[slider.prop] = (slider.transitions) ? "translate3d(0," + sliderOffset * slider.height() + "px,0)" : sliderOffset * slider.height() + "px";
94            slider.container.css(slider.args);
95          }, 100);
96
97        } else {
98          slider.args[slider.prop] = (slider.transitions) ? "translate3d(" + sliderOffset * slider.width() + "px,0,0)" : sliderOffset * slider.width() + "px";
99          slider.container.width((slider.count + slider.cloneCount) * 200 + "%").css(slider.args);
100          //Timeout function to give browser enough time to get proper width initially
101          setTimeout(function() {
102            slider.newSlides.width(slider.width()).css({"float": "left", "display": "block"});
103          }, 100);
104        }
105        
106      } else { //Default to fade
107        //Not supporting fade CSS3 transitions right now
108        slider.transitions = false;
109        slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%"}).eq(slider.currentSlide).fadeIn(slider.vars.animationDuration); 
110      }
111      ///////////////////////////////////////////////////////////////////
112      
113      ///////////////////////////////////////////////////////////////////
114      // FlexSlider: Control Nav
115      if (slider.vars.controlNav) {
116        if (slider.manualExists) {
117          slider.controlNav = slider.manualControls;
118        } else {
119          var controlNavScaffold = $('<ol class="flex-control-nav"></ol>');
120          var j = 1;
121          for (var i = 0; i < slider.count; i++) {
122            controlNavScaffold.append('<li><a>' + j + '</a></li>');
123            j++;
124          }
125
126          if (slider.containerExists) {
127            $(slider.controlsContainer).append(controlNavScaffold);
128            slider.controlNav = $('.flex-control-nav li a', slider.controlsContainer);
129          } else {
130            slider.append(controlNavScaffold);
131            slider.controlNav = $('.flex-control-nav li a', slider);
132          }
133        }
134
135        slider.controlNav.eq(slider.currentSlide).addClass('active');
136
137        slider.controlNav.bind(slider.eventType, function(event) {
138          event.preventDefault();
139          if (!$(this).hasClass('active')) {
140            (slider.controlNav.index($(this)) > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
141            slider.flexAnimate(slider.controlNav.index($(this)), slider.vars.pauseOnAction);
142          }
143        });
144      }
145      ///////////////////////////////////////////////////////////////////
146      
147      //////////////////////////////////////////////////////////////////
148      //FlexSlider: Direction Nav
149      if (slider.vars.directionNav) {
150        var directionNavScaffold = $('<ul class="flex-direction-nav"><li><a class="prev" href="#">' + slider.vars.prevText + '</a></li><li><a class="next" href="#">' + slider.vars.nextText + '</a></li></ul>');
151        
152        if (slider.containerExists) {
153          $(slider.controlsContainer).append(directionNavScaffold);
154          slider.directionNav = $('.flex-direction-nav li a', slider.controlsContainer);
155        } else {
156          slider.append(directionNavScaffold);
157          slider.directionNav = $('.flex-direction-nav li a', slider);
158        }
159        
160        //Set initial disable styles if necessary
161        if (!slider.vars.animationLoop) {
162          if (slider.currentSlide == 0) {
163            slider.directionNav.filter('.prev').addClass('disabled');
164          } else if (slider.currentSlide == slider.count - 1) {
165            slider.directionNav.filter('.next').addClass('disabled');
166          }
167        }
168        
169        slider.directionNav.bind(slider.eventType, function(event) {
170          event.preventDefault();
171          var target = ($(this).hasClass('next')) ? slider.getTarget('next') : slider.getTarget('prev');
172          
173          if (slider.canAdvance(target)) {
174            slider.flexAnimate(target, slider.vars.pauseOnAction);
175          }
176        });
177      }
178      //////////////////////////////////////////////////////////////////
179      
180      //////////////////////////////////////////////////////////////////
181      //FlexSlider: Keyboard Nav
182      if (slider.vars.keyboardNav && $('ul.slides').length == 1) {
183        function keyboardMove(event) {
184          if (slider.animating) {
185            return;
186          } else if (event.keyCode != 39 && event.keyCode != 37){
187            return;
188          } else {
189            if (event.keyCode == 39) {
190              var target = slider.getTarget('next');
191            } else if (event.keyCode == 37){
192              var target = slider.getTarget('prev');
193            }
194        
195            if (slider.canAdvance(target)) {
196              slider.flexAnimate(target, slider.vars.pauseOnAction);
197            }
198          }
199        }
200        $(document).bind('keyup', keyboardMove);
201      }
202      //////////////////////////////////////////////////////////////////
203      
204      ///////////////////////////////////////////////////////////////////
205      // FlexSlider: Mousewheel interaction
206      if (slider.vars.mousewheel) {
207        slider.mousewheelEvent = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel";
208        slider.bind(slider.mousewheelEvent, function(e) {
209          e.preventDefault();
210          e = e ? e : window.event;
211          var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40,
212              target = (wheelData < 0) ? slider.getTarget('next') : slider.getTarget('prev');
213          
214          if (slider.canAdvance(target)) {
215            slider.flexAnimate(target, slider.vars.pauseOnAction);
216          }
217        });
218      }
219      ///////////////////////////////////////////////////////////////////
220      
221      //////////////////////////////////////////////////////////////////
222      //FlexSlider: Slideshow Setup
223      if (slider.vars.slideshow) {
224        //pauseOnHover
225        if (slider.vars.pauseOnHover && slider.vars.slideshow) {
226          slider.hover(function() {
227            slider.pause();
228          }, function() {
229            if (!slider.manualPause) {
230              slider.resume();
231            }
232          });
233        }
234
235        //Initialize animation
236        slider.animatedSlides = setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
237      }
238      //////////////////////////////////////////////////////////////////
239      
240      //////////////////////////////////////////////////////////////////
241      //FlexSlider: Pause/Play
242      if (slider.vars.pausePlay) {
243        var pausePlayScaffold = $('<div class="flex-pauseplay"><span></span></div>');
244      
245        if (slider.containerExists) {
246          slider.controlsContainer.append(pausePlayScaffold);
247          slider.pausePlay = $('.flex-pauseplay span', slider.controlsContainer);
248        } else {
249          slider.append(pausePlayScaffold);
250          slider.pausePlay = $('.flex-pauseplay span', slider);
251        }
252        
253        var pausePlayState = (slider.vars.slideshow) ? 'pause' : 'play';
254        slider.pausePlay.addClass(pausePlayState).text((pausePlayState == 'pause') ? slider.vars.pauseText : slider.vars.playText);
255        
256        slider.pausePlay.bind(slider.eventType, function(event) {
257          event.preventDefault();
258          if ($(this).hasClass('pause')) {
259            slider.pause();
260            slider.manualPause = true;
261          } else {
262            slider.resume();
263            slider.manualPause = false;
264          }
265        });
266      }
267      //////////////////////////////////////////////////////////////////
268      
269      //////////////////////////////////////////////////////////////////
270      //FlexSlider:Touch Swip Gestures
271      //Some brilliant concepts adapted from the following sources
272      //Source: TouchSwipe - http://www.netcu.de/jquery-touchwipe-iphone-ipad-library
273      //Source: SwipeJS - http://swipejs.com
274      if ('ontouchstart' in document.documentElement) {
275        //For brevity, variables are named for x-axis scrolling
276        //The variables are then swapped if vertical sliding is applied
277        //This reduces redundant code...I think :)
278        //If debugging, recognize variables are named for horizontal scrolling
279        var startX,
280          startY,
281          offset,
282          cwidth,
283          dx,
284          startT,
285          scrolling = false;
286              
287        slider.each(function() {
288          if ('ontouchstart' in document.documentElement) {
289            this.addEventListener('touchstart', onTouchStart, false);
290          }
291        });
292        
293        function onTouchStart(e) {
294          if (slider.animating) {
295            e.preventDefault();
296          } else if (e.touches.length == 1) {
297            slider.pause();
298            cwidth = (slider.vertical) ? slider.height() : slider.width();
299            startT = Number(new Date());
300            offset = (slider.vertical) ? (slider.currentSlide + slider.cloneOffset) * slider.height() : (slider.currentSlide + slider.cloneOffset) * slider.width();
301            startX = (slider.vertical) ? e.touches[0].pageY : e.touches[0].pageX;
302            startY = (slider.vertical) ? e.touches[0].pageX : e.touches[0].pageY;
303            slider.setTransition(0);
304
305            this.addEventListener('touchmove', onTouchMove, false);
306            this.addEventListener('touchend', onTouchEnd, false);
307          }
308        }
309
310        function onTouchMove(e) {
311          dx = (slider.vertical) ? startX - e.touches[0].pageY : startX - e.touches[0].pageX;
312          scrolling = (slider.vertical) ? (Math.abs(dx) < Math.abs(e.touches[0].pageX - startY)) : (Math.abs(dx) < Math.abs(e.touches[0].pageY - startY));
313
314          if (!scrolling) {
315            e.preventDefault();
316            if (slider.vars.animation == "slide" && slider.transitions) {
317              if (!slider.vars.animationLoop) {
318                dx = dx/((slider.currentSlide == 0 && dx < 0 || slider.currentSlide == slider.count - 1 && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
319              }
320              slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + (-offset - dx) + "px,0)": "translate3d(" + (-offset - dx) + "px,0,0)";
321              slider.container.css(slider.args);
322            }
323          }
324        }
325        
326        function onTouchEnd(e) {
327          slider.animating = false;
328          if (slider.animatingTo == slider.currentSlide && !scrolling && !(dx == null)) {
329            var target = (dx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
330            if (slider.canAdvance(target) && Number(new Date()) - startT < 550 && Math.abs(dx) > 20 || Math.abs(dx) > cwidth/2) {
331              slider.flexAnimate(target, slider.vars.pauseOnAction);
332            } else {
333              slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction);
334            }
335          }
336          
337          //Finish the touch by undoing the touch session
338          this.removeEventListener('touchmove', onTouchMove, false);
339          this.removeEventListener('touchend', onTouchEnd, false);
340          startX = null;
341          startY = null;
342          dx = null;
343          offset = null;
344        }
345      }
346      //////////////////////////////////////////////////////////////////
347      
348      //////////////////////////////////////////////////////////////////
349      //FlexSlider: Resize Functions (If necessary)
350      if (slider.vars.animation.toLowerCase() == "slide") {
351        $(window).resize(function(){
352          if (!slider.animating) {
353            if (slider.vertical) {
354              slider.height(slider.slides.filter(':first').height());
355              slider.args[slider.prop] = (-1 * (slider.currentSlide + slider.cloneOffset))* slider.slides.filter(':first').height() + "px";
356              if (slider.transitions) {
357                slider.setTransition(0);
358                slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + slider.args[slider.prop] + ",0)" : "translate3d(" + slider.args[slider.prop] + ",0,0)";
359              }
360              slider.container.css(slider.args);
361            } else {
362              slider.newSlides.width(slider.width());
363              slider.args[slider.prop] = (-1 * (slider.currentSlide + slider.cloneOffset))* slider.width() + "px";
364              if (slider.transitions) {
365                slider.setTransition(0);
366                slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + slider.args[slider.prop] + ",0)" : "translate3d(" + slider.args[slider.prop] + ",0,0)";
367              }
368              slider.container.css(slider.args);
369            }
370          }
371        });
372      }
373      //////////////////////////////////////////////////////////////////
374      
375      //////////////////////////////////////////////////////////////////
376      //FlexSlider: Destroy the slider entity
377      //Destory is not included in the minified version right now, but this is a working function for anyone who wants to include it.
378      //Simply bind the actions you need from this function into a function in the start() callback to the event of your chosing
379      /*
380      slider.destroy = function() {
381        slider.pause();
382        if (slider.controlNav && slider.vars.manualControls == "") slider.controlNav.closest('.flex-control-nav').remove();
383        if (slider.directionNav) slider.directionNav.closest('.flex-direction-nav').remove();
384        if (slider.vars.pausePlay) slider.pausePlay.closest('.flex-pauseplay').remove();
385        if (slider.vars.keyboardNav && $('ul.slides').length == 1) $(document).unbind('keyup', keyboardMove);
386        if (slider.vars.mousewheel) slider.unbind(slider.mousewheelEvent);
387        if (slider.transitions) slider.each(function(){this.removeEventListener('touchstart', onTouchStart, false);});
388        if (slider.vars.animation == "slide" && slider.vars.animationLoop) slider.newSlides.filter('.clone').remove();
389        if (slider.vertical) slider.height("auto");
390        slider.slides.hide();
391        slider.removeData('flexslider');
392      }
393      */
394      //////////////////////////////////////////////////////////////////
395      
396      //FlexSlider: start() Callback
397      slider.vars.start(slider);
398    }
399    
400    //FlexSlider: Animation Actions
401    slider.flexAnimate = function(target, pause) {
402      if (!slider.animating) {
403        //Animating flag
404        slider.animating = true;
405        
406        //FlexSlider: before() animation Callback
407        slider.animatingTo = target;
408        slider.vars.before(slider);
409        
410        //Optional paramter to pause slider when making an anmiation call
411        if (pause) {
412          slider.pause();
413        }
414        
415        //Update controlNav   
416        if (slider.vars.controlNav) {
417          slider.controlNav.removeClass('active').eq(target).addClass('active');
418        }
419        
420        //Is the slider at either end
421        slider.atEnd = (target == 0 || target == slider.count - 1) ? true : false;
422        if (!slider.vars.animationLoop && slider.vars.directionNav) {
423          if (target == 0) {
424            slider.directionNav.removeClass('disabled').filter('.prev').addClass('disabled');
425          } else if (target == slider.count - 1) {
426            slider.directionNav.removeClass('disabled').filter('.next').addClass('disabled');
427          } else {
428            slider.directionNav.removeClass('disabled');
429          }
430        }
431        
432        if (!slider.vars.animationLoop && target == slider.count - 1) {
433          slider.pause();
434          //FlexSlider: end() of cycle Callback
435          slider.vars.end(slider);
436        }
437        
438        if (slider.vars.animation.toLowerCase() == "slide") {
439          var dimension = (slider.vertical) ? slider.slides.filter(':first').height() : slider.slides.filter(':first').width();
440          
441          if (slider.currentSlide == 0 && target == slider.count - 1 && slider.vars.animationLoop && slider.direction != "next") {
442            slider.slideString = "0px";
443          } else if (slider.currentSlide == slider.count - 1 && target == 0 && slider.vars.animationLoop && slider.direction != "prev") {
444            slider.slideString = (-1 * (slider.count + 1)) * dimension + "px";
445          } else {
446            slider.slideString = (-1 * (target + slider.cloneOffset)) * dimension + "px";
447          }
448          slider.args[slider.prop] = slider.slideString;
449
450          if (slider.transitions) {
451              slider.setTransition(slider.vars.animationDuration); 
452              slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + slider.slideString + ",0)" : "translate3d(" + slider.slideString + ",0,0)";
453              slider.container.css(slider.args).one("webkitTransitionEnd transitionend", function(){
454                slider.wrapup(dimension);
455              });   
456          } else {
457            slider.container.animate(slider.args, slider.vars.animationDuration, function(){
458              slider.wrapup(dimension);
459            });
460          }
461        } else { //Default to Fade
462          slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationDuration);
463          slider.slides.eq(target).fadeIn(slider.vars.animationDuration, function() {
464            slider.wrapup();
465          });
466        }
467      }
468    }
469    
470    //FlexSlider: Function to minify redundant animation actions
471    slider.wrapup = function(dimension) {
472      if (slider.vars.animation == "slide") {
473        //Jump the slider if necessary
474        if (slider.currentSlide == 0 && slider.animatingTo == slider.count - 1 && slider.vars.animationLoop) {
475          slider.args[slider.prop] = (-1 * slider.count) * dimension + "px";
476          if (slider.transitions) {
477            slider.setTransition(0);
478            slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + slider.args[slider.prop] + ",0)" : "translate3d(" + slider.args[slider.prop] + ",0,0)";
479          }
480          slider.container.css(slider.args);
481        } else if (slider.currentSlide == slider.count - 1 && slider.animatingTo == 0 && slider.vars.animationLoop) {
482          slider.args[slider.prop] = -1 * dimension + "px";
483          if (slider.transitions) {
484            slider.setTransition(0);
485            slider.args[slider.prop] = (slider.vertical) ? "translate3d(0," + slider.args[slider.prop] + ",0)" : "translate3d(" + slider.args[slider.prop] + ",0,0)";
486          }
487          slider.container.css(slider.args);
488        }
489      }
490      slider.animating = false;
491      slider.currentSlide = slider.animatingTo;
492      //FlexSlider: after() animation Callback
493      slider.vars.after(slider);
494    }
495    
496    //FlexSlider: Automatic Slideshow
497    slider.animateSlides = function() {
498      if (!slider.animating) {
499        slider.flexAnimate(slider.getTarget("next"));
500      }
501    }
502    
503    //FlexSlider: Automatic Slideshow Pause
504    slider.pause = function() {
505      clearInterval(slider.animatedSlides);
506      if (slider.vars.pausePlay) {
507        slider.pausePlay.removeClass('pause').addClass('play').text(slider.vars.playText);
508      }
509    }
510    
511    //FlexSlider: Automatic Slideshow Start/Resume
512    slider.resume = function() {
513      slider.animatedSlides = setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
514      if (slider.vars.pausePlay) {
515        slider.pausePlay.removeClass('play').addClass('pause').text(slider.vars.pauseText);
516      }
517    }
518    
519    //FlexSlider: Helper function for non-looping sliders
520    slider.canAdvance = function(target) {
521      if (!slider.vars.animationLoop && slider.atEnd) {
522        if (slider.currentSlide == 0 && target == slider.count - 1 && slider.direction != "next") {
523          return false;
524        } else if (slider.currentSlide == slider.count - 1 && target == 0 && slider.direction == "next") {
525          return false;
526        } else {
527          return true;
528        }
529      } else {
530        return true;
531      }  
532    }
533    
534    //FlexSlider: Helper function to determine animation target
535    slider.getTarget = function(dir) {
536      slider.direction = dir;
537      if (dir == "next") {
538        return (slider.currentSlide == slider.count - 1) ? 0 : slider.currentSlide + 1;
539      } else {
540        return (slider.currentSlide == 0) ? slider.count - 1 : slider.currentSlide - 1;
541      }
542    }
543    
544    //FlexSlider: Helper function to set CSS3 transitions
545    slider.setTransition = function(dur) {
546      slider.container.css({'-webkit-transition-duration': (dur/1000) + "s"});
547    }
548
549    //FlexSlider: Initialize
550    slider.init();
551  }
552  
553  //FlexSlider: Default Settings
554  $.flexslider.defaults = {
555    animation: "fade",              //String: Select your animation type, "fade" or "slide"
556    slideDirection: "horizontal",   //String: Select the sliding direction, "horizontal" or "vertical"
557    slideshow: true,                //Boolean: Animate slider automatically
558    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds
559    animationDuration: 600,         //Integer: Set the speed of animations, in milliseconds
560    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
561    controlNav: true,               //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage
562    keyboardNav: true,              //Boolean: Allow slider navigating via keyboard left/right keys
563    mousewheel: false,              //Boolean: Allow slider navigating via mousewheel
564    prevText: "Previous",           //String: Set the text for the "previous" directionNav item
565    nextText: "Next",               //String: Set the text for the "next" directionNav item
566    pausePlay: false,               //Boolean: Create pause/play dynamic element
567    pauseText: 'Pause',             //String: Set the text for the "pause" pausePlay item
568    playText: 'Play',               //String: Set the text for the "play" pausePlay item
569    randomize: false,               //Boolean: Randomize slide order
570    slideToStart: 0,                //Integer: The slide that the slider should start on. Array notation (0 = first slide)
571    animationLoop: true,            //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
572    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
573    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
574    controlsContainer: "",          //Selector: Declare which container the navigation elements should be appended too. Default container is the flexSlider element. Example use would be ".flexslider-container", "#container", etc. If the given element is not found, the default action will be taken.
575    manualControls: "",             //Selector: Declare custom control navigation. Example 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.
576    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide
577    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation
578    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes
579    end: function(){}               //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
580  }
581  
582  //FlexSlider: Plugin Function
583  $.fn.flexslider = function(options) {
584    return this.each(function() {
585      if ($(this).find('.slides li').length == 1) {
586        $(this).find('.slides li').fadeIn(400);
587      }
588      else if ($(this).data('flexslider') != true) {
589        new $.flexslider($(this), options);
590      }
591    });
592  }  
593
594})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.