(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:500,fitImagesInViewport:!0,positionFromTop:50,resizeDuration:700,showImageNumberLabel:!0,wrapAround:!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(){this.enable(),this.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(){var t=this;n('<div id="lightboxOverlay" class="lightboxOverlay"><\/div><div id="lightbox" class="lightbox"><div class="lb-outerContainer"><div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" /><div class="lb-nav"><a class="lb-prev" href="" ><\/a><a class="lb-next" 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.containerTopPadding=parseInt(this.$container.css("padding-top"),10),this.containerRightPadding=parseInt(this.$container.css("padding-right"),10),this.containerBottomPadding=parseInt(this.$container.css("padding-bottom"),10),this.containerLeftPadding=parseInt(this.$container.css("padding-left"),10);this.$overlay.hide().on("click",function(){return t.end(),!1});this.$lightbox.hide().on("click",function(i){return n(i.target).attr("id")==="lightbox"&&t.end(),!1});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.$lightbox.find(".lb-loader, .lb-close").on("click",function(){return t.end(),!1})},t.prototype.start=function(t){function o(n){l.album.push({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(n("select, object, embed").css({visibility:"hidden"}),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.changeImage(f)},t.prototype.changeImage=function(t){var r=this,u,i;this.disableKeyboardNav(),u=this.$lightbox.find(".lb-image"),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"),i=new Image,i.onload=function(){var l,e,o,s,f,h,c;u.attr("src",r.album[t].link),l=n(i),u.width(i.width),u.height(i.height),r.options.fitImagesInViewport&&(c=n(window).width(),h=n(window).height(),f=c-r.containerLeftPadding-r.containerRightPadding-20,s=h-r.containerTopPadding-r.containerBottomPadding-120,r.options.maxWidth&&r.options.maxWidth<f&&(f=r.options.maxWidth),r.options.maxHeight&&r.options.maxHeight<f&&(s=r.options.maxHeight),(i.width>f||i.height>s)&&(i.width/f>i.height/s?(o=f,e=parseInt(i.height/(i.width/o),10),u.width(o),u.height(e)):(e=s,o=parseInt(i.width/(i.height/e),10),u.width(o),u.height(e)))),r.sizeContainer(u.width(),u.height())},i.src=this.album[t].link,this.currentImageIndex=t},t.prototype.sizeOverlay=function(){this.$overlay.width(n(window).width()).height(n(document).height())},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.showImage()}var i=this,e=this.$outerContainer.outerWidth(),o=this.$outerContainer.outerHeight(),u=n+this.containerLeftPadding+this.containerRightPadding,r=t+this.containerTopPadding+this.containerBottomPadding;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("slow"),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,t;if(typeof this.album[this.currentImageIndex].title!="undefined"&&this.album[this.currentImageIndex].title!=="")this.$lightbox.find(".lb-caption").html(this.album[this.currentImageIndex].title).fadeIn("fast").find("a").on("click",function(){n(this).attr("target")!==undefined?window.open(n(this).attr("href"),n(this).attr("target")):location.href=n(this).attr("href")});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(){n(document).on("keyup.keyboard",n.proxy(this.keyboardAction,this))},t.prototype.disableKeyboardNav=function(){n(document).off(".keyboard")},t.prototype.keyboardAction=function(n){var r=27,u=37,f=39,t=n.keyCode,i=String.fromCharCode(t).toLowerCase();t===r||i.match(/x|o|c/)?this.end():i==="p"||t===u?this.currentImageIndex!==0?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1):(i==="n"||t===f)&&(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),n("select, object, embed").css({visibility:"visible"})},new t})