!function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper"], t) : (window.blueimp = window.blueimp || {}, window.blueimp.Gallery = t(window.blueimp.helper || window.jQuery)) }(function (d) { "use strict"; function i(t, e) { return void 0 === document.body.style.maxHeight ? null : this && this.options === i.prototype.options ? void (t && t.length ? (this.list = t, this.num = t.length, this.initOptions(e), this.initialize()) : this.console.log("blueimp Gallery: No or empty list provided as first argument.", t)) : new i(t, e) } return d.extend(i.prototype, { options: { container: "#blueimp-gallery", slidesContainer: "div", titleElement: "h3", displayClass: "blueimp-gallery-display", controlsClass: "blueimp-gallery-controls", singleClass: "blueimp-gallery-single", leftEdgeClass: "blueimp-gallery-left", rightEdgeClass: "blueimp-gallery-right", playingClass: "blueimp-gallery-playing", slideClass: "slide", slideLoadingClass: "slide-loading", slideErrorClass: "slide-error", slideContentClass: "slide-content", toggleClass: "toggle", prevClass: "prev", nextClass: "next", closeClass: "close", playPauseClass: "play-pause", typeProperty: "type", titleProperty: "title", altTextProperty: "alt", urlProperty: "href", srcsetProperty: "urlset", displayTransition: !0, clearSlides: !0, stretchImages: !1, toggleControlsOnReturn: !0, toggleControlsOnSlideClick: !0, toggleSlideshowOnSpace: !0, enableKeyboardNavigation: !0, closeOnEscape: !0, closeOnSlideClick: !0, closeOnSwipeUpOrDown: !0, emulateTouchEvents: !0, stopTouchEventsPropagation: !1, hidePageScrollbars: !0, disableScroll: !0, carousel: !1, continuous: !0, unloadElements: !0, startSlideshow: !1, slideshowInterval: 5e3, index: 0, preloadRange: 2, transitionSpeed: 400, slideshowTransitionSpeed: void 0, event: void 0, onopen: void 0, onopened: void 0, onslide: void 0, onslideend: void 0, onslidecomplete: void 0, onclose: void 0, onclosed: void 0 }, carouselOptions: { hidePageScrollbars: !1, toggleControlsOnReturn: !1, toggleSlideshowOnSpace: !1, enableKeyboardNavigation: !1, closeOnEscape: !1, closeOnSlideClick: !1, closeOnSwipeUpOrDown: !1, disableScroll: !1, startSlideshow: !0 }, console: window.console && "function" == typeof window.console.log ? window.console : { log: function () { } }, support: function (s) { var t, o = {touch: void 0 !== window.ontouchstart || window.DocumentTouch && document instanceof DocumentTouch}, e = { webkitTransition: {end: "webkitTransitionEnd", prefix: "-webkit-"}, MozTransition: {end: "transitionend", prefix: "-moz-"}, OTransition: {end: "otransitionend", prefix: "-o-"}, transition: {end: "transitionend", prefix: ""} }; for (t in e) if (Object.prototype.hasOwnProperty.call(e, t) && void 0 !== s.style[t]) { o.transition = e[t], o.transition.name = t; break } function i() { var t, e, i = o.transition; document.body.appendChild(s), i && (t = i.name.slice(0, -9) + "ransform", void 0 !== s.style[t] && (s.style[t] = "translateZ(0)", e = window.getComputedStyle(s).getPropertyValue(i.prefix + "transform"), o.transform = { prefix: i.prefix, name: t, translate: !0, translateZ: !!e && "none" !== e })), void 0 !== s.style.backgroundSize && (o.backgroundSize = {}, s.style.backgroundSize = "contain", o.backgroundSize.contain = "contain" === window.getComputedStyle(s).getPropertyValue("background-size"), s.style.backgroundSize = "cover", o.backgroundSize.cover = "cover" === window.getComputedStyle(s).getPropertyValue("background-size")), document.body.removeChild(s) } return document.body ? i() : d(document).on("DOMContentLoaded", i), o }(document.createElement("div")), requestAnimationFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame, cancelAnimationFrame: window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame, initialize: function () { if (this.initStartIndex(), !1 === this.initWidget()) return !1; this.initEventListeners(), this.onslide(this.index), this.ontransitionend(), this.options.startSlideshow && this.play() }, slide: function (t, e) { window.clearTimeout(this.timeout); var i, s, o, n = this.index; if (n !== t && 1 !== this.num) { if (e = e || this.options.transitionSpeed, this.support.transform) { for (this.options.continuous || (t = this.circle(t)), i = Math.abs(n - t) / (n - t), this.options.continuous && (s = i, (i = -this.positions[this.circle(t)] / this.slideWidth) !== s && (t = -i * this.num + t)), o = Math.abs(n - t) - 1; o;) o -= 1, this.move(this.circle((n < t ? t : n) - o - 1), this.slideWidth * i, 0); t = this.circle(t), this.move(n, this.slideWidth * i, e), this.move(t, 0, e), this.options.continuous && this.move(this.circle(t - i), -this.slideWidth * i, 0) } else t = this.circle(t), this.animate(n * -this.slideWidth, t * -this.slideWidth, e); this.onslide(t) } }, getIndex: function () { return this.index }, getNumber: function () { return this.num }, prev: function () { (this.options.continuous || this.index) && this.slide(this.index - 1) }, next: function () { (this.options.continuous || this.index < this.num - 1) && this.slide(this.index + 1) }, play: function (t) { var i = this; window.clearTimeout(this.timeout), this.interval = t || this.options.slideshowInterval, 1 < this.elements[this.index] && (this.timeout = this.setTimeout(!this.requestAnimationFrame && this.slide || function (t, e) { i.animationFrameId = i.requestAnimationFrame.call(window, function () { i.slide(t, e) }) }, [this.index + 1, this.options.slideshowTransitionSpeed], this.interval)), this.container.addClass(this.options.playingClass) }, pause: function () { window.clearTimeout(this.timeout), this.interval = null, this.cancelAnimationFrame && (this.cancelAnimationFrame.call(window, this.animationFrameId), this.animationFrameId = null), this.container.removeClass(this.options.playingClass) }, add: function (t) { var e; for (t.concat || (t = Array.prototype.slice.call(t)), this.list.concat || (this.list = Array.prototype.slice.call(this.list)), this.list = this.list.concat(t), this.num = this.list.length, 2 < this.num && null === this.options.continuous && (this.options.continuous = !0, this.container.removeClass(this.options.leftEdgeClass)), this.container.removeClass(this.options.rightEdgeClass).removeClass(this.options.singleClass), e = this.num - t.length; e < this.num; e += 1) this.addSlide(e), this.positionSlide(e); this.positions.length = this.num, this.initSlides(!0) }, resetSlides: function () { this.slidesContainer.empty(), this.unloadAllSlides(), this.slides = [] }, handleClose: function () { var t = this.options; this.destroyEventListeners(), this.pause(), this.container[0].style.display = "none", this.container.removeClass(t.displayClass).removeClass(t.singleClass).removeClass(t.leftEdgeClass).removeClass(t.rightEdgeClass), t.hidePageScrollbars && (document.body.style.overflow = this.bodyOverflowStyle), this.options.clearSlides && this.resetSlides(), this.options.onclosed && this.options.onclosed.call(this) }, close: function () { var i = this; this.options.onclose && this.options.onclose.call(this), this.support.transition && this.options.displayTransition ? (this.container.on(this.support.transition.end, function t(e) { e.target === i.container[0] && (i.container.off(i.support.transition.end, t), i.handleClose()) }), this.container.removeClass(this.options.displayClass)) : this.handleClose() }, circle: function (t) { return (this.num + t % this.num) % this.num }, move: function (t, e, i) { this.translateX(t, e, i), this.positions[t] = e }, translate: function (t, e, i, s) { if (this.slides[t]) { var o = this.slides[t].style, n = this.support.transition, a = this.support.transform; o[n.name + "Duration"] = s + "ms", o[a.name] = "translate(" + e + "px, " + i + "px)" + (a.translateZ ? " translateZ(0)" : "") } }, translateX: function (t, e, i) { this.translate(t, e, 0, i) }, translateY: function (t, e, i) { this.translate(t, 0, e, i) }, animate: function (e, i, s) { if (s) var o = this, n = (new Date).getTime(), a = window.setInterval(function () { var t = (new Date).getTime() - n; if (s < t) return o.slidesContainer[0].style.left = i + "px", o.ontransitionend(), void window.clearInterval(a); o.slidesContainer[0].style.left = (i - e) * (Math.floor(t / s * 100) / 100) + e + "px" }, 4); else this.slidesContainer[0].style.left = i + "px" }, preventDefault: function (t) { t.preventDefault ? t.preventDefault() : t.returnValue = !1 }, stopPropagation: function (t) { t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0 }, onresize: function () { this.initSlides(!0) }, onmousedown: function (t) { t.which && 1 === t.which && "VIDEO" !== t.target.nodeName && "AUDIO" !== t.target.nodeName && (t.preventDefault(), (t.originalEvent || t).touches = [{ pageX: t.pageX, pageY: t.pageY }], this.ontouchstart(t)) }, onmousemove: function (t) { this.touchStart && ((t.originalEvent || t).touches = [{pageX: t.pageX, pageY: t.pageY}], this.ontouchmove(t)) }, onmouseup: function (t) { this.touchStart && (this.ontouchend(t), delete this.touchStart) }, onmouseout: function (t) { if (this.touchStart) { var e = t.target, i = t.relatedTarget; i && (i === e || d.contains(e, i)) || this.onmouseup(t) } }, ontouchstart: function (t) { this.options.stopTouchEventsPropagation && this.stopPropagation(t); var e = (t.originalEvent || t).touches[0]; this.touchStart = {x: e.pageX, y: e.pageY, time: Date.now()}, this.isScrolling = void 0, this.touchDelta = {} }, ontouchmove: function (t) { this.options.stopTouchEventsPropagation && this.stopPropagation(t); var e, i, s = (t.originalEvent || t).touches[0], o = (t.originalEvent || t).scale, n = this.index; if (!(1 < s.length || o && 1 !== o)) if (this.options.disableScroll && t.preventDefault(), this.touchDelta = { x: s.pageX - this.touchStart.x, y: s.pageY - this.touchStart.y }, e = this.touchDelta.x, void 0 === this.isScrolling && (this.isScrolling = this.isScrolling || Math.abs(e) < Math.abs(this.touchDelta.y)), this.isScrolling) this.translateY(n, this.touchDelta.y + this.positions[n], 0); else for (t.preventDefault(), window.clearTimeout(this.timeout), this.options.continuous ? i = [this.circle(n + 1), n, this.circle(n - 1)] : (this.touchDelta.x = e /= !n && 0 < e || n === this.num - 1 && e < 0 ? Math.abs(e) / this.slideWidth + 1 : 1, i = [n], n && i.push(n - 1), n < this.num - 1 && i.unshift(n + 1)); i.length;) n = i.pop(), this.translateX(n, e + this.positions[n], 0) }, ontouchend: function (t) { this.options.stopTouchEventsPropagation && this.stopPropagation(t); var e, i, s, o, n, a = this.index, l = this.options.transitionSpeed, r = this.slideWidth, h = Number(Date.now() - this.touchStart.time) < 250, d = h && 20 < Math.abs(this.touchDelta.x) || Math.abs(this.touchDelta.x) > r / 2, c = !a && 0 < this.touchDelta.x || a === this.num - 1 && this.touchDelta.x < 0, p = !d && this.options.closeOnSwipeUpOrDown && (h && 20 < Math.abs(this.touchDelta.y) || Math.abs(this.touchDelta.y) > this.slideHeight / 2); this.options.continuous && (c = !1), e = this.touchDelta.x < 0 ? -1 : 1, this.isScrolling ? p ? this.close() : this.translateY(a, 0, l) : d && !c ? (i = a + e, s = a - e, o = r * e, n = -r * e, this.options.continuous ? (this.move(this.circle(i), o, 0), this.move(this.circle(a - 2 * e), n, 0)) : 0 <= i && i < this.num && this.move(i, o, 0), this.move(a, this.positions[a] + o, l), this.move(this.circle(s), this.positions[this.circle(s)] + o, l), a = this.circle(s), this.onslide(a)) : this.options.continuous ? (this.move(this.circle(a - 1), -r, l), this.move(a, 0, l), this.move(this.circle(a + 1), r, l)) : (a && this.move(a - 1, -r, l), this.move(a, 0, l), a < this.num - 1 && this.move(a + 1, r, l)) }, ontouchcancel: function (t) { this.touchStart && (this.ontouchend(t), delete this.touchStart) }, ontransitionend: function (t) { var e = this.slides[this.index]; t && e !== t.target || (this.interval && this.play(), this.setTimeout(this.options.onslideend, [this.index, e])) }, oncomplete: function (t) { var e, i = t.target || t.srcElement, s = i && i.parentNode; i && s && (e = this.getNodeIndex(s), d(s).removeClass(this.options.slideLoadingClass), "error" === t.type ? (d(s).addClass(this.options.slideErrorClass), this.elements[e] = 3) : this.elements[e] = 2, i.clientHeight > this.container[0].clientHeight && (i.style.maxHeight = this.container[0].clientHeight), this.interval && this.slides[this.index] === s && this.play(), this.setTimeout(this.options.onslidecomplete, [e, s])) }, onload: function (t) { this.oncomplete(t) }, onerror: function (t) { this.oncomplete(t) }, onkeydown: function (t) { switch (t.which || t.keyCode) { case 13: this.options.toggleControlsOnReturn && (this.preventDefault(t), this.toggleControls()); break; case 27: this.options.closeOnEscape && (this.close(), t.stopImmediatePropagation()); break; case 32: this.options.toggleSlideshowOnSpace && (this.preventDefault(t), this.toggleSlideshow()); break; case 37: this.options.enableKeyboardNavigation && (this.preventDefault(t), this.prev()); break; case 39: this.options.enableKeyboardNavigation && (this.preventDefault(t), this.next()) } }, handleClick: function (t) { var e = this.options, i = t.target || t.srcElement, s = i.parentNode; function o(t) { return d(i).hasClass(t) || d(s).hasClass(t) } o(e.toggleClass) ? (this.preventDefault(t), this.toggleControls()) : o(e.prevClass) ? (this.preventDefault(t), this.prev()) : o(e.nextClass) ? (this.preventDefault(t), this.next()) : o(e.closeClass) ? (this.preventDefault(t), this.close()) : o(e.playPauseClass) ? (this.preventDefault(t), this.toggleSlideshow()) : s === this.slidesContainer[0] ? e.closeOnSlideClick ? (this.preventDefault(t), this.close()) : e.toggleControlsOnSlideClick && (this.preventDefault(t), this.toggleControls()) : s.parentNode && s.parentNode === this.slidesContainer[0] && e.toggleControlsOnSlideClick && (this.preventDefault(t), this.toggleControls()) }, onclick: function (t) { if (!(this.options.emulateTouchEvents && this.touchDelta && (20 < Math.abs(this.touchDelta.x) || 20 < Math.abs(this.touchDelta.y)))) return this.handleClick(t); delete this.touchDelta }, updateEdgeClasses: function (t) { t ? this.container.removeClass(this.options.leftEdgeClass) : this.container.addClass(this.options.leftEdgeClass), t === this.num - 1 ? this.container.addClass(this.options.rightEdgeClass) : this.container.removeClass(this.options.rightEdgeClass) }, handleSlide: function (t) { this.options.continuous || this.updateEdgeClasses(t), this.loadElements(t), this.options.unloadElements && this.unloadElements(t), this.setTitle(t) }, onslide: function (t) { this.index = t, this.handleSlide(t), this.setTimeout(this.options.onslide, [t, this.slides[t]]) }, setTitle: function (t) { var e = this.slides[t].firstChild, i = e.title || e.alt, s = this.titleElement; s.length && (this.titleElement.empty(), i && s[0].appendChild(document.createTextNode(i))) }, setTimeout: function (t, e, i) { var s = this; return t && window.setTimeout(function () { t.apply(s, e || []) }, i || 0) }, imageFactory: function (t, i) { var s, o, e, n, a = this, l = this.imagePrototype.cloneNode(!1), r = t, h = this.options.stretchImages; return "string" != typeof r && (r = this.getItemProperty(t, this.options.urlProperty), e = this.getItemProperty(t, this.options.titleProperty), n = this.getItemProperty(t, this.options.altTextProperty) || e), !0 === h && (h = "contain"), (h = this.support.backgroundSize && this.support.backgroundSize[h] && h) ? o = this.elementPrototype.cloneNode(!1) : (o = l).draggable = !1, e && (o.title = e), n && (o.alt = n), d(l).on("load error", function t(e) { if (!s) { if (e = {type: e.type, target: o}, !o.parentNode) return a.setTimeout(t, [e]); s = !0, d(l).off("load error", t), h && "load" === e.type && (o.style.background = 'url("' + r + '") center no-repeat', o.style.backgroundSize = h), i(e) } }), l.src = r, o }, createElement: function (t, e) { var i = t && this.getItemProperty(t, this.options.typeProperty), s = i && this[i.split("/")[0] + "Factory"] || this.imageFactory, o = t && s.call(this, t, e), n = this.getItemProperty(t, this.options.srcsetProperty); return o || (o = this.elementPrototype.cloneNode(!1), this.setTimeout(e, [{ type: "error", target: o }])), n && o.setAttribute("srcset", n), d(o).addClass(this.options.slideContentClass), o }, loadElement: function (t) { this.elements[t] || (this.slides[t].firstChild ? this.elements[t] = d(this.slides[t]).hasClass(this.options.slideErrorClass) ? 3 : 2 : (this.elements[t] = 1, d(this.slides[t]).addClass(this.options.slideLoadingClass), this.slides[t].appendChild(this.createElement(this.list[t], this.proxyListener)))) }, loadElements: function (t) { var e, i = Math.min(this.num, 2 * this.options.preloadRange + 1), s = t; for (e = 0; e < i; e += 1) s += e * (e % 2 == 0 ? -1 : 1), s = this.circle(s), this.loadElement(s) }, unloadElements: function (t) { var e, i; for (e in this.elements) Object.prototype.hasOwnProperty.call(this.elements, e) && (i = Math.abs(t - e)) > this.options.preloadRange && i + this.options.preloadRange < this.num && (this.unloadSlide(e), delete this.elements[e]) }, addSlide: function (t) { var e = this.slidePrototype.cloneNode(!1); e.setAttribute("data-index", t), this.slidesContainer[0].appendChild(e), this.slides.push(e) }, positionSlide: function (t) { var e = this.slides[t]; e.style.width = this.slideWidth + "px", this.support.transform && (e.style.left = t * -this.slideWidth + "px", this.move(t, this.index > t ? -this.slideWidth : this.index < t ? this.slideWidth : 0, 0)) }, initSlides: function (t) { var e, i; for (t || (this.positions = [], this.positions.length = this.num, this.elements = {}, this.imagePrototype = document.createElement("img"), this.elementPrototype = document.createElement("div"), this.slidePrototype = document.createElement("div"), d(this.slidePrototype).addClass(this.options.slideClass), this.slides = this.slidesContainer[0].children, e = this.options.clearSlides || this.slides.length !== this.num), this.slideWidth = this.container[0].clientWidth, this.slideHeight = this.container[0].clientHeight, this.slidesContainer[0].style.width = this.num * this.slideWidth + "px", e && this.resetSlides(), i = 0; i < this.num; i += 1) e && this.addSlide(i), this.positionSlide(i); this.options.continuous && this.support.transform && (this.move(this.circle(this.index - 1), -this.slideWidth, 0), this.move(this.circle(this.index + 1), this.slideWidth, 0)), this.support.transform || (this.slidesContainer[0].style.left = this.index * -this.slideWidth + "px") }, unloadSlide: function (t) { var e, i; null !== (i = (e = this.slides[t]).firstChild) && e.removeChild(i) }, unloadAllSlides: function () { var t, e; for (t = 0, e = this.slides.length; t < e; t++) this.unloadSlide(t) }, toggleControls: function () { var t = this.options.controlsClass; this.container.hasClass(t) ? this.container.removeClass(t) : this.container.addClass(t) }, toggleSlideshow: function () { this.interval ? this.pause() : this.play() }, getNodeIndex: function (t) { return parseInt(t.getAttribute("data-index"), 10) }, getNestedProperty: function (a, t) { return t.replace(/\[(?:'([^']+)'|"([^"]+)"|(\d+))\]|(?:(?:^|\.)([^\.\[]+))/g, function (t, e, i, s, o) { var n = o || e || i || s && parseInt(s, 10); t && a && (a = a[n]) }), a }, getDataProperty: function (t, e) { var i, s; if (t.dataset ? (i = e.replace(/-([a-z])/g, function (t, e) { return e.toUpperCase() }), s = t.dataset[i]) : t.getAttribute && (s = t.getAttribute("data-" + e.replace(/([A-Z])/g, "-$1").toLowerCase())), "string" == typeof s) { if (/^(true|false|null|-?\d+(\.\d+)?|\{[\s\S]*\}|\[[\s\S]*\])$/.test(s)) try { return d.parseJSON(s) } catch (t) { } return s } }, getItemProperty: function (t, e) { var i = this.getDataProperty(t, e); return void 0 === i && (i = t[e]), void 0 === i && (i = this.getNestedProperty(t, e)), i }, initStartIndex: function () { var t, e = this.options.index, i = this.options.urlProperty; if (e && "number" != typeof e) for (t = 0; t < this.num; t += 1) if (this.list[t] === e || this.getItemProperty(this.list[t], i) === this.getItemProperty(e, i)) { e = t; break } this.index = this.circle(parseInt(e, 10) || 0) }, initEventListeners: function () { var i = this, t = this.slidesContainer; function e(t) { var e = i.support.transition && i.support.transition.end === t.type ? "transitionend" : t.type; i["on" + e](t) } d(window).on("resize", e), d(document.body).on("keydown", e), this.container.on("click", e), this.support.touch ? t.on("touchstart touchmove touchend touchcancel", e) : this.options.emulateTouchEvents && this.support.transition && t.on("mousedown mousemove mouseup mouseout", e), this.support.transition && t.on(this.support.transition.end, e), this.proxyListener = e }, destroyEventListeners: function () { var t = this.slidesContainer, e = this.proxyListener; d(window).off("resize", e), d(document.body).off("keydown", e), this.container.off("click", e), this.support.touch ? t.off("touchstart touchmove touchend touchcancel", e) : this.options.emulateTouchEvents && this.support.transition && t.off("mousedown mousemove mouseup mouseout", e), this.support.transition && t.off(this.support.transition.end, e) }, handleOpen: function () { this.options.onopened && this.options.onopened.call(this) }, initWidget: function () { var i = this; return this.container = d(this.options.container), this.container.length ? (this.slidesContainer = this.container.find(this.options.slidesContainer).first(), this.slidesContainer.length ? (this.titleElement = this.container.find(this.options.titleElement).first(), 1 === this.num && this.container.addClass(this.options.singleClass), this.options.onopen && this.options.onopen.call(this), this.support.transition && this.options.displayTransition ? this.container.on(this.support.transition.end, function t(e) { e.target === i.container[0] && (i.container.off(i.support.transition.end, t), i.handleOpen()) }) : this.handleOpen(), this.options.hidePageScrollbars && (this.bodyOverflowStyle = document.body.style.overflow, document.body.style.overflow = "hidden"), this.container[0].style.display = "block", this.initSlides(), void this.container.addClass(this.options.displayClass)) : (this.console.log("blueimp Gallery: Slides container not found.", this.options.slidesContainer), !1)) : (this.console.log("blueimp Gallery: Widget container not found.", this.options.container), !1) }, initOptions: function (t) { this.options = d.extend({}, this.options), (t && t.carousel || this.options.carousel && (!t || !1 !== t.carousel)) && d.extend(this.options, this.carouselOptions), d.extend(this.options, t), this.num < 3 && (this.options.continuous = !!this.options.continuous && null), this.support.transition || (this.options.emulateTouchEvents = !1), this.options.event && this.preventDefault(this.options.event) } }), i }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) }(function (t, e) { "use strict"; t.extend(e.prototype.options, {fullScreen: !1}); var i = e.prototype.initialize, s = e.prototype.close; return t.extend(e.prototype, { getFullScreenElement: function () { return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement }, requestFullScreen: function (t) { t.requestFullscreen ? t.requestFullscreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.msRequestFullscreen && t.msRequestFullscreen() }, exitFullScreen: function () { document.exitFullscreen ? document.exitFullscreen() : document.webkitCancelFullScreen ? document.webkitCancelFullScreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.msExitFullscreen && document.msExitFullscreen() }, initialize: function () { i.call(this), this.options.fullScreen && !this.getFullScreenElement() && this.requestFullScreen(this.container[0]) }, close: function () { this.getFullScreenElement() === this.container[0] && this.exitFullScreen(), s.call(this) } }), e }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) }(function (a, t) { "use strict"; a.extend(t.prototype.options, { indicatorContainer: "ol", activeIndicatorClass: "active", thumbnailProperty: "thumbnail", thumbnailIndicators: !0 }); var e = t.prototype.initSlides, i = t.prototype.addSlide, s = t.prototype.resetSlides, o = t.prototype.handleClick, n = t.prototype.handleSlide, l = t.prototype.handleClose; return a.extend(t.prototype, { createIndicator: function (t) { var e, i, s = this.indicatorPrototype.cloneNode(!1), o = this.getItemProperty(t, this.options.titleProperty), n = this.options.thumbnailProperty; return this.options.thumbnailIndicators && (n && (e = this.getItemProperty(t, n)), void 0 === e && (i = t.getElementsByTagName && a(t).find("img")[0]) && (e = i.src), e && (s.style.backgroundImage = 'url("' + e + '")')), o && (s.title = o), s }, addIndicator: function (t) { if (this.indicatorContainer.length) { var e = this.createIndicator(this.list[t]); e.setAttribute("data-index", t), this.indicatorContainer[0].appendChild(e), this.indicators.push(e) } }, setActiveIndicator: function (t) { this.indicators && (this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), this.activeIndicator = a(this.indicators[t]), this.activeIndicator.addClass(this.options.activeIndicatorClass)) }, initSlides: function (t) { t || (this.indicatorContainer = this.container.find(this.options.indicatorContainer), this.indicatorContainer.length && (this.indicatorPrototype = document.createElement("li"), this.indicators = this.indicatorContainer[0].children)), e.call(this, t) }, addSlide: function (t) { i.call(this, t), this.addIndicator(t) }, resetSlides: function () { s.call(this), this.indicatorContainer.empty(), this.indicators = [] }, handleClick: function (t) { var e = t.target || t.srcElement, i = e.parentNode; if (i === this.indicatorContainer[0]) this.preventDefault(t), this.slide(this.getNodeIndex(e)); else { if (i.parentNode !== this.indicatorContainer[0]) return o.call(this, t); this.preventDefault(t), this.slide(this.getNodeIndex(i)) } }, handleSlide: function (t) { n.call(this, t), this.setActiveIndicator(t) }, handleClose: function () { this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), l.call(this) } }), t }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) }(function (w, t) { "use strict"; w.extend(t.prototype.options, { videoContentClass: "video-content", videoLoadingClass: "video-loading", videoPlayingClass: "video-playing", videoPosterProperty: "poster", videoSourcesProperty: "sources" }); var e = t.prototype.handleSlide; return w.extend(t.prototype, { handleSlide: function (t) { e.call(this, t), this.playingVideo && this.playingVideo.pause() }, videoFactory: function (t, e, i) { var s, o, n, a, l, r = this, h = this.options, d = this.elementPrototype.cloneNode(!1), c = w(d), p = [{type: "error", target: d}], u = i || document.createElement("video"), m = this.getItemProperty(t, h.urlProperty), y = this.getItemProperty(t, h.typeProperty), f = this.getItemProperty(t, h.titleProperty), g = this.getItemProperty(t, this.options.altTextProperty) || f, v = this.getItemProperty(t, h.videoPosterProperty), C = this.getItemProperty(t, h.videoSourcesProperty); if (c.addClass(h.videoContentClass), f && (d.title = f), u.canPlayType) if (m && y && u.canPlayType(y)) u.src = m; else if (C) for (; C.length;) if (o = C.shift(), m = this.getItemProperty(o, h.urlProperty), y = this.getItemProperty(o, h.typeProperty), m && y && u.canPlayType(y)) { u.src = m; break } return v && (u.poster = v, s = this.imagePrototype.cloneNode(!1), w(s).addClass(h.toggleClass), s.src = v, s.draggable = !1, s.alt = g, d.appendChild(s)), (n = document.createElement("a")).setAttribute("target", "_blank"), i || n.setAttribute("download", f), n.href = m, u.src && (u.controls = !0, (i || w(u)).on("error", function () { r.setTimeout(e, p) }).on("pause", function () { u.seeking || (a = !1, c.removeClass(r.options.videoLoadingClass).removeClass(r.options.videoPlayingClass), l && r.container.addClass(r.options.controlsClass), delete r.playingVideo, r.interval && r.play()) }).on("playing", function () { a = !1, c.removeClass(r.options.videoLoadingClass).addClass(r.options.videoPlayingClass), r.container.hasClass(r.options.controlsClass) ? (l = !0, r.container.removeClass(r.options.controlsClass)) : l = !1 }).on("play", function () { window.clearTimeout(r.timeout), a = !0, c.addClass(r.options.videoLoadingClass), r.playingVideo = u }), w(n).on("click", function (t) { r.preventDefault(t), a ? u.pause() : u.play() }), d.appendChild(i && i.element || u)), d.appendChild(n), this.setTimeout(e, [{type: "load", target: d}]), d } }), t }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery-video"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) }(function (l, t) { "use strict"; if (!window.postMessage) return t; l.extend(t.prototype.options, { vimeoVideoIdProperty: "vimeo", vimeoPlayerUrl: "//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID", vimeoPlayerIdPrefix: "vimeo-player-", vimeoClickToPlay: !0 }); function o(t, e, i, s) { this.url = t, this.videoId = e, this.playerId = i, this.clickToPlay = s, this.element = document.createElement("div"), this.listeners = {} } var n = t.prototype.textFactory || t.prototype.imageFactory, a = 0; return l.extend(o.prototype, { canPlayType: function () { return !0 }, on: function (t, e) { return this.listeners[t] = e, this }, loadAPI: function () { var t, e, i = this, s = "//f.vimeocdn.com/js/froogaloop2.min.js", o = document.getElementsByTagName("script"), n = o.length; function a() { !e && i.playOnReady && i.play(), e = !0 } for (; n;) if (o[n -= 1].src === s) { t = o[n]; break } t || ((t = document.createElement("script")).src = s), l(t).on("load", a), o[0].parentNode.insertBefore(t, o[0]), /loaded|complete/.test(t.readyState) && a() }, onReady: function () { var t = this; this.ready = !0, this.player.addEvent("play", function () { t.hasPlayed = !0, t.onPlaying() }), this.player.addEvent("pause", function () { t.onPause() }), this.player.addEvent("finish", function () { t.onPause() }), this.playOnReady && this.play() }, onPlaying: function () { this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2) }, onPause: function () { this.listeners.pause(), delete this.playStatus }, insertIframe: function () { var t = document.createElement("iframe"); t.src = this.url.replace("VIDEO_ID", this.videoId).replace("PLAYER_ID", this.playerId), t.id = this.playerId, this.element.parentNode.replaceChild(t, this.element), this.element = t }, play: function () { var t = this; this.playStatus || (this.listeners.play(), this.playStatus = 1), this.ready ? !this.hasPlayed && (this.clickToPlay || window.navigator && /iP(hone|od|ad)/.test(window.navigator.platform)) ? this.onPlaying() : this.player.api("play") : (this.playOnReady = !0, window.$f ? this.player || (this.insertIframe(), this.player = $f(this.element), this.player.addEvent("ready", function () { t.onReady() })) : this.loadAPI()) }, pause: function () { this.ready ? this.player.api("pause") : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus) } }), l.extend(t.prototype, { VimeoPlayer: o, textFactory: function (t, e) { var i = this.options, s = this.getItemProperty(t, i.vimeoVideoIdProperty); return s ? (void 0 === this.getItemProperty(t, i.urlProperty) && (t[i.urlProperty] = "//vimeo.com/" + s), a += 1, this.videoFactory(t, e, new o(i.vimeoPlayerUrl, s, i.vimeoPlayerIdPrefix + a, i.vimeoClickToPlay))) : n.call(this, t, e) } }), t }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery-video"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) }(function (t, e) { "use strict"; if (!window.postMessage) return e; t.extend(e.prototype.options, { youTubeVideoIdProperty: "youtube", youTubePlayerVars: {wmode: "transparent"}, youTubeClickToPlay: !0 }); function o(t, e, i) { this.videoId = t, this.playerVars = e, this.clickToPlay = i, this.element = document.createElement("div"), this.listeners = {} } var n = e.prototype.textFactory || e.prototype.imageFactory; return t.extend(o.prototype, { canPlayType: function () { return !0 }, on: function (t, e) { return this.listeners[t] = e, this }, loadAPI: function () { var t, e = this, i = window.onYouTubeIframeAPIReady, s = "//www.youtube.com/iframe_api", o = document.getElementsByTagName("script"), n = o.length; for (window.onYouTubeIframeAPIReady = function () { i && i.apply(this), e.playOnReady && e.play() }; n;) if (o[n -= 1].src === s) return; (t = document.createElement("script")).src = s, o[0].parentNode.insertBefore(t, o[0]) }, onReady: function () { this.ready = !0, this.playOnReady && this.play() }, onPlaying: function () { this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2) }, onPause: function () { e.prototype.setTimeout.call(this, this.checkSeek, null, 2e3) }, checkSeek: function () { this.stateChange !== YT.PlayerState.PAUSED && this.stateChange !== YT.PlayerState.ENDED || (this.listeners.pause(), delete this.playStatus) }, onStateChange: function (t) { switch (t.data) { case YT.PlayerState.PLAYING: this.hasPlayed = !0, this.onPlaying(); break; case YT.PlayerState.PAUSED: case YT.PlayerState.ENDED: this.onPause() } this.stateChange = t.data }, onError: function (t) { this.listeners.error(t) }, play: function () { var e = this; this.playStatus || (this.listeners.play(), this.playStatus = 1), this.ready ? !this.hasPlayed && (this.clickToPlay || window.navigator && /iP(hone|od|ad)/.test(window.navigator.platform)) ? this.onPlaying() : this.player.playVideo() : (this.playOnReady = !0, window.YT && YT.Player ? this.player || (this.player = new YT.Player(this.element, { videoId: this.videoId, playerVars: this.playerVars, events: { onReady: function () { e.onReady() }, onStateChange: function (t) { e.onStateChange(t) }, onError: function (t) { e.onError(t) } } })) : this.loadAPI()) }, pause: function () { this.ready ? this.player.pauseVideo() : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus) } }), t.extend(e.prototype, { YouTubePlayer: o, textFactory: function (t, e) { var i = this.options, s = this.getItemProperty(t, i.youTubeVideoIdProperty); return s ? (void 0 === this.getItemProperty(t, i.urlProperty) && (t[i.urlProperty] = "//www.youtube.com/watch?v=" + s), void 0 === this.getItemProperty(t, i.videoPosterProperty) && (t[i.videoPosterProperty] = "//img.youtube.com/vi/" + s + "/maxresdefault.jpg"), this.videoFactory(t, e, new o(s, i.youTubePlayerVars, i.youTubeClickToPlay))) : n.call(this, t, e) } }), e }), function (t) { "use strict"; "function" == typeof define && define.amd ? define(["jquery", "./blueimp-gallery"], t) : t(window.jQuery, window.blueimp.Gallery) }(function (l, r) { "use strict"; l(document).on("click", "[data-gallery]", function (t) { var e = l(this).data("gallery"), i = l(e), s = i.length && i || l(r.prototype.options.container), o = { onopen: function () { s.data("gallery", this).trigger("open") }, onopened: function () { s.trigger("opened") }, onslide: function () { s.trigger("slide", arguments) }, onslideend: function () { s.trigger("slideend", arguments) }, onslidecomplete: function () { s.trigger("slidecomplete", arguments) }, onclose: function () { s.trigger("close") }, onclosed: function () { s.trigger("closed").removeData("gallery") } }, n = l.extend(s.data(), {container: s[0], index: this, event: t}, o), a = l(this).closest("[data-gallery-group], body").find('[data-gallery="' + e + '"]'); return n.filter && (a = a.filter(n.filter)), new r(a, n) }) }); //# sourceMappingURL=jquery.blueimp-gallery.min.js.map