PageSourceSearch

https://sendgiftpakistan.com/blog/wp-content/themes/WCM010013/js/megnor/jquery.flexslider.js?ver=6.0.16

js sendgiftpakistan.com collected 2026-10-02 07:10:49 UTC 41,742 bytes, 886 lines download raw bytes

1/*
2 * jQuery FlexSlider v2.1
3 * http://www.woothemes.com/flexslider/
4 *
5 * Copyright 2012 WooThemes
6 * Free to use under the GPLv2 license.
7 * http://www.gnu.org/licenses/gpl-2.0.html
8 *
9 * Contributing author: Tyler Smith (@mbmufffin)
10 */
11;(function ($) {
12  //FlexSlider: Object Instance
13  $.flexslider = function(el, options) {
14    var slider = $(el),
15        vars = $.extend({}, $.flexslider.defaults, options),
16        namespace = vars.namespace,
17        touch = ("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch,
18        eventType = (touch) ? "touchend" : "click",
19        vertical = vars.direction === "vertical",
20        reverse = vars.reverse,
21        carousel = (vars.itemWidth > 0),
22        fade = vars.animation === "fade",
23        asNav = vars.asNavFor !== "",
24        methods = {};
25    
26    // Store a reference to the slider object
27    $.data(el, "flexslider", slider);
28    
29    // Privat slider methods
30    methods = {
31      init: function() {
32        slider.animating = false;
33        slider.currentSlide = vars.startAt;
34        slider.animatingTo = slider.currentSlide;
35        slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
36        slider.containerSelector = vars.selector.substr(0,vars.selector.search(' '));
37        slider.slides = $(vars.selector, slider);
38        slider.container = $(slider.containerSelector, slider);
39        slider.count = slider.slides.length;
40        // SYNC:
41        slider.syncExists = $(vars.sync).length > 0;
42        // SLIDE:
43        if (vars.animation === "slide") vars.animation = "swing";
44        slider.prop = (vertical) ? "top" : "marginLeft";
45        slider.args = {};
46        // SLIDESHOW:
47        slider.manualPause = false;
48        // TOUCH/USECSS:
49        slider.transitions = !vars.video && !fade && vars.useCSS && (function() {
50          var obj = document.createElement('div'),
51              props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
52          for (var i in props) {
53            if ( obj.style[ props[i] ] !== undefined ) {
54              slider.pfx = props[i].replace('Perspective','').toLowerCase();
55              slider.prop = "-" + slider.pfx + "-transform";
56              return true;
57            }
58          }
59          return false;
60        }());
61        // CONTROLSCONTAINER:
62        if (vars.controlsContainer !== "") slider.controlsContainer = $(vars.controlsContainer).length > 0 && $(vars.controlsContainer);
63        // MANUAL:
64        if (vars.manualControls !== "") slider.manualControls = $(vars.manualControls).length > 0 && $(vars.manualControls);
65        
66        // RANDOMIZE:
67        if (vars.randomize) {
68          slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
69          slider.container.empty().append(slider.slides);
70        }
71        
72        slider.doMath();
73        
74        // ASNAV:
75        if (asNav) methods.asNav.setup();
76        
77        // INIT
78        slider.setup("init");
79        
80        // CONTROLNAV:
81        if (vars.controlNav) methods.controlNav.setup();
82        
83        // DIRECTIONNAV:
84        if (vars.directionNav) methods.directionNav.setup();
85        
86        // KEYBOARD:
87        if (vars.keyboard && ($(slider.containerSelector).length === 1 || vars.multipleKeyboard)) {
88          $(document).bind('keyup', function(event) {
89            var keycode = event.keyCode;
90            if (!slider.animating && (keycode === 39 || keycode === 37)) {
91              var target = (keycode === 39) ? slider.getTarget('next') :
92                           (keycode === 37) ? slider.getTarget('prev') : false;
93              slider.flexAnimate(target, vars.pauseOnAction);
94            }
95          });
96        }
97        // MOUSEWHEEL:
98        if (vars.mousewheel) {
99          slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
100            event.preventDefault();
101            var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
102            slider.flexAnimate(target, vars.pauseOnAction);
103          });
104        }
105        
106        // PAUSEPLAY
107        if (vars.pausePlay) methods.pausePlay.setup();
108        
109        // SLIDSESHOW
110        if (vars.slideshow) {
111          if (vars.pauseOnHover) {
112            slider.hover(function() {
113              if (!slider.manualPlay && !slider.manualPause) slider.pause();
114            }, function() {
115              if (!slider.manualPause && !slider.manualPlay) slider.play();
116            });
117          }
118          // initialize animation
119          (vars.initDelay > 0) ? setTimeout(slider.play, vars.initDelay) : slider.play();
120        }
121        
122        // TOUCH
123        if (touch && vars.touch) methods.touch();
124        
125        // FADE&&SMOOTHHEIGHT || SLIDE:
126        if (!fade || (fade && vars.smoothHeight)) $(window).bind("resize focus", methods.resize);
127        
128        
129        // API: start() Callback
130        setTimeout(function(){
131          vars.start(slider);
132        }, 200);
133      },
134      asNav: {
135        setup: function() {
136          slider.asNav = true;
137          slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
138          slider.currentItem = slider.currentSlide;
139          slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
140          slider.slides.click(function(e){
141            e.preventDefault();
142            var $slide = $(this),
143                target = $slide.index();
144            if (!$(vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {
145              slider.direction = (slider.currentItem < target) ? "next" : "prev";
146              slider.flexAnimate(target, vars.pauseOnAction, false, true, true);
147            }
148          });
149        }
150      },
151      controlNav: {
152        setup: function() {
153          if (!slider.manualControls) {
154            methods.controlNav.setupPaging();
155          } else { // MANUALCONTROLS:
156            methods.controlNav.setupManual();
157          }
158        },
159        setupPaging: function() {
160          var type = (vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
161              j = 1,
162              item;
163          
164          slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
165          
166          if (slider.pagingCount > 1) {
167            for (var i = 0; i < slider.pagingCount; i++) {
168              item = (vars.controlNav === "thumbnails") ? '<img src="' + slider.slides.eq(i).attr("data-thumb") + '"/>' : '<a>' + j + '</a>';
169              slider.controlNavScaffold.append('<li>' + item + '</li>');
170              j++;
171            }
172          }
173          
174          // CONTROLSCONTAINER:
175          (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
176          methods.controlNav.set();
177          
178          methods.controlNav.active();
179        
180          slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
181            event.preventDefault();
182            var $this = $(this),
183                target = slider.controlNav.index($this);
184            if (!$this.hasClass(namespace + 'active')) {
185              slider.direction = (target > slider.currentSlide) ? "next" : "prev";
186              slider.flexAnimate(target, vars.pauseOnAction);
187            }
188          });
189          // Prevent iOS click event bug
190          if (touch) {
191            slider.controlNavScaffold.delegate('a', "click touchstart", function(event) {
192              event.preventDefault();
193            });
194          }
195        },
196        setupManual: function() {
197          slider.controlNav = slider.manualControls;
198          methods.controlNav.active();
199          
200          slider.controlNav.live(eventType, function(event) {
201            event.preventDefault();
202            var $this = $(this),
203                target = slider.controlNav.index($this);
204                
205            if (!$this.hasClass(namespace + 'active')) {
206              (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
207              slider.flexAnimate(target, vars.pauseOnAction);
208            }
209          });
210          // Prevent iOS click event bug
211          if (touch) {
212            slider.controlNav.live("click touchstart", function(event) {
213              event.preventDefault();
214            });
215          }
216        },
217        set: function() {
218          var selector = (vars.controlNav === "thumbnails") ? 'img' : 'a';
219          slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
220        },
221        active: function() {
222          slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
223        },
224        update: function(action, pos) {
225          if (slider.pagingCount > 1 && action === "add") {
226            slider.controlNavScaffold.append($('<li><a>' + slider.count + '</a></li>'));
227          } else if (slider.pagingCount === 1) {
228            slider.controlNavScaffold.find('li').remove();
229          } else {
230            slider.controlNav.eq(pos).closest('li').remove();
231          }
232          methods.controlNav.set();
233          (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
234        }
235      },
236      directionNav: {
237        setup: function() {
238          var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li><a class="' + namespace + 'prev" href="#">
238' + vars.prevText + '</a></li><li><a class="' + namespace + 'next" href="#">' + vars.nextText + '</a></li></ul>');
239        
240          // CONTROLSCONTAINER:
241          if (slider.controlsContainer) {
242            $(slider.controlsContainer).append(directionNavScaffold);
243            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
244          } else {
245            slider.append(directionNavScaffold);
246            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
247          }
248        
249          methods.directionNav.update();
250        
251          slider.directionNav.bind(eventType, function(event) {
252            event.preventDefault();
253            var target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
254            slider.flexAnimate(target, vars.pauseOnAction);
255          });
256          // Prevent iOS click event bug
257          if (touch) {
258            slider.directionNav.bind("click touchstart", function(event) {
259              event.preventDefault();
260            });
261          }
262        },
263        update: function() {
264          var disabledClass = namespace + 'disabled';
265          if (slider.pagingCount === 1) {
266            slider.directionNav.addClass(disabledClass);
267          } else if (!vars.animationLoop) {
268            if (slider.animatingTo === 0) {
269              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass);
270            } else if (slider.animatingTo === slider.last) {
271              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass);
272            } else {
273              slider.directionNav.removeClass(disabledClass);
274            }
275          } else {
276            slider.directionNav.removeClass(disabledClass);
277          }
278        }
279      },
280      pausePlay: {
281        setup: function() {
282          var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a></a></div>');
283        
284          // CONTROLSCONTAINER:
285          if (slider.controlsContainer) {
286            slider.controlsContainer.append(pausePlayScaffold);
287            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
288          } else {
289            slider.append(pausePlayScaffold);
290            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
291          }
292          methods.pausePlay.update((vars.slideshow) ? namespace + 'pause' : namespace + 'play');
293          slider.pausePlay.bind(eventType, function(event) {
294            event.preventDefault();
295            if ($(this).hasClass(namespace + 'pause')) {
296              slider.manualPause = true;
297              slider.manualPlay = false;
298              slider.pause();
299            } else {
300              slider.manualPause = false;
301              slider.manualPlay = true;
302              slider.play();
303            }
304          });
305          // Prevent iOS click event bug
306          if (touch) {
307            slider.pausePlay.bind("click touchstart", function(event) {
308              event.preventDefault();
309            });
310          }
311        },
312        update: function(state) {
313          (state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').text(vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').text(vars.pauseText);
314        }
315      },
316      touch: function() {
317        var startX,
318          startY,
319          offset,
320          cwidth,
321          dx,
322          startT,
323          scrolling = false;
324              
325        el.addEventListener('touchstart', onTouchStart, false);
326        function onTouchStart(e) {
327          if (slider.animating) {
328            e.preventDefault();
329          } else if (e.touches.length === 1) {
330            slider.pause();
331            // CAROUSEL: 
332            cwidth = (vertical) ? slider.h : slider. w;
333            startT = Number(new Date());
334            // CAROUSEL:
335            offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
336                     (carousel && reverse) ? slider.limit - (((slider.itemW + vars.itemMargin) * 
vendor: 4,183 bytes, lines 336-426
336slider.move) * slider.animatingTo) :
337                     (carousel && slider.currentSlide === slider.last) ? slider.limit :
338                     (carousel) ? ((slider.itemW + vars.itemMargin) * slider.move) * slider.currentSlide : 
339                     (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
340            startX = (vertical) ? e.touches[0].pageY : e.touches[0].pageX;
341            startY = (vertical) ? e.touches[0].pageX : e.touches[0].pageY;
342            el.addEventListener('touchmove', onTouchMove, false);
343            el.addEventListener('touchend', onTouchEnd, false);
344          }
345        }
346        function onTouchMove(e) {
347          dx = (vertical) ? startX - e.touches[0].pageY : startX - e.touches[0].pageX;
348          scrolling = (vertical) ? (Math.abs(dx) < Math.abs(e.touches[0].pageX - startY)) : (Math.abs(dx) < Math.abs(e.touches[0].pageY - startY));
349          
350          if (!scrolling || Number(new Date()) - startT > 500) {
351            e.preventDefault();
352            if (!fade && slider.transitions) {
353              if (!vars.animationLoop) {
354                dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
355              }
356              slider.setProps(offset + dx, "setTouch");
357            }
358          }
359        }
360        
361        function onTouchEnd(e) {
362          // finish the touch by undoing the touch session
363          el.removeEventListener('touchmove', onTouchMove, false);
364          
365          if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
366            var updateDx = (reverse) ? -dx : dx,
367                target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
368            
369            if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
370              slider.flexAnimate(target, vars.pauseOnAction);
371            } else {
372              if (!fade) slider.flexAnimate(slider.currentSlide, vars.pauseOnAction, true);
373            }
374          }
375          el.removeEventListener('touchend', onTouchEnd, false);
376          startX = null;
377          startY = null;
378          dx = null;
379          offset = null;
380        }
381      },
382      resize: function() {
383        if (!slider.animating && slider.is(':visible')) {
384          if (!carousel) slider.doMath();
385          
386          if (fade) {
387            // SMOOTH HEIGHT:
388            methods.smoothHeight();
389          } else if (carousel) { //CAROUSEL:
390            slider.slides.width(slider.computedW);
391            slider.update(slider.pagingCount);
392            slider.setProps();
393          }
394          else if (vertical) { //VERTICAL:
395            slider.viewport.height(slider.h);
396            slider.setProps(slider.h, "setTotal");
397          } else {
398            // SMOOTH HEIGHT:
399            if (vars.smoothHeight) methods.smoothHeight();
400            slider.newSlides.width(slider.computedW);
401            slider.setProps(slider.computedW, "setTotal");
402          }
403        }
404      },
405      smoothHeight: function(dur) {
406        if (!vertical || fade) {
407          var $obj = (fade) ? slider : slider.viewport;
408          (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height());
409        }
410      },
411      sync: function(action) {
412        var $obj = $(vars.sync).data("flexslider"),
413            target = slider.animatingTo;
414        
415        switch (action) {
416          case "animate": $obj.flexAnimate(target, vars.pauseOnAction, false, true); break;
417          case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
418          case "pause": $obj.pause(); break;
419        }
420      }
421    }
422    
423    // public methods
424    slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
425      if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
426      
427      if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
428        if (asNav && withSync) {
429          var master = $(vars.asNavFor).data('flexslider');
430          slider.atEnd = target === 0 || target === slider.count - 1;
431          master.flexAnimate(target, true, false, true, fromNav);
432          slider.direction = (slider.currentItem < target) ? "next" : "prev";
433          master.direction = slider.direction;
434          
435          if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
436            slider.currentItem = target;
437            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
438            target = Math.floor(target/slider.visible);
439          } else {
440            slider.currentItem = target;
441            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
442            return false;
443          }
444        }
445        
446        slider.animating = true;
447        slider.animatingTo = target;
448        // API: before() animation Callback
449        vars.before(slider);
450        
451        // SLIDESHOW:
452        if (pause) slider.pause();
453        
454        // SYNC:
455        if (slider.syncExists && !fromNav) methods.sync("animate");
456        
457        // CONTROLNAV
458        if (vars.controlNav) methods.controlNav.active();
459        
460        // !CAROUSEL:
461        // CANDIDATE: slide active class (for add/remove slide)
462        if (!carousel) slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide');
463        
464        // INFINITE LOOP:
465        // CANDIDATE: atEnd
466        slider.atEnd = target === 0 || target === slider.last;
467        
468        // DIRECTIONNAV:
469        if (vars.directionNav) methods.directionNav.update();
470        
471        if (target === slider.last) {
472          // API: end() of cycle Callback
473          vars.end(slider);
474          // SLIDESHOW && !INFINITE LOOP:
475          if (!vars.animationLoop) slider.pause();
476        }
477        
478        // SLIDE:
479        if (!fade) {
480          var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
481              margin, slideString, calcNext;
482          
483          // INFINITE LOOP / REVERSE:
484          if (carousel) {
485            margin = (vars.itemWidth > slider.w) ? vars.itemMargin * 2 : vars.itemMargin;
486            calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
487            slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
488          } else if (slider.currentSlide === 0 && target === slider.count - 1 && vars.animationLoop && slider.direction !== "next") {
489            slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
490          } else if (slider.currentSlide === slider.last && target === 0 && vars.animationLoop && slider.direction !== "prev") {
491            slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
492          } else {
493            slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
494          }
495          slider.setProps(slideString, "", vars.animationSpeed);
496          if (slider.transitions) {
497            if (!vars.animationLoop || !slider.atEnd) {
498              slider.animating = false;
499              slider.currentSlide = slider.animatingTo;
500            }
501            slider.container.unbind("webkitTransitionEnd transitionend");
502            slider.container.bind("webkitTransitionEnd transitionend", function() {
503              slider.wrapup(dimension);
504            });
505          } else {
506            slider.container.animate(slider.args, vars.animationSpeed, vars.easing, function(){
507              slider.wrapup(dimension);
508            });
509          }
510        } else { // FADE:
511          if (!touch) {
512            slider.slides.eq(slider.currentSlide).fadeOut(vars.animationSpeed, vars.easing);
513            slider.slides.eq(target).fadeIn(vars.animationSpeed, vars.easing, slider.wrapup);
514          } else {
515            slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
516            slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
517            slider.animating = false;
518            slider.currentSlide = slider.animatingTo;
519          }
520        }
521        // SMOOTH HEIGHT:
522        if (vars.smoothHeight) methods.smoothHeight(vars.animationSpeed);
523      }
524    } 
525    slider.wrapup = function(dimension) {
526      // SLIDE:
527      if (!fade && !carousel) {
528        if (slider.currentSlide === 0 && slider.animatingTo === slider.last && vars.animationLoop) {
529          slider.setProps(dimension, "jumpEnd");
530        } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && vars.animationLoop) {
531          slider.setProps(dimension, "jumpStart");
532        }
533      }
534      slider.animating = false;
535      slider.currentSlide = slider.animatingTo;
536      // API: after() animation Callback
537      vars.after(slider);
538    }
539    
540    // SLIDESHOW:
541    slider.animateSlides = function() {
542      if (!slider.animating) slider.flexAnimate(slider.getTarget("next"));
543    }
544    // SLIDESHOW:
545    slider.pause = function() {
546      clearInterval(slider.animatedSlides);
547      slider.playing = false;
548      // PAUSEPLAY:
549      if (vars.pausePlay) methods.pausePlay.update("play");
550      // SYNC:
551      if (slider.syncExists) methods.sync("pause");
552    }
553    // SLIDESHOW:
554    slider.play = function() {
555      slider.animatedSlides = setInterval(slider.animateSlides, vars.slideshowSpeed);
556      slider.playing = true;
557      // PAUSEPLAY:
558      if (vars.pausePlay) methods.pausePlay.update("pause");
559      // SYNC:
560      if (slider.syncExists) methods.sync("play");
561    }
vendor: 6,602 bytes, lines 562-694
562    slider.canAdvance = function(target, fromNav) {
563      // ASNAV:
564      var last = (asNav) ? slider.pagingCount - 1 : slider.last;
565      return (fromNav) ? true :
566             (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
567             (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
568             (target === slider.currentSlide && !asNav) ? false :
569             (vars.animationLoop) ? true :
570             (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
571             (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
572             true;
573    }
574    slider.getTarget = function(dir) {
575      slider.direction = dir; 
576      if (dir === "next") {
577        return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
578      } else {
579        return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
580      }
581    }
582    
583    // SLIDE:
584    slider.setProps = function(pos, special, dur) {
585      var target = (function() {
586        var posCheck = (pos) ? pos : ((slider.itemW + vars.itemMargin) * slider.move) * slider.animatingTo,
587            posCalc = (function() {
588              if (carousel) {
589                return (special === "setTouch") ? pos :
590                       (reverse && slider.animatingTo === slider.last) ? 0 :
591                       (reverse) ? slider.limit - (((slider.itemW + vars.itemMargin) * slider.move) * slider.animatingTo) :
592                       (slider.animatingTo === slider.last) ? slider.limit : posCheck;
593              } else {
594                switch (special) {
595                  case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
596                  case "setTouch": return (reverse) ? pos : pos;
597                  case "jumpEnd": return (reverse) ? pos : slider.count * pos;
598                  case "jumpStart": return (reverse) ? slider.count * pos : pos;
599                  default: return pos;
600                }
601              }
602            }());
603            return (posCalc * -1) + "px";
604          }());
605      if (slider.transitions) {
606        target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
607        dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
608        slider.container.css("-" + slider.pfx + "-transition-duration", dur);
609      }
610      
611      slider.args[slider.prop] = target;
612      if (slider.transitions || dur === undefined) slider.container.css(slider.args);
613    }
614    
615    slider.setup = function(type) {
616      // SLIDE:
617      if (!fade) {
618        var sliderOffset, arr;
619            
620        if (type === "init") {
621          slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
622          // INFINITE LOOP:
623          slider.cloneCount = 0;
624          slider.cloneOffset = 0;
625          // REVERSE:
626          if (reverse) {
627            arr = $.makeArray(slider.slides).reverse();
628            slider.slides = $(arr);
629            slider.container.empty().append(slider.slides);
630          }
631        }
632        // INFINITE LOOP && !CAROUSEL:
633        if (vars.animationLoop && !carousel) {
634          slider.cloneCount = 2;
635          slider.cloneOffset = 1;
636          // clear out old clones
637          if (type !== "init") slider.container.find('.clone').remove();
638          slider.container.append(slider.slides.first().clone().addClass('clone')).prepend(slider.slides.last().clone().addClass('clone'));
639        }
640        slider.newSlides = $(vars.selector, slider);
641        
642        sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
643        // VERTICAL:
644        if (vertical && !carousel) {
645          slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
646          setTimeout(function(){
647            slider.newSlides.css({"display": "block"});
648            slider.doMath();
649            slider.viewport.height(slider.h);
650            slider.setProps(sliderOffset * slider.h, "init");
651          }, (type === "init") ? 100 : 0);
652        } else {
653          slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
654          slider.setProps(sliderOffset * slider.computedW, "init");
655          setTimeout(function(){
656            slider.doMath();
657            slider.newSlides.css({"width": slider.computedW, "float": "left", "display": "block"});
658            // SMOOTH HEIGHT:
659            if (vars.smoothHeight) methods.smoothHeight();
660          }, (type === "init") ? 100 : 0);
661        }
662      } else { // FADE: 
663        slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
664        if (type === "init") {
665          if (!touch) {
666            slider.slides.eq(slider.currentSlide).fadeIn(vars.animationSpeed, vars.easing);
667          } else {
668            slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2});
669          }
670        }
671        // SMOOTH HEIGHT:
672        if (vars.smoothHeight) methods.smoothHeight();
673      }
674      // !CAROUSEL:
675      // CANDIDATE: active slide
676      if (!carousel) slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide");
677    }
678    
679    slider.doMath = function() {
680      var slide = slider.slides.first(),
681          slideMargin = vars.itemMargin,
682          minItems = vars.minItems,
683          maxItems = vars.maxItems;
684      
685      slider.w = slider.width();
686      slider.h = slide.height();
687      slider.boxPadding = slide.outerWidth() - slide.width();
688      // CAROUSEL:
689      if (carousel) {
690        slider.itemT = vars.itemWidth + slideMargin;
691        slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
692        slider.maxW = (maxItems) ? maxItems * slider.itemT : slider.w;
693        slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * minItems))/minItems :
694                       (slider.maxW < slider.w) ? (slider.w - (slideMargin * maxItems))
694/maxItems :
695                       (vars.itemWidth > slider.w) ? slider.w : vars.itemWidth;
696        slider.visible = Math.floor(slider.w/(slider.itemW + slideMargin));
697        slider.move = (vars.move > 0 && vars.move < slider.visible ) ? vars.move : slider.visible;
698        slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
699        slider.last =  slider.pagingCount - 1;
700        slider.limit = (slider.pagingCount === 1) ? 0 :
701                       (vars.itemWidth > slider.w) ? ((slider.itemW + (slideMargin * 2)) * slider.count) - slider.w - slideMargin : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
702      } else {
703        slider.itemW = slider.w;
704        slider.pagingCount = slider.count;
705        slider.last = slider.count - 1;
706      }
707      slider.computedW = slider.itemW - slider.boxPadding;
708    }
709    
710    slider.update = function(pos, action) {
711      slider.doMath();
712      
713      // update currentSlide and slider.animatingTo if necessary
714      if (!carousel) {
715        if (pos < slider.currentSlide) {
716          slider.currentSlide += 1;
717        } else if (pos <= slider.currentSlide && pos !== 0) {
718          slider.currentSlide -= 1;
719        }
720        slider.animatingTo = slider.currentSlide;
721      }
722      
723      // update controlNav
724      if (vars.controlNav && !slider.manualControls) {
725        if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
726          methods.controlNav.update("add");
727        } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
728          if (carousel && slider.currentSlide > slider.last) {
729            slider.currentSlide -= 1;
730            slider.animatingTo -= 1;
731          }
732          methods.controlNav.update("remove", slider.last);
733        }
734      }
735      // update directionNav
736      if (vars.directionNav) methods.directionNav.update();
737      
738    }
739    
740    slider.addSlide = function(obj, pos) {
741      var $obj = $(obj);
742      
743      slider.count += 1;
744      slider.last = slider.count - 1;
745      
746      // append new slide
747      if (vertical && reverse) {
748        (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
749      } else {
750        (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
751      }
752      
753      // update currentSlide, animatingTo, controlNav, and directionNav
754      slider.update(pos, "add");
755      
756      // update slider.slides
757      slider.slides = $(vars.selector + ':not(.clone)', slider);
758      // re-setup the slider to accomdate new slide
759      slider.setup();
760      
761      //FlexSlider: added() Callback
762      vars.added(slider);
763    }
764    slider.removeSlide = function(obj) {
765      var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
vendor: 7,864 bytes, lines 766-886
766      
767      // update count
768      slider.count -= 1;
769      slider.last = slider.count - 1;
770      
771      // remove slide
772      if (isNaN(obj)) {
773        $(obj, slider.slides).remove();
774      } else {
775        (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
776      }
777      
778      // update currentSlide, animatingTo, controlNav, and directionNav
779      slider.doMath();
780      slider.update(pos, "remove");
781      
782      // update slider.slides
783      slider.slides = $(vars.selector + ':not(.clone)', slider);
784      // re-setup the slider to accomdate new slide
785      slider.setup();
786      
787      // FlexSlider: removed() Callback
788      vars.removed(slider);
789    }
790    
791    //FlexSlider: Initialize
792    methods.init();
793  }
794  
795  //FlexSlider: Default Settings
796  $.flexslider.defaults = {
797    namespace: "flex-",             //{NEW} String: Prefix string attached to the class of every element generated by the plugin
798    selector: ".slides > li",       //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
799    animation: "fade",              //String: Select your animation type, "fade" or "slide"
800    easing: "swing",               //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
801    direction: "horizontal",        //String: Select the sliding direction, "horizontal" or "vertical"
802    reverse: false,                 //{NEW} Boolean: Reverse the animation direction
803    animationLoop: true,             //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
804    smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode  
805    startAt: 0,                     //Integer: The slide that the slider should start on. Array notation (0 = first slide)
806    slideshow: true,                //Boolean: Animate slider automatically
807    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds
808    animationSpeed: 600,            //Integer: Set the speed of animations, in milliseconds
809    initDelay: 0,                   //{NEW} Integer: Set an initialization delay, in milliseconds
810    randomize: false,               //Boolean: Randomize slide order
811    
812    // Usability features
813    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
814    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
815    useCSS: true,                   //{NEW} Boolean: Slider will use CSS3 transitions if available
816    touch: true,                    //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
817    video: false,                   //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
818    
819    // Primary Controls
820    controlNav: true,               //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage
821    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
822    prevText: "Previous",           //String: Set the text for the "previous" directionNav item
823    nextText: "Next",               //String: Set the text for the "next" directionNav item
824    
825    // Secondary Navigation
826    keyboard: true,                 //Boolean: Allow slider navigating via keyboard left/right keys
827    multipleKeyboard: false,        //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
828    mousewheel: false,              //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
829    pausePlay: false,               //Boolean: Create pause/play dynamic element
830    pauseText: "Pause",             //String: Set the text for the "pause" pausePlay item
831    playText: "Play",               //String: Set the text for the "play" pausePlay item
832    
833    // Special properties
834    controlsContainer: "",          //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
835    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.
836    sync: "",                       //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
837    asNavFor: "",                   //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
838    
839    // Carousel Options
840    itemWidth: 0,                   //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
841    itemMargin: 0,                  //{NEW} Integer: Margin between carousel items.
842    minItems: 0,                    //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
843    maxItems: 0,                    //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
844    move: 0,                        //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
845                                    
846    // Callback API
847    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide
848    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation
849    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes
850    end: function(){},              //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
851    added: function(){},            //{NEW} Callback: function(slider) - Fires after a slide is added
852    removed: function(){}           //{NEW} Callback: function(slider) - Fires after a slide is removed
853  }
854  //FlexSlider: Plugin Function
855  $.fn.flexslider = function(options) {
856    if (options === undefined) options = {};
857    
858    if (typeof options === "object") {
859      return this.each(function() {
860        var $this = $(this),
861            selector = (options.selector) ? options.selector : ".slides > li",
862            $slides = $this.find(selector);
863        if ($slides.length === 1) {
864          $slides.fadeIn(400);
865          if (options.start) options.start($this);
866        } else if ($this.data('flexslider') === undefined) {
867          new $.flexslider(this, options);
868        }
869      });
870    } else {
871      // Helper strings to quickly perform functions on the slider
872      var $slider = $(this).data('flexslider');
873      switch (options) {
874        case "play": $slider.play(); break;
875        case "pause": $slider.pause(); break;
876        case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
877        case "prev":
878        case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
879        default: if (typeof options === "number") $slider.flexAnimate(options, true);
880      }
881    }
882  }  
883})(jQuery);
884jQuery(function(){
885	jQuery('.flexslider').flexslider();
886});

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.