'use strict';
(function ($){
var SlickLightbox, defaults;
SlickLightbox=function (){
function SlickLightbox(element, options1){
var slickLightbox;
this.options=options1;
this.$element=$(element);
this.didInit=false;
slickLightbox=this;
this.$element.on('click.slickLightbox', this.options.itemSelector, function (e){
var $clickedItem, $items;
e.preventDefault();
$clickedItem=$(this);
$clickedItem.blur();
if(typeof slickLightbox.options.shouldOpen==='function'){
if(!slickLightbox.options.shouldOpen(slickLightbox, $clickedItem, e)){
return;
}}
$items=slickLightbox.$element.find(slickLightbox.options.itemSelector);
if(slickLightbox.elementIsSlick()){
$items=slickLightbox.filterOutSlickClones($items);
$clickedItem=slickLightbox.handlePossibleCloneClick($clickedItem, $items);
}
return slickLightbox.init($items.index($clickedItem));
});
}
SlickLightbox.prototype.init=function (index){
this.didInit=true;
this.detectIE();
this.createModal();
this.bindEvents();
this.initSlick(index);
return this.open();
};
SlickLightbox.prototype.createModalItems=function (){
var $items, createItem, itemTemplate, lazyPlaceholder, length, links;
lazyPlaceholder=this.options.lazyPlaceholder||'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
itemTemplate=function (source, caption, lazy){
var imgSourceParams;
if(lazy===true){
imgSourceParams=' data-lazy="' + source + '" src="' + lazyPlaceholder + '" ';
}else{
imgSourceParams=' src="' + source + '" ';
}
return '<div class="slick-lightbox-slick-item">\n  <div class="slick-lightbox-slick-item-inner">\n    <img class="slick-lightbox-slick-img" ' + imgSourceParams + ' />\n    ' + caption + '\n  </div>\n</div>';
};
if(this.options.images){
links=$.map(this.options.images, function (_this){
return function (img){
return itemTemplate(img, _this.options.lazy);
};}(this));
}else{
$items=this.filterOutSlickClones(this.$element.find(this.options.itemSelector));
length=$items.length;
createItem=function (_this){
return function (el, index){
var caption, info, src;
info={
index: index,
length: length
};
caption=_this.getElementCaption(el, info);
src=_this.getElementSrc(el);
return itemTemplate(src, caption, _this.options.lazy);
};}(this);
links=$.map($items, createItem);
}
return links;
};
SlickLightbox.prototype.createModal=function (){
var html, links;
links=this.createModalItems();
html='<div class="slick-lightbox slick-lightbox-hide-init' + (this.isIE ? ' slick-lightbox-ie':'') + '" style="background: ' + this.options.background + ';">\n  <div class="slick-lightbox-inner">\n    <div class="slick-lightbox-slick slick-caption-' + this.options.captionPosition + '">' + links.join('') + '</div>\n  <div>\n<div>';
this.$modalElement=$(html);
this.$parts={};
this.$parts['closeButton']=$(this.options.layouts.closeButton);
this.$modalElement.find('.slick-lightbox-inner').append(this.$parts['closeButton']);
return $('body').append(this.$modalElement);
};
SlickLightbox.prototype.initSlick=function (index){
var additional;
additional={ initialSlide: index };
if(this.options.lazy){
additional.lazyLoad='ondemand';
}
if(this.options.slick!=null){
if(typeof this.options.slick==='function'){
this.slick=this.options.slick(this.$modalElement);
}else{
this.slick=this.$modalElement.find('.slick-lightbox-slick').slick($.extend({}, this.options.slick, additional));
}}else{
this.slick=this.$modalElement.find('.slick-lightbox-slick').slick(additional);
}
return this.$modalElement.trigger('init.slickLightbox');
};
SlickLightbox.prototype.open=function (){
if(this.options.useHistoryApi){
this.writeHistory();
}
this.$element.trigger('show.slickLightbox');
setTimeout(function (_this){
return function (){
return _this.$element.trigger('shown.slickLightbox');
};}(this), this.getTransitionDuration());
return this.$modalElement.removeClass('slick-lightbox-hide-init');
};
SlickLightbox.prototype.close=function (){
this.$element.trigger('hide.slickLightbox');
setTimeout(function (_this){
return function (){
return _this.$element.trigger('hidden.slickLightbox');
};}(this), this.getTransitionDuration());
this.$modalElement.addClass('slick-lightbox-hide');
return this.destroy();
};
SlickLightbox.prototype.bindEvents=function (){
var resizeSlides;
resizeSlides=function (_this){
return function (){
var h;
h=_this.$modalElement.find('.slick-lightbox-inner').height();
_this.$modalElement.find('.slick-lightbox-slick-item').height(h);
return _this.$modalElement.find('.slick-lightbox-slick-img, .slick-lightbox-slick-item-inner').css('max-height', Math.round(_this.options.imageMaxHeight * h));
};}(this);
$(window).on('orientationchange.slickLightbox resize.slickLightbox', resizeSlides);
if(this.options.useHistoryApi){
$(window).on('popstate.slickLightbox', function (_this){
return function (){
return _this.close();
};}(this));
}
this.$modalElement.on('init.slickLightbox', resizeSlides);
this.$modalElement.on('destroy.slickLightbox', function (_this){
return function (){
return _this.destroy();
};}(this));
this.$element.on('destroy.slickLightbox', function (_this){
return function (){
return _this.destroy(true);
};}(this));
this.$parts['closeButton'].on('click.slickLightbox touchstart.slickLightbox', function (_this){
return function (e){
e.preventDefault();
return _this.close();
};}(this));
if(this.options.closeOnEscape||this.options.navigateByKeyboard){
$(document).on('keydown.slickLightbox', function (_this){
return function (e){
var code;
code=e.keyCode ? e.keyCode:e.which;
if(_this.options.navigateByKeyboard){
if(code===37){
_this.slideSlick('left');
}else if(code===39){
_this.slideSlick('right');
}}
if(_this.options.closeOnEscape){
if(code===27){
return _this.close();
}}
};}(this));
}
if(this.options.closeOnBackdropClick){
this.$modalElement.on('click.slickLightbox touchstart.slickLightbox', '.slick-lightbox-slick-img', function (e){
return e.stopPropagation();
});
return this.$modalElement.on('click.slickLightbox', '.slick-lightbox-slick-item', function (_this){
return function (e){
e.preventDefault();
return _this.close();
};}(this));
}};
SlickLightbox.prototype.slideSlick=function (direction){
if(direction==='left'){
return this.slick.slick('slickPrev');
}else{
return this.slick.slick('slickNext');
}};
SlickLightbox.prototype.detectIE=function (){
var ieversion;
this.isIE=false;
if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
ieversion=new Number(RegExp.$1);
if(ieversion < 9){
return this.isIE=true;
}}
};
SlickLightbox.prototype.getElementCaption=function (el, info){
var c;
if(!this.options.caption){
return '';
}
c=function (){
switch (typeof this.options.caption){
case 'function':
return this.options.caption(el, info);
case 'string':
return $(el).data(this.options.caption);
}}.call(this);
return '<span class="slick-lightbox-slick-caption">' + c + '</span>';
};
SlickLightbox.prototype.getElementSrc=function (el){
switch (typeof this.options.src){
case 'function':
return this.options.src(el);
case 'string':
return $(el).attr(this.options.src);
default:
return el.href;
}};
SlickLightbox.prototype.unbindEvents=function (){
$(window).off('.slickLightbox');
$(document).off('.slickLightbox');
return this.$modalElement.off('.slickLightbox');
};
SlickLightbox.prototype.destroy=function (unbindAnchors){
if(unbindAnchors==null){
unbindAnchors=false;
}
if(this.didInit){
this.unbindEvents();
setTimeout(function (_this){
return function (){
return _this.$modalElement.remove();
};}(this), this.options.destroyTimeout);
}
if(unbindAnchors){
this.$element.off('.slickLightbox');
return this.$element.off('.slickLightbox', this.options.itemSelector);
}};
SlickLightbox.prototype.destroyPrevious=function (){
return $('body').children('.slick-lightbox').trigger('destroy.slickLightbox');
};
SlickLightbox.prototype.getTransitionDuration=function (){
var duration;
if(this.transitionDuration){
return this.transitionDuration;
}
duration=this.$modalElement.css('transition-duration');
if(typeof duration==='undefined'){
return this.transitionDuration=500;
}else{
return this.transitionDuration=duration.indexOf('ms') > -1 ? parseFloat(duration):parseFloat(duration) * 1000;
}};
SlickLightbox.prototype.writeHistory=function (){
return typeof history!=='undefined'&&history!==null ? typeof history.pushState==='function' ? history.pushState(null, null, ''):void 0:void 0;
};
SlickLightbox.prototype.filterOutSlickClones=function ($items){
if(!this.elementIsSlick()){
return $items;
}
return $items=$items.filter(function (){
var $item;
$item=$(this);
return !$item.hasClass('slick-cloned')&&$item.parents('.slick-cloned').length===0;
});
};
SlickLightbox.prototype.handlePossibleCloneClick=function ($clickedItem, $items){
var href;
if(!this.elementIsSlick()){
return $clickedItem;
}
if(!$clickedItem.closest('.slick-slide').hasClass('slick-cloned')){
return $clickedItem;
}
href=$clickedItem.attr('href');
return $items.filter(function (){
return $(this).attr('href')===href;
}).first();
};
SlickLightbox.prototype.elementIsSlick=function (){
return this.$element.hasClass('slick-slider');
};
return SlickLightbox;
}();
defaults={
background: 'rgba(0,0,0,.8)',
closeOnEscape: true,
closeOnBackdropClick: true,
destroyTimeout: 500,
itemSelector: 'a',
navigateByKeyboard: true,
src: false,
caption: false,
captionPosition: 'dynamic',
images: false,
slick: {},
useHistoryApi: false,
layouts: { closeButton: '<button type="button" class="slick-lightbox-close"></button>' },
shouldOpen: null,
imageMaxHeight: 0.9,
lazy: false
};
$.fn.slickLightbox=function (options){
options=$.extend({}, defaults, options);
$(this).each(function (){
return this.slickLightbox=new SlickLightbox(this, options);
});
return this;
};
$.fn.unslickLightbox=function (){
return $(this).trigger('destroy.slickLightbox').each(function (){
return this.slickLightbox=null;
});
};}(jQuery));