1/* 2 * jQuery FlexSlider v2.2.0 3 * Copyright 2012 WooThemes 4 * Contributing Author: Tyler Smith 5 */ 6(function(e) { 7 e.flexslider = function(t, n) { 8 var r = e(t); 9 r.vars = e.extend({}, e.flexslider.defaults, n); 10 var i = r.vars.namespace, s = window.navigator && window.navigator.msPointerEnabled && window.MSGesture, o = ("ontouchstart"in window || s || window.DocumentTouch && document instanceof DocumentTouch) && r.vars.touch, u = "click touchend MSPointerUp", a = "", f, l = r.vars.direction === "vertical", c = r.vars.reverse, h = r.vars.itemWidth > 0, p = r.vars.animation === "fade", d = r.vars.asNavFor !== "", v = {}, m = true; 11 e.data(t, "flexslider", r); 12 v = { 13 init: function() { 14 r.animating = false; 15 r.currentSlide = parseInt(r.vars.startAt ? r.vars.startAt : 0); 16 if (isNaN(r.currentSlide)) 17 r.currentSlide = 0; 18 r.animatingTo = r.currentSlide; 19 r.atEnd = r.currentSlide === 0 || r.currentSlide === r.last; 20 r.containerSelector = r.vars.selector.substr(0, r.vars.selector.search(" ")); 21 r.slides = e(r.vars.selector, r); 22 r.container = e(r.containerSelector, r); 23 r.count = r.slides.length; 24 r.syncExists = e(r.vars.sync).length > 0; 25 if (r.vars.animation === "slide") 26 r.vars.animation = "swing"; 27 r.prop = l ? "top" : "marginLeft"; 28 r.args = {}; 29 r.manualPause = false; 30 r.stopped = false; 31 r.started = false; 32 r.startTimeout = null; 33 r.transitions = !r.vars.video && !p && r.vars.useCSS && function() { 34 var e = document.createElement("div") 35 , t = ["perspectiveProperty", "WebkitPerspective", "MozPerspective", "OPerspective", "msPerspective"]; 36 for (var n in t) { 37 if (e.style[t[n]] !== undefined) { 38 r.pfx = t[n].replace("Perspective", "").toLowerCase(); 39 r.prop = "-" + r.pfx + "-transform"; 40 return true 41 } 42 } 43 return false 44 }(); 45 if (r.vars.controlsContainer !== "") 46 r.controlsContainer = e(r.vars.controlsContainer).length > 0 && e(r.vars.controlsContainer); 47 if (r.vars.manualControls !== "") 48 r.manualControls = e(r.vars.manualControls).length > 0 && e(r.vars.manualControls); 49 if (r.vars.randomize) { 50 r.slides.sort(function() { 51 return Math.round(Math.random()) - .5 52 }); 53 r.container.empty().append(r.slides) 54 } 55 r.doMath(); 56 r.setup("init"); 57 if (r.vars.controlNav) 58 v.controlNav.setup(); 59 if (r.vars.directionNav) 60 v.directionNav.setup(); 61 if (r.vars.keyboard && (e(r.containerSelector).length === 1 || r.vars.multipleKeyboard)) { 62 e(document).bind("keyup", function(e) { 63 var t = e.keyCode; 64 if (!r.animating && (t === 39 || t === 37)) { 65 var n = t === 39 ? r.getTarget("next") : t === 37 ? r.getTarget("prev") : false; 66 r.flexAnimate(n, r.vars.pauseOnAction) 67 } 68 }) 69 } 70 if (r.vars.mousewheel) { 71 r.bind("mousewheel", function(e, t, n, i) { 72 e.preventDefault(); 73 var s = t < 0 ? r.getTarget("next") : r.getTarget("prev"); 74 r.flexAnimate(s, r.vars.pauseOnAction) 75 }) 76 } 77 if (r.vars.pausePlay) 78 v.pausePlay.setup(); 79 if (r.vars.slideshow && r.vars.pauseInvisible)
80 v.pauseInvisible.init(); 81 if (r.vars.slideshow) { 82 if (r.vars.pauseOnHover) { 83 r.hover(function() { 84 if (!r.manualPlay && !r.manualPause) 85 r.pause() 86 }, function() { 87 if (!r.manualPause && !r.manualPlay && !r.stopped) 88 r.play() 89 }) 90 } 91 if (!r.vars.pauseInvisible || !v.pauseInvisible.isHidden()) { 92 r.vars.initDelay > 0 ? r.startTimeout = setTimeout(r.play, r.vars.initDelay) : r.play() 93 } 94 } 95 if (d) 96 v.asNav.setup(); 97 if (o && r.vars.touch) 98 v.touch(); 99 if (!p || p && r.vars.smoothHeight) 100 e(window).bind("resize orientationchange focus", v.resize); 101 r.find("img").attr("draggable", "false"); 102 setTimeout(function() { 103 r.vars.start(r) 104 }, 200) 105 }, 106 asNav: { 107 setup: function() { 108 r.asNav = true; 109 r.animatingTo = Math.floor(r.currentSlide / r.move); 110 r.currentItem = r.currentSlide; 111 r.slides.removeClass(i + "active-slide").eq(r.currentItem).addClass(i + "active-slide"); 112 if (!s) { 113 r.slides.click(function(t) { 114 t.preventDefault(); 115 var n = e(this) 116 , s = n.index(); 117 var o = n.offset().left - e(r).scrollLeft(); 118 if (o <= 0 && n.hasClass(i + "active-slide")) { 119 r.flexAnimate(r.getTarget("prev"), true) 120 } else if (!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass(i + "active-slide")) { 121 r.direction = r.currentItem < s ? "next" : "prev"; 122 r.flexAnimate(s, r.vars.pauseOnAction, false, true, true) 123 } 124 }) 125 } else { 126 t._slider = r; 127 r.slides.each(function() { 128 var t = this; 129 t._gesture = new MSGesture; 130 t._gesture.target = t; 131 t.addEventListener("MSPointerDown", function(e) { 132 e.preventDefault(); 133 if (e.currentTarget._gesture) 134 e.currentTarget._gesture.addPointer(e.pointerId) 135 }, false); 136 t.addEventListener("MSGestureTap", function(t) { 137 t.preventDefault(); 138 var n = e(this) 139 , i = n.index(); 140 if (!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass("active")) { 141 r.direction = r.currentItem < i ? "next" : "prev"; 142 r.flexAnimate(i, r.vars.pauseOnAction, false, true, true) 143 } 144 }) 145 }) 146 } 147 } 148 }, 149 controlNav: { 150 setup: function() { 151 if (!r.manualControls) { 152 v.controlNav.setupPaging() 153 } else { 154 v.controlNav.setupManual() 155 } 156 }, 157 setupPaging: function() { 158 var t = r.vars.controlNav === "thumbnails" ? "control-thumbs" : "control-paging", n = 1, s, o; 159 r.controlNavScaffold = e('<ol class="' + i + "control-nav " + i + t + '"></ol>'); 160 if (r.pagingCount > 1) { 161 for (var f = 0; f < r.pagingCount; f++) { 162 o = r.slides.eq(f); 163 s = r.vars.controlNav === "thumbnails" ? '<img src="' + o.attr("data-thumb") + '"/>' : "<a>" + n + "</a>"; 164 if ("thumbnails" === r.vars.controlNav && true === r.vars.thumbCaptions) { 165 var l = o.attr("data-thumbcaption"); 166 if ("" != l && undefined != l) 167 s += '<span class="' + i + 'caption">' + l + "</span>" 168 } 169 r.controlNavScaffold.append("<li>" + s + "</li>"); 170 n++ 171 } 172 } 173 r.controlsContainer ? e(r.controlsContainer).append(r.controlNavScaffold) : r.append(r.controlNavScaffold); 174 v.controlNav.set(); 175 v.controlNav.active(); 176 r.controlNavScaffold.delegate("a, img", u, function(t) { 177 t.preventDefault(); 178 if (a === "" || a === t.type) { 179 var n = e(this) 180 , s = r.controlNav.index(n); 181 if (!n.hasClass(i + "active")) { 182 r.direction = s > r.currentSlide ? "next" : "prev"; 183 r.flexAnimate(s, r.vars.pauseOnAction) 184 } 185 } 186 if (a === "") { 187 a = t.type 188 } 189 v.setToClearWatchedEvent() 190 }) 191 }, 192 setupManual: function() { 193 r.controlNav = r.manualControls; 194 v.controlNav.active(); 195 r.controlNav.bind(u, function(t) { 196 t.preventDefault(); 197 if (a === "" || a === t.type) { 198 var n = e(this) 199 , s = r.controlNav.index(n); 200 if (!n.hasClass(i + "active")) { 201 s > r.currentSlide ? r.direction = "next" : r.direction = "prev"; 202 r.flexAnimate(s, r.vars.pauseOnAction) 203 } 204 } 205 if (a === "") { 206 a = t.type 207 } 208 v.setToClearWatchedEvent() 209 }) 210 }, 211 set: function() { 212 var t = r.vars.controlNav === "thumbnails" ? "img" : "a"; 213 r.controlNav = e("." + i + "control-nav li " + t, r.controlsContainer ? r.controlsContainer : r) 214 }, 215 active: function() { 216 r.controlNav.removeClass(i + "active").eq(r.animatingTo).addClass(i + "active") 217 }, 218 update: function(t, n) { 219 if (r.pagingCount > 1 && t === "add") { 220 r.controlNavScaffold.append(e("<li><a>" + r.count + "</a></li>")) 221 } else if (r.pagingCount === 1) { 222 r.controlNavScaffold.find("li").remove() 223 } else { 224 r.controlNav.eq(n).closest("li").remove() 225 } 226 v.controlNav.set(); 227 r.pagingCount > 1 && r.pagingCount !== r.controlNav.length ? r.update(n, t) : v.controlNav.active() 228 } 229 }, 230 directionNav: { 231 setup: function() { 232 var t = e('<ul class="' + i + 'direction-nav"><li><a class="' + i + 'prev" href="#">
232' + r.vars.prevText + '</a></li><li><a class="' + i + 'next" href="#">' + r.vars.nextText + "</a></li></ul>"); 233 if (r.controlsContainer) { 234 e(r.controlsContainer).append(t); 235 r.directionNav = e("." + i + "direction-nav li a", r.controlsContainer) 236 } else { 237 r.append(t); 238 r.directionNav = e("." + i + "direction-nav li a", r) 239 } 240 v.directionNav.update(); 241 r.directionNav.bind(u, function(t) { 242 t.preventDefault(); 243 var n; 244 if (a === "" || a === t.type) { 245 n = e(this).hasClass(i + "next") ? r.getTarget("next") : r.getTarget("prev"); 246 r.flexAnimate(n, r.vars.pauseOnAction) 247 } 248 if (a === "") { 249 a = t.type 250 } 251 v.setToClearWatchedEvent() 252 }) 253 }, 254 update: function() { 255 var e = i + "disabled"; 256 if (r.pagingCount === 1) { 257 r.directionNav.addClass(e).attr("tabindex", "-1") 258 } else if (!r.vars.animationLoop) { 259 if (r.animatingTo === 0) { 260 r.directionNav.removeClass(e).filter("." + i + "prev").addClass(e).attr("tabindex", "-1") 261 } else if (r.animatingTo === r.last) { 262 r.directionNav.removeClass(e).filter("." + i + "next").addClass(e).attr("tabindex", "-1") 263 } else { 264 r.directionNav.removeClass(e).removeAttr("tabindex") 265 } 266 } else { 267 r.directionNav.removeClass(e).removeAttr("tabindex") 268 } 269 } 270 }, 271 pausePlay: { 272 setup: function() { 273 var t = e('<div class="' + i + 'pauseplay"><a></a></div>'); 274 if (r.controlsContainer) { 275 r.controlsContainer.append(t); 276 r.pausePlay = e("." + i + "pauseplay a", r.controlsContainer) 277 } else { 278 r.append(t); 279 r.pausePlay = e("." + i + "pauseplay a", r) 280 } 281 v.pausePlay.update(r.vars.slideshow ? i + "pause" : i + "play"); 282 r.pausePlay.bind(u, function(t) { 283 t.preventDefault(); 284 if (a === "" || a === t.type) { 285 if (e(this).hasClass(i + "pause")) { 286 r.manualPause = true; 287 r.manualPlay = false; 288 r.pause() 289 } else { 290 r.manualPause = false; 291 r.manualPlay = true; 292 r.play() 293 } 294 } 295 if (a === "") { 296 a = t.type 297 } 298 v.setToClearWatchedEvent() 299 }) 300 }, 301 update: function(e) { 302 e === "play" ? r.pausePlay.removeClass(i + "pause").addClass(i + "play").html(r.vars.playText) : r.pausePlay.removeClass(i + "play").addClass(i + "pause").html(r.vars.pauseText) 303 } 304 }, 305 touch: function() { 306 var e, n, i, o, u, a, f = false, d = 0, v = 0, m = 0; 307 if (!s) { 308 t.addEventListener("touchstart", g, false); 309 function g(s) { 310 if (r.animating) { 311 s.preventDefault() 312 } else if (window.navigator.msPointerEnabled || s.touches.length === 1) { 313 r.pause(); 314 o = l ? r.h : r.w; 315 a = Number(new Date); 316 d = s.touches[0].pageX; 317 v = s.touches[0].pageY; 318 i = h && c && r.animatingTo === r.last ? 0 : h && c ? r.limit - (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo : h && r.currentSlide === r.last ? r.limit : h ? (r.itemW + r.vars.itemMargin) * r.move * r.currentSlide : c ? (r.last - r.currentSlide + r.cloneOffset) * o : (r.currentSlide + r.cloneOffset) * o; 319 e = l ? v : d; 320 n = l ? d : v; 321 t.addEventListener("touchmove", y, false); 322 t.addEventListener("touchend", b, false) 323 } 324 } 325 function y(t) { 326 d = t.touches[0].pageX; 327 v = t.touches[0].pageY; 328 u = l ? e - v : e - d; 329 f = l ? Math.abs(u) < Math.abs(d - n) : Math.abs(u) < Math.abs(v - n); 330 var s = 500; 331 if (!f || Number(new Date) - a > s) { 332 t.preventDefault(); 333 if (!p && r.transitions) { 334 if (!r.vars.animationLoop) { 335 u = u / (r.currentSlide === 0 && u < 0 || r.currentSlide === r.last && u > 0 ? Math.abs(u) / o + 2 : 1) 336 } 337 r.setProps(i + u, "setTouch") 338 } 339 } 340 } 341 function b(s) { 342 t.removeEventListener("touchmove", y, false); 343 if (r.animatingTo === r.currentSlide && !f && !(u === null)) { 344 var l = c ? -u : u 345 , h = l > 0 ? r.getTarget("next") : r.getTarget("prev"); 346 if (r.canAdvance(h) && (Number(new Date) - a < 550 && Math.abs(l) > 50 || Math.abs(l) > o / 2)) { 347 r.flexAnimate(h, r.vars.pauseOnAction) 348 } else { 349 // Mise en commentaire par GLAROCHE 350 // Problème : le slider se bloque si au tout début on fait un simple click sur le slider 351 // en mode écran touch. 352 // console.log(p); 353 // if (!p) { 354 // r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, true) 355 // } 356 357 } 358 } 359 t.removeEventListener("touchend", b, false); 360 e = null; 361 n = null; 362 u = null; 363 i = null 364 } 365 } else { 366 t.style.msTouchAction = "none"; 367 t._gesture = new MSGesture; 368 t._gesture.target = t; 369 t.addEventListener("MSPointerDown", w, false); 370 t._slider = r; 371 t.addEventListener("MSGestureChange", E, false); 372 t.addEventListener("MSGestureEnd", S, false); 373 function w(e) { 374 e.stopPropagation(); 375 if (r.animating) { 376 e.preventDefault() 377 } else { 378 r.pause(); 379 t._gesture.addPointer(e.pointerId); 380 m = 0; 381 o = l ? r.h : r.w; 382 a = Number(new Date); 383 i = h && c && r.animatingTo === r.last ? 0 : h && c ? r.limit - (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo : h && r.currentSlide === r.last ? r.limit : h ? (r.itemW + r.vars.itemMargin) * r.move * r.currentSlide : c ? (r.last - r.currentSlide + r.cloneOffset) * o : (r.currentSlide + r.cloneOffset) * o 384 } 385 } 386 function E(e) { 387 e.stopPropagation(); 388 var n = e.target._slider; 389 if (!n) { 390 return 391 } 392 var r = -e.translationX 393 , s = -e.translationY; 394 m = m + (l ? s : r); 395 u = m; 396 f = l ? Math.abs(m) < Math.abs(-r) : Math.abs(m) < Math.abs(-s); 397 if (e.detail === e.MSGESTURE_FLAG_INERTIA) { 398 setImmediate(function() { 399 t._gesture.stop() 400 }); 401 return 402 } 403 if (!f || Number(new Date) - a > 500) { 404 e.preventDefault(); 405 if (!p && n.transitions) { 406 if (!n.vars.animationLoop) { 407 u = m / (n.currentSlide === 0 && m < 0 || n.currentSlide === n.last && m > 0 ? Math.abs(m) / o + 2 : 1) 408 } 409 n.setProps(i + u, "setTouch") 410 } 411 } 412 } 413 function S(t) { 414 t.stopPropagation(); 415 var r = t.target._slider; 416 if (!r) { 417 return 418 } 419 if (r.animatingTo === r.currentSlide && !f && !(u === null)) { 420 var s = c ? -u : u 421 , l = s > 0 ? r.getTarget("next") : r.getTarget("prev"); 422 if (r.canAdvance(l) && (Number(new Date) - a < 550 && Math.abs(s) > 50 || Math.abs(s) > o / 2)) { 423 r.flexAnimate(l, r.vars.pauseOnAction) 424 } else { 425 if (!p) 426 r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, true) 427 } 428 } 429 e = null; 430 n = null; 431 u = null; 432 i = null; 433 m = 0 434 } 435 } 436 }, 437 resize: function() { 438 if (!r.animating && r.is(":visible")) { 439 if (!h) 440 r.doMath(); 441 if (p) { 442 v.smoothHeight() 443 } else if (h) { 444 r.slides.width(r.computedW); 445 r.update(r.pagingCount); 446 r.setProps() 447 } else if (l) { 448 r.viewport.height(r.h); 449 r.setProps(r.h, "setTotal") 450 } else { 451 if (r.vars.smoothHeight) 452 v.smoothHeight(); 453 r.newSlides.width(r.computedW); 454 r.setProps(r.computedW, "setTotal") 455 } 456 } 457 }, 458 smoothHeight: function(e) { 459 if (!l || p) { 460 var t = p ? r : r.viewport; 461 e ? t.animate({ 462 height: r.slides.eq(r.animatingTo).height() 463 }, e) : t.height(r.slides.eq(r.animatingTo).height()) 464 } 465 }, 466 sync: function(t) { 467 var n = e(r.vars.sync).data("flexslider") 468 , i = r.animatingTo; 469 switch (t) { 470 case "animate": 471 n.flexAnimate(i, r.vars.pauseOnAction, false, true); 472 break; 473 case "play": 474 if (!n.playing && !n.asNav) { 475 n.play() 476 } 477 break; 478 case "pause": 479 n.pause(); 480 break 481 } 482 }, 483 pauseInvisible: { 484 visProp: null, 485 init: function() { 486 var e = ["webkit", "moz", "ms", "o"]; 487 if ("hidden"in document) 488 return "hidden"; 489 for (var t = 0; t < e.length; t++) { 490 if (e[t] + "Hidden"in document) 491 v.pauseInvisible.visProp = e[t] + "Hidden" 492 } 493 if (v.pauseInvisible.visProp) { 494 var n = v.pauseInvisible.visProp.replace(/[H|h]idden/, "") + "visibilitychange"; 495 document.addEventListener(n, function() { 496 if (v.pauseInvisible.isHidden()) { 497 if (r.startTimeout) 498 clearTimeout(r.startTimeout); 499 else 500 r.pause() 501 } else { 502 if (r.started) 503 r.play(); 504 else 505 r.vars.initDelay > 0 ? setTimeout(r.play, r.vars.initDelay) : r.play() 506 } 507 }) 508 } 509 }, 510 isHidden: function() { 511 return document[v.pauseInvisible.visProp] || false 512 } 513 }, 514 setToClearWatchedEvent: function() { 515 clearTimeout(f); 516 f = setTimeout(function() { 517 a = "" 518 }, 3e3) 519 } 520 }; 521 r.flexAnimate = function(t, n, s, u, a) { 522 if (!r.vars.animationLoop && t !== r.currentSlide) { 523 r.direction = t > r.currentSlide ? "next" : "prev" 524 } 525 if (d && r.pagingCount === 1) 526 r.direction = r.currentItem < t ? "next" : "prev"; 527 if (!r.animating && (r.canAdvance(t, a) || s) && r.is(":visible")) { 528 if (d && u) { 529 var f = e(r.vars.asNavFor).data("flexslider"); 530 r.atEnd = t === 0 || t === r.count - 1; 531 f.flexAnimate(t, true, false, true, a); 532 r.direction = r.currentItem < t ? "next" : "prev"; 533 f.direction = r.direction; 534 if (Math.ceil((t + 1) / r.visible) - 1 !== r.currentSlide && t !== 0) { 535 r.currentItem = t; 536 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 537 t = Math.flo
537or(t / r.visible) 538 } else { 539 r.currentItem = t; 540 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 541 return false 542 } 543 } 544 r.animating = true; 545 r.animatingTo = t; 546 if (n) 547 r.pause(); 548 r.vars.before(r); 549 if (r.syncExists && !a) 550 v.sync("animate"); 551 if (r.vars.controlNav) 552 v.controlNav.active(); 553 if (!h) 554 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 555 r.atEnd = t === 0 || t === r.last; 556 if (r.vars.directionNav) 557 v.directionNav.update(); 558 if (t === r.last) { 559 r.vars.end(r); 560 if (!r.vars.animationLoop) 561 r.pause() 562 } 563 if (!p) { 564 var m = l ? r.slides.filter(":first").height() : r.computedW, g, y, b; 565 if (h) { 566 g = r.vars.itemMargin; 567 b = (r.itemW + g) * r.move * r.animatingTo; 568 y = b > r.limit && r.visible !== 1 ? r.limit : b 569 } else if (r.currentSlide === 0 && t === r.count - 1 && r.vars.animationLoop && r.direction !== "next") { 570 y = c ? (r.count + r.cloneOffset) * m : 0 571 } else if (r.currentSlide === r.last && t === 0 && r.vars.animationLoop && r.direction !== "prev") { 572 y = c ? 0 : (r.count + 1) * m 573 } else { 574 y = c ? (r.count - 1 - t + r.cloneOffset) * m : (t + r.cloneOffset) * m 575 } 576 r.setProps(y, "", r.vars.animationSpeed); 577 if (r.transitions) { 578 if (!r.vars.animationLoop || !r.atEnd) { 579 r.animating = false; 580 r.currentSlide = r.animatingTo 581 } 582 r.container.unbind("webkitTransitionEnd transitionend"); 583 r.container.bind("webkitTransitionEnd transitionend", function() { 584 r.wrapup(m) 585 }) 586 } else { 587 r.container.animate(r.args, r.vars.animationSpeed, r.vars.easing, function() { 588 r.wrapup(m) 589 }) 590 } 591 } else { 592 if (!o) { 593 r.slides.eq(r.currentSlide).css({ 594 zIndex: 1 595 }).animate({ 596 opacity: 0 597 }, r.vars.animationSpeed, r.vars.easing); 598 r.slides.eq(t).css({ 599 zIndex: 2 600 }).animate({ 601 opacity: 1 602 }, r.vars.animationSpeed, r.vars.easing, r.wrapup) 603 } else { 604 r.slides.eq(r.currentSlide).css({ 605 opacity: 0, 606 zIndex: 1 607 }); 608 r.slides.eq(t).css({ 609 opacity: 1, 610 zIndex: 2 611 }); 612 r.wrapup(m) 613 } 614 } 615 if (r.vars.smoothHeight) 616 v.smoothHeight(r.vars.animationSpeed) 617 } 618 } 619 ; 620 r.wrapup = function(e) { 621 if (!p && !h) { 622 if (r.currentSlide === 0 && r.animatingTo === r.last && r.vars.animationLoop) { 623 r.setProps(e, "jumpEnd") 624 } else if (r.currentSlide === r.last && r.animatingTo === 0 && r.vars.animationLoop) { 625 r.setProps(e, "jumpStart") 626 } 627 } 628 r.animating = false;
629 r.currentSlide = r.animatingTo; 630 r.vars.after(r) 631 } 632 ; 633 r.animateSlides = function() { 634 if (!r.animating && m) 635 r.flexAnimate(r.getTarget("next")) 636 } 637 ; 638 r.pause = function() { 639 clearInterval(r.animatedSlides); 640 r.animatedSlides = null; 641 r.playing = false; 642 if (r.vars.pausePlay) 643 v.pausePlay.update("play"); 644 if (r.syncExists) 645 v.sync("pause") 646 } 647 ; 648 r.play = function() { 649 if (r.playing) 650 clearInterval(r.animatedSlides); 651 r.animatedSlides = r.animatedSlides || setInterval(r.animateSlides, r.vars.slideshowSpeed); 652 r.started = r.playing = true; 653 if (r.vars.pausePlay) 654 v.pausePlay.update("pause"); 655 if (r.syncExists) 656 v.sync("play") 657 } 658 ; 659 r.stop = function() { 660 r.pause(); 661 r.stopped = true 662 } 663 ; 664 r.canAdvance = function(e, t) { 665 var n = d ? r.pagingCount - 1 : r.last; 666 return t ? true : d && r.currentItem === r.count - 1 && e === 0 && r.direction === "prev" ? true : d && r.currentItem === 0 && e === r.pagingCount - 1 && r.direction !== "next" ? false : e === r.currentSlide && !d ? false : r.vars.animationLoop ? true : r.atEnd && r.currentSlide === 0 && e === n && r.direction !== "next" ? false : r.atEnd && r.currentSlide === n && e === 0 && r.direction === "next" ? false : true 667 } 668 ; 669 r.getTarget = function(e) { 670 r.direction = e; 671 if (e === "next") { 672 return r.currentSlide === r.last ? 0 : r.currentSlide + 1 673 } else { 674 return r.currentSlide === 0 ? r.last : r.currentSlide - 1 675 } 676 } 677 ; 678 r.setProps = function(e, t, n) { 679 var i = function() { 680 var n = e ? e : (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo 681 , i = function() { 682 if (h) { 683 return t === "setTouch" ? e : c && r.animatingTo === r.last ? 0 : c ? r.limit - (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo : r.animatingTo === r.last ? r.limit : n 684 } else { 685 switch (t) { 686 case "setTotal": 687 return c ? (r.count - 1 - r.currentSlide + r.cloneOffset) * e : (r.currentSlide + r.cloneOffset) * e; 688 case "setTouch": 689 return c ? e : e; 690 case "jumpEnd": 691 return c ? e : r.count * e; 692 case "jumpStart": 693 return c ? r.count * e : e; 694 default: 695 return e 696 } 697 } 698 }(); 699 return parseInt(i) * -1 + "px" 700 }(); 701 if (r.transitions) { 702 i = l ? "translate3d(0," + i + ",0)" : "translate3d(" + i + ",0,0)"; 703 n = n !== undefined ? n / 1e3 + "s" : "0s"; 704 r.container.css("-" + r.pfx + "-transition-duration", n) 705 } 706 r.args[r.prop] = i; 707 if (r.transitions || n === undefined) 708 r.container.css(r.args) 709 } 710 ; 711 r.setup = function(t) { 712 if (!p) { 713 var n, s; 714 if (t === "init") { 715 r.viewport = e('<div class="' + i + 'viewport"></div>').css({ 716 overflow: "hidden", 717 position: "relative" 718 }).appendTo(r).append(r.container); 719 r.cloneCount = 0; 720 r.cloneOffset = 0; 721 if (c) { 722 s = e.makeArray(r.slides).reverse(); 723 r.slides = e(s); 724 r.container.empty().append(r.slides) 725 } 726 } 727 if (r.vars.animationLoop && !h) { 728 r.cloneCount = 2; 729 r.cloneOffset = 1; 730 if (t !== "init") 731 r.container.find(".clone").remove(); 732 r.container.append(r.slides.first().clone().addClass("clone").attr("aria-hidden", "true")).prepend(r.slides.last().clone().addClass("clone").attr("aria-hidden", "true")) 733 } 734 r.newSlides = e(r.vars.selector, r); 735 n = c ? r.count - 1 - r.currentSlide + r.cloneOffset : r.currentSlide + r.cloneOffset; 736 if (l && !h) { 737 r.container.height((r.count + r.cloneCount) * 200 + "%").css("position", "absolute").width("100%"); 738 setTimeout(function() { 739 r.newSlides.css({ 740 display: "block" 741 }); 742 r.doMath(); 743 r.viewport.height(r.h); 744 r.setProps(n * r.h, "init") 745 }, t === "init" ? 100 : 0) 746 } else { 747 r.container.width((r.count + r.cloneCount) * 200 + "%"); 748 r.setProps(n * r.computedW, "init"); 749 setTimeout(function() { 750 r.doMath(); 751 r.newSlides.css({ 752 width: r.computedW, 753 "float": "left", 754 display: "block" 755 }); 756 if (r.vars.smoothHeight) 757 v.smoothHeight() 758 }, t === "init" ? 100 : 0) 759 } 760 } else { 761 r.slides.css({ 762 width: "100%", 763 "float": "left", 764 marginRight: "-100%", 765 position: "relative" 766 }); 767 if (t === "init") { 768 if (!o) { 769 r.slides.css({ 770 opacity: 0, 771 display: "block", 772 zIndex: 1 773 }).eq(r.currentSlide).css({ 774 zIndex: 2 775 }).animate({ 776 opacity: 1 777 }, r.vars.animationSpeed, r.vars.easing) 778 } else { 779 r.slides.css({ 780 opacity: 0, 781 display: "block", 782 webkitTransition: "opacity " + r.vars.animationSpeed / 1e3 + "s ease", 783 zIndex: 1 784 }).eq(r.currentSlide).css({ 785 opacity: 1, 786 zIndex: 2 787 }) 788 } 789 } 790 if (r.vars.smoothHeight) 791 v.smoothHeight() 792 } 793 if (!h) 794 r.slides.removeClass(i + "active-slide").eq(r.currentSlide).addClass(i + "active-slide") 795 } 796 ; 797 r.doMath = function() { 798 var e = r.slides.first() 799 , t = r.vars.itemMargin 800 , n = r.vars.minItems 801 , i = r.vars.maxItems; 802 r.w = r.viewport === undefined ? r.width() : r.viewport.width(); 803 r.h = e.height(); 804 r.boxPadding = e.outerWidth() - e.width(); 805 if (h) { 806 r.itemT = r.vars.itemWidth + t; 807 r.minW = n ? n * r.itemT : r.w; 808 r.maxW = i ? i * r.itemT - t : r.w; 809 r.itemW = r.minW > r.w ? (r.w - t * (n - 1)) / n : r.maxW < r.w ? (r.w - t * (i - 1)) / i : r.vars.itemWidth > r.w ? r.w : r.vars.itemWidth; 810 r.visible = Math.floor(r.w / r.itemW); 811 r.move = r.vars.move > 0 && r.vars.move < r.visible ? r.vars.move : r.visible;
812 r.pagingCount = Math.ceil((r.count - r.visible) / r.move + 1); 813 r.last = r.pagingCount - 1; 814 r.limit = r.pagingCount === 1 ? 0 : r.vars.itemWidth > r.w ? r.itemW * (r.count - 1) + t * (r.count - 1) : (r.itemW + t) * r.count - r.w - t 815 } else { 816 r.itemW = r.w; 817 r.pagingCount = r.count; 818 r.last = r.count - 1 819 } 820 r.itemW = parseInt(r.itemW); 821 r.computedW = r.itemW - r.boxPadding 822 } 823 ; 824 r.update = function(e, t) { 825 r.doMath(); 826 if (!h) { 827 if (e < r.currentSlide) { 828 r.currentSlide += 1 829 } else if (e <= r.currentSlide && e !== 0) { 830 r.currentSlide -= 1 831 } 832 r.animatingTo = r.currentSlide 833 } 834 if (r.vars.controlNav && !r.manualControls) { 835 if (t === "add" && !h || r.pagingCount > r.controlNav.length) { 836 v.controlNav.update("add") 837 } else if (t === "remove" && !h || r.pagingCount < r.controlNav.length) { 838 if (h && r.currentSlide > r.last) { 839 r.currentSlide -= 1; 840 r.animatingTo -= 1 841 } 842 v.controlNav.update("remove", r.last) 843 } 844 } 845 if (r.vars.directionNav) 846 v.directionNav.update() 847 } 848 ; 849 r.addSlide = function(t, n) { 850 var i = e(t); 851 r.count += 1; 852 r.last = r.count - 1; 853 if (l && c) { 854 n !== undefined ? r.slides.eq(r.count - n).after(i) : r.container.prepend(i) 855 } else { 856 n !== undefined ? r.slides.eq(n).before(i) : r.container.append(i) 857 } 858 r.update(n, "add"); 859 r.slides = e(r.vars.selector + ":not(.clone)", r); 860 r.setup(); 861 r.vars.added(r) 862 } 863 ; 864 r.removeSlide = function(t) { 865 var n = isNaN(t) ? r.slides.index(e(t)) : t; 866 r.count -= 1; 867 r.last = r.count - 1; 868 if (isNaN(t)) { 869 e(t, r.slides).remove() 870 } else { 871 l && c ? r.slides.eq(r.last).remove() : r.slides.eq(t).remove() 872 } 873 r.doMath(); 874 r.update(n, "remove"); 875 r.slides = e(r.vars.selector + ":not(.clone)", r); 876 r.setup(); 877 r.vars.removed(r) 878 } 879 ; 880 v.init() 881 } 882 ; 883 e(window).blur(function(e) { 884 focused = false 885 }).focus(function(e) { 886 focused = true 887 }); 888 e.flexslider.defaults = { 889 namespace: "flex-", 890 selector: ".slides > li", 891 animation: "fade", 892 easing: "swing", 893 direction: "horizontal", 894 reverse: false, 895 animationLoop: true, 896 smoothHeight: false, 897 startAt: 0, 898 slideshow: true, 899 slideshowSpeed: 7e3, 900 animationSpeed: 600, 901 initDelay: 0, 902 randomize: false, 903 thumbCaptions: false, 904 pauseOnAction: true, 905 pauseOnHover: false, 906 pauseInvisible: true, 907 useCSS: true, 908 touch: true, 909 video: false, 910 controlNav: true, 911 directionNav: true, 912 prevText: "Previous", 913 nextText: "Next", 914 keyboard: true, 915 multipleKeyboard: false, 916 mousewheel: false, 917 pausePlay: false, 918 pauseText: "Pause", 919 playText: "Play", 920 controlsContainer: "", 921 manualControls: "", 922 sync: "", 923 asNavFor: "", 924 itemWidth: 0, 925 itemMargin: 0, 926 minItems: 1, 927 maxItems: 0, 928 move: 0, 929 allowOneSlide: true, 930 start: function() {}, 931 before: function() {}, 932 after: function() {}, 933 end: function() {}, 934 added: function() {}, 935 removed: function() {} 936 }; 937 e.fn.flexslider = function(t) { 938 if (t === undefined) 939 t = {}; 940 if (typeof t === "object") { 941 return this.each(function() { 942 var n = e(this) 943 , r = t.selector ? t.selector : ".slides > li" 944 , i = n.find(r); 945 if (i.length === 1 && t.allowOneSlide === true || i.length === 0) { 946 i.fadeIn(400); 947 if (t.start) 948 t.start(n) 949 } else if (n.data("flexslider") === undefined) { 950 new e.flexslider(this,t) 951 } 952 }) 953 } else { 954 var n = e(this).data("flexslider"); 955 switch (t) { 956 case "play": 957 n.play(); 958 break; 959 case "pause": 960 n.pause(); 961 break; 962 case "stop": 963 n.stop(); 964 break; 965 case "next": 966 n.flexAnimate(n.getTarget("next"), true); 967 break; 968 case "prev": 969 case "previous": 970 n.flexAnimate(n.getTarget("prev"), true); 971 break; 972 default: 973 if (typeof t === "number") 974 n.flexAnimate(t, true) 975 } 976 } 977 } 978 } 979)(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.