vendor: 10,418 bytes, lines 1-89
1// SLICK CAROUSEL 2/* 3 * http://kenwheeler.github.io/slick/ 4 */ 5/* 6 _ _ _ _ 7 ___| (_) ___| | __ (_)___ 8/ __| | |/ __| |/ / | / __| 9\__ \ | | (__| < _ | \__ \ 10|___/_|_|\___|_|\_(_)/ |___/ 11 |__/ 12 13 Version: 1.6.0 14 Author: Ken Wheeler 15 Website: http://kenwheeler.github.io 16 Docs: http://kenwheeler.github.io/slick 17 Repo: http://github.com/kenwheeler/slick 18 Issues: http://github.com/kenwheeler/slick/issues 19 20 */ 21! function(a) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], a) : "undefined" != typeof exports ? module.exports = a(require("jquery")) : a(jQuery) }(function(a) { 22 "use strict"; 23 var b = window.Slick || {}; 24 b = function() { 25 function c(c, d) { 26 var f, e = this; 27 e.defaults = { accessibility: !0, adaptiveHeight: !1, appendArrows: a(c), appendDots: a(c), arrows: !0, asNavFor: null, prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>', nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>', autoplay: !1, autoplaySpeed: 3e3, centerMode: !1, centerPadding: "50px", cssEase: "ease", customPaging: function(b, c) { return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c + 1) }, dots: !1, dotsClass: "slick-dots", draggable: !0, easing: "linear", edgeFriction: .35, fade: !1, focusOnSelect: !1, infinite: !0, initialSlide: 0, lazyLoad: "ondemand", mobileFirst: !1, pauseOnHover: !0, pauseOnFocus: !0, pauseOnDotsHover: !1, respondTo: "window", responsive: null, rows: 1, rtl: !1, slide: "", slidesPerRow: 1, slidesToShow: 1, slidesToScroll: 1, speed: 500, swipe: !0, swipeToSlide: !1, touchMove: !0, touchThreshold: 5, useCSS: !0, useTransform: !0, variableWidth: !1, vertical: !1, verticalSwiping: !1, waitForAnimate: !0, zIndex: 1e3 }, e.initials = { animating: !1, dragging: !1, autoPlayTimer: null, currentDirection: 0, currentLeft: null, currentSlide: 0, direction: 1, $dots: null, listWidth: null, listHeight: null, loadIndex: 0, $nextArrow: null, $prevArrow: null, slideCount: null, slideWidth: null, $slideTrack: null, $slides: null, sliding: !1, slideOffset: 0, swipeLeft: null, $list: null, touchObject: {}, transformsEnabled: !1, unslicked: !1 }, a.extend(e, e.initials), e.activeBreakpoint = null, e.animType = null, e.animProp = null, e.breakpoints = [], e.breakpointSettings = [], e.cssTransitions = !1, e.focussed = !1, e.interrupted = !1, e.hidden = "hidden", e.paused = !0, e.positionProp = null, e.respondTo = null, e.rowCount = 1, e.shouldClick = !0, e.$slider = a(c), e.$slidesCache = null, e.transformType = null, e.transitionType = null, e.visibilityChange = "visibilitychange", e.windowWidth = 0, e.windowTimer = null, f = a(c).data("slick") || {}, e.options = a.extend({}, e.defaults, d, f), e.currentSlide = e.options.initialSlide, e.originalSettings = e.options, "undefined" != typeof document.mozHidden ? (e.hidden = "mozHidden", e.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (e.hidden = "webkitHidden", e.visibilityChange = "webkitvisibilitychange"), e.autoPlay = a.proxy(e.autoPlay, e), e.autoPlayClear = a.proxy(e.autoPlayClear, e), e.autoPlayIterator = a.proxy(e.autoPlayIterator, e), e.changeSlide = a.proxy(e.changeSlide, e), e.clickHandler = a.proxy(e.clickHandler, e), e.selectHandler = a.proxy(e.selectHandler, e), e.setPosition = a.proxy(e.setPosition, e), e.swipeHandler = a.proxy(e.swipeHandler, e), e.dragHandler = a.proxy(e.dragHandler, e), e.keyHandler = a.proxy(e.keyHandler, e), e.instanceUid = b++, e.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, e.registerBreakpoints(), e.init(!0) 28 } 29 var b = 0; 30 return c 31 }(), b.prototype.activateADA = function() { 32 var a = this; 33 a.$slideTrack.find(".slick-active").attr({ "aria-hidden": "false" }).find("a, input, button, select").attr({ tabindex: "0" }) 34 }, b.prototype.addSlide = b.prototype.slickAdd = function(b, c, d) { 35 var e = this; 36 if ("boolean" == typeof c) d = c, c = null; 37 else if (0 > c || c >= e.slideCount) return !1; 38 e.unload(), "number" == typeof c ? 0 === c && 0 === e.$slides.length ? a(b).appendTo(e.$slideTrack) : d ? a(b).insertBefore(e.$slides.eq(c)) : a(b).insertAfter(e.$slides.eq(c)) : d === !0 ? a(b).prependTo(e.$slideTrack) : a(b).appendTo(e.$slideTrack), e.$slides = e.$slideTrack.children(this.options.slide), e.$slideTrack.children(this.options.slide).detach(), e.$slideTrack.append(e.$slides), e.$slides.each(function(b, c) { a(c).attr("data-slick-index", b) }), e.$slidesCache = e.$slides, e.reinit() 39 }, b.prototype.animateHeight = function() { 40 var a = this; 41 if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) { 42 var b = a.$slides.eq(a.currentSlide).outerHeight(!0); 43 a.$list.animate({ height: b }, a.options.speed) 44 } 45 }, b.prototype.animateSlide = function(b, c) { 46 var d = {}, 47 e = this; 48 e.animateHeight(), e.options.rtl === !0 && e.options.vertical === !1 && (b = -b), e.transformsEnabled === !1 ? e.options.vertical === !1 ? e.$slideTrack.animate({ left: b }, e.options.speed, e.options.easing, c) : e.$slideTrack.animate({ top: b }, e.options.speed, e.options.easing, c) : e.cssTransitions === !1 ? (e.options.rtl === !0 && (e.currentLeft = -e.currentLeft), a({ animStart: e.currentLeft }).animate({ animStart: b }, { duration: e.options.speed, easing: e.options.easing, step: function(a) { a = Math.ceil(a), e.options.vertical === !1 ? (d[e.animType] = "translate(" + a + "px, 0px)", e.$slideTrack.css(d)) : (d[e.animType] = "translate(0px," + a + "px)", e.$slideTrack.css(d)) }, complete: function() { c && c.call() } })) : (e.applyTransition(), b = Math.ceil(b), e.options.vertical === !1 ? d[e.animType] = "translate3d(" + b + "px, 0px, 0px)" : d[e.animType] = "translate3d(0px," + b + "px, 0px)", e.$slideTrack.css(d), c && setTimeout(function() { e.disableTransition(), c.call() }, e.options.speed)) 49 }, b.prototype.getNavTarget = function() { 50 var b = this, 51 c = b.options.asNavFor; 52 return c && null !== c && (c = a(c).not(b.$slider)), c 53 }, b.prototype.asNavFor = function(b) { 54 var c = this, 55 d = c.getNavTarget(); 56 null !== d && "object" == typeof d && d.each(function() { 57 var c = a(this).slick("getSlick"); 58 c.unslicked || c.slideHandler(b, !0) 59 }) 60 }, b.prototype.applyTransition = function(a) { 61 var b = this, 62 c = {}; 63 b.options.fade === !1 ? c[b.transitionType] = b.transformType + " " + b.options.speed + "ms " + b.options.cssEase : c[b.transitionType] = "opacity " + b.options.speed + "ms " + b.options.cssEase, b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c) 64 }, b.prototype.autoPlay = function() { 65 var a = this; 66 a.autoPlayClear(), a.slideCount > a.options.slidesToShow && (a.autoPlayTimer = setInterval(a.autoPlayIterator, a.options.autoplaySpeed)) 67 }, b.prototype.autoPlayClear = function() { 68 var a = this; 69 a.autoPlayTimer && clearInterval(a.autoPlayTimer) 70 }, b.prototype.autoPlayIterator = function() { 71 var a = this, 72 b = a.currentSlide + a.options.slidesToScroll; 73 a.paused || a.interrupted || a.focussed || (a.options.infinite === !1 && (1 === a.direction && a.currentSlide + 1 === a.slideCount - 1 ? a.direction = 0 : 0 === a.direction && (b = a.currentSlide - a.options.slidesToScroll, a.currentSlide - 1 === 0 && (a.direction = 1))), a.slideHandler(b)) 74 }, b.prototype.buildArrows = function() { 75 var b = this; 76 b.options.arrows === !0 && (b.$prevArrow = a(b.options.prevArrow).addClass("slick-arrow"), b.$nextArrow = a(b.options.nextArrow).addClass("slick-arrow"), b.slideCount > b.options.slidesToShow ? (b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.prependTo(b.options.appendArrows), b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.appendTo(b.options.appendArrows), b.options.infinite !== !0 && b.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({ "aria-disabled": "true", tabindex: "-1" })) 77 }, b.prototype.buildDots = function() { 78 var c, d, b = this; 79 if (b.options.dots === !0 && b.slideCount > b.options.slidesToShow) { 80 for (b.$slider.addClass("slick-dotted"), d = a("<ul />").addClass(b.options.dotsClass), c = 0; c <= b.getDotCount(); c += 1) d.append(a("<li />").append(b.options.customPaging.call(this, b, c))); 81 b.$dots = d.appendTo(b.options.appendDots), b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false") 82 } 83 }, b.prototype.buildOut = function() { 84 var b = this; 85 b.$slides = b.$slider.children(b.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), b.slideCount = b.$slides.length, b.$slides.each(function(b, c) { a(c).attr("data-slick-index", b).data("originalStyling", a(c).attr("style") || "") }), b.$slider.addClass("slick-slider"), b.$slideTrack = 0 === b.slideCount ? a('<div class="slick-track"/>').appendTo(b.$slider) : b.$slides.wrapAll('<div class="slick-track"/>').parent(), b.$list = b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(), b.$slideTrack.css("opacity", 0), (b.options.centerMode === !0 || b.options.swipeToSlide === !0) && (b.options.slidesToScroll = 1), a("img[data-lazy]", b.$slider).not("[src]").addClass("slick-loading"), b.setupInfinite(), b.buildArrows(), b.buildDots(), b.updateDots(), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.options.draggable === !0 && b.$list.addClass("draggable") 86 }, b.prototype.buildRows = function() { 87 var b, c, d, e, f, g, h, a = this; 88 if (e = document.createDocumentFragment(), g = a.$slider.children(), a.options.rows > 1) { 89 for (h = a.options.slidesPerRow * a.options.rows, f = Math.
vendor: 4,287 bytes, lines 89-141
89ceil(g.length / h), b = 0; f > b; b++) { 90 var i = document.createElement("div"); 91 for (c = 0; c < a.options.rows; c++) { 92 var j = document.createElement("div"); 93 for (d = 0; d < a.options.slidesPerRow; d++) { 94 var k = b * h + (c * a.options.slidesPerRow + d); 95 g.get(k) && j.appendChild(g.get(k)) 96 } 97 i.appendChild(j) 98 } 99 e.appendChild(i) 100 } 101 a.$slider.empty().append(e), a.$slider.children().children().children().css({ width: 100 / a.options.slidesPerRow + "%", display: "inline-block" }) 102 } 103 }, b.prototype.checkResponsive = function(b, c) { 104 var e, f, g, d = this, 105 h = !1, 106 i = d.$slider.width(), 107 j = window.innerWidth || a(window).width(); 108 if ("window" === d.respondTo ? g = j : "slider" === d.respondTo ? g = i : "min" === d.respondTo && (g = Math.min(j, i)), d.options.responsive && d.options.responsive.length && null !== d.options.responsive) { 109 f = null; 110 for (e in d.breakpoints) d.breakpoints.hasOwnProperty(e) && (d.originalSettings.mobileFirst === !1 ? g < d.breakpoints[e] && (f = d.breakpoints[e]) : g > d.breakpoints[e] && (f = d.breakpoints[e])); 111 null !== f ? null !== d.activeBreakpoint ? (f !== d.activeBreakpoint || c) && (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : null !== d.activeBreakpoint && (d.activeBreakpoint = null, d.options = d.originalSettings, b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b), h = f), b || h === !1 || d.$slider.trigger("breakpoint", [d, h]) 112 } 113 }, b.prototype.changeSlide = function(b, c) { 114 var f, g, h, d = this, 115 e = a(b.currentTarget); 116 switch (e.is("a") && b.preventDefault(), e.is("li") || (e = e.closest("li")), h = d.slideCount % d.options.slidesToScroll !== 0, f = h ? 0 : (d.slideCount - d.currentSlide) % d.options.slidesToScroll, b.data.message) { 117 case "previous": 118 g = 0 === f ? d.options.slidesToScroll : d.options.slidesToShow - f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide - g, !1, c); 119 break; 120 case "next": 121 g = 0 === f ? d.options.slidesToScroll : f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide + g, !1, c); 122 break; 123 case "index": 124 var i = 0 === b.data.index ? 0 : b.data.index || e.index() * d.options.slidesToScroll; 125 d.slideHandler(d.checkNavigable(i), !1, c), e.children().trigger("focus"); 126 break; 127 default: 128 return 129 } 130 }, b.prototype.checkNavigable = function(a) { 131 var c, d, b = this; 132 if (c = b.getNavigableIndexes(), d = 0, a > c[c.length - 1]) a = c[c.length - 1]; 133 else 134 for (var e in c) { 135 if (a < c[e]) { a = d; break } 136 d = c[e] 137 } 138 return a 139 }, b.prototype.cleanUpEvents = function() { 140 var b = this; 141 b.options.dots && null !== b.$dots && a("li", b.$dots).off("click.slick", b.changeSlide).off("mouseenter.slick", a.proxy(b.interrupt, b, !0)).off("mouseleave.slick", a.proxy(b.interrupt, b, !1)), b.$slider.off("focus.slick blur.slick"), b.options.arrows === !0 && b.slideCount > b.options.slidesToShow && (b.$prevArrow && b.$prevArrow.off("click.slick", b.changeSlide), b.$nextArrow && b.$nextArrow.off("click.slick", b.changeSlide)), b.$list.off("touchstart.slick mousedown.slick", b.swipeHandler), b.$list.off("touchmove.slick mousemove.slick", b.swipeHandler), b.$list.off("touchend.slick mouseup.slick", b.swipeHandler), b.$list.off("touchcancel.
141slick mouseleave.slick", b.swipeHandler), b.$list.off("click.slick", b.clickHandler), a(document).off(b.visibilityChange, b.visibility), b.cleanUpSlideEvents(), b.options.accessibility === !0 && b.$list.off("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().off("click.slick", b.selectHandler), a(window).off("orientationchange.slick.slick-" + b.instanceUid, b.orientationChange), a(window).off("resize.slick.slick-" + b.instanceUid, b.resize), a("[draggable!=true]", b.$slideTrack).off("dragstart", b.preventDefault), a(window).off("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).off("ready.slick.slick-" + b.instanceUid, b.setPosition) 142 }, b.prototype.cleanUpSlideEvents = function() { 143 var b = this; 144 b.$list.off("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.off("mouseleave.slick", a.proxy(b.interrupt, b, !1)) 145 }, b.prototype.cleanUpRows = function() { 146 var b, a = this; 147 a.options.rows > 1 && (b = a.$slides.children().children(), b.removeAttr("style"), a.$slider.empty().append(b)) 148 }, b.prototype.clickHandler = function(a) { 149 var b = this; 150 b.shouldClick === !1 && (a.stopImmediatePropagation(), a.stopPropagation(), a.preventDefault()) 151 }, b.prototype.destroy = function(b) { 152 var c = this; 153 c.autoPlayClear(), c.touchObject = {}, c.cleanUpEvents(), a(".slick-cloned", c.$slider).detach(), c.$dots && c.$dots.remove(), c.$prevArrow && c.$prevArrow.length && (c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.prevArrow) && c.$prevArrow.remove()), c.$nextArrow && c.$nextArrow.length && (c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.nextArrow) && c.$nextArrow.remove()), c.$slides && (c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() { a(this).attr("style", a(this).data("originalStyling")) }), c.$slideTrack.children(this.options.slide).detach(), c.$slideTrack.detach(), c.$list.detach(), c.$slider.append(c.$slides)), c.cleanUpRows(), c.$slider.removeClass("slick-slider"), c.$slider.removeClass("slick-initialized"), c.$slider.removeClass("slick-dotted"), c.unslicked = !0, b || c.$slider.trigger("destroy", [c]) 154 }, b.prototype.disableTransition = function(a) { 155 var b = this, 156 c = {}; 157 c[b.transitionType] = "", b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c) 158 }, b.prototype.fadeSlide = function(a, b) { 159 var c = this; 160 c.cssTransitions === !1 ? (c.$slides.eq(a).css({ zIndex: c.options.zIndex }), c.$slides.eq(a).animate({ opacity: 1 }, c.options.speed, c.options.easing, b)) : (c.applyTransition(a), c.$slides.eq(a).css({ opacity: 1, zIndex: c.options.zIndex }), b && setTimeout(function() { c.disableTransition(a), b.call() }, c.options.speed)) 161 }, b.prototype.fadeSlideOut = function(a) { 162 var b = this; 163 b.cssTransitions === !1 ? b.$slides.eq(a).animate({ opacity: 0, zIndex: b.options.zIndex - 2 }, b.options.speed, b.options.easing) : (b.applyTransition(a), b.$slides.eq(a).css({ opacity: 0, zIndex: b.options.zIndex - 2 })) 164 }, b.prototype.filterSlides = b.prototype.slickFilter = function(a) { 165 var b = this; 166 null !== a && (b.$slidesCache = b.$slides, b.unload(), b.$slideTrack.children(this.options.slide).detach(), b.$slidesCache.filter(a).appendTo(b.$slideTrack), b.reinit()) 167 }, b.prototype.focusHandler = function() { 168 var b = this; 169 b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function(c) { 170 c.stopImmediatePropagation(); 171 var d = a(this); 172 setTimeout(function() { b.options.pauseOnFocus && (b.focussed = d.is(":focus"), b.autoPlay()) }, 0) 173 }) 174 }, b.prototype.getCurrent = b.prototype.slickCurrentSlide = function() { var a = this; return a.currentSlide }, b.prototype.getDotCount = function() { 175 var a = this, 176 b = 0, 177 c = 0, 178 d = 0; 179 if (a.options.infinite === !0) 180 for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow; 181 else if (a.options.centerMode === !0) d = a.slideCount; 182 else if (a.options.asNavFor) 183 for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
vendor: 5,505 bytes, lines 184-211
184 else d = 1 + Math.ceil((a.slideCount - a.options.slidesToShow) / a.options.slidesToScroll); 185 return d - 1 186 }, b.prototype.getLeft = function(a) { 187 var c, d, f, b = this, 188 e = 0; 189 return b.slideOffset = 0, d = b.$slides.first().outerHeight(!0), b.options.infinite === !0 ? (b.slideCount > b.options.slidesToShow && (b.slideOffset = b.slideWidth * b.options.slidesToShow * -1, e = d * b.options.slidesToShow * -1), b.slideCount % b.options.slidesToScroll !== 0 && a + b.options.slidesToScroll > b.slideCount && b.slideCount > b.options.slidesToShow && (a > b.slideCount ? (b.slideOffset = (b.options.slidesToShow - (a - b.slideCount)) * b.slideWidth * -1, e = (b.options.slidesToShow - (a - b.slideCount)) * d * -1) : (b.slideOffset = b.slideCount % b.options.slidesToScroll * b.slideWidth * -1, e = b.slideCount % b.options.slidesToScroll * d * -1))) : a + b.options.slidesToShow > b.slideCount && (b.slideOffset = (a + b.options.slidesToShow - b.slideCount) * b.slideWidth, e = (a + b.options.slidesToShow - b.slideCount) * d), b.slideCount <= b.options.slidesToShow && (b.slideOffset = 0, e = 0), b.options.centerMode === !0 && b.options.infinite === !0 ? b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2) - b.slideWidth : b.options.centerMode === !0 && (b.slideOffset = 0, b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2)), c = b.options.vertical === !1 ? a * b.slideWidth * -1 + b.slideOffset : a * d * -1 + e, b.options.variableWidth === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, b.options.centerMode === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow + 1), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, c += (b.$list.width() - f.outerWidth()) / 2)), c 190 }, b.prototype.getOption = b.prototype.slickGetOption = function(a) { var b = this; return b.options[a] }, b.prototype.getNavigableIndexes = function() { 191 var e, a = this, 192 b = 0, 193 c = 0, 194 d = []; 195 for (a.options.infinite === !1 ? e = a.slideCount : (b = -1 * a.options.slidesToScroll, c = -1 * a.options.slidesToScroll, e = 2 * a.slideCount); e > b;) d.push(b), b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow; 196 return d 197 }, b.prototype.getSlick = function() { return this }, b.prototype.getSlideCount = function() { var c, d, e, b = this; return e = b.options.centerMode === !0 ? b.slideWidth * Math.floor(b.options.slidesToShow / 2) : 0, b.options.swipeToSlide === !0 ? (b.$slideTrack.find(".slick-slide").each(function(c, f) { return f.offsetLeft - e + a(f).outerWidth() / 2 > -1 * b.swipeLeft ? (d = f, !1) : void 0 }), c = Math.abs(a(d).attr("data-slick-index") - b.currentSlide) || 1) : b.options.slidesToScroll }, b.prototype.goTo = b.prototype.slickGoTo = function(a, b) { 198 var c = this; 199 c.changeSlide({ data: { message: "index", index: parseInt(a) } }, b) 200 }, b.prototype.init = function(b) { 201 var c = this; 202 a(c.$slider).hasClass("slick-initialized") || (a(c.$slider).addClass("slick-initialized"), c.buildRows(), c.buildOut(), c.setProps(), c.startLoad(), c.loadSlider(), c.initializeEvents(), c.updateArrows(), c.updateDots(), c.checkResponsive(!0), c.focusHandler()), b && c.$slider.trigger("init", [c]), c.options.accessibility === !0 && c.initADA(), c.options.autoplay && (c.paused = !1, c.autoPlay()) 203 }, b.prototype.initADA = function() { 204 var b = this; 205 b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({ "aria-hidden": "true", tabindex: "-1" }).find("a, input, button, select").attr({ tabindex: "-1" }), b.$slideTrack.attr("role", "listbox"), b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c) { a(this).attr({ role: "option", "aria-describedby": "slick-slide" + b.instanceUid + c }) }), null !== b.$dots && b.$dots.attr("role", "tablist").find("li").each(function(c) { a(this).attr({ role: "presentation", "aria-selected": "false", "aria-controls": "navigation" + b.instanceUid + c, id: "slick-slide" + b.instanceUid + c }) }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"), b.activateADA() 206 }, b.prototype.initArrowEvents = function() { 207 var a = this; 208 a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.off("click.slick").on("click.slick", { message: "previous" }, a.changeSlide), a.$nextArrow.off("click.slick").on("click.slick", { message: "next" }, a.changeSlide)) 209 }, b.prototype.initDotEvents = function() { 210 var b = this; 211 b.options.dots === !0 && b.slideCount > b.options.slidesToShow && a("li", b.$dots).on("click.slick", { message: "index" }, b.changeSlide), b.options.dots === !0 && b.options.pauseOnDotsHover === !0 && a("li", b.$dots).on("mouseenter.slick", a.proxy(b.interrupt, b, !0)).on("mouseleave.
vendor: 11,348 bytes, lines 211-303
211slick", a.proxy(b.interrupt, b, !1)) 212 }, b.prototype.initSlideEvents = function() { 213 var b = this; 214 b.options.pauseOnHover && (b.$list.on("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.on("mouseleave.slick", a.proxy(b.interrupt, b, !1))) 215 }, b.prototype.initializeEvents = function() { 216 var b = this; 217 b.initArrowEvents(), b.initDotEvents(), b.initSlideEvents(), b.$list.on("touchstart.slick mousedown.slick", { action: "start" }, b.swipeHandler), b.$list.on("touchmove.slick mousemove.slick", { action: "move" }, b.swipeHandler), b.$list.on("touchend.slick mouseup.slick", { action: "end" }, b.swipeHandler), b.$list.on("touchcancel.slick mouseleave.slick", { action: "end" }, b.swipeHandler), b.$list.on("click.slick", b.clickHandler), a(document).on(b.visibilityChange, a.proxy(b.visibility, b)), b.options.accessibility === !0 && b.$list.on("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), a(window).on("orientationchange.slick.slick-" + b.instanceUid, a.proxy(b.orientationChange, b)), a(window).on("resize.slick.slick-" + b.instanceUid, a.proxy(b.resize, b)), a("[draggable!=true]", b.$slideTrack).on("dragstart", b.preventDefault), a(window).on("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).on("ready.slick.slick-" + b.instanceUid, b.setPosition) 218 }, b.prototype.initUI = function() { 219 var a = this; 220 a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.show(), a.$nextArrow.show()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.show() 221 }, b.prototype.keyHandler = function(a) { 222 var b = this; 223 a.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === a.keyCode && b.options.accessibility === !0 ? b.changeSlide({ data: { message: b.options.rtl === !0 ? "next" : "previous" } }) : 39 === a.keyCode && b.options.accessibility === !0 && b.changeSlide({ data: { message: b.options.rtl === !0 ? "previous" : "next" } })) 224 }, b.prototype.lazyLoad = function() { 225 function g(c) { 226 a("img[data-lazy]", c).each(function() { 227 var c = a(this), 228 d = a(this).attr("data-lazy"), 229 e = document.createElement("img"); 230 e.onload = function() { c.animate({ opacity: 0 }, 100, function() { c.attr("src", d).animate({ opacity: 1 }, 200, function() { c.removeAttr("data-lazy").removeClass("slick-loading") }), b.$slider.trigger("lazyLoaded", [b, c, d]) }) }, e.onerror = function() { c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), b.$slider.trigger("lazyLoadError", [b, c, d]) }, e.src = d 231 }) 232 } 233 var c, d, e, f, b = this; 234 b.options.centerMode === !0 ? b.options.infinite === !0 ? (e = b.currentSlide + (b.options.slidesToShow / 2 + 1), f = e + b.options.slidesToShow + 2) : (e = Math.max(0, b.currentSlide - (b.options.slidesToShow / 2 + 1)), f = 2 + (b.options.slidesToShow / 2 + 1) + b.currentSlide) : (e = b.options.infinite ? b.options.slidesToShow + b.currentSlide : b.currentSlide, f = Math.ceil(e + b.options.slidesToShow), b.options.fade === !0 && (e > 0 && e--, f <= b.slideCount && f++)), c = b.$slider.find(".slick-slide").slice(e, f), g(c), b.slideCount <= b.options.slidesToShow ? (d = b.$slider.find(".slick-slide"), g(d)) : b.currentSlide >= b.slideCount - b.options.slidesToShow ? (d = b.$slider.find(".slick-cloned").slice(0, b.options.slidesToShow), g(d)) : 0 === b.currentSlide && (d = b.$slider.find(".slick-cloned").slice(-1 * b.options.slidesToShow), g(d)) 235 }, b.prototype.loadSlider = function() { 236 var a = this; 237 a.setPosition(), a.$slideTrack.css({ opacity: 1 }), a.$slider.removeClass("slick-loading"), a.initUI(), "progressive" === a.options.lazyLoad && a.progressiveLazyLoad() 238 }, b.prototype.next = b.prototype.slickNext = function() { 239 var a = this; 240 a.changeSlide({ data: { message: "next" } }) 241 }, b.prototype.orientationChange = function() { 242 var a = this; 243 a.checkResponsive(), a.setPosition() 244 }, b.prototype.pause = b.prototype.slickPause = function() { 245 var a = this; 246 a.autoPlayClear(), a.paused = !0 247 }, b.prototype.play = b.prototype.slickPlay = function() { 248 var a = this; 249 a.autoPlay(), a.options.autoplay = !0, a.paused = !1, a.focussed = !1, a.interrupted = !1 250 }, b.prototype.postSlide = function(a) { 251 var b = this; 252 b.unslicked || (b.$slider.trigger("afterChange", [b, a]), b.animating = !1, b.setPosition(), b.swipeLeft = null, b.options.autoplay && b.autoPlay(), b.options.accessibility === !0 && b.initADA()) 253 }, b.prototype.prev = b.prototype.slickPrev = function() { 254 var a = this; 255 a.changeSlide({ data: { message: "previous" } }) 256 }, b.prototype.preventDefault = function(a) { a.preventDefault() }, b.prototype.progressiveLazyLoad = function(b) { 257 b = b || 1; 258 var e, f, g, c = this, 259 d = a("img[data-lazy]", c.$slider); 260 d.length ? (e = d.first(), f = e.attr("data-lazy"), g = document.createElement("img"), g.onload = function() { e.attr("src", f).removeAttr("data-lazy").removeClass("slick-loading"), c.options.adaptiveHeight === !0 && c.setPosition(), c.$slider.trigger("lazyLoaded", [c, e, f]), c.progressiveLazyLoad() }, g.onerror = function() { 3 > b ? setTimeout(function() { c.progressiveLazyLoad(b + 1) }, 500) : (e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), c.$slider.trigger("lazyLoadError", [c, e, f]), c.progressiveLazyLoad()) }, g.src = f) : c.$slider.trigger("allImagesLoaded", [c]) 261 }, b.prototype.refresh = function(b) { 262 var d, e, c = this; 263 e = c.slideCount - c.options.slidesToShow, !c.options.infinite && c.currentSlide > e && (c.currentSlide = e), c.slideCount <= c.options.slidesToShow && (c.currentSlide = 0), d = c.currentSlide, c.destroy(!0), a.extend(c, c.initials, { currentSlide: d }), c.init(), b || c.changeSlide({ data: { message: "index", index: d } }, !1) 264 }, b.prototype.registerBreakpoints = function() { 265 var c, d, e, b = this, 266 f = b.options.responsive || null; 267 if ("array" === a.type(f) && f.length) { 268 b.respondTo = b.options.respondTo || "window"; 269 for (c in f) 270 if (e = b.breakpoints.length - 1, d = f[c].breakpoint, f.hasOwnProperty(c)) { 271 for (; e >= 0;) b.breakpoints[e] && b.breakpoints[e] === d && b.breakpoints.splice(e, 1), e--; 272 b.breakpoints.push(d), b.breakpointSettings[d] = f[c].settings 273 } 274 b.breakpoints.sort(function(a, c) { return b.options.mobileFirst ? a - c : c - a }) 275 } 276 }, b.prototype.reinit = function() { 277 var b = this; 278 b.$slides = b.$slideTrack.children(b.options.slide).addClass("slick-slide"), b.slideCount = b.$slides.length, b.currentSlide >= b.slideCount && 0 !== b.currentSlide && (b.currentSlide = b.currentSlide - b.options.slidesToScroll), b.slideCount <= b.options.slidesToShow && (b.currentSlide = 0), b.registerBreakpoints(), b.setProps(), b.setupInfinite(), b.buildArrows(), b.updateArrows(), b.initArrowEvents(), b.buildDots(), b.updateDots(), b.initDotEvents(), b.cleanUpSlideEvents(), b.initSlideEvents(), b.checkResponsive(!1, !0), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.setPosition(), b.focusHandler(), b.paused = !b.options.autoplay, b.autoPlay(), b.$slider.trigger("reInit", [b]) 279 }, b.prototype.resize = function() { 280 var b = this; 281 a(window).width() !== b.windowWidth && (clearTimeout(b.windowDelay), b.windowDelay = window.setTimeout(function() { b.windowWidth = a(window).width(), b.checkResponsive(), b.unslicked || b.setPosition() }, 50)) 282 }, b.prototype.removeSlide = b.prototype.slickRemove = function(a, b, c) { var d = this; return "boolean" == typeof a ? (b = a, a = b === !0 ? 0 : d.slideCount - 1) : a = b === !0 ? --a : a, d.slideCount < 1 || 0 > a || a > d.slideCount - 1 ? !1 : (d.unload(), c === !0 ? d.$slideTrack.children().remove() : d.$slideTrack.children(this.options.slide).eq(a).remove(), d.$slides = d.$slideTrack.children(this.options.slide), d.$slideTrack.children(this.options.slide).detach(), d.$slideTrack.append(d.$slides), d.$slidesCache = d.$slides, void d.reinit()) }, b.prototype.setCSS = function(a) { 283 var d, e, b = this, 284 c = {}; 285 b.options.rtl === !0 && (a = -a), d = "left" == b.positionProp ? Math.ceil(a) + "px" : "0px", e = "top" == b.positionProp ? Math.ceil(a) + "px" : "0px", c[b.positionProp] = a, b.transformsEnabled === !1 ? b.$slideTrack.css(c) : (c = {}, b.cssTransitions === !1 ? (c[b.animType] = "translate(" + d + ", " + e + ")", b.$slideTrack.css(c)) : (c[b.animType] = "translate3d(" + d + ", " + e + ", 0px)", b.$slideTrack.css(c))) 286 }, b.prototype.setDimensions = function() { 287 var a = this; 288 a.options.vertical === !1 ? a.options.centerMode === !0 && a.$list.css({ padding: "0px " + a.options.centerPadding }) : (a.$list.height(a.$slides.first().outerHeight(!0) * a.options.slidesToShow), a.options.centerMode === !0 && a.$list.css({ padding: a.options.centerPadding + " 0px" })), a.listWidth = a.$list.width(), a.listHeight = a.$list.height(), a.options.vertical === !1 && a.options.variableWidth === !1 ? (a.slideWidth = Math.ceil(a.listWidth / a.options.slidesToShow), a.$slideTrack.width(Math.ceil(a.slideWidth * a.$slideTrack.children(".slick-slide").length))) : a.options.variableWidth === !0 ? a.$slideTrack.width(5e3 * a.slideCount) : (a.slideWidth = Math.ceil(a.listWidth), a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0) * a.$slideTrack.children(".slick-slide").length))); 289 var b = a.$slides.first().outerWidth(!0) - a.$slides.first().width(); 290 a.options.variableWidth === !1 && a.$slideTrack.children(".slick-slide").width(a.slideWidth - b) 291 }, b.prototype.setFade = function() { 292 var c, b = this; 293 b.$slides.each(function(d, e) { c = b.slideWidth * d * -1, b.options.rtl === !0 ? a(e).css({ position: "relative", right: c, top: 0, zIndex: b.options.zIndex - 2, opacity: 0 }) : a(e).css({ position: "relative", left: c, top: 0, zIndex: b.options.zIndex - 2, opacity: 0 }) }), b.$slides.eq(b.currentSlide).css({ zIndex: b.options.zIndex - 1, opacity: 1 }) 294 }, b.prototype.setHeight = function() { 295 var a = this; 296 if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) { 297 var b = a.$slides.eq(a.currentSlide).outerHeight(!0); 298 a.$list.css("height", b) 299 } 300 }, b.prototype.setOption = b.prototype.slickSetOption = function() { 301 var c, d, e, f, h, b = this, 302 g = !1; 303 if ("object" === a.type(arguments[0]) ? (e = arguments[0], g = arguments[1], h = "multiple") : "string" === a.type(arguments[0]) && (e = arguments[0], f = arguments[1], g = arguments[2], "responsive" === arguments[0] && "array" === a.type(arguments[1]) ? h
vendor: 12,602 bytes, lines 303-379
303= "responsive" : "undefined" != typeof arguments[1] && (h = "single")), "single" === h) b.options[e] = f; 304 else if ("multiple" === h) a.each(e, function(a, c) { b.options[a] = c }); 305 else if ("responsive" === h) 306 for (d in f) 307 if ("array" !== a.type(b.options.responsive)) b.options.responsive = [f[d]]; 308 else { 309 for (c = b.options.responsive.length - 1; c >= 0;) b.options.responsive[c].breakpoint === f[d].breakpoint && b.options.responsive.splice(c, 1), c--; 310 b.options.responsive.push(f[d]) 311 } 312 g && (b.unload(), b.reinit()) 313 }, b.prototype.setPosition = function() { 314 var a = this; 315 a.setDimensions(), a.setHeight(), a.options.fade === !1 ? a.setCSS(a.getLeft(a.currentSlide)) : a.setFade(), a.$slider.trigger("setPosition", [a]) 316 }, b.prototype.setProps = function() { 317 var a = this, 318 b = document.body.style; 319 a.positionProp = a.options.vertical === !0 ? "top" : "left", "top" === a.positionProp ? a.$slider.addClass("slick-vertical") : a.$slider.removeClass("slick-vertical"), (void 0 !== b.WebkitTransition || void 0 !== b.MozTransition || void 0 !== b.msTransition) && a.options.useCSS === !0 && (a.cssTransitions = !0), a.options.fade && ("number" == typeof a.options.zIndex ? a.options.zIndex < 3 && (a.options.zIndex = 3) : a.options.zIndex = a.defaults.zIndex), void 0 !== b.OTransform && (a.animType = "OTransform", a.transformType = "-o-transform", a.transitionType = "OTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.MozTransform && (a.animType = "MozTransform", a.transformType = "-moz-transform", a.transitionType = "MozTransition", void 0 === b.perspectiveProperty && void 0 === b.MozPerspective && (a.animType = !1)), void 0 !== b.webkitTransform && (a.animType = "webkitTransform", a.transformType = "-webkit-transform", a.transitionType = "webkitTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.msTransform && (a.animType = "msTransform", a.transformType = "-ms-transform", a.transitionType = "msTransition", void 0 === b.msTransform && (a.animType = !1)), void 0 !== b.transform && a.animType !== !1 && (a.animType = "transform", a.transformType = "transform", a.transitionType = "transition"), a.transformsEnabled = a.options.useTransform && null !== a.animType && a.animType !== !1 320 }, b.prototype.setSlideClasses = function(a) { 321 var c, d, e, f, b = this; 322 d = b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), b.$slides.eq(a).addClass("slick-current"), b.options.centerMode === !0 ? (c = Math.floor(b.options.slidesToShow / 2), b.options.infinite === !0 && (a >= c && a <= b.slideCount - 1 - c ? b.$slides.slice(a - c, a + c + 1).addClass("slick-active").attr("aria-hidden", "false") : (e = b.options.slidesToShow + a, 323 d.slice(e - c + 1, e + c + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === a ? d.eq(d.length - 1 - b.options.slidesToShow).addClass("slick-center") : a === b.slideCount - 1 && d.eq(b.options.slidesToShow).addClass("slick-center")), b.$slides.eq(a).addClass("slick-center")) : a >= 0 && a <= b.slideCount - b.options.slidesToShow ? b.$slides.slice(a, a + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : d.length <= b.options.slidesToShow ? d.addClass("slick-active").attr("aria-hidden", "false") : (f = b.slideCount % b.options.slidesToShow, e = b.options.infinite === !0 ? b.options.slidesToShow + a : a, b.options.slidesToShow == b.options.slidesToScroll && b.slideCount - a < b.options.slidesToShow ? d.slice(e - (b.options.slidesToShow - f), e + f).addClass("slick-active").attr("aria-hidden", "false") : d.slice(e, e + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")), "ondemand" === b.options.lazyLoad && b.lazyLoad() 324 }, b.prototype.setupInfinite = function() { 325 var c, d, e, b = this; 326 if (b.options.fade === !0 && (b.options.centerMode = !1), b.options.infinite === !0 && b.options.fade === !1 && (d = null, b.slideCount > b.options.slidesToShow)) { 327 for (e = b.options.centerMode === !0 ? b.options.slidesToShow + 1 : b.options.slidesToShow, c = b.slideCount; c > b.slideCount - e; c -= 1) d = c - 1, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d - b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned"); 328 for (c = 0; e > c; c += 1) d = c, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d + b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned"); 329 b.$slideTrack.find(".slick-cloned").find("[id]").each(function() { a(this).attr("id", "") }) 330 } 331 }, b.prototype.interrupt = function(a) { 332 var b = this; 333 a || b.autoPlay(), b.interrupted = a 334 }, b.prototype.selectHandler = function(b) { 335 var c = this, 336 d = a(b.target).is(".slick-slide") ? a(b.target) : a(b.target).parents(".slick-slide"), 337 e = parseInt(d.attr("data-slick-index")); 338 return e || (e = 0), c.slideCount <= c.options.slidesToShow ? (c.setSlideClasses(e), void c.asNavFor(e)) : void c.slideHandler(e) 339 }, b.prototype.slideHandler = function(a, b, c) { 340 var d, e, f, g, j, h = null, 341 i = this; 342 return b = b || !1, i.animating === !0 && i.options.waitForAnimate === !0 || i.options.fade === !0 && i.currentSlide === a || i.slideCount <= i.options.slidesToShow ? void 0 : (b === !1 && i.asNavFor(a), d = a, h = i.getLeft(d), g = i.getLeft(i.currentSlide), i.currentLeft = null === i.swipeLeft ? g : i.swipeLeft, i.options.infinite === !1 && i.options.centerMode === !1 && (0 > a || a > i.getDotCount() * i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function() { i.postSlide(d) }) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount - i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function() { i.postSlide(d) }) : i.postSlide(d))) : (i.options.autoplay && clearInterval(i.autoPlayTimer), e = 0 > d ? i.slideCount % i.options.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ? i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d, i.animating = !0, i.$slider.trigger("beforeChange", [i, i.currentSlide, e]), f = i.currentSlide, i.currentSlide = e, i.setSlideClasses(i.currentSlide), i.options.asNavFor && (j = i.getNavTarget(), j = j.slick("getSlick"), j.slideCount <= j.options.slidesToShow && j.setSlideClasses(i.currentSlide)), i.updateDots(), i.updateArrows(), i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(f), i.fadeSlide(e, function() { i.postSlide(e) })) : i.postSlide(e), void i.animateHeight()) : void(c !== !0 ? i.animateSlide(h, function() { i.postSlide(e) }) : i.postSlide(e)))) 343 }, b.prototype.startLoad = function() { 344 var a = this; 345 a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(), a.$nextArrow.hide()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(), a.$slider.addClass("slick-loading") 346 }, b.prototype.swipeDirection = function() { var a, b, c, d, e = this; return a = e.touchObject.startX - e.touchObject.curX, b = e.touchObject.startY - e.touchObject.curY, c = Math.atan2(b, a), d = Math.round(180 * c / Math.PI), 0 > d && (d = 360 - Math.abs(d)), 45 >= d && d >= 0 ? e.options.rtl === !1 ? "left" : "right" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? "left" : "right" : d >= 135 && 225 >= d ? e.options.rtl === !1 ? "right" : "left" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? "down" : "up" : "vertical" }, b.prototype.swipeEnd = function(a) { 347 var c, d, b = this; 348 if (b.dragging = !1, b.interrupted = !1, b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0, void 0 === b.touchObject.curX) return !1; 349 if (b.touchObject.edgeHit === !0 && b.$slider.trigger("edge", [b, b.swipeDirection()]), b.touchObject.swipeLength >= b.touchObject.minSwipe) { 350 switch (d = b.swipeDirection()) { 351 case "left": 352 case "down": 353 c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(), b.currentDirection = 0; 354 break; 355 case "right": 356 case "up": 357 c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(), b.currentDirection = 1 358 } 359 "vertical" != d && (b.slideHandler(c), b.touchObject = {}, b.$slider.trigger("swipe", [b, d])) 360 } else b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide), b.touchObject = {}) 361 }, b.prototype.swipeHandler = function(a) { 362 var b = this; 363 if (!(b.options.swipe === !1 || "ontouchend" in document && b.options.swipe === !1 || b.options.draggable === !1 && -1 !== a.type.indexOf("mouse"))) switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent.touches ? a.originalEvent.touches.length : 1, b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold, b.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold), a.data.action) { 364 case "start": 365 b.swipeStart(a); 366 break; 367 case "move": 368 b.swipeMove(a); 369 break; 370 case "end": 371 b.swipeEnd(a) 372 } 373 }, b.prototype.swipeMove = function(a) { var d, e, f, g, h, b = this; return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null, !b.dragging || h && 1 !== h.length ? !1 : (d = b.getLeft(b.currentSlide), b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX, b.touchObject.curY = void 0 !== h ? h[0].pageY : a.clientY, b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX - b.touchObject.startX, 2))), b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))), e = b.swipeDirection(), "vertical" !== e ? (void 0 !== a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(), g = (b.options.rtl === !1 ? 1 : -1) * (b.touchObject.curX > b.touchObject.startX ? 1 : -1), b.options.verticalSwiping === !0 && (g = b.touchObject.curY > b.touchObject.startY ? 1 : -1), f = b.touchObject.swipeLength, b.touchObject.edgeHit = !1, b.options.infinite === !1 && (0 === b.currentSlide && "right" === e || b.currentSlide >= b.getDotCount() && "left" === e) && (f = b.touchObject.swipeLength * b.options.edgeFriction, b.touchObject.edgeHit = !0), b.options.vertical === !1 ? b.swipeLeft = d + f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g, b.options.verticalSwiping === !0 && (b.swipeLeft = d + f * g), b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null, !1) : void b.setCSS(b.swipeLeft)) : void 0) }, b.prototype.swipeStart = function(a) { var c, b = this; return b.interrupted = !0, 1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {}, !1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]), b.touchObject.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX, b.touchObject.startY = b.touchObject.curY = void 0 !== c ? c.pageY : a.clientY, void(b.dragging = !0)) }, b.prototype.unfilterSlides = b.prototype.slickUnfilter = function() { 374 var a = this; 375 null !== a.$slidesCache && (a.unload(), a.$slideTrack.children(this.options.slide).detach(), a.$slidesCache.appendTo(a.$slideTrack), a.reinit()) 376 }, b.prototype.unload = function() { 377 var b = this; 378 a(".slick-cloned", b.$slider).remove(), b.$dots && b.$dots.remove(), b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.remove(), b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(), b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "") 379 }
379, b.prototype.unslick = function(a) { 380 var b = this; 381 b.$slider.trigger("unslick", [b, a]), b.destroy() 382 }, b.prototype.updateArrows = function() { 383 var b, a = this; 384 b = Math.floor(a.options.slidesToShow / 2), a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options.infinite && (a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === a.currentSlide ? (a.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"))) 385 }, b.prototype.updateDots = function() { 386 var a = this; 387 null !== a.$dots && (a.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"), a.$dots.find("li").eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false")) 388 }, b.prototype.visibility = function() { 389 var a = this; 390 a.options.autoplay && (document[a.hidden] ? a.interrupted = !0 : a.interrupted = !1) 391 }, a.fn.slick = function() { 392 var f, g, a = this, 393 c = arguments[0], 394 d = Array.prototype.slice.call(arguments, 1), 395 e = a.length; 396 for (f = 0; e > f; f++) 397 if ("object" == typeof c || "undefined" == typeof c ? a[f].slick = new b(a[f], c) : g = a[f].slick[c].apply(a[f].slick, d), "undefined" != typeof g) return g; 398 return a 399 } 400}); 401 402 403// LIGHTBOX 404/* 405Lightbox for Bootstrap 3 by @ashleydw 406https://github.com/ashleydw/lightbox 407 408License: https://github.com/ashleydw/lightbox/blob/master/LICENSE 409*/ 410(function() { 411 "use strict"; 412 var $, EkkoLightbox; 413 414 $ = jQuery; 415 416 EkkoLightbox = function(element, options) { 417 var content, footer, header, 418 _this = this; 419 this.options = $.extend({ 420 title: null, 421 footer: null, 422 remote: null 423 }, $.fn.ekkoLightbox.defaults, options || {}); 424 this.$element = $(element); 425 content = ''; 426 this.modal_id = this.options.modal_id ? this.options.modal_id : 'ekkoLightbox-' + Math.floor((Math.random() * 1000) + 1); 427 header = '<div class="modal-header"' + (this.options.title || this.options.always_show_close ? '' : ' style="display:none"') + '><button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="ion-android-close"></span></button><h4 class="modal-title">' + (this.options.title || " ") + '</h4></div>'; 428 footer = '<div class="modal-footer"' + (this.options.footer ? '' : ' style="display:none"') + '>' + this.options.footer + '</div>'; 429 $(document.body).append('<div id="' + this.modal_id + '" class="ekko-lightbox modal fade" tabindex="-1"><div class="modal-dialog"><div class="modal-content">' + header + '<div class="modal-body"><div class="ekko-lightbox-container"><div></div></div></div>' + footer + '</div></div></div>'); 430 this.modal = $('#' + this.modal_id); 431 this.modal_dialog = this.modal.find('.modal-dialog').first(); 432 this.modal_content = this.modal.find('.modal-content').first(); 433 this.modal_body = this.modal.find('.modal-body').first(); 434 this.lightbox_container = this.modal_body.find('.ekko-lightbox-container').first(); 435 this.lightbox_body = this.lightbox_container.find('> div:first-child').first(); 436 this.showLoading(); 437 this.modal_arrows = null; 438 this.border = { 439 top: parseFloat(this.modal_dialog.css('border-top-width')) + parseFloat(this.modal_content.css('border-top-width')) + parseFloat(this.modal_body.css('border-top-width')), 440 right: parseFloat(this.modal_dialog.css('border-right-width')) + parseFloat(this.modal_content.css('border-right-width')) + parseFloat(this.modal_body.css('border-right-width')), 441 bottom: parseFloat(this.modal_dialog.css('border-bottom-width')) + parseFloat(this.modal_content.css('border-bottom-width')) + parseFloat(this.modal_body.css('border-bottom-width')), 442 left: parseFloat(this.modal_dialog.css('border-left-width')) + parseFloat(this.modal_content.css('border-left-width')) + parseFloat(this.modal_body.css('border-left-width')) 443 }; 444 this.padding = { 445 top: parseFloat(this.modal_dialog.css('padding-top')) + parseFloat(this.modal_content.css('padding-top')) + parseFloat(this.modal_body.css('padding-top')), 446 right: parseFloat(this.modal_dialog.css('padding-right')) + parseFloat(this.modal_content.css('padding-right')) + parseFloat(this.modal_body.css('padding-right')), 447 bottom: parseFloat(this.modal_dialog.css('padding-bottom')) + parseFloat(this.modal_content.css('padding-bottom')) + parseFloat(this.modal_body.css('padding-bottom')), 448 left: parseFloat(this.modal_dialog.css('padding-left')) + parseFloat(this.modal_content.css('padding-left')) + parseFloat(this.modal_body.css('padding-left')) 449 }; 450 this.modal.on('show.bs.modal', this.options.onShow.bind(this)).on('shown.bs.modal', function() { 451 _this.modal_shown(); 452 return _this.options.onShown.call(_this); 453 }).on('hide.bs.modal', this.options.onHide.bind(this)).on('hidden.bs.modal', function() { 454 if (_this.gallery) { 455 $(document).off('keydown.ekkoLightbox'); 456 } 457 _this.modal.remove(); 458 return _this.options.onHidden.call(_this); 459 }).modal('show', options); 460 return this.modal; 461 }; 462 463 EkkoLightbox.prototype = { 464 modal_shown: function() { 465 var video_id, 466 _this = this; 467 if (!this.options.remote) { 468 return this.error('No remote target given'); 469 } else { 470 this.gallery = this.$element.data('gallery'); 471 if (this.gallery) { 472 if (this.options.gallery_parent_selector === 'document.body' || this.options.gallery_parent_selector === '') { 473 this.gallery_items = $(document.body).find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]'); 474 } else { 475 this.gallery_items = this.$element.parents(this.options.gallery_parent_selector).first().find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]'); 476 } 477 this.gallery_index = this.gallery_items.index(this.$element); 478 $(document).on('keydown.ekkoLightbox', this.navigate.bind(this)); 479 if (this.options.directional_arrows && this.gallery_items.length > 1) { 480 this.lightbox_container.append('<div class="ekko-lightbox-nav-overlay"><a href="#" class="' + this.strip_stops(this.options.left_arrow_class) + '"></a><a href="#" class="' + this.strip_stops(this.options.right_arrow_class) + '"></a></div>'); 481 this.modal_arrows = this.lightbox_container.find('div.ekko-lightbox-nav-overlay').first(); 482 this.lightbox_container.find('a' + this.strip_spaces(this.options.left_arrow_class)).on('click', function(event) { 483 event.preventDefault(); 484 return _this.navigate_left(); 485 }); 486 this.lightbox_container.find('a' + this.strip_spaces(this.options.right_arrow_class)).on('click', function(event) { 487 event.preventDefault(); 488 return _this.navigate_right(); 489 }); 490 } 491 } 492 if (this.options.type) { 493 if (this.options.type === 'image') { 494 return this.preloadImage(this.options.remote, true); 495 } else if (this.options.type === 'youtube' && (video_id = this.getYoutubeId(this.options.remote))) { 496 return this.showYoutubeVideo(video_id); 497 } else if (this.options.type === 'vimeo') { 498 return this.showVimeoVideo(this.options.remote); 499 } else if (this.options.type === 'instagram') { 500 return this.showInstagramVideo(this.options.remote); 501 } else if (this.options.type === 'url') { 502 return this.loadRemoteContent(this.options.remote); 503 } else if (this.options.type === 'video') { 504 return this.showVideoIframe(this.options.remote); 505 } else { 506 return this.error("Could not detect remote target type. Force the type using data-type=\"image|youtube|vimeo|instagram|url|video\""); 507 } 508 } else { 509 return this.detectRemoteType(this.options.remote); 510 } 511 } 512 },
513 strip_stops: function(str) { 514 return str.replace(/\./g, ''); 515 }, 516 strip_spaces: function(str) { 517 return str.replace(/\s/g, ''); 518 }, 519 isImage: function(str) { 520 return str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); 521 }, 522 isSwf: function(str) { 523 return str.match(/\.(swf)((\?|#).*)?$/i); 524 }, 525 getYoutubeId: function(str) { 526 var match; 527 match = str.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/); 528 if (match && match[2].length === 11) { 529 return match[2]; 530 } else { 531 return false; 532 } 533 }, 534 getVimeoId: function(str) { 535 if (str.indexOf('vimeo') > 0) { 536 return str; 537 } else { 538 return false; 539 } 540 }, 541 getInstagramId: function(str) { 542 if (str.indexOf('instagram') > 0) { 543 return str; 544 } else { 545 return false; 546 } 547 }, 548 navigate: function(event) { 549 event = event || window.event; 550 if (event.keyCode === 39 || event.keyCode === 37) { 551 if (event.keyCode === 39) { 552 return this.navigate_right(); 553 } else if (event.keyCode === 37) { 554 return this.navigate_left(); 555 } 556 } 557 }, 558 navigateTo: function(index) { 559 var next, src; 560 if (index < 0 || index > this.gallery_items.length - 1) { 561 return this; 562 } 563 this.showLoading(); 564 this.gallery_index = index; 565 this.$element = $(this.gallery_items.get(this.gallery_index)); 566 this.updateTitleAndFooter(); 567 src = this.$element.attr('data-remote') || this.$element.attr('href'); 568 this.detectRemoteType(src, this.$element.attr('data-type') || false); 569 if (this.gallery_index + 1 < this.gallery_items.length) { 570 next = $(this.gallery_items.get(this.gallery_index + 1), false); 571 src = next.attr('data-remote') || next.attr('href'); 572 if (next.attr('data-type') === 'image' || this.isImage(src)) { 573 return this.preloadImage(src, false); 574 } 575 } 576 }, 577 navigate_left: function() { 578 if (this.gallery_items.length === 1) { 579 return; 580 } 581 if (this.gallery_index === 0) { 582 this.gallery_index = this.gallery_items.length - 1; 583 } else { 584 this.gallery_index--; 585 } 586 this.options.onNavigate.call(this, 'left', this.gallery_index); 587 return this.navigateTo(this.gallery_index); 588 }, 589 navigate_right: function() { 590 if (this.gallery_items.length === 1) { 591 return; 592 } 593 if (this.gallery_index === this.gallery_items.length - 1) { 594 this.gallery_index = 0; 595 } else { 596 this.gallery_index++; 597 } 598 this.options.onNavigate.call(this, 'right', this.gallery_index); 599 return this.navigateTo(this.gallery_index); 600 }, 601 detectRemoteType: function(src, type) { 602 var video_id; 603 type = type || false; 604 if (type === 'image' || this.isImage(src)) { 605 this.options.type = 'image'; 606 return this.preloadImage(src, true); 607 } else if (type === 'youtube' || (video_id = this.getYoutubeId(src))) { 608 this.options.type = 'youtube'; 609 return this.showYoutubeVideo(video_id); 610 } else if (type === 'vimeo' || (video_id = this.getVimeoId(src))) { 611 this.options.type = 'vimeo'; 612 return this.showVimeoVideo(video_id); 613 } else if (type === 'instagram' || (video_id = this.getInstagramId(src))) { 614 this.options.type = 'instagram'; 615 return this.showInstagramVideo(video_id); 616 } else if (type === 'video') { 617 this.options.type = 'video'; 618 return this.showVideoIframe(video_id); 619 } else { 620 this.options.type = 'url'; 621 return this.loadRemoteContent(src); 622 } 623 }, 624 updateTitleAndFooter: function() { 625 var caption, footer, header, title;
626 header = this.modal_content.find('.modal-header'); 627 footer = this.modal_content.find('.modal-footer'); 628 title = this.$element.data('title') || ""; 629 caption = this.$element.data('footer') || ""; 630 if (title || this.options.always_show_close) { 631 header.css('display', '').find('.modal-title').html(title || " "); 632 } else { 633 header.css('display', 'none'); 634 } 635 if (caption) { 636 footer.css('display', '').html(caption); 637 } else { 638 footer.css('display', 'none'); 639 } 640 return this; 641 }, 642 showLoading: function() { 643 this.lightbox_body.html('<div class="modal-loading">' + this.options.loadingMessage + '</div>'); 644 return this; 645 }, 646 showYoutubeVideo: function(id) { 647 var height, width; 648 width = this.checkDimensions(this.$element.data('width') || 1140); 649 height = width / (560 / 315); 650 return this.showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1', width, height); 651 }, 652 showVimeoVideo: function(id) { 653 var height, width; 654 width = this.checkDimensions(this.$element.data('width') || 1140); 655 height = width / (500 / 281); 656 return this.showVideoIframe(id + '?autoplay=1', width, height); 657 }, 658 showInstagramVideo: function(id) { 659 var height, width; 660 width = this.checkDimensions(this.$element.data('width') || 612); 661 this.resize(width); 662 height = width + 80; 663 this.lightbox_body.html('<iframe width="' + width + '" height="' + height + '" src="' + this.addTrailingSlash(id) + 'embed/" frameborder="0" allowfullscreen></iframe>'); 664 this.options.onContentLoaded.call(this); 665 if (this.modal_arrows) { 666 return this.modal_arrows.css('display', 'none'); 667 } 668 }, 669 showVideoIframe: function(url, width, height) { 670 height = height || width; 671 this.resize(width); 672 this.lightbox_body.html('<div class="embed-responsive embed-responsive-16by9"><iframe width="' + width + '" height="' + height + '" src="' + url + '" frameborder="0" allowfullscreen class="embed-responsive-item"></iframe></div>'); 673 this.options.onContentLoaded.call(this); 674 if (this.modal_arrows) { 675 this.modal_arrows.css('display', 'none'); 676 } 677 return this; 678 }, 679 loadRemoteContent: function(url) { 680 var disableExternalCheck, width, 681 _this = this; 682 width = this.$element.data('width') || 560; 683 this.resize(width); 684 disableExternalCheck = this.$element.data('disableExternalCheck') || false; 685 if (!disableExternalCheck && !this.isExternal(url)) { 686 this.lightbox_body.load(url, $.proxy(function() { 687 return _this.$element.trigger('loaded.bs.modal'); 688 })); 689 } else { 690 this.lightbox_body.html('<iframe width="' + width + '" height="' + width + '" src="' + url + '" frameborder="0" allowfullscreen></iframe>'); 691 this.options.onContentLoaded.call(this); 692 } 693 if (this.modal_arrows) { 694 this.modal_arrows.css('display', 'none'); 695 } 696 return this; 697 }, 698 isExternal: function(url) { 699 var match; 700 match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/); 701 if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) { 702 return true; 703 } 704 if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(":(" + { 705 "http:": 80, 706 "https:": 443 707 }[location.protocol] + ")?$"), "") !== location.host) { 708 return true; 709 } 710 return false; 711 }, 712 error: function(message) { 713 this.lightbox_body.html(message); 714 return this; 715 }, 716 preloadImage: function(src, onLoadShowImage) { 717 var img, 718 _this = this; 719 img = new Image(); 720 if ((onLoadShowImage == null) || onLoadShowImage === true) { 721 img.onload = function() { 722 var image; 723 var maxh = $(window).height() * 0.8; //% of screen height 724 image = $('<img />'); 725 image.attr('src', img.src); 726 image.attr('style', "max-height: " + maxh + "px"); 727 image.addClass('img-responsive'); 728 _this.lightbox_body.html(image); 729 if (_this.modal_arrows) { 730 _this.modal_arrows.css('display', 'block'); 731 } 732 _this.resize(Math.min(maxh / img.height, 1) * img.width); 733 return _this.options.onContentLoaded.call(_this); 734 }; 735 img.onerror = function() { 736 return _this.error('Failed to load image: ' + src); 737 }; 738 } 739 img.src = src; 740 return img; 741 }, 742 resize: function(width) { 743 var width_total; 744 width_total = width + this.border.left + this.padding.left + this.padding.right + this.border.right; 745 this.modal_dialog.css('width', 'auto').css('max-width', width_total); 746 this.lightbox_container.find('a').css('line-height', function() { 747 return $(this).parent().height() + 'px'; 748 }); 749 return this; 750 }, 751 checkDimensions: function(width) { 752 var body_width, width_total; 753 width_total = width + this.border.left + this.padding.left + this.padding.right + this.border.right; 754 body_width = document.body.clientWidth; 755 if (width_total > body_width) { 756 width = this.modal_body.width(); 757 } 758 return width; 759 }, 760 close: function() { 761 return this.modal.modal('hide'); 762 }, 763 addTrailingSlash: function(url) { 764 if (url.substr(-1) !== '/') { 765 url += '/'; 766 } 767 return url; 768 } 769 }; 770 771 $.fn.ekkoLightbox = function(options) { 772 return this.each(function() { 773 var $this; 774 $this = $(this); 775 options = $.extend({ 776 remote: $this.attr('data-remote') || $this.attr('href'), 777 gallery_parent_selector: $this.attr('data-parent'), 778 type: $this.attr('data-type') 779 }, options, $this.data()); 780 new EkkoLightbox(this, options); 781 return this; 782 }); 783 }; 784 785 $.fn.ekkoLightbox.defaults = { 786 gallery_parent_selector: 'document.body', 787 left_arrow_class: '.ion-chevron-left', 788 right_arrow_class: '.ion-chevron-right', 789 directional_arrows: true, 790 type: null, 791 always_show_close: true, 792 loadingMessage: 'Loading...', 793 onShow: function() {}, 794 onShown: function() {}, 795 onHide: function() {}, 796 onHidden: function() {}, 797 onNavigate: function() {}, 798 onContentLoaded: function() {} 799 800 }; 801 802}).call(this); 803 804 805/** 806 * jquery-match-height master by @liabru 807 * http://brm.io/jquery-match-height/ 808 * License: MIT 809 */ 810 811; 812(function(factory) { // eslint-disable-line no-extra-semi 813 'use strict'; 814 if (typeof define === 'function' && define.amd) { 815 // AMD 816 define(['jquery'], factory); 817 } else if (typeof module !== 'undefined' && module.exports) { 818 // CommonJS 819 module.exports = factory(require('jquery')); 820 } else { 821 // Global 822 factory(jQuery); 823 } 824})(function($) { 825 /* 826 * internal 827 */ 828 829 var _previousResizeWidth = -1, 830 _updateTimeout = -1; 831 832 /* 833 * _parse 834 * value parse utility function 835 */ 836 837 var _parse = function(value) { 838 // parse value and convert NaN to 0 839 return parseFloat(value) || 0; 840 }; 841 842 /* 843 * _rows 844 * utility function returns array of jQuery selections representing each row 845 * (as displayed after float wrapping applied by browser) 846 */ 847 848 var _rows = function(elements) { 849 var tolerance = 1, 850 $elements = $(elements), 851 lastTop = null, 852 rows = []; 853 854 // group elements by their top position 855 $elements.each(function() { 856 var $that = $(this), 857 top = $that.offset().top - _parse($that.css('margin-top')), 858 lastRow = rows.length > 0 ? rows[rows.length - 1] : null; 859 860 if (lastRow === null) { 861 // first item on the row, so just push it 862 rows.push($that); 863 } else { 864 // if the row top is the same, add to the row group 865 if (Math.floor(Math.abs(lastTop - top)) <= tolerance) { 866 rows[rows.length - 1] = lastRow.add($that); 867 } else { 868 // otherwise start a new row group 869 rows.push($that); 870 } 871 } 872 873 // keep track of the last row top 874 lastTop = top; 875 }); 876 877 return rows; 878 }; 879 880 /* 881 * _parseOptions 882 * handle plugin options 883 */ 884 885 var _parseOptions = function(options) { 886 var opts = { 887 byRow: true, 888 property: 'height', 889 target: null, 890 remove: false 891 }; 892 893 if (typeof options === 'object') { 894 return $.extend(opts, options); 895 } 896 897 if (typeof options === 'boolean') { 898 opts.byRow = options; 899 } else if (options === 'remove') { 900 opts.remove = true; 901 } 902 903 return opts; 904 }; 905 906 /* 907 * matchHeight 908 * plugin definition 909 */ 910 911 var matchHeight = $.fn.matchHeight = function(options) { 912 var opts = _parseOptions(options); 913 914 // handle remove 915 if (opts.remove) { 916 var that = this; 917 918 // remove fixed height from all selected elements 919 this.css(opts.property, ''); 920 921 // remove selected elements from all groups 922 $.each(matchHeight._groups, function(key, group) { 923 group.elements = group.elements.not(that); 924 }); 925 926 // TODO: cleanup empty groups 927 928 return this; 929 } 930 931 if (this.length <= 1 && !opts.target) { 932 return this; 933 } 934 935 // keep track of this group so we can re-apply later on load and resize events 936 matchHeight._groups.push({ 937 elements: this, 938 options: opts 939 }); 940 941 // match each element's height to the tallest element in the selection 942 matchHeight._apply(this, opts); 943 944 return this; 945 }; 946 947 /* 948 * plugin global options 949 */ 950 951 matchHeight.version = 'master'; 952 matchHeight._groups = []; 953 matchHeight._throttle = 80; 954 matchHeight._maintainScroll = false; 955 matchHeight._beforeUpdate = null; 956 matchHeight._afterUpdate = null; 957 matchHeight._rows = _rows; 958 matchHeight._parse = _parse; 959 matchHeight._parseOptions = _parseOptions; 960 961 /* 962 * matchHeight._apply 963 * apply matchHeight to given elements 964 */ 965 966 matchHeight._apply = function(elements, options) { 967 var opts = _parseOptions(options), 968 $elements = $(elements), 969 rows = [$elements]; 970 971 // take note of scroll position 972 var scrollTop = $(window).scrollTop(), 973 htmlHeight = $('html').outerHeight(true); 974 975 // get hidden parents 976 var $hiddenParents = $elements.parents().filter(':hidden'); 977 978 // cache the original inline style 979 $hiddenParents.each(function() { 980 var $that = $(this); 981 $that.data('style-cache', $that.attr('style')); 982 }); 983 984 // temporarily must force hidden parents visible 985 $hiddenParents.css('display', 'block'); 986 987 // get rows if using byRow, otherwise assume one row 988 if (opts.byRow && !opts.target) { 989 990 // must first force an arbitrary equal height so floating elements break evenly 991 $elements.each(function() { 992 var $that = $(this), 993 display = $that.css('display'); 994 995 // temporarily force a usable display value 996 if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') { 997 display = 'block'; 998 } 999 1000 // cache the original inline style 1001 $that.data('style-cache', $that.attr('style')); 1002 1003 $that.css({ 1004 'display': display, 1005 'padding-top': '0', 1006 'padding-bottom': '0', 1007 'margin-top': '0', 1008 'margin-bottom': '0', 1009 'border-top-width': '0', 1010 'border-bottom-width': '0', 1011 'height': '100px', 1012 'overflow': 'hidden' 1013 }); 1014 }); 1015 1016 // get the array of rows (based on element top position) 1017 rows = _rows($elements); 1018 1019 // revert original inline styles 1020 $elements.each(function() { 1021 var $that = $(this); 1022 $that.attr('style', $that.data('style-cache') || ''); 1023 }); 1024 } 1025 1026 $.each(rows, function(key, row) { 1027 var $row = $(row), 1028 targetHeight = 0; 1029 1030 if (!opts.target) { 1031 // skip apply to rows with only one item 1032 if (opts.byRow && $row.length <= 1) { 1033 $row.css(opts.property, ''); 1034 return; 1035 } 1036 1037 // iterate the row and find the max height 1038 $row.each(function() { 1039 var $that = $(this), 1040 style = $that.attr('style'), 1041 display = $that.css('display'); 1042 1043 // temporarily force a usable display value 1044 if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') { 1045 display = 'block'; 1046 } 1047 1048 // ensure we get the correct actual height (and not a previously set height value) 1049 var css = { 'display': display }; 1050 css[opts.property] = ''; 1051 $that.css(css); 1052 1053 // find the max height (including padding, but not margin) 1054 if ($that.outerHeight(false) > targetHeight) { 1055 targetHeight = $that.outerHeight(false); 1056 } 1057 1058 // revert styles 1059 if (style) { 1060 $that.attr('style', style); 1061 } else { 1062 $that.css('display', ''); 1063 } 1064 }); 1065 } else { 1066 // if target set, use the height of the target element 1067 targetHeight = opts.target.outerHeight(false); 1068 } 1069 1070 // iterate the row and apply the height to all elements 1071 $row.each(function() { 1072 var $that = $(this), 1073 verticalPadding = 0; 1074 1075 // don't apply to a target 1076 if (opts.target && $that.is(opts.target)) { 1077 return; 1078 } 1079 1080 // handle padding and border correctly (required when not using border-box) 1081 if ($that.css('box-sizing') !== 'border-box') { 1082
1082 verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width')); 1083 verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom')); 1084 } 1085 1086 // set the height (accounting for padding and border) 1087 $that.css(opts.property, (targetHeight - verticalPadding) + 'px'); 1088 }); 1089 }); 1090 1091 // revert hidden parents 1092 $hiddenParents.each(function() { 1093 var $that = $(this); 1094 $that.attr('style', $that.data('style-cache') || null); 1095 }); 1096 1097 // restore scroll position if enabled 1098 if (matchHeight._maintainScroll) { 1099 $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true)); 1100 } 1101 1102 return this; 1103 }; 1104 1105 /* 1106 * matchHeight._applyDataApi 1107 * applies matchHeight to all elements with a data-match-height attribute 1108 */ 1109 1110 matchHeight._applyDataApi = function() { 1111 var groups = {}; 1112 1113 // generate groups by their groupId set by elements using data-match-height 1114 $('[data-match-height], [data-mh]').each(function() { 1115 var $this = $(this), 1116 groupId = $this.attr('data-mh') || $this.attr('data-match-height'); 1117 1118 if (groupId in groups) { 1119 groups[groupId] = groups[groupId].add($this); 1120 } else { 1121 groups[groupId] = $this; 1122 } 1123 }); 1124 1125 // apply matchHeight to each group 1126 $.each(groups, function() { 1127 this.matchHeight(true); 1128 }); 1129 }; 1130 1131 /* 1132 * matchHeight._update 1133 * updates matchHeight on all current groups with their correct options 1134 */ 1135 1136 var _update = function(event) { 1137 if (matchHeight._beforeUpdate) { 1138 matchHeight._beforeUpdate(event, matchHeight._groups); 1139 } 1140 1141 $.each(matchHeight._groups, function() { 1142 matchHeight._apply(this.elements, this.options); 1143 }); 1144 1145 if (matchHeight._afterUpdate) { 1146 matchHeight._afterUpdate(event, matchHeight._groups); 1147 } 1148 }; 1149 1150 matchHeight._update = function(throttle, event) { 1151 // prevent update if fired from a resize event 1152 // where the viewport width hasn't actually changed 1153 // fixes an event looping bug in IE8 1154 if (event && event.type === 'resize') { 1155 var windowWidth = $(window).width(); 1156 if (windowWidth === _previousResizeWidth) { 1157 return; 1158 } 1159 _previousResizeWidth = windowWidth; 1160 } 1161 1162 // throttle updates 1163 if (!throttle) { 1164 _update(event); 1165 } else if (_updateTimeout === -1) { 1166 _updateTimeout = setTimeout(function() { 1167 _update(event); 1168 _updateTimeout = -1; 1169 }, matchHeight._throttle); 1170 } 1171 }; 1172 1173 /* 1174 * bind events 1175 */ 1176 1177 // apply on DOM ready event 1178 $(matchHeight._applyDataApi); 1179 1180 // update heights on load and resize events 1181 $(window).bind('load', function(event) { 1182 matchHeight._update(false, event); 1183 }); 1184 1185 // throttled update heights on resize events 1186 $(window).bind('resize orientationchange', function(event) { 1187 matchHeight._update(true, event); 1188 }); 1189 1190}); 1191 1192 1193// VIDEO FILL AREA 1194// http://jsfiddle.net/4dgaurav/bZrWk/2/ 1195// http://stackoverflow.com/questions/23248441/resizing-video-element-to-parent-div 1196 1197var min_w = 300; // minimum video width allowed 1198var vid_w_orig; // original video dimensions 1199var vid_h_orig; 1200 1201jQuery(function() { // runs after DOM has loaded 1202 1203 vid_w_orig = parseInt(jQuery('video').attr('width')); 1204 vid_h_orig = parseInt(jQuery('video').attr('height')); 1205 $('#debug').append("<p>DOM loaded</p>"); 1206 1207 jQuery(window).resize(function() { resizeToCover(); }); 1208 jQuery(window).trigger('resize'); 1209}); 1210 1211function resizeToCover() { 1212 1213 // set the video viewport to the window size 1214 jQuery('.apc.banner .video .video-player').width(jQuery(window).width()); 1215 jQuery('.apc.banner .video .video-player').height(jQuery(window).height()); 1216 1217 // use largest scale factor of horizontal/vertical 1218 var scale_h = jQuery(window).width() / vid_w_orig; 1219 var scale_v = jQuery(window).height() / vid_h_orig; 1220 var scale = scale_h > scale_v ? scale_h : scale_v; 1221 1222 // don't allow scaled width < minimum video width
vendor: 10,864 bytes, lines 1223-1422
1223 if (scale * vid_w_orig < min_w) { scale = min_w / vid_w_orig; }; 1224 1225 // now scale the video 1226 jQuery('video').width(scale * vid_w_orig); 1227 jQuery('video').height(scale * vid_h_orig); 1228 // and center it by scrolling the video viewport 1229 jQuery('.apc.banner .video .video-player').scrollLeft((jQuery('video').width() - jQuery(window).width()) / 2); 1230 jQuery('.apc.banner .video .video-player').scrollTop((jQuery('video').height() - jQuery(window).height()) / 2); 1231}; 1232 1233 1234 1235// WAYPOINTS 1236// Generated by CoffeeScript 1.6.2 1237/*! 1238jQuery Waypoints - v2.0.5 1239Copyright (c) 2011-2014 Caleb Troughton 1240Licensed under the MIT license. 1241https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt 1242*/ 1243(function() { 1244 var t = [].indexOf || function(t) { for (var e = 0, n = this.length; e < n; e++) { if (e in this && this[e] === t) return e } return -1 }, 1245 e = [].slice; 1246 (function(t, e) { if (typeof define === "function" && define.amd) { return define("waypoints", ["jquery"], function(n) { return e(n, t) }) } else { return e(t.jQuery, t) } })(window, function(n, r) { 1247 var i, o, l, s, f, u, c, a, h, d, p, y, v, w, g, m; 1248 i = n(r); 1249 a = t.call(r, "ontouchstart") >= 0; 1250 s = { horizontal: {}, vertical: {} }; 1251 f = 1; 1252 c = {}; 1253 u = "waypoints-context-id"; 1254 p = "resize.waypoints"; 1255 y = "scroll.waypoints"; 1256 v = 1; 1257 w = "waypoints-waypoint-ids"; 1258 g = "waypoint"; 1259 m = "waypoints"; 1260 o = function() { 1261 function t(t) { 1262 var e = this; 1263 this.$element = t; 1264 this.element = t[0]; 1265 this.didResize = false; 1266 this.didScroll = false; 1267 this.id = "context" + f++; 1268 this.oldScroll = { x: t.scrollLeft(), y: t.scrollTop() }; 1269 this.waypoints = { horizontal: {}, vertical: {} }; 1270 this.element[u] = this.id; 1271 c[this.id] = this; 1272 t.bind(y, function() { 1273 var t; 1274 if (!(e.didScroll || a)) { 1275 e.didScroll = true; 1276 t = function() { e.doScroll(); return e.didScroll = false }; 1277 return r.setTimeout(t, n[m].settings.scrollThrottle) 1278 } 1279 }); 1280 t.bind(p, function() { 1281 var t; 1282 if (!e.didResize) { 1283 e.didResize = true; 1284 t = function() { n[m]("refresh"); return e.didResize = false }; 1285 return r.setTimeout(t, n[m].settings.resizeThrottle) 1286 } 1287 }) 1288 } 1289 t.prototype.doScroll = function() { 1290 var t, e = this; 1291 t = { horizontal: { newScroll: this.$element.scrollLeft(), oldScroll: this.oldScroll.x, forward: "right", backward: "left" }, vertical: { newScroll: this.$element.scrollTop(), oldScroll: this.oldScroll.y, forward: "down", backward: "up" } }; 1292 if (a && (!t.vertical.oldScroll || !t.vertical.newScroll)) { n[m]("refresh") } 1293 n.each(t, function(t, r) { 1294 var i, o, l; 1295 l = []; 1296 o = r.newScroll > r.oldScroll; 1297 i = o ? r.forward : r.backward; 1298 n.each(e.waypoints[t], function(t, e) { var n, i; if (r.oldScroll < (n = e.offset) && n <= r.newScroll) { return l.push(e) } else if (r.newScroll < (i = e.offset) && i <= r.oldScroll) { return l.push(e) } }); 1299 l.sort(function(t, e) { return t.offset - e.offset }); 1300 if (!o) { l.reverse() } 1301 return n.each(l, function(t, e) { if (e.options.continuous || t === l.length - 1) { return e.trigger([i]) } }) 1302 }); 1303 return this.oldScroll = { x: t.horizontal.newScroll, y: t.vertical.newScroll } 1304 }; 1305 t.prototype.refresh = function() { 1306 var t, e, r, i = this; 1307 r = n.isWindow(this.element); 1308 e = this.$element.offset(); 1309 this.doScroll(); 1310 t = { horizontal: { contextOffset: r ? 0 : e.left, contextScroll: r ? 0 : this.oldScroll.x, contextDimension: this.$element.width(), oldScroll: this.oldScroll.x, forward: "right", backward: "left", offsetProp: "left" }, vertical: { contextOffset: r ? 0 : e.top, contextScroll: r ? 0 : this.oldScroll.y, contextDimension: r ? n[m]("viewportHeight") : this.$element.height(), oldScroll: this.oldScroll.y, forward: "down", backward: "up", offsetProp: "top" } }; 1311 return n.each(t, function(t, e) { 1312 return n.each(i.waypoints[t], function(t, r) { 1313 var i, o, l, s, f; 1314 i = r.options.offset; 1315 l = r.offset; 1316 o = n.isWindow(r.element) ? 0 : r.$element.offset()[e.offsetProp]; 1317 if (n.isFunction(i)) { i = i.apply(r.element) } else if (typeof i === "string") { i = parseFloat(i); if (r.options.offset.indexOf("%") > -1) { i = Math.ceil(e.contextDimension * i / 100) } } 1318 r.offset = o - e.contextOffset + e.contextScroll - i; 1319 if (r.options.onlyOnScroll && l != null || !r.enabled) { return } 1320 if (l !== null && l < (s = e.oldScroll) && s <= r.offset) { return r.trigger([e.backward]) } else if (l !== null && l > (f = e.oldScroll) && f >= r.offset) { return r.trigger([e.forward]) } else if (l === null && e.oldScroll >= r.offset) { return r.trigger([e.forward]) } 1321 }) 1322 }) 1323 }; 1324 t.prototype.checkEmpty = function() { if (n.isEmptyObject(this.waypoints.horizontal) && n.isEmptyObject(this.waypoints.vertical)) { this.$element.unbind([p, y].join(" ")); return delete c[this.id] } }; 1325 return t 1326 }(); 1327 l = function() { 1328 function t(t, e, r) { 1329 var i, o; 1330 if (r.offset === "bottom-in-view") { 1331 r.offset = function() { 1332 var t; 1333 t = n[m]("viewportHeight"); 1334 if (!n.isWindow(e.element)) { t = e.$element.height() } 1335 return t - n(this).outerHeight() 1336 } 1337 } 1338 this.$element = t; 1339 this.element = t[0]; 1340 this.axis = r.horizontal ? "horizontal" : "vertical"; 1341 this.callback = r.handler; 1342 this.context = e; 1343 this.enabled = r.enabled; 1344 this.id = "waypoints" + v++; 1345 this.offset = null; 1346 this.options = r; 1347 e.waypoints[this.axis][this.id] = this; 1348 s[this.axis][this.id] = this; 1349 i = (o = this.element[w]) != null ? o : []; 1350 i.push(this.id); 1351 this.element[w] = i 1352 } 1353 t.prototype.trigger = function(t) { if (!this.enabled) { return } if (this.callback != null) { this.callback.apply(this.element, t) } if (this.options.triggerOnce) { return this.destroy() } }; 1354 t.prototype.disable = function() { return this.enabled = false }; 1355 t.prototype.enable = function() { this.context.refresh(); return this.enabled = true }; 1356 t.prototype.destroy = function() { 1357 delete s[this.axis][this.id]; 1358 delete this.context.waypoints[this.axis][this.id]; 1359 return this.context.checkEmpty() 1360 }; 1361 t.getWaypointsByElement = function(t) { 1362 var e, r; 1363 r = t[w]; 1364 if (!r) { return [] } 1365 e = n.extend({}, s.horizontal, s.vertical); 1366 return n.map(r, function(t) { return e[t] }) 1367 }; 1368 return t 1369 }(); 1370 d = { 1371 init: function(t, e) { 1372 var r; 1373 e = n.extend({}, n.fn[g].defaults, e); 1374 if ((r = e.handler) == null) { e.handler = t } 1375 this.each(function() { 1376 var t, r, i, s; 1377 t = n(this); 1378 i = (s = e.context) != null ? s : n.fn[g].defaults.context; 1379 if (!n.isWindow(i)) { i = t.closest(i) } 1380 i = n(i); 1381 r = c[i[0][u]]; 1382 if (!r) { r = new o(i) } 1383 return new l(t, r, e) 1384 }); 1385 n[m]("refresh"); 1386 return this 1387 }, 1388 disable: function() { return d._invoke.call(this, "disable") }, 1389 enable: function() { return d._invoke.call(this, "enable") }, 1390 destroy: function() { return d._invoke.call(this, "destroy") }, 1391 prev: function(t, e) { return d._traverse.call(this, t, e, function(t, e, n) { if (e > 0) { return t.push(n[e - 1]) } }) }, 1392 next: function(t, e) { return d._traverse.call(this, t, e, function(t, e, n) { if (e < n.length - 1) { return t.push(n[e + 1]) } }) }, 1393 _traverse: function(t, e, i) { 1394 var o, l; 1395 if (t == null) { t = "vertical" } 1396 if (e == null) { e = r } 1397 l = h.aggregate(e); 1398 o = []; 1399 this.each(function() { 1400 var e; 1401 e = n.inArray(this, l[t]); 1402 return i(o, e, l[t]) 1403 }); 1404 return this.pushStack(o) 1405 }, 1406 _invoke: function(t) { 1407 this.each(function() { 1408 var e; 1409 e = l.getWaypointsByElement(this); 1410 return n.each(e, function(e, n) { n[t](); return true }) 1411 }); 1412 return this 1413 } 1414 }; 1415 n.fn[g] = function() { 1416 var t, r; 1417 r = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : []; 1418 if (d[r]) { return d[r].apply(this, t) } else if (n.isFunction(r)) { return d.init.apply(this, arguments) } else if (n.isPlainObject(r)) { return d.init.apply(this, [null, r]) } else if (!r) { return n.error("jQuery Waypoints needs a callback function or handler option.") } else { return n.error("The " + r + " method does not exist in jQuery Waypoints.") } 1419 }; 1420 n.fn[g].defaults = { context: r, continuous: true, enabled: true, horizontal: false, offset: 0, triggerOnce: false }; 1421 h = { 1422 refresh: function() { return n.each(c, function(t, e) { return e.refresh() }) },
1423 viewportHeight: function() { var t; return (t = r.innerHeight) != null ? t : i.height() }, 1424 aggregate: function(t) { 1425 var e, r, i; 1426 e = s; 1427 if (t) { e = (i = c[n(t)[0][u]]) != null ? i.waypoints : void 0 } 1428 if (!e) { return [] } 1429 r = { horizontal: [], vertical: [] }; 1430 n.each(r, function(t, i) { 1431 n.each(e[t], function(t, e) { return i.push(e) }); 1432 i.sort(function(t, e) { return t.offset - e.offset }); 1433 r[t] = n.map(i, function(t) { return t.element }); 1434 return r[t] = n.unique(r[t]) 1435 }); 1436 return r 1437 }, 1438 above: function(t) { if (t == null) { t = r } return h._filter(t, "vertical", function(t, e) { return e.offset <= t.oldScroll.y }) }, 1439 below: function(t) { if (t == null) { t = r } return h._filter(t, "vertical", function(t, e) { return e.offset > t.oldScroll.y }) }, 1440 left: function(t) { if (t == null) { t = r } return h._filter(t, "horizontal", function(t, e) { return e.offset <= t.oldScroll.x }) }, 1441 right: function(t) { if (t == null) { t = r } return h._filter(t, "horizontal", function(t, e) { return e.offset > t.oldScroll.x }) }, 1442 enable: function() { return h._invoke("enable") }, 1443 disable: function() { return h._invoke("disable") }, 1444 destroy: function() { return h._invoke("destroy") }, 1445 extendFn: function(t, e) { return d[t] = e }, 1446 _invoke: function(t) { 1447 var e; 1448 e = n.extend({}, s.vertical, s.horizontal); 1449 return n.each(e, function(e, n) { n[t](); return true }) 1450 }, 1451 _filter: function(t, e, r) { 1452 var i, o; 1453 i = c[n(t)[0][u]]; 1454 if (!i) { return [] } 1455 o = []; 1456 n.each(i.waypoints[e], function(t, e) { if (r(i, e)) { return o.push(e) } }); 1457 o.sort(function(t, e) { return t.offset - e.offset }); 1458 return n.map(o, function(t) { return t.element }) 1459 } 1460 }; 1461 n[m] = function() { 1462 var t, n; 1463 n = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : []; 1464 if (h[n]) { return h[n].apply(null, t) } else { return h.aggregate.call(null, n) } 1465 }; 1466 n[m].settings = { resizeThrottle: 100, scrollThrottle: 30 }; 1467 return i.on("load.waypoints", function() { return n[m]("refresh") }) 1468 }) 1469}).call(this); 1470 1471 1472// LAZY IMAGE 1473// https://github.com/aFarkas/lazysizes 1474/*! lazysizes - v4.0.0-rc2 */ 1475! function(a, b) { 1476 var c = b(a, a.document); 1477 a.lazySizes = c, "object" == typeof module && module.exports && (module.exports = c) 1478}(window, function(a, b) { 1479 "use strict"; 1480 if (b.getElementsByClassName) { 1481 var c, d, e = b.documentElement, 1482 f = a.Date, 1483 g = a.HTMLPictureElement, 1484 h = "addEventListener", 1485 i = "getAttribute", 1486 j = a[h], 1487 k = a.setTimeout, 1488 l = a.requestAnimationFrame || k, 1489 m = a.requestIdleCallback, 1490 n = /^picture$/i, 1491 o = ["load", "error", "lazyincluded", "_lazyloaded"], 1492 p = {}, 1493 q = Array.prototype.forEach, 1494 r = function(a, b) { return p[b] || (p[b] = new RegExp("(\\s|^)" + b + "(\\s|$)")), p[b].test(a[i]("class") || "") && p[b] }, 1495 s = function(a, b) { r(a, b) || a.setAttribute("class", (a[i]("class") || "").trim() + " " + b) }, 1496 t = function(a, b) { 1497 var c; 1498 (c = r(a, b)) && a.setAttribute("class", (a[i]("class") || "").replace(c, " ")) 1499 }, 1500 u = function(a, b, c) { 1501 var d = c ? h : "removeEventListener"; 1502 c && u(a, b), o.forEach(function(c) { a[d](c, b) }) 1503 }, 1504 v = function(a, d, e, f, g) { var h = b.createEvent("CustomEvent"); return e || (e = {}), e.instance = c, h.initCustomEvent(d, !f, !g, e), a.dispatchEvent(h), h }, 1505 w = function(b, c) { var e;!g && (e = a.picturefill || d.pf) ? e({ reevaluate: !0, elements: [b] }) : c && c.src && (b.src = c.src) }, 1506 x = function(a, b) { return (getComputedStyle(a, null) || {})[b] }, 1507 y = function(a, b, c) { for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;) c = b.offsetWidth, b = b.parentNode; return c }, 1508 z = function() { 1509 var a, c, d = [], 1510 e = [], 1511 f = d, 1512 g = function() { 1513 var b = f; 1514 for (f = d.length ? e : d, a = !0, c = !1; b.length;) b.shift()(); 1515 a = !1 1516 }, 1517 h = function(d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) }; 1518 return h._lsFlush = g, h 1519 }(), 1520 A = function(a, b) { 1521 return b ? function() { z(a) } : function() { 1522 var b = this, 1523 c = arguments; 1524 z(function() { a.apply(b, c) }) 1525 } 1526 }, 1527 B = function(a) { 1528 var b, c = 0, 1529 d = 125, 1530 e = 666, 1531 g = e, 1532 h = function() { b = !1, c = f.now(), a() }, 1533 i = m ? function() { m(h, { timeout: g }), g !== e && (g = e) } : A(function() { k(h) }, !0); 1534 return function(a) { 1535 var e; 1536 (a = a === !0) && (g = 44), b || (b = !0, e = d - (f.now() - c), 0 > e && (e = 0), a || 9 > e && m ? i() : k(i, e)) 1537 } 1538 }, 1539 C = function(a) { 1540 var b, c, d = 99, 1541 e = function() { b = null, a() }, 1542 g = function() { 1543 var a = f.now() - c; 1544 d > a ? k(g, d - a) : (m || e)(e) 1545 }; 1546 return function() { c = f.now(), b || (b = k(g, d)) } 1547 }, 1548 D = function() { 1549 var g, l, m, o, p, y, D, F, G, H, I, J, K, L, M = /^img$/i, 1550 N = /^iframe$/i, 1551 O = "onscroll" in a && !/glebot/.test(navigator.userAgent), 1552 P = 0, 1553 Q = 0, 1554 R = 0, 1555 S = -1, 1556 T = function(a) { R--, a && a.target && u(a.target, T), (!a || 0 > R || !a.target) && (R = 0) }, 1557 U = function(a, c) { 1558 var d, f = a, 1559 g = "hidden" == x(b.body, "visibility") || "hidden" != x(a, "visibility"); 1560 for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;) g = (x(f, "opacity") || 1) > 0, g && "visible" != x(f, "overflow") && (d = f.getBoundingClientRect(), g = H >
1560 d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1); 1561 return g 1562 }, 1563 V = function() { 1564 var a, f, h, j, k, m, n, p, q, r = c.elements; 1565 if ((o = d.loadMode) && 8 > R && (a = r.length)) { 1566 f = 0, S++, null == K && ("expand" in d || (d.expand = e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370), J = d.expand, K = J * d.expFactor), K > Q && 1 > R && S > 2 && o > 2 && !b.hidden ? (Q = K, S = 0) : Q = o > 1 && S > 1 && 6 > R ? J : P; 1567 for (; a > f; f++) 1568 if (r[f] && !r[f]._lazyRace) 1569 if (O) 1570 if ((p = r[f][i]("data-expand")) && (m = 1 * p) || (m = Q), q !== m && (y = innerWidth + m * L, D = innerHeight + m, n = -1 * m, q = m), h = r[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * L && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || "hidden" != x(r[f], "visibility")) && (l && 3 > R && !p && (3 > o || 4 > S) || U(r[f], m))) { if (ba(r[f]), k = !0, R > 9) break } else !k && l && !j && 4 > R && 4 > S && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || "auto" != r[f][i](d.sizesAttr))) && (j = g[0] || r[f]); 1571 else ba(r[f]); 1572 j && !k && ba(j) 1573 } 1574 }, 1575 W = B(V), 1576 X = function(a) { s(a.target, d.loadedClass), t(a.target, d.loadingClass), u(a.target, Z), v(a.target, "lazyloaded") }, 1577 Y = A(X), 1578 Z = function(a) { Y({ target: a.target }) }, 1579 $ = function(a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } }, 1580 _ = function(a) { 1581 var b, c = a[i](d.srcsetAttr); 1582 (b = d.customMedia[a[i]("data-media") || a[i]("media")]) && a.setAttribute("media", b), c && a.setAttribute("srcset", c) 1583 }, 1584 aa = A(function(a, b, c, e, f) { 1585 var g, h, j, l, o, p; 1586 (o = v(a, "lazybeforeunveil", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute("sizes", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || "")), p = b.firesLoad || "src" in a && (h || g || l), o = { target: a }, p && (u(a, T, !0), clearTimeout(m), m = k(T, 2500), s(a, d.loadingClass), u(a, Z, !0)), l && q.call(j.getElementsByTagName("source"), _), h ? a.setAttribute("srcset", h) : g && !l && (N.test(a.nodeName) ? $(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function() { 1587 (!p || a.complete && a.naturalWidth > 1) && (p ? T(o) : R--, X(o)) 1588 }, !0) 1589 }), 1590 ba = function(a) { 1591 var b, c = M.test(a.nodeName), 1592 e = c && (a[i](d.sizesAttr) || a[i]("sizes")), 1593 f = "auto" == e; 1594 (!f && l || !c || !a[i]("src") && !a.srcset || a.complete || r(a, d.errorClass)) && (b = v(a, "lazyunveilread").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, R++, aa(a, b, f, e, c)) 1595 }, 1596 ca = function() { 1597 if (!l) { 1598 if (f.now() - p < 999) return void k(ca, 999); 1599 var a = C(function() { d.loadMode = 3, W() }); 1600 l = !0, d.loadMode = 3, W(), j("scroll", function() { 3 == d.loadMode && (d.loadMode = 2), a() }, !0) 1601 } 1602 }; 1603 return { _: function() { p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + " " + d.preloadClass), L = d.hFac, j("scroll", W, !0), j("resize", W, !0), a.MutationObserver ? new MutationObserver(W).observe(e, { childList: !0, subtree: !0, attributes: !0 }) : (e[h]("DOMNodeInserted", W, !0), e[h]("DOMAttrModified", W, !0), setInterval(W, 999)), j("hashchange", W, !0), ["focus", "mouseover", "click", "load", "transitionend", "animationend", "webkitAnimationEnd"].forEach(function(a) { b[h](a, W, !0) }), /d$|^c/.test(b.readyState) ? ca() : (j("load", ca), b[h]("DOMContentLoaded", W), k(ca, 2e4)), c.elements.length ? (V(), z._lsFlush()) : W() }, checkElems: W, unveil: ba } 1604 }(), 1605 E = function() { 1606 var a, c = A(function(a, b, c, d) { 1607 var e, f, g; 1608 if (a._lazysizesWidth = d, d += "px", a.setAttribute("sizes", d), n.test(b.nodeName || "")) 1609 for (e = b.getElementsByTagName("source"), f = 0, g = e.length; g > f; f++) e[f].setAttribute("sizes", d); 1610 c.detail.dataAttr || w(a, c.detail) 1611 }), 1612 e = function(a, b, d) { 1613 var e, f = a.parentNode; 1614 f && (d = y(a, f, d), e = v(a, "lazybeforesizes", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width, d && d !== a._lazysizesWidth && c(a, f, e, d))) 1615 }, 1616 f = function() { 1617 var b, c = a.length; 1618 if (c) 1619 for (b = 0; c > b; b++) e(a[b]) 1620 }, 1621 g = C(f); 1622 return { _: function() { a = b.getElementsByClassName(
1622d.autosizesClass), j("resize", g) }, checkElems: g, updateElem: e } 1623 }(), 1624 F = function() { F.i || (F.i = !0, E._(), D._()) }; 1625 return function() { 1626 var b, c = { lazyClass: "lazyload", loadedClass: "lazyloaded", loadingClass: "lazyloading", preloadClass: "lazypreload", errorClass: "lazyerror", autosizesClass: "lazyautosizes", srcAttr: "data-src", srcsetAttr: "data-srcset", sizesAttr: "data-sizes", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0 }; 1627 d = a.lazySizesConfig || a.lazysizesConfig || {}; 1628 for (b in c) b in d || (d[b] = c[b]); 1629 a.lazySizesConfig = d, k(function() { d.init && F() }) 1630 }(), c = { cfg: d, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z } 1631 } 1632}); 1633 1634 1635// BACKGROUND IMAGE EXTENSION 1636// https://github.com/aFarkas/lazysizes/tree/gh-pages/plugins/unveilhooks 1637/*! lazysizes - v4.0.0-rc2 */ 1638! function(a, b) { 1639 var c = function() { b(a.lazySizes), a.removeEventListener("lazyunveilread", c, !0) }; 1640 b = b.bind(null, a, a.document), "object" == typeof module && module.exports ? b(require("lazysizes")) : a.lazySizes ? c() : a.addEventListener("lazyunveilread", c, !0) 1641}(window, function(a, b, c) { 1642 "use strict"; 1643 1644 function d(a, c) { 1645 if (!g[a]) { 1646 var d = b.createElement(c ? "link" : "script"), 1647 e = b.getElementsByTagName("script")[0]; 1648 c ? (d.rel = "stylesheet", d.href = a) : d.src = a, g[a] = !0, g[d.src || d.href] = !0, e.parentNode.insertBefore(d, e) 1649 } 1650 } 1651 var e, f, g = {}; 1652 b.addEventListener && (f = /\(|\)|\s|'/, e = function(a, c) { 1653 var d = b.createElement("img"); 1654 d.onload = function() { d.onload = null, d.onerror = null, d = null, c() }, d.onerror = d.onload, d.src = a, d && d.complete && d.onload && d.onload() 1655 }, addEventListener("lazybeforeunveil", function(a) { 1656 if (a.detail.instance == c) { 1657 var b, g, h, i; 1658 a.defaultPrevented || ("none" == a.target.preload && (a.target.preload = "auto"), b = a.target.getAttribute("data-link"), b && d(b, !0), b = a.target.getAttribute("data-script"), b && d(b), b = a.target.getAttribute("data-require"), b && (c.cfg.requireJs ? c.cfg.requireJs([b]) : d(b)), h = a.target.getAttribute("data-bg"), h && (a.detail.firesLoad = !0, g = function() { a.target.style.backgroundImage = "url(" + (f.test(h) ? JSON.stringify(h) : h) + ")", a.detail.firesLoad = !1, c.fire(a.target, "_lazyloaded", {}, !0, !0) }, e(h, g)), i = a.target.getAttribute("data-poster"), i && (a.detail.firesLoad = !0, g = function() { a.target.poster = i, a.detail.firesLoad = !1, c.fire(a.target, "_lazyloaded", {}, !0, !0) }, e(i, g))) 1659 } 1660 }, !1)) 1661});
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.