;(function (window, document, $, undefined){
'use strict';
if(!$){
return;
}
if($.fn.fancybox){
if('console' in window){
console.log('fancyBox already initialized');
}
return;
}
var defaults={
loop:false,
margin:[44, 0],
gutter:50,
keyboard:true,
arrows:true,
infobar:true,
toolbar:true,
buttons:[
'slideShow',
'fullScreen',
'thumbs',
'share',
'close'
],
idleTime:3,
smallBtn:'auto',
protect:false,
modal:false,
image:{
preload:"auto"
},
ajax:{
settings:{
data:{
fancybox:true
}}
},
iframe:{
tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency="true" src=""></iframe>',
preload:true,
css:{},
attr:{
scrolling:'auto'
}},
defaultType:'image',
animationEffect:"zoom",
animationDuration:500,
zoomOpacity:"auto",
transitionEffect:"fade",
transitionDuration:366,
slideClass:'',
baseClass:'',
baseTpl	:
'<div class="fancybox-container" role="dialog" tabindex="-1">' +
'<div class="fancybox-bg"></div>' +
'<div class="fancybox-inner">' +
'<div class="fancybox-infobar">' +
'<span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span>' +
'</div>' +
'<div class="fancybox-toolbar">{{buttons}}</div>' +
'<div class="fancybox-navigation">{{arrows}}</div>' +
'<div class="fancybox-stage"></div>' +
'<div class="fancybox-caption-wrap"><div class="fancybox-caption"></div></div>' +
'</div>' +
'</div>',
spinnerTpl:'<div class="fancybox-loading"></div>',
errorTpl:'<div class="fancybox-error"><p>{{ERROR}}<p></div>',
btnTpl:{
download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M20,23 L20,8 L20,23 L13,16 L20,23 L27,16 L20,23 M26,28 L13,28 L27,28 L14,28" />' +
'</svg>' +
'</a>',
zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M 18,17 m-8,0 a 8,8 0 1,0 16,0 a 8,8 0 1,0 -16,0 M25,23 L31,29 L25,23" />' +
'</svg>' +
'</button>',
close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M10,10 L30,30 M30,10 L10,30" />' +
'</svg>' +
'</button>',
smallBtn:'<button data-fancybox-close class="fancybox-close-small" title="{{CLOSE}}"></button>',
arrowLeft:'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M10,20 L30,20 L10,20 L18,28 L10,20 L18,12 L10,20"></path>' +
'</svg>' +
'</button>',
arrowRight:'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M30,20 L10,20 L30,20 L22,28 L30,20 L22,12 L30,20"></path>' +
'</svg>' +
'</button>'
},
parentEl:'body',
autoFocus:false,
backFocus:true,
trapFocus:true,
fullScreen:{
autoStart:false,
},
touch:{
vertical:true,
momentum:true
},
hash:null,
media:{},
slideShow:{
autoStart:false,
speed:4000
},
thumbs:{
autoStart:false,
hideOnClose:true,
parentEl:'.fancybox-container',
axis:'y'
},
wheel:'auto',
/*
afterShow: function(instance, current){
console.info('Clicked element:');
console.info(current.opts.$orig);
}
*/
onInit:$.noop,
beforeLoad:$.noop,
afterLoad:$.noop,
beforeShow:$.noop,
afterShow:$.noop,
beforeClose:$.noop,
afterClose:$.noop,
onActivate:$.noop,
onDeactivate:$.noop,
clickContent:function(current, event){
return current.type==='image' ? 'zoom':false;
},
clickSlide:'close',
clickOutside:'close',
dblclickContent:false,
dblclickSlide:false,
dblclickOutside:false,
mobile:{
idleTime:false,
margin:0,
clickContent:function(current, event){
return current.type==='image' ? 'toggleControls':false;
},
clickSlide:function(current, event){
return current.type==='image' ? 'toggleControls':'close';
},
dblclickContent:function(current, event){
return current.type==='image' ? 'zoom':false;
},
dblclickSlide:function(current, event){
return current.type==='image' ? 'zoom':false;
}},
lang:'en',
i18n:{
'en':{
CLOSE:'Close',
NEXT:'Next',
PREV:'Previous',
ERROR:'The requested content cannot be loaded. <br/> Please try again later.',
PLAY_START:'Start slideshow',
PLAY_STOP:'Pause slideshow',
FULL_SCREEN:'Full screen',
THUMBS:'Thumbnails',
DOWNLOAD:'Download',
SHARE:'Share',
ZOOM:'Zoom'
},
'de':{
CLOSE:'Schliessen',
NEXT:'Weiter',
PREV:'Zurück',
ERROR:'Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.',
PLAY_START:'Diaschau starten',
PLAY_STOP:'Diaschau beenden',
FULL_SCREEN:'Vollbild',
THUMBS:'Vorschaubilder',
DOWNLOAD:'Herunterladen',
SHARE:'Teilen',
ZOOM:'Maßstab'
}}
};
var $W=$(window);
var $D=$(document);
var called=0;
var isQuery=function(obj){
return obj&&obj.hasOwnProperty&&obj instanceof $;
};
var requestAFrame=(function (){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
function (callback){
return window.setTimeout(callback, 1000 / 60);
};})();
var transitionEnd=(function (){
var t, el=document.createElement("fakeelement");
var transitions={
"transition":"transitionend",
"OTransition":"oTransitionEnd",
"MozTransition":"transitionend",
"WebkitTransition": "webkitTransitionEnd"
};
for (t in transitions){
if(el.style[t]!==undefined){
return transitions[t];
}}
return 'transitionend';
})();
var forceRedraw=function($el){
return($el&&$el.length&&$el[0].offsetHeight);
};
var FancyBox=function(content, opts, index){
var self=this;
self.opts=$.extend(true, { index:index }, $.fancybox.defaults, opts||{});
if($.fancybox.isMobile){
self.opts=$.extend(true, {}, self.opts, self.opts.mobile);
}
if(opts&&$.isArray(opts.buttons) ){
self.opts.buttons=opts.buttons;
}
self.id=self.opts.id||++called;
self.group=[];
self.currIndex=parseInt(self.opts.index, 10)||0;
self.prevIndex=null;
self.prevPos=null;
self.currPos=0;
self.firstRun=null;
self.createGroup(content);
if(!self.group.length){
return;
}
self.$lastFocus=$(document.activeElement).blur();
self.slides={};
self.init();
};
$.extend(FancyBox.prototype, {
init:function(){
var self=this,
firstItem=self.group[ self.currIndex ],
firstItemOpts=firstItem.opts,
scrollbarWidth=$.fancybox.scrollbarWidth,
$scrollDiv,
$container,
buttonStr;
self.scrollTop=$D.scrollTop();
self.scrollLeft=$D.scrollLeft();
if(!$.fancybox.getInstance()){
$('body').addClass('fancybox-active');
if(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream){
if(firstItem.type!=='image'){
$('body').css('top', $('body').scrollTop() * -1).addClass('fancybox-iosfix');
}}else if(!$.fancybox.isMobile&&document.body.scrollHeight > window.innerHeight){
if(scrollbarWidth===undefined){
$scrollDiv=$('<div style="width:50px;height:50px;overflow:scroll;" />').appendTo('body');
scrollbarWidth=$.fancybox.scrollbarWidth=$scrollDiv[0].offsetWidth - $scrollDiv[0].clientWidth;
$scrollDiv.remove();
}
$('head').append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar { margin-right: ' + scrollbarWidth + 'px; }</style>');
$('body').addClass('compensate-for-scrollbar');
}}
buttonStr='';
$.each(firstItemOpts.buttons, function(index, value){
buttonStr +=(firstItemOpts.btnTpl[ value ]||'');
});
$container=$(
self.translate(self,
firstItemOpts.baseTpl
.replace('\{\{buttons\}\}', buttonStr)
.replace('\{\{arrows\}\}', firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)
)
)
.attr('id', 'fancybox-container-' + self.id)
.addClass('fancybox-is-hidden')
.addClass(firstItemOpts.baseClass)
.data('FancyBox', self)
.appendTo(firstItemOpts.parentEl);
self.$refs={
container:$container
};
[ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption', 'navigation' ].forEach(function(item){
self.$refs[ item ]=$container.find('.fancybox-' + item);
});
self.trigger('onInit');
self.activate();
self.jumpTo(self.currIndex);
},
translate:function(obj, str){
var arr=obj.opts.i18n[ obj.opts.lang ];
return str.replace(/\{\{(\w+)\}\}/g, function(match, n){
var value=arr[n];
if(value===undefined){
return match;
}
return value;
});
},
createGroup:function(content){
var self=this;
var items=$.makeArray(content);
$.each(items, function(i, item){
var obj={},
opts={},
$item,
type,
found,
src,
srcParts;
if($.isPlainObject(item) ){
obj=item;
opts=item.opts||item;
}else if($.type(item)==='object'&&$(item).length){
$item=$(item);
opts=$item.data();
opts=$.extend({}, opts, opts.options||{});
opts.$orig=$item;
obj.src=opts.src||$item.attr('href');
if(!obj.type&&!obj.src){
obj.type='inline';
obj.src=item;
}}else{
obj={
type:'html',
src:item + ''
};}
obj.opts=$.extend(true, {}, self.opts, opts);
if($.isArray(opts.buttons) ){
obj.opts.buttons=opts.buttons;
}
type=obj.type||obj.opts.type;
src=obj.src||'';
if(!type&&src){
if(src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)){
type='image';
}else if(src.match(/\.(pdf)((\?|#).*)?$/i)){
type='pdf';
}else if(found=src.match(/\.(mp4|mov|ogv)((\?|#).*)?$/i)){
type='video';
if(!obj.opts.videoFormat){
obj.opts.videoFormat='video/' +(found[1]==='ogv' ? 'ogg':found[1]);
}}else if(src.charAt(0)==='#'){
type='inline';
}}
if(type){
obj.type=type;
}else{
self.trigger('objectNeedsType', obj);
}
obj.index=self.group.length;
if(obj.opts.$orig&&!obj.opts.$orig.length){
delete obj.opts.$orig;
}
if(!obj.opts.$thumb&&obj.opts.$orig){
obj.opts.$thumb=obj.opts.$orig.find('img:first');
}
if(obj.opts.$thumb&&!obj.opts.$thumb.length){
delete obj.opts.$thumb;
}
if($.type(obj.opts.caption)==='function'){
obj.opts.caption=obj.opts.caption.apply(item, [ self, obj ]);
}
if($.type(self.opts.caption)==='function'){
obj.opts.caption=self.opts.caption.apply(item, [ self, obj ]);
}
if(!(obj.opts.caption instanceof $) ){
obj.opts.caption=obj.opts.caption===undefined ? '':obj.opts.caption + '';
}
if(type==='ajax'){
srcParts=src.split(/\s+/, 2);
if(srcParts.length > 1){
obj.src=srcParts.shift();
obj.opts.filter=srcParts.shift();
}}
if(obj.opts.smallBtn=='auto'){
if($.inArray(type, ['html', 'inline', 'ajax']) > -1){
obj.opts.toolbar=false;
obj.opts.smallBtn=true;
}else{
obj.opts.smallBtn=false;
}}
if(type==='pdf'){
obj.type='iframe';
obj.opts.iframe.preload=false;
}
if(obj.opts.modal){
obj.opts=$.extend(true, obj.opts, {
infobar:0,
toolbar:0,
smallBtn:0,
keyboard:0,
slideShow:0,
fullScreen:0,
thumbs:0,
touch:0,
clickContent:false,
clickSlide:false,
clickOutside:false,
dblclickContent:false,
dblclickSlide:false,
dblclickOutside:false
});
}
self.group.push(obj);
});
},
addEvents:function(){
var self=this;
self.removeEvents();
self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e){
e.stopPropagation();
e.preventDefault();
self.close(e);
}).on('click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e){
e.stopPropagation();
e.preventDefault();
self.previous();
}).on('click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e){
e.stopPropagation();
e.preventDefault();
self.next();
}).on('click.fb', '[data-fancybox-zoom]', function(e){
self[ self.isScaledDown() ? 'scaleToActual':'scaleToFit' ]();
});
$W.on('orientationchange.fb resize.fb', function(e){
if(e&&e.originalEvent&&e.originalEvent.type==="resize"){
requestAFrame(function(){
self.update();
});
}else{
self.$refs.stage.hide();
setTimeout(function(){
self.$refs.stage.show();
self.update();
}, 600);
}});
$D.on('focusin.fb', function(e){
var instance=$.fancybox ? $.fancybox.getInstance():null;
if(instance.isClosing||!instance.current||!instance.current.opts.trapFocus||$(e.target).hasClass('fancybox-container')||$(e.target).is(document) ){
return;
}
if(instance&&$(e.target).css('position')!=='fixed'&&!instance.$refs.container.has(e.target).length){
e.stopPropagation();
instance.focus();
$W.scrollTop(self.scrollTop).scrollLeft(self.scrollLeft);
}});
$D.on('keydown.fb', function (e){
var current=self.current,
keycode=e.keyCode||e.which;
if(!current||!current.opts.keyboard){
return;
}
if($(e.target).is('input')||$(e.target).is('textarea')){
return;
}
if(keycode===8||keycode===27){
e.preventDefault();
self.close(e);
return;
}
if(keycode===37||keycode===38){
e.preventDefault();
self.previous();
return;
}
if(keycode===39||keycode===40){
e.preventDefault();
self.next();
return;
}
self.trigger('afterKeydown', e, keycode);
});
if(self.group[ self.currIndex ].opts.idleTime){
self.idleSecondsCounter=0;
$D.on('mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function(e){
self.idleSecondsCounter=0;
if(self.isIdle){
self.showControls();
}
self.isIdle=false;
});
self.idleInterval=window.setInterval(function(){
self.idleSecondsCounter++;
if(self.idleSecondsCounter >=self.group[ self.currIndex ].opts.idleTime&&!self.isDragging){
self.isIdle=true;
self.idleSecondsCounter=0;
self.hideControls();
}}, 1000);
}},
removeEvents:function(){
var self=this;
$W.off('orientationchange.fb resize.fb');
$D.off('focusin.fb keydown.fb .fb-idle');
this.$refs.container.off('.fb-close .fb-prev .fb-next');
if(self.idleInterval){
window.clearInterval(self.idleInterval);
self.idleInterval=null;
}},
previous:function(duration){
return this.jumpTo(this.currPos - 1, duration);
},
next:function(duration){
return this.jumpTo(this.currPos + 1, duration);
},
jumpTo:function(pos, duration, slide){
var self=this,
firstRun,
loop,
current,
previous,
canvasWidth,
currentPos,
transitionProps;
var groupLen=self.group.length;
if(self.isDragging||self.isClosing||(self.isAnimating&&self.firstRun) ){
return;
}
pos=parseInt(pos, 10);
loop=self.current ? self.current.opts.loop:self.opts.loop;
if(!loop&&(pos < 0||pos >=groupLen) ){
return false;
}
firstRun=self.firstRun=(self.firstRun===null);
if(groupLen < 2&&!firstRun&&!!self.isDragging){
return;
}
previous=self.current;
self.prevIndex=self.currIndex;
self.prevPos=self.currPos;
current=self.createSlide(pos);
if(groupLen > 1){
if(loop||current.index > 0){
self.createSlide(pos - 1);
}
if(loop||current.index < groupLen - 1){
self.createSlide(pos + 1);
}}
self.current=current;
self.currIndex=current.index;
self.currPos=current.pos;
self.trigger('beforeShow', firstRun);
self.updateControls();
currentPos=$.fancybox.getTranslate(current.$slide);
current.isMoved=(currentPos.left!==0||currentPos.top!==0)&&!current.$slide.hasClass('fancybox-animated');
current.forcedDuration=undefined;
if($.isNumeric(duration) ){
current.forcedDuration=duration;
}else{
duration=current.opts[ firstRun ? 'animationDuration':'transitionDuration' ];
}
duration=parseInt(duration, 10);
if(firstRun){
if(current.opts.animationEffect&&duration){
self.$refs.container.css('transition-duration', duration + 'ms');
}
self.$refs.container.removeClass('fancybox-is-hidden');
forceRedraw(self.$refs.container);
self.$refs.container.addClass('fancybox-is-open');
current.$slide.addClass('fancybox-slide--current');
self.loadSlide(current);
self.preload('image');
return;
}
$.each(self.slides, function(index, slide){
$.fancybox.stop(slide.$slide);
});
current.$slide.removeClass('fancybox-slide--next fancybox-slide--previous').addClass('fancybox-slide--current');
if(current.isMoved){
canvasWidth=Math.round(current.$slide.width());
$.each(self.slides, function(index, slide){
var pos=slide.pos - current.pos;
$.fancybox.animate(slide.$slide, {
top:0,
left:(pos * canvasWidth) +(pos * slide.opts.gutter)
}, duration, function(){
slide.$slide.removeAttr('style').removeClass('fancybox-slide--next fancybox-slide--previous');
if(slide.pos===self.currPos){
current.isMoved=false;
self.complete();
}});
});
}else{
self.$refs.stage.children().removeAttr('style');
}
if(current.isLoaded){
self.revealContent(current);
}else{
self.loadSlide(current);
}
self.preload('image');
if(previous.pos===current.pos){
return;
}
transitionProps='fancybox-slide--' +(previous.pos > current.pos ? 'next':'previous');
previous.$slide.removeClass('fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous');
previous.isComplete=false;
if(!duration||(!current.isMoved&&!current.opts.transitionEffect) ){
return;
}
if(current.isMoved){
previous.$slide.addClass(transitionProps);
}else{
transitionProps='fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect;
$.fancybox.animate(previous.$slide, transitionProps, duration, function(){
previous.$slide.removeClass(transitionProps).removeAttr('style');
});
}},
createSlide:function(pos){
var self=this;
var $slide;
var index;
index=pos % self.group.length;
index=index < 0 ? self.group.length + index:index;
if(!self.slides[ pos ]&&self.group[ index ]){
$slide=$('<div class="fancybox-slide"></div>').appendTo(self.$refs.stage);
self.slides[ pos ]=$.extend(true, {}, self.group[ index ], {
pos:pos,
$slide:$slide,
isLoaded:false,
});
self.updateSlide(self.slides[ pos ]);
}
return self.slides[ pos ];
},
scaleToActual:function(x, y, duration){
var self=this;
var current=self.current;
var $what=current.$content;
var imgPos, posX, posY, scaleX, scaleY;
var canvasWidth=parseInt(current.$slide.width(), 10);
var canvasHeight=parseInt(current.$slide.height(), 10);
var newImgWidth=current.width;
var newImgHeight=current.height;
if(!(current.type=='image'&&!current.hasError)||!$what||self.isAnimating){
return;
}
$.fancybox.stop($what);
self.isAnimating=true;
x=x===undefined ? canvasWidth  * 0.5:x;
y=y===undefined ? canvasHeight * 0.5:y;
imgPos=$.fancybox.getTranslate($what);
scaleX=newImgWidth  / imgPos.width;
scaleY=newImgHeight / imgPos.height;
posX=(canvasWidth * 0.5  - newImgWidth * 0.5);
posY=(canvasHeight * 0.5 - newImgHeight * 0.5);
if(newImgWidth > canvasWidth){
posX=imgPos.left * scaleX -(( x * scaleX) - x);
if(posX > 0){
posX=0;
}
if(posX <  canvasWidth - newImgWidth){
posX=canvasWidth - newImgWidth;
}}
if(newImgHeight > canvasHeight){
posY=imgPos.top  * scaleY -(( y * scaleY) - y);
if(posY > 0){
posY=0;
}
if(posY <  canvasHeight - newImgHeight){
posY=canvasHeight - newImgHeight;
}}
self.updateCursor(newImgWidth, newImgHeight);
$.fancybox.animate($what, {
top:posY,
left:posX,
scaleX:scaleX,
scaleY:scaleY
}, duration||330, function(){
self.isAnimating=false;
});
if(self.SlideShow&&self.SlideShow.isActive){
self.SlideShow.stop();
}},
scaleToFit:function(duration){
var self=this;
var current=self.current;
var $what=current.$content;
var end;
if(!(current.type=='image'&&!current.hasError)||!$what||self.isAnimating){
return;
}
$.fancybox.stop($what);
self.isAnimating=true;
end=self.getFitPos(current);
self.updateCursor(end.width, end.height);
$.fancybox.animate($what, {
top:end.top,
left:end.left,
scaleX:end.width  / $what.width(),
scaleY:end.height / $what.height()
}, duration||330, function(){
self.isAnimating=false;
});
},
getFitPos:function(slide){
var self=this;
var $what=slide.$content;
var imgWidth=slide.width;
var imgHeight=slide.height;
var margin=slide.opts.margin;
var canvasWidth, canvasHeight, minRatio, width, height;
if(!$what||!$what.length||(!imgWidth&&!imgHeight)){
return false;
}
if($.type(margin)==="number"){
margin=[ margin, margin ];
}
if(margin.length==2){
margin=[ margin[0], margin[1], margin[0], margin[1] ];
}
canvasWidth=parseInt(self.$refs.stage.width(), 10)  -(margin[ 1 ] + margin[ 3 ]);
canvasHeight=parseInt(self.$refs.stage.height(), 10) -(margin[ 0 ] + margin[ 2 ]);
minRatio=Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight);
width=Math.floor(minRatio * imgWidth);
height=Math.floor(minRatio * imgHeight);
return {
top:Math.floor(( canvasHeight - height) * 0.5) + margin[ 0 ],
left:Math.floor(( canvasWidth  - width)  * 0.5) + margin[ 3 ],
width:width,
height:height
};},
update:function(){
var self=this;
$.each(self.slides, function(key, slide){
self.updateSlide(slide);
});
},
updateSlide:function(slide, duration){
var self=this,
$what=slide&&slide.$content;
if($what&&(slide.width||slide.height) ){
self.isAnimating=false;
$.fancybox.stop($what);
$.fancybox.setTranslate($what, self.getFitPos(slide) );
if(slide.pos===self.currPos){
self.updateCursor();
}}
slide.$slide.trigger('refresh');
self.trigger('onUpdate', slide);
},
centerSlide:function(slide, duration){
var self=this, canvasWidth, pos;
if(self.current){
canvasWidth=Math.round(slide.$slide.width());
pos=slide.pos - self.current.pos;
$.fancybox.animate(slide.$slide, {
top:0,
left:(pos * canvasWidth) +(pos * slide.opts.gutter),
opacity:1
}, duration===undefined ? 0:duration, null, false);
}},
updateCursor:function(nextWidth, nextHeight){
var self=this;
var isScaledDown;
var $container=self.$refs.container.removeClass('fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut');
if(!self.current||self.isClosing){
return;
}
if(self.isZoomable()){
$container.addClass('fancybox-is-zoomable');
if(nextWidth!==undefined&&nextHeight!==undefined){
isScaledDown=nextWidth < self.current.width&&nextHeight < self.current.height;
}else{
isScaledDown=self.isScaledDown();
}
if(isScaledDown){
$container.addClass('fancybox-can-zoomIn');
}else{
if(self.current.opts.touch){
$container.addClass('fancybox-can-drag');
}else{
$container.addClass('fancybox-can-zoomOut');
}}
}else if(self.current.opts.touch){
$container.addClass('fancybox-can-drag');
}},
isZoomable:function(){
var self=this;
var current=self.current;
var fitPos;
if(!current||self.isClosing){
return;
}
if(current.type==='image'&&current.isLoaded&&!current.hasError &&
(current.opts.clickContent==='zoom'||($.isFunction(current.opts.clickContent)&&current.opts.clickContent(current)==="zoom") )
){
fitPos=self.getFitPos(current);
if(current.width > fitPos.width||current.height > fitPos.height){
return true;
}}
return false;
},
isScaledDown:function(){
var self=this;
var current=self.current;
var $what=current.$content;
var rez=false;
if($what){
rez=$.fancybox.getTranslate($what);
rez=rez.width < current.width||rez.height < current.height;
}
return rez;
},
canPan:function(){
var self=this;
var current=self.current;
var $what=current.$content;
var rez=false;
if($what){
rez=self.getFitPos(current);
rez=Math.abs($what.width() - rez.width) > 1||Math.abs($what.height() - rez.height) > 1;
}
return rez;
},
loadSlide:function(slide){
var self=this, type, $slide;
var ajaxLoad;
if(slide.isLoading){
return;
}
if(slide.isLoaded){
return;
}
slide.isLoading=true;
self.trigger('beforeLoad', slide);
type=slide.type;
$slide=slide.$slide;
$slide
.off('refresh')
.trigger('onReset')
.addClass('fancybox-slide--' +(type||'unknown') )
.addClass(slide.opts.slideClass);
switch(type){
case 'image':
self.setImage(slide);
break;
case 'iframe':
self.setIframe(slide);
break;
case 'html':
self.setContent(slide, slide.src||slide.content);
break;
case 'inline':
if($(slide.src).length){
self.setContent(slide, $(slide.src) );
}else{
self.setError(slide);
}
break;
case 'ajax':
self.showLoading(slide);
ajaxLoad=$.ajax($.extend({}, slide.opts.ajax.settings, {
url:slide.src,
success:function(data, textStatus){
if(textStatus==='success'){
self.setContent(slide, data);
}},
error:function(jqXHR, textStatus){
if(jqXHR&&textStatus!=='abort'){
self.setError(slide);
}}
}));
$slide.one('onReset', function (){
ajaxLoad.abort();
});
break;
case 'video' :
self.setContent(slide,
'<video controls>' +
'<source src="' + slide.src + '" type="' + slide.opts.videoFormat + '">' +
'Your browser doesn\'t support HTML5 video' +
'</video>'
);
break;
default:
self.setError(slide);
break;
}
return true;
},
setImage:function(slide){
var self=this;
var srcset=slide.opts.srcset||slide.opts.image.srcset;
var found, temp, pxRatio, windowWidth;
if(srcset){
pxRatio=window.devicePixelRatio||1;
windowWidth=window.innerWidth  * pxRatio;
temp=srcset.split(',').map(function(el){
var ret={};
el.trim().split(/\s+/).forEach(function(el, i){
var value=parseInt(el.substring(0, el.length - 1), 10);
if(i===0){
return(ret.url=el);
}
if(value){
ret.value=value;
ret.postfix=el[ el.length - 1 ];
}});
return ret;
});
temp.sort(function (a, b){
return a.value - b.value;
});
for(var j=0; j < temp.length; j++){
var el=temp[ j ];
if(( el.postfix==='w'&&el.value >=windowWidth)||(el.postfix==='x'&&el.value >=pxRatio) ){
found=el;
break;
}}
if(!found&&temp.length){
found=temp[ temp.length - 1 ];
}
if(found){
slide.src=found.url;
if(slide.width&&slide.height&&found.postfix=='w'){
slide.height=(slide.width / slide.height) * found.value;
slide.width=found.value;
}}
}
slide.$content=$('<div class="fancybox-image-wrap"></div>')
.addClass('fancybox-is-hidden')
.appendTo(slide.$slide);
if(slide.opts.preload!==false&&slide.opts.width&&slide.opts.height&&(slide.opts.thumb||slide.opts.$thumb) ){
slide.width=slide.opts.width;
slide.height=slide.opts.height;
slide.$ghost=$('<img />')
.one('error', function(){
$(this).remove();
slide.$ghost=null;
self.setBigImage(slide);
})
.one('load', function(){
self.afterLoad(slide);
self.setBigImage(slide);
})
.addClass('fancybox-image')
.appendTo(slide.$content)
.attr('src', slide.opts.thumb||slide.opts.$thumb.attr('src') );
}else{
self.setBigImage(slide);
}},
setBigImage:function(slide){
var self=this;
var $img=$('<img />');
slide.$image=$img
.one('error', function(){
self.setError(slide);
})
.one('load', function(){
clearTimeout(slide.timouts);
slide.timouts=null;
if(self.isClosing){
return;
}
slide.width=slide.opts.width||this.naturalWidth;
slide.height=slide.opts.height||this.naturalHeight;
if(slide.opts.image.srcset){
$img.attr('sizes', '100vw').attr('srcset', slide.opts.image.srcset);
}
self.hideLoading(slide);
if(slide.$ghost){
slide.timouts=setTimeout(function(){
slide.timouts=null;
slide.$ghost.hide();
}, Math.min(300, Math.max(1000, slide.height / 1600) ));
}else{
self.afterLoad(slide);
}})
.addClass('fancybox-image')
.attr('src', slide.src)
.appendTo(slide.$content);
if(( $img[0].complete||$img[0].readyState=="complete")&&$img[0].naturalWidth&&$img[0].naturalHeight){
$img.trigger('load');
}else if($img[0].error){
$img.trigger('error');
}else{
slide.timouts=setTimeout(function(){
if(!$img[0].complete&&!slide.hasError){
self.showLoading(slide);
}}, 100);
}},
setIframe:function(slide){
var self=this,
opts=slide.opts.iframe,
$slide=slide.$slide,
$iframe;
slide.$content=$('<div class="fancybox-content' +(opts.preload ? ' fancybox-is-hidden':'') + '"></div>')
.css(opts.css)
.appendTo($slide);
$iframe=$(opts.tpl.replace(/\{rnd\}/g, new Date().getTime()))
.attr(opts.attr)
.appendTo(slide.$content);
if(opts.preload){
self.showLoading(slide);
$iframe.on('load.fb error.fb', function(e){
this.isReady=1;
slide.$slide.trigger('refresh');
self.afterLoad(slide);
});
$slide.on('refresh.fb', function(){
var $wrap=slide.$content,
frameWidth=opts.css.width,
frameHeight=opts.css.height,
scrollWidth,
$contents,
$body;
if($iframe[0].isReady!==1){
return;
}
try {
$contents=$iframe.contents();
$body=$contents.find('body');
} catch (ignore){}
if($body&&$body.length){
if(frameWidth===undefined){
scrollWidth=$iframe[0].contentWindow.document.documentElement.scrollWidth;
frameWidth=Math.ceil($body.outerWidth(true) +($wrap.width() - scrollWidth) );
frameWidth +=$wrap.outerWidth() - $wrap.innerWidth();
}
if(frameHeight===undefined){
frameHeight=Math.ceil($body.outerHeight(true));
frameHeight +=$wrap.outerHeight() - $wrap.innerHeight();
}
if(frameWidth){
$wrap.width(frameWidth);
}
if(frameHeight){
$wrap.height(frameHeight);
}}
$wrap.removeClass('fancybox-is-hidden');
});
}else{
this.afterLoad(slide);
}
$iframe.attr('src', slide.src);
if(slide.opts.smallBtn===true){
slide.$content.prepend(self.translate(slide, slide.opts.btnTpl.smallBtn) );
}
$slide.one('onReset', function (){
try {
$(this).find('iframe').hide().attr('src', '//about:blank');
} catch(ignore){}
$(this).empty();
slide.isLoaded=false;
});
},
setContent:function(slide, content){
var self=this;
if(self.isClosing){
return;
}
self.hideLoading(slide);
slide.$slide.empty();
if(isQuery(content)&&content.parent().length){
content.parent('.fancybox-slide--inline').trigger('onReset');
slide.$placeholder=$('<div></div>').hide().insertAfter(content);
content.css('display', 'inline-block');
}else if(!slide.hasError){
if($.type(content)==='string'){
content=$('<div>').append($.trim(content) ).contents();
if(content[0].nodeType===3){
content=$('<div>').html(content);
}}
if(slide.opts.filter){
content=$('<div>').html(content).find(slide.opts.filter);
}}
slide.$slide.one('onReset', function (){
$(this).find('video,audio').trigger('pause');
if(slide.$placeholder){
slide.$placeholder.after(content.hide()).remove();
slide.$placeholder=null;
}
if(slide.$smallBtn){
slide.$smallBtn.remove();
slide.$smallBtn=null;
}
if(!slide.hasError){
$(this).empty();
slide.isLoaded=false;
}});
slide.$content=$(content).appendTo(slide.$slide);
this.afterLoad(slide);
},
setError:function(slide){
slide.hasError=true;
slide.$slide.removeClass('fancybox-slide--' + slide.type);
this.setContent(slide, this.translate(slide, slide.opts.errorTpl) );
},
showLoading:function(slide){
var self=this;
slide=slide||self.current;
if(slide&&!slide.$spinner){
slide.$spinner=$(self.opts.spinnerTpl).appendTo(slide.$slide);
}},
hideLoading:function(slide){
var self=this;
slide=slide||self.current;
if(slide&&slide.$spinner){
slide.$spinner.remove();
delete slide.$spinner;
}},
afterLoad:function(slide){
var self=this;
if(self.isClosing){
return;
}
slide.isLoading=false;
slide.isLoaded=true;
self.trigger('afterLoad', slide);
self.hideLoading(slide);
if(slide.opts.smallBtn&&!slide.$smallBtn){
slide.$smallBtn=$(self.translate(slide, slide.opts.btnTpl.smallBtn) ).appendTo(slide.$content.filter('div,form').first());
}
if(slide.opts.protect&&slide.$content&&!slide.hasError){
slide.$content.on('contextmenu.fb', function(e){
if(e.button==2){
e.preventDefault();
}
return true;
});
if(slide.type==='image'){
$('<div class="fancybox-spaceball"></div>').appendTo(slide.$content);
}}
self.revealContent(slide);
},
revealContent:function(slide){
var self=this;
var $slide=slide.$slide;
var effect, effectClassName, duration, opacity, end, start=false;
effect=slide.opts[ self.firstRun ? 'animationEffect':'transitionEffect' ];
duration=slide.opts[ self.firstRun ? 'animationDuration':'transitionDuration' ];
duration=parseInt(slide.forcedDuration===undefined ? duration:slide.forcedDuration, 10);
if(slide.isMoved||slide.pos!==self.currPos||!duration){
effect=false;
}
if(effect==='zoom'&&!(slide.pos===self.currPos&&duration&&slide.type==='image'&&!slide.hasError&&(start=self.getThumbPos(slide) )) ){
effect='fade';
}
if(effect==='zoom'){
end=self.getFitPos(slide);
end.scaleX=end.width  / start.width;
end.scaleY=end.height / start.height;
delete end.width;
delete end.height;
opacity=slide.opts.zoomOpacity;
if(opacity=='auto'){
opacity=Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;
}
if(opacity){
start.opacity=0.1;
end.opacity=1;
}
$.fancybox.setTranslate(slide.$content.removeClass('fancybox-is-hidden'), start);
forceRedraw(slide.$content);
$.fancybox.animate(slide.$content, end, duration, function(){
self.complete();
});
return;
}
self.updateSlide(slide);
if(!effect){
forceRedraw($slide);
slide.$content.removeClass('fancybox-is-hidden');
if(slide.pos===self.currPos){
self.complete();
}
return;
}
$.fancybox.stop($slide);
effectClassName='fancybox-animated fancybox-slide--' +(slide.pos >=self.prevPos ? 'next':'previous') + ' fancybox-fx-' + effect;
$slide.removeAttr('style').removeClass('fancybox-slide--current fancybox-slide--next fancybox-slide--previous').addClass(effectClassName);
slide.$content.removeClass('fancybox-is-hidden');
forceRedraw($slide);
$.fancybox.animate($slide, 'fancybox-slide--current', duration, function(e){
$slide.removeClass(effectClassName).removeAttr('style');
if(slide.pos===self.currPos){
self.complete();
}}, true);
},
getThumbPos:function(slide){
var self=this;
var rez=false;
var isElementVisible=function($el){
var element=$el[0];
var elementRect=element.getBoundingClientRect();
var parentRects=[];
var visibleInAllParents;
while(element.parentElement!==null){
if($(element.parentElement).css('overflow')==='hidden'||$(element.parentElement).css('overflow')==='auto'){
parentRects.push(element.parentElement.getBoundingClientRect());
}
element=element.parentElement;
}
visibleInAllParents=parentRects.every(function(parentRect){
var visiblePixelX=Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left);
var visiblePixelY=Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top);
return visiblePixelX > 0&&visiblePixelY > 0;
});
return visibleInAllParents &&
elementRect.bottom > 0&&elementRect.right > 0 &&
elementRect.left < $(window).width()&&elementRect.top < $(window).height();
};
var $thumb=slide.opts.$thumb;
var thumbPos=$thumb ? $thumb.offset():0;
var slidePos;
if(thumbPos&&$thumb[0].ownerDocument===document&&isElementVisible($thumb) ){
slidePos=self.$refs.stage.offset();
rez={
top:thumbPos.top  - slidePos.top  + parseFloat($thumb.css("border-top-width")||0),
left:thumbPos.left - slidePos.left + parseFloat($thumb.css("border-left-width")||0),
width:$thumb.width(),
height:$thumb.height(),
scaleX:1,
scaleY:1
};}
return rez;
},
complete:function(){
var self=this,
current=self.current,
slides={},
promise;
if(current.isMoved||!current.isLoaded||current.isComplete){
return;
}
current.isComplete=true;
current.$slide.siblings().trigger('onReset');
self.preload('inline');
forceRedraw(current.$slide);
current.$slide.addClass('fancybox-slide--complete');
$.each(self.slides, function(key, slide){
if(slide.pos >=self.currPos - 1&&slide.pos <=self.currPos + 1){
slides[ slide.pos ]=slide;
}else if(slide){
$.fancybox.stop(slide.$slide);
slide.$slide.off().remove();
}});
self.slides=slides;
self.updateCursor();
self.trigger('afterShow');
current.$slide.find('video,audio').first().trigger('play');
if($(document.activeElement).is('[disabled]')||(current.opts.autoFocus&&!(current.type=='image'||current.type==='iframe') )){
self.focus();
}},
preload:function(type){
var self=this,
next=self.slides[ self.currPos + 1 ],
prev=self.slides[ self.currPos - 1 ];
if(next&&next.type===type){
self.loadSlide(next);
}
if(prev&&prev.type===type){
self.loadSlide(prev);
}},
focus:function(){
var current=this.current;
var $el;
if(this.isClosing){
return;
}
if(current&&current.isComplete){
$el=current.$slide.find('input[autofocus]:enabled:visible:first');
if(!$el.length){
$el=current.$slide.find('button,:input,[tabindex],a').filter(':enabled:visible:first');
}}
$el=$el&&$el.length ? $el:this.$refs.container;
$el.focus();
},
activate:function (){
var self=this;
$('.fancybox-container').each(function (){
var instance=$(this).data('FancyBox');
if(instance&&instance.id!==self.id&&!instance.isClosing){
instance.trigger('onDeactivate');
instance.removeEvents();
instance.isVisible=false;
}});
self.isVisible=true;
if(self.current||self.isIdle){
self.update();
self.updateControls();
}
self.trigger('onActivate');
self.addEvents();
},
close:function(e, d){
var self=this;
var current=self.current;
var effect, duration;
var $what, opacity, start, end;
var done=function(){
self.cleanUp(e);
};
if(self.isClosing){
return false;
}
self.isClosing=true;
if(self.trigger('beforeClose', e)===false){
self.isClosing=false;
requestAFrame(function(){
self.update();
});
return false;
}
self.removeEvents();
if(current.timouts){
clearTimeout(current.timouts);
}
$what=current.$content;
effect=current.opts.animationEffect;
duration=$.isNumeric(d) ? d:(effect ? current.opts.animationDuration:0);
current.$slide.off(transitionEnd).removeClass('fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated');
current.$slide.siblings().trigger('onReset').remove();
if(duration){
self.$refs.container.removeClass('fancybox-is-open').addClass('fancybox-is-closing');
}
self.hideLoading(current);
self.hideControls();
self.updateCursor();
if(effect==='zoom'&&!(e!==true&&$what&&duration&&current.type==='image'&&!current.hasError&&(end=self.getThumbPos(current) )) ){
effect='fade';
}
if(effect==='zoom'){
$.fancybox.stop($what);
start=$.fancybox.getTranslate($what);
start.width=start.width  * start.scaleX;
start.height=start.height * start.scaleY;
opacity=current.opts.zoomOpacity;
if(opacity=='auto'){
opacity=Math.abs(current.width / current.height - end.width / end.height) > 0.1;
}
if(opacity){
end.opacity=0;
}
start.scaleX=start.width  / end.width;
start.scaleY=start.height / end.height;
start.width=end.width;
start.height=end.height;
$.fancybox.setTranslate(current.$content, start);
forceRedraw(current.$content);
$.fancybox.animate(current.$content, end, duration, done);
return true;
}
if(effect&&duration){
if(e===true){
setTimeout(done, duration);
}else{
$.fancybox.animate(current.$slide.removeClass('fancybox-slide--current'), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done);
}}else{
done();
}
return true;
},
cleanUp:function(e){
var self=this,
$body=$('body'),
instance,
offset;
self.current.$slide.trigger('onReset');
self.$refs.container.empty().remove();
self.trigger('afterClose', e);
if(self.$lastFocus&&!!self.current.opts.backFocus){
self.$lastFocus.focus();
}
self.current=null;
instance=$.fancybox.getInstance();
if(instance){
instance.activate();
}else{
$W.scrollTop(self.scrollTop).scrollLeft(self.scrollLeft);
$body.removeClass('fancybox-active compensate-for-scrollbar');
if($body.hasClass('fancybox-iosfix') ){
offset=parseInt(document.body.style.top, 10);
$body.removeClass('fancybox-iosfix').css('top', '').scrollTop(offset * -1);
}
$('#fancybox-style-noscroll').remove();
}},
trigger:function(name, slide){
var args=Array.prototype.slice.call(arguments, 1),
self=this,
obj=slide&&slide.opts ? slide:self.current,
rez;
if(obj){
args.unshift(obj);
}else{
obj=self;
}
args.unshift(self);
if($.isFunction(obj.opts[ name ]) ){
rez=obj.opts[ name ].apply(obj, args);
}
if(rez===false){
return rez;
}
if(name==='afterClose'||!self.$refs){
$D.trigger(name + '.fb', args);
}else{
self.$refs.container.trigger(name + '.fb', args);
}},
updateControls:function(force){
var self=this;
var current=self.current,
index=current.index,
caption=current.opts.caption,
$container=self.$refs.container,
$caption=self.$refs.caption;
current.$slide.trigger('refresh');
self.$caption=caption&&caption.length ? $caption.html(caption):null;
if(!self.isHiddenControls&&!self.isIdle){
self.showControls();
}
$container.find('[data-fancybox-count]').html(self.group.length);
$container.find('[data-fancybox-index]').html(index + 1);
$container.find('[data-fancybox-prev]').prop('disabled',(!current.opts.loop&&index <=0) );
$container.find('[data-fancybox-next]').prop('disabled',(!current.opts.loop&&index >=self.group.length - 1) );
if(current.type==='image'){
$container.find('[data-fancybox-download]').attr('href', current.opts.image.src||current.src).show();
}else{
$container.find('[data-fancybox-download],[data-fancybox-zoom]').hide();
}},
hideControls:function (){
this.isHiddenControls=true;
this.$refs.container.removeClass('fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav');
},
showControls:function(){
var self=this;
var opts=self.current ? self.current.opts:self.opts;
var $container=self.$refs.container;
self.isHiddenControls=false;
self.idleSecondsCounter=0;
$container
.toggleClass('fancybox-show-toolbar', !!(opts.toolbar&&opts.buttons) )
.toggleClass('fancybox-show-infobar', !!(opts.infobar&&self.group.length > 1) )
.toggleClass('fancybox-show-nav',     !!(opts.arrows&&self.group.length > 1) )
.toggleClass('fancybox-is-modal',     !!opts.modal);
if(self.$caption){
$container.addClass('fancybox-show-caption ');
}else{
$container.removeClass('fancybox-show-caption');
}},
toggleControls:function(){
if(this.isHiddenControls){
this.showControls();
}else{
this.hideControls();
}},
});
$.fancybox={
version:"3.2.10",
defaults:defaults,
getInstance:function(command){
var instance=$('.fancybox-container:not(".fancybox-is-closing"):last').data('FancyBox');
var args=Array.prototype.slice.call(arguments, 1);
if(instance instanceof FancyBox){
if($.type(command)==='string'){
instance[ command ].apply(instance, args);
}else if($.type(command)==='function'){
command.apply(instance, args);
}
return instance;
}
return false;
},
open:function(items, opts, index){
return new FancyBox(items, opts, index);
},
close:function(all){
var instance=this.getInstance();
if(instance){
instance.close();
if(all===true){
this.close();
}}
},
destroy:function(){
this.close(true);
$D.off('click.fb-start');
},
isMobile:document.createTouch!==undefined&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
use3d:(function(){
var div=document.createElement('div');
return window.getComputedStyle&&window.getComputedStyle(div).getPropertyValue('transform')&&!(document.documentMode&&document.documentMode < 11);
}()),
getTranslate:function($el){
var matrix;
if(!$el||!$el.length){
return false;
}
matrix=$el.eq(0).css('transform');
if(matrix&&matrix.indexOf('matrix')!==-1){
matrix=matrix.split('(')[1];
matrix=matrix.split(')')[0];
matrix=matrix.split(',');
}else{
matrix=[];
}
if(matrix.length){
if(matrix.length > 10){
matrix=[ matrix[13], matrix[12], matrix[0], matrix[5] ];
}else{
matrix=[ matrix[5], matrix[4], matrix[0], matrix[3]];
}
matrix=matrix.map(parseFloat);
}else{
matrix=[ 0, 0, 1, 1 ];
var transRegex=/\.*translate\((.*)px,(.*)px\)/i;
var transRez=transRegex.exec($el.eq(0).attr('style'));
if(transRez){
matrix[ 0 ]=parseFloat(transRez[2]);
matrix[ 1 ]=parseFloat(transRez[1]);
}}
return {
top:matrix[ 0 ],
left:matrix[ 1 ],
scaleX:matrix[ 2 ],
scaleY:matrix[ 3 ],
opacity:parseFloat($el.css('opacity')),
width:$el.width(),
height:$el.height()
};},
setTranslate:function($el, props){
var str='';
var css={};
if(!$el||!props){
return;
}
if(props.left!==undefined||props.top!==undefined){
str=(props.left===undefined ? $el.position().left:props.left)  + 'px, ' +(props.top===undefined ? $el.position().top:props.top) + 'px';
if(this.use3d){
str='translate3d(' + str + ', 0px)';
}else{
str='translate(' + str + ')';
}}
if(props.scaleX!==undefined&&props.scaleY!==undefined){
str=(str.length ? str + ' ':'') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')';
}
if(str.length){
css.transform=str;
}
if(props.opacity!==undefined){
css.opacity=props.opacity;
}
if(props.width!==undefined){
css.width=props.width;
}
if(props.height!==undefined){
css.height=props.height;
}
return $el.css(css);
},
animate:function($el, to, duration, callback, leaveAnimationName){
if($.isFunction(duration) ){
callback=duration;
duration=null;
}
if(!$.isPlainObject(to) ){
$el.removeAttr('style');
}
$el.on(transitionEnd, function(e){
if(e&&e.originalEvent&&(!$el.is(e.originalEvent.target)||e.originalEvent.propertyName=='z-index') ){
return;
}
$.fancybox.stop($el);
if($.isPlainObject(to) ){
if(to.scaleX!==undefined&&to.scaleY!==undefined){
$el.css('transition-duration', '');
to.width=Math.round($el.width()  * to.scaleX);
to.height=Math.round($el.height() * to.scaleY);
to.scaleX=1;
to.scaleY=1;
$.fancybox.setTranslate($el, to);
}
if(leaveAnimationName===false){
$el.removeAttr('style');
}}else if(leaveAnimationName!==true){
$el.removeClass(to);
}
if($.isFunction(callback) ){
callback(e);
}});
if($.isNumeric(duration) ){
$el.css('transition-duration', duration + 'ms');
}
if($.isPlainObject(to) ){
$.fancybox.setTranslate($el, to);
}else{
$el.addClass(to);
}
if(to.scaleX&&$el.hasClass('fancybox-image-wrap') ){
$el.parent().addClass('fancybox-is-scaling');
}
$el.data("timer", setTimeout(function(){
$el.trigger('transitionend');
}, duration + 16));
},
stop:function($el){
clearTimeout($el.data("timer"));
$el.off('transitionend').css('transition-duration', '');
if($el.hasClass('fancybox-image-wrap') ){
$el.parent().removeClass('fancybox-is-scaling');
}}
};
function _run(e){
var $target=$(e.currentTarget),
opts=e.data ? e.data.options:{},
value=$target.attr('data-fancybox')||'',
index=0,
items=[];
if(e.isDefaultPrevented()){
return;
}
e.preventDefault();
if(value){
items=opts.selector ? $(opts.selector):(e.data ? e.data.items:[]);
items=items.length ? items.filter('[data-fancybox="' + value + '"]'):$('[data-fancybox="' + value + '"]');
index=items.index($target);
if(index < 0){
index=0;
}}else{
items=[ $target ];
}
$.fancybox.open(items, opts, index);
}
$.fn.fancybox=function (options){
var selector;
options=options||{};
selector=options.selector||false;
if(selector){
$('body').off('click.fb-start', selector).on('click.fb-start', selector, {
options:options
}, _run);
}else{
this.off('click.fb-start').on('click.fb-start', {
items:this,
options:options
}, _run);
}
return this;
};
$D.on('click.fb-start', '[data-fancybox]', _run);
}(window, document, window.jQuery||jQuery));
;(function ($){
'use strict';
var format=function (url, rez, params){
if(!url){
return;
}
params=params||'';
if($.type(params)==="object"){
params=$.param(params, true);
}
$.each(rez, function (key, value){
url=url.replace('$' + key, value||'');
});
if(params.length){
url +=(url.indexOf('?') > 0 ? '&':'?') + params;
}
return url;
};
var defaults={
youtube:{
matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,
params:{
autoplay:1,
autohide:1,
fs:1,
rel:0,
hd:1,
wmode:'transparent',
enablejsapi:1,
html5:1
},
paramPlace:8,
type:'iframe',
url:'//www.youtube.com/embed/$4',
thumb:'//img.youtube.com/vi/$4/hqdefault.jpg'
},
vimeo:{
matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,
params:{
autoplay:1,
hd:1,
show_title:1,
show_byline:1,
show_portrait:0,
fullscreen:1,
api:1
},
paramPlace:3,
type:'iframe',
url:'//player.vimeo.com/video/$2'
},
metacafe:{
matcher:/metacafe.com\/watch\/(\d+)\/(.*)?/,
type:'iframe',
url:'//www.metacafe.com/embed/$1/?ap=1'
},
dailymotion:{
matcher:/dailymotion.com\/video\/(.*)\/?(.*)/,
params:{
additionalInfos:0,
autoStart:1
},
type:'iframe',
url:'//www.dailymotion.com/embed/video/$1'
},
vine:{
matcher:/vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/,
type:'iframe',
url:'//vine.co/v/$1/embed/simple'
},
instagram:{
matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
type:'image',
url:'//$1/p/$2/media/?size=l'
},
gmap_place:{
matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,
type:'iframe',
url:function (rez){
return '//maps.google.' + rez[2] + '/?ll=' +(rez[9] ? rez[9] + '&z=' + Math.floor(rez[10]) +(rez[12] ? rez[12].replace(/^\//, "&"):''):rez[12]) + '&output=' +(rez[12]&&rez[12].indexOf('layer=c') > 0 ? 'svembed':'embed');
}},
gmap_search:{
matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,
type:'iframe',
url:function (rez){
return '//maps.google.' + rez[2] + '/maps?q=' + rez[5].replace('query=', 'q=').replace('api=1', '') + '&output=embed';
}}
};
$(document).on('objectNeedsType.fb', function (e, instance, item){
var url=item.src||'',
type=false,
media,
thumb,
rez,
params,
urlParams,
paramObj,
provider;
media=$.extend(true, {}, defaults, item.opts.media);
$.each(media, function(providerName, providerOpts){
rez=url.match(providerOpts.matcher);
if(!rez){
return;
}
type=providerOpts.type;
paramObj={};
if(providerOpts.paramPlace&&rez[ providerOpts.paramPlace ]){
urlParams=rez[ providerOpts.paramPlace ];
if(urlParams[ 0 ]=='?'){
urlParams=urlParams.substring(1);
}
urlParams=urlParams.split('&');
for(var m=0; m < urlParams.length; ++m){
var p=urlParams[ m ].split('=', 2);
if(p.length==2){
paramObj[ p[0] ]=decodeURIComponent(p[1].replace(/\+/g, " "));
}}
}
params=$.extend(true, {}, providerOpts.params, item.opts[ providerName ], paramObj);
url=$.type(providerOpts.url)==="function" ? providerOpts.url.call(this, rez, params, item):format(providerOpts.url, rez, params);
thumb=$.type(providerOpts.thumb)==="function" ? providerOpts.thumb.call(this, rez, params, item):format(providerOpts.thumb, rez);
if(providerName==='vimeo'){
url=url.replace('&%23', '#');
}
return false;
});
if(type){
item.src=url;
item.type=type;
if(!item.opts.thumb&&!(item.opts.$thumb&&item.opts.$thumb.length) ){
item.opts.thumb=thumb;
}
if(type==='iframe'){
$.extend(true, item.opts, {
iframe:{
preload:false,
attr:{
scrolling:"no"
}}
});
item.contentProvider=provider;
item.opts.slideClass +=' fancybox-slide--' +(provider=='gmap_place'||provider=='gmap_search' ? 'map':'video');
}}else if(url){
item.type=item.opts.defaultType;
}});
}(window.jQuery||jQuery));
;(function (window, document, $){
'use strict';
var requestAFrame=(function (){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
function (callback){
return window.setTimeout(callback, 1000 / 60);
};})();
var cancelAFrame=(function (){
return window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
window.oCancelAnimationFrame ||
function (id){
window.clearTimeout(id);
};})();
var pointers=function(e){
var result=[];
e=e.originalEvent||e || window.e;
e=e.touches&&e.touches.length ? e.touches:(e.changedTouches&&e.changedTouches.length ? e.changedTouches:[ e ]);
for(var key in e){
if(e[ key ].pageX){
result.push({ x:e[ key ].pageX, y:e[ key ].pageY });
}else if(e[ key ].clientX){
result.push({ x:e[ key ].clientX, y:e[ key ].clientY });
}}
return result;
};
var distance=function(point2, point1, what){
if(!point1||!point2){
return 0;
}
if(what==='x'){
return point2.x - point1.x;
}else if(what==='y'){
return point2.y - point1.y;
}
return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2) );
};
var isClickable=function($el){
if($el.is('a,area,button,[role="button"],input,label,select,summary,textarea')||$.isFunction($el.get(0).onclick)||$el.data('selectable')){
return true;
}
for(var i=0, atts=$el[0].attributes, n=atts.length; i < n; i++){
if(atts[i].nodeName.substr(0, 14)==='data-fancybox-'){
return true;
}}
return false;
};
var hasScrollbars=function(el){
var overflowY=window.getComputedStyle(el)['overflow-y'];
var overflowX=window.getComputedStyle(el)['overflow-x'];
var vertical=(overflowY==='scroll'||overflowY==='auto')&&el.scrollHeight > el.clientHeight;
var horizontal=(overflowX==='scroll'||overflowX==='auto')&&el.scrollWidth > el.clientWidth;
return vertical||horizontal;
};
var isScrollable=function($el){
var rez=false;
while(true){
rez=hasScrollbars($el.get(0));
if(rez){
break;
}
$el=$el.parent();
if(!$el.length||$el.hasClass('fancybox-stage')||$el.is('body') ){
break;
}}
return rez;
};
var Guestures=function(instance){
var self=this;
self.instance=instance;
self.$bg=instance.$refs.bg;
self.$stage=instance.$refs.stage;
self.$container=instance.$refs.container;
self.destroy();
self.$container.on('touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart'));
};
Guestures.prototype.destroy=function(){
this.$container.off('.fb.touch');
};
Guestures.prototype.ontouchstart=function(e){
var self=this;
var $target=$(e.target);
var instance=self.instance;
var current=instance.current;
var $content=current.$content;
var isTouchDevice=(e.type=='touchstart');
if(isTouchDevice){
self.$container.off('mousedown.fb.touch');
}
if(e.originalEvent&&e.originalEvent.button==2){
return;
}
if(!$target.length||isClickable($target)||isClickable($target.parent()) ){
return;
}
if(!$target.is('img')&&e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left){
return;
}
if(!current||self.instance.isAnimating||self.instance.isClosing){
e.stopPropagation();
e.preventDefault();
return;
}
self.realPoints=self.startPoints=pointers(e);
if(!self.startPoints){
return;
}
e.stopPropagation();
self.startEvent=e;
self.canTap=true;
self.$target=$target;
self.$content=$content;
self.opts=current.opts.touch;
self.isPanning=false;
self.isSwiping=false;
self.isZooming=false;
self.isScrolling=false;
self.sliderStartPos=self.sliderLastPos||{ top: 0, left: 0 };
self.contentStartPos=$.fancybox.getTranslate(self.$content);
self.contentLastPos=null;
self.startTime=new Date().getTime();
self.distanceX=self.distanceY=self.distance=0;
self.canvasWidth=Math.round(current.$slide[0].clientWidth);
self.canvasHeight=Math.round(current.$slide[0].clientHeight);
$(document)
.off('.fb.touch')
.on(isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch':'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, "ontouchend"))
.on(isTouchDevice ? 'touchmove.fb.touch':'mousemove.fb.touch', $.proxy(self, "ontouchmove"));
if($.fancybox.isMobile){
document.addEventListener('scroll', self.onscroll, true);
}
if(!(self.opts||instance.canPan())||!($target.is(self.$stage)||self.$stage.find($target).length) ){
if($target.is('img')){
e.preventDefault();
}
return;
}
if(!($.fancybox.isMobile&&(isScrollable($target)||isScrollable($target.parent()) )) ){
e.preventDefault();
}
if(self.startPoints.length===1){
if(current.type==='image'&&(self.contentStartPos.width > self.canvasWidth + 1||self.contentStartPos.height > self.canvasHeight + 1) ){
$.fancybox.stop(self.$content);
self.$content.css('transition-duration', '');
self.isPanning=true;
}else{
self.isSwiping=true;
}
self.$container.addClass('fancybox-controls--isGrabbing');
}
if(self.startPoints.length===2&&!instance.isAnimating&&!current.hasError&&current.type==='image'&&(current.isLoaded||current.$ghost) ){
self.canTap=false;
self.isSwiping=false;
self.isPanning=false;
self.isZooming=true;
$.fancybox.stop(self.$content);
self.$content.css('transition-duration', '');
self.centerPointStartX=(( self.startPoints[0].x + self.startPoints[1].x) * 0.5) - $(window).scrollLeft();
self.centerPointStartY=(( self.startPoints[0].y + self.startPoints[1].y) * 0.5) - $(window).scrollTop();
self.percentageOfImageAtPinchPointX=(self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;
self.percentageOfImageAtPinchPointY=(self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;
self.startDistanceBetweenFingers=distance(self.startPoints[0], self.startPoints[1]);
}};
Guestures.prototype.onscroll=function(e){
self.isScrolling=true;
};
Guestures.prototype.ontouchmove=function(e){
var self=this,
$target=$(e.target);
if(self.isScrolling||!($target.is(self.$stage)||self.$stage.find($target).length) ){
self.canTap=false;
return;
}
self.newPoints=pointers(e);
if(!(self.opts||self.instance.canPan())||!self.newPoints||!self.newPoints.length){
return;
}
if(!(self.isSwiping&&self.isSwiping===true)){
e.preventDefault();
}
self.distanceX=distance(self.newPoints[0], self.startPoints[0], 'x');
self.distanceY=distance(self.newPoints[0], self.startPoints[0], 'y');
self.distance=distance(self.newPoints[0], self.startPoints[0])
if(self.distance > 0){
if(self.isSwiping){
self.onSwipe(e);
}else if(self.isPanning){
self.onPan();
}else if(self.isZooming){
self.onZoom();
}}
};
Guestures.prototype.onSwipe=function(e){
var self=this,
swiping=self.isSwiping,
left=self.sliderStartPos.left||0,
angle;
if(swiping===true){
if(Math.abs(self.distance) > 10){
self.canTap=false;
if(self.instance.group.length < 2&&self.opts.vertical){
self.isSwiping='y';
}else if(self.instance.isDragging||self.opts.vertical===false||(self.opts.vertical==='auto'&&$(window).width() > 800) ){
self.isSwiping='x';
}else{
angle=Math.abs(Math.atan2(self.distanceY, self.distanceX) * 180 / Math.PI);
self.isSwiping=(angle > 45&&angle < 135) ? 'y':'x';
}
self.canTap=false;
if(self.isSwiping==='y'&&$.fancybox.isMobile&&(isScrollable(self.$target)||isScrollable(self.$target.parent()) )){
self.isScrolling=true;
return;
}
self.instance.isDragging=self.isSwiping;
self.startPoints=self.newPoints;
$.each(self.instance.slides, function(index, slide){
$.fancybox.stop(slide.$slide);
slide.$slide.css('transition-duration', '');
slide.inTransition=false;
if(slide.pos===self.instance.current.pos){
self.sliderStartPos.left=$.fancybox.getTranslate(slide.$slide).left;
}});
if(self.instance.SlideShow&&self.instance.SlideShow.isActive){
self.instance.SlideShow.stop();
}}
return;
}
if(swiping=='x'){
if(self.distanceX > 0&&(self.instance.group.length < 2||(self.instance.current.index===0&&!self.instance.current.opts.loop) )){
left=left + Math.pow(self.distanceX, 0.8);
}else if(self.distanceX < 0&&(self.instance.group.length < 2||(self.instance.current.index===self.instance.group.length - 1&&!self.instance.current.opts.loop) )){
left=left - Math.pow(-self.distanceX, 0.8);
}else{
left=left + self.distanceX;
}}
self.sliderLastPos={
top:swiping=='x' ? 0:self.sliderStartPos.top + self.distanceY,
left:left
};
if(self.requestId){
cancelAFrame(self.requestId);
self.requestId=null;
}
self.requestId=requestAFrame(function(){
if(self.sliderLastPos){
$.each(self.instance.slides, function(index, slide){
var pos=slide.pos - self.instance.currPos;
$.fancybox.setTranslate(slide.$slide, {
top:self.sliderLastPos.top,
left:self.sliderLastPos.left +(pos * self.canvasWidth) +(pos * slide.opts.gutter)
});
});
self.$container.addClass('fancybox-is-sliding');
}});
};
Guestures.prototype.onPan=function(){
var self=this;
if(distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10:5)){
self.startPoints=self.newPoints;
return;
}
self.canTap=false;
self.contentLastPos=self.limitMovement();
if(self.requestId){
cancelAFrame(self.requestId);
self.requestId=null;
}
self.requestId=requestAFrame(function(){
$.fancybox.setTranslate(self.$content, self.contentLastPos);
});
};
Guestures.prototype.limitMovement=function(){
var self=this;
var canvasWidth=self.canvasWidth;
var canvasHeight=self.canvasHeight;
var distanceX=self.distanceX;
var distanceY=self.distanceY;
var contentStartPos=self.contentStartPos;
var currentOffsetX=contentStartPos.left;
var currentOffsetY=contentStartPos.top;
var currentWidth=contentStartPos.width;
var currentHeight=contentStartPos.height;
var minTranslateX, minTranslateY,
maxTranslateX, maxTranslateY,
newOffsetX, newOffsetY;
if(currentWidth > canvasWidth){
newOffsetX=currentOffsetX + distanceX;
}else{
newOffsetX=currentOffsetX;
}
newOffsetY=currentOffsetY + distanceY;
minTranslateX=Math.max(0, canvasWidth  * 0.5 - currentWidth  * 0.5);
minTranslateY=Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);
maxTranslateX=Math.min(canvasWidth  - currentWidth,  canvasWidth  * 0.5 - currentWidth  * 0.5);
maxTranslateY=Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);
if(currentWidth > canvasWidth){
if(distanceX > 0&&newOffsetX > minTranslateX){
newOffsetX=minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8)||0;
}
if(distanceX < 0&&newOffsetX < maxTranslateX){
newOffsetX=maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8)||0;
}}
if(currentHeight > canvasHeight){
if(distanceY > 0&&newOffsetY > minTranslateY){
newOffsetY=minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8)||0;
}
if(distanceY < 0&&newOffsetY < maxTranslateY){
newOffsetY=maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8)||0;
}}
return {
top:newOffsetY,
left:newOffsetX,
scaleX:contentStartPos.scaleX,
scaleY:contentStartPos.scaleY
};};
Guestures.prototype.limitPosition=function(newOffsetX, newOffsetY, newWidth, newHeight){
var self=this;
var canvasWidth=self.canvasWidth;
var canvasHeight=self.canvasHeight;
if(newWidth > canvasWidth){
newOffsetX=newOffsetX > 0 ? 0:newOffsetX;
newOffsetX=newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth:newOffsetX;
}else{
newOffsetX=Math.max(0, canvasWidth / 2 - newWidth / 2);
}
if(newHeight > canvasHeight){
newOffsetY=newOffsetY > 0 ? 0:newOffsetY;
newOffsetY=newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight:newOffsetY;
}else{
newOffsetY=Math.max(0, canvasHeight / 2 - newHeight / 2);
}
return {
top:newOffsetY,
left:newOffsetX
};};
Guestures.prototype.onZoom=function(){
var self=this;
var currentWidth=self.contentStartPos.width;
var currentHeight=self.contentStartPos.height;
var currentOffsetX=self.contentStartPos.left;
var currentOffsetY=self.contentStartPos.top;
var endDistanceBetweenFingers=distance(self.newPoints[0], self.newPoints[1]);
var pinchRatio=endDistanceBetweenFingers / self.startDistanceBetweenFingers;
var newWidth=Math.floor(currentWidth  * pinchRatio);
var newHeight=Math.floor(currentHeight * pinchRatio);
var translateFromZoomingX=(currentWidth  - newWidth)  * self.percentageOfImageAtPinchPointX;
var translateFromZoomingY=(currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;
var centerPointEndX=((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft();
var centerPointEndY=((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop();
var translateFromTranslatingX=centerPointEndX - self.centerPointStartX;
var translateFromTranslatingY=centerPointEndY - self.centerPointStartY;
var newOffsetX=currentOffsetX +(translateFromZoomingX + translateFromTranslatingX);
var newOffsetY=currentOffsetY +(translateFromZoomingY + translateFromTranslatingY);
var newPos={
top:newOffsetY,
left:newOffsetX,
scaleX:self.contentStartPos.scaleX * pinchRatio,
scaleY:self.contentStartPos.scaleY * pinchRatio
};
self.canTap=false;
self.newWidth=newWidth;
self.newHeight=newHeight;
self.contentLastPos=newPos;
if(self.requestId){
cancelAFrame(self.requestId);
self.requestId=null;
}
self.requestId=requestAFrame(function(){
$.fancybox.setTranslate(self.$content, self.contentLastPos);
});
};
Guestures.prototype.ontouchend=function(e){
var self=this;
var dMs=Math.max((new Date().getTime()) - self.startTime, 1);
var swiping=self.isSwiping;
var panning=self.isPanning;
var zooming=self.isZooming;
var scrolling=self.isScrolling;
self.endPoints=pointers(e);
self.$container.removeClass('fancybox-controls--isGrabbing');
$(document).off('.fb.touch');
document.removeEventListener('scroll', self.onscroll, true);
if(self.requestId){
cancelAFrame(self.requestId);
self.requestId=null;
}
self.isSwiping=false;
self.isPanning=false;
self.isZooming=false;
self.isScrolling=false;
self.instance.isDragging=false;
if(self.canTap){
return self.onTap(e);
}
self.speed=366;
self.velocityX=self.distanceX / dMs * 0.5;
self.velocityY=self.distanceY / dMs * 0.5;
self.speedX=Math.max(self.speed * 0.5, Math.min(self.speed * 1.5,(1 / Math.abs(self.velocityX) ) * self.speed) );
if(panning){
self.endPanning();
}else if(zooming){
self.endZooming();
}else{
self.endSwiping(swiping, scrolling);
}
return;
};
Guestures.prototype.endSwiping=function(swiping, scrolling){
var self=this,
ret=false,
len=self.instance.group.length;
self.sliderLastPos=null;
if(swiping=='y'&&!scrolling&&Math.abs(self.distanceY) > 50){
$.fancybox.animate(self.instance.current.$slide, {
top:self.sliderStartPos.top + self.distanceY +(self.velocityY * 150),
opacity:0
}, 150);
ret=self.instance.close(true, 300);
}else if(swiping=='x'&&self.distanceX > 50&&len > 1){
ret=self.instance.previous(self.speedX);
}else if(swiping=='x'&&self.distanceX < -50&&len > 1){
ret=self.instance.next(self.speedX);
}
if(ret===false&&(swiping=='x'||swiping=='y') ){
if(scrolling||len < 2){
self.instance.centerSlide(self.instance.current, 150);
}else{
self.instance.jumpTo(self.instance.current.index);
}}
self.$container.removeClass('fancybox-is-sliding');
};
Guestures.prototype.endPanning=function(){
var self=this;
var newOffsetX, newOffsetY, newPos;
if(!self.contentLastPos){
return;
}
if(self.opts.momentum===false){
newOffsetX=self.contentLastPos.left;
newOffsetY=self.contentLastPos.top;
}else{
newOffsetX=self.contentLastPos.left +(self.velocityX * self.speed);
newOffsetY=self.contentLastPos.top  +(self.velocityY * self.speed);
}
newPos=self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);
newPos.width=self.contentStartPos.width;
newPos.height=self.contentStartPos.height;
$.fancybox.animate(self.$content, newPos, 330);
};
Guestures.prototype.endZooming=function(){
var self=this;
var current=self.instance.current;
var newOffsetX, newOffsetY, newPos, reset;
var newWidth=self.newWidth;
var newHeight=self.newHeight;
if(!self.contentLastPos){
return;
}
newOffsetX=self.contentLastPos.left;
newOffsetY=self.contentLastPos.top;
reset={
top:newOffsetY,
left:newOffsetX,
width:newWidth,
height:newHeight,
scaleX:1,
scaleY:1
};
$.fancybox.setTranslate(self.$content, reset);
if(newWidth < self.canvasWidth&&newHeight < self.canvasHeight){
self.instance.scaleToFit(150);
}else if(newWidth > current.width||newHeight > current.height){
self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);
}else{
newPos=self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);
$.fancybox.setTranslate(self.content, $.fancybox.getTranslate(self.$content) );
$.fancybox.animate(self.$content, newPos, 150);
}};
Guestures.prototype.onTap=function(e){
var self=this;
var $target=$(e.target);
var instance=self.instance;
var current=instance.current;
var endPoints=(e&&pointers(e) )||self.startPoints;
var tapX=endPoints[0] ? endPoints[0].x - self.$stage.offset().left:0;
var tapY=endPoints[0] ? endPoints[0].y - self.$stage.offset().top:0;
var where;
var process=function(prefix){
var action=current.opts[ prefix ];
if($.isFunction(action) ){
action=action.apply(instance, [ current, e ]);
}
if(!action){
return;
}
switch(action){
case "close" :
instance.close(self.startEvent);
break;
case "toggleControls" :
instance.toggleControls(true);
break;
case "next" :
instance.next();
break;
case "nextOrClose" :
if(instance.group.length > 1){
instance.next();
}else{
instance.close(self.startEvent);
}
break;
case "zoom" :
if(current.type=='image'&&(current.isLoaded||current.$ghost) ){
if(instance.canPan()){
instance.scaleToFit();
}else if(instance.isScaledDown()){
instance.scaleToActual(tapX, tapY);
}else if(instance.group.length < 2){
instance.close(self.startEvent);
}}
break;
}};
if(e.originalEvent&&e.originalEvent.button==2){
return;
}
if(!$target.is('img')&&tapX > $target[0].clientWidth + $target.offset().left){
return;
}
if($target.is('.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container') ){
where='Outside';
}else if($target.is('.fancybox-slide') ){
where='Slide';
}else if(instance.current.$content&&instance.current.$content.find($target).addBack().filter($target).length){
where='Content';
}else{
return;
}
if(self.tapped){
clearTimeout(self.tapped);
self.tapped=null;
if(Math.abs(tapX - self.tapX) > 50||Math.abs(tapY - self.tapY) > 50){
return this;
}
process('dblclick' + where);
}else{
self.tapX=tapX;
self.tapY=tapY;
if(current.opts[ 'dblclick' + where ]&&current.opts[ 'dblclick' + where ]!==current.opts[ 'click' + where ]){
self.tapped=setTimeout(function(){
self.tapped=null;
process('click' + where);
}, 500);
}else{
process('click' + where);
}}
return this;
};
$(document).on('onActivate.fb', function (e, instance){
if(instance&&!instance.Guestures){
instance.Guestures=new Guestures(instance);
}});
}(window, document, window.jQuery||jQuery));
;(function (document, $){
'use strict';
$.extend(true, $.fancybox.defaults, {
btnTpl:{
slideShow :
'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M13,12 L27,20 L13,27 Z" />' +
'<path d="M15,10 v19 M23,10 v19" />' +
'</svg>' +
'</button>'
},
slideShow:{
autoStart:false,
speed:3000
}});
var SlideShow=function(instance){
this.instance=instance;
this.init();
};
$.extend(SlideShow.prototype, {
timer:null,
isActive:false,
$button:null,
init:function(){
var self=this;
self.$button=self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function(){
self.toggle();
});
if(self.instance.group.length < 2||!self.instance.group[ self.instance.currIndex ].opts.slideShow){
self.$button.hide();
}},
set:function(force){
var self=this;
if(self.instance&&self.instance.current&&(force===true||self.instance.current.opts.loop||self.instance.currIndex < self.instance.group.length - 1)){
self.timer=setTimeout(function(){
if(self.isActive){
self.instance.jumpTo((self.instance.currIndex + 1) % self.instance.group.length);
}}, self.instance.current.opts.slideShow.speed);
}else{
self.stop();
self.instance.idleSecondsCounter=0;
self.instance.showControls();
}},
clear:function(){
var self=this;
clearTimeout(self.timer);
self.timer=null;
},
start:function(){
var self=this;
var current=self.instance.current;
if(current){
self.isActive=true;
self.$button
.attr('title', current.opts.i18n[ current.opts.lang ].PLAY_STOP)
.removeClass('fancybox-button--play')
.addClass('fancybox-button--pause');
self.set(true);
}},
stop:function(){
var self=this;
var current=self.instance.current;
self.clear();
self.$button
.attr('title', current.opts.i18n[ current.opts.lang ].PLAY_START)
.removeClass('fancybox-button--pause')
.addClass('fancybox-button--play');
self.isActive=false;
},
toggle:function(){
var self=this;
if(self.isActive){
self.stop();
}else{
self.start();
}}
});
$(document).on({
'onInit.fb':function(e, instance){
if(instance&&!instance.SlideShow){
instance.SlideShow=new SlideShow(instance);
}},
'beforeShow.fb':function(e, instance, current, firstRun){
var SlideShow=instance&&instance.SlideShow;
if(firstRun){
if(SlideShow&&current.opts.slideShow.autoStart){
SlideShow.start();
}}else if(SlideShow&&SlideShow.isActive){
SlideShow.clear();
}},
'afterShow.fb':function(e, instance, current){
var SlideShow=instance&&instance.SlideShow;
if(SlideShow&&SlideShow.isActive){
SlideShow.set();
}},
'afterKeydown.fb':function(e, instance, current, keypress, keycode){
var SlideShow=instance&&instance.SlideShow;
if(SlideShow&&current.opts.slideShow&&(keycode===80||keycode===32)&&!$(document.activeElement).is('button,a,input') ){
keypress.preventDefault();
SlideShow.toggle();
}},
'beforeClose.fb onDeactivate.fb':function(e, instance){
var SlideShow=instance&&instance.SlideShow;
if(SlideShow){
SlideShow.stop();
}}
});
$(document).on("visibilitychange", function(){
var instance=$.fancybox.getInstance();
var SlideShow=instance&&instance.SlideShow;
if(SlideShow&&SlideShow.isActive){
if(document.hidden){
SlideShow.clear();
}else{
SlideShow.set();
}}
});
}(document, window.jQuery||jQuery));
;(function (document, $){
'use strict';
var fn=(function (){
var fnMap=[
[
'requestFullscreen',
'exitFullscreen',
'fullscreenElement',
'fullscreenEnabled',
'fullscreenchange',
'fullscreenerror'
],
[
'webkitRequestFullscreen',
'webkitExitFullscreen',
'webkitFullscreenElement',
'webkitFullscreenEnabled',
'webkitfullscreenchange',
'webkitfullscreenerror'
],
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
'webkitCurrentFullScreenElement',
'webkitCancelFullScreen',
'webkitfullscreenchange',
'webkitfullscreenerror'
],
[
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozFullScreenElement',
'mozFullScreenEnabled',
'mozfullscreenchange',
'mozfullscreenerror'
],
[
'msRequestFullscreen',
'msExitFullscreen',
'msFullscreenElement',
'msFullscreenEnabled',
'MSFullscreenChange',
'MSFullscreenError'
]
];
var val;
var ret={};
var i, j;
for(i=0; i < fnMap.length; i++){
val=fnMap[ i ];
if(val&&val[ 1 ] in document){
for(j=0; j < val.length; j++){
ret[ fnMap[ 0 ][ j ] ]=val[ j ];
}
return ret;
}}
return false;
})();
if(!fn){
if($&&$.fancybox){
$.fancybox.defaults.btnTpl.fullScreen=false;
}
return;
}
var FullScreen={
request:function(elem){
elem=elem||document.documentElement;
elem[ fn.requestFullscreen ](elem.ALLOW_KEYBOARD_INPUT);
},
exit:function (){
document[ fn.exitFullscreen ]();
},
toggle:function(elem){
elem=elem||document.documentElement;
if(this.isFullscreen()){
this.exit();
}else{
this.request(elem);
}},
isFullscreen:function(){
return Boolean(document[ fn.fullscreenElement ]);
},
enabled:function(){
return Boolean(document[ fn.fullscreenEnabled ]);
}};
$.extend(true, $.fancybox.defaults, {
btnTpl:{
fullScreen :
'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fullscreen" title="{{FULL_SCREEN}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M9,12 h22 v16 h-22 v-16 v16 h22 v-16 Z" />' +
'</svg>' +
'</button>'
},
fullScreen:{
autoStart:false
}});
$(document).on({
'onInit.fb':function(e, instance){
var $container;
if(instance&&instance.group[ instance.currIndex ].opts.fullScreen){
$container=instance.$refs.container;
$container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e){
e.stopPropagation();
e.preventDefault();
FullScreen.toggle($container[ 0 ]);
});
if(instance.opts.fullScreen&&instance.opts.fullScreen.autoStart===true){
FullScreen.request($container[ 0 ]);
}
instance.FullScreen=FullScreen;
}else if(instance){
instance.$refs.toolbar.find('[data-fancybox-fullscreen]').hide();
}},
'afterKeydown.fb':function(e, instance, current, keypress, keycode){
if(instance&&instance.FullScreen&&keycode===70){
keypress.preventDefault();
instance.FullScreen.toggle(instance.$refs.container[ 0 ]);
}},
'beforeClose.fb':function(instance){
if(instance&&instance.FullScreen){
FullScreen.exit();
}}
});
$(document).on(fn.fullscreenchange, function(){
var isFullscreen=FullScreen.isFullscreen(),
instance=$.fancybox.getInstance();
if(instance){
if(instance.current&&instance.current.type==='image'&&instance.isAnimating){
instance.current.$content.css('transition', 'none');
instance.isAnimating=false;
instance.update(true, true, 0);
}
instance.trigger('onFullscreenChange', isFullscreen);
instance.$refs.container.toggleClass('fancybox-is-fullscreen', isFullscreen);
}});
}(document, window.jQuery||jQuery));
;(function (document, $){
'use strict';
$.fancybox.defaults=$.extend(true, {
btnTpl:{
thumbs :
'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}">' +
'<svg viewBox="0 0 120 120">' +
'<path d="M30,30 h14 v14 h-14 Z M50,30 h14 v14 h-14 Z M70,30 h14 v14 h-14 Z M30,50 h14 v14 h-14 Z M50,50 h14 v14 h-14 Z M70,50 h14 v14 h-14 Z M30,70 h14 v14 h-14 Z M50,70 h14 v14 h-14 Z M70,70 h14 v14 h-14 Z" />' +
'</svg>' +
'</button>'
},
thumbs:{
autoStart:false,
hideOnClose:true,
parentEl:'.fancybox-container',
axis:'y'
}}, $.fancybox.defaults);
var FancyThumbs=function(instance){
this.init(instance);
};
$.extend(FancyThumbs.prototype, {
$button:null,
$grid:null,
$list:null,
isVisible:false,
isActive:false,
init:function(instance){
var self=this;
self.instance=instance;
instance.Thumbs=self;
var first=instance.group[0],
second=instance.group[1];
self.opts=instance.group[ instance.currIndex ].opts.thumbs;
self.$button=instance.$refs.toolbar.find('[data-fancybox-thumbs]');
if(self.opts&&first&&second&&(
(first.type=='image'||first.opts.thumb||first.opts.$thumb) &&
(second.type=='image'||second.opts.thumb||second.opts.$thumb)
)){
self.$button.show().on('click', function(){
self.toggle();
});
self.isActive=true;
}else{
self.$button.hide();
}},
create:function(){
var self=this,
instance=self.instance,
parentEl=self.opts.parentEl,
list,
src;
self.$grid=$('<div class="fancybox-thumbs fancybox-thumbs-' + self.opts.axis + '"></div>').appendTo(instance.$refs.container.find(parentEl).addBack().filter(parentEl) );
list='<ul>';
$.each(instance.group, function(i, item){
src=item.opts.thumb||(item.opts.$thumb ? item.opts.$thumb.attr('src'):null);
if(!src&&item.type==='image'){
src=item.src;
}
if(src&&src.length){
list +='<li data-index="' + i + '"  tabindex="0" class="fancybox-thumbs-loading"><img data-src="' + src + '" /></li>';
}});
list +='</ul>';
self.$list=$(list).appendTo(self.$grid).on('click', 'li', function(){
instance.jumpTo($(this).data('index'));
});
self.$list.find('img').hide().one('load', function(){
var $parent=$(this).parent().removeClass('fancybox-thumbs-loading'),
thumbWidth=$parent.outerWidth(),
thumbHeight=$parent.outerHeight(),
width,
height,
widthRatio,
heightRatio;
width=this.naturalWidth||this.width;
height=this.naturalHeight||this.height;
widthRatio=width  / thumbWidth;
heightRatio=height / thumbHeight;
if(widthRatio >=1&&heightRatio >=1){
if(widthRatio > heightRatio){
width=width / heightRatio;
height=thumbHeight;
}else{
width=thumbWidth;
height=height / widthRatio;
}}
$(this).css({
width:Math.floor(width),
height:Math.floor(height),
'margin-top':height > thumbHeight ?(Math.floor(thumbHeight * 0.3 - height * 0.3) ):Math.floor(thumbHeight * 0.5 - height * 0.5),
'margin-left':Math.floor(thumbWidth * 0.5 - width * 0.5)
}).show();
})
.each(function(){
this.src=$(this).data('src');
});
if(self.opts.axis==='x'){
self.$list.width(parseInt(self.$grid.css("padding-right")) +(instance.group.length * self.$list.children().eq(0).outerWidth(true)) + 'px');
}},
focus:function(duration){
var self=this,
$list=self.$list,
thumb,
thumbPos;
if(self.instance.current){
thumb=$list.children()
.removeClass('fancybox-thumbs-active')
.filter('[data-index="' + self.instance.current.index  + '"]')
.addClass('fancybox-thumbs-active');
thumbPos=thumb.position();
if(self.opts.axis==='y'&&(thumbPos.top < 0||thumbPos.top >($list.height() - thumb.outerHeight()) )){
$list.stop().animate({ 'scrollTop':$list.scrollTop() + thumbPos.top }, duration);
}else if(self.opts.axis==='x'&&(
thumbPos.left < $list.parent().scrollLeft() ||
thumbPos.left >($list.parent().scrollLeft() +($list.parent().width() - thumb.outerWidth()) )
)
){
$list.parent().stop().animate({ 'scrollLeft':thumbPos.left }, duration);
}}
},
update:function(){
this.instance.$refs.container.toggleClass('fancybox-show-thumbs', this.isVisible);
if(this.isVisible){
if(!this.$grid){
this.create();
}
this.instance.trigger('onThumbsShow');
this.focus(0);
}else if(this.$grid){
this.instance.trigger('onThumbsHide');
}
this.instance.update();
},
hide:function(){
this.isVisible=false;
this.update();
},
show:function(){
this.isVisible=true;
this.update();
},
toggle:function(){
this.isVisible = !this.isVisible;
this.update();
}});
$(document).on({
'onInit.fb':function(e, instance){
var Thumbs;
if(instance&&!instance.Thumbs){
Thumbs=new FancyThumbs(instance);
if(Thumbs.isActive&&Thumbs.opts.autoStart===true){
Thumbs.show();
}}
},
'beforeShow.fb':function(e, instance, item, firstRun){
var Thumbs=instance&&instance.Thumbs;
if(Thumbs&&Thumbs.isVisible){
Thumbs.focus(firstRun ? 0:250);
}},
'afterKeydown.fb':function(e, instance, current, keypress, keycode){
var Thumbs=instance&&instance.Thumbs;
if(Thumbs&&Thumbs.isActive&&keycode===71){
keypress.preventDefault();
Thumbs.toggle();
}},
'beforeClose.fb':function(e, instance){
var Thumbs=instance&&instance.Thumbs;
if(Thumbs&&Thumbs.isVisible&&Thumbs.opts.hideOnClose!==false){
Thumbs.$grid.hide();
}}
});
}(document, window.jQuery));
;(function (document, $){
'use strict';
$.extend(true, $.fancybox.defaults, {
btnTpl:{
share :
'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}">' +
'<svg viewBox="0 0 40 40">' +
'<path d="M6,30 C8,18 19,16 23,16 L23,16 L23,10 L33,20 L23,29 L23,24 C19,24 8,27 6,30 Z">' +
'</svg>' +
'</button>'
},
share:{
tpl :
'<div class="fancybox-share">' +
'<h1>{{SHARE}}</h1>' +
'<p class="fancybox-share__links">' +
'<a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg>' +
'<span>Facebook</span>' +
'</a>' +
'<a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg>' +
'<span>Pinterest</span>' +
'</a>' +
'<a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg>' +
'<span>Twitter</span>' +
'</a>' +
'</p>' +
'<p><input class="fancybox-share__input" type="text" value="{{url_raw}}" /></p>' +
'</div>'
}});
function escapeHtml(string){
var entityMap={
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#39;',
'/': '&#x2F;',
'`': '&#x60;',
'=': '&#x3D;'
};
return String(string).replace(/[&<>"'`=\/]/g, function (s){
return entityMap[s];
});
}
$(document).on('click', '[data-fancybox-share]', function(){
var f=$.fancybox.getInstance(),
url,
tpl;
if(f){
url=f.current.opts.hash===false ? f.current.src:window.location;
tpl=f.current.opts.share.tpl
.replace(/\{\{media\}\}/g, f.current.type==='image' ? encodeURIComponent(f.current.src):'')
.replace(/\{\{url\}\}/g, encodeURIComponent(url) )
.replace(/\{\{url_raw\}\}/g, escapeHtml(url) )
.replace(/\{\{descr\}\}/g, f.$caption ? encodeURIComponent(f.$caption.text()):'');
$.fancybox.open({
src:f.translate(f, tpl),
type:'html',
opts:{
animationEffect:"fade",
animationDuration:250,
afterLoad:function(instance, current){
current.$content.find('.fancybox-share__links a').click(function(){
window.open(this.href, "Share", "width=550, height=450");
return false;
});
}}
});
}});
}(document, window.jQuery||jQuery));
;(function (document, window, $){
'use strict';
if(!$.escapeSelector){
$.escapeSelector=function(sel){
var rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
var fcssescape=function(ch, asCodePoint){
if(asCodePoint){
if(ch==="\0"){
return "\uFFFD";
}
return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
}
return "\\" + ch;
};
return(sel + "").replace(rcssescape, fcssescape);
};}
var shouldCreateHistory=true;
var currentHash=null;
var timerID=null;
function parseUrl(){
var hash=window.location.hash.substr(1);
var rez=hash.split('-');
var index=rez.length > 1&&/^\+?\d+$/.test(rez[ rez.length - 1 ]) ? parseInt(rez.pop(-1), 10)||1:1;
var gallery=rez.join('-');
if(index < 1){
index=1;
}
return {
hash:hash,
index:index,
gallery:gallery
};}
function triggerFromUrl(url){
var $el;
if(url.gallery!==''){
$el=$("[data-fancybox='" + $.escapeSelector(url.gallery) + "']").eq(url.index - 1);
if(!$el.length){
$el=$("#" + $.escapeSelector(url.gallery) + "");
}
if($el.length){
shouldCreateHistory=false;
$el.trigger('click');
}}
}
function getGalleryID(instance){
var opts;
if(!instance){
return false;
}
opts=instance.current ? instance.current.opts:instance.opts;
return opts.hash||(opts.$orig ? opts.$orig.data('fancybox'):'');
}
$(function(){
if($.fancybox.defaults.hash===false){
return;
}
$(document).on({
'onInit.fb':function(e, instance){
var url, gallery;
if(instance.group[ instance.currIndex ].opts.hash===false){
return;
}
url=parseUrl();
gallery=getGalleryID(instance);
if(gallery&&url.gallery&&gallery==url.gallery){
instance.currIndex=url.index - 1;
}},
'beforeShow.fb':function(e, instance, current){
var gallery;
if(!current||current.opts.hash===false){
return;
}
gallery=getGalleryID(instance);
if(gallery&&gallery!==''){
if(window.location.hash.indexOf(gallery) < 0){
instance.opts.origHash=window.location.hash;
}
currentHash=gallery +(instance.group.length > 1 ? '-' +(current.index + 1):'');
if('replaceState' in window.history){
if(timerID){
clearTimeout(timerID);
}
timerID=setTimeout(function(){
window.history[ shouldCreateHistory ? 'pushState':'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' +  currentHash);
timerID=null;
shouldCreateHistory=false;
}, 300);
}else{
window.location.hash=currentHash;
}}
},
'beforeClose.fb':function(e, instance, current){
var gallery, origHash;
if(timerID){
clearTimeout(timerID);
}
if(current.opts.hash===false){
return;
}
gallery=getGalleryID(instance);
origHash=instance&&instance.opts.origHash ? instance.opts.origHash:'';
if(gallery&&gallery!==''){
if('replaceState' in history){
window.history.replaceState({} , document.title, window.location.pathname + window.location.search + origHash);
}else{
window.location.hash=origHash;
$(window).scrollTop(instance.scrollTop).scrollLeft(instance.scrollLeft);
}}
currentHash=null;
}});
$(window).on('hashchange.fb', function(){
var url=parseUrl();
if($.fancybox.getInstance()){
if(currentHash&&currentHash!==url.gallery + '-' + url.index&&!(url.index===1&&currentHash==url.gallery) ){
currentHash=null;
$.fancybox.close();
}}else if(url.gallery!==''){
triggerFromUrl(url);
}});
setTimeout(function(){
triggerFromUrl(parseUrl());
}, 50);
});
}(document, window, window.jQuery||jQuery));
;(function (document, $){
'use strict';
var prevTime=new Date().getTime();
$(document).on({
'onInit.fb':function(e, instance, current){
instance.$refs.stage.on('mousewheel DOMMouseScroll wheel MozMousePixelScroll', function(e){
var current=instance.current,
currTime=new Date().getTime();
if(instance.group.length < 1||current.opts.wheel===false||(current.opts.wheel==='auto'&&current.type!=='image') ){
return;
}
e.preventDefault();
e.stopPropagation();
if(current.$slide.hasClass('fancybox-animated') ){
return;
}
e=e.originalEvent||e;
if(currTime - prevTime < 250){
return;
}
prevTime=currTime;
instance[(-e.deltaY||-e.deltaX||e.wheelDelta||-e.detail) < 0 ? 'next':'previous' ]();
});
}});
}(document, window.jQuery||jQuery));