1/* 2 * jQuery FlexSlider v2.2.2 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, 11 s = window.navigator && window.navigator.msPointerEnabled && window.MSGesture, 12 o = ("ontouchstart" in window || s || window.DocumentTouch && document instanceof DocumentTouch) && r.vars.touch, 13 u = "click touchend MSPointerUp", 14 a = "", 15 f, l = r.vars.direction === "vertical", 16 c = r.vars.reverse, 17 h = r.vars.itemWidth > 0, 18 p = r.vars.animation === "fade", 19 d = r.vars.asNavFor !== "", 20 v = {}, 21 m = !0; 22 e.data(t, "flexslider", r); 23 v = { 24 init: function() { 25 r.animating = !1; 26 r.currentSlide = parseInt(r.vars.startAt ? r.vars.startAt : 0, 10); 27 isNaN(r.currentSlide) && (r.currentSlide = 0); 28 r.animatingTo = r.currentSlide; 29 r.atEnd = r.currentSlide === 0 || r.currentSlide === r.last; 30 r.containerSelector = r.vars.selector.substr(0, r.vars.selector.search(" ")); 31 r.slides = e(r.vars.selector, r); 32 r.container = e(r.containerSelector, r); 33 r.count = r.slides.length; 34 r.syncExists = e(r.vars.sync).length > 0; 35 r.vars.animation === "slide" && (r.vars.animation = "swing"); 36 r.prop = l ? "top" : "marginLeft"; 37 r.args = {}; 38 r.manualPause = !1; 39 r.stopped = !1; 40 r.started = !1; 41 r.startTimeout = null; 42 r.transitions = !r.vars.video && !p && r.vars.useCSS && function() { 43 var e = document.createElement("div"), 44 t = ["perspectiveProperty", "WebkitPerspective", "MozPerspective", "OPerspective", "msPerspective"]; 45 for(var n in t) 46 if(e.style[t[n]] !== undefined) { 47 r.pfx = t[n].replace("Perspective", "").toLowerCase(); 48 r.prop = "-" + r.pfx + "-transform"; 49 return !0 50 } 51 return !1 52 }(); 53 r.vars.controlsContainer !== "" && (r.controlsContainer = e(r.vars.controlsContainer).length > 0 && e(r.vars.controlsContainer)); 54 r.vars.manualControls !== "" && (r.manualControls = e(r.vars.manualControls).length > 0 && e(r.vars.manualControls)); 55 if(r.vars.randomize) { 56 r.slides.sort(function() { 57 return Math.round(Math.random()) - .5 58 }); 59 r.container.empty().append(r.slides) 60 } 61 r.doMath(); 62 r.setup("init"); 63 r.vars.controlNav && v.controlNav.setup(); 64 r.vars.directionNav && v.directionNav.setup(); 65 r.vars.keyboard && (e(r.containerSelector).length === 1 || r.vars.multipleKeyboard) && e(document).bind("keyup", function(e) { 66 var t = e.keyCode; 67 if(!r.animating && (t === 39 || t === 37)) { 68 var n = t === 39 ? r.getTarget("next") : t === 37 ? r.getTarget("prev") : !1; 69 r.flexAnimate(n, r.vars.pauseOnAction) 70 } 71 }); 72 r.vars.mousewheel && r.bind("mousewheel", function(e, t, n, i) { 73 e.preventDefault(); 74 var s = t < 0 ? r.getTarget("next") : r.getTarget("prev"); 75 r.flexAnimate(s, r.vars.pauseOnAction) 76 }); 77 r.vars.pausePlay && v.pausePlay.setup(); 78 r.vars.slideshow && r.vars.pauseInvisible && v.pauseInvisible.init(); 79 if(r.vars.slideshow) { 80 r.vars.pauseOnHover && r.hover(function() { 81 !r.manualPlay && !r.manualPause && r.pause() 82 }, function() { 83 !r.manualPause && !r.manualPlay && !r.stopped && r.play() 84 }); 85 if(!r.vars.pauseInvisible || !v.pauseInvisible.isHidden()) r.vars.initDelay > 0 ? r.startTimeout = setTimeout(r.play, r.vars.initDelay) : r.play() 86 } 87 d && v.asNav.setup(); 88 o && r.vars.touch && v.touch(); 89 (!p || p && r.vars.smoothHeight) && e(window).bind("resize orientationchange focus", v.resize); 90 r.find("img").attr("draggable", "false"); 91 setTimeout(function() { 92 r.vars.start(r) 93 }, 200) 94 }, 95 asNav: { 96 setup: function() { 97 r.asNav = !0; 98 r.animatingTo = Math.floor(r.currentSlide / r.move); 99 r.currentItem = r.currentSlide; 100 r.slides.removeClass(i + "active-slide").eq(r.currentItem).addClass(i + "active-slide"); 101 if(!s) r.slides.on(u, function(t) { 102 t.preventDefault(); 103 var n = e(this), 104 s = n.index(), 105 o = n.offset().left - e(r).scrollLeft(); 106 if(o <= 0 && n.hasClass(i + "active-slide")) r.flexAnimate(r.getTarget("prev"), !0); 107 else if(!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass(i + "active-slide")) { 108 r.direction = r.currentItem < s ? "next" : "prev"; 109 r.flexAnimate(s, r.vars.pauseOnAction, !1, !0, !0) 110 } 111 }); 112 else { 113 t._slider = r; 114 r.slides.each(function() { 115 var t = this; 116 t._gesture = new MSGesture; 117 t._gesture.target = t; 118 t.addEventListener("MSPointerDown", function(e) { 119 e.preventDefault(); 120 e.currentTarget._gesture && e.currentTarget._gesture.addPointer(e.pointerId) 121 }, !1); 122 t.addEventListener("MSGestureTap", function(t) { 123 t.preventDefault(); 124 var n = e(this), 125 i = n.index(); 126 if(!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass("active")) { 127 r.direction = r.currentItem < i ? "next" : "prev"; 128 r.flexAnimate(i, r.vars.pauseOnAction, !1, !0, !0) 129 } 130 }) 131 }) 132 } 133 } 134 },
135 controlNav: { 136 setup: function() { 137 r.manualControls ? v.controlNav.setupManual() : v.controlNav.setupPaging() 138 }, 139 setupPaging: function() { 140 var t = r.vars.controlNav === "thumbnails" ? "control-thumbs" : "control-paging", 141 n = 1, 142 s, o; 143 r.controlNavScaffold = e('<ol class="' + i + "control-nav " + i + t + '"></ol>'); 144 if(r.pagingCount > 1) 145 for(var f = 0; f < r.pagingCount; f++) { 146 o = r.slides.eq(f); 147 s = r.vars.controlNav === "thumbnails" ? '<img src="' + o.attr("data-thumb") + '"/>' : "<a>" + n + "</a>"; 148 if("thumbnails" === r.vars.controlNav && !0 === r.vars.thumbCaptions) { 149 var l = o.attr("data-thumbcaption"); 150 "" != l && undefined != l && (s += '<span class="' + i + 'caption">' + l + "</span>") 151 } 152 r.controlNavScaffold.append("<li>" + s + "</li>"); 153 n++ 154 } 155 r.controlsContainer ? e(r.controlsContainer).append(r.controlNavScaffold) : r.append(r.controlNavScaffold); 156 v.controlNav.set(); 157 v.controlNav.active(); 158 r.controlNavScaffold.delegate("a, img", u, function(t) { 159 t.preventDefault(); 160 if(a === "" || a === t.type) { 161 var n = e(this), 162 s = r.controlNav.index(n); 163 if(!n.hasClass(i + "active")) { 164 r.direction = s > r.currentSlide ? "next" : "prev"; 165 r.flexAnimate(s, r.vars.pauseOnAction) 166 } 167 } 168 a === "" && (a = t.type); 169 v.setToClearWatchedEvent() 170 }) 171 }, 172 setupManual: function() { 173 r.controlNav = r.manualControls; 174 v.controlNav.active(); 175 r.controlNav.bind(u, function(t) { 176 t.preventDefault(); 177 if(a === "" || a === t.type) { 178 var n = e(this), 179 s = r.controlNav.index(n); 180 if(!n.hasClass(i + "active")) { 181 s > r.currentSlide ? r.direction = "next" : r.direction = "prev"; 182 r.flexAnimate(s, r.vars.pauseOnAction) 183 } 184 } 185 a === "" && (a = t.type); 186 v.setToClearWatchedEvent() 187 }) 188 }, 189 set: function() { 190 var t = r.vars.controlNav === "thumbnails" ? "img" : "a"; 191 r.controlNav = e("." + i + "control-nav li " + t, r.controlsContainer ? r.controlsContainer : r) 192 }, 193 active: function() { 194 r.controlNav.removeClass(i + "active").eq(r.animatingTo).addClass(i + "active") 195 }, 196 update: function(t, n) { 197 r.pagingCount > 1 && t === "add" ? r.controlNavScaffold.append(e("<li><a>" + r.count + "</a></li>")) : r.pagingCount === 1 ? r.controlNavScaffold.find("li").remove() : r.controlNav.eq(n).closest("li").remove(); 198 v.controlNav.set(); 199 r.pagingCount > 1 && r.pagingCount !== r.controlNav.length ? r.update(n, t) : v.controlNav.active() 200 } 201 }, 202 directionNav: { 203 setup: function() { 204 var t = e('<ul class="' + i + 'direction-nav"><li><a class="' + i + 'prev" href="#">' + r.vars.prevText + '</a></li><li><a class="' + i + 'next" href="#">' + r.vars.nextText + "</a></li></ul>"); 205 if(r.controlsContainer) { 206 e(r.controlsContainer).append(t); 207 r.directionNav = e("." + i + "direction-nav li a", r.controlsContainer) 208 } else { 209 r.append(t); 210 r.directionNav = e("." + i + "direction-nav li a", r) 211 } 212 v.directionNav.update(); 213 r.directionNav.bind(u, function(t) { 214 t.preventDefault(); 215 var n; 216 if(a === "" || a === t.type) { 217 n = e(this).hasClass(i + "next") ? r.getTarget("next") : r.getTarget("prev"); 218 r.flexAnimate(n, r.vars.pauseOnAction) 219 } 220 a === "" && (a = t.type); 221 v.setToClearWatchedEvent() 222 }) 223 }, 224 update: function() { 225 var e = i + "disabled"; 226 r.pagingCount === 1 ? r.directionNav.addClass(e).attr("tabindex", "-1") : r.vars.animationLoop ? r.directionNav.removeClass(e).removeAttr("tabindex") : r.animatingTo === 0 ? r.directionNav.removeClass(e).filter("." + i + "prev").addClass(e).attr("tabindex", "-1") : r.animatingTo === r.last ? r.directionNav.removeClass(e).filter("." + i + "next").addClass(e).attr("tabindex", "-1") : r.directionNav.removeClass(e).removeAttr("tabindex") 227 } 228 }, 229 pausePlay: { 230 setup: function() { 231 var t = e('<div class="' + i + 'pauseplay"><a></a></div>'); 232 if(r.controlsContainer) { 233 r.controlsContainer.append(t); 234 r.pausePlay = e("." + i + "pauseplay a", r.controlsContainer) 235 } else { 236 r.append(t); 237 r.pausePlay = e("." + i + "pauseplay a", r) 238 } 239 v.pausePlay.update(r.vars.slideshow ? i + "pause" : i + "play"); 240 r.pausePlay.bind(u, function(t) { 241 t.preventDefault(); 242 if(a === "" || a === t.type) 243 if(e(this).hasClass(i + "pause")) { 244 r.manualPause = !0;
245 r.manualPlay = !1; 246 r.pause() 247 } else { 248 r.manualPause = !1; 249 r.manualPlay = !0; 250 r.play() 251 } 252 a === "" && (a = t.type); 253 v.setToClearWatchedEvent() 254 }) 255 }, 256 update: function(e) { 257 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) 258 } 259 }, 260 touch: function() { 261 var e, n, i, o, u, a, f = !1, 262 d = 0, 263 v = 0, 264 m = 0; 265 if(!s) { 266 t.addEventListener("touchstart", g, !1); 267 268 function g(s) { 269 if(r.animating) s.preventDefault(); 270 else if(window.navigator.msPointerEnabled || s.touches.length === 1) { 271 r.pause(); 272 o = l ? r.h : r.w; 273 a = Number(new Date); 274 d = s.touches[0].pageX; 275 v = s.touches[0].pageY; 276 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; 277 e = l ? v : d; 278 n = l ? d : v; 279 t.addEventListener("touchmove", y, !1); 280 t.addEventListener("touchend", b, !1) 281 } 282 } 283 284 function y(t) { 285 d = t.touches[0].pageX; 286 v = t.touches[0].pageY; 287 u = l ? e - v : e - d; 288 f = l ? Math.abs(u) < Math.abs(d - n) : Math.abs(u) < Math.abs(v - n); 289 var s = 500; 290 if(!f || Number(new Date) - a > s) { 291 t.preventDefault(); 292 if(!p && r.transitions) { 293 r.vars.animationLoop || (u /= r.currentSlide === 0 && u < 0 || r.currentSlide === r.last && u > 0 ? Math.abs(u) / o + 2 : 1); 294 r.setProps(i + u, "setTouch") 295 } 296 } 297 } 298 299 function b(s) { 300 t.removeEventListener("touchmove", y, !1); 301 if(r.animatingTo === r.currentSlide && !f && u !== null) { 302 var l = c ? -u : u, 303 h = l > 0 ? r.getTarget("next") : r.getTarget("prev"); 304 r.canAdvance(h) && (Number(new Date) - a < 550 && Math.abs(l) > 50 || Math.abs(l) > o / 2) ? r.flexAnimate(h, r.vars.pauseOnAction) : p || r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, !0) 305 } 306 t.removeEventListener("touchend", b, !1); 307 e = null; 308 n = null; 309 u = null; 310 i = null 311 } 312 } else { 313 t.style.msTouchAction = "none"; 314 t._gesture = new MSGesture; 315 t._gesture.target = t; 316 t.addEventListener("MSPointerDown", w, !1); 317 t._slider = r; 318 t.addEventListener("MSGestureChange", E, !1); 319 t.addEventListener("MSGestureEnd", S, !1); 320 321 function w(e) { 322 e.stopPropagation(); 323 if(r.animating) e.preventDefault(); 324 else { 325 r.pause(); 326 t._gesture.addPointer(e.pointerId); 327 m = 0; 328 o = l ? r.h : r.w; 329 a = Number(new Date); 330 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 331 } 332 } 333 334 function E(e) { 335 e.stopPropagation(); 336 var n = e.target._slider; 337 if(!n) return; 338 var r = -e.translationX, 339 s = -e.translationY; 340 m += l ? s : r; 341 u = m; 342 f = l ? Math.abs(m) < Math.abs(-r) : Math.abs(m) < Math.abs(-s); 343 if(e.detail === e.MSGESTURE_FLAG_INERTIA) { 344 setImmediate(function() { 345 t._gesture.stop() 346 }); 347 return 348 } 349 if(!f || Number(new Date) - a > 500) { 350 e.preventDefault(); 351 if(!p && n.transitions) { 352 n.vars.animationLoop || (u = m / (n.currentSlide === 0 && m < 0 || n.currentSlide === n.last && m > 0 ? Math.abs(m) / o + 2 : 1)); 353 n.setProps(i + u, "setTouch") 354 } 355 } 356 } 357 358 function S(t) { 359 t.stopPropagation(); 360 var r = t.target._slider; 361 if(!r) return; 362 if(r.animatingTo === r.currentSlide && !f && u !== null) { 363 var s = c ? -u : u, 364 l = s > 0 ? r.getTarget("next") : r.getTarget("prev"); 365 r.canAdvance(l) && (Number(new Date) - a < 550 && Math.abs(s) > 50 || Math.abs(s) > o / 2) ? r.flexAnimate(l, r.vars.pauseOnAction) : p || r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, !0) 366 } 367 e = null; 368 n = null; 369 u = null; 370 i = null; 371 m = 0 372 } 373 } 374 }, 375 resize: function() { 376 if(!r.animating && r.is(":visible")) { 377 h || r.doMath(); 378 if(p) v.smoothHeight(); 379 else if(h) { 380 r.slides.width(r.computedW); 381 r.update(r.pagingCount); 382 r.setProps() 383 } else if(l) { 384 r.viewport.height(r.h); 385 r.setProps(r.h, "setTotal") 386 } else { 387 r.vars.smoothHeight && v.smoothHeight(); 388 r.newSlides.width(r.computedW); 389 r.setProps(r.computedW, "setTotal") 390 } 391 } 392 }, 393 smoothHeight: function(e) { 394 if(!l || p) { 395 var t = p ? r : r.viewport; 396 e ? t.animate({ 397 height: r.slides.eq(r.animatingTo).height() 398 }, e) : t.height(r.slides.eq(r.animatingTo).height()) 399 } 400 }, 401 sync: function(t) { 402 var n = e(r.vars.sync).data("flexslider"), 403 i = r.animatingTo; 404 switch(t) { 405 case "animate": 406 n.flexAnimate(i, r.vars.pauseOnAction, !1, !0); 407 break; 408 case "play": 409 !n.playing && !n.asNav && n.play(); 410 break; 411 case "pause": 412 n.pause() 413 } 414 }, 415 uniqueID: function(t) { 416 t.find("[id]").each(function() { 417 var t = e(this); 418 t.attr("id", t.attr("id") + "_clone") 419 }); 420 return t 421 }, 422 pauseInvisible: { 423 visProp: null, 424 init: function() { 425 var e = ["webkit", "moz", "ms", "o"]; 426 if("hidden" in document) return "hidden"; 427 for(var t = 0; t < e.length; t++) e[t] + "Hidden" in document && (v.pauseInvisible.visProp = e[t] + "Hidden"); 428 if(v.pauseInvisible.visProp) { 429 var n = v.pauseInvisible.visProp.replace(/[H|h]idden/, "") + "visibilitychange"; 430 document.addEventListener(n, function() { 431 v.pauseInvisible.isHidden() ? r.startTimeout ? clearTimeout(r.startTimeout) : r.pause() : r.started ? r.play() : r.vars.initDelay > 0 ? setTimeout(r.play, r.vars.initDelay) : r.play() 432 }) 433 } 434 }, 435 isHidden: function() { 436 return document[v.pauseInvisible.visProp] || !1 437 } 438 }, 439 setToClearWatchedEvent: function() { 440 clearTimeout(f); 441 f = setTimeout(function() { 442 a = "" 443 }, 3e3) 444 } 445 }; 446 r.flexAnimate = function(t, n, s, u, a) { 447 !r.vars.animationLoop && t !== r.currentSlide && (r.direction = t > r.currentSlide ? "next" : "prev"); 448 d && r.pagingCount === 1 && (r.direction = r.currentItem < t ? "next" : "prev"); 449 if(!r.animating && (r.canAdvance(t, a) || s) && r.is(":visible")) { 450 if(d && u) { 451 var f = e(r.vars.asNavFor).data("flexslider"); 452 r.atEnd = t === 0 || t === r.count - 1; 453 f.flexAnimate(t, !0, !1, !0, a); 454 r.direction = r.currentItem < t ? "next" : "prev"; 455 f.direction = r.direction; 456 if(Math.ceil((t + 1) / r.visible) - 1 === r.currentSlide || t === 0) { 457 r.currentItem = t; 458 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 459 return !1 460 } 461 r.currentItem = t; 462 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 463 t = Math.floor(t / r.visible) 464 } 465 r.animating = !0; 466 r.animatingTo = t; 467 n && r.pause(); 468 r.vars.before(r); 469 r.syncExists && !a && v.sync("animate"); 470 r.vars.controlNav && v.controlNav.active(); 471 h || r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 472 r.atEnd = t === 0 || t === r.last;
473 r.vars.directionNav && v.directionNav.update(); 474 if(t === r.last) { 475 r.vars.end(r); 476 r.vars.animationLoop || r.pause() 477 } 478 if(!p) { 479 var m = l ? r.slides.filter(":first").height() : r.computedW, 480 g, y, b; 481 if(h) { 482 g = r.vars.itemMargin; 483 b = (r.itemW + g) * r.move * r.animatingTo; 484 y = b > r.limit && r.visible !== 1 ? r.limit : b 485 } else r.currentSlide === 0 && t === r.count - 1 && r.vars.animationLoop && r.direction !== "next" ? y = c ? (r.count + r.cloneOffset) * m : 0 : r.currentSlide === r.last && t === 0 && r.vars.animationLoop && r.direction !== "prev" ? y = c ? 0 : (r.count + 1) * m : y = c ? (r.count - 1 - t + r.cloneOffset) * m : (t + r.cloneOffset) * m; 486 r.setProps(y, "", r.vars.animationSpeed); 487 if(r.transitions) { 488 if(!r.vars.animationLoop || !r.atEnd) { 489 r.animating = !1; 490 r.currentSlide = r.animatingTo 491 } 492 r.container.unbind("webkitTransitionEnd transitionend"); 493 r.container.bind("webkitTransitionEnd transitionend", function() { 494 r.wrapup(m) 495 }) 496 } else r.container.animate(r.args, r.vars.animationSpeed, r.vars.easing, function() { 497 r.wrapup(m) 498 }) 499 } else if(!o) { 500 r.slides.eq(r.currentSlide).css({ 501 zIndex: 1 502 }).animate({ 503 opacity: 0 504 }, r.vars.animationSpeed, r.vars.easing); 505 r.slides.eq(t).css({ 506 zIndex: 2 507 }).animate({ 508 opacity: 1 509 }, r.vars.animationSpeed, r.vars.easing, r.wrapup) 510 } else { 511 r.slides.eq(r.currentSlide).css({ 512 opacity: 0, 513 zIndex: 1 514 }); 515 r.slides.eq(t).css({ 516 opacity: 1, 517 zIndex: 2 518 }); 519 r.wrapup(m) 520 } 521 r.vars.smoothHeight && v.smoothHeight(r.vars.animationSpeed) 522 } 523 }; 524 r.wrapup = function(e) { 525 !p && !h && (r.currentSlide === 0 && r.animatingTo === r.last && r.vars.animationLoop ? r.setProps(e, "jumpEnd") : r.currentSlide === r.last && r.animatingTo === 0 && r.vars.animationLoop && r.setProps(e, "jumpStart")); 526 r.animating = !1; 527 r.currentSlide = r.animatingTo; 528 r.vars.after(r) 529 }; 530 r.animateSlides = function() { 531 !r.animating && m && r.flexAnimate(r.getTarget("next")) 532 }; 533 r.pause = function() { 534 clearInterval(r.animatedSlides); 535 r.animatedSlides = null; 536 r.playing = !1; 537 r.vars.pausePlay && v.pausePlay.update("play"); 538 r.syncExists && v.sync("pause") 539 }; 540 r.play = function() { 541 r.playing && clearInterval(r.animatedSlides); 542 r.animatedSlides = r.animatedSlides || setInterval(r.animateSlides, r.vars.slideshowSpeed); 543 r.started = r.playing = !0; 544 r.vars.pausePlay && v.pausePlay.update("pause"); 545 r.syncExists && v.sync("play") 546 }; 547 r.stop = function() { 548 r.pause(); 549 r.stopped = !0 550 }; 551 r.canAdvance = function(e, t) { 552 var n = d ? r.pagingCount - 1 : r.last; 553 return t ? !0 : d && r.currentItem === r.count - 1 && e === 0 && r.direction === "prev" ? !0 : d && r.currentItem === 0 && e === r.pagingCount - 1 && r.direction !== "next" ? !1 : e === r.currentSlide && !d ? !1 : r.vars.animationLoop ? !0 : r.atEnd && r.currentSlide === 0 && e === n && r.direction !== "next" ? !1 : r.atEnd && r.currentSlide === n && e === 0 && r.direction === "next" ? !1 : !0 554 }; 555 r.getTarget = function(e) { 556 r.direction = e; 557 return e === "next" ? r.currentSlide === r.last ? 0 : r.currentSlide + 1 : r.currentSlide === 0 ? r.last : r.currentSlide - 1 558 }; 559 r.setProps = function(e, t, n) { 560 var i = function() { 561 var n = e ? e : (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo, 562 i = function() { 563 if(h) 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; 564 switch(t) { 565 case "setTotal": 566 return c ? (r.count - 1 - r.currentSlide + r.cloneOffset) * e : (r.currentSlide + r.cloneOffset) * e; 567 case "setTouch": 568 return c ? e : e; 569 case "jumpEnd": 570 return c ? e : r.count * e; 571 case "jumpStart": 572 return c ? r.count * e : e; 573 default: 574 return e 575 } 576 }(); 577 return i * -1 + "px" 578 }(); 579 if(r.transitions) { 580 i = l ? "translate3d(0," + i + ",0)" : "translate3d(" + i + ",0,0)"; 581 n = n !== undefined ? n / 1e3 + "s" : "0s"; 582 r.container.css("-" + r.pfx + "-transition-duration", n); 583 r.container.css("transition-duration", n) 584 } 585 r.args[r.prop] = i; 586 (r.transitions || n === undefined) && r.container.css(r.args); 587 r.container.css("transform", i) 588 }; 589 r.setup = function(t) {
590 if(!p) { 591 var n, s; 592 if(t === "init") { 593 r.viewport = e('<div class="' + i + 'viewport"></div>').css({ 594 overflow: "hidden", 595 position: "relative" 596 }).appendTo(r).append(r.container); 597 r.cloneCount = 0; 598 r.cloneOffset = 0; 599 if(c) { 600 s = e.makeArray(r.slides).reverse(); 601 r.slides = e(s); 602 r.container.empty().append(r.slides) 603 } 604 } 605 if(r.vars.animationLoop && !h) { 606 r.cloneCount = 2; 607 r.cloneOffset = 1; 608 t !== "init" && r.container.find(".clone").remove(); 609 r.container.append(r.slides.first().clone().addClass("clone").attr("aria-hidden", "true")).prepend(r.slides.last().clone().addClass("clone").attr("aria-hidden", "true")); 610 v.uniqueID(r.slides.first().clone().addClass("clone")).appendTo(r.container); 611 v.uniqueID(r.slides.last().clone().addClass("clone")).prependTo(r.container) 612 } 613 r.newSlides = e(r.vars.selector, r); 614 n = c ? r.count - 1 - r.currentSlide + r.cloneOffset : r.currentSlide + r.cloneOffset; 615 if(l && !h) { 616 r.container.height((r.count + r.cloneCount) * 200 + "%").css("position", "absolute").width("100%"); 617 setTimeout(function() { 618 r.newSlides.css({ 619 display: "block" 620 }); 621 r.doMath(); 622 r.viewport.height(r.h); 623 r.setProps(n * r.h, "init") 624 }, t === "init" ? 100 : 0) 625 } else { 626 r.container.width((r.count + r.cloneCount) * 200 + "%"); 627 r.setProps(n * r.computedW, "init"); 628 setTimeout(function() { 629 r.doMath(); 630 r.newSlides.css({ 631 width: r.computedW, 632 "float": "left", 633 display: "block" 634 }); 635 r.vars.smoothHeight && v.smoothHeight() 636 }, t === "init" ? 100 : 0) 637 } 638 } else { 639 r.slides.css({ 640 width: "100%", 641 "float": "left", 642 marginRight: "-100%", 643 position: "relative" 644 }); 645 t === "init" && (o ? r.slides.css({ 646 opacity: 0, 647 display: "block", 648 webkitTransition: "opacity " + r.vars.animationSpeed / 1e3 + "s ease", 649 zIndex: 1 650 }).eq(r.currentSlide).css({ 651 opacity: 1, 652 zIndex: 2 653 }) : r.slides.css({ 654 opacity: 0, 655 display: "block", 656 zIndex: 1 657 }).eq(r.currentSlide).css({ 658 zIndex: 2 659 }).animate({ 660 opacity: 1 661 }, r.vars.animationSpeed, r.vars.easing)); 662 r.vars.smoothHeight && v.smoothHeight() 663 } 664 h || r.slides.removeClass(i + "active-slide").eq(r.currentSlide).addClass(i + "active-slide"); 665 r.vars.init(r) 666 }; 667 r.doMath = function() { 668 var e = r.slides.first(), 669 t = r.vars.itemMargin, 670 n = r.vars.minItems, 671 i = r.vars.maxItems; 672 r.w = r.viewport === undefined ? r.width() : r.viewport.width(); 673 r.h = e.height(); 674 r.boxPadding = e.outerWidth() - e.width(); 675 if(h) { 676 r.itemT = r.vars.itemWidth + t; 677 r.minW = n ? n * r.itemT : r.w; 678 r.maxW = i ? i * r.itemT - t : r.w; 679 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; 680 r.visible = Math.floor(r.w / r.itemW); 681 r.move = r.vars.move > 0 && r.vars.move < r.visible ? r.vars.move : r.visible; 682 r.pagingCount = Math.ceil((r.count - r.visible) / r.move + 1); 683 r.last = r.pagingCount - 1; 684 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 685 } else { 686 r.itemW = r.w; 687 r.pagingCount = r.count; 688 r.last = r.count - 1 689 } 690 r.computedW = r.itemW - r.boxPadding 691 }; 692 r.update = function(e, t) { 693 r.doMath(); 694 if(!h) { 695 e < r.currentSlide ? r.currentSlide += 1 : e <= r.currentSlide && e !== 0 && (r.currentSlide -= 1); 696 r.animatingTo = r.currentSlide 697 } 698 if(r.vars.controlNav && !r.manualControls) 699 if(t === "add" && !h || r.pagingCount > r.controlNav.length) v.controlNav.update("add"); 700 else if(t === "remove" && !h || r.pagingCount < r.controlNav.length) { 701 if(h && r.currentSlide > r.last) { 702 r.currentSlide -= 1; 703 r.animatingTo -= 1 704 } 705 v.controlNav.update("remove", r.last) 706 } 707 r.vars.directionNav && v.directionNav.update() 708 }; 709 r.addSlide = function(t, n) { 710 var i = e(t); 711 r.count += 1; 712 r.last = r.count - 1; 713 l && c ? n !== undefined ? r.slides.eq(r.count - n).after(i) : r.container.prepend(i) : n !== undefined ? r.slides.eq(n).before(i) : r.container.append(i); 714 r.update(n, "add"); 715 r.slides = e(r.vars.selector + ":not(.clone)", r); 716 r.setup(); 717 r.vars.added(r) 718 }; 719 r.removeSlide = function(t) { 720 var n = isNaN(t) ? r.slides.index(e(t)) : t; 721 r.count -= 1; 722 r.last = r.count - 1; 723 isNaN(t) ? e(t, r.slides).remove() : l && c ? r.slides.eq(r.last).remove() : r.slides.eq(t).remove(); 724 r.doMath(); 725 r.update(n, "remove"); 726 r.slides = e(r.vars.selector + ":not(.clone)", r); 727 r.setup(); 728 r.vars.removed(r) 729 };
730 v.init() 731 }; 732 e(window).blur(function(e) { 733 focused = !1 734 }).focus(function(e) { 735 focused = !0 736 }); 737 e.flexslider.defaults = { 738 namespace: "flex-", 739 selector: ".slides > li", 740 animation: "fade", 741 easing: "swing", 742 direction: "horizontal", 743 reverse: !1, 744 animationLoop: !0, 745 smoothHeight: !1, 746 startAt: 0, 747 slideshow: !0, 748 slideshowSpeed: 7e3, 749 animationSpeed: 600, 750 initDelay: 0, 751 randomize: !1, 752 thumbCaptions: !1, 753 pauseOnAction: !0, 754 pauseOnHover: !1, 755 pauseInvisible: !0, 756 useCSS: !0, 757 touch: !0, 758 video: !1, 759 controlNav: !0, 760 directionNav: !0, 761 prevText: "Previous", 762 nextText: "Next", 763 keyboard: !0, 764 multipleKeyboard: !1, 765 mousewheel: !1, 766 pausePlay: !1, 767 pauseText: "Pause", 768 playText: "Play", 769 controlsContainer: "", 770 manualControls: "", 771 sync: "", 772 asNavFor: "", 773 itemWidth: 0, 774 itemMargin: 0, 775 minItems: 1, 776 maxItems: 0, 777 move: 0, 778 allowOneSlide: !0, 779 start: function() {}, 780 before: function() {}, 781 after: function() {}, 782 end: function() {}, 783 added: function() {}, 784 removed: function() {}, 785 init: function() {} 786 }; 787 e.fn.flexslider = function(t) { 788 t === undefined && (t = {}); 789 if(typeof t == "object") return this.each(function() { 790 var n = e(this), 791 r = t.selector ? t.selector : ".slides > li", 792 i = n.find(r); 793 if(i.length === 1 && t.allowOneSlide === !0 || i.length === 0) { 794 i.fadeIn(400); 795 t.start && t.start(n) 796 } else n.data("flexslider") === undefined && new e.flexslider(this, t) 797 }); 798 var n = e(this).data("flexslider"); 799 switch(t) { 800 case "play": 801 n.play(); 802 break; 803 case "pause": 804 n.pause(); 805 break; 806 case "stop": 807 n.stop(); 808 break; 809 case "next": 810 n.flexAnimate(n.getTarget("next"), !0); 811 break; 812 case "prev": 813 case "previous": 814 n.flexAnimate(n.getTarget("prev"), !0); 815 break; 816 default: 817 typeof t == "number" && n.flexAnimate(t, !0) 818 } 819 } 820})(jQuery); 821(function(e) { 822 e.flexslider = function(t, n) { 823 var r = e(t); 824 r.vars = e.extend({}, e.flexslider.defaults, n); 825 var i = r.vars.namespace, 826 s = window.navigator && window.navigator.msPointerEnabled && window.MSGesture, 827 o = ("ontouchstart" in window || s || window.DocumentTouch && document instanceof DocumentTouch) && r.vars.touch, 828 u = "click touchend MSPointerUp", 829 a = "", 830 f, l = r.vars.direction === "vertical", 831 c = r.vars.reverse, 832 h = r.vars.itemWidth > 0, 833 p = r.vars.animation === "fade", 834 d = r.vars.asNavFor !== "", 835 v = {}, 836 m = !0; 837 e.data(t, "flexslider", r); 838 v = { 839 init: function() { 840 r.animating = !1; 841 r.currentSlide = parseInt(r.vars.startAt ? r.vars.startAt : 0, 10); 842 isNaN(r.currentSlide) && (r.currentSlide = 0); 843 r.animatingTo = r.currentSlide; 844 r.atEnd = r.currentSlide === 0 || r.currentSlide === r.last; 845 r.containerSelector = r.vars.selector.substr(0, r.vars.selector.search(" ")); 846 r.slides = e(r.vars.selector, r); 847 r.container = e(r.containerSelector, r); 848 r.count = r.slides.length; 849 r.syncExists = e(r.vars.sync).length > 0; 850 r.vars.animation === "slide" && (r.vars.animation = "swing"); 851 r.prop = l ? "top" : "marginLeft"; 852 r.args = {}; 853 r.manualPause = !1; 854 r.stopped = !1; 855 r.started = !1; 856 r.startTimeout = null; 857 r.transitions = !r.vars.video && !p && r.vars.useCSS && function() { 858 var e = document.createElement("div"), 859 t = ["perspectiveProperty", "WebkitPerspective", "MozPerspective", "OPerspective", "msPerspective"]; 860 for(var n in t) 861 if(e.style[t[n]] !== undefined) { 862 r.pfx = t[n].replace("Perspective", "").toLowerCase(); 863 r.prop = "-" + r.pfx + "-transform"; 864 return !0 865 } 866 return !1 867 }(); 868 r.vars.controlsContainer !== "" && (r.controlsContainer = e(r.vars.controlsContainer).length > 0 && e(r.vars.controlsContainer)); 869 r.vars.manualControls !== "" && (r.manualControls = e(r.vars.manualControls).length > 0 && e(r.vars.manualControls)); 870 if(r.vars.randomize) { 871 r.slides.sort(function() { 872 return Math.round(Math.random()) - .5 873 }); 874 r.container.empty().append(r.slides) 875 } 876 r.doMath(); 877 r.setup("init"); 878 r.vars.controlNav && v.controlNav.setup(); 879 r.vars.directionNav && v.directionNav.setup(); 880 r.vars.keyboard && (e(r.containerSelector).length === 1 || r.vars.multipleKeyboard) && e(document).bind("keyup", function(e) { 881 var t = e.keyCode; 882 if(!r.animating && (t === 39 || t === 37)) { 883 var n = t === 39 ? r.getTarget("next") : t === 37 ? r.getTarget("prev") : !1; 884 r.flexAnimate(n, r.vars.pauseOnAction) 885 } 886 }); 887 r.vars.mousewheel && r.bind("mousewheel", function(e, t, n, i) { 888 e.preventDefault(); 889 var s = t < 0 ? r.getTarget("next") : r.getTarget("prev"); 890 r.flexAnimate(s, r.vars.pauseOnAction) 891 }); 892 r.vars.pausePlay && v.pausePlay.setup(); 893 r.vars.slideshow && r.vars.pauseInvisible && v.pauseInvisible.init(
893); 894 if(r.vars.slideshow) { 895 r.vars.pauseOnHover && r.hover(function() { 896 !r.manualPlay && !r.manualPause && r.pause() 897 }, function() { 898 !r.manualPause && !r.manualPlay && !r.stopped && r.play() 899 }); 900 if(!r.vars.pauseInvisible || !v.pauseInvisible.isHidden()) r.vars.initDelay > 0 ? r.startTimeout = setTimeout(r.play, r.vars.initDelay) : r.play() 901 } 902 d && v.asNav.setup(); 903 o && r.vars.touch && v.touch(); 904 (!p || p && r.vars.smoothHeight) && e(window).bind("resize orientationchange focus", v.resize); 905 r.find("img").attr("draggable", "false"); 906 setTimeout(function() { 907 r.vars.start(r) 908 }, 200) 909 }, 910 asNav: { 911 setup: function() { 912 r.asNav = !0; 913 r.animatingTo = Math.floor(r.currentSlide / r.move); 914 r.currentItem = r.currentSlide; 915 r.slides.removeClass(i + "active-slide").eq(r.currentItem).addClass(i + "active-slide"); 916 if(!s) r.slides.on(u, function(t) { 917 t.preventDefault(); 918 var n = e(this), 919 s = n.index(), 920 o = n.offset().left - e(r).scrollLeft(); 921 if(o <= 0 && n.hasClass(i + "active-slide")) r.flexAnimate(r.getTarget("prev"), !0); 922 else if(!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass(i + "active-slide")) { 923 r.direction = r.currentItem < s ? "next" : "prev"; 924 r.flexAnimate(s, r.vars.pauseOnAction, !1, !0, !0) 925 } 926 }); 927 else { 928 t._slider = r; 929 r.slides.each(function() { 930 var t = this; 931 t._gesture = new MSGesture; 932 t._gesture.target = t; 933 t.addEventListener("MSPointerDown", function(e) { 934 e.preventDefault(); 935 e.currentTarget._gesture && e.currentTarget._gesture.addPointer(e.pointerId) 936 }, !1); 937 t.addEventListener("MSGestureTap", function(t) { 938 t.preventDefault(); 939 var n = e(this), 940 i = n.index(); 941 if(!e(r.vars.asNavFor).data("flexslider").animating && !n.hasClass("active")) { 942 r.direction = r.currentItem < i ? "next" : "prev"; 943 r.flexAnimate(i, r.vars.pauseOnAction, !1, !0, !0) 944 } 945 }) 946 }) 947 } 948 } 949 }, 950 controlNav: { 951 setup: function() { 952 r.manualControls ? v.controlNav.setupManual() : v.controlNav.setupPaging() 953 }, 954 setupPaging: function() { 955 var t = r.vars.controlNav === "thumbnails" ? "control-thumbs" : "control-paging", 956 n = 1, 957 s, o; 958 r.controlNavScaffold = e('<ol class="' + i + "control-nav " + i + t + '"></ol>'); 959 if(r.pagingCount > 1) 960 for(var f = 0; f < r.pagingCount; f++) { 961 o = r.slides.eq(f); 962 s = r.vars.controlNav === "thumbnails" ? '<img src="' + o.attr("data-thumb") + '"/>' : "<a>" + n + "</a>"; 963 if("thumbnails" === r.vars.controlNav && !0 === r.vars.thumbCaptions) { 964 var l = o.attr("data-thumbcaption"); 965 "" != l && undefined != l && (s += '<span class="' + i + 'caption">' + l + "</span>") 966 } 967 r.controlNavScaffold.append("<li>" + s + "</li>"); 968 n++ 969 } 970 r.controlsContainer ? e(r.controlsContainer).append(r.controlNavScaffold) : r.append(r.controlNavScaffold); 971 v.controlNav.set(); 972 v.controlNav.active(); 973 r.controlNavScaffold.delegate("a, img", u, function(t) { 974 t.preventDefault(); 975 if(a === "" || a === t.type) { 976 var n = e(this), 977 s = r.controlNav.index(n); 978 if(!n.hasClass(i + "active")) { 979 r.direction = s > r.currentSlide ? "next" : "prev"; 980 r.flexAnimate(s, r.vars.pauseOnAction) 981 } 982 } 983 a === "" && (a = t.type); 984 v.setToClearWatchedEvent() 985 }) 986 }, 987 setupManual: function() { 988 r.controlNav = r.manualControls; 989 v.controlNav.active(); 990 r.controlNav.bind(u, function(t) { 991 t.preventDefault(); 992 if(a === "" || a === t.type) { 993 var n = e(this), 994 s = r.controlNav.index(n); 995 if(!n.hasClass(i + "active")) { 996 s > r.currentSlide ? r.direction = "next" : r.direction = "prev"; 997 r.flexAnimate(s, r.vars.pauseOnAction) 998 } 999 } 1000 a === "" && (a = t.type); 1001 v.setToClearWatchedEvent() 1002 }) 1003 }, 1004 set: function() { 1005 var t = r.vars.controlNav === "thumbnails" ? "img" : "a"; 1006 r.controlNav = e("." + i + "control-nav li " + t, r.controlsContainer ? r.controlsContainer : r) 1007 }, 1008 active: function() { 1009 r.controlNav.removeClass(i + "active").eq(r.animatingTo).addClass(i + "active") 1010 }, 1011 update: function(t, n) { 1012 r.pagingCount > 1 && t === "add" ? r.controlNavScaffold.append(e("<li><a>" + r.count + "</a></li>")) : r.pagingCount === 1 ? r.controlNavScaffold.find("li").remove() : r.controlNav.eq(n).closest("li").remove(); 1013 v.controlNav.set(); 1014 r.pagingCount > 1 && r.pagingCount !== r.controlNav.length ? r.update(n, t) : v.controlNav.active() 1015 } 1016 }, 1017 directionNav: { 1018 setup: function() { 1019 var t = e('<ul class="' + i + 'direction-nav"><li><a class="' + i + 'prev" href="#">
1019' + r.vars.prevText + '</a></li><li><a class="' + i + 'next" href="#">' + r.vars.nextText + "</a></li></ul>"); 1020 if(r.controlsContainer) { 1021 e(r.controlsContainer).append(t); 1022 r.directionNav = e("." + i + "direction-nav li a", r.controlsContainer) 1023 } else { 1024 r.append(t); 1025 r.directionNav = e("." + i + "direction-nav li a", r) 1026 } 1027 v.directionNav.update(); 1028 r.directionNav.bind(u, function(t) { 1029 t.preventDefault(); 1030 var n; 1031 if(a === "" || a === t.type) { 1032 n = e(this).hasClass(i + "next") ? r.getTarget("next") : r.getTarget("prev"); 1033 r.flexAnimate(n, r.vars.pauseOnAction) 1034 } 1035 a === "" && (a = t.type); 1036 v.setToClearWatchedEvent() 1037 }) 1038 }, 1039 update: function() { 1040 var e = i + "disabled"; 1041 r.pagingCount === 1 ? r.directionNav.addClass(e).attr("tabindex", "-1") : r.vars.animationLoop ? r.directionNav.removeClass(e).removeAttr("tabindex") : r.animatingTo === 0 ? r.directionNav.removeClass(e).filter("." + i + "prev").addClass(e).attr("tabindex", "-1") : r.animatingTo === r.last ? r.directionNav.removeClass(e).filter("." + i + "next").addClass(e).attr("tabindex", "-1") : r.directionNav.removeClass(e).removeAttr("tabindex") 1042 } 1043 }, 1044 pausePlay: { 1045 setup: function() { 1046 var t = e('<div class="' + i + 'pauseplay"><a></a></div>'); 1047 if(r.controlsContainer) { 1048 r.controlsContainer.append(t); 1049 r.pausePlay = e("." + i + "pauseplay a", r.controlsContainer) 1050 } else { 1051 r.append(t); 1052 r.pausePlay = e("." + i + "pauseplay a", r) 1053 } 1054 v.pausePlay.update(r.vars.slideshow ? i + "pause" : i + "play"); 1055 r.pausePlay.bind(u, function(t) { 1056 t.preventDefault(); 1057 if(a === "" || a === t.type) 1058 if(e(this).hasClass(i + "pause")) { 1059 r.manualPause = !0; 1060 r.manualPlay = !1; 1061 r.pause() 1062 } else { 1063 r.manualPause = !1; 1064 r.manualPlay = !0; 1065 r.play() 1066 } 1067 a === "" && (a = t.type); 1068 v.setToClearWatchedEvent() 1069 }) 1070 }, 1071 update: function(e) { 1072 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) 1073 } 1074 }, 1075 touch: function() { 1076 var e, n, i, o, u, a, f = !1, 1077 d = 0, 1078 v = 0, 1079 m = 0; 1080 if(!s) { 1081 t.addEventListener("touchstart", g, !1); 1082 1083 function g(s) { 1084 if(r.animating) s.preventDefault(); 1085 else if(window.navigator.msPointerEnabled || s.touches.length === 1) { 1086 r.pause(); 1087 o = l ? r.h : r.w; 1088 a = Number(new Date); 1089 d = s.touches[0].pageX; 1090 v = s.touches[0].pageY; 1091 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; 1092 e = l ? v : d; 1093 n = l ? d : v; 1094 t.addEventListener("touchmove", y, !1); 1095 t.addEventListener("touchend", b, !1) 1096 } 1097 } 1098 1099 function y(t) { 1100 d = t.touches[0].pageX; 1101 v = t.touches[0].pageY; 1102 u = l ? e - v : e - d; 1103 f = l ? Math.abs(u) < Math.abs(d - n) : Math.abs(u) < Math.abs(v - n); 1104 var s = 500; 1105 if(!f || Number(new Date) - a > s) { 1106 t.preventDefault(); 1107 if(!p && r.transitions) { 1108 r.vars.animationLoop || (u /= r.currentSlide === 0 && u < 0 || r.currentSlide === r.last && u > 0 ? Math.abs(u) / o + 2 : 1); 1109 r.setProps(i + u, "setTouch") 1110 } 1111 } 1112 } 1113 1114 function b(s) { 1115 t.removeEventListener("touchmove", y, !1); 1116 if(r.animatingTo === r.currentSlide && !f && u !== null) { 1117 var l = c ? -u : u, 1118 h = l > 0 ? r.getTarget("next") : r.getTarget("prev"); 1119 r.canAdvance(h) && (Number(new Date) - a < 550 && Math.abs(l) > 50 || Math.abs(l) > o / 2) ? r.flexAnimate(h, r.vars.pauseOnAction) : p || r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, !0) 1120 } 1121 t.removeEventListener("touchend", b, !1); 1122 e = null; 1123 n = null; 1124 u = null; 1125 i = null 1126 } 1127 } else { 1128 t.style.msTouchAction = "none"; 1129 t._gesture = new MSGesture; 1130 t._gesture.target = t; 1131 t.addEventListener("MSPointerDown", w, !1); 1132 t._slider = r; 1133 t.addEventListener("MSGestureChange", E, !1); 1134 t.addEventListener("MSGestureEnd", S, !1); 1135 1136 function w(e) { 1137 e.stopPropagation(); 1138 if(r.animating) e.preventDefault(); 1139 else { 1140 r.pause(); 1141 t._gesture.addPointer(e.pointerId); 1142 m = 0; 1143 o = l ? r.h : r.w; 1144 a = Number(new Date); 1145 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 1146 } 1147 } 1148 1149 function E(e) { 1150 e.stopPropagation(); 1151 var n = e.target._slider; 1152 if(!n) return; 1153 var r = -e.translationX,
1154 s = -e.translationY; 1155 m += l ? s : r; 1156 u = m; 1157 f = l ? Math.abs(m) < Math.abs(-r) : Math.abs(m) < Math.abs(-s); 1158 if(e.detail === e.MSGESTURE_FLAG_INERTIA) { 1159 setImmediate(function() { 1160 t._gesture.stop() 1161 }); 1162 return 1163 } 1164 if(!f || Number(new Date) - a > 500) { 1165 e.preventDefault(); 1166 if(!p && n.transitions) { 1167 n.vars.animationLoop || (u = m / (n.currentSlide === 0 && m < 0 || n.currentSlide === n.last && m > 0 ? Math.abs(m) / o + 2 : 1)); 1168 n.setProps(i + u, "setTouch") 1169 } 1170 } 1171 } 1172 1173 function S(t) { 1174 t.stopPropagation(); 1175 var r = t.target._slider; 1176 if(!r) return; 1177 if(r.animatingTo === r.currentSlide && !f && u !== null) { 1178 var s = c ? -u : u, 1179 l = s > 0 ? r.getTarget("next") : r.getTarget("prev"); 1180 r.canAdvance(l) && (Number(new Date) - a < 550 && Math.abs(s) > 50 || Math.abs(s) > o / 2) ? r.flexAnimate(l, r.vars.pauseOnAction) : p || r.flexAnimate(r.currentSlide, r.vars.pauseOnAction, !0) 1181 } 1182 e = null; 1183 n = null; 1184 u = null; 1185 i = null; 1186 m = 0 1187 } 1188 } 1189 }, 1190 resize: function() { 1191 if(!r.animating && r.is(":visible")) { 1192 h || r.doMath(); 1193 if(p) v.smoothHeight(); 1194 else if(h) { 1195 r.slides.width(r.computedW); 1196 r.update(r.pagingCount); 1197 r.setProps() 1198 } else if(l) { 1199 r.viewport.height(r.h); 1200 r.setProps(r.h, "setTotal") 1201 } else { 1202 r.vars.smoothHeight && v.smoothHeight(); 1203 r.vars.smoothHeight && v.smoothHeight(); 1204 r.newSlides.width(r.computedW); 1205 r.setProps(r.computedW, "setTotal") 1206 } 1207 } 1208 }, 1209 smoothHeight: function(e) { 1210 if(!l || p) { 1211 var t = p ? r : r.viewport; 1212 e ? t.animate({ 1213 height: r.slides.eq(r.animatingTo).height() 1214 }, e) : t.height(r.slides.eq(r.animatingTo).height()) 1215 } 1216 }, 1217 sync: function(t) { 1218 var n = e(r.vars.sync).data("flexslider"), 1219 i = r.animatingTo; 1220 switch(t) { 1221 case "animate": 1222 n.flexAnimate(i, r.vars.pauseOnAction, !1, !0); 1223 break; 1224 case "play": 1225 !n.playing && !n.asNav && n.play(); 1226 break; 1227 case "pause": 1228 n.pause() 1229 } 1230 }, 1231 uniqueID: function(t) { 1232 t.find("[id]").each(function() { 1233 var t = e(this); 1234 t.attr("id", t.attr("id") + "_clone") 1235 }); 1236 return t 1237 }, 1238 pauseInvisible: { 1239 visProp: null, 1240 init: function() { 1241 var e = ["webkit", "moz", "ms", "o"]; 1242 if("hidden" in document) return "hidden"; 1243 for(var t = 0; t < e.length; t++) e[t] + "Hidden" in document && (v.pauseInvisible.visProp = e[t] + "Hidden"); 1244 if(v.pauseInvisible.visProp) { 1245 var n = v.pauseInvisible.visProp.replace(/[H|h]idden/, "") + "visibilitychange"; 1246 document.addEventListener(n, function() { 1247 v.pauseInvisible.isHidden() ? r.startTimeout ? clearTimeout(r.startTimeout) : r.pause() : r.started ? r.play() : r.vars.initDelay > 0 ? setTimeout(r.play, r.vars.initDelay) : r.play() 1248 }) 1249 } 1250 }, 1251 isHidden: function() { 1252 return document[v.pauseInvisible.visProp] || !1 1253 } 1254 }, 1255 setToClearWatchedEvent: function() { 1256 clearTimeout(f); 1257 f = setTimeout(function() { 1258 a = "" 1259 }, 3e3) 1260 } 1261 }; 1262 r.flexAnimate = function(t, n, s, u, a) { 1263 !r.vars.animationLoop && t !== r.currentSlide && (r.direction = t > r.currentSlide ? "next" : "prev"); 1264 d && r.pagingCount === 1 && (r.direction = r.currentItem < t ? "next" : "prev"); 1265 if(!r.animating && (r.canAdvance(t, a) || s) && r.is(":visible")) { 1266 if(d && u) { 1267 var f = e(r.vars.asNavFor).data("flexslider"); 1268 r.atEnd = t === 0 || t === r.count - 1; 1269 f.flexAnimate(t, !0, !1, !0, a); 1270 r.direction = r.currentItem < t ? "next" : "prev"; 1271 f.direction = r.direction; 1272 if(Math.ceil((t + 1) / r.visible) - 1 === r.currentSlide || t === 0) { 1273 r.currentItem = t; 1274 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 1275 return !1 1276 } 1277 r.currentItem = t; 1278 r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 1279 t = Math.floor(t / r.visible) 1280 } 1281 r.animating = !0; 1282 r.animatingTo = t; 1283 n && r.pause(); 1284 r.vars.before(r); 1285 r.syncExists && !a && v.sync("animate"); 1286 r.vars.controlNav && v.controlNav.active(); 1287 h || r.slides.removeClass(i + "active-slide").eq(t).addClass(i + "active-slide"); 1288 r.atEnd = t === 0 || t === r.last;
1289 r.vars.directionNav && v.directionNav.update(); 1290 if(t === r.last) { 1291 r.vars.end(r); 1292 r.vars.animationLoop || r.pause() 1293 } 1294 if(!p) { 1295 var m = l ? r.slides.filter(":first").height() : r.computedW, 1296 g, y, b; 1297 if(h) { 1298 g = r.vars.itemMargin; 1299 b = (r.itemW + g) * r.move * r.animatingTo; 1300 y = b > r.limit && r.visible !== 1 ? r.limit : b 1301 } else r.currentSlide === 0 && t === r.count - 1 && r.vars.animationLoop && r.direction !== "next" ? y = c ? (r.count + r.cloneOffset) * m : 0 : r.currentSlide === r.last && t === 0 && r.vars.animationLoop && r.direction !== "prev" ? y = c ? 0 : (r.count + 1) * m : y = c ? (r.count - 1 - t + r.cloneOffset) * m : (t + r.cloneOffset) * m; 1302 r.setProps(y, "", r.vars.animationSpeed); 1303 if(r.transitions) { 1304 if(!r.vars.animationLoop || !r.atEnd) { 1305 r.animating = !1; 1306 r.currentSlide = r.animatingTo 1307 } 1308 r.container.unbind("webkitTransitionEnd transitionend"); 1309 r.container.bind("webkitTransitionEnd transitionend", function() { 1310 r.wrapup(m) 1311 }) 1312 } else r.container.animate(r.args, r.vars.animationSpeed, r.vars.easing, function() { 1313 r.wrapup(m) 1314 }) 1315 } else if(!o) { 1316 r.slides.eq(r.currentSlide).css({ 1317 zIndex: 1 1318 }).animate({ 1319 opacity: 0 1320 }, r.vars.animationSpeed, r.vars.easing); 1321 r.slides.eq(t).css({ 1322 zIndex: 2 1323 }).animate({ 1324 opacity: 1 1325 }, r.vars.animationSpeed, r.vars.easing, r.wrapup) 1326 } else { 1327 r.slides.eq(r.currentSlide).css({ 1328 opacity: 0, 1329 zIndex: 1 1330 }); 1331 r.slides.eq(t).css({ 1332 opacity: 1, 1333 zIndex: 2 1334 }); 1335 r.wrapup(m) 1336 } 1337 r.vars.smoothHeight && v.smoothHeight(r.vars.animationSpeed) 1338 } 1339 }; 1340 r.wrapup = function(e) { 1341 !p && !h && (r.currentSlide === 0 && r.animatingTo === r.last && r.vars.animationLoop ? r.setProps(e, "jumpEnd") : r.currentSlide === r.last && r.animatingTo === 0 && r.vars.animationLoop && r.setProps(e, "jumpStart")); 1342 r.animating = !1; 1343 r.currentSlide = r.animatingTo; 1344 r.vars.after(r) 1345 }; 1346 r.animateSlides = function() { 1347 !r.animating && m && r.flexAnimate(r.getTarget("next")) 1348 }; 1349 r.pause = function() { 1350 clearInterval(r.animatedSlides); 1351 r.animatedSlides = null; 1352 r.playing = !1; 1353 r.vars.pausePlay && v.pausePlay.update("play"); 1354 r.syncExists && v.sync("pause") 1355 }; 1356 r.play = function() { 1357 r.playing && clearInterval(r.animatedSlides); 1358 r.animatedSlides = r.animatedSlides || setInterval(r.animateSlides, r.vars.slideshowSpeed); 1359 r.started = r.playing = !0; 1360 r.vars.pausePlay && v.pausePlay.update("pause"); 1361 r.syncExists && v.sync("play") 1362 }; 1363 r.stop = function() { 1364 r.pause(); 1365 r.stopped = !0 1366 }; 1367 r.canAdvance = function(e, t) { 1368 var n = d ? r.pagingCount - 1 : r.last; 1369 return t ? !0 : d && r.currentItem === r.count - 1 && e === 0 && r.direction === "prev" ? !0 : d && r.currentItem === 0 && e === r.pagingCount - 1 && r.direction !== "next" ? !1 : e === r.currentSlide && !d ? !1 : r.vars.animationLoop ? !0 : r.atEnd && r.currentSlide === 0 && e === n && r.direction !== "next" ? !1 : r.atEnd && r.currentSlide === n && e === 0 && r.direction === "next" ? !1 : !0 1370 }; 1371 r.getTarget = function(e) { 1372 r.direction = e; 1373 return e === "next" ? r.currentSlide === r.last ? 0 : r.currentSlide + 1 : r.currentSlide === 0 ? r.last : r.currentSlide - 1 1374 }; 1375 r.setProps = function(e, t, n) { 1376 var i = function() { 1377 var n = e ? e : (r.itemW + r.vars.itemMargin) * r.move * r.animatingTo, 1378 i = function() { 1379 if(h) 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; 1380 switch(t) { 1381 case "setTotal": 1382 return c ? (r.count - 1 - r.currentSlide + r.cloneOffset) * e : (r.currentSlide + r.cloneOffset) * e; 1383 case "setTouch": 1384 return c ? e : e; 1385 case "jumpEnd": 1386 return c ? e : r.count * e; 1387 case "jumpStart": 1388 return c ? r.count * e : e; 1389 default: 1390 return e 1391 } 1392 }(); 1393 return i * -1 + "px" 1394 }(); 1395 if(r.transitions) { 1396 i = l ? "translate3d(0," + i + ",0)" : "translate3d(" + i + ",0,0)"; 1397 n = n !== undefined ? n / 1e3 + "s" : "0s"; 1398 r.container.css("-" + r.pfx + "-transition-duration", n); 1399 r.container.css("transition-duration", n) 1400 } 1401 r.args[r.prop] = i; 1402 (r.transitions || n === undefined) && r.container.css(r.args); 1403 r.container.css("transform", i) 1404 }; 1405 r.setup = function(t) {
1406 if(!p) { 1407 var n, s; 1408 if(t === "init") { 1409 r.viewport = e('<div class="' + i + 'viewport"></div>').css({ 1410 overflow: "hidden", 1411 position: "relative" 1412 }).appendTo(r).append(r.container); 1413 r.cloneCount = 0; 1414 r.cloneOffset = 0; 1415 if(c) { 1416 s = e.makeArray(r.slides).reverse(); 1417 r.slides = e(s); 1418 r.container.empty().append(r.slides) 1419 } 1420 } 1421 if(r.vars.animationLoop && !h) { 1422 r.cloneCount = 2; 1423 r.cloneOffset = 1; 1424 t !== "init" && r.container.find(".clone").remove(); 1425 r.container.append(r.slides.first().clone().addClass("clone").attr("aria-hidden", "true")).prepend(r.slides.last().clone().addClass("clone").attr("aria-hidden", "true")); 1426 v.uniqueID(r.slides.first().clone().addClass("clone")).appendTo(r.container); 1427 v.uniqueID(r.slides.last().clone().addClass("clone")).prependTo(r.container) 1428 } 1429 r.newSlides = e(r.vars.selector, r); 1430 n = c ? r.count - 1 - r.currentSlide + r.cloneOffset : r.currentSlide + r.cloneOffset; 1431 if(l && !h) { 1432 r.container.height((r.count + r.cloneCount) * 200 + "%").css("position", "absolute").width("100%"); 1433 setTimeout(function() { 1434 r.newSlides.css({ 1435 display: "block" 1436 }); 1437 r.doMath(); 1438 r.viewport.height(r.h); 1439 r.setProps(n * r.h, "init") 1440 }, t === "init" ? 100 : 0) 1441 } else { 1442 r.container.width((r.count + r.cloneCount) * 200 + "%"); 1443 r.setProps(n * r.computedW, "init"); 1444 setTimeout(function() { 1445 r.doMath(); 1446 r.newSlides.css({ 1447 width: r.computedW, 1448 "float": "left", 1449 display: "block" 1450 }); 1451 r.vars.smoothHeight && v.smoothHeight() 1452 }, t === "init" ? 100 : 0) 1453 } 1454 } else { 1455 r.slides.css({ 1456 width: "100%", 1457 "float": "left", 1458 marginRight: "-100%", 1459 position: "relative" 1460 }); 1461 t === "init" && (o ? r.slides.css({ 1462 opacity: 0, 1463 display: "block", 1464 webkitTransition: "opacity " + r.vars.animationSpeed / 1e3 + "s ease", 1465 zIndex: 1 1466 }).eq(r.currentSlide).css({ 1467 opacity: 1, 1468 zIndex: 2 1469 }) : r.slides.css({ 1470 opacity: 0, 1471 display: "block", 1472 zIndex: 1 1473 }).eq(r.currentSlide).css({ 1474 zIndex: 2 1475 }).animate({ 1476 opacity: 1 1477 }, r.vars.animationSpeed, r.vars.easing)); 1478 r.vars.smoothHeight && v.smoothHeight() 1479 } 1480 h || r.slides.removeClass(i + "active-slide").eq(r.currentSlide).addClass(i + "active-slide"); 1481 r.vars.init(r) 1482 }; 1483 r.doMath = function() { 1484 var e = r.slides.first(), 1485 t = r.vars.itemMargin, 1486 n = r.vars.minItems, 1487 i = r.vars.maxItems; 1488 r.w = r.viewport === undefined ? r.width() : r.viewport.width(); 1489 r.h = e.height(); 1490 r.boxPadding = e.outerWidth() - e.width(); 1491 if(h) { 1492 //; 1493 r.itemT = r.vars.itemWidth + t; 1494 r.minW = n ? n * r.itemT : r.w; 1495 r.maxW = i ? i * r.itemT - t : r.w; 1496 if(r.vars.ifautoW){ 1497 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; 1498 }else{ 1499 r.itemW = r.vars.itemWidth; 1500 } 1501 r.visible = Math.floor(r.w / r.itemW); 1502 r.move = r.vars.move > 0 && r.vars.move < r.visible ? r.vars.move : r.visible; 1503 r.pagingCount = Math.ceil((r.count - r.visible) / r.move + 1); 1504 r.last = r.pagingCount - 1; 1505 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 1506 } else { 1507 r.itemW = r.w; 1508 r.pagingCount = r.count; 1509 r.last = r.count - 1 1510 } 1511 r.computedW = r.itemW - r.boxPadding 1512 }; 1513 r.update = function(e, t) { 1514 r.doMath(); 1515 if(!h) { 1516 e < r.currentSlide ? r.currentSlide += 1 : e <= r.currentSlide && e !== 0 && (r.currentSlide -= 1); 1517 r.animatingTo = r.currentSlide 1518 } 1519 if(r.vars.controlNav && !r.manualControls) 1520 if(t === "add" && !h || r.pagingCount > r.controlNav.length) v.controlNav.update("add"); 1521 else if(t === "remove" && !h || r.pagingCount < r.controlNav.length) { 1522 if(h && r.currentSlide > r.last) { 1523 r.currentSlide -= 1; 1524 r.animatingTo -= 1 1525 } 1526 v.controlNav.update("remove", r.last) 1527 }
1528 r.vars.directionNav && v.directionNav.update() 1529 }; 1530 r.addSlide = function(t, n) { 1531 var i = e(t); 1532 r.count += 1; 1533 r.last = r.count - 1; 1534 l && c ? n !== undefined ? r.slides.eq(r.count - n).after(i) : r.container.prepend(i) : n !== undefined ? r.slides.eq(n).before(i) : r.container.append(i); 1535 r.update(n, "add"); 1536 r.slides = e(r.vars.selector + ":not(.clone)", r); 1537 r.setup(); 1538 r.vars.added(r) 1539 }; 1540 r.removeSlide = function(t) { 1541 var n = isNaN(t) ? r.slides.index(e(t)) : t; 1542 r.count -= 1; 1543 r.last = r.count - 1; 1544 isNaN(t) ? e(t, r.slides).remove() : l && c ? r.slides.eq(r.last).remove() : r.slides.eq(t).remove(); 1545 r.doMath(); 1546 r.update(n, "remove"); 1547 r.slides = e(r.vars.selector + ":not(.clone)", r); 1548 r.setup(); 1549 r.vars.removed(r) 1550 }; 1551 v.init() 1552 }; 1553 e(window).blur(function(e) { 1554 focused = !1 1555 }).focus(function(e) { 1556 focused = !0 1557 }); 1558 e.flexslider.defaults = { 1559 namespace: "flex-", 1560 selector: ".slides > li", 1561 animation: "fade", 1562 easing: "swing", 1563 direction: "horizontal", 1564 reverse: !1, 1565 animationLoop: !0, 1566 smoothHeight: !1, 1567 startAt: 0, 1568 slideshow: !0, 1569 slideshowSpeed: 7e3, 1570 animationSpeed: 600, 1571 initDelay: 0, 1572 randomize: !1, 1573 thumbCaptions: !1, 1574 pauseOnAction: !0, 1575 pauseOnHover: !1, 1576 pauseInvisible: !0, 1577 useCSS: !0, 1578 touch: !0, 1579 video: !1, 1580 controlNav: !0, 1581 directionNav: !0, 1582 prevText: "Previous", 1583 nextText: "Next", 1584 keyboard: !0, 1585 multipleKeyboard: !1, 1586 mousewheel: !1, 1587 pausePlay: !1, 1588 pauseText: "Pause", 1589 playText: "Play", 1590 controlsContainer: "", 1591 manualControls: "", 1592 sync: "", 1593 asNavFor: "", 1594 itemWidth: 0, 1595 itemMargin: 0, 1596 minItems: 1, 1597 maxItems: 0, 1598 move: 0, 1599 allowOneSlide: !0, 1600 start: function() {}, 1601 before: function() {}, 1602 after: function() {}, 1603 end: function() {}, 1604 added: function() {}, 1605 removed: function() {}, 1606 init: function() {} 1607 }; 1608 e.fn.flexslider = function(t) { 1609 t === undefined && (t = {}); 1610 if(typeof t == "object") return this.each(function() { 1611 var n = e(this), 1612 r = t.selector ? t.selector : ".slides > li", 1613 i = n.find(r); 1614 if(i.length === 1 && t.allowOneSlide === !0 || i.length === 0) { 1615 i.fadeIn(400); 1616 t.start && t.start(n) 1617 } else n.data("flexslider") === undefined && new e.flexslider(this, t) 1618 }); 1619 var n = e(this).data("flexslider"); 1620 switch(t) { 1621 case "play": 1622 n.play(); 1623 break; 1624 case "pause": 1625 n.pause(); 1626 break; 1627 case "stop": 1628 n.stop(); 1629 break; 1630 case "next": 1631 n.flexAnimate(n.getTarget("next"), !0); 1632 break; 1633 case "prev": 1634 case "previous": 1635 n.flexAnimate(n.getTarget("prev"), !0); 1636 break; 1637 default: 1638 typeof t == "number" && n.flexAnimate(t, !0) 1639 } 1640 } 1641})(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.