/*! lightgallery - v1.2.21 - 2016-06-28
* http://sachinchoolur.github.io/lightGallery/
* Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */
!function(a, b, c, d){"use strict"; var e = {scale:1, zoom:!0, actualSize:!0, enableZoomAfter:300}, f = function(c){return this.core = a(c).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.core.s.zoom && this.core.doCss() && (this.init(), this.zoomabletimeout = !1, this.pageX = a(b).width() / 2, this.pageY = a(b).height() / 2 + a(b).scrollTop()), this}; f.prototype.init = function(){var c = this, d = '<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>'; c.core.s.actualSize && (d += '<span id="lg-actual-size" class="lg-icon"></span>'), this.core.$outer.find(".lg-toolbar").append(d), c.core.$el.on("onSlideItemLoad.lg.tm.zoom", function(b, d, e){var f = c.core.s.enableZoomAfter + e; a("body").hasClass("lg-from-hash") && e?f = 0:a("body").removeClass("lg-from-hash"), c.zoomabletimeout = setTimeout(function(){c.core.$slide.eq(d).addClass("lg-zoomable")}, f + 30)}); var e = 1, f = function(d){var e, f, g = c.core.$outer.find(".lg-current .lg-image"), h = (a(b).width() - g.width()) / 2, i = (a(b).height() - g.height()) / 2 + a(b).scrollTop(); e = c.pageX - h, f = c.pageY - i; var j = (d - 1) * e, k = (d - 1) * f; g.css("transform", "scale3d(" + d + ", " + d + ", 1)").attr("data-scale", d), g.parent().css({left: - j + "px", top: - k + "px"}).attr("data-x", j).attr("data-y", k)}, g = function(){e > 1?c.core.$outer.addClass("lg-zoomed"):c.resetZoom(), 1 > e && (e = 1), f(e)}, h = function(d, f, h, i){var j, k = f.width(); j = c.core.s.dynamic?c.core.s.dynamicEl[h].width || f[0].naturalWidth || k:c.core.$items.eq(h).attr("data-width") || f[0].naturalWidth || k; var l; c.core.$outer.hasClass("lg-zoomed")?e = 1:j > k && (l = j / k, e = l || 2), i?(c.pageX = a(b).width() / 2, c.pageY = a(b).height() / 2 + a(b).scrollTop()):(c.pageX = d.pageX || d.originalEvent.targetTouches[0].pageX, c.pageY = d.pageY || d.originalEvent.targetTouches[0].pageY), g(), setTimeout(function(){c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")}, 10)}, i = !1; c.core.$el.on("onAferAppendSlide.lg.tm.zoom", function(a, b){var d = c.core.$slide.eq(b).find(".lg-image"); d.on("dblclick", function(a){h(a, d, b)}), d.on("touchstart", function(a){i?(clearTimeout(i), i = null, h(a, d, b)):i = setTimeout(function(){i = null}, 300), a.preventDefault()})}), a(b).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom", function(){c.pageX = a(b).width() / 2, c.pageY = a(b).height() / 2 + a(b).scrollTop(), f(e)}), a("#lg-zoom-out").on("click.lg", function(){c.core.$outer.find(".lg-current .lg-image").length && (e -= c.core.s.scale, g())}), a("#lg-zoom-in").on("click.lg", function(){c.core.$outer.find(".lg-current .lg-image").length && (e += c.core.s.scale, g())}), a("#lg-actual-size").on("click.lg", function(a){h(a, c.core.$slide.eq(c.core.index).find(".lg-image"), c.core.index, !0)}), c.core.$el.on("onBeforeSlide.lg.tm", function(){e = 1, c.resetZoom()}), c.core.isTouch || c.zoomDrag(), c.core.isTouch && c.zoomSwipe()}, f.prototype.resetZoom = function(){this.core.$outer.removeClass("lg-zoomed"), this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"), this.core.$slide.find(".lg-image").removeAttr("style data-scale"), this.pageX = a(b).width() / 2, this.pageY = a(b).height() / 2 + a(b).scrollTop()}, f.prototype.zoomSwipe = function(){var a = this, b = {}, c = {}, d = !1, e = !1, f = !1; a.core.$slide.on("touchstart.lg", function(c){if (a.core.$outer.hasClass("lg-zoomed")){var d = a.core.$slide.eq(a.core.index).find(".lg-object"); f = d.outerHeight() * d.attr("data-scale") > a.core.$outer.find(".lg").height(), e = d.outerWidth() * d.attr("data-scale") > a.core.$outer.find(".lg").width(), (e || f) && (c.preventDefault(), b = {x:c.originalEvent.targetTouches[0].pageX, y:c.originalEvent.targetTouches[0].pageY})}}), a.core.$slide.on("touchmove.lg", function(g){if (a.core.$outer.hasClass("lg-zoomed")){var h, i, j = a.core.$slide.eq(a.core.index).find(".lg-img-wrap"); g.preventDefault(), d = !0, c = {x:g.originalEvent.targetTouches[0].pageX, y:g.originalEvent.targetTouches[0].pageY}, a.core.$outer.addClass("lg-zoom-dragging"), i = f? - Math.abs(j.attr("data-y")) + (c.y - b.y): - Math.abs(j.attr("data-y")), h = e? - Math.abs(j.attr("data-x")) + (c.x - b.x): - Math.abs(j.attr("data-x")), (Math.abs(c.x - b.x) > 15 || Math.abs(c.y - b.y) > 15) && j.css({left:h + "px", top:i + "px"})}}), a.core.$slide.on("touchend.lg", function(){a.core.$outer.hasClass("lg-zoomed") && d && (d = !1, a.core.$outer.removeClass("lg-zoom-dragging"), a.touchendZoom(b, c, e, f))})}, f.prototype.zoomDrag = function(){var c = this, d = {}, e = {}, f = !1, g = !1, h = !1, i = !1; c.core.$slide.on("mousedown.lg.zoom", function(b){var e = c.core.$slide.eq(c.core.index).find(".lg-object"); i = e.outerHeight() * e.attr("data-scale") > c.core.$outer.find(".lg").height(), h = e.outerWidth() * e.attr("data-scale") > c.core.$outer.find(".lg").width(), c.core.$outer.hasClass("lg-zoomed") && a(b.target).hasClass("lg-object") && (h || i) && (b.preventDefault(), d = {x:b.pageX, y:b.pageY}, f = !0, c.core.$outer.scrollLeft += 1, c.core.$outer.scrollLeft -= 1, c.core.$outer.removeClass("lg-grab").addClass("lg-grabbing"))}), a(b).on("mousemove.lg.zoom", function(a){if (f){var b, j, k = c.core.$slide.eq(c.core.index).find(".lg-img-wrap"); g = !0, e = {x:a.pageX, y:a.pageY}, c.core.$outer.addClass("lg-zoom-dragging"), j = i? - Math.abs(k.attr("data-y")) + (e.y - d.y): - Math.abs(k.attr("data-y")), b = h? - Math.abs(k.attr("data-x")) + (e.x - d.x): - Math.abs(k.attr("data-x")), k.css({left:b + "px", top:j + "px"})}}), a(b).on("mouseup.lg.zoom", function(a){f && (f = !1, c.core.$outer.removeClass("lg-zoom-dragging"), !g || d.x === e.x && d.y === e.y || (e = {x:a.pageX, y:a.pageY}, c.touchendZoom(d, e, h, i)), g = !1), c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")})}, f.prototype.touchendZoom = function(a, b, c, d){var e = this, f = e.core.$slide.eq(e.core.index).find(".lg-img-wrap"), g = e.core.$slide.eq(e.core.index).find(".lg-object"), h = - Math.abs(f.attr("data-x")) + (b.x - a.x), i = - Math.abs(f.attr("data-y")) + (b.y - a.y), j = (e.core.$outer.find(".lg").height() - g.outerHeight()) / 2, k = Math.abs(g.outerHeight() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").height() + j), l = (e.core.$outer.find(".lg").width() - g.outerWidth()) / 2, m = Math.abs(g.outerWidth() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").width() + l); (Math.abs(b.x - a.x) > 15 || Math.abs(b.y - a.y) > 15) && (d && ( - k >= i?i = - k:i >= - j && (i = - j)), c && ( - m >= h?h = - m:h >= - l && (h = - l)), d?f.attr("data-y", Math.abs(i)):i = - Math.abs(f.attr("data-y")), c?f.attr("data-x", Math.abs(h)):h = - Math.abs(f.attr("data-x")), f.css({left:h + "px", top:i + "px"}))}, f.prototype.destroy = function(){var c = this; c.core.$el.off(".lg.zoom"), a(b).off(".lg.zoom"), c.core.$slide.off(".lg.zoom"), c.core.$el.off(".lg.tm.zoom"), c.resetZoom(), clearTimeout(c.zoomabletimeout), c.zoomabletimeout = !1}, a.fn.lightGallery.modules.zoom = f}(jQuery, window, document); |