1(function(window, document, undefined) { 2 "use strict"; 3 var docEl = document.documentElement; 4 var util = { 5 create: function(el) { 6 return document.createElement(el); 7 }, 8 old: !!/(Android\s(1.|2.))|(Silk\/1.)/i.test(navigator.userAgent), 9 pfx: function() { 10 var style = document.createElement("dummy").style; 11 var prefixes = [ "Webkit", "Moz", "O", "ms" ]; 12 var memory = {}; 13 return function(prop) { 14 if (typeof memory[prop] === "undefined") { 15 var ucProp = prop.charAt(0).toUpperCase() + prop.substr(1), props = (prop + " " + prefixes.join(ucProp + " ") + ucProp).split(" "); 16 memory[prop] = null; 17 for (var i in props) { 18 if (style[props[i]] !== undefined) { 19 memory[prop] = props[i]; 20 break; 21 } 22 } 23 } 24 return memory[prop]; 25 }; 26 }() 27 }; 28 var Feature = { 29 css3Dtransform: function() { 30 var test = !util.old && util.pfx("perspective") !== null; 31 return !!test; 32 }(), 33 cssTransform: function() { 34 var test = !util.old && util.pfx("transformOrigin") !== null; 35 return !!test; 36 }(), 37 cssTransition: function() { 38 var test = util.pfx("transition") !== null; 39 return !!test; 40 }(), 41 cssFlexbox: function() { 42 var test = util.pfx("flexBasis") !== null; 43 return !!test; 44 }(), 45 addEventListener: !!window.addEventListener, 46 querySelectorAll: !!document.querySelectorAll, 47 matchMedia: !!window.matchMedia, 48 deviceMotion: "DeviceMotionEvent" in window, 49 deviceOrientation: "DeviceOrientationEvent" in window, 50 contextMenu: "contextMenu" in docEl && "HTMLMenuItemElement" in window, 51 classList: "classList" in docEl, 52 placeholder: "placeholder" in util.create("input"), 53 localStorage: function() { 54 var test = "x"; 55 try { 56 localStorage.setItem(test, test); 57 localStorage.removeItem(test); 58 return true; 59 } catch (err) { 60 return false; 61 } 62 }(), 63 historyAPI: window.history && "pushState" in window.history, 64 serviceWorker: "serviceWorker" in navigator, 65 viewportUnit: function(el) { 66 try { 67 el.style.width = "1vw"; 68 var test = el.style.width !== ""; 69 return !!test; 70 } catch (err) { 71 return false; 72 } 73 }(util.create("dummy")), 74 remUnit: function(el) { 75 try { 76 el.style.width = "1rem"; 77 var test = el.style.width !== ""; 78 return !!test; 79 } catch (err) { 80 return false; 81 } 82 }(util.create("dummy")), 83 canvas: function(el) { 84 return !!(el.getContext && el.getContext("2d")); 85 }(util.create("canvas")), 86 svg: !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect, 87 webGL: function(el) { 88 try { 89 return !!(window.WebGLRenderingContext && (el.getContext("webgl") || el.getContext("experimental-webgl"))); 90 } catch (err) { 91 return false; 92 } 93 }(util.create("canvas")), 94 cors: "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest(), 95 touch: !!("ontouchstart" in window || window.navigator && window.navigator.msPointerEnabled && window.MSGesture || window.DocumentTouch && document instanceof DocumentTouch), 96 async: "async" in util.create("script"), 97 defer: "defer" in util.create("script"), 98 geolocation: "geolocation" in navigator, 99 srcset: "srcset" in util.create("img"), 100 sizes: "sizes" in util.create("img"), 101 pictureElement: "HTMLPictureElement" in window, 102 testAll: function() { 103 var classes = " js"; 104 for (var test in this) { 105 if (test !== "testAll" && test !== "constructor" && this[test]) { 106 classes += " " + test; 107 } 108 } 109 docEl.className += classes.toLowerCase(); 110 } 111 }; 112 window.feature = Feature; 113})(window, document); 114 115(function() { 116 var __indexOf = [].indexOf || function(item) { 117 for (var i = 0, l = this.length; i < l; i++) { 118 if (i in this && this[i] === item) return i; 119 } 120 return -1; 121 }, __slice = [].slice; 122 (function(root, factory) { 123 if (typeof define === "function" && define.amd) { 124 return define("waypoints", [ "jquery" ], function($) { 125 return factory($, root); 126 }); 127 } else { 128 return factory(root.jQuery, root); 129 } 130 })(window, function($, window) { 131 var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps; 132 $w = $(window); 133 isTouch = __indexOf.call(window, "ontouchstart") >= 0; 134 allWaypoints = { 135 horizontal: {}, 136 vertical: {} 137 }; 138 contextCounter = 1; 139 contexts = {}; 140 contextKey = "waypoints-context-id"; 141 resizeEvent = "resize.waypoints"; 142 scrollEvent = "scroll.waypoints"; 143 waypointCounter = 1; 144 waypointKey = "waypoints-waypoint-ids"; 145 wp = "waypoint"; 146 wps = "waypoints"; 147 Context = function() { 148 function Context($element) { 149 var _this = this; 150 this.$element = $element; 151 this.element = $element[0]; 152 this.didResize = false;
vendor: 18,029 bytes, lines 153-557
153 this.didScroll = false; 154 this.id = "context" + contextCounter++; 155 this.oldScroll = { 156 x: $element.scrollLeft(), 157 y: $element.scrollTop() 158 }; 159 this.waypoints = { 160 horizontal: {}, 161 vertical: {} 162 }; 163 this.element[contextKey] = this.id; 164 contexts[this.id] = this; 165 $element.bind(scrollEvent, function() { 166 var scrollHandler; 167 if (!(_this.didScroll || isTouch)) { 168 _this.didScroll = true; 169 scrollHandler = function() { 170 _this.doScroll(); 171 return _this.didScroll = false; 172 }; 173 return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle); 174 } 175 }); 176 $element.bind(resizeEvent, function() { 177 var resizeHandler; 178 if (!_this.didResize) { 179 _this.didResize = true; 180 resizeHandler = function() { 181 $[wps]("refresh"); 182 return _this.didResize = false; 183 }; 184 return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle); 185 } 186 }); 187 } 188 Context.prototype.doScroll = function() { 189 var axes, _this = this; 190 axes = { 191 horizontal: { 192 newScroll: this.$element.scrollLeft(), 193 oldScroll: this.oldScroll.x, 194 forward: "right", 195 backward: "left" 196 }, 197 vertical: { 198 newScroll: this.$element.scrollTop(), 199 oldScroll: this.oldScroll.y, 200 forward: "down", 201 backward: "up" 202 } 203 }; 204 if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) { 205 $[wps]("refresh"); 206 } 207 $.each(axes, function(aKey, axis) { 208 var direction, isForward, triggered; 209 triggered = []; 210 isForward = axis.newScroll > axis.oldScroll; 211 direction = isForward ? axis.forward : axis.backward; 212 $.each(_this.waypoints[aKey], function(wKey, waypoint) { 213 var _ref, _ref1; 214 if (axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll) { 215 return triggered.push(waypoint); 216 } else if (axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll) { 217 return triggered.push(waypoint); 218 } 219 }); 220 triggered.sort(function(a, b) { 221 return a.offset - b.offset; 222 }); 223 if (!isForward) { 224 triggered.reverse(); 225 } 226 return $.each(triggered, function(i, waypoint) { 227 if (waypoint.options.continuous || i === triggered.length - 1) { 228 return waypoint.trigger([ direction ]); 229 } 230 }); 231 }); 232 return this.oldScroll = { 233 x: axes.horizontal.newScroll, 234 y: axes.vertical.newScroll 235 }; 236 }; 237 Context.prototype.refresh = function() { 238 var axes, cOffset, isWin, _this = this; 239 isWin = $.isWindow(this.element); 240 cOffset = this.$element.offset(); 241 this.doScroll(); 242 axes = { 243 horizontal: { 244 contextOffset: isWin ? 0 : cOffset.left, 245 contextScroll: isWin ? 0 : this.oldScroll.x, 246 contextDimension: this.$element.width(), 247 oldScroll: this.oldScroll.x, 248 forward: "right", 249 backward: "left", 250 offsetProp: "left" 251 }, 252 vertical: { 253 contextOffset: isWin ? 0 : cOffset.top, 254 contextScroll: isWin ? 0 : this.oldScroll.y, 255 contextDimension: isWin ? $[wps]("viewportHeight") : this.$element.height(), 256 oldScroll: this.oldScroll.y, 257 forward: "down", 258 backward: "up", 259 offsetProp: "top" 260 } 261 }; 262 return $.each(axes, function(aKey, axis) { 263 return $.each(_this.waypoints[aKey], function(i, waypoint) { 264 var adjustment, elementOffset, oldOffset, _ref, _ref1; 265 adjustment = waypoint.options.offset; 266 oldOffset = waypoint.offset; 267 elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp]; 268 if ($.isFunction(adjustment)) { 269 adjustment = adjustment.apply(waypoint.element); 270 } else if (typeof adjustment === "string") { 271 adjustment = parseFloat(adjustment); 272 if (waypoint.options.offset.indexOf("%") > -1) { 273 adjustment = Math.ceil(axis.contextDimension * adjustment / 100); 274 } 275 } 276 waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment; 277 if (waypoint.options.onlyOnScroll && oldOffset != null || !waypoint.enabled) { 278 return; 279 } 280 if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) { 281 return waypoint.trigger([ axis.backward ]); 282 } else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) { 283 return waypoint.trigger([ axis.forward ]); 284 } else if (oldOffset === null && axis.oldScroll >= waypoint.offset) { 285 return waypoint.trigger([ axis.forward ]); 286 } 287 }); 288 }); 289 }; 290 Context.prototype.checkEmpty = function() { 291 if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) { 292 this.$element.unbind([ resizeEvent, scrollEvent ].join(" ")); 293 return delete contexts[this.id]; 294 } 295 }; 296 return Context; 297 }(); 298 Waypoint = function() { 299 function Waypoint($element, context, options) { 300 var idList, _ref; 301 if (options.offset === "bottom-in-view") { 302 options.offset = function() { 303 var contextHeight; 304 contextHeight = $[wps]("viewportHeight"); 305 if (!$.isWindow(context.element)) { 306 contextHeight = context.$element.height(); 307 } 308 return contextHeight - $(this).outerHeight(); 309 }; 310 } 311 this.$element = $element; 312 this.element = $element[0]; 313 this.axis = options.horizontal ? "horizontal" : "vertical"; 314 this.callback = options.handler; 315 this.context = context; 316 this.enabled = options.enabled; 317 this.id = "waypoints" + waypointCounter++; 318 this.offset = null; 319 this.options = options; 320 context.waypoints[this.axis][this.id] = this; 321 allWaypoints[this.axis][this.id] = this; 322 idList = (_ref = this.element[waypointKey]) != null ? _ref : []; 323 idList.push(this.id); 324 this.element[waypointKey] = idList; 325 } 326 Waypoint.prototype.trigger = function(args) { 327 if (!this.enabled) { 328 return; 329 } 330 if (this.callback != null) { 331 this.callback.apply(this.element, args); 332 } 333 if (this.options.triggerOnce) { 334 return this.destroy(); 335 } 336 }; 337 Waypoint.prototype.disable = function() { 338 return this.enabled = false; 339 }; 340 Waypoint.prototype.enable = function() { 341 this.context.refresh(); 342 return this.enabled = true; 343 }; 344 Waypoint.prototype.destroy = function() { 345 delete allWaypoints[this.axis][this.id]; 346 delete this.context.waypoints[this.axis][this.id]; 347 return this.context.checkEmpty(); 348 }; 349 Waypoint.getWaypointsByElement = function(element) { 350 var all, ids; 351 ids = element[waypointKey]; 352 if (!ids) { 353 return []; 354 } 355 all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical); 356 return $.map(ids, function(id) { 357 return all[id]; 358 }); 359 }; 360 return Waypoint; 361 }(); 362 methods = { 363 init: function(f, options) { 364 var _ref; 365 options = $.extend({}, $.fn[wp].defaults, options); 366 if ((_ref = options.handler) == null) { 367 options.handler = f; 368 } 369 this.each(function() { 370 var $this, context, contextElement, _ref1; 371 $this = $(this); 372 contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context; 373 if (!$.isWindow(contextElement)) { 374 contextElement = $this.closest(contextElement); 375 } 376 contextElement = $(contextElement); 377 context = contexts[contextElement[0][contextKey]]; 378 if (!context) { 379 context = new Context(contextElement); 380 } 381 return new Waypoint($this, context, options); 382 }); 383 $[wps]("refresh"); 384 return this; 385 }, 386 disable: function() { 387 return methods._invoke.call(this, "disable"); 388 }, 389 enable: function() { 390 return methods._invoke.call(this, "enable"); 391 }, 392 destroy: function() { 393 return methods._invoke.call(this, "destroy"); 394 }, 395 prev: function(axis, selector) { 396 return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) { 397 if (index > 0) { 398 return stack.push(waypoints[index - 1]); 399 } 400 }); 401 }, 402 next: function(axis, selector) { 403 return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) { 404 if (index < waypoints.length - 1) { 405 return stack.push(waypoints[index + 1]); 406 } 407 }); 408 }, 409 _traverse: function(axis, selector, push) { 410 var stack, waypoints; 411 if (axis == null) { 412 axis = "vertical"; 413 } 414 if (selector == null) { 415 selector = window; 416 } 417 waypoints = jQMethods.aggregate(selector); 418 stack = []; 419 this.each(function() { 420 var index; 421 index = $.inArray(this, waypoints[axis]); 422 return push(stack, index, waypoints[axis]); 423 }); 424 return this.pushStack(stack); 425 }, 426 _invoke: function(method) { 427 this.each(function() { 428 var waypoints; 429 waypoints = Waypoint.getWaypointsByElement(this); 430 return $.each(waypoints, function(i, waypoint) { 431 waypoint[method](); 432 return true; 433 }); 434 }); 435 return this; 436 } 437 }; 438 $.fn[wp] = function() { 439 var args, method; 440 method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; 441 if (methods[method]) { 442 return methods[method].apply(this, args); 443 } else if ($.isFunction(method)) { 444 return methods.init.apply(this, arguments); 445 } else if ($.isPlainObject(method)) { 446 return methods.init.apply(this, [ null, method ]); 447 } else if (!method) { 448 return $.error("jQuery Waypoints needs a callback function or handler option."); 449 } else { 450 return $.error("The " + method + " method does not exist in jQuery Waypoints."); 451 } 452 }; 453 $.fn[wp].defaults = { 454 context: window, 455 continuous: true, 456 enabled: true, 457 horizontal: false, 458 offset: 0, 459 triggerOnce: false 460 }; 461 jQMethods = { 462 refresh: function() { 463 return $.each(contexts, function(i, context) { 464 return context.refresh(); 465 }); 466 }, 467 viewportHeight: function() { 468 var _ref; 469 return (_ref = window.innerHeight) != null ? _ref : $w.height(); 470 }, 471 aggregate: function(contextSelector) { 472 var collection, waypoints, _ref; 473 collection = allWaypoints; 474 if (contextSelector) { 475 collection = (_ref = contexts[$(contextSelector)[0][contextKey]]) != null ? _ref.waypoints : void 0; 476 } 477 if (!collection) { 478 return []; 479 } 480 waypoints = { 481 horizontal: [], 482 vertical: [] 483 }; 484 $.each(waypoints, function(axis, arr) { 485 $.each(collection[axis], function(key, waypoint) { 486 return arr.push(waypoint); 487 }); 488 arr.sort(function(a, b) { 489 return a.offset - b.offset; 490 }); 491 waypoints[axis] = $.map(arr, function(waypoint) { 492 return waypoint.element; 493 }); 494 return waypoints[axis] = $.unique(waypoints[axis]); 495 }); 496 return waypoints; 497 }, 498 above: function(contextSelector) { 499 if (contextSelector == null) { 500 contextSelector = window; 501 } 502 return jQMethods._filter(contextSelector, "vertical", function(context, waypoint) { 503 return waypoint.offset <= context.oldScroll.y; 504 }); 505 }, 506 below: function(contextSelector) { 507 if (contextSelector == null) { 508 contextSelector = window; 509 } 510 return jQMethods._filter(contextSelector, "vertical", function(context, waypoint) { 511 return waypoint.offset > context.oldScroll.y; 512 }); 513 }, 514 left: function(contextSelector) { 515 if (contextSelector == null) { 516 contextSelector = window; 517 } 518 return jQMethods._filter(contextSelector, "horizontal", function(context, waypoint) { 519 return waypoint.offset <= context.oldScroll.x; 520 }); 521 }, 522 right: function(contextSelector) { 523 if (contextSelector == null) { 524 contextSelector = window; 525 } 526 return jQMethods._filter(contextSelector, "horizontal", function(context, waypoint) { 527 return waypoint.offset > context.oldScroll.x; 528 }); 529 }, 530 enable: function() { 531 return jQMethods._invoke("enable"); 532 }, 533 disable: function() { 534 return jQMethods._invoke("disable"); 535 }, 536 destroy: function() { 537 return jQMethods._invoke("destroy"); 538 }, 539 extendFn: function(methodName, f) { 540 return methods[methodName] = f; 541 }, 542 _invoke: function(method) { 543 var waypoints; 544 waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal); 545 return $.each(waypoints, function(key, waypoint) { 546 waypoint[method](); 547 return true; 548 }); 549 }, 550 _filter: function(selector, axis, test) { 551 var context, waypoints; 552 context = contexts[$(selector)[0][contextKey]]; 553 if (!context) { 554 return []; 555 } 556 waypoints = []; 557 $.each(context.waypoints[axis], function(i, wayp
557oint) { 558 if (test(context, waypoint)) { 559 return waypoints.push(waypoint); 560 } 561 }); 562 waypoints.sort(function(a, b) { 563 return a.offset - b.offset; 564 }); 565 return $.map(waypoints, function(waypoint) { 566 return waypoint.element; 567 }); 568 } 569 }; 570 $[wps] = function() { 571 var args, method; 572 method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; 573 if (jQMethods[method]) { 574 return jQMethods[method].apply(null, args); 575 } else { 576 return jQMethods.aggregate.call(null, method); 577 } 578 }; 579 $[wps].settings = { 580 resizeThrottle: 100, 581 scrollThrottle: 30 582 }; 583 return $w.on("load.waypoints", function() { 584 return $[wps]("refresh"); 585 }); 586 }); 587}).call(this); 588 589(function(factory) { 590 "use strict"; 591 if (typeof define === "function" && define.amd) { 592 define([ "jquery" ], factory); 593 } else if (typeof exports !== "undefined") { 594 module.exports = factory(require("jquery")); 595 } else { 596 factory(jQuery); 597 } 598})(function($) { 599 "use strict"; 600 var Slick = window.Slick || {}; 601 Slick = function() { 602 var instanceUid = 0; 603 function Slick(element, settings) { 604 var _ = this, dataSettings; 605 _.defaults = { 606 accessibility: true, 607 adaptiveHeight: false, 608 appendArrows: $(element), 609 appendDots: $(element), 610 arrows: true, 611 asNavFor: null, 612 prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>', 613 nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>', 614 autoplay: false, 615 autoplaySpeed: 3e3, 616 centerMode: false, 617 centerPadding: "50px", 618 cssEase: "ease", 619 customPaging: function(slider, i) { 620 return '<button type="button" data-role="none" role="button" aria-required="false" tabindex="0">' + (i + 1) + "</button>"; 621 }, 622 dots: false, 623 dotsClass: "slick-dots", 624 draggable: true, 625 easing: "linear", 626 edgeFriction: .35, 627 fade: false, 628 focusOnSelect: false, 629 infinite: true, 630 initialSlide: 0, 631 lazyLoad: "ondemand", 632 mobileFirst: false, 633 pauseOnHover: true, 634 pauseOnDotsHover: false, 635 respondTo: "window", 636 responsive: null, 637 rows: 1, 638 rtl: false, 639 slide: "", 640 slidesPerRow: 1, 641 slidesToShow: 1, 642 slidesToScroll: 1, 643 speed: 500, 644 swipe: true, 645 swipeToSlide: false, 646 touchMove: true, 647 touchThreshold: 5, 648 useCSS: true, 649 variableWidth: false, 650 vertical: false, 651 verticalSwiping: false, 652 waitForAnimate: true, 653 zIndex: 1e3 654 }; 655 _.initials = { 656 animating: false, 657 dragging: false, 658 autoPlayTimer: null, 659 currentDirection: 0, 660 currentLeft: null, 661 currentSlide: 0, 662 direction: 1, 663 $dots: null, 664 listWidth: null, 665 listHeight: null, 666 loadIndex: 0, 667 $nextArrow: null, 668 $prevArrow: null, 669 slideCount: null, 670 slideWidth: null, 671 $slideTrack: null, 672 $slides: null, 673 sliding: false, 674 slideOffset: 0, 675 swipeLeft: null, 676 $list: null, 677 touchObject: {}, 678 transformsEnabled: false,
vendor: 5,593 bytes, lines 679-817
679 unslicked: false 680 }; 681 $.extend(_, _.initials); 682 _.activeBreakpoint = null; 683 _.animType = null; 684 _.animProp = null; 685 _.breakpoints = []; 686 _.breakpointSettings = []; 687 _.cssTransitions = false; 688 _.hidden = "hidden"; 689 _.paused = false; 690 _.positionProp = null; 691 _.respondTo = null; 692 _.rowCount = 1; 693 _.shouldClick = true; 694 _.$slider = $(element); 695 _.$slidesCache = null; 696 _.transformType = null; 697 _.transitionType = null; 698 _.visibilityChange = "visibilitychange"; 699 _.windowWidth = 0; 700 _.windowTimer = null; 701 dataSettings = $(element).data("slick") || {}; 702 _.options = $.extend({}, _.defaults, dataSettings, settings); 703 _.currentSlide = _.options.initialSlide; 704 _.originalSettings = _.options; 705 if (typeof document.mozHidden !== "undefined") { 706 _.hidden = "mozHidden"; 707 _.visibilityChange = "mozvisibilitychange"; 708 } else if (typeof document.webkitHidden !== "undefined") { 709 _.hidden = "webkitHidden"; 710 _.visibilityChange = "webkitvisibilitychange"; 711 } 712 _.autoPlay = $.proxy(_.autoPlay, _); 713 _.autoPlayClear = $.proxy(_.autoPlayClear, _); 714 _.changeSlide = $.proxy(_.changeSlide, _); 715 _.clickHandler = $.proxy(_.clickHandler, _); 716 _.selectHandler = $.proxy(_.selectHandler, _); 717 _.setPosition = $.proxy(_.setPosition, _); 718 _.swipeHandler = $.proxy(_.swipeHandler, _); 719 _.dragHandler = $.proxy(_.dragHandler, _); 720 _.keyHandler = $.proxy(_.keyHandler, _); 721 _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); 722 _.instanceUid = instanceUid++; 723 _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 724 _.registerBreakpoints(); 725 _.init(true); 726 _.checkResponsive(true); 727 } 728 return Slick; 729 }(); 730 Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 731 var _ = this; 732 if (typeof index === "boolean") { 733 addBefore = index; 734 index = null; 735 } else if (index < 0 || index >= _.slideCount) { 736 return false; 737 } 738 _.unload(); 739 if (typeof index === "number") { 740 if (index === 0 && _.$slides.length === 0) { 741 $(markup).appendTo(_.$slideTrack); 742 } else if (addBefore) { 743 $(markup).insertBefore(_.$slides.eq(index)); 744 } else { 745 $(markup).insertAfter(_.$slides.eq(index)); 746 } 747 } else { 748 if (addBefore === true) { 749 $(markup).prependTo(_.$slideTrack); 750 } else { 751 $(markup).appendTo(_.$slideTrack); 752 } 753 } 754 _.$slides = _.$slideTrack.children(this.options.slide); 755 _.$slideTrack.children(this.options.slide).detach(); 756 _.$slideTrack.append(_.$slides); 757 _.$slides.each(function(index, element) { 758 $(element).attr("data-slick-index", index); 759 }); 760 _.$slidesCache = _.$slides; 761 _.reinit(); 762 }; 763 Slick.prototype.animateHeight = function() { 764 var _ = this; 765 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 766 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 767 _.$list.animate({ 768 height: targetHeight 769 }, _.options.speed); 770 } 771 }; 772 Slick.prototype.animateSlide = function(targetLeft, callback) { 773 var animProps = {}, _ = this; 774 _.animateHeight(); 775 if (_.options.rtl === true && _.options.vertical === false) { 776 targetLeft = -targetLeft; 777 } 778 if (_.transformsEnabled === false) { 779 if (_.options.vertical === false) { 780 _.$slideTrack.animate({ 781 left: targetLeft 782 }, _.options.speed, _.options.easing, callback); 783 } else { 784 _.$slideTrack.animate({ 785 top: targetLeft 786 }, _.options.speed, _.options.easing, callback); 787 } 788 } else { 789 if (_.cssTransitions === false) { 790 if (_.options.rtl === true) { 791 _.currentLeft = -_.currentLeft; 792 } 793 $({ 794 animStart: _.currentLeft 795 }).animate({ 796 animStart: targetLeft 797 }, { 798 duration: _.options.speed, 799 easing: _.options.easing, 800 step: function(now) { 801 now = Math.ceil(now); 802 if (_.options.vertical === false) { 803 animProps[_.animType] = "translate(" + now + "px, 0px)"; 804 _.$slideTrack.css(animProps); 805 } else { 806 animProps[_.animType] = "translate(0px," + now + "px)"; 807 _.$slideTrack.css(animProps); 808 } 809 }, 810 complete: function() { 811 if (callback) { 812 callback.call(); 813 } 814 } 815 }); 816 } else { 817 _.applyTransition();
818 targetLeft = Math.ceil(targetLeft); 819 if (_.options.vertical === false) { 820 animProps[_.animType] = "translate3d(" + targetLeft + "px, 0px, 0px)"; 821 } else { 822 animProps[_.animType] = "translate3d(0px," + targetLeft + "px, 0px)"; 823 } 824 _.$slideTrack.css(animProps); 825 if (callback) { 826 setTimeout(function() { 827 _.disableTransition(); 828 callback.call(); 829 }, _.options.speed); 830 } 831 } 832 } 833 }; 834 Slick.prototype.asNavFor = function(index) { 835 var _ = this, asNavFor = _.options.asNavFor; 836 if (asNavFor && asNavFor !== null) { 837 asNavFor = $(asNavFor).not(_.$slider); 838 } 839 if (asNavFor !== null && typeof asNavFor === "object") { 840 asNavFor.each(function() { 841 var target = $(this).slick("getSlick"); 842 if (!target.unslicked) { 843 target.slideHandler(index, true); 844 } 845 }); 846 } 847 }; 848 Slick.prototype.applyTransition = function(slide) { 849 var _ = this, transition = {}; 850 if (_.options.fade === false) { 851 transition[_.transitionType] = _.transformType + " " + _.options.speed + "ms " + _.options.cssEase; 852 } else { 853 transition[_.transitionType] = "opacity " + _.options.speed + "ms " + _.options.cssEase; 854 } 855 if (_.options.fade === false) { 856 _.$slideTrack.css(transition); 857 } else { 858 _.$slides.eq(slide).css(transition); 859 } 860 }; 861 Slick.prototype.autoPlay = function() { 862 var _ = this; 863 if (_.autoPlayTimer) { 864 clearInterval(_.autoPlayTimer); 865 } 866 if (_.slideCount > _.options.slidesToShow && _.paused !== true) { 867 _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed); 868 } 869 }; 870 Slick.prototype.autoPlayClear = function() { 871 var _ = this; 872 if (_.autoPlayTimer) { 873 clearInterval(_.autoPlayTimer); 874 } 875 }; 876 Slick.prototype.autoPlayIterator = function() { 877 var _ = this; 878 if (_.options.infinite === false) { 879 if (_.direction === 1) { 880 if (_.currentSlide + 1 === _.slideCount - 1) { 881 _.direction = 0; 882 } 883 _.slideHandler(_.currentSlide + _.options.slidesToScroll); 884 } else { 885 if (_.currentSlide - 1 === 0) { 886 _.direction = 1; 887 } 888 _.slideHandler(_.currentSlide - _.options.slidesToScroll); 889 } 890 } else { 891 _.slideHandler(_.currentSlide + _.options.slidesToScroll); 892 } 893 }; 894 Slick.prototype.buildArrows = function() { 895 var _ = this; 896 if (_.options.arrows === true) { 897 _.$prevArrow = $(_.options.prevArrow).addClass("slick-arrow"); 898 _.$nextArrow = $(_.options.nextArrow).addClass("slick-arrow"); 899 if (_.slideCount > _.options.slidesToShow) { 900 _.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"); 901 _.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"); 902 if (_.htmlExpr.test(_.options.prevArrow)) { 903 _.$prevArrow.prependTo(_.options.appendArrows); 904 } 905 if (_.htmlExpr.test(_.options.nextArrow)) { 906 _.$nextArrow.appendTo(_.options.appendArrows); 907 } 908 if (_.options.infinite !== true) { 909 _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 910 } 911 } else { 912 _.$prevArrow.add(_.$nextArrow).addClass("slick-hidden").attr({ 913 "aria-disabled": "true", 914 tabindex: "-1" 915 }); 916 } 917 } 918 }; 919 Slick.prototype.buildDots = function() { 920 var _ = this, i, dotString; 921 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 922 dotString = '<ul class="' + _.options.dotsClass + '">'; 923 for (i = 0; i <= _.getDotCount(); i += 1) { 924 dotString += "<li>" + _.options.customPaging.call(this, _, i) + "</li>"; 925 } 926 dotString += "</ul>"; 927 _.$dots = $(dotString).appendTo(_.options.appendDots); 928 _.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false"); 929 } 930 }; 931 Slick.prototype.buildOut = function() { 932 var _ = this; 933 _.$slides = _.$slider.children(_.options.slide + ":not(.slick-cloned)").addClass("slick-slide"); 934 _.slideCount = _.$slides.length; 935 _.$slides.each(function(index, element) { 936 $(element).attr("data-slick-index", index).data("originalStyling", $(element).attr("style") || ""); 937 }); 938 _.$slidesCache = _.$slides; 939 _.$slider.addClass("slick-slider"); 940 _.$slideTrack = _.slideCount === 0 ? $('<div class="slick-track"/>').appendTo(_.$slider) : _.$slides.wrapAll('<div class="slick-track"/>').parent(); 941 _.$list = _.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(); 942 _.$slideTrack.css("opacity", 0); 943 if (_.options.centerMode === true || _.options.swipeToSlide === true) {
vendor: 12,919 bytes, lines 944-1240
944 _.options.slidesToScroll = 1; 945 } 946 $("img[data-lazy]", _.$slider).not("[src]").addClass("slick-loading"); 947 _.setupInfinite(); 948 _.buildArrows(); 949 _.buildDots(); 950 _.updateDots(); 951 _.setSlideClasses(typeof _.currentSlide === "number" ? _.currentSlide : 0); 952 if (_.options.draggable === true) { 953 _.$list.addClass("draggable"); 954 } 955 }; 956 Slick.prototype.buildRows = function() { 957 var _ = this, a, b, c, newSlides, numOfSlides, originalSlides, slidesPerSection; 958 newSlides = document.createDocumentFragment(); 959 originalSlides = _.$slider.children(); 960 if (_.options.rows > 1) { 961 slidesPerSection = _.options.slidesPerRow * _.options.rows; 962 numOfSlides = Math.ceil(originalSlides.length / slidesPerSection); 963 for (a = 0; a < numOfSlides; a++) { 964 var slide = document.createElement("div"); 965 for (b = 0; b < _.options.rows; b++) { 966 var row = document.createElement("div"); 967 for (c = 0; c < _.options.slidesPerRow; c++) { 968 var target = a * slidesPerSection + (b * _.options.slidesPerRow + c); 969 if (originalSlides.get(target)) { 970 row.appendChild(originalSlides.get(target)); 971 } 972 } 973 slide.appendChild(row); 974 } 975 newSlides.appendChild(slide); 976 } 977 _.$slider.html(newSlides); 978 _.$slider.children().children().children().css({ 979 width: 100 / _.options.slidesPerRow + "%", 980 display: "inline-block" 981 }); 982 } 983 }; 984 Slick.prototype.checkResponsive = function(initial, forceUpdate) { 985 var _ = this, breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 986 var sliderWidth = _.$slider.width(); 987 var windowWidth = window.innerWidth || $(window).width(); 988 if (_.respondTo === "window") { 989 respondToWidth = windowWidth; 990 } else if (_.respondTo === "slider") { 991 respondToWidth = sliderWidth; 992 } else if (_.respondTo === "min") { 993 respondToWidth = Math.min(windowWidth, sliderWidth); 994 } 995 if (_.options.responsive && _.options.responsive.length && _.options.responsive !== null) { 996 targetBreakpoint = null; 997 for (breakpoint in _.breakpoints) { 998 if (_.breakpoints.hasOwnProperty(breakpoint)) { 999 if (_.originalSettings.mobileFirst === false) { 1000 if (respondToWidth < _.breakpoints[breakpoint]) { 1001 targetBreakpoint = _.breakpoints[breakpoint]; 1002 } 1003 } else { 1004 if (respondToWidth > _.breakpoints[breakpoint]) { 1005 targetBreakpoint = _.breakpoints[breakpoint]; 1006 } 1007 } 1008 } 1009 } 1010 if (targetBreakpoint !== null) { 1011 if (_.activeBreakpoint !== null) { 1012 if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 1013 _.activeBreakpoint = targetBreakpoint; 1014 if (_.breakpointSettings[targetBreakpoint] === "unslick") { 1015 _.unslick(targetBreakpoint); 1016 } else { 1017 _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]); 1018 if (initial === true) { 1019 _.currentSlide = _.options.initialSlide; 1020 } 1021 _.refresh(initial); 1022 } 1023 triggerBreakpoint = targetBreakpoint; 1024 } 1025 } else { 1026 _.activeBreakpoint = targetBreakpoint; 1027 if (_.breakpointSettings[targetBreakpoint] === "unslick") { 1028 _.unslick(targetBreakpoint); 1029 } else { 1030 _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]); 1031 if (initial === true) { 1032 _.currentSlide = _.options.initialSlide; 1033 } 1034 _.refresh(initial); 1035 } 1036 triggerBreakpoint = targetBreakpoint; 1037 } 1038 } else { 1039 if (_.activeBreakpoint !== null) { 1040 _.activeBreakpoint = null; 1041 _.options = _.originalSettings; 1042 if (initial === true) { 1043 _.currentSlide = _.options.initialSlide; 1044 } 1045 _.refresh(initial); 1046 triggerBreakpoint = targetBreakpoint; 1047 } 1048 } 1049 if (!initial && triggerBreakpoint !== false) { 1050 _.$slider.trigger("breakpoint", [ _, triggerBreakpoint ]); 1051 } 1052 } 1053 }; 1054 Slick.prototype.changeSlide = function(event, dontAnimate) { 1055 var _ = this, $target = $(event.target), indexOffset, slideOffset, unevenOffset; 1056 if ($target.is("a")) { 1057 event.preventDefault(); 1058 } 1059 if (!$target.is("li")) { 1060 $target = $target.closest("li"); 1061 } 1062 unevenOffset = _.slideCount % _.options.slidesToScroll !== 0; 1063 indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 1064 switch (event.data.message) { 1065 case "previous": 1066 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 1067 if (_.slideCount > _.options.slidesToShow) { 1068 _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 1069 } 1070 break; 1071 1072 case "next": 1073 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 1074 if (_.slideCount > _.options.slidesToShow) { 1075 _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 1076 } 1077 break; 1078 1079 case "index": 1080 var index = event.data.index === 0 ? 0 : event.data.index || $target.index() * _.options.slidesToScroll; 1081 _.slideHandler(_.checkNavigable(index), false, dontAnimate); 1082 $target.children().trigger("focus"); 1083 break; 1084 1085 default: 1086 return; 1087 } 1088 }; 1089 Slick.prototype.checkNavigable = function(index) { 1090 var _ = this, navigables, prevNavigable; 1091 navigables = _.getNavigableIndexes(); 1092 prevNavigable = 0; 1093 if (index > navigables[navigables.length - 1]) { 1094 index = navigables[navigables.length - 1]; 1095 } else { 1096 for (var n in navigables) { 1097 if (index < navigables[n]) { 1098 index = prevNavigable; 1099 break; 1100 } 1101 prevNavigable = navigables[n]; 1102 } 1103 } 1104 return index; 1105 }; 1106 Slick.prototype.cleanUpEvents = function() { 1107 var _ = this; 1108 if (_.options.dots && _.$dots !== null) { 1109 $("li", _.$dots).off("click.slick", _.changeSlide); 1110 if (_.options.pauseOnDotsHover === true && _.options.autoplay === true) { 1111 $("li", _.$dots).off("mouseenter.slick", $.proxy(_.setPaused, _, true)).off("mouseleave.slick", $.proxy(_.setPaused, _, false)); 1112 } 1113 } 1114 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 1115 _.$prevArrow && _.$prevArrow.off("click.slick", _.changeSlide); 1116 _.$nextArrow && _.$nextArrow.off("click.slick", _.changeSlide); 1117 } 1118 _.$list.off("touchstart.slick mousedown.slick", _.swipeHandler); 1119 _.$list.off("touchmove.slick mousemove.slick", _.swipeHandler); 1120 _.$list.off("touchend.slick mouseup.slick", _.swipeHandler); 1121 _.$list.off("touchcancel.slick mouseleave.slick", _.swipeHandler); 1122 _.$list.off("click.slick", _.clickHandler); 1123 $(document).off(_.visibilityChange, _.visibility); 1124 _.$list.off("mouseenter.slick", $.proxy(_.setPaused, _, true)); 1125 _.$list.off("mouseleave.slick", $.proxy(_.setPaused, _, false)); 1126 if (_.options.accessibility === true) { 1127 _.$list.off("keydown.slick", _.keyHandler); 1128 } 1129 if (_.options.focusOnSelect === true) { 1130 $(_.$slideTrack).children().off("click.slick", _.selectHandler); 1131 } 1132 $(window).off("orientationchange.slick.slick-" + _.instanceUid, _.orientationChange); 1133 $(window).off("resize.slick.slick-" + _.instanceUid, _.resize); 1134 $("[draggable!=true]", _.$slideTrack).off("dragstart", _.preventDefault); 1135 $(window).off("load.slick.slick-" + _.instanceUid, _.setPosition); 1136 $(document).off("ready.slick.slick-" + _.instanceUid, _.setPosition); 1137 }; 1138 Slick.prototype.cleanUpRows = function() { 1139 var _ = this, originalSlides; 1140 if (_.options.rows > 1) { 1141 originalSlides = _.$slides.children().children(); 1142 originalSlides.removeAttr("style"); 1143 _.$slider.html(originalSlides); 1144 } 1145 }; 1146 Slick.prototype.clickHandler = function(event) { 1147 var _ = this; 1148 if (_.shouldClick === false) { 1149 event.stopImmediatePropagation(); 1150 event.stopPropagation(); 1151 event.preventDefault(); 1152 } 1153 }; 1154 Slick.prototype.destroy = function(refresh) { 1155 var _ = this; 1156 _.autoPlayClear(); 1157 _.touchObject = {}; 1158 _.cleanUpEvents(); 1159 $(".slick-cloned", _.$slider).detach(); 1160 if (_.$dots) { 1161 _.$dots.remove(); 1162 } 1163 if (_.options.arrows === true) { 1164 if (_.$prevArrow && _.$prevArrow.length) { 1165 _.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""); 1166 if (_.htmlExpr.test(_.options.prevArrow)) { 1167 _.$prevArrow.remove(); 1168 } 1169 } 1170 if (_.$nextArrow && _.$nextArrow.length) { 1171 _.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""); 1172 if (_.htmlExpr.test(_.options.nextArrow)) { 1173 _.$nextArrow.remove(); 1174 } 1175 } 1176 } 1177 if (_.$slides) { 1178 _.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() { 1179 $(this).attr("style", $(this).data("originalStyling")); 1180 }); 1181 _.$slideTrack.children(this.options.slide).detach(); 1182 _.$slideTrack.detach(); 1183 _.$list.detach(); 1184 _.$slider.append(_.$slides); 1185 } 1186 _.cleanUpRows(); 1187 _.$slider.removeClass("slick-slider"); 1188 _.$slider.removeClass("slick-initialized"); 1189 _.unslicked = true; 1190 if (!refresh) { 1191 _.$slider.trigger("destroy", [ _ ]); 1192 } 1193 }; 1194 Slick.prototype.disableTransition = function(slide) { 1195 var _ = this, transition = {}; 1196 transition[_.transitionType] = ""; 1197 if (_.options.fade === false) { 1198 _.$slideTrack.css(transition); 1199 } else { 1200 _.$slides.eq(slide).css(transition); 1201 } 1202 }; 1203 Slick.prototype.fadeSlide = function(slideIndex, callback) { 1204 var _ = this; 1205 if (_.cssTransitions === false) { 1206 _.$slides.eq(slideIndex).css({ 1207 zIndex: _.options.zIndex 1208 }); 1209 _.$slides.eq(slideIndex).animate({ 1210 opacity: 1 1211 }, _.options.speed, _.options.easing, callback); 1212 } else { 1213 _.applyTransition(slideIndex); 1214 _.$slides.eq(slideIndex).css({ 1215 opacity: 1, 1216 zIndex: _.options.zIndex 1217 }); 1218 if (callback) { 1219 setTimeout(function() { 1220 _.disableTransition(slideIndex); 1221 callback.call(); 1222 }, _.options.speed); 1223 } 1224 } 1225 }; 1226 Slick.prototype.fadeSlideOut = function(slideIndex) { 1227 var _ = this; 1228 if (_.cssTransitions === false) { 1229 _.$slides.eq(slideIndex).animate({ 1230 opacity: 0, 1231 zIndex: _.options.zIndex - 2 1232 }, _.options.speed, _.options.easing); 1233 } else { 1234 _.applyTransition(slideIndex); 1235 _.$slides.eq(slideIndex).css({ 1236 opacity: 0, 1237 zIndex: _.options.zIndex - 2 1238 }); 1239 } 1240 };
1241 Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 1242 var _ = this; 1243 if (filter !== null) { 1244 _.unload(); 1245 _.$slideTrack.children(this.options.slide).detach(); 1246 _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 1247 _.reinit(); 1248 } 1249 }; 1250 Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 1251 var _ = this; 1252 return _.currentSlide; 1253 }; 1254 Slick.prototype.getDotCount = function() { 1255 var _ = this; 1256 var breakPoint = 0; 1257 var counter = 0; 1258 var pagerQty = 0; 1259 if (_.options.infinite === true) { 1260 while (breakPoint < _.slideCount) { 1261 ++pagerQty; 1262 breakPoint = counter + _.options.slidesToShow; 1263 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1264 } 1265 } else if (_.options.centerMode === true) { 1266 pagerQty = _.slideCount; 1267 } else { 1268 while (breakPoint < _.slideCount) { 1269 ++pagerQty; 1270 breakPoint = counter + _.options.slidesToShow; 1271 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1272 } 1273 } 1274 return pagerQty - 1; 1275 }; 1276 Slick.prototype.getLeft = function(slideIndex) { 1277 var _ = this, targetLeft, verticalHeight, verticalOffset = 0, targetSlide; 1278 _.slideOffset = 0; 1279 verticalHeight = _.$slides.first().outerHeight(true); 1280 if (_.options.infinite === true) { 1281 if (_.slideCount > _.options.slidesToShow) { 1282 _.slideOffset = _.slideWidth * _.options.slidesToShow * -1; 1283 verticalOffset = verticalHeight * _.options.slidesToShow * -1; 1284 } 1285 if (_.slideCount % _.options.slidesToScroll !== 0) { 1286 if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 1287 if (slideIndex > _.slideCount) { 1288 _.slideOffset = (_.options.slidesToShow - (sl
1288ideIndex - _.slideCount)) * _.slideWidth * -1; 1289 verticalOffset = (_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight * -1; 1290 } else { 1291 _.slideOffset = _.slideCount % _.options.slidesToScroll * _.slideWidth * -1; 1292 verticalOffset = _.slideCount % _.options.slidesToScroll * verticalHeight * -1; 1293 } 1294 } 1295 } 1296 } else { 1297 if (slideIndex + _.options.slidesToShow > _.slideCount) { 1298 _.slideOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * _.slideWidth; 1299 verticalOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * verticalHeight; 1300 } 1301 } 1302 if (_.slideCount <= _.options.slidesToShow) { 1303 _.slideOffset = 0; 1304 verticalOffset = 0; 1305 } 1306 if (_.options.centerMode === true && _.options.infinite === true) { 1307 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 1308 } else if (_.options.centerMode === true) { 1309 _.slideOffset = 0; 1310 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 1311 } 1312 if (_.options.vertical === false) { 1313 targetLeft = slideIndex * _.slideWidth * -1 + _.slideOffset; 1314 } else { 1315 targetLeft = slideIndex * verticalHeight * -1 + verticalOffset; 1316 } 1317 if (_.options.variableWidth === true) {
1318 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 1319 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex); 1320 } else { 1321 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow); 1322 } 1323 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 1324 if (_.options.centerMode === true) { 1325 if (_.options.infinite === false) { 1326 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex); 1327 } else { 1328 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow + 1); 1329 } 1330 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 1331 targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 1332 } 1333 } 1334 return targetLeft; 1335 }; 1336 Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 1337 var _ = this; 1338 return _.options[option]; 1339 }; 1340 Slick.prototype.getNavigableIndexes = function() { 1341 var _ = this, breakPoint = 0, counter = 0, indexes = [], max; 1342 if (_.options.infinite === false) { 1343 max = _.slideCount; 1344 } else { 1345 breakPoint = _.options.slidesToScroll * -1; 1346 counter = _.options.slidesToScroll * -1; 1347 max = _.slideCount * 2; 1348 } 1349 while (breakPoint < max) { 1350 indexes.push(breakPoint); 1351 breakPoint = counter + _.options.slidesToScroll; 1352 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1353 } 1354 return indexes; 1355 }; 1356 Slick.prototype.getSlick = function() { 1357 return this; 1358 }; 1359 Slick.prototype.getSlideCount = function() { 1360 var _ = this, slidesTraversed, swipedSlide, centerOffset; 1361 centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 1362 if (_.options.swipeToSlide === true) { 1363 _.$slideTrack.find(".slick-slide").each(function(index, slide) { 1364 if (slide.offsetLeft - centerOffset + $(slide).outerWidth() / 2 > _.swipeLeft * -1) { 1365 swipedSlide = slide; 1366 return false; 1367 } 1368 }); 1369 slidesTraversed = Math.abs($(swipedSlide).attr("data-slick-index") - _.currentSlide) || 1; 1370 return slidesTraversed; 1371 } else { 1372 return _.options.slidesToScroll; 1373 } 1374 }; 1375 Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 1376 var _ = this; 1377 _.changeSlide({ 1378 data: { 1379 message: "index", 1380 index: parseInt(slide) 1381 } 1382 }, dontAnimate); 1383 }; 1384 Slick.prototype.init = function(creation) { 1385 var _ = this; 1386 if (!$(_.$slider).hasClass("slick-initialized")) { 1387 $(_.$slider).addClass("slick-initialized"); 1388 _.buildRows(); 1389 _.buildOut(); 1390 _.setProps(); 1391 _.startLoad(); 1392 _.loadSlider(); 1393 _.initializeEvents(); 1394 _.updateArrows(); 1395 _.updateDots(); 1396 } 1397 if (creation) { 1398 _.$slider.trigger("init", [ _ ]); 1399 } 1400 if (_.options.accessibility === true) { 1401 _.initADA(); 1402 } 1403 }; 1404 Slick.prototype.initArrowEvents = function() { 1405 var _ = this; 1406 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 1407 _.$prevArrow.on("click.slick", { 1408 message: "previous" 1409 }, _.changeSlide); 1410 _.$nextArrow.on("click.slick", { 1411 message: "next" 1412 }, _.changeSlide); 1413 } 1414 }; 1415 Slick.prototype.initDotEvents = function() { 1416 var _ = this; 1417 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 1418 $("li", _.$dots).on("click.slick", { 1419 message: "index" 1420 }, _.changeSlide); 1421 } 1422 if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) { 1423 $("li", _.$dots).on("mouseenter.slick", $.proxy(_.setPaused, _, true)).on("mouseleave.
vendor: 5,888 bytes, lines 1423-1569
1423slick", $.proxy(_.setPaused, _, false)); 1424 } 1425 }; 1426 Slick.prototype.initializeEvents = function() { 1427 var _ = this; 1428 _.initArrowEvents(); 1429 _.initDotEvents(); 1430 _.$list.on("touchstart.slick mousedown.slick", { 1431 action: "start" 1432 }, _.swipeHandler); 1433 _.$list.on("touchmove.slick mousemove.slick", { 1434 action: "move" 1435 }, _.swipeHandler); 1436 _.$list.on("touchend.slick mouseup.slick", { 1437 action: "end" 1438 }, _.swipeHandler); 1439 _.$list.on("touchcancel.slick mouseleave.slick", { 1440 action: "end" 1441 }, _.swipeHandler); 1442 _.$list.on("click.slick", _.clickHandler); 1443 $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); 1444 _.$list.on("mouseenter.slick", $.proxy(_.setPaused, _, true)); 1445 _.$list.on("mouseleave.slick", $.proxy(_.setPaused, _, false)); 1446 if (_.options.accessibility === true) { 1447 _.$list.on("keydown.slick", _.keyHandler); 1448 } 1449 if (_.options.focusOnSelect === true) { 1450 $(_.$slideTrack).children().on("click.slick", _.selectHandler); 1451 } 1452 $(window).on("orientationchange.slick.slick-" + _.instanceUid, $.proxy(_.orientationChange, _)); 1453 $(window).on("resize.slick.slick-" + _.instanceUid, $.proxy(_.resize, _)); 1454 $("[draggable!=true]", _.$slideTrack).on("dragstart", _.preventDefault); 1455 $(window).on("load.slick.slick-" + _.instanceUid, _.setPosition); 1456 $(document).on("ready.slick.slick-" + _.instanceUid, _.setPosition); 1457 }; 1458 Slick.prototype.initUI = function() { 1459 var _ = this; 1460 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 1461 _.$prevArrow.show(); 1462 _.$nextArrow.show(); 1463 } 1464 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 1465 _.$dots.show(); 1466 } 1467 if (_.options.autoplay === true) { 1468 _.autoPlay(); 1469 } 1470 }; 1471 Slick.prototype.keyHandler = function(event) { 1472 var _ = this; 1473 if (!event.target.tagName.match("TEXTAREA|INPUT|SELECT")) { 1474 if (event.keyCode === 37 && _.options.accessibility === true) { 1475 _.changeSlide({ 1476 data: { 1477 message: "previous" 1478 } 1479 }); 1480 } else if (event.keyCode === 39 && _.options.accessibility === true) { 1481 _.changeSlide({ 1482 data: { 1483 message: "next" 1484 } 1485 }); 1486 } 1487 } 1488 }; 1489 Slick.prototype.lazyLoad = function() { 1490 var _ = this, loadRange, cloneRange, rangeStart, rangeEnd; 1491 function loadImages(imagesScope) { 1492 $("img[data-lazy]", imagesScope).each(function() { 1493 var image = $(this), imageSource = $(this).attr("data-lazy"), imageToLoad = document.createElement("img"); 1494 imageToLoad.onload = function() { 1495 image.animate({ 1496 opacity: 0 1497 }, 100, function() { 1498 image.attr("src", imageSource).animate({ 1499 opacity: 1 1500 }, 200, function() { 1501 image.removeAttr("data-lazy").removeClass("slick-loading"); 1502 }); 1503 }); 1504 }; 1505 imageToLoad.src = imageSource; 1506 }); 1507 } 1508 if (_.options.centerMode === true) { 1509 if (_.options.infinite === true) { 1510 rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 1511 rangeEnd = rangeStart + _.options.slidesToShow + 2; 1512 } else { 1513 rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 1514 rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 1515 } 1516 } else { 1517 rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 1518 rangeEnd = rangeStart + _.options.slidesToShow; 1519 if (_.options.fade === true) { 1520 if (rangeStart > 0) rangeStart--; 1521 if (rangeEnd <= _.slideCount) rangeEnd++; 1522 } 1523 } 1524 loadRange = _.$slider.find(".slick-slide").slice(rangeStart, rangeEnd); 1525 loadImages(loadRange); 1526 if (_.slideCount <= _.options.slidesToShow) { 1527 cloneRange = _.$slider.find(".slick-slide"); 1528 loadImages(cloneRange); 1529 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 1530 cloneRange = _.$slider.find(".slick-cloned").slice(0, _.options.slidesToShow); 1531 loadImages(cloneRange); 1532 } else if (_.currentSlide === 0) { 1533 cloneRange = _.$slider.find(".slick-cloned").slice(_.options.slidesToShow * -1); 1534 loadImages(cloneRange); 1535 } 1536 }; 1537 Slick.prototype.loadSlider = function() { 1538 var _ = this; 1539 _.setPosition(); 1540 _.$slideTrack.css({ 1541 opacity: 1 1542 }); 1543 _.$slider.removeClass("slick-loading"); 1544 _.initUI(); 1545 if (_.options.lazyLoad === "progressive") { 1546 _.progressiveLazyLoad(); 1547 } 1548 }; 1549 Slick.prototype.next = Slick.prototype.slickNext = function() { 1550 var _ = this; 1551 _.changeSlide({ 1552 data: { 1553 message: "next" 1554 } 1555 }); 1556 }; 1557 Slick.prototype.orientationChange = function() { 1558 var _ = this; 1559 _.checkResponsive(); 1560 _.setPosition(); 1561 }; 1562 Slick.prototype.pause = Slick.prototype.slickPause = function() { 1563 var _ = this; 1564 _.autoPlayClear(); 1565 _.paused = true; 1566 }; 1567 Slick.prototype.play = Slick.prototype.slickPlay = function() { 1568 var _ = this; 1569 _.paused = false;
1570 _.autoPlay(); 1571 }; 1572 Slick.prototype.postSlide = function(index) { 1573 var _ = this; 1574 _.$slider.trigger("afterChange", [ _, index ]); 1575 _.animating = false; 1576 _.setPosition(); 1577 _.swipeLeft = null; 1578 if (_.options.autoplay === true && _.paused === false) { 1579 _.autoPlay(); 1580 } 1581 if (_.options.accessibility === true) { 1582 _.initADA(); 1583 } 1584 }; 1585 Slick.prototype.prev = Slick.prototype.slickPrev = function() { 1586 var _ = this; 1587 _.changeSlide({ 1588 data: { 1589 message: "previous" 1590 } 1591 }); 1592 }; 1593 Slick.prototype.preventDefault = function(e) { 1594 e.preventDefault(); 1595 }; 1596 Slick.prototype.progressiveLazyLoad = function() { 1597 var _ = this, imgCount, targetImage; 1598 imgCount = $("img[data-lazy]", _.$slider).length; 1599 if (imgCount > 0) { 1600 targetImage = $("img[data-lazy]", _.$slider).first(); 1601 targetImage.attr("src", targetImage.attr("data-lazy")).removeClass("slick-loading").load(function() { 1602 targetImage.removeAttr("data-lazy"); 1603 _.progressiveLazyLoad(); 1604 if (_.options.adaptiveHeight === true) { 1605 _.setPosition(); 1606 } 1607 }).error(function() { 1608 targetImage.removeAttr("data-lazy"); 1609 _.progressiveLazyLoad(); 1610 }); 1611 } 1612 }; 1613 Slick.prototype.refresh = function(initializing) { 1614 var _ = this, currentSlide = _.currentSlide; 1615 _.destroy(true); 1616 $.extend(_, _.initials, { 1617 currentSlide: currentSlide 1618 }); 1619 _.init(); 1620 if (!initializing) { 1621 _.changeSlide({ 1622 data: { 1623 message: "index", 1624 index: currentSlide 1625 } 1626 }, false); 1627 } 1628 }; 1629 Slick.prototype.registerBreakpoints = function() { 1630 var _ = this, breakpoint, currentBreakpoint, l, responsiveSettings = _.options.responsive || null; 1631 if ($.type(responsiveSettings) === "array" && responsiveSettings.length) { 1632 _.respondTo = _.options.respondTo || "window"; 1633 for (breakpoint in responsiveSettings) { 1634 l = _.breakpoints.length - 1; 1635 currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 1636 if (responsiveSettings.hasOwnProperty(breakpoint)) { 1637 while (l >= 0) { 1638 if (_.breakpoints[l] && _.breakpoints[l] === currentBreakpoint) { 1639 _.breakpoints.splice(l, 1); 1640 } 1641 l--; 1642 } 1643 _.breakpoints.push(currentBreakpoint); 1644 _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 1645 } 1646 } 1647 _.breakpoints.sort(function(a, b) { 1648 return _.options.mobileFirst ? a - b : b - a; 1649 }); 1650 } 1651 }; 1652 Slick.prototype.reinit = function() { 1653 var _ = this; 1654 _.$slides = _.$slideTrack.children(_.options.slide).addClass("slick-slide"); 1655 _.slideCount = _.$slides.length; 1656 if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 1657 _.currentSlide = _.currentSlide - _.options.slidesToScroll; 1658 } 1659 if (_.slideCount <= _.options.slidesToShow) { 1660 _.currentSlide = 0; 1661 } 1662 _.registerBreakpoints(); 1663 _.setProps(); 1664 _.setupInfinite(); 1665 _.buildArrows(); 1666 _.updateArrows(); 1667 _.initArrowEvents(); 1668 _.buildDots(); 1669 _.updateDots(); 1670 _.initDotEvents(); 1671 _.checkResponsive(false, true); 1672 if (_.options.focusOnSelect === true) { 1673 $(_.$slideTrack).children().on("click.slick", _.selectHandler); 1674 } 1675 _.setSlideClasses(0); 1676 _.setPosition(); 1677 _.$slider.trigger("reInit", [ _ ]); 1678 if (_.options.autoplay === true) { 1679 _.focusHandler(); 1680 } 1681 }; 1682 Slick.prototype.resize = function() { 1683 var _ = this; 1684 if ($(window).width() !== _.windowWidth) { 1685 clearTimeout(_.windowDelay); 1686 _.windowDelay = window.setTimeout(function() { 1687 _.windowWidth = $(window).width(); 1688 _.checkResponsive(); 1689 if (!_.unslicked) { 1690 _.setPosition(); 1691 } 1692 }, 50); 1693 } 1694 }; 1695 Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 1696 var _ = this; 1697 if (typeof index === "boolean") { 1698 removeBefore = index; 1699 index = removeBefore === true ? 0 : _.slideCount - 1; 1700 } else { 1701 index = removeBefore === true ? --index : index; 1702 } 1703 if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 1704 return false;
1705 } 1706 _.unload(); 1707 if (removeAll === true) { 1708 _.$slideTrack.children().remove(); 1709 } else { 1710 _.$slideTrack.children(this.options.slide).eq(index).remove(); 1711 } 1712 _.$slides = _.$slideTrack.children(this.options.slide); 1713 _.$slideTrack.children(this.options.slide).detach(); 1714 _.$slideTrack.append(_.$slides); 1715 _.$slidesCache = _.$slides; 1716 _.reinit(); 1717 }; 1718 Slick.prototype.setCSS = function(position) { 1719 var _ = this, positionProps = {}, x, y; 1720 if (_.options.rtl === true) { 1721 position = -position; 1722 } 1723 x = _.positionProp == "left" ? Math.ceil(position) + "px" : "0px"; 1724 y = _.positionProp == "top" ? Math.ceil(position) + "px" : "0px"; 1725 positionProps[_.positionProp] = position; 1726 if (_.transformsEnabled === false) { 1727 _.$slideTrack.css(positionProps); 1728 } else { 1729 positionProps = {}; 1730 if (_.cssTransitions === false) { 1731 positionProps[_.animType] = "translate(" + x + ", " + y + ")"; 1732 _.$slideTrack.css(positionProps); 1733 } else { 1734 positionProps[_.animType] = "translate3d(" + x + ", " + y + ", 0px)"; 1735 _.$slideTrack.css(positionProps); 1736 } 1737 } 1738 }; 1739 Slick.prototype.setDimensions = function() { 1740 var _ = this; 1741 if (_.options.vertical === false) { 1742 if (_.options.centerMode === true) { 1743 _.$list.css({ 1744 padding: "0px " + _.options.centerPadding 1745 }); 1746 } 1747 } else { 1748 _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 1749 if (_.options.centerMode === true) { 1750 _.$list.css({ 1751 padding: _.options.centerPadding + " 0px" 1752 }); 1753 } 1754 } 1755 _.listWidth = _.$list.width(); 1756 _.listHeight = _.$list.height(); 1757 if (_.options.vertical === false && _.options.variableWidth === false) { 1758 _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 1759 _.$slideTrack.width(Math.ceil(_.slideWidth * _.$slideTrack.children(".slick-slide").length)); 1760 } else if (_.options.variableWidth === true) { 1761 _.$slideTrack.width(5e3 * _.slideCount); 1762 } else { 1763 _.slideWidth = Math.ceil(_.listWidth); 1764 _.$slideTrack.height(Math.ceil(_.$slides.first().outerHeight(true) * _.$slideTrack.children(".slick-slide").length)); 1765 } 1766 var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 1767 if (_.options.variableWidth === false) _.$slideTrack.children(".slick-slide").width(_.slideWidth - offset); 1768 }; 1769 Slick.prototype.setFade = function() { 1770 var _ = this, targetLeft; 1771 _.$slides.each(function(index, element) { 1772 targetLeft = _.slideWidth * index * -1; 1773 if (_.options.rtl === true) { 1774 $(element).css({ 1775 position: "relative", 1776 right: targetLeft, 1777 top: 0, 1778 zIndex: _.options.zIndex - 2, 1779 opacity: 0 1780 }); 1781 } else { 1782 $(element).css({ 1783 position: "relative", 1784 left: targetLeft, 1785 top: 0, 1786 zIndex: _.options.zIndex - 2, 1787 opacity: 0 1788 }); 1789 } 1790 }); 1791 _.$slides.eq(_.currentSlide).css({ 1792 zIndex: _.options.zIndex - 1, 1793 opacity: 1 1794 }); 1795 }; 1796 Slick.prototype.setHeight = function() { 1797 var _ = this; 1798 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 1799 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 1800 _.$list.css("height", targetHeight); 1801 } 1802 }; 1803 Slick.prototype.setOption = Slick.prototype.slickSetOption = function(option, value, refresh) { 1804 var _ = this, l, item; 1805 if (option === "responsive" && $.type(value) === "array") { 1806 for (item in value) { 1807 if ($.type(_.options.responsive) !== "array") {
1808 _.options.responsive = [ value[item] ]; 1809 } else { 1810 l = _.options.responsive.length - 1; 1811 while (l >= 0) { 1812 if (_.options.responsive[l].breakpoint === value[item].breakpoint) { 1813 _.options.responsive.splice(l, 1); 1814 } 1815 l--; 1816 } 1817 _.options.responsive.push(value[item]); 1818 } 1819 } 1820 } else { 1821 _.options[option] = value; 1822 } 1823 if (refresh === true) { 1824 _.unload(); 1825 _.reinit(); 1826 } 1827 }; 1828 Slick.prototype.setPosition = function() { 1829 var _ = this; 1830 _.setDimensions(); 1831 _.setHeight(); 1832 if (_.options.fade === false) { 1833 _.setCSS(_.getLeft(_.currentSlide)); 1834 } else { 1835 _.setFade(); 1836 } 1837 _.$slider.trigger("setPosition", [ _ ]); 1838 }; 1839 Slick.prototype.setProps = function() { 1840 var _ = this, bodyStyle = document.body.style; 1841 _.positionProp = _.options.vertical === true ? "top" : "left"; 1842 if (_.positionProp === "top") { 1843 _.$slider.addClass("slick-vertical"); 1844 } else { 1845 _.$slider.removeClass("slick-vertical"); 1846 } 1847 if (bodyStyle.WebkitTransition !== undefined || bodyStyle.MozTransition !== undefined || bodyStyle.msTransition !== undefined) { 1848 if (_.options.useCSS === true) { 1849 _.cssTransitions = true; 1850 } 1851 } 1852 if (_.options.fade) { 1853 if (typeof _.options.zIndex === "number") { 1854 if (_.options.zIndex < 3) { 1855 _.options.zIndex = 3; 1856 } 1857 } else { 1858 _.options.zIndex = _.defaults.zIndex; 1859 } 1860 } 1861 if (bodyStyle.OTransform !== undefined) { 1862 _.animType = "OTransform"; 1863 _.transformType = "-o-transform"; 1864 _.transitionType = "OTransition"; 1865 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
1866 } 1867 if (bodyStyle.MozTransform !== undefined) { 1868 _.animType = "MozTransform"; 1869 _.transformType = "-moz-transform"; 1870 _.transitionType = "MozTransition"; 1871 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; 1872 } 1873 if (bodyStyle.webkitTransform !== undefined) { 1874 _.animType = "webkitTransform"; 1875 _.transformType = "-webkit-transform"; 1876 _.transitionType = "webkitTransition"; 1877 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 1878 } 1879 if (bodyStyle.msTransform !== undefined) { 1880 _.animType = "msTransform"; 1881 _.transformType = "-ms-transform"; 1882 _.transitionType = "msTransition"; 1883 if (bodyStyle.msTransform === undefined) _.animType = false; 1884 } 1885 if (bodyStyle.transform !== undefined && _.animType !== false) { 1886 _.animType = "transform"; 1887 _.transformType = "transform"; 1888 _.transitionType = "transition"; 1889 } 1890 _.transformsEnabled = _.animType !== null && _.animType !== false; 1891 }; 1892 Slick.prototype.setSlideClasses = function(index) { 1893 var _ = this, centerOffset, allSlides, indexOffset, remainder; 1894 allSlides = _.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"); 1895 _.$slides.eq(index).addClass("slick-current"); 1896 if (_.options.centerMode === true) { 1897 centerOffset = Math.floor(_.options.slidesToShow / 2); 1898 if (_.options.infinite === true) { 1899 if (index >= centerOffset && index <= _.slideCount - 1 - centerOffset) { 1900 _.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass("slick-active").attr("aria-hidden", "false"); 1901 } else { 1902 indexOffset = _.options.slidesToShow + index; 1903 allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass("slick-active").attr("aria-hidden", "false"); 1904 } 1905 if (index === 0) { 1906 allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass("slick-center"); 1907 } else if (index === _.slideCount - 1) { 1908 allSlides.eq(_.options.slidesToShow).addClass("slick-center"); 1909 } 1910 } 1911 _.$slides.eq(index).addClass("slick-center"); 1912 } else { 1913 if (index >= 0 && index <= _.slideCount - _.options.slidesToShow) { 1914 _.$slides.slice(index, index + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"); 1915 } else if (allSlides.length <= _.options.slidesToShow) { 1916 allSlides.addClass("slick-active").attr("aria-hidden", "false"); 1917 } else { 1918 remainder = _.slideCount % _.options.slidesToShow; 1919 indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 1920 if (_.options.slidesToShow == _.options.slidesToScroll && _.slideCount - index < _.options.slidesToShow) { 1921 allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass("slick-active").attr("aria-hidden", "false"); 1922 } else { 1923 allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"); 1924 } 1925 } 1926 } 1927 if (_.options.lazyLoad === "ondemand") { 1928 _.lazyLoad(); 1929 } 1930 }; 1931 Slick.prototype.setupInfinite = function() { 1932 var _ = this, i, slideIndex, infiniteCount; 1933 if (_.options.fade === true) { 1934 _.options.centerMode = false; 1935 } 1936 if (_.options.infinite === true && _.options.fade === false) { 1937 slideIndex = null; 1938 if (_.slideCount > _.options.slidesToShow) { 1939 if (_.options.centerMode === true) { 1940 infiniteCount = _.options.slidesToShow + 1; 1941 } else { 1942 infiniteCount = _.options.slidesToShow; 1943 } 1944 for (i = _.slideCount; i > _.slideCount - infiniteCount; i -= 1) { 1945 slideIndex = i - 1; 1946 $(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex - _.slideCount).prependTo(_.$slideTrack).addClass("slick-cloned"); 1947 } 1948 for (i = 0; i < infiniteCount; i += 1) { 1949 slideIndex = i; 1950 $(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex + _.slideCount).appendTo(_.$slideTrack).addClass("slick-cloned"); 1951 } 1952 _.$slideTrack.find(".slick-cloned").find("[id]").each(function() { 1953 $(this).attr("id", ""); 1954 }); 1955 } 1956 } 1957 }; 1958 Slick.prototype.setPaused = function(paused) { 1959 var _ = this; 1960 if (_.options.autoplay === true && _.options.pauseOnHover === true) { 1961 _.paused = paused; 1962 if (!paused) { 1963 _.autoPlay(); 1964 } else { 1965 _.autoPlayClear(); 1966 } 1967 } 1968 }; 1969 Slick.prototype.selectHandler = function(event) { 1970 var _ = this; 1971 var targetElement = $(event.target).is(".slick-slide") ? $(event.target) : $(event.target).parents(".slick-slide"); 1972 var index = parseInt(targetElement.attr("data-slick-index")); 1973 if (!index) index = 0; 1974 if (_.slideCount <= _.options.slidesToShow) { 1975 _.setSlideClasses(index); 1976 _.asNavFor(index); 1977 return; 1978 } 1979 _.slideHandler(index); 1980 }; 1981 Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 1982 var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, _ = this; 1983 sync = sync || false; 1984 if (_.animating === true && _.options.waitForAnimate === true) { 1985 return; 1986 } 1987 if (_.options.fade === true && _.currentSlide === index) { 1988 return; 1989 } 1990 if (_.slideCount <= _.options.slidesToShow) { 1991 return; 1992 } 1993 if (sync === false) { 1994 _.asNavFor(index); 1995 } 1996 targetSlide = index; 1997 targetLeft = _.getLeft(targetSlide); 1998 slideLeft = _.getLeft(_.currentSlide); 1999 _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 2000 if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 2001 if (_.options.fade === false) { 2002 targetSlide = _.currentSlide; 2003 if (dontAnimate !== true) { 2004 _.animateSlide(slideLeft, function() { 2005 _.postSlide(targetSlide); 2006 }); 2007 } else { 2008 _.postSlide(targetSlide); 2009 } 2010 } 2011 return; 2012 } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > _.slideCount - _.options.slidesToScroll)) { 2013 if (_.options.fade === false) { 2014 targetSlide = _.currentSlide; 2015 if (dontAnimate !== true) { 2016 _.animateSlide(slideLeft, function() { 2017 _.postSlide(targetSlide); 2018 }); 2019 } else { 2020 _.postSlide(targetSlide); 2021 } 2022 } 2023 return; 2024 } 2025 if (_.options.autoplay === true) { 2026 clearInterval(_.autoPlayTimer); 2027 }
2028 if (targetSlide < 0) { 2029 if (_.slideCount % _.options.slidesToScroll !== 0) { 2030 animSlide = _.slideCount - _.slideCount % _.options.slidesToScroll; 2031 } else { 2032 animSlide = _.slideCount + targetSlide; 2033 } 2034 } else if (targetSlide >= _.slideCount) { 2035 if (_.slideCount % _.options.slidesToScroll !== 0) { 2036 animSlide = 0; 2037 } else { 2038 animSlide = targetSlide - _.slideCount; 2039 } 2040 } else { 2041 animSlide = targetSlide; 2042 } 2043 _.animating = true; 2044 _.$slider.trigger("beforeChange", [ _, _.currentSlide, animSlide ]); 2045 oldSlide = _.currentSlide; 2046 _.currentSlide = animSlide; 2047 _.setSlideClasses(_.currentSlide); 2048 _.updateDots(); 2049 _.updateArrows(); 2050 if (_.options.fade === true) { 2051 if (dontAnimate !== true) { 2052 _.fadeSlideOut(oldSlide); 2053 _.fadeSlide(animSlide, function() { 2054 _.postSlide(animSlide); 2055 }); 2056 } else { 2057 _.postSlide(animSlide); 2058 } 2059 _.animateHeight(); 2060 return; 2061 } 2062 if (dontAnimate !== true) { 2063 _.animateSlide(targetLeft, function() { 2064 _.postSlide(animSlide); 2065 }); 2066 } else { 2067 _.postSlide(animSlide); 2068 } 2069 }; 2070 Slick.prototype.startLoad = function() { 2071 var _ = this; 2072 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 2073 _.$prevArrow.hide(); 2074 _.$nextArrow.hide(); 2075 } 2076 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 2077 _.$dots.hide(); 2078 } 2079 _.$slider.addClass("slick-loading"); 2080 }; 2081 Slick.prototype.swipeDirection = function() { 2082 var xDist, yDist, r, swipeAngle, _ = this; 2083 xDist = _.touchObject.startX - _.touchObject.curX; 2084 yDist = _.touchObject.startY - _.touchObject.curY; 2085 r = Math.atan2(yDist, xDist); 2086 swipeAngle = Math.round(r * 180 / Math.PI); 2087 if (swipeAngle < 0) { 2088 swipeAngle = 360 - Math.abs(swipeAngle); 2089 } 2090 if (swipeAngle <= 45 && swipeAngle >= 0) { 2091 return _.options.rtl === false ? "left" : "right"; 2092 } 2093 if (swipeAngle <= 360 && swipeAngle >= 315) { 2094 return _.options.rtl === false ? "left" : "right"; 2095 } 2096 if (swipeAngle >= 135 && swipeAngle <= 225) { 2097 return _.options.rtl === false ? "right" : "left"; 2098 } 2099 if (_.options.verticalSwiping === true) { 2100 if (swipeAngle >= 35 && swipeAngle <= 135) { 2101 return "left"; 2102 } else { 2103 return "right"; 2104 } 2105 } 2106 return "vertical"; 2107 }; 2108 Slick.prototype.swipeEnd = function(event) { 2109 var _ = this, slideCount; 2110 _.dragging = false; 2111 _.shouldClick = _.touchObject.swipeLength > 10 ? false : true; 2112 if (_.touchObject.curX === undefined) { 2113 return false; 2114 } 2115 if (_.touchObject.edgeHit === true) { 2116 _.$slider.trigger("edge", [ _, _.swipeDirection() ]); 2117 } 2118 if (_.touchObject.swipeLength >= _.touchObject.minSwipe) { 2119 switch (_.swipeDirection()) { 2120 case "left": 2121 slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount(); 2122 _.slideHandler(slideCount); 2123 _.currentDirection = 0; 2124 _.touchObject = {}; 2125 _.$slider.trigger("swipe", [ _, "left" ]); 2126 break; 2127 2128 case "right": 2129 slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount(); 2130 _.slideHandler(slideCount); 2131 _.currentDirection = 1; 2132 _.touchObject = {}; 2133 _.$slider.trigger("swipe", [ _, "right" ]); 2134 break; 2135 } 2136 } else { 2137 if (_.touchObject.startX !== _.touchObject.curX) { 2138 _.slideHandler(_.currentSlide); 2139 _.touchObject = {}; 2140 } 2141 } 2142 }; 2143 Slick.prototype.swipeHandler = function(event) { 2144 var _ = this; 2145 if (_.options.swipe === false || "ontouchend" in document && _.options.swipe === false) { 2146 return; 2147 } else if (_.options.draggable === false && event.type.indexOf("mou
2147se") !== -1) { 2148 return; 2149 } 2150 _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? event.originalEvent.touches.length : 1; 2151 _.touchObject.minSwipe = _.listWidth / _.options.touchThreshold; 2152 if (_.options.verticalSwiping === true) { 2153 _.touchObject.minSwipe = _.listHeight / _.options.touchThreshold; 2154 } 2155 switch (event.data.action) { 2156 case "start": 2157 _.swipeStart(event); 2158 break; 2159 2160 case "move": 2161 _.swipeMove(event); 2162 break; 2163 2164 case "end": 2165 _.swipeEnd(event); 2166 break; 2167 } 2168 }; 2169 Slick.prototype.swipeMove = function(event) { 2170 var _ = this, edgeWasHit = false, curLeft, swipeDirection, swipeLength, positionOffset, touches; 2171 touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; 2172 if (!_.dragging || touches && touches.length !== 1) { 2173 return false; 2174 } 2175 curLeft = _.getLeft(_.currentSlide); 2176 _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; 2177 _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; 2178 _.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); 2179 if (_.options.verticalSwiping === true) { 2180 _.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); 2181 } 2182 swipeDirection = _.swipeDirection(); 2183 if (swipeDirection === "vertical") { 2184 return; 2185 } 2186 if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { 2187 event.preventDefault(); 2188 } 2189 positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 2190 if (_.options.verticalSwiping === true) { 2191 positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 2192 } 2193 swipeLength = _.touchObject.swipeLength; 2194 _.touchObject.edgeHit = false; 2195 if (_.options.infinite === false) { 2196 if (_.currentSlide === 0 && swipeDirection === "right" || _.currentSlide >= _.getDotCount() && swipeDirection === "left") { 2197 swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 2198 _.touchObject.edgeHit = true; 2199 } 2200 } 2201 if (_.options.vertical === false) { 2202 _.swipeLeft = curLeft + swipeLength * positionOffset; 2203 } else { 2204 _.swipeLeft = curLeft + swipeLength * (_.$list.height() / _.listWidth) * positionOffset; 2205 } 2206 if (_.options.verticalSwiping === true) { 2207 _.swipeLeft = curLeft + swipeLength * positionOffset; 2208 } 2209 if (_.options.fade === true || _.options.touchMove === false) { 2210 return false; 2211 } 2212 if (_.animating === true) { 2213 _.swipeLeft = null; 2214 return false; 2215 } 2216 _.setCSS(_.swipeLeft); 2217 }; 2218 Slick.prototype.swipeStart = function(event) { 2219 var _ = this, touches; 2220 if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 2221 _.touchObject = {}; 2222 return false; 2223 } 2224 if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { 2225 touches = event.originalEvent.touches[0]; 2226 } 2227 _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; 2228 _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; 2229 _.dragging = true; 2230 }; 2231 Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 2232 var _ = this; 2233 if (_.$slidesCache !== null) { 2234 _.unload(); 2235 _.$slideTrack.children(this.options.slide).detach(); 2236 _.$slidesCache.appendTo(_.$slideTrack); 2237 _.reinit(); 2238 } 2239 }; 2240 Slick.prototype.unload = function() { 2241 var _ = this; 2242 $(".slick-cloned", _.$slider).remove(); 2243 if (_.$dots) { 2244 _.$dots.remove(); 2245 } 2246 if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 2247 _.$prevArrow.remove(); 2248 } 2249 if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 2250 _.$nextArrow.remove(); 2251 } 2252 _.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", ""); 2253 };
2254 Slick.prototype.unslick = function(fromBreakpoint) { 2255 var _ = this; 2256 _.$slider.trigger("unslick", [ _, fromBreakpoint ]); 2257 _.destroy(); 2258 }; 2259 Slick.prototype.updateArrows = function() { 2260 var _ = this, centerOffset; 2261 centerOffset = Math.floor(_.options.slidesToShow / 2); 2262 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow && !_.options.infinite) { 2263 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 2264 _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 2265 if (_.currentSlide === 0) { 2266 _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 2267 _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 2268 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 2269 _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 2270 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 2271 } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 2272 _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 2273 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 2274 } 2275 } 2276 }; 2277 Slick.prototype.updateDots = function() { 2278 var _ = this; 2279 if (_.$dots !== null) { 2280 _.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"); 2281 _.$dots.find("li").eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"); 2282 } 2283 }; 2284 Slick.prototype.visibility = function() { 2285 var _ = this; 2286 if (document[_.hidden]) { 2287 _.paused = true; 2288 _.autoPlayClear(); 2289 } else { 2290 if (_.options.autoplay === true) { 2291 _.paused = false; 2292 _.autoPlay(); 2293 } 2294 } 2295 }; 2296 Slick.prototype.initADA = function() { 2297 var _ = this; 2298 _.$slides.add(_.$slideTrack.find(".slick-cloned")).attr({ 2299 "aria-hidden": "true", 2300 tabindex: "-1" 2301 }).find("a, input, button, select").attr({ 2302 tabindex: "-1" 2303 }); 2304 _.$slideTrack.attr("role", "listbox"); 2305 _.$slides.not(_.$slideTrack.find(".slick-cloned")).each(function(i) { 2306 $(this).attr({ 2307 role: "option", 2308 "aria-describedby": "slick-slide" + _.instanceUid + i + "" 2309 }); 2310 }); 2311 if (_.$dots !== null) { 2312 _.$dots.attr("role", "tablist").find("li").each(function(i) { 2313 $(this).attr({ 2314 role: "presentation", 2315 "aria-selected": "false", 2316 "aria-controls": "navigation" + _.instanceUid + i + "", 2317 id: "slick-slide" + _.instanceUid + i + "" 2318 }); 2319 }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"); 2320 } 2321 _.activateADA(); 2322 }; 2323 Slick.prototype.activateADA = function() {
2324 var _ = this, _isSlideOnFocus = _.$slider.find("*").is(":focus"); 2325 _.$slideTrack.find(".slick-active").attr({ 2326 "aria-hidden": "false", 2327 tabindex: "0" 2328 }).find("a, input, button, select").attr({ 2329 tabindex: "0" 2330 }); 2331 _isSlideOnFocus && _.$slideTrack.find(".slick-active").focus(); 2332 }; 2333 Slick.prototype.focusHandler = function() { 2334 var _ = this; 2335 _.$slider.on("focus.slick blur.slick", "*", function(event) { 2336 event.stopImmediatePropagation(); 2337 var sf = $(this); 2338 setTimeout(function() { 2339 if (_.isPlay) { 2340 if (sf.is(":focus")) { 2341 _.autoPlayClear(); 2342 _.paused = true; 2343 } else { 2344 _.paused = false; 2345 _.autoPlay(); 2346 } 2347 } 2348 }, 0); 2349 }); 2350 }; 2351 $.fn.slick = function() { 2352 var _ = this, opt = arguments[0], args = Array.prototype.slice.call(arguments, 1), l = _.length, i = 0, ret; 2353 for (i; i < l; i++) { 2354 if (typeof opt == "object" || typeof opt == "undefined") _[i].slick = new Slick(_[i], opt); else ret = _[i].slick[opt].apply(_[i].slick, args); 2355 if (typeof ret != "undefined") return ret; 2356 } 2357 return _; 2358 }; 2359}); 2360 2361(function($) { 2362 $.fn.unveil = function(threshold, callback) { 2363 var $w = $(window), th = threshold || 0, retina = window.devicePixelRatio > 1, attrib = retina ? "data-src-retina" : "data-src", images = this, loaded; 2364 this.one("unveil", function() { 2365 var source = this.getAttribute(attrib); 2366 source = source || this.getAttribute("data-src"); 2367 if (source) { 2368 if (this.tagName === "IMG") { 2369 this.setAttribute("src", source); 2370 this.parentElement.classList.add("is-loaded"); 2371 } else { 2372 this.style.backgroundImage = "url(" + source + ")"; 2373 this.parentElement.classList.add("is-loaded"); 2374 } 2375 if (typeof callback === "function") { 2376 callback.call(this); 2377 } 2378 } 2379 }); 2380 function unveil() { 2381 var inview = images.filter(function() { 2382 var $e = $(this); 2383 if ($e.is(":hidden")) return; 2384 var wt = $w.scrollTop(), wb = wt + $w.height(), et = $e.offset().top, eb = et + $e.height(); 2385 return eb >= wt - th && et <= wb + th; 2386 }); 2387 loaded = inview.trigger("unveil"); 2388 images = images.not(loaded); 2389 } 2390 $w.on("scroll.unveil resize.unveil lookup.unveil", unveil); 2391 unveil(); 2392 return this; 2393 }; 2394})(window.jQuery || window.Zepto); 2395 2396(function($) { 2397 var addClass = $.fn.addClass; 2398 $.fn.addClass = function(value) { 2399 var orig = addClass.apply(this, arguments); 2400 var elem, i = 0, len = this.length; 2401 for (;i < len; i++) { 2402 elem = this[i]; 2403 if (elem instanceof SVGElement) { 2404 var classes = $(elem).attr("class"); 2405 if (classes) { 2406 var index = classes.indexOf(value); 2407 if (index === -1) { 2408 classes = classes + " " + value; 2409 $(elem).attr("class", classes); 2410 } 2411 } else { 2412 $(elem).attr("class", value); 2413 } 2414 } 2415 } 2416 return orig; 2417 }; 2418 var removeClass = $.fn.removeClass; 2419 $.fn.removeClass = function(value) { 2420 var orig = removeClass.apply(this, arguments); 2421 var elem, i = 0, len = this.length; 2422 for (;i < len; i++) { 2423 elem = this[i]; 2424 if (elem instanceof SVGElement) { 2425 var classes = $(elem).attr("class"); 2426 if (classes) { 2427 var index = classes.indexOf(value); 2428 if (index !== -1) { 2429 classes = classes.substring(0, index) + classes.substring(index + value.length, classes.length); 2430 $(elem).attr("class", classes); 2431 } 2432 } 2433 } 2434 } 2435 return orig; 2436 }; 2437 var hasClass = $.fn.hasClass; 2438 $.fn.hasClass = function(value) { 2439 var orig = hasClass.apply(this, arguments); 2440 var elem, i = 0, len = this.length; 2441 for (;i < len; i++) { 2442 elem = this[i]; 2443 if (elem instanceof SVGElement) { 2444 var classes = $(elem).attr("class"); 2445 if (classes) { 2446 if (classes.indexOf(value) === -1) { 2447 return false;
2448 } else { 2449 return true; 2450 } 2451 } else { 2452 return false; 2453 } 2454 } 2455 } 2456 return orig; 2457 }; 2458})(jQuery); 2459 2460$.easing.jswing = $.easing.swing; 2461 2462$.extend($.easing, { 2463 def: "easeInExpo", 2464 swing: function(x, t, b, c, d) { 2465 return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 2466 }, 2467 easeInSine: function(x, t, b, c, d) { 2468 return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; 2469 }, 2470 easeOutSine: function(x, t, b, c, d) { 2471 return c * Math.sin(t / d * (Math.PI / 2)) + b; 2472 }, 2473 easeInOutSine: function(x, t, b, c, d) { 2474 return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; 2475 }, 2476 easeInExpo: function(x, t, b, c, d) { 2477 return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; 2478 }, 2479 easeOutExpo: function(x, t, b, c, d) { 2480 return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; 2481 } 2482}); 2483 2484(function($) { 2485 var pageTrans = { 2486 init: function() { 2487 var siteURL = "https://" + top.location.host.toString(); 2488 var transLinks = $("a[href^='" + siteURL + "'], a[href^='/'], a[href^='./'], a[href^='../']"); 2489 var noTransLinks = transLinks.not(".no-trans"); 2490 setTimeout(function() { 2491 $("body").removeClass("fade-in-page"); 2492 }, 5100); 2493 transLinks.click(function(e) { 2494 if (e.metaKey || e.ctrlKey) return; 2495 if (e.metaKey || e.shiftKey) return; 2496 e.preventDefault(); 2497 var linkLocation = this.href; 2498 function redirectPage() { 2499 window.location = linkLocation; 2500 } 2501 $("body").addClass("is-exiting"); 2502 $(".site-menu, main").animate({ 2503 opacity: "0" 2504 }, { 2505 duration: 600, 2506 complete: function() { 2507 $("body").fadeOut(600, redirectPage); 2508 } 2509 }); 2510 }); 2511 $(window).unload(function() { 2512 $(window).unbind("unload"); 2513 }); 2514 $(window).bind("pageshow", function(e) { 2515 if (e.originalEvent.persisted) { 2516 window.location.reload(); 2517 } 2518 }); 2519 } 2520 }; 2521 pageTrans.init(); 2522})(jQuery); 2523 2524(function($) { 2525 scrollDirection = { 2526 init: function() { 2527 var didScroll; 2528 var lastScrollTop = 0; 2529 var scrollDistance = 15; 2530 var navbarHeight = $(".header-main").outerHeight(); 2531 $(window).scroll(function() { 2532 didScroll = true; 2533 }); 2534 function hasScrolled() { 2535 var st = $(this).scrollTop(); 2536 if (Math.abs(lastScrollTop - st) <= scrollDistance) { 2537 return; 2538 } 2539 if (st > lastScrollTop && st > navbarHeight) { 2540 $("body").removeClass("at-top close-to-top").removeClass("scrolling-up").addClass("scrolling-down"); 2541 } else if (st + $(window).height() < $(document).height()) { 2542 $("body").removeClass("scrolling-down").addClass("scrolling-up"); 2543 } 2544 if ($("body").hasClass("scrolling-up") && st <= 225) { 2545 $("body").addClass("close-to-top"); 2546 } 2547 if (st <= 0) { 2548 $("body").removeClass("scrolling-down scrolling-up close-to-top").addClass("at-top"); 2549 } 2550 lastScrollTop = st; 2551 } 2552 setInterval(function() { 2553 if (didScroll) { 2554 hasScrolled(); 2555 didScroll = false; 2556 } 2557 }, 250); 2558 } 2559 }; 2560 scrollDirection.init(); 2561})(jQuery); 2562 2563(function($) { 2564 var s, menuNav = { 2565 settings: { 2566 body: $("body"), 2567 menuToggle: $(".js-menu-toggle") 2568 }, 2569 init: function() { 2570 s = this.settings; 2571 this.bindEvents(); 2572 }, 2573 bindEvents: function() { 2574 s.menuToggle.click(function(e) { 2575 e.preventDefault(); 2576 menuNav.toggleMenu(); 2577 }); 2578 $(document).keyup(function(e) { 2579 if ($("body").hasClass("js-menu--is-open") && e.
2579which === 27) { 2580 menuNav.toggleMenu(); 2581 } 2582 }); 2583 }, 2584 toggleMenu: function() { 2585 s.body.toggleClass("js-menu--is-open"); 2586 }, 2587 closeMenu: function() { 2588 $(".js-menu--is-open").removeClass("js-menu--is-open"); 2589 } 2590 }; 2591 menuNav.init(); 2592})(jQuery); 2593 2594(function($) { 2595 var ScrollDetect = { 2596 init: function(trigger) { 2597 $("[data-scroll]").each(function() { 2598 var self = $(this); 2599 var osTrigger = trigger ? trigger : self; 2600 osTrigger.waypoint(function() { 2601 self.addClass("animated"); 2602 }, { 2603 triggerOnce: true, 2604 offset: "132%" 2605 }); 2606 }); 2607 } 2608 }; 2609 ScrollDetect.init(); 2610})(jQuery); 2611 2612$(".js-network-map").waypoint(function() { 2613 var children = $(".network-map__layer"); 2614 var idx = 2; 2615 function addClassToNextChild() { 2616 if (idx == children.length) return; 2617 children.eq(idx++).addClass("is-animated"); 2618 window.setTimeout(addClassToNextChild, 800); 2619 } 2620 $(".network-map__stats").addClass("is-animated"); 2621 setTimeout(function() { 2622 addClassToNextChild(); 2623 }, 800); 2624}, { 2625 triggerOnce: true, 2626 offset: "110%" 2627}); 2628 2629(function($) { 2630 $.fn.scrollAnchor = function(options, callback) { 2631 var defualts = $.extend({ 2632 offset: "0" 2633 }, options); 2634 return this.each(function() { 2635 $("[data-scrollto]").click(function(e) { 2636 e.preventDefault(); 2637 var $this = $(this), offset = options.offset, target = "#" + $(this).data("scrollto"), $target = $(target); 2638 if (options.addActive) { 2639 $("a[data-scrollto]").removeClass("active"); 2640 } 2641 $("html, body").stop().animate({ 2642 scrollTop: $target.offset().top - offset 2643 }, { 2644 duration: 600, 2645 easing: "easeInExpo", 2646 complete: options.complete 2647 }); 2648 $.isFunction(options.setup); 2649 }); 2650 }); 2651 }; 2652})(jQuery); 2653 2654$("html").scrollAnchor({ 2655 offset: "150" 2656}); 2657 2658(function($) { 2659 var loadThenScroll = { 2660 init: function() { 2661 if (window.location.hash) { 2662 setTimeout(function() { 2663 $("html, body").scrollTop(0).show(); 2664 $("html, body").animate({ 2665 scrollTop: $(window.location.hash).offset().top - 60 2666 }, 1200, "swing"); 2667 }, 100); 2668 } 2669 } 2670 }; 2671 loadThenScroll.init(); 2672})(jQuery); 2673 2674(function($) { 2675 var stickyNav = { 2676 init: function() { 2677 var $subNav = $(".js-sticky"); 2678 var stickyStart = ($subNav.offset() || { 2679 top: -100 2680 }).top; 2681 $(document).on("scroll resize", $subNav, function() { 2682 var pos = $(document).scrollTop(); 2683 if (pos >= stickyStart) { 2684 $subNav.addClass("is-sticky"); 2685 } else { 2686 $subNav.removeClass("is-sticky"); 2687 } 2688 }); 2689 } 2690 }; 2691 if ($(".js-sticky").length) { 2692 stickyNav.init(); 2693 } 2694})(jQuery); 2695 2696var PopItUp = function() { 2697 var s; 2698 var settings = { 2699 autoOpen: $("[data-popup-init]"), 2700 openLink: $("[data-popup]"), 2701 closeLink: $(".js-close-popup"),
2702 body: $(document.body), 2703 videoHolder: $(".popup__vid"), 2704 self: null 2705 }; 2706 return { 2707 init: function() { 2708 s = settings; 2709 this.bindEvents(); 2710 }, 2711 bindEvents: function() { 2712 if (typeof s.autoOpen.data("popup-init") !== "undefined") { 2713 PopItUp.autoOpenPopUp(); 2714 } 2715 s.openLink.on("click", function(e) { 2716 e.preventDefault(); 2717 e.stopPropagation(); 2718 s.self = this; 2719 PopItUp.openPopUp(); 2720 if ($(this).data("vimeo-id")) { 2721 PopItUp.playVideo(); 2722 } 2723 }); 2724 s.closeLink.on("click", function(e) { 2725 e.preventDefault(); 2726 PopItUp.closePopUp(); 2727 PopItUp.stopVideo(); 2728 }); 2729 s.body.on("keyup click", function(e) { 2730 if (s.body.hasClass("popup--is-open") && e.which === 27) { 2731 PopItUp.closePopUp(); 2732 PopItUp.stopVideo(); 2733 } 2734 }); 2735 }, 2736 autoOpenPopUp: function() { 2737 s.autoOpen.addClass("is-open"); 2738 s.body.addClass("popup--auto-open"); 2739 }, 2740 openPopUp: function() { 2741 var popup = $(s.self).data("popup"); 2742 s.autoOpen.removeClass("is-open"); 2743 $("#" + popup).addClass("is-open").attr("aria-hidden", "false"); 2744 s.body.addClass("popup--is-open"); 2745 }, 2746 closePopUp: function() { 2747 var popup = $(s.self).attr("data-popup"); 2748 $("#" + popup).removeClass("is-open").attr("aria-hidden", "true"); 2749 s.body.removeClass("popup--is-open popup--auto-open"); 2750 }, 2751 playVideo: function() { 2752 var vimeoID = $(s.self).data("vimeo-id"), vimeoURL = "https://player.vimeo.com/video/", vimeoPath = vimeoURL + vimeoID, vimeoColor = $(s.self).data("vimeo-color"); 2753 $.getJSON("http://www.vimeo.com/api/oembed.json?url=" + encodeURIComponent(vimeoPath) + "&title=0&byline=0&color=" + vimeoColor + "&autoplay=1&callback=?", function(data) { 2754 s.videoHolder.html(data.html); 2755 }); 2756 }, 2757 stopVideo: function() { 2758 $(".popup__vid").empty(); 2759 } 2760 }; 2761}(); 2762 2763PopItUp.init(); 2764 2765(function($) { 2766 var $window = $(window); 2767 var windowHeight = $window.height(); 2768 $window.resize(function() { 2769 windowHeight = $window.height(); 2770 }); 2771 $.fn.parallax = function(xpos, speedFactor, outerHeight) { 2772 var $this = $(this); 2773 var getHeight; 2774 var firstTop; 2775 $this.each(function() { 2776 firstTop = $this.offset().top; 2777 }); 2778 if (outerHeight) { 2779 getHeight = function(jqo) { 2780 return jqo.outerHeight(true); 2781 }; 2782 } else { 2783 getHeight = function(jqo) { 2784 return jqo.height(); 2785 }; 2786 } 2787 function translate3d(elm, value) { 2788 var translate3d = "translate3d(0px," + value + "px, 0"; 2789 $this.css({ 2790 "-ms-transform": translate3d, 2791 "-moz-transform": translate3d, 2792 "-webkit-transform": translate3d, 2793 transform: translate3d 2794 }); 2795 } 2796 function updatePosition() { 2797 var plaxElement = $(this); 2798 var newPos = scrollY / 3; 2799 translate3d(plaxElement, newPos); 2800 } 2801 if (arguments.length < 1 || speedFactor === null) { 2802 speedFactor = .1; 2803 } 2804 function update() { 2805 var pos = $window.scrollTop(); 2806 $this.each(function() { 2807 var $element = $(this); 2808 var top = $element.offset().top; 2809 var height = getHeight($element); 2810 if (top + height < pos || top > pos + windowHeight) { 2811 return; 2812 } 2813 window.requestAnimationFrame(updatePosition); 2814 }); 2815 } 2816 $window.bind("scroll", update).resize(update); 2817 update(); 2818 }; 2819})(jQuery); 2820 2821var Spanizer = function() { 2822 var s; 2823 return { 2824 settings: { 2825 letters: $(".js-letters"), 2826 words: $(".js-words") 2827 }, 2828 init: function() { 2829 s = this.settings; 2830 this.bindEvents(); 2831 }, 2832 bindEvents: function() { 2833 Spanizer.letters(); 2834 Spanizer.words(); 2835 }, 2836 letters: function() { 2837 s.letters.html(function(i, el) { 2838 var spanizer = $.trim(el).split(""); 2839 var spanizing = "<span>
2839" + spanizer.join("</span><span>") + "</span>"; 2840 return spanizing; 2841 }); 2842 }, 2843 words: function() { 2844 s.words.html(function(i, el) { 2845 var spanize = el.split(" "); 2846 var spanizeArr = []; 2847 var spanizing = "<span>" + spanize.join("</span> <span>") + "</span>"; 2848 return spanizing; 2849 }); 2850 } 2851 }; 2852}(); 2853 2854if ($(".js-letters").length || $(".js-words").length) Spanizer.init(); 2855 2856if ($(".js-locations-map").length) { 2857 (function($) { 2858 var styles = [ { 2859 featureType: "water", 2860 elementType: "geometry.fill", 2861 stylers: [ { 2862 color: "#d3d3d3" 2863 } ] 2864 }, { 2865 featureType: "transit", 2866 stylers: [ { 2867 color: "#808080" 2868 }, { 2869 visibility: "off" 2870 } ] 2871 }, { 2872 featureType: "road.highway", 2873 elementType: "geometry.stroke", 2874 stylers: [ { 2875 visibility: "on" 2876 }, { 2877 color: "#b3b3b3" 2878 } ] 2879 }, { 2880 featureType: "road.highway", 2881 elementType: "geometry.fill", 2882 stylers: [ { 2883 color: "#ffffff" 2884 } ] 2885 }, { 2886 featureType: "road.local", 2887 elementType: "geometry.fill", 2888 stylers: [ { 2889 visibility: "on" 2890 }, { 2891 color: "#ffffff" 2892 }, { 2893 weight: 1.8 2894 } ] 2895 }, { 2896 featureType: "road.local", 2897 elementType: "geometry.stroke", 2898 stylers: [ { 2899 color: "#d7d7d7" 2900 } ] 2901 }, { 2902 featureType: "poi", 2903 elementType: "geometry.fill", 2904 stylers: [ { 2905 visibility: "on" 2906 }, { 2907 color: "#ebebeb" 2908 } ] 2909 }, { 2910 featureType: "administrative", 2911 elementType: "geometry", 2912 stylers: [ { 2913 color: "#a7a7a7" 2914 } ] 2915 }, { 2916 featureType: "road.arterial", 2917 elementType: "geometry.fill", 2918 stylers: [ { 2919 color: "#ffffff" 2920 } ] 2921 }, { 2922 featureType: "road.arterial", 2923 elementType: "geometry.fill", 2924 stylers: [ { 2925 color: "#ffffff" 2926 } ] 2927 }, { 2928 featureType: "landscape", 2929 elementType: "geometry.fill", 2930 stylers: [ { 2931 visibility: "on" 2932 }, { 2933 color: "#efefef" 2934 } ] 2935 }, { 2936 featureType: "road", 2937 elementType: "labels.text.fill", 2938 stylers: [ { 2939 color: "#696969" 2940 } ] 2941 }, { 2942 featureType: "administrative", 2943 elementType: "labels.text.fill", 2944 stylers: [ { 2945 visibility: "on" 2946 }, { 2947 color: "#737373" 2948 } ] 2949 }, { 2950 featureType: "poi", 2951 elementType: "labels.icon", 2952 stylers: [ { 2953 visibility: "off" 2954 } ] 2955 }, { 2956 featureType: "poi", 2957 elementType: "labels", 2958 stylers: [ { 2959 visibility: "off" 2960 } ] 2961 }, { 2962 featureType: "road.arterial", 2963 elementType: "geometry.stroke", 2964 stylers: [ { 2965 color: "#d6d6d6" 2966 } ] 2967 }, { 2968 featureType: "road", 2969 elementType: "labels.icon", 2970 stylers: [ { 2971 visibility: "off" 2972 } ] 2973 }, {}, { 2974 featureType: "poi", 2975 elementType: "geometry.fill", 2976 stylers: [ { 2977 color: "#dadada" 2978 } ] 2979 } ]; 2980 function render_map($locationsMap) { 2981 var $markers = $locationsMap.find(".marker"); 2982 var args = { 2983 zoom: 16, 2984 center: new google.maps.LatLng(0, 0), 2985 mapTypeId: google.maps.MapTypeId.ROADMAP, 2986 styles: styles, 2987 scrollwheel: false 2988 }; 2989 var map = new google.maps.Map($locationsMap[0], args); 2990 map.markers = []; 2991 $markers.each(function() { 2992 add_marker($(this), map); 2993 }); 2994 center_map(map); 2995 center_map_resize(map); 2996 } 2997 var infowindow = new google.maps.InfoWindow({ 2998 content: "" 2999 }); 3000 function add_marker($marker, map) { 3001 var latlng = new google.maps.LatLng($marker.attr("data-lat"), $marker.attr("data-lng")); 3002 var marker = new google.maps.Marker({ 3003 position: latlng, 3004 map: map, 3005 icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABIRJREFUeNqsV0lMZGUQrl5otrBvYUkA2cMWYOAAGJEOnjh7MCbGiyflPpmYaMwYjwYzGuegJ28zp0nsCNixBQFliY
3005EgIDTYgDSEtVm76Qb8vpc8fOnp9Q2VVLrfe//766uqr6r+Z7i9vZVQMjAwIAaDQfx+vxwdHcnFxYWcnZ2Zjo+PH2xvb1tPTk5ew7tmLA1kZGS48vPzfy4oKPgjMTExkJqaKllZWWKxWIT7Dw4OSjgxSwySkJAgHo+nZWFh4Quv12vNzs421dXVKQaurq7k4OBA1tbWPgEwB+4/BKDfCT4WMcdifH19/b2ZmZmnFRUVlo6ODsnNzRWz+f9XA4GAHB4eGqempt6cnp7+DVH7qL29/ZtXBkDjc3Nz78P4d1arVZqamuTm5kaur68Vz1WhtwTV398viJJpaGjo6+TkZGNra+sT7bq4ANDQ5ubmg7GxsW/7+voU4z6fT0JxhvcYBQJraGgQo9EoNpvtK/BgrqioaDQSAGO4ByTdxMTE48rKyoTGxkZB7iUcYbVAuI78qK2tNUxOTn5+enpq1gVgY2PjdZDrLeacnsUjjAbfA3G7wR+rrhSsrKy8kZOTo+Q2GMDu7i5zTXJKeXm51NfXC0rw7jnXo1IEpcl9unDrp7gjsLe3V8pNTCbTS6Gn8eXlZYWI/OV1sJCYdAB9o0hXChgdVkGoeqbnka5VYZ+AmPQC8IVjPcMe6VqVy8tL/vh1cQDls7q/v68QilHQAmHOVc9VDgSHnzzg++CBSxeA6upqu8PhuHK73ZaSkhJlJqhCwmlJFyzkDYmKKrrt6upy6EoBCDRbWFj4fHx8/M6rWITr2IjQQ+j9CwAd0wUgMzNTOjs7P4YnR2goKqGiCtdhHrCPnOH9h9xHFwB6AQ+cvb29bwOAl5ti1EbcjM8xO2R0dDTQ09PzDiL4F/fRPYyY96qqqhEQ6l273f6M3mAiSqgBw5LF7JCRkRHp7u7+AO34RbRBFDECZDGVvb2mpuY5htGnw8PDgt6ukCw47zSGKci1T7D2e16zcqLND2Okaagq6xmj9bOkpKRJTMeXANB7jGw2jrW2trZH5+fnCiBGUFs9cQGg51pFNK5bWloeLS0tyc7Ozt2BhDlmVGZnZ6W5ufkx7nvYwAhAVV0AuIlWcR7kYLJDf6S3KrkIZHFxkVH5G/3iB45xNi+t6gLAMAcrjYJcXzqdTg4Z5R5DPD8/Lzg3PEUqfGretaoLAPMerIxCenr6LzDsRJ0rNc+OhxR4S0tLn5EvJGSwvlIVaJXhRBT86A+21dVVJQIul0vS0tKm4b2LXNHmPhYOmCP1gHDVQR7gHPAh2c7ax7WNhqLlOy4A4XLHSMDjP2HsAt8BKTh2SXFx8a/qofTeANC7CAPHDfZvIvw1AOpJSUlZpPFohIuLA6HYrCqJBQL+u7W1xTLcgh4wNeHW33sESD6A2MfXkOA70M3aJwA9YtbzEr2i1yQqDJ/w4/XeAeTl5YV/Cd0PEdrhkQsT0l1WVqarAiICiHQAIQAQ7x/+x+9SqKN7rPKfAAMAeEr6Wg15E0MAAAAASUVORK5CYII=" 3006 }); 3007 map.markers.push(marker); 3008 if ($marker.html()) { 3009 locationsToggle = $(".js-locations-toggle").find("[data-lat='" + $marker.attr("data-lat") + "']"); 3010 locationsLink = $("locations-toc__link"); 3011 $(locationsToggle).click(function() { 3012 infowindow.setContent($marker.html()); 3013 infowindow.open(map, marker); 3014 $(".locations-toc__link.active").removeClass("active"); 3015 $(this).addClass("active"); 3016 }); 3017 google.maps.event.addListener(marker, "click", function() { 3018 infowindow.setContent($marker.html()); 3019 infowindow.open(map, marker); 3020 }); 3021 google.maps.event.addListener(map, "click", function(event) { 3022 if (infowindow) { 3023 infowindow.close(); 3024 } 3025 }); 3026 } 3027 } 3028 function center_map(map) { 3029 var bounds = new google.maps.LatLngBounds(); 3030 $.each(map.markers, function(i, marker) { 3031 var latlng = new google.maps.LatLng(marker.position.lat(), marker.position.lng()); 3032 bounds.extend(latlng); 3033 }); 3034 if (map.markers.length == 1) { 3035 map.setCenter(bounds.getCenter()); 3036 map.setZoom(16); 3037 } else { 3038 map.fitBounds(bounds); 3039 } 3040 } 3041 function center_map_resize(map) { 3042 google.maps.event.addDomListener(window, "resize", function() { 3043 var center = map.getCenter(); 3044 google.maps.event.trigger(map, "resize"); 3045 map.setCenter(center); 3046 }); 3047 } 3048 $(function() { 3049 $(".js-locations-map").each(function() { 3050 render_map($(this)); 3051 }); 3052 $(".js-hq-map").each(function() { 3053 render_map($(this)); 3054 }); 3055 }); 3056 })(jQuery); 3057} 3058 3059(function($) { 3060 $.everydayImInstagrammin = { 3061 defaults: { 3062 clientID: "null", 3063 accessToken: "null", 3064 numberPics: "12", 3065 captions: "false" 3066 } 3067 }; 3068 $.fn.extend({ 3069 everydayImInstagrammin: function(options) { 3070 $.extend($.everydayImInstagrammin.defaults, options); 3071 return this.each(function() { 3072 var el = $(this), clientID = options.clientID, accessToken = options.accessToken, numberPics = options.numberPics, instaUrl = "https://api.instagram.com/v1/users/" + clientID + "/media/recent/?access_token=" + accessToken + "&callback=?"; 3073 $.ajax({ 3074 type: "GET", 3075 dataType: "jsonp", 3076 cache: false, 3077 url: instaUrl 3078 }).done(function(data) { 3079 for (var i = 0; i < options.numberPics; i++) { 3080 if (typeof data.data[i] === "undefined") { 3081 return false;
3082 } else { 3083 var caption = ""; 3084 if (data.data[i].caption !== null) { 3085 var caption = data.data[i].caption.text; 3086 el.append('<figure class="insta-item"><a class="insta-item__link" target="_blank" href="' + data.data[i].link + '"><img class="insta-item__img" src="' + data.data[i].images.standard_resolution.url + '" /><div class="insta-item__caption"><p>' + caption + "</p></div></a></figure>"); 3087 } else { 3088 el.append('<figure class="insta-item"><a class="insta-item__link" target="_blank" href="' + data.data[i].link + '"><img class="insta-item__img" src="' + data.data[i].images.standard_resolution.url + '" /></a></figure>'); 3089 } 3090 } 3091 } 3092 }).fail(function(jqXHR, textStatus) { 3093 console.log("Nah Burv. Request failed: " + textStatus); 3094 }); 3095 }); 3096 } 3097 }); 3098})(jQuery); 3099 3100$(".js-insta").everydayImInstagrammin({ 3101 clientID: "2254353059", 3102 accessToken: "2254353059.1677ed0.a0d4058536024f7c9f37f0e3227c1656", 3103 numberPics: "6", 3104 captions: "true" 3105}); 3106 3107!function(root, factory) { 3108 if (typeof define === "function" && define.amd) { 3109 define([ "jquery" ], factory); 3110 } else if (typeof exports === "object") { 3111 factory(require("jquery")); 3112 } else { 3113 factory(root.jQuery); 3114 } 3115}(this, function($) { 3116 "use strict"; 3117 var PLUGIN_NAME = "vide"; 3118 var DEFAULTS = { 3119 volume: 1, 3120 playbackRate: 1, 3121 muted: true, 3122 loop: true, 3123 autoplay: true, 3124 position: "50% 50%", 3125 posterType: "detect", 3126 resizing: true, 3127 bgColor: "transparent", 3128 className: "" 3129 }; 3130 var NOT_IMPLEMENTED_MSG = "Not implemented"; 3131 function parseOptions(str) { 3132 var obj = {}; 3133 var delimiterIndex; 3134 var option; 3135 var prop; 3136 var val; 3137 var arr; 3138 var len; 3139 var i; 3140 arr = str.replace(/\s*:\s*/g, ":").replace(/\s*,\s*/g, ",").split(","); 3141 for (i = 0, len = arr.length; i < len; i++) { 3142 option = arr[i]; 3143 if (option.search(/^(http|https|ftp):\/\//) !== -1 || option.search(":") === -1) { 3144 break; 3145 } 3146 delimiterIndex = option.indexOf(":"); 3147 prop = option.substring(0, delimiterIndex); 3148 val = option.substring(delimiterIndex + 1); 3149 if (!val) { 3150 val = undefined; 3151 } 3152 if (typeof val === "string") { 3153 val = val === "true" || (val === "false" ? false : val); 3154 } 3155 if (typeof val === "string") { 3156 val = !isNaN(val) ? +val : val; 3157 } 3158 obj[prop] = val; 3159 } 3160 if (prop == null && val == null) { 3161 return str; 3162 } 3163 return obj; 3164 } 3165 function parsePosition(str) { 3166 str = "" + str; 3167 var args = str.split(/\s+/); 3168 var x = "50%"; 3169 var y = "50%"; 3170 var len; 3171 var arg; 3172 var i; 3173 for (i = 0, len = args.length; i < len; i++) { 3174 arg = args[i]; 3175 if (arg === "left") { 3176 x = "0%"; 3177 } else if (arg === "right") { 3178 x = "100%"; 3179 } else if (arg === "top") { 3180 y = "0%"; 3181 } else if (arg === "bottom") { 3182 y = "100%"; 3183 } else if (arg === "center") { 3184 if (i === 0) { 3185 x = "50%"; 3186 } else { 3187 y = "50%"; 3188 } 3189 } else { 3190 if (i === 0) { 3191 x = arg; 3192 } else { 3193 y = arg; 3194 } 3195 } 3196 } 3197 return { 3198 x: x, 3199 y: y 3200 }; 3201 } 3202 function findPoster(path, callback) { 3203 var onLoad = function() { 3204 callback(this.src); 3205 }; 3206 $; 3207 $('<img src="' + path + '.jpg">').load(onLoad); 3208 } 3209 function Vide(element, path, options) { 3210 this.$element = $(element); 3211 if (typeof path === "string") { 3212 path = parseOptions(path); 3213 } 3214 if (!options) { 3215 options = {}; 3216 } else if (typeof options === "string") { 3217 options = parseOptions(options); 3218 } 3219 if (typeof path === "string") { 3220 path = path.replace(/\.\w*$/, ""); 3221 } else if (typeof path === "object") { 3222 for (var i in path) { 3223 if (path.hasOwnProperty(i)) { 3224 path[i] = path[i].replace(/\.\w*$/, ""); 3225 } 3226 } 3227 } 3228 this.settings = $.extend({}, DEFAULTS, options); 3229 this.path = path; 3230 try { 3231 this.init(); 3232 } catch (e) {
vendor: 4,640 bytes, lines 3233-3356
3233 if (e.message !== NOT_IMPLEMENTED_MSG) { 3234 throw e; 3235 } 3236 } 3237 } 3238 Vide.prototype.init = function() { 3239 var vide = this; 3240 var path = vide.path; 3241 var poster = path; 3242 var sources = ""; 3243 var $element = vide.$element; 3244 var settings = vide.settings; 3245 var position = parsePosition(settings.position); 3246 var posterType = settings.posterType; 3247 var $video; 3248 var $wrapper; 3249 $wrapper = vide.$wrapper = $("<div>").addClass(settings.className).css({ 3250 position: "absolute", 3251 "z-index": -1, 3252 top: 0, 3253 left: 0, 3254 bottom: 0, 3255 right: 0, 3256 overflow: "hidden", 3257 "-webkit-background-size": "cover", 3258 "-moz-background-size": "cover", 3259 "-o-background-size": "cover", 3260 "background-size": "cover", 3261 "background-color": settings.bgColor, 3262 "background-repeat": "no-repeat", 3263 "background-position": position.x + " " + position.y 3264 }); 3265 if (typeof path === "object") { 3266 if (path.poster) { 3267 poster = path.poster; 3268 } else { 3269 if (path.mp4) { 3270 poster = path.mp4; 3271 } else if (path.webm) { 3272 poster = path.webm; 3273 } else if (path.ogv) { 3274 poster = path.ogv; 3275 } 3276 } 3277 } 3278 if (posterType === "detect") { 3279 findPoster(poster, function(url) { 3280 $wrapper.css("background-image", "url(" + url + ")"); 3281 }); 3282 } else if (posterType !== "none") { 3283 $wrapper.css("background-image", "url(" + poster + "." + posterType + ")"); 3284 } 3285 if ($element.css("position") === "static") { 3286 $element.css("position", "relative"); 3287 } 3288 $element.prepend($wrapper); 3289 if (typeof path === "object") { 3290 if (path.mp4) { 3291 sources += '<source src="' + path.mp4 + '.mp4" type="video/mp4">'; 3292 } 3293 if (path.webm) { 3294 sources += '<source src="' + path.webm + '.webm" type="video/webm">'; 3295 } 3296 if (path.ogv) { 3297 sources += '<source src="' + path.ogv + '.ogv" type="video/ogg">'; 3298 } 3299 $video = vide.$video = $("<video>" + sources + "</video>"); 3300 } else { 3301 $video = vide.$video = $("<video>" + '<source src="' + path + '.mp4" type="video/mp4">' + '<source src="' + path + '.webm" type="video/webm">' + '<source src="' + path + '.ogv" type="video/ogg">' + "</video>"); 3302 } 3303 try { 3304 $video.prop({ 3305 autoplay: settings.autoplay, 3306 loop: settings.loop, 3307 volume: settings.volume, 3308 muted: settings.muted, 3309 defaultMuted: settings.muted, 3310 playbackRate: settings.playbackRate, 3311 defaultPlaybackRate: settings.playbackRate 3312 }); 3313 } catch (e) { 3314 throw new Error(NOT_IMPLEMENTED_MSG); 3315 } 3316 $video.css({ 3317 margin: "auto", 3318 position: "absolute", 3319 "z-index": -1, 3320 top: position.y, 3321 left: position.x, 3322 "-webkit-transform": "translate(-" + position.x + ", -" + position.y + ")", 3323 "-ms-transform": "translate(-" + position.x + ", -" + position.y + ")", 3324 "-moz-transform": "translate(-" + position.x + ", -" + position.y + ")", 3325 transform: "translate(-" + position.x + ", -" + position.y + ")", 3326 visibility: "hidden", 3327 opacity: 0 3328 }).one("canplaythrough." + PLUGIN_NAME, function() { 3329 vide.resize(); 3330 }).one("playing." + PLUGIN_NAME, function() { 3331 $video.css({ 3332 visibility: "visible", 3333 opacity: 1 3334 }); 3335 $wrapper.css("background-image", "none"); 3336 }); 3337 $element.on("resize." + PLUGIN_NAME, function() { 3338 if (settings.resizing) { 3339 vide.resize(); 3340 } 3341 }); 3342 $wrapper.append($video); 3343 }; 3344 Vide.prototype.getVideoObject = function() { 3345 return this.$video[0]; 3346 }; 3347 Vide.prototype.resize = function() { 3348 if (!this.$video) { 3349 return; 3350 } 3351 var $wrapper = this.$wrapper; 3352 var $video = this.$video; 3353 var video = $video[0]; 3354 var videoHeight = video.videoHeight; 3355 var videoWidth = video.videoWidth; 3356 var wrapperHeight = $wrapper.height();
3357 var wrapperWidth = $wrapper.width(); 3358 if (wrapperWidth / videoWidth > wrapperHeight / videoHeight) { 3359 $video.css({ 3360 width: wrapperWidth + 2, 3361 height: "auto" 3362 }); 3363 } else { 3364 $video.css({ 3365 width: "auto", 3366 height: wrapperHeight + 2 3367 }); 3368 } 3369 }; 3370 Vide.prototype.destroy = function() { 3371 delete $[PLUGIN_NAME].lookup[this.index]; 3372 this.$video && this.$video.off(PLUGIN_NAME); 3373 this.$element.off(PLUGIN_NAME).removeData(PLUGIN_NAME); 3374 this.$wrapper.remove(); 3375 }; 3376 $[PLUGIN_NAME] = { 3377 lookup: [] 3378 }; 3379 $.fn[PLUGIN_NAME] = function(path, options) { 3380 var instance; 3381 this.each(function() { 3382 instance = $.data(this, PLUGIN_NAME); 3383 instance && instance.destroy(); 3384 instance = new Vide(this, path, options); 3385 instance.index = $[PLUGIN_NAME].lookup.push(instance) - 1; 3386 $.data(this, PLUGIN_NAME, instance); 3387 }); 3388 return this; 3389 }; 3390 $(document).ready(function() { 3391 var $window = $(window); 3392 $window.on("resize." + PLUGIN_NAME, function() { 3393 for (var len = $[PLUGIN_NAME].lookup.length, i = 0, instance; i < len; i++) { 3394 instance = $[PLUGIN_NAME].lookup[i]; 3395 if (instance && instance.settings.resizing) { 3396 instance.resize(); 3397 } 3398 } 3399 }); 3400 $window.on("unload." + PLUGIN_NAME, function() { 3401 return false; 3402 }); 3403 $(document).find("[data-" + PLUGIN_NAME + "-bg]").each(function(i, element) { 3404 var $element = $(element); 3405 var options = $element.data(PLUGIN_NAME + "-options"); 3406 var path = $element.data(PLUGIN_NAME + "-bg"); 3407 $element[PLUGIN_NAME](path, options); 3408 }); 3409 }); 3410}); 3411 3412var MCSignUp = function() { 3413 var $form = $("#mc-embedded-subscribe-form"), $formSubmit = $("#mc-embedded-subscribe"), $body = $("body"), $signupCheck = $("#signup_check"), $signupCheckLabel = $(".signup__check-label"), $signupNotice = $(".signup-notice"), successOverlayTime = 8150; 3414 var msg_success = "Thank you for subscribing to S&P Real Estate Corp. We will be in touch shortly."; 3415 return { 3416 init: function() { 3417 this.bind(); 3418 }, 3419 bind: function() { 3420 $formSubmit.on("click", function(e) { 3421 if (e) e.preventDefault(); 3422 if ($signupCheck[0].checked === false) { 3423 $signupCheckLabel.addClass("has-invalid"); 3424 return false; 3425 } 3426 MCSignUp.registerForm(); 3427 }); 3428 }, 3429 closeNotice: function() { 3430 console.log("here"); 3431 $(".js-close-notice").click(function(e) { 3432 e.preventDefault(); 3433 console.log("clicked"); 3434 if ($body.hasClass("signup--error")) { 3435 console.log("click to remove "); 3436 $body.removeClass("signup--error"); 3437 } 3438 }); 3439 }, 3440 registerForm: function() { 3441 $.ajax({ 3442 type: $form.attr("method"), 3443 url: $form.attr("action"), 3444 data: $form.serialize(), 3445 timeout: 5e3, 3446 cache: false, 3447 dataType: "jsonp", 3448 contentType: "application/json; charset=utf-8", 3449 error: function(err) { 3450 $signupNotice.html('<span class="alert">Sorry, please try again.</span>'); 3451 }, 3452 success: function(data) { 3453 var message; 3454 if (data.result !== "success") { 3455 message = data.msg.substring(); 3456 $body.addClass("signup--error"); 3457 $signupNotice.html('<span class="signup-notice__message">' + message + '</span><a class="close-x js-close-notice"></a>'); 3458 $(".signup-form__input").addClass("error"); 3459 MCSignUp.closeNotice(); 3460 } else { 3461 message = msg_success; 3462 $body.addClass("signup--success"); 3463 $signupNotice.html('<span class="signup-notice__message">' + message + "</span>"); 3464 $signupCheckLabel.removeClass("has-invalid"); 3465 setTimeout(function() { 3466 $body.removeClass("signup--error signup--success"); 3467 PopItUp.closePopUp(); 3468 }, successOverlayTime); 3469 } 3470 } 3471 }); 3472 } 3473 }; 3474}(); 3475 3476MCSignUp.init(); 3477 3478var site = { 3479 featureJS: function() { 3480 $("html").removeClass("no-js"); 3481 if (!feature.svg) $("html").addClass("no-svg"); 3482 if (!feature.cssFlexbox) $("html").addClass("no-flexbox"); 3483 }, 3484 plax: function() { 3485 $(".js-parallax").parallax(6, "false"); 3486 }, 3487 mastVids: function() { 3488 $(".bg_vid video").fadeIn(400); 3489 }, 3490 sliders: function() { 3491 $(".js-slider-content").slick({ 3492 infinite: true, 3493 autoplay: true, 3494 fade: true, 3495 autoplaySpeed: 5e3, 3496 speed: 1e3, 3497 arrows: true, 3498 dots: true, 3499 prevArrow: "<span class='slick-arrow slick-arrow--prev'><i class='icon-left-chev'></i></span>", 3500 nextArrow: "<span class='slick-arrow slick-arrow--next'><i class='icon-right-chev'></i></span>" 3501 }); 3502 $(".js-slider-imgs").slick({ 3503 infinite: true, 3504 autoplay: true, 3505 fade: false, 3506 autoplaySpeed: 3e3, 3507 arrows: true, 3508 dots: true, 3509 prevArrow: "<span class='slick-arrow slick-arrow--prev'><i class='icon-left-chev'></i></span>", 3510 nextArrow: "<span class='slick-arrow slick-arrow--next'><i class='icon-right-chev'></i></span>" 3511 }); 3512 }, 3513 lazy: function() { 3514 $(".js-lazy").unveil(10, function() { 3515 $(this).load(function() { 3516 $(this).parent().addClass("loaded"); 3517 }); 3518 }); 3519 } 3520}; 3521 3522$(function() { 3523 site.featureJS(); 3524 if ($(".js-parallax").length) site.plax(); 3525 if ($(".bg_vid").length) site.mastVids(); 3526 if ($('[class*="js-slider"]').length) site.sliders(); 3527 if ($(".js-lazy").length) site.lazy(); 3528});
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.