Letlabo Nature Reserve
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

jquery.flexslider.js 26KB

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