(function(n,t){typeof define=="function"&&define.amd?define(["jquery"],t):typeof exports=="object"?module.exports=t(require("jquery")):n.lightbox=t(n.jQuery)})(this,function(n){function t(t){this.album=[];this.currentImageIndex=void 0;this.init();this.options=n.extend({},this.constructor.defaults);this.option(t)}return t.defaults={albumLabel:"Image %1 of %2",alwaysShowNavOnTouchDevices:!1,fadeDuration:600,fitImagesInViewport:!0,imageFadeDuration:600,positionFromTop:50,resizeDuration:700,showImageNumberLabel:!0,wrapAround:!1,disableScrolling:!1,sanitizeTitle:!1},t.prototype.option=function(t){n.extend(this.options,t)},t.prototype.imageCountLabel=function(n,t){return this.options.albumLabel.replace(/%1/g,n).replace(/%2/g,t)},t.prototype.init=function(){var t=this;n(document).ready(function(){t.enable();t.build()})},t.prototype.enable=function(){var t=this;n("body").on("click","a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]",function(i){return t.start(n(i.currentTarget)),!1})},t.prototype.build=function(){if(!(n("#lightbox").length>0)){var t=this;n('<div id="lightboxOverlay" tabindex="-1" class="lightboxOverlay"><\/div><div id="lightbox" tabindex="-1" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" alt=""/><div class="lb-nav"><a class="lb-prev" aria-label="Previous image" href="" ><\/a><a class="lb-next" aria-label="Next image" href="" ><\/a><\/div><div class="lb-loader"><a class="lb-cancel"><\/a><\/div><\/div><\/div><div class="lb-dataContainer"><div class="lb-data"><div class="lb-details"><span class="lb-caption"><\/span><span class="lb-number"><\/span><\/div><div class="lb-closeContainer"><a class="lb-close"><\/a><\/div><\/div><\/div><\/div>').appendTo(n("body"));this.$lightbox=n("#lightbox");this.$overlay=n("#lightboxOverlay");this.$outerContainer=this.$lightbox.find(".lb-outerContainer");this.$container=this.$lightbox.find(".lb-container");this.$image=this.$lightbox.find(".lb-image");this.$nav=this.$lightbox.find(".lb-nav");this.containerPadding={top:parseInt(this.$container.css("padding-top"),10),right:parseInt(this.$container.css("padding-right"),10),bottom:parseInt(this.$container.css("padding-bottom"),10),left:parseInt(this.$container.css("padding-left"),10)};this.imageBorderWidth={top:parseInt(this.$image.css("border-top-width"),10),right:parseInt(this.$image.css("border-right-width"),10),bottom:parseInt(this.$image.css("border-bottom-width"),10),left:parseInt(this.$image.css("border-left-width"),10)};this.$overlay.hide().on("click",function(){return t.end(),!1});this.$lightbox.hide().on("click",function(i){n(i.target).attr("id")==="lightbox"&&t.end()});this.$outerContainer.on("click",function(i){return n(i.target).attr("id")==="lightbox"&&t.end(),!1});this.$lightbox.find(".lb-prev").on("click",function(){return t.currentImageIndex===0?t.changeImage(t.album.length-1):t.changeImage(t.currentImageIndex-1),!1});this.$lightbox.find(".lb-next").on("click",function(){return t.currentImageIndex===t.album.length-1?t.changeImage(0):t.changeImage(t.currentImageIndex+1),!1});this.$nav.on("mousedown",function(n){if(n.which===3){t.$nav.css("pointer-events","none");t.$lightbox.one("contextmenu",function(){setTimeout(function(){this.$nav.css("pointer-events","auto")}.bind(t),0)})}});this.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return t.end(),!1})}},t.prototype.start=function(t){function o(n){l.album.push({alt:n.attr("data-alt"),link:n.attr("href"),title:n.attr("data-title")||n.attr("title")})}var l=this,e=n(window),f,s,i,r,u,h,c;e.on("resize",n.proxy(this.sizeOverlay,this));if(this.sizeOverlay(),this.album=[],f=0,s=t.attr("data-lightbox"),s)for(i=n(t.prop("tagName")+'[data-lightbox="'+s+'"]'),r=0;r<i.length;r=++r)o(n(i[r])),i[r]===t[0]&&(f=r);else if(t.attr("rel")==="lightbox")o(t);else for(i=n(t.prop("tagName")+'[rel="'+t.attr("rel")+'"]'),u=0;u<i.length;u=++u)o(n(i[u])),i[u]===t[0]&&(f=u);h=e.scrollTop()+this.options.positionFromTop;c=e.scrollLeft();this.$lightbox.css({top:h+"px",left:c+"px"}).fadeIn(this.options.fadeDuration);this.options.disableScrolling&&n("body").addClass("lb-disable-scrolling");this.changeImage(f)},t.prototype.changeImage=function(t){var i=this,f=this.album[t].link,e=f.split(".").slice(-1)[0],u=this.$lightbox.find(".lb-image"),r;this.disableKeyboardNav();this.$overlay.fadeIn(this.options.fadeDuration);n(".lb-loader").fadeIn("slow");this.$lightbox.find(".lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption").hide();this.$outerContainer.addClass("animating");r=new Image;r.onload=function(){var v,h,c,o,s,l,a;u.attr({alt:i.album[t].alt,src:f});v=n(r);u.width(r.width);u.height(r.height);a=n(window).width();l=n(window).height();s=a-i.containerPadding.left-i.containerPadding.right-i.imageBorderWidth.left-i.imageBorderWidth.right-20;o=l-i.containerPadding.top-i.containerPadding.bottom-i.imageBorderWidth.top-i.imageBorderWidth.bottom-i.options.positionFromTop-70;e==="svg"&&(u.width(s),u.height(o));i.options.fitImagesInViewport?(i.options.maxWidth&&i.options.maxWidth<s&&(s=i.options.maxWidth),i.options.maxHeight&&i.options.maxHeight<o&&(o=i.options.maxHeight)):(s=i.options.maxWidth||r.width||s,o=i.options.maxHeight||r.height||o);(r.width>s||r.height>o)&&(r.width/s>r.height/o?(c=s,h=parseInt(r.height/(r.width/c),10),u.width(c),u.height(h)):(h=o,c=parseInt(r.width/(r.height/h),10),u.width(c),u.height(h)));i.sizeContainer(u.width(),u.height())};r.src=this.album[t].link;this.currentImageIndex=t},t.prototype.sizeOverlay=function(){var t=this;setTimeout(function(){t.$overlay.width(n(document).width()).height(n(document).height())},0)},t.prototype.sizeContainer=function(n,t){function f(){i.$lightbox.find(".lb-dataContainer").width(u);i.$lightbox.find(".lb-prevLink").height(r);i.$lightbox.find(".lb-nextLink").height(r);i.$overlay.focus();i.showImage()}var i=this,e=this.$outerContainer.outerWidth(),o=this.$outerContainer.outerHeight(),u=n+this.containerPadding.left+this.containerPadding.right+this.imageBorderWidth.left+this.imageBorderWidth.right,r=t+this.containerPadding.top+this.containerPadding.bottom+this.imageBorderWidth.top+this.imageBorderWidth.bottom;e!==u||o!==r?this.$outerContainer.animate({width:u,height:r},this.options.resizeDuration,"swing",function(){f()}):f()},t.prototype.showImage=function(){this.$lightbox.find(".lb-loader").stop(!0).hide();this.$lightbox.find(".lb-image").fadeIn(this.options.imageFadeDuration);this.updateNav();this.updateDetails();this.preloadNeighboringImages();this.enableKeyboardNav()},t.prototype.updateNav=function(){var n=!1;try{document.createEvent("TouchEvent");n=this.options.alwaysShowNavOnTouchDevices?!0:!1}catch(t){}this.$lightbox.find(".lb-nav").show();this.album.length>1&&(this.options.wrapAround?(n&&this.$lightbox.find(".lb-prev, .lb-next").css("opacity","1"),this.$lightbox.find(".lb-prev, .lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".lb-prev").show(),n&&this.$lightbox.find(".lb-prev").css("opacity","1")),this.currentImageIndex<this.album.length-1&&(this.$lightbox.find(".lb-next").show(),n&&this.$lightbox.find(".lb-next").css("opacity","1"))))},t.prototype.updateDetails=function(){var i=this,n,t;typeof this.album[this.currentImageIndex].title!="undefined"&&this.album[this.currentImageIndex].title!==""&&(n=this.$lightbox.find(".lb-caption"),this.options.sanitizeTitle?n.text(this.album[this.currentImageIndex].title):n.html(this.album[this.currentImageIndex].title),n.fadeIn("fast"));this.album.length>1&&this.options.showImageNumberLabel?(t=this.imageCountLabel(this.currentImageIndex+1,this.album.length),this.$lightbox.find(".lb-number").text(t).fadeIn("fast")):this.$lightbox.find(".lb-number").hide();this.$outerContainer.removeClass("animating");this.$lightbox.find(".lb-dataContainer").fadeIn(this.options.resizeDuration,function(){return i.sizeOverlay()})},t.prototype.preloadNeighboringImages=function(){var n,t;this.album.length>this.currentImageIndex+1&&(n=new Image,n.src=this.album[this.currentImageIndex+1].link);this.currentImageIndex>0&&(t=new Image,t.src=this.album[this.currentImageIndex-1].link)},t.prototype.enableKeyboardNav=function(){this.$lightbox.on("keyup.keyboard",n.proxy(this.keyboardAction,this));this.$overlay.on("keyup.keyboard",n.proxy(this.keyboardAction,this))},t.prototype.disableKeyboardNav=function(){this.$lightbox.off(".keyboard");this.$overlay.off(".keyboard")},t.prototype.keyboardAction=function(n){var t=n.keyCode;t===27?(n.stopPropagation(),this.end()):t===37?this.currentImageIndex!==0?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1):t===39&&(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0))},t.prototype.end=function(){this.disableKeyboardNav();n(window).off("resize",this.sizeOverlay);this.$lightbox.fadeOut(this.options.fadeDuration);this.$overlay.fadeOut(this.options.fadeDuration);this.options.disableScrolling&&n("body").removeClass("lb-disable-scrolling")},new t})