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.