{"version":3,"sources":["webpack:///./src/module/no-tracking.ts","webpack:///./src/module/google-analytics.ts","webpack:///./src/app-config.ts","webpack:///./Web/Shared/Component/ContactForm/contact-form.ts","webpack:///./src/module/form.ts","webpack:///./Web/Shared/layout.ts","webpack:///./src/module/facebook-pixel.ts","webpack:///./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js","webpack:///./Web/OurProject/our-project.ts"],"names":["__webpack_require__","d","__webpack_exports__","hasNoTrackingCookies","COOKIES_KEY","document","cookie","match","setupGA","setEvent","setAdsConversion","_no_tracking__WEBPACK_IMPORTED_MODULE_0__","_googleAdsConfig","undefined","googleAnalyticsId","googleAdsConfig","Object","script","createElement","type","async","src","getElementsByTagName","appendChild","script2","textContent","Id","setTimeout","gtag","scrolled","querySelectorAll","forEach","elem","trackEventName","dataset","addEventListener","trackConversionName","eventName","eventCategory","eventLabel","event_category","event_label","value","conversionName","send_to","convertor","appConfig","__assign","JSON","parse","getElementById","googleMapSetting","apiKey","locations","position","lat","lng","url","zoom","center","styles","setupContactForm","elementId","config","processing","combineToFormData","error","beforeSend","success","e","preventDefault","formElement","target","xhr","XMLHttpRequest","readyState","status","responseText","console","finally","onprogress","event","Math","round","loaded","total","toFixed","open","action","formData","FormData","length","log","obj","keys","key","append","send","ajaxForm","querySelector","style","display","errorText","reset","google_analytics","setupLayout","facebookPixelId","no_tracking","fbq","setupPixel","app_config","googleAdsId","hpLink","whatsApp","mapLink","emailLink","contactForm","contact_form","jquery","ready","prev","each","classList","toggle","x","remove","add","animate","scrollTop","window","onscroll","pageYOffset","jQuery","$","info","stuff","fn","fancybox","div","$pressed","defaults","closeExisting","loop","gutter","keyboard","preventCaptionOverlap","arrows","infobar","smallBtn","toolbar","buttons","idleTime","protect","modal","image","preload","ajax","settings","data","iframe","tpl","css","attr","scrolling","video","format","autoStart","defaultType","animationEffect","animationDuration","zoomOpacity","transitionEffect","transitionDuration","slideClass","baseClass","baseTpl","spinnerTpl","errorTpl","btnTpl","download","close","arrowLeft","arrowRight","parentEl","hideScrollbar","autoFocus","backFocus","trapFocus","fullScreen","touch","vertical","momentum","hash","media","slideShow","speed","thumbs","hideOnClose","axis","wheel","onInit","noop","beforeLoad","afterLoad","beforeShow","afterShow","beforeClose","afterClose","onActivate","onDeactivate","clickContent","current","clickSlide","clickOutside","dblclickContent","dblclickSlide","dblclickOutside","mobile","lang","i18n","en","CLOSE","NEXT","PREV","ERROR","PLAY_START","PLAY_STOP","FULL_SCREEN","THUMBS","DOWNLOAD","SHARE","ZOOM","de","$W","$D","called","requestAFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","callback","cancelAFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","id","clearTimeout","transitionEnd","t","el","transitions","transition","OTransition","MozTransition","WebkitTransition","forceRedraw","$el","offsetHeight","mergeOpts","opts1","opts2","rez","extend","isArray","FancyBox","content","opts","index","this","isPlainObject","isMobile","currIndex","parseInt","prevIndex","prevPos","currPos","firstRun","group","slides","addContent","init","prototype","$container","buttonStr","self","firstItemOpts","addClass","getInstance","body","scrollHeight","innerHeight","innerWidth","documentElement","clientWidth","translate","replace","appendTo","$refs","container","item","find","trigger","activate","jumpTo","str","arr","n","items","makeArray","i","$item","found","srcParts","options","$orig","contentType","charAt","inArray","$thumb","$trigger","thumb","caption","apply","split","shift","filter","push","updateControls","Thumbs","isActive","create","focus","addEvents","removeEvents","on","stopPropagation","previous","next","isScaledDown","originalEvent","requestId","update","stage","hide","show","keycode","keyCode","which","ctrlKey","altKey","shiftKey","is","idleSecondsCounter","isIdle","showControls","idleInterval","setInterval","isDragging","hideControls","off","clearInterval","duration","pos","isMoved","slidePos","stagePos","prop","diff","groupLen","isClosing","isAnimating","createSlide","forcedDuration","isNumeric","$slide","loadSlide","getTranslate","slide","stop","isComplete","removeClass","left","width","className","join","leftPos","setTranslate","top","transform","opacity","complete","isLoaded","revealContent","updateSlide","scaleToActual","y","imgPos","posX","posY","scaleX","scaleY","$content","canvasWidth","canvasHeight","height","newImgWidth","newImgHeight","hasError","updateCursor","SlideShow","scaleToFit","end","getFitPos","maxWidth","maxHeight","minRatio","aspectRatio","parseFloat","min","floor","ratio","adjustCaption","adjustLayout","navigation","toggleClass","get","clientHeight","centerSlide","siblings","parent","children","hasClass","abs","nextWidth","nextHeight","canPan","isZoomable","Guestures","isFunction","fitPos","ajaxLoad","isLoading","setImage","setIframe","setContent","videoFormat","setError","showLoading","textStatus","jqXHR","one","abort","ghost","$img","$image","checkSrcset","onerror","$ghost","onload","setBigImage","temp","pxRatio","windowWidth","srcset","devicePixelRatio","map","ret","trim","substring","postfix","sort","a","b","j","img","sizes","resolveImageSlideSize","naturalWidth","naturalHeight","max","hideLoading","imgWidth","imgHeight","$iframe","Date","getTime","isReady","$body","frameWidth","frameHeight","contents","ignore","max-width","ceil","outerWidth","outerHeight","unbind","empty","isRevealed","hasOwnProperty","parents","$placeholder","insertAfter","html","after","$smallBtn","wrap","first","wrapInner","$spinner","fadeIn","button","$clone","preventOverlap","$caption","captionH","clone","eq","marginBottom","inlinePadding","actualPadding","disableLayoutFix","effect","effectClassName","start","getThumbPos","thumbPos","btw","brw","bbw","blw","elemCenter","ownerDocument","getBoundingClientRect","offsetWidth","elementFromPoint","inViewport","Document","exitFullscreen","webkitExitFullscreen","scrollLeft","focusableItems","focusedItemIndex","focusableStr","activeElement","instance","isVisible","domRect","done","cleanUp","$focus","scrollX","scrollY","name","args","Array","slice","call","arguments","unshift","hasHiddenControls","andCaption","toggleControls","version","command","all","destroy","test","navigator","userAgent","use3d","getComputedStyle","getPropertyValue","documentMode","props","to","leaveAnimationName","from","propertyName","callCallback","selector","_run","$target","isDefaultPrevented","currentTarget","youtube","matcher","params","autoplay","autohide","fs","rel","hd","wmode","enablejsapi","html5","paramPlace","vimeo","show_title","show_byline","show_portrait","fullscreen","instagram","gmap_place","indexOf","gmap_search","param","urlParams","paramObj","provider","providerName","providerOpts","m","p","decodeURIComponent","p1","s","origSrc","contentSource","VideoAPILoader","class","loading","load","vendor","_this","onYouTubeIframeAPIReady","YT","Player","events","onStateChange","Vimeo","afterShow.fb","getPointerXY","result","touches","changedTouches","pageX","pageY","clientX","clientY","distance","point2","point1","what","sqrt","pow","isClickable","onclick","atts","attributes","nodeName","substr","isScrollable","overflowY","overflowX","horizontal","scrollWidth","$bg","bg","$stage","proxy","tapped","ontouchstart","isTouchDevice","offset","realPoints","startPoints","startEvent","canTap","isPanning","isSwiping","isZooming","isScrolling","startTime","distanceX","distanceY","contentLastPos","contentStartPos","sliderStartPos","centerPointStartX","centerPointStartY","percentageOfImageAtPinchPointX","percentageOfImageAtPinchPointY","startDistanceBetweenFingers","removeEventListener","ontouchmove","newPoints","onSwipe","onPan","onZoom","ontouchend","angle","swiping","sliderLastPos","atan2","PI","transition-duration","limitMovement","minTranslateX","minTranslateY","maxTranslateX","maxTranslateY","newOffsetX","newOffsetY","currentOffsetX","currentOffsetY","currentWidth","currentHeight","limitPosition","newWidth","newHeight","pinchRatio","translateFromZoomingX","translateFromZoomingY","centerPointEndX","centerPointEndY","translateFromTranslatingX","newPos","panning","zooming","endPoints","dMs","onTap","velocityX","velocityY","endPanning","endZooming","endSwiping","len","canAdvance","where","tapX","tapY","process","prefix","addBack","progress","timer","$button","$progress","inner","set","force","clear","removeAttr","onInit.fb","beforeShow.fb","afterKeydown.fb","keypress","beforeClose.fb onDeactivate.fb","hidden","fnMap","val","FullScreen","request","requestFullscreen","ALLOW_KEYBOARD_INPUT","exit","isFullscreen","Boolean","fullscreenElement","enabled","fullscreenEnabled","fullscreenchange","beforeClose.fb","CLASS","FancyThumbs","$grid","$list","list","innerHTML","share","currentHash","location","string","entityMap","encodeURIComponent","&","<",">","\"","'","/","`","=","String","text","shareInstance","shareCurrent","click","href","parseUrl","pop","gallery","triggerFromUrl","escapeSelector","getGalleryID","sel","ch","asCodePoint","charCodeAt","toString","origHash","hashTimer","history","title","pathname","search","hasCreatedHistory","back","replaceState","fb","reverse","tmp","prevTime","currTime","deltaY","deltaX","wheelDelta","detail","r","_Shared_layout__WEBPACK_IMPORTED_MODULE_1__","parentNode","getAttribute"],"mappings":"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","file":"3.98ff3ddcc91c5a7470e6.bundle.js","sourcesContent":["const COOKIES_KEY = 'noTracking';\r\n\r\nexport function setNoTrackingCookies() {\r\n document.cookie = `${COOKIES_KEY}expires=${new Date(\"2025-01-01\").toString()}`;\r\n console.log('No Tracking Cookies Settle!')\r\n}\r\n\r\nexport function hasNoTrackingCookies():boolean {\r\n return !!document.cookie.match(COOKIES_KEY);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { hasNoTrackingCookies } from './no-tracking';\r\n\r\ndeclare global {\r\n let gtag: (...args: any[]) => void\r\n}\r\ninterface GoogleAdsConfig {\r\n Id : string,\r\n convertor : {\r\n [name : string] : string,\r\n }\r\n}\r\n\r\nlet _googleAdsConfig : GoogleAdsConfig | undefined = undefined;\r\nexport function setupGA(googleAnalyticsId: string, googleAdsConfig?: GoogleAdsConfig ) {\r\n if(hasNoTrackingCookies()) return;\r\n let script = document.createElement('script') as HTMLScriptElement;\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n \r\n // 因为它需要定义全局变量,所以不能再 ts 里面写. \r\n let script2 = document.createElement('script') as HTMLScriptElement;\r\n script2.type = 'text/javascript';\r\n script2.textContent = `\r\n window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n gtag('js', new Date()); \r\n gtag('config', '${ googleAnalyticsId }', {\r\n 'custom_map': {\r\n 'dimension1': 'scrolled'\r\n }\r\n });\r\n ${googleAdsConfig ? `gtag('config', '${googleAdsConfig.Id}');` : ''}\r\n `;\r\n document.getElementsByTagName('head')[0].appendChild(script2);\r\n\r\n setTimeout(()=>{\r\n gtag('event', 'scrolled_dimension', {\r\n 'scrolled': 'true'\r\n });\r\n },15000);\r\n \r\n document.querySelectorAll('.googleAnalyticsTracking').forEach(elem => {\r\n const trackEventName = elem.dataset['googleAnalyticsEvent'];\r\n elem.addEventListener('click', () => { \r\n setEvent(trackEventName);\r\n });\r\n }); \r\n if(googleAdsConfig){\r\n _googleAdsConfig = googleAdsConfig;\r\n document.querySelectorAll('.googleAdsTracking').forEach(elem => {\r\n const trackConversionName = elem.dataset['googleAdsConversion'];\r\n elem.addEventListener('click', () => { \r\n setAdsConversion(trackConversionName);\r\n });\r\n }); \r\n }\r\n}\r\n\r\nexport function setEvent(eventName:string, eventCategory?:string, eventLabel?:string ){\r\n if(hasNoTrackingCookies()) return;\r\n eventCategory = eventCategory || eventName;\r\n eventLabel = eventLabel || eventName;\r\n gtag('event', `event_${eventName}`, {\r\n 'event_category': `event_${eventCategory}`,\r\n 'event_label': `event_${eventLabel}`,\r\n 'value': 1\r\n });\r\n}\r\n\r\nexport function setAdsConversion(conversionName:string){\r\n if(hasNoTrackingCookies()) return;\r\n gtag('event', 'conversion', { 'send_to': `${_googleAdsConfig.Id}/${_googleAdsConfig.convertor[conversionName]}` });\r\n}\r\n\r\nexport function trySetAdsConversion(conversionName:string){\r\n if(_googleAdsConfig){\r\n setAdsConversion(conversionName);\r\n }\r\n}\r\n\r\n\r\n","export const appConfig = {\r\n ...JSON.parse((document.getElementById('inputHiddenForAppConfig') as HTMLInputElement).value),\r\n ...{\r\n \"googleMapSetting\": {\r\n \"apiKey\": \"AIzaSyDVpWKo8BfojulFDsVvgiz469YoSuOHFP0\",\r\n \"locations\": [\r\n {\r\n \"position\": {\r\n \"lat\": 1.3637087,\r\n \"lng\": 103.8545555\r\n },\r\n \"url\": \"https://www.google.com/maps/place/443+Ang+Mo+Kio+Ave+10,+06%E6%96%B0%E5%8A%A0%E5%9D%A1+560443/@1.3637087,103.8545555,17z/data=!4m5!1m2!2m1!1sBlk+443,+Ang+Mo+Kio+Ave+10,+%2306-1225+Singapore.!3m1!1s0x31da16e2dee7ce01:0xbca7ca3d572cef0\"\r\n }\r\n ],\r\n \"zoom\": 18,\r\n \"center\": {\r\n \"lat\": 1.3637087,\r\n \"lng\": 103.8545555\r\n },\r\n \"styles\": [\r\n \r\n ]\r\n }\r\n }\r\n\r\n}\r\n\r\n","import { ajaxForm } from \"../../../../src/module/form\";\r\nimport { setEvent, setAdsConversion } from \"../../../../src/module/google-analytics\";\r\n\r\nexport function setupContactForm(elementId : string){\r\n ajaxForm({\r\n elementId: elementId,\r\n beforeSend: () => { \r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'block';\r\n },\r\n error: (errorText) => {\r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonError`).style.display = 'block';\r\n console.log(errorText);\r\n },\r\n processing: () => {\r\n //upload percentage\r\n },\r\n success: () => {\r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonError`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonSuccess`).style.display = 'block';\r\n (document.getElementById(elementId) as HTMLFormElement).reset();\r\n setEvent('contactForm');\r\n setAdsConversion('contactForm');\r\n },\r\n finally: () => {\r\n //finish all job\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","\r\n// note : 不支持 input file 哦\r\nexport function localStorageForm(config: {\r\n elementId: string,\r\n localStorageKey: string,\r\n redirectUrl: string\r\n}): void {\r\n const { elementId, localStorageKey, redirectUrl } = config;\r\n const form = document.getElementById(elementId);\r\n form.addEventListener('submit', (e: Event) => {\r\n e.preventDefault();\r\n const formElement = e.target as HTMLFormElement;\r\n const formData = new FormData(formElement)\r\n let store: any = {};\r\n formData.forEach((value, key) => {\r\n store[key] = value;\r\n });\r\n localStorage.setItem(localStorageKey, JSON.stringify(store));\r\n location.href = redirectUrl;\r\n });\r\n}\r\n\r\nexport function formDataToObject(formElement: HTMLFormElement): any {\r\n const formData = new FormData(formElement);\r\n let result: any = {};\r\n formData.forEach((value, key) => {\r\n result[key] = value;\r\n });\r\n return result;\r\n}\r\n\r\n\r\nexport function ajaxForm(config: {\r\n elementId: string\r\n beforeSend: () => void\r\n success: (responseText: string) => void\r\n error: (responseText: string) => void\r\n finally: () => void\r\n processing?: (percent: number) => void\r\n combineToFormData?: { [propName : string] : any }[]\r\n}): void {\r\n config.processing = config.processing || function () { };\r\n config.combineToFormData = config.combineToFormData || [];\r\n const { elementId, error, beforeSend, success, processing, combineToFormData } = config;\r\n const form = document.getElementById(elementId);\r\n form.addEventListener('submit', (e: Event) => {\r\n e.preventDefault();\r\n const formElement = e.target as HTMLFormElement;\r\n beforeSend();\r\n var xhr = new XMLHttpRequest();\r\n xhr.addEventListener('readystatechange', () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n success(xhr.responseText);\r\n }\r\n else {\r\n console.error({\r\n status: xhr.status,\r\n responseText: xhr.responseText\r\n });\r\n error(xhr.responseText);\r\n }\r\n config.finally();\r\n }\r\n });\r\n xhr.onprogress = function (event) {\r\n processing(+Math.round(event.loaded / event.total * 100).toFixed(0));\r\n };\r\n xhr.open(\"POST\", formElement.action, true);\r\n let formData = new FormData(formElement);\r\n if (combineToFormData.length > 0) {\r\n console.log(combineToFormData)\r\n combineToFormData.forEach(obj => {\r\n Object.keys(obj).forEach(key => {\r\n formData.append(key, obj[key]);\r\n });\r\n });\r\n }\r\n formData.forEach((value, key) => {\r\n console.log(key, value);\r\n });\r\n xhr.send(formData);\r\n });\r\n}\r\n","import { setupPixel } from '../../src/module/facebook-pixel';\r\nimport { setupGA } from '../../src/module/google-analytics';\r\nimport { slideToggle } from '../../src/module/dom';\r\nimport { setupExtension } from '../../src/module/extensions';\r\nimport { appConfig } from '../../src/app-config';\r\nimport { setupGoogleMap } from '../../src/module/google-map';\r\nimport * as $ from \"jquery\";\r\nimport { setupContactForm } from './Component/ContactForm/contact-form';\r\n\r\nexport function setupLayout() {\r\n setupPixel(appConfig.facebookPixelId);\r\n setupGA(appConfig.googleAnalyticsId, {\r\n Id: appConfig.googleAdsId,\r\n convertor: {\r\n 'hpLink': 'HnbnCNei-aQBENbKl9sC',\r\n 'whatsApp': 'JQGvCMr_3KUBENbKl9sC',\r\n 'mapLink': '_iySCL280aUBENbKl9sC',\r\n 'emailLink': 'cTE6CMfI_aQBENbKl9sC',\r\n 'contactForm': 'f-abCM_N_aQBENbKl9sC',\r\n //'liveChat': '_txPCI--0aUBENbKl9sC'\r\n }\r\n });\r\n setupContactForm('footerForm');\r\n\r\n $(document).ready(function () {\r\n var prev: HTMLElement = null;\r\n\r\n document.querySelectorAll(\".drop\").forEach(each => {\r\n each.addEventListener(\"click\", () => {\r\n if (prev == each) {\r\n each.classList.toggle(\"active\");\r\n } else {\r\n for (let x = 0; x < document.querySelectorAll(\".drop\").length; x++) {\r\n document.querySelectorAll(\".drop\")[x].classList.remove(\"active\");\r\n }\r\n\r\n each.classList.add(\"active\");\r\n }\r\n prev = each as HTMLElement;\r\n });\r\n });\r\n\r\n document.querySelector(\".toTop\").addEventListener(\"click\", function () {\r\n $(\"html, body\").animate({ scrollTop: 0 }, 800);\r\n return false;\r\n });\r\n\r\n window.onscroll = function () {\r\n let offset = window.pageYOffset;\r\n if (offset >= 50) {\r\n document.querySelector(\"header\").classList.add(\"active\");\r\n document.querySelector(\".toTop\").classList.add(\"active\");\r\n } else {\r\n document.querySelector(\"header\").classList.remove(\"active\");\r\n document.querySelector(\".toTop\").classList.remove(\"active\");\r\n }\r\n }\r\n\r\n document.querySelectorAll(\".mobileMenuBar\").forEach(each => {\r\n each.addEventListener(\"click\", () => {\r\n each.classList.toggle(\"active\");\r\n })\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { hasNoTrackingCookies } from \"./no-tracking\";\r\n\r\ndeclare let fbq : (...args: any[]) => void\r\n\r\nexport function setupPixel(facebookPixelId : string) {\r\n if(hasNoTrackingCookies()) return;\r\n let script = document.createElement('script') as HTMLScriptElement;\r\n script.type = 'text/javascript'; \r\n script.textContent = `\r\n !function (f, b, e, v, n, t, s) {\r\n if (f.fbq) return; n = f.fbq = function () {\r\n n.callMethod ?\r\n n.callMethod.apply(n, arguments) : n.queue.push(arguments)\r\n };\r\n if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';\r\n n.queue = []; t = b.createElement(e); t.async = !0;\r\n t.src = v; s = b.getElementsByTagName(e)[0];\r\n s.parentNode.insertBefore(t, s)\r\n }(window, document, 'script','https://connect.facebook.net/en_US/fbevents.js');\r\n `;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n fbq('init', facebookPixelId);\r\n fbq('track', 'PageView');\r\n\r\n document.querySelectorAll('.facebookPixelTracking').forEach(elem => {\r\n let trackEventName = elem.dataset['facebookPixelEvent'];\r\n elem.addEventListener('click', () => { \r\n fbq('track', trackEventName);\r\n });\r\n }); \r\n}\r\n\r\n\r\n\r\n\r\n\r\n","// ==================================================\n// fancyBox v3.5.7\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2019 fancyApps\n//\n// ==================================================\n(function (window, document, $, undefined) {\r\n \"use strict\";\r\n\r\n window.console = window.console || {\r\n info: function (stuff) {}\r\n };\r\n\r\n // If there's no jQuery, fancyBox can't work\r\n // =========================================\r\n\r\n if (!$) {\r\n return;\r\n }\r\n\r\n // Check if fancyBox is already initialized\r\n // ========================================\r\n\r\n if ($.fn.fancybox) {\r\n console.info(\"fancyBox already initialized\");\r\n\r\n return;\r\n }\r\n\r\n // Private default settings\r\n // ========================\r\n\r\n var defaults = {\r\n // Close existing modals\r\n // Set this to false if you do not need to stack multiple instances\r\n closeExisting: false,\r\n\r\n // Enable infinite gallery navigation\r\n loop: false,\r\n\r\n // Horizontal space between slides\r\n gutter: 50,\r\n\r\n // Enable keyboard navigation\r\n keyboard: true,\r\n\r\n // Should allow caption to overlap the content\r\n preventCaptionOverlap: true,\r\n\r\n // Should display navigation arrows at the screen edges\r\n arrows: true,\r\n\r\n // Should display counter at the top left corner\r\n infobar: true,\r\n\r\n // Should display close button (using `btnTpl.smallBtn` template) over the content\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically enabled for \"html\", \"inline\" or \"ajax\" items\r\n smallBtn: \"auto\",\r\n\r\n // Should display toolbar (buttons at the top)\r\n // Can be true, false, \"auto\"\r\n // If \"auto\" - will be automatically hidden if \"smallBtn\" is enabled\r\n toolbar: \"auto\",\r\n\r\n // What buttons should appear in the top right corner.\r\n // Buttons will be created using templates from `btnTpl` option\r\n // and they will be placed into toolbar (class=\"fancybox-toolbar\"` element)\r\n buttons: [\r\n \"zoom\",\r\n //\"share\",\r\n \"slideShow\",\r\n //\"fullScreen\",\r\n //\"download\",\r\n \"thumbs\",\r\n \"close\"\r\n ],\r\n\r\n // Detect \"idle\" time in seconds\r\n idleTime: 3,\r\n\r\n // Disable right-click and use simple image protection for images\r\n protect: false,\r\n\r\n // Shortcut to make content \"modal\" - disable keyboard navigtion, hide buttons, etc\r\n modal: false,\r\n\r\n image: {\r\n // Wait for images to load before displaying\r\n // true - wait for image to load and then display;\r\n // false - display thumbnail and load the full-sized image over top,\r\n // requires predefined image dimensions (`data-width` and `data-height` attributes)\r\n preload: false\r\n },\r\n\r\n ajax: {\r\n // Object containing settings for ajax request\r\n settings: {\r\n // This helps to indicate that request comes from the modal\r\n // Feel free to change naming\r\n data: {\r\n fancybox: true\r\n }\r\n }\r\n },\r\n\r\n iframe: {\r\n // Iframe template\r\n tpl: '',\r\n\r\n // Preload iframe before displaying it\r\n // This allows to calculate iframe content width and height\r\n // (note: Due to \"Same Origin Policy\", you can't get cross domain data).\r\n preload: true,\r\n\r\n // Custom CSS styling for iframe wrapping element\r\n // You can use this to set custom iframe dimensions\r\n css: {},\r\n\r\n // Iframe tag attributes\r\n attr: {\r\n scrolling: \"auto\"\r\n }\r\n },\r\n\r\n // For HTML5 video only\r\n video: {\r\n tpl: '\",\r\n format: \"\", // custom video format\r\n autoStart: true\r\n },\r\n\r\n // Default content type if cannot be detected automatically\r\n defaultType: \"image\",\r\n\r\n // Open/close animation type\r\n // Possible values:\r\n // false - disable\r\n // \"zoom\" - zoom images from/to thumbnail\r\n // \"fade\"\r\n // \"zoom-in-out\"\r\n //\r\n animationEffect: \"zoom\",\r\n\r\n // Duration in ms for open/close animation\r\n animationDuration: 366,\r\n\r\n // Should image change opacity while zooming\r\n // If opacity is \"auto\", then opacity will be changed if image and thumbnail have different aspect ratios\r\n zoomOpacity: \"auto\",\r\n\r\n // Transition effect between slides\r\n //\r\n // Possible values:\r\n // false - disable\r\n // \"fade'\r\n // \"slide'\r\n // \"circular'\r\n // \"tube'\r\n // \"zoom-in-out'\r\n // \"rotate'\r\n //\r\n transitionEffect: \"fade\",\r\n\r\n // Duration in ms for transition animation\r\n transitionDuration: 366,\r\n\r\n // Custom CSS class for slide element\r\n slideClass: \"\",\r\n\r\n // Custom CSS class for layout\r\n baseClass: \"\",\r\n\r\n // Base template for layout\r\n baseTpl: '
' +\r\n '
' +\r\n '
' +\r\n '
 / 
' +\r\n '
{{buttons}}
' +\r\n '
{{arrows}}
' +\r\n '
' +\r\n '
' +\r\n \"
\" +\r\n \"
\",\r\n\r\n // Loading indicator template\r\n spinnerTpl: '
',\r\n\r\n // Error message template\r\n errorTpl: '

{{ERROR}}

',\r\n\r\n btnTpl: {\r\n download: '' +\r\n '' +\r\n \"\",\r\n\r\n zoom: '\",\r\n\r\n close: '\",\r\n\r\n // Arrows\r\n arrowLeft: '\",\r\n\r\n arrowRight: '\",\r\n\r\n // This small close button will be appended to your html/inline/ajax content by default,\r\n // if \"smallBtn\" option is not set to false\r\n smallBtn: '\"\r\n },\r\n\r\n // Container is injected into this element\r\n parentEl: \"body\",\r\n\r\n // Hide browser vertical scrollbars; use at your own risk\r\n hideScrollbar: true,\r\n\r\n // Focus handling\r\n // ==============\r\n\r\n // Try to focus on the first focusable element after opening\r\n autoFocus: true,\r\n\r\n // Put focus back to active element after closing\r\n backFocus: true,\r\n\r\n // Do not let user to focus on element outside modal content\r\n trapFocus: true,\r\n\r\n // Module specific options\r\n // =======================\r\n\r\n fullScreen: {\r\n autoStart: false\r\n },\r\n\r\n // Set `touch: false` to disable panning/swiping\r\n touch: {\r\n vertical: true, // Allow to drag content vertically\r\n momentum: true // Continue movement after releasing mouse/touch when panning\r\n },\r\n\r\n // Hash value when initializing manually,\r\n // set `false` to disable hash change\r\n hash: null,\r\n\r\n // Customize or add new media types\r\n // Example:\r\n /*\r\n media : {\r\n youtube : {\r\n params : {\r\n autoplay : 0\r\n }\r\n }\r\n }\r\n */\r\n media: {},\r\n\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000\r\n },\r\n\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n },\r\n\r\n // Use mousewheel to navigate gallery\r\n // If 'auto' - enabled for images only\r\n wheel: \"auto\",\r\n\r\n // Callbacks\r\n //==========\r\n\r\n // See Documentation/API/Events for more information\r\n // Example:\r\n /*\r\n afterShow: function( instance, current ) {\r\n console.info( 'Clicked element:' );\r\n console.info( current.opts.$orig );\r\n }\r\n */\r\n\r\n onInit: $.noop, // When instance has been initialized\r\n\r\n beforeLoad: $.noop, // Before the content of a slide is being loaded\r\n afterLoad: $.noop, // When the content of a slide is done loading\r\n\r\n beforeShow: $.noop, // Before open animation starts\r\n afterShow: $.noop, // When content is done loading and animating\r\n\r\n beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close.\r\n afterClose: $.noop, // After instance has been closed\r\n\r\n onActivate: $.noop, // When instance is brought to front\r\n onDeactivate: $.noop, // When other instance has been activated\r\n\r\n // Interaction\r\n // ===========\r\n\r\n // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,\r\n // each option can be string or method that returns value.\r\n //\r\n // Possible values:\r\n // \"close\" - close instance\r\n // \"next\" - move to next gallery item\r\n // \"nextOrClose\" - move to next gallery item or close if gallery has only one item\r\n // \"toggleControls\" - show/hide controls\r\n // \"zoom\" - zoom image (if loaded)\r\n // false - do nothing\r\n\r\n // Clicked on the content\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n\r\n // Clicked on the slide\r\n clickSlide: \"close\",\r\n\r\n // Clicked on the background (backdrop) element;\r\n // if you have not changed the layout, then most likely you need to use `clickSlide` option\r\n clickOutside: \"close\",\r\n\r\n // Same as previous two, but for double click\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false,\r\n\r\n // Custom options when mobile device is detected\r\n // =============================================\r\n\r\n mobile: {\r\n preventCaptionOverlap: false,\r\n idleTime: false,\r\n clickContent: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : false;\r\n },\r\n clickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"toggleControls\" : \"close\";\r\n },\r\n dblclickContent: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n },\r\n dblclickSlide: function (current, event) {\r\n return current.type === \"image\" ? \"zoom\" : false;\r\n }\r\n },\r\n\r\n // Internationalization\r\n // ====================\r\n\r\n lang: \"en\",\r\n i18n: {\r\n en: {\r\n CLOSE: \"Close\",\r\n NEXT: \"Next\",\r\n PREV: \"Previous\",\r\n ERROR: \"The requested content cannot be loaded.
Please try again later.\",\r\n PLAY_START: \"Start slideshow\",\r\n PLAY_STOP: \"Pause slideshow\",\r\n FULL_SCREEN: \"Full screen\",\r\n THUMBS: \"Thumbnails\",\r\n DOWNLOAD: \"Download\",\r\n SHARE: \"Share\",\r\n ZOOM: \"Zoom\"\r\n },\r\n de: {\r\n CLOSE: \"Schließen\",\r\n NEXT: \"Weiter\",\r\n PREV: \"Zurück\",\r\n ERROR: \"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.\",\r\n PLAY_START: \"Diaschau starten\",\r\n PLAY_STOP: \"Diaschau beenden\",\r\n FULL_SCREEN: \"Vollbild\",\r\n THUMBS: \"Vorschaubilder\",\r\n DOWNLOAD: \"Herunterladen\",\r\n SHARE: \"Teilen\",\r\n ZOOM: \"Vergrößern\"\r\n }\r\n }\r\n };\r\n\r\n // Few useful variables and methods\r\n // ================================\r\n\r\n var $W = $(window);\r\n var $D = $(document);\r\n\r\n var called = 0;\r\n\r\n // Check if an object is a jQuery object and not a native JavaScript object\r\n // ========================================================================\r\n var isQuery = function (obj) {\r\n return obj && obj.hasOwnProperty && obj instanceof $;\r\n };\r\n\r\n // Handle multiple browsers for \"requestAnimationFrame\" and \"cancelAnimationFrame\"\r\n // ===============================================================================\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n // Detect the supported transition-end event property name\r\n // =======================================================\r\n var transitionEnd = (function () {\r\n var el = document.createElement(\"fakeelement\"),\r\n t;\r\n\r\n var transitions = {\r\n transition: \"transitionend\",\r\n OTransition: \"oTransitionEnd\",\r\n MozTransition: \"transitionend\",\r\n WebkitTransition: \"webkitTransitionEnd\"\r\n };\r\n\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n\r\n return \"transitionend\";\r\n })();\r\n\r\n // Force redraw on an element.\r\n // This helps in cases where the browser doesn't redraw an updated element properly\r\n // ================================================================================\r\n var forceRedraw = function ($el) {\r\n return $el && $el.length && $el[0].offsetHeight;\r\n };\r\n\r\n // Exclude array (`buttons`) options from deep merging\r\n // ===================================================\r\n var mergeOpts = function (opts1, opts2) {\r\n var rez = $.extend(true, {}, opts1, opts2);\r\n\r\n $.each(opts2, function (key, value) {\r\n if ($.isArray(value)) {\r\n rez[key] = value;\r\n }\r\n });\r\n\r\n return rez;\r\n };\r\n\r\n // How much of an element is visible in viewport\r\n // =============================================\r\n\r\n var inViewport = function (elem) {\r\n var elemCenter, rez;\r\n\r\n if (!elem || elem.ownerDocument !== document) {\r\n return false;\r\n }\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"none\");\r\n\r\n elemCenter = {\r\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\r\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\r\n };\r\n\r\n rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem;\r\n\r\n $(\".fancybox-container\").css(\"pointer-events\", \"\");\r\n\r\n return rez;\r\n };\r\n\r\n // Class definition\r\n // ================\r\n\r\n var FancyBox = function (content, opts, index) {\r\n var self = this;\r\n\r\n self.opts = mergeOpts({\r\n index: index\r\n }, $.fancybox.defaults);\r\n\r\n if ($.isPlainObject(opts)) {\r\n self.opts = mergeOpts(self.opts, opts);\r\n }\r\n\r\n if ($.fancybox.isMobile) {\r\n self.opts = mergeOpts(self.opts, self.opts.mobile);\r\n }\r\n\r\n self.id = self.opts.id || ++called;\r\n\r\n self.currIndex = parseInt(self.opts.index, 10) || 0;\r\n self.prevIndex = null;\r\n\r\n self.prevPos = null;\r\n self.currPos = 0;\r\n\r\n self.firstRun = true;\r\n\r\n // All group items\r\n self.group = [];\r\n\r\n // Existing slides (for current, next and previous gallery items)\r\n self.slides = {};\r\n\r\n // Create group elements\r\n self.addContent(content);\r\n\r\n if (!self.group.length) {\r\n return;\r\n }\r\n\r\n self.init();\r\n };\r\n\r\n $.extend(FancyBox.prototype, {\r\n // Create DOM structure\r\n // ====================\r\n\r\n init: function () {\r\n var self = this,\r\n firstItem = self.group[self.currIndex],\r\n firstItemOpts = firstItem.opts,\r\n $container,\r\n buttonStr;\r\n\r\n if (firstItemOpts.closeExisting) {\r\n $.fancybox.close(true);\r\n }\r\n\r\n // Hide scrollbars\r\n // ===============\r\n\r\n $(\"body\").addClass(\"fancybox-active\");\r\n\r\n if (\r\n !$.fancybox.getInstance() &&\r\n firstItemOpts.hideScrollbar !== false &&\r\n !$.fancybox.isMobile &&\r\n document.body.scrollHeight > window.innerHeight\r\n ) {\r\n $(\"head\").append(\r\n '\"\r\n );\r\n\r\n $(\"body\").addClass(\"compensate-for-scrollbar\");\r\n }\r\n\r\n // Build html markup and set references\r\n // ====================================\r\n\r\n // Build html code for buttons and insert into main template\r\n buttonStr = \"\";\r\n\r\n $.each(firstItemOpts.buttons, function (index, value) {\r\n buttonStr += firstItemOpts.btnTpl[value] || \"\";\r\n });\r\n\r\n // Create markup from base template, it will be initially hidden to\r\n // avoid unnecessary work like painting while initializing is not complete\r\n $container = $(\r\n self.translate(\r\n self,\r\n firstItemOpts.baseTpl\r\n .replace(\"{{buttons}}\", buttonStr)\r\n .replace(\"{{arrows}}\", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)\r\n )\r\n )\r\n .attr(\"id\", \"fancybox-container-\" + self.id)\r\n .addClass(firstItemOpts.baseClass)\r\n .data(\"FancyBox\", self)\r\n .appendTo(firstItemOpts.parentEl);\r\n\r\n // Create object holding references to jQuery wrapped nodes\r\n self.$refs = {\r\n container: $container\r\n };\r\n\r\n [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function (item) {\r\n self.$refs[item] = $container.find(\".fancybox-\" + item);\r\n });\r\n\r\n self.trigger(\"onInit\");\r\n\r\n // Enable events, deactive previous instances\r\n self.activate();\r\n\r\n // Build slides, load and reveal content\r\n self.jumpTo(self.currIndex);\r\n },\r\n\r\n // Simple i18n support - replaces object keys found in template\r\n // with corresponding values\r\n // ============================================================\r\n\r\n translate: function (obj, str) {\r\n var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en;\r\n\r\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, function (match, n) {\r\n return arr[n] === undefined ? match : arr[n];\r\n });\r\n },\r\n\r\n // Populate current group with fresh content\r\n // Check if each object has valid type and content\r\n // ===============================================\r\n\r\n addContent: function (content) {\r\n var self = this,\r\n items = $.makeArray(content),\r\n thumbs;\r\n\r\n $.each(items, function (i, item) {\r\n var obj = {},\r\n opts = {},\r\n $item,\r\n type,\r\n found,\r\n src,\r\n srcParts;\r\n\r\n // Step 1 - Make sure we have an object\r\n // ====================================\r\n\r\n if ($.isPlainObject(item)) {\r\n // We probably have manual usage here, something like\r\n // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n obj = item;\r\n opts = item.opts || item;\r\n } else if ($.type(item) === \"object\" && $(item).length) {\r\n // Here we probably have jQuery collection returned by some selector\r\n $item = $(item);\r\n\r\n // Support attributes like `data-options='{\"touch\" : false}'` and `data-touch='false'`\r\n opts = $item.data() || {};\r\n opts = $.extend(true, {}, opts, opts.options);\r\n\r\n // Here we store clicked element\r\n opts.$orig = $item;\r\n\r\n obj.src = self.opts.src || opts.src || $item.attr(\"href\");\r\n\r\n // Assume that simple syntax is used, for example:\r\n // `$.fancybox.open( $(\"#test\"), {} );`\r\n if (!obj.type && !obj.src) {\r\n obj.type = \"inline\";\r\n obj.src = item;\r\n }\r\n } else {\r\n // Assume we have a simple html code, for example:\r\n // $.fancybox.open( '

Hi!

' );\r\n obj = {\r\n type: \"html\",\r\n src: item + \"\"\r\n };\r\n }\r\n\r\n // Each gallery object has full collection of options\r\n obj.opts = $.extend(true, {}, self.opts, opts);\r\n\r\n // Do not merge buttons array\r\n if ($.isArray(opts.buttons)) {\r\n obj.opts.buttons = opts.buttons;\r\n }\r\n\r\n if ($.fancybox.isMobile && obj.opts.mobile) {\r\n obj.opts = mergeOpts(obj.opts, obj.opts.mobile);\r\n }\r\n\r\n // Step 2 - Make sure we have content type, if not - try to guess\r\n // ==============================================================\r\n\r\n type = obj.type || obj.opts.type;\r\n src = obj.src || \"\";\r\n\r\n if (!type && src) {\r\n if ((found = src.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))) {\r\n type = \"video\";\r\n\r\n if (!obj.opts.video.format) {\r\n obj.opts.video.format = \"video/\" + (found[1] === \"ogv\" ? \"ogg\" : found[1]);\r\n }\r\n } else if (src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)) {\r\n type = \"image\";\r\n } else if (src.match(/\\.(pdf)((\\?|#).*)?$/i)) {\r\n type = \"iframe\";\r\n obj = $.extend(true, obj, {\r\n contentType: \"pdf\",\r\n opts: {\r\n iframe: {\r\n preload: false\r\n }\r\n }\r\n });\r\n } else if (src.charAt(0) === \"#\") {\r\n type = \"inline\";\r\n }\r\n }\r\n\r\n if (type) {\r\n obj.type = type;\r\n } else {\r\n self.trigger(\"objectNeedsType\", obj);\r\n }\r\n\r\n if (!obj.contentType) {\r\n obj.contentType = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : obj.type;\r\n }\r\n\r\n // Step 3 - Some adjustments\r\n // =========================\r\n\r\n obj.index = self.group.length;\r\n\r\n if (obj.opts.smallBtn == \"auto\") {\r\n obj.opts.smallBtn = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1;\r\n }\r\n\r\n if (obj.opts.toolbar === \"auto\") {\r\n obj.opts.toolbar = !obj.opts.smallBtn;\r\n }\r\n\r\n // Find thumbnail image, check if exists and if is in the viewport\r\n obj.$thumb = obj.opts.$thumb || null;\r\n\r\n if (obj.opts.$trigger && obj.index === self.opts.index) {\r\n obj.$thumb = obj.opts.$trigger.find(\"img:first\");\r\n\r\n if (obj.$thumb.length) {\r\n obj.opts.$orig = obj.opts.$trigger;\r\n }\r\n }\r\n\r\n if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) {\r\n obj.$thumb = obj.opts.$orig.find(\"img:first\");\r\n }\r\n\r\n if (obj.$thumb && !obj.$thumb.length) {\r\n obj.$thumb = null;\r\n }\r\n\r\n obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null);\r\n\r\n // \"caption\" is a \"special\" option, it can be used to customize caption per gallery item\r\n if ($.type(obj.opts.caption) === \"function\") {\r\n obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n if ($.type(self.opts.caption) === \"function\") {\r\n obj.opts.caption = self.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n // Make sure we have caption as a string or jQuery object\r\n if (!(obj.opts.caption instanceof $)) {\r\n obj.opts.caption = obj.opts.caption === undefined ? \"\" : obj.opts.caption + \"\";\r\n }\r\n\r\n // Check if url contains \"filter\" used to filter the content\r\n // Example: \"ajax.html #something\"\r\n if (obj.type === \"ajax\") {\r\n srcParts = src.split(/\\s+/, 2);\r\n\r\n if (srcParts.length > 1) {\r\n obj.src = srcParts.shift();\r\n\r\n obj.opts.filter = srcParts.shift();\r\n }\r\n }\r\n\r\n // Hide all buttons and disable interactivity for modal items\r\n if (obj.opts.modal) {\r\n obj.opts = $.extend(true, obj.opts, {\r\n trapFocus: true,\r\n // Remove buttons\r\n infobar: 0,\r\n toolbar: 0,\r\n\r\n smallBtn: 0,\r\n\r\n // Disable keyboard navigation\r\n keyboard: 0,\r\n\r\n // Disable some modules\r\n slideShow: 0,\r\n fullScreen: 0,\r\n thumbs: 0,\r\n touch: 0,\r\n\r\n // Disable click event handlers\r\n clickContent: false,\r\n clickSlide: false,\r\n clickOutside: false,\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false\r\n });\r\n }\r\n\r\n // Step 4 - Add processed object to group\r\n // ======================================\r\n\r\n self.group.push(obj);\r\n });\r\n\r\n // Update controls if gallery is already opened\r\n if (Object.keys(self.slides).length) {\r\n self.updateControls();\r\n\r\n // Update thumbnails, if needed\r\n thumbs = self.Thumbs;\r\n\r\n if (thumbs && thumbs.isActive) {\r\n thumbs.create();\r\n\r\n thumbs.focus();\r\n }\r\n }\r\n },\r\n\r\n // Attach an event handler functions for:\r\n // - navigation buttons\r\n // - browser scrolling, resizing;\r\n // - focusing\r\n // - keyboard\r\n // - detecting inactivity\r\n // ======================================\r\n\r\n addEvents: function () {\r\n var self = this;\r\n\r\n self.removeEvents();\r\n\r\n // Make navigation elements clickable\r\n // ==================================\r\n\r\n self.$refs.container\r\n .on(\"click.fb-close\", \"[data-fancybox-close]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n })\r\n .on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.previous();\r\n })\r\n .on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.next();\r\n })\r\n .on(\"click.fb\", \"[data-fancybox-zoom]\", function (e) {\r\n // Click handler for zoom button\r\n self[self.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\r\n });\r\n\r\n // Handle page scrolling and browser resizing\r\n // ==========================================\r\n\r\n $W.on(\"orientationchange.fb resize.fb\", function (e) {\r\n if (e && e.originalEvent && e.originalEvent.type === \"resize\") {\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n self.update(e);\r\n });\r\n } else {\r\n if (self.current && self.current.type === \"iframe\") {\r\n self.$refs.stage.hide();\r\n }\r\n\r\n setTimeout(\r\n function () {\r\n self.$refs.stage.show();\r\n\r\n self.update(e);\r\n },\r\n $.fancybox.isMobile ? 600 : 250\r\n );\r\n }\r\n });\r\n\r\n $D.on(\"keydown.fb\", function (e) {\r\n var instance = $.fancybox ? $.fancybox.getInstance() : null,\r\n current = instance.current,\r\n keycode = e.keyCode || e.which;\r\n\r\n // Trap keyboard focus inside of the modal\r\n // =======================================\r\n\r\n if (keycode == 9) {\r\n if (current.opts.trapFocus) {\r\n self.focus(e);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Enable keyboard navigation\r\n // ==========================\r\n\r\n if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is(\"input,textarea,video,audio,select\")) {\r\n return;\r\n }\r\n\r\n // Backspace and Esc keys\r\n if (keycode === 8 || keycode === 27) {\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n\r\n return;\r\n }\r\n\r\n // Left arrow and Up arrow\r\n if (keycode === 37 || keycode === 38) {\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n return;\r\n }\r\n\r\n // Righ arrow and Down arrow\r\n if (keycode === 39 || keycode === 40) {\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n return;\r\n }\r\n\r\n self.trigger(\"afterKeydown\", e, keycode);\r\n });\r\n\r\n // Hide controls after some inactivity period\r\n if (self.group[self.currIndex].opts.idleTime) {\r\n self.idleSecondsCounter = 0;\r\n\r\n $D.on(\r\n \"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",\r\n function (e) {\r\n self.idleSecondsCounter = 0;\r\n\r\n if (self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n self.isIdle = false;\r\n }\r\n );\r\n\r\n self.idleInterval = window.setInterval(function () {\r\n self.idleSecondsCounter++;\r\n\r\n if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {\r\n self.isIdle = true;\r\n self.idleSecondsCounter = 0;\r\n\r\n self.hideControls();\r\n }\r\n }, 1000);\r\n }\r\n },\r\n\r\n // Remove events added by the core\r\n // ===============================\r\n\r\n removeEvents: function () {\r\n var self = this;\r\n\r\n $W.off(\"orientationchange.fb resize.fb\");\r\n $D.off(\"keydown.fb .fb-idle\");\r\n\r\n this.$refs.container.off(\".fb-close .fb-prev .fb-next\");\r\n\r\n if (self.idleInterval) {\r\n window.clearInterval(self.idleInterval);\r\n\r\n self.idleInterval = null;\r\n }\r\n },\r\n\r\n // Change to previous gallery item\r\n // ===============================\r\n\r\n previous: function (duration) {\r\n return this.jumpTo(this.currPos - 1, duration);\r\n },\r\n\r\n // Change to next gallery item\r\n // ===========================\r\n\r\n next: function (duration) {\r\n return this.jumpTo(this.currPos + 1, duration);\r\n },\r\n\r\n // Switch to selected gallery item\r\n // ===============================\r\n\r\n jumpTo: function (pos, duration) {\r\n var self = this,\r\n groupLen = self.group.length,\r\n firstRun,\r\n isMoved,\r\n loop,\r\n current,\r\n previous,\r\n slidePos,\r\n stagePos,\r\n prop,\r\n diff;\r\n\r\n if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {\r\n return;\r\n }\r\n\r\n // Should loop?\r\n pos = parseInt(pos, 10);\r\n loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n if (!loop && (pos < 0 || pos >= groupLen)) {\r\n return false;\r\n }\r\n\r\n // Check if opening for the first time; this helps to speed things up\r\n firstRun = self.firstRun = !Object.keys(self.slides).length;\r\n\r\n // Create slides\r\n previous = self.current;\r\n\r\n self.prevIndex = self.currIndex;\r\n self.prevPos = self.currPos;\r\n\r\n current = self.createSlide(pos);\r\n\r\n if (groupLen > 1) {\r\n if (loop || current.index < groupLen - 1) {\r\n self.createSlide(pos + 1);\r\n }\r\n\r\n if (loop || current.index > 0) {\r\n self.createSlide(pos - 1);\r\n }\r\n }\r\n\r\n self.current = current;\r\n self.currIndex = current.index;\r\n self.currPos = current.pos;\r\n\r\n self.trigger(\"beforeShow\", firstRun);\r\n\r\n self.updateControls();\r\n\r\n // Validate duration length\r\n current.forcedDuration = undefined;\r\n\r\n if ($.isNumeric(duration)) {\r\n current.forcedDuration = duration;\r\n } else {\r\n duration = current.opts[firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n }\r\n\r\n duration = parseInt(duration, 10);\r\n\r\n // Check if user has swiped the slides or if still animating\r\n isMoved = self.isMoved(current);\r\n\r\n // Make sure current slide is visible\r\n current.$slide.addClass(\"fancybox-slide--current\");\r\n\r\n // Fresh start - reveal container, current slide and start loading content\r\n if (firstRun) {\r\n if (current.opts.animationEffect && duration) {\r\n self.$refs.container.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n self.$refs.container.addClass(\"fancybox-is-open\").trigger(\"focus\");\r\n\r\n // Attempt to load content into slide\r\n // This will later call `afterLoad` -> `revealContent`\r\n self.loadSlide(current);\r\n\r\n self.preload(\"image\");\r\n\r\n return;\r\n }\r\n\r\n // Get actual slide/stage positions (before cleaning up)\r\n slidePos = $.fancybox.getTranslate(previous.$slide);\r\n stagePos = $.fancybox.getTranslate(self.$refs.stage);\r\n\r\n // Clean up all slides\r\n $.each(self.slides, function (index, slide) {\r\n $.fancybox.stop(slide.$slide, true);\r\n });\r\n\r\n if (previous.pos !== current.pos) {\r\n previous.isComplete = false;\r\n }\r\n\r\n previous.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current\");\r\n\r\n // If slides are out of place, then animate them to correct position\r\n if (isMoved) {\r\n // Calculate horizontal swipe distance\r\n diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter);\r\n\r\n $.each(self.slides, function (index, slide) {\r\n slide.$slide.removeClass(\"fancybox-animated\").removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n // Make sure that each slide is in equal distance\r\n // This is mostly needed for freshly added slides, because they are not yet positioned\r\n var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: 0,\r\n left: leftPos - stagePos.left + diff\r\n });\r\n\r\n if (slide.pos !== current.pos) {\r\n slide.$slide.addClass(\"fancybox-slide--\" + (slide.pos > current.pos ? \"next\" : \"previous\"));\r\n }\r\n\r\n // Redraw to make sure that transition will start\r\n forceRedraw(slide.$slide);\r\n\r\n // Animate the slide\r\n $.fancybox.animate(\r\n slide.$slide, {\r\n top: 0,\r\n left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter\r\n },\r\n duration,\r\n function () {\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\"\r\n })\r\n .removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n }\r\n );\r\n });\r\n } else if (duration && current.opts.transitionEffect) {\r\n // Set transition effect for previously active slide\r\n prop = \"fancybox-animated fancybox-fx-\" + current.opts.transitionEffect;\r\n\r\n previous.$slide.addClass(\"fancybox-slide--\" + (previous.pos > current.pos ? \"next\" : \"previous\"));\r\n\r\n $.fancybox.animate(\r\n previous.$slide,\r\n prop,\r\n duration,\r\n function () {\r\n previous.$slide.removeClass(prop).removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n },\r\n false\r\n );\r\n }\r\n\r\n if (current.isLoaded) {\r\n self.revealContent(current);\r\n } else {\r\n self.loadSlide(current);\r\n }\r\n\r\n self.preload(\"image\");\r\n },\r\n\r\n // Create new \"slide\" element\r\n // These are gallery items that are actually added to DOM\r\n // =======================================================\r\n\r\n createSlide: function (pos) {\r\n var self = this,\r\n $slide,\r\n index;\r\n\r\n index = pos % self.group.length;\r\n index = index < 0 ? self.group.length + index : index;\r\n\r\n if (!self.slides[pos] && self.group[index]) {\r\n $slide = $('
').appendTo(self.$refs.stage);\r\n\r\n self.slides[pos] = $.extend(true, {}, self.group[index], {\r\n pos: pos,\r\n $slide: $slide,\r\n isLoaded: false\r\n });\r\n\r\n self.updateSlide(self.slides[pos]);\r\n }\r\n\r\n return self.slides[pos];\r\n },\r\n\r\n // Scale image to the actual size of the image;\r\n // x and y values should be relative to the slide\r\n // ==============================================\r\n\r\n scaleToActual: function (x, y, duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n canvasWidth = $.fancybox.getTranslate(current.$slide).width,\r\n canvasHeight = $.fancybox.getTranslate(current.$slide).height,\r\n newImgWidth = current.width,\r\n newImgHeight = current.height,\r\n imgPos,\r\n posX,\r\n posY,\r\n scaleX,\r\n scaleY;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n x = x === undefined ? canvasWidth * 0.5 : x;\r\n y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n imgPos = $.fancybox.getTranslate($content);\r\n\r\n imgPos.top -= $.fancybox.getTranslate(current.$slide).top;\r\n imgPos.left -= $.fancybox.getTranslate(current.$slide).left;\r\n\r\n scaleX = newImgWidth / imgPos.width;\r\n scaleY = newImgHeight / imgPos.height;\r\n\r\n // Get center position for original image\r\n posX = canvasWidth * 0.5 - newImgWidth * 0.5;\r\n posY = canvasHeight * 0.5 - newImgHeight * 0.5;\r\n\r\n // Make sure image does not move away from edges\r\n if (newImgWidth > canvasWidth) {\r\n posX = imgPos.left * scaleX - (x * scaleX - x);\r\n\r\n if (posX > 0) {\r\n posX = 0;\r\n }\r\n\r\n if (posX < canvasWidth - newImgWidth) {\r\n posX = canvasWidth - newImgWidth;\r\n }\r\n }\r\n\r\n if (newImgHeight > canvasHeight) {\r\n posY = imgPos.top * scaleY - (y * scaleY - y);\r\n\r\n if (posY > 0) {\r\n posY = 0;\r\n }\r\n\r\n if (posY < canvasHeight - newImgHeight) {\r\n posY = canvasHeight - newImgHeight;\r\n }\r\n }\r\n\r\n self.updateCursor(newImgWidth, newImgHeight);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: posY,\r\n left: posX,\r\n scaleX: scaleX,\r\n scaleY: scaleY\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n\r\n // Stop slideshow\r\n if (self.SlideShow && self.SlideShow.isActive) {\r\n self.SlideShow.stop();\r\n }\r\n },\r\n\r\n // Scale image to fit inside parent element\r\n // ========================================\r\n\r\n scaleToFit: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n end;\r\n\r\n if (self.isAnimating || self.isMoved() || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n self.isAnimating = true;\r\n\r\n $.fancybox.stop($content);\r\n\r\n end = self.getFitPos(current);\r\n\r\n self.updateCursor(end.width, end.height);\r\n\r\n $.fancybox.animate(\r\n $content, {\r\n top: end.top,\r\n left: end.left,\r\n scaleX: end.width / $content.width(),\r\n scaleY: end.height / $content.height()\r\n },\r\n duration || 366,\r\n function () {\r\n self.isAnimating = false;\r\n }\r\n );\r\n },\r\n\r\n // Calculate image size to fit inside viewport\r\n // ===========================================\r\n\r\n getFitPos: function (slide) {\r\n var self = this,\r\n $content = slide.$content,\r\n $slide = slide.$slide,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n maxWidth,\r\n maxHeight,\r\n minRatio,\r\n aspectRatio,\r\n rez = {};\r\n\r\n if (!slide.isLoaded || !$content || !$content.length) {\r\n return false;\r\n }\r\n\r\n maxWidth = $.fancybox.getTranslate(self.$refs.stage).width;\r\n maxHeight = $.fancybox.getTranslate(self.$refs.stage).height;\r\n\r\n maxWidth -=\r\n parseFloat($slide.css(\"paddingLeft\")) +\r\n parseFloat($slide.css(\"paddingRight\")) +\r\n parseFloat($content.css(\"marginLeft\")) +\r\n parseFloat($content.css(\"marginRight\"));\r\n\r\n maxHeight -=\r\n parseFloat($slide.css(\"paddingTop\")) +\r\n parseFloat($slide.css(\"paddingBottom\")) +\r\n parseFloat($content.css(\"marginTop\")) +\r\n parseFloat($content.css(\"marginBottom\"));\r\n\r\n if (!width || !height) {\r\n width = maxWidth;\r\n height = maxHeight;\r\n }\r\n\r\n minRatio = Math.min(1, maxWidth / width, maxHeight / height);\r\n\r\n width = minRatio * width;\r\n height = minRatio * height;\r\n\r\n // Adjust width/height to precisely fit into container\r\n if (width > maxWidth - 0.5) {\r\n width = maxWidth;\r\n }\r\n\r\n if (height > maxHeight - 0.5) {\r\n height = maxHeight;\r\n }\r\n\r\n if (slide.type === \"image\") {\r\n rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css(\"paddingTop\"));\r\n rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css(\"paddingLeft\"));\r\n } else if (slide.contentType === \"video\") {\r\n // Force aspect ratio for the video\r\n // \"I say the whole world must learn of our peaceful ways… by force!\"\r\n aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;\r\n\r\n if (height > width / aspectRatio) {\r\n height = width / aspectRatio;\r\n } else if (width > height * aspectRatio) {\r\n width = height * aspectRatio;\r\n }\r\n }\r\n\r\n rez.width = width;\r\n rez.height = height;\r\n\r\n return rez;\r\n },\r\n\r\n // Update content size and position for all slides\r\n // ==============================================\r\n\r\n update: function (e) {\r\n var self = this;\r\n\r\n $.each(self.slides, function (key, slide) {\r\n self.updateSlide(slide, e);\r\n });\r\n },\r\n\r\n // Update slide content position and size\r\n // ======================================\r\n\r\n updateSlide: function (slide, e) {\r\n var self = this,\r\n $content = slide && slide.$content,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n $slide = slide.$slide;\r\n\r\n // First, prevent caption overlap, if needed\r\n self.adjustCaption(slide);\r\n\r\n // Then resize content to fit inside the slide\r\n if ($content && (width || height || slide.contentType === \"video\") && !slide.hasError) {\r\n $.fancybox.stop($content);\r\n\r\n $.fancybox.setTranslate($content, self.getFitPos(slide));\r\n\r\n if (slide.pos === self.currPos) {\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n }\r\n }\r\n\r\n // Then some adjustments\r\n self.adjustLayout(slide);\r\n\r\n if ($slide.length) {\r\n $slide.trigger(\"refresh\");\r\n\r\n if (slide.pos === self.currPos) {\r\n self.$refs.toolbar\r\n .add(self.$refs.navigation.find(\".fancybox-button--arrow_right\"))\r\n .toggleClass(\"compensate-for-scrollbar\", $slide.get(0).scrollHeight > $slide.get(0).clientHeight);\r\n }\r\n }\r\n\r\n self.trigger(\"onUpdate\", slide, e);\r\n },\r\n\r\n // Horizontally center slide\r\n // =========================\r\n\r\n centerSlide: function (duration) {\r\n var self = this,\r\n current = self.current,\r\n $slide = current.$slide;\r\n\r\n if (self.isClosing || !current) {\r\n return;\r\n }\r\n\r\n $slide.siblings().css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n $slide\r\n .parent()\r\n .children()\r\n .removeClass(\"fancybox-slide--previous fancybox-slide--next\");\r\n\r\n $.fancybox.animate(\r\n $slide, {\r\n top: 0,\r\n left: 0,\r\n opacity: 1\r\n },\r\n duration === undefined ? 0 : duration,\r\n function () {\r\n // Clean up\r\n $slide.css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (!current.isComplete) {\r\n self.complete();\r\n }\r\n },\r\n false\r\n );\r\n },\r\n\r\n // Check if current slide is moved (swiped)\r\n // ========================================\r\n\r\n isMoved: function (slide) {\r\n var current = slide || this.current,\r\n slidePos,\r\n stagePos;\r\n\r\n if (!current) {\r\n return false;\r\n }\r\n\r\n stagePos = $.fancybox.getTranslate(this.$refs.stage);\r\n slidePos = $.fancybox.getTranslate(current.$slide);\r\n\r\n return (\r\n !current.$slide.hasClass(\"fancybox-animated\") &&\r\n (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5)\r\n );\r\n },\r\n\r\n // Update cursor style depending if content can be zoomed\r\n // ======================================================\r\n\r\n updateCursor: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n $container = self.$refs.container,\r\n canPan,\r\n isZoomable;\r\n\r\n if (!current || self.isClosing || !self.Guestures) {\r\n return;\r\n }\r\n\r\n $container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan\");\r\n\r\n canPan = self.canPan(nextWidth, nextHeight);\r\n\r\n isZoomable = canPan ? true : self.isZoomable();\r\n\r\n $container.toggleClass(\"fancybox-is-zoomable\", isZoomable);\r\n\r\n $(\"[data-fancybox-zoom]\").prop(\"disabled\", !isZoomable);\r\n\r\n if (canPan) {\r\n $container.addClass(\"fancybox-can-pan\");\r\n } else if (\r\n isZoomable &&\r\n (current.opts.clickContent === \"zoom\" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == \"zoom\"))\r\n ) {\r\n $container.addClass(\"fancybox-can-zoomIn\");\r\n } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== \"video\") {\r\n $container.addClass(\"fancybox-can-swipe\");\r\n }\r\n },\r\n\r\n // Check if current slide is zoomable\r\n // ==================================\r\n\r\n isZoomable: function () {\r\n var self = this,\r\n current = self.current,\r\n fitPos;\r\n\r\n // Assume that slide is zoomable if:\r\n // - image is still loading\r\n // - actual size of the image is smaller than available area\r\n if (current && !self.isClosing && current.type === \"image\" && !current.hasError) {\r\n if (!current.isLoaded) {\r\n return true;\r\n }\r\n\r\n fitPos = self.getFitPos(current);\r\n\r\n if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Check if current image dimensions are smaller than actual\r\n // =========================================================\r\n\r\n isScaledDown: function (nextWidth, nextHeight) {\r\n var self = this,\r\n rez = false,\r\n current = self.current,\r\n $content = current.$content;\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n rez = nextWidth < current.width && nextHeight < current.height;\r\n } else if ($content) {\r\n rez = $.fancybox.getTranslate($content);\r\n rez = rez.width < current.width && rez.height < current.height;\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Check if image dimensions exceed parent element\r\n // ===============================================\r\n\r\n canPan: function (nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n pos = null,\r\n rez = false;\r\n\r\n if (current.type === \"image\" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) {\r\n rez = self.getFitPos(current);\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n pos = {\r\n width: nextWidth,\r\n height: nextHeight\r\n };\r\n } else if (current.isComplete) {\r\n pos = $.fancybox.getTranslate(current.$content);\r\n }\r\n\r\n if (pos && rez) {\r\n rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5;\r\n }\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Load content into the slide\r\n // ===========================\r\n\r\n loadSlide: function (slide) {\r\n var self = this,\r\n type,\r\n $slide,\r\n ajaxLoad;\r\n\r\n if (slide.isLoading || slide.isLoaded) {\r\n return;\r\n }\r\n\r\n slide.isLoading = true;\r\n\r\n if (self.trigger(\"beforeLoad\", slide) === false) {\r\n slide.isLoading = false;\r\n\r\n return false;\r\n }\r\n\r\n type = slide.type;\r\n $slide = slide.$slide;\r\n\r\n $slide\r\n .off(\"refresh\")\r\n .trigger(\"onReset\")\r\n .addClass(slide.opts.slideClass);\r\n\r\n // Create content depending on the type\r\n switch (type) {\r\n case \"image\":\r\n self.setImage(slide);\r\n\r\n break;\r\n\r\n case \"iframe\":\r\n self.setIframe(slide);\r\n\r\n break;\r\n\r\n case \"html\":\r\n self.setContent(slide, slide.src || slide.content);\r\n\r\n break;\r\n\r\n case \"video\":\r\n self.setContent(\r\n slide,\r\n slide.opts.video.tpl\r\n .replace(/\\{\\{src\\}\\}/gi, slide.src)\r\n .replace(\"{{format}}\", slide.opts.videoFormat || slide.opts.video.format || \"\")\r\n .replace(\"{{poster}}\", slide.thumb || \"\")\r\n );\r\n\r\n break;\r\n\r\n case \"inline\":\r\n if ($(slide.src).length) {\r\n self.setContent(slide, $(slide.src));\r\n } else {\r\n self.setError(slide);\r\n }\r\n\r\n break;\r\n\r\n case \"ajax\":\r\n self.showLoading(slide);\r\n\r\n ajaxLoad = $.ajax(\r\n $.extend({}, slide.opts.ajax.settings, {\r\n url: slide.src,\r\n success: function (data, textStatus) {\r\n if (textStatus === \"success\") {\r\n self.setContent(slide, data);\r\n }\r\n },\r\n error: function (jqXHR, textStatus) {\r\n if (jqXHR && textStatus !== \"abort\") {\r\n self.setError(slide);\r\n }\r\n }\r\n })\r\n );\r\n\r\n $slide.one(\"onReset\", function () {\r\n ajaxLoad.abort();\r\n });\r\n\r\n break;\r\n\r\n default:\r\n self.setError(slide);\r\n\r\n break;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Use thumbnail image, if possible\r\n // ================================\r\n\r\n setImage: function (slide) {\r\n var self = this,\r\n ghost;\r\n\r\n // Check if need to show loading icon\r\n setTimeout(function () {\r\n var $img = slide.$image;\r\n\r\n if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) {\r\n self.showLoading(slide);\r\n }\r\n }, 50);\r\n\r\n //Check if image has srcset\r\n self.checkSrcset(slide);\r\n\r\n // This will be wrapper containing both ghost and actual image\r\n slide.$content = $('
')\r\n .addClass(\"fancybox-is-hidden\")\r\n .appendTo(slide.$slide.addClass(\"fancybox-slide--image\"));\r\n\r\n // If we have a thumbnail, we can display it while actual image is loading\r\n // Users will not stare at black screen and actual image will appear gradually\r\n if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) {\r\n slide.width = slide.opts.width;\r\n slide.height = slide.opts.height;\r\n\r\n ghost = document.createElement(\"img\");\r\n\r\n ghost.onerror = function () {\r\n $(this).remove();\r\n\r\n slide.$ghost = null;\r\n };\r\n\r\n ghost.onload = function () {\r\n self.afterLoad(slide);\r\n };\r\n\r\n slide.$ghost = $(ghost)\r\n .addClass(\"fancybox-image\")\r\n .appendTo(slide.$content)\r\n .attr(\"src\", slide.thumb);\r\n }\r\n\r\n // Start loading actual image\r\n self.setBigImage(slide);\r\n },\r\n\r\n // Check if image has srcset and get the source\r\n // ============================================\r\n checkSrcset: function (slide) {\r\n var srcset = slide.opts.srcset || slide.opts.image.srcset,\r\n found,\r\n temp,\r\n pxRatio,\r\n windowWidth;\r\n\r\n // If we have \"srcset\", then we need to find first matching \"src\" value.\r\n // This is necessary, because when you set an src attribute, the browser will preload the image\r\n // before any javascript or even CSS is applied.\r\n if (srcset) {\r\n pxRatio = window.devicePixelRatio || 1;\r\n windowWidth = window.innerWidth * pxRatio;\r\n\r\n temp = srcset.split(\",\").map(function (el) {\r\n var ret = {};\r\n\r\n el.trim()\r\n .split(/\\s+/)\r\n .forEach(function (el, i) {\r\n var value = parseInt(el.substring(0, el.length - 1), 10);\r\n\r\n if (i === 0) {\r\n return (ret.url = el);\r\n }\r\n\r\n if (value) {\r\n ret.value = value;\r\n ret.postfix = el[el.length - 1];\r\n }\r\n });\r\n\r\n return ret;\r\n });\r\n\r\n // Sort by value\r\n temp.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n\r\n // Ok, now we have an array of all srcset values\r\n for (var j = 0; j < temp.length; j++) {\r\n var el = temp[j];\r\n\r\n if ((el.postfix === \"w\" && el.value >= windowWidth) || (el.postfix === \"x\" && el.value >= pxRatio)) {\r\n found = el;\r\n break;\r\n }\r\n }\r\n\r\n // If not found, take the last one\r\n if (!found && temp.length) {\r\n found = temp[temp.length - 1];\r\n }\r\n\r\n if (found) {\r\n slide.src = found.url;\r\n\r\n // If we have default width/height values, we can calculate height for matching source\r\n if (slide.width && slide.height && found.postfix == \"w\") {\r\n slide.height = (slide.width / slide.height) * found.value;\r\n slide.width = found.value;\r\n }\r\n\r\n slide.opts.srcset = srcset;\r\n }\r\n }\r\n },\r\n\r\n // Create full-size image\r\n // ======================\r\n\r\n setBigImage: function (slide) {\r\n var self = this,\r\n img = document.createElement(\"img\"),\r\n $img = $(img);\r\n\r\n slide.$image = $img\r\n .one(\"error\", function () {\r\n self.setError(slide);\r\n })\r\n .one(\"load\", function () {\r\n var sizes;\r\n\r\n if (!slide.$ghost) {\r\n self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight);\r\n\r\n self.afterLoad(slide);\r\n }\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (slide.opts.srcset) {\r\n sizes = slide.opts.sizes;\r\n\r\n if (!sizes || sizes === \"auto\") {\r\n sizes =\r\n (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? \"100\" : Math.round((slide.width / slide.height) * 100)) +\r\n \"vw\";\r\n }\r\n\r\n $img.attr(\"sizes\", sizes).attr(\"srcset\", slide.opts.srcset);\r\n }\r\n\r\n // Hide temporary image after some delay\r\n if (slide.$ghost) {\r\n setTimeout(function () {\r\n if (slide.$ghost && !self.isClosing) {\r\n slide.$ghost.hide();\r\n }\r\n }, Math.min(300, Math.max(1000, slide.height / 1600)));\r\n }\r\n\r\n self.hideLoading(slide);\r\n })\r\n .addClass(\"fancybox-image\")\r\n .attr(\"src\", slide.src)\r\n .appendTo(slide.$content);\r\n\r\n if ((img.complete || img.readyState == \"complete\") && $img.naturalWidth && $img.naturalHeight) {\r\n $img.trigger(\"load\");\r\n } else if (img.error) {\r\n $img.trigger(\"error\");\r\n }\r\n },\r\n\r\n // Computes the slide size from image size and maxWidth/maxHeight\r\n // ==============================================================\r\n\r\n resolveImageSlideSize: function (slide, imgWidth, imgHeight) {\r\n var maxWidth = parseInt(slide.opts.width, 10),\r\n maxHeight = parseInt(slide.opts.height, 10);\r\n\r\n // Sets the default values from the image\r\n slide.width = imgWidth;\r\n slide.height = imgHeight;\r\n\r\n if (maxWidth > 0) {\r\n slide.width = maxWidth;\r\n slide.height = Math.floor((maxWidth * imgHeight) / imgWidth);\r\n }\r\n\r\n if (maxHeight > 0) {\r\n slide.width = Math.floor((maxHeight * imgWidth) / imgHeight);\r\n slide.height = maxHeight;\r\n }\r\n },\r\n\r\n // Create iframe wrapper, iframe and bindings\r\n // ==========================================\r\n\r\n setIframe: function (slide) {\r\n var self = this,\r\n opts = slide.opts.iframe,\r\n $slide = slide.$slide,\r\n $iframe;\r\n\r\n slide.$content = $('
')\r\n .css(opts.css)\r\n .appendTo($slide);\r\n\r\n $slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n slide.$iframe = $iframe = $(opts.tpl.replace(/\\{rnd\\}/g, new Date().getTime()))\r\n .attr(opts.attr)\r\n .appendTo(slide.$content);\r\n\r\n if (opts.preload) {\r\n self.showLoading(slide);\r\n\r\n // Unfortunately, it is not always possible to determine if iframe is successfully loaded\r\n // (due to browser security policy)\r\n\r\n $iframe.on(\"load.fb error.fb\", function (e) {\r\n this.isReady = 1;\r\n\r\n slide.$slide.trigger(\"refresh\");\r\n\r\n self.afterLoad(slide);\r\n });\r\n\r\n // Recalculate iframe content size\r\n // ===============================\r\n\r\n $slide.on(\"refresh.fb\", function () {\r\n var $content = slide.$content,\r\n frameWidth = opts.css.width,\r\n frameHeight = opts.css.height,\r\n $contents,\r\n $body;\r\n\r\n if ($iframe[0].isReady !== 1) {\r\n return;\r\n }\r\n\r\n try {\r\n $contents = $iframe.contents();\r\n $body = $contents.find(\"body\");\r\n } catch (ignore) {}\r\n\r\n // Calculate content dimensions, if it is accessible\r\n if ($body && $body.length && $body.children().length) {\r\n // Avoid scrolling to top (if multiple instances)\r\n $slide.css(\"overflow\", \"visible\");\r\n\r\n $content.css({\r\n width: \"100%\",\r\n \"max-width\": \"100%\",\r\n height: \"9999px\"\r\n });\r\n\r\n if (frameWidth === undefined) {\r\n frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true)));\r\n }\r\n\r\n $content.css(\"width\", frameWidth ? frameWidth : \"\").css(\"max-width\", \"\");\r\n\r\n if (frameHeight === undefined) {\r\n frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true)));\r\n }\r\n\r\n $content.css(\"height\", frameHeight ? frameHeight : \"\");\r\n\r\n $slide.css(\"overflow\", \"auto\");\r\n }\r\n\r\n $content.removeClass(\"fancybox-is-hidden\");\r\n });\r\n } else {\r\n self.afterLoad(slide);\r\n }\r\n\r\n $iframe.attr(\"src\", slide.src);\r\n\r\n // Remove iframe if closing or changing gallery item\r\n $slide.one(\"onReset\", function () {\r\n // This helps IE not to throw errors when closing\r\n try {\r\n $(this)\r\n .find(\"iframe\")\r\n .hide()\r\n .unbind()\r\n .attr(\"src\", \"//about:blank\");\r\n } catch (ignore) {}\r\n\r\n $(this)\r\n .off(\"refresh.fb\")\r\n .empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n });\r\n },\r\n\r\n // Wrap and append content to the slide\r\n // ======================================\r\n\r\n setContent: function (slide, content) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n self.hideLoading(slide);\r\n\r\n if (slide.$content) {\r\n $.fancybox.stop(slide.$content);\r\n }\r\n\r\n slide.$slide.empty();\r\n\r\n // If content is a jQuery object, then it will be moved to the slide.\r\n // The placeholder is created so we will know where to put it back.\r\n if (isQuery(content) && content.parent().length) {\r\n // Make sure content is not already moved to fancyBox\r\n if (content.hasClass(\"fancybox-content\") || content.parent().hasClass(\"fancybox-content\")) {\r\n content.parents(\".fancybox-slide\").trigger(\"onReset\");\r\n }\r\n\r\n // Create temporary element marking original place of the content\r\n slide.$placeholder = $(\"
\")\r\n .hide()\r\n .insertAfter(content);\r\n\r\n // Make sure content is visible\r\n content.css(\"display\", \"inline-block\");\r\n } else if (!slide.hasError) {\r\n // If content is just a plain text, try to convert it to html\r\n if ($.type(content) === \"string\") {\r\n content = $(\"
\")\r\n .append($.trim(content))\r\n .contents();\r\n }\r\n\r\n // If \"filter\" option is provided, then filter content\r\n if (slide.opts.filter) {\r\n content = $(\"
\")\r\n .html(content)\r\n .find(slide.opts.filter);\r\n }\r\n }\r\n\r\n slide.$slide.one(\"onReset\", function () {\r\n // Pause all html5 video/audio\r\n $(this)\r\n .find(\"video,audio\")\r\n .trigger(\"pause\");\r\n\r\n // Put content back\r\n if (slide.$placeholder) {\r\n slide.$placeholder.after(content.removeClass(\"fancybox-content\").hide()).remove();\r\n\r\n slide.$placeholder = null;\r\n }\r\n\r\n // Remove custom close button\r\n if (slide.$smallBtn) {\r\n slide.$smallBtn.remove();\r\n\r\n slide.$smallBtn = null;\r\n }\r\n\r\n // Remove content and mark slide as not loaded\r\n if (!slide.hasError) {\r\n $(this).empty();\r\n\r\n slide.isLoaded = false;\r\n slide.isRevealed = false;\r\n }\r\n });\r\n\r\n $(content).appendTo(slide.$slide);\r\n\r\n if ($(content).is(\"video,audio\")) {\r\n $(content).addClass(\"fancybox-video\");\r\n\r\n $(content).wrap(\"
\");\r\n\r\n slide.contentType = \"video\";\r\n\r\n slide.opts.width = slide.opts.width || $(content).attr(\"width\");\r\n slide.opts.height = slide.opts.height || $(content).attr(\"height\");\r\n }\r\n\r\n slide.$content = slide.$slide\r\n .children()\r\n .filter(\"div,form,main,video,audio,article,.fancybox-content\")\r\n .first();\r\n\r\n slide.$content.siblings().hide();\r\n\r\n // Re-check if there is a valid content\r\n // (in some cases, ajax response can contain various elements or plain text)\r\n if (!slide.$content.length) {\r\n slide.$content = slide.$slide\r\n .wrapInner(\"
\")\r\n .children()\r\n .first();\r\n }\r\n\r\n slide.$content.addClass(\"fancybox-content\");\r\n\r\n slide.$slide.addClass(\"fancybox-slide--\" + slide.contentType);\r\n\r\n self.afterLoad(slide);\r\n },\r\n\r\n // Display error message\r\n // =====================\r\n\r\n setError: function (slide) {\r\n slide.hasError = true;\r\n\r\n slide.$slide\r\n .trigger(\"onReset\")\r\n .removeClass(\"fancybox-slide--\" + slide.contentType)\r\n .addClass(\"fancybox-slide--error\");\r\n\r\n slide.contentType = \"html\";\r\n\r\n this.setContent(slide, this.translate(slide, slide.opts.errorTpl));\r\n\r\n if (slide.pos === this.currPos) {\r\n this.isAnimating = false;\r\n }\r\n },\r\n\r\n // Show loading icon inside the slide\r\n // ==================================\r\n\r\n showLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && !slide.$spinner) {\r\n slide.$spinner = $(self.translate(self, self.opts.spinnerTpl))\r\n .appendTo(slide.$slide)\r\n .hide()\r\n .fadeIn(\"fast\");\r\n }\r\n },\r\n\r\n // Remove loading icon from the slide\r\n // ==================================\r\n\r\n hideLoading: function (slide) {\r\n var self = this;\r\n\r\n slide = slide || self.current;\r\n\r\n if (slide && slide.$spinner) {\r\n slide.$spinner.stop().remove();\r\n\r\n delete slide.$spinner;\r\n }\r\n },\r\n\r\n // Adjustments after slide content has been loaded\r\n // ===============================================\r\n\r\n afterLoad: function (slide) {\r\n var self = this;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n slide.isLoading = false;\r\n slide.isLoaded = true;\r\n\r\n self.trigger(\"afterLoad\", slide);\r\n\r\n self.hideLoading(slide);\r\n\r\n // Add small close button\r\n if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) {\r\n slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content);\r\n }\r\n\r\n // Disable right click\r\n if (slide.opts.protect && slide.$content && !slide.hasError) {\r\n slide.$content.on(\"contextmenu.fb\", function (e) {\r\n if (e.button == 2) {\r\n e.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n\r\n // Add fake element on top of the image\r\n // This makes a bit harder for user to select image\r\n if (slide.type === \"image\") {\r\n $('
').appendTo(slide.$content);\r\n }\r\n }\r\n\r\n self.adjustCaption(slide);\r\n\r\n self.adjustLayout(slide);\r\n\r\n if (slide.pos === self.currPos) {\r\n self.updateCursor();\r\n }\r\n\r\n self.revealContent(slide);\r\n },\r\n\r\n // Prevent caption overlap,\r\n // fix css inconsistency across browsers\r\n // =====================================\r\n\r\n adjustCaption: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n caption = current.opts.caption,\r\n preventOverlap = current.opts.preventCaptionOverlap,\r\n $caption = self.$refs.caption,\r\n $clone,\r\n captionH = false;\r\n\r\n $caption.toggleClass(\"fancybox-caption--separate\", preventOverlap);\r\n\r\n if (preventOverlap && caption && caption.length) {\r\n if (current.pos !== self.currPos) {\r\n $clone = $caption.clone().appendTo($caption.parent());\r\n\r\n $clone\r\n .children()\r\n .eq(0)\r\n .empty()\r\n .html(caption);\r\n\r\n captionH = $clone.outerHeight(true);\r\n\r\n $clone.empty().remove();\r\n } else if (self.$caption) {\r\n captionH = self.$caption.outerHeight(true);\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", captionH || \"\");\r\n }\r\n },\r\n\r\n // Simple hack to fix inconsistency across browsers, described here (affects Edge, too):\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=748518\r\n // ====================================================================================\r\n\r\n adjustLayout: function (slide) {\r\n var self = this,\r\n current = slide || self.current,\r\n scrollHeight,\r\n marginBottom,\r\n inlinePadding,\r\n actualPadding;\r\n\r\n if (current.isLoaded && current.opts.disableLayoutFix !== true) {\r\n current.$content.css(\"margin-bottom\", \"\");\r\n\r\n // If we would always set margin-bottom for the content,\r\n // then it would potentially break vertical align\r\n if (current.$content.outerHeight() > current.$slide.height() + 0.5) {\r\n inlinePadding = current.$slide[0].style[\"padding-bottom\"];\r\n actualPadding = current.$slide.css(\"padding-bottom\");\r\n\r\n if (parseFloat(actualPadding) > 0) {\r\n scrollHeight = current.$slide[0].scrollHeight;\r\n\r\n current.$slide.css(\"padding-bottom\", 0);\r\n\r\n if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) {\r\n marginBottom = actualPadding;\r\n }\r\n\r\n current.$slide.css(\"padding-bottom\", inlinePadding);\r\n }\r\n }\r\n\r\n current.$content.css(\"margin-bottom\", marginBottom);\r\n }\r\n },\r\n\r\n // Make content visible\r\n // This method is called right after content has been loaded or\r\n // user navigates gallery and transition should start\r\n // ============================================================\r\n\r\n revealContent: function (slide) {\r\n var self = this,\r\n $slide = slide.$slide,\r\n end = false,\r\n start = false,\r\n isMoved = self.isMoved(slide),\r\n isRevealed = slide.isRevealed,\r\n effect,\r\n effectClassName,\r\n duration,\r\n opacity;\r\n\r\n slide.isRevealed = true;\r\n\r\n effect = slide.opts[self.firstRun ? \"animationEffect\" : \"transitionEffect\"];\r\n duration = slide.opts[self.firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n\r\n duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10);\r\n\r\n if (isMoved || slide.pos !== self.currPos || !duration) {\r\n effect = false;\r\n }\r\n\r\n // Check if can zoom\r\n if (effect === \"zoom\") {\r\n if (slide.pos === self.currPos && duration && slide.type === \"image\" && !slide.hasError && (start = self.getThumbPos(slide))) {\r\n end = self.getFitPos(slide);\r\n } else {\r\n effect = \"fade\";\r\n }\r\n }\r\n\r\n // Zoom animation\r\n // ==============\r\n if (effect === \"zoom\") {\r\n self.isAnimating = true;\r\n\r\n end.scaleX = end.width / start.width;\r\n end.scaleY = end.height / start.height;\r\n\r\n // Check if we need to animate opacity\r\n opacity = slide.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n start.opacity = 0.1;\r\n end.opacity = 1;\r\n }\r\n\r\n // Draw image at start position\r\n $.fancybox.setTranslate(slide.$content.removeClass(\"fancybox-is-hidden\"), start);\r\n\r\n forceRedraw(slide.$content);\r\n\r\n // Start animation\r\n $.fancybox.animate(slide.$content, end, duration, function () {\r\n self.isAnimating = false;\r\n\r\n self.complete();\r\n });\r\n\r\n return;\r\n }\r\n\r\n self.updateSlide(slide);\r\n\r\n // Simply show content if no effect\r\n // ================================\r\n if (!effect) {\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n if (!isRevealed && isMoved && slide.type === \"image\" && !slide.hasError) {\r\n slide.$content.hide().fadeIn(\"fast\");\r\n }\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Prepare for CSS transiton\r\n // =========================\r\n $.fancybox.stop($slide);\r\n\r\n //effectClassName = \"fancybox-animated fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-fx-\" + effect;\r\n effectClassName = \"fancybox-slide--\" + (slide.pos >= self.prevPos ? \"next\" : \"previous\") + \" fancybox-animated fancybox-fx-\" + effect;\r\n\r\n $slide.addClass(effectClassName).removeClass(\"fancybox-slide--current\"); //.addClass(effectClassName);\r\n\r\n slide.$content.removeClass(\"fancybox-is-hidden\");\r\n\r\n // Force reflow\r\n forceRedraw($slide);\r\n\r\n if (slide.type !== \"image\") {\r\n slide.$content.hide().show(0);\r\n }\r\n\r\n $.fancybox.animate(\r\n $slide,\r\n \"fancybox-slide--current\",\r\n duration,\r\n function () {\r\n $slide.removeClass(effectClassName).css({\r\n transform: \"\",\r\n opacity: \"\"\r\n });\r\n\r\n if (slide.pos === self.currPos) {\r\n self.complete();\r\n }\r\n },\r\n true\r\n );\r\n },\r\n\r\n // Check if we can and have to zoom from thumbnail\r\n //================================================\r\n\r\n getThumbPos: function (slide) {\r\n var rez = false,\r\n $thumb = slide.$thumb,\r\n thumbPos,\r\n btw,\r\n brw,\r\n bbw,\r\n blw;\r\n\r\n if (!$thumb || !inViewport($thumb[0])) {\r\n return false;\r\n }\r\n\r\n thumbPos = $.fancybox.getTranslate($thumb);\r\n\r\n btw = parseFloat($thumb.css(\"border-top-width\") || 0);\r\n brw = parseFloat($thumb.css(\"border-right-width\") || 0);\r\n bbw = parseFloat($thumb.css(\"border-bottom-width\") || 0);\r\n blw = parseFloat($thumb.css(\"border-left-width\") || 0);\r\n\r\n rez = {\r\n top: thumbPos.top + btw,\r\n left: thumbPos.left + blw,\r\n width: thumbPos.width - brw - blw,\r\n height: thumbPos.height - btw - bbw,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false;\r\n },\r\n\r\n // Final adjustments after current gallery item is moved to position\r\n // and it`s content is loaded\r\n // ==================================================================\r\n\r\n complete: function () {\r\n var self = this,\r\n current = self.current,\r\n slides = {},\r\n $el;\r\n\r\n if (self.isMoved() || !current.isLoaded) {\r\n return;\r\n }\r\n\r\n if (!current.isComplete) {\r\n current.isComplete = true;\r\n\r\n current.$slide.siblings().trigger(\"onReset\");\r\n\r\n self.preload(\"inline\");\r\n\r\n // Trigger any CSS transiton inside the slide\r\n forceRedraw(current.$slide);\r\n\r\n current.$slide.addClass(\"fancybox-slide--complete\");\r\n\r\n // Remove unnecessary slides\r\n $.each(self.slides, function (key, slide) {\r\n if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) {\r\n slides[slide.pos] = slide;\r\n } else if (slide) {\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slide.$slide.off().remove();\r\n }\r\n });\r\n\r\n self.slides = slides;\r\n }\r\n\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n\r\n self.trigger(\"afterShow\");\r\n\r\n // Autoplay first html5 video/audio\r\n if (!!current.opts.video.autoStart) {\r\n current.$slide\r\n .find(\"video,audio\")\r\n .filter(\":visible:first\")\r\n .trigger(\"play\")\r\n .one(\"ended\", function () {\r\n if (Document.exitFullscreen) {\r\n Document.exitFullscreen();\r\n } else if (this.webkitExitFullscreen) {\r\n this.webkitExitFullscreen();\r\n }\r\n\r\n self.next();\r\n });\r\n }\r\n\r\n // Try to focus on the first focusable element\r\n if (current.opts.autoFocus && current.contentType === \"html\") {\r\n // Look for the first input with autofocus attribute\r\n $el = current.$content.find(\"input[autofocus]:enabled:visible:first\");\r\n\r\n if ($el.length) {\r\n $el.trigger(\"focus\");\r\n } else {\r\n self.focus(null, true);\r\n }\r\n }\r\n\r\n // Avoid jumping\r\n current.$slide.scrollTop(0).scrollLeft(0);\r\n },\r\n\r\n // Preload next and previous slides\r\n // ================================\r\n\r\n preload: function (type) {\r\n var self = this,\r\n prev,\r\n next;\r\n\r\n if (self.group.length < 2) {\r\n return;\r\n }\r\n\r\n next = self.slides[self.currPos + 1];\r\n prev = self.slides[self.currPos - 1];\r\n\r\n if (prev && prev.type === type) {\r\n self.loadSlide(prev);\r\n }\r\n\r\n if (next && next.type === type) {\r\n self.loadSlide(next);\r\n }\r\n },\r\n\r\n // Try to find and focus on the first focusable element\r\n // ====================================================\r\n\r\n focus: function (e, firstRun) {\r\n var self = this,\r\n focusableStr = [\r\n \"a[href]\",\r\n \"area[href]\",\r\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\r\n \"select:not([disabled]):not([aria-hidden])\",\r\n \"textarea:not([disabled]):not([aria-hidden])\",\r\n \"button:not([disabled]):not([aria-hidden])\",\r\n \"iframe\",\r\n \"object\",\r\n \"embed\",\r\n \"video\",\r\n \"audio\",\r\n \"[contenteditable]\",\r\n '[tabindex]:not([tabindex^=\"-\"])'\r\n ].join(\",\"),\r\n focusableItems,\r\n focusedItemIndex;\r\n\r\n if (self.isClosing) {\r\n return;\r\n }\r\n\r\n if (e || !self.current || !self.current.isComplete) {\r\n // Focus on any element inside fancybox\r\n focusableItems = self.$refs.container.find(\"*:visible\");\r\n } else {\r\n // Focus inside current slide\r\n focusableItems = self.current.$slide.find(\"*:visible\" + (firstRun ? \":not(.fancybox-close-small)\" : \"\"));\r\n }\r\n\r\n focusableItems = focusableItems.filter(focusableStr).filter(function () {\r\n return $(this).css(\"visibility\") !== \"hidden\" && !$(this).hasClass(\"disabled\");\r\n });\r\n\r\n if (focusableItems.length) {\r\n focusedItemIndex = focusableItems.index(document.activeElement);\r\n\r\n if (e && e.shiftKey) {\r\n // Back tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == 0) {\r\n e.preventDefault();\r\n\r\n focusableItems.eq(focusableItems.length - 1).trigger(\"focus\");\r\n }\r\n } else {\r\n // Outside or Forward tab\r\n if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n focusableItems.eq(0).trigger(\"focus\");\r\n }\r\n }\r\n } else {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Activates current instance - brings container to the front and enables keyboard,\r\n // notifies other instances about deactivating\r\n // =================================================================================\r\n\r\n activate: function () {\r\n var self = this;\r\n\r\n // Deactivate all instances\r\n $(\".fancybox-container\").each(function () {\r\n var instance = $(this).data(\"FancyBox\");\r\n\r\n // Skip self and closing instances\r\n if (instance && instance.id !== self.id && !instance.isClosing) {\r\n instance.trigger(\"onDeactivate\");\r\n\r\n instance.removeEvents();\r\n\r\n instance.isVisible = false;\r\n }\r\n });\r\n\r\n self.isVisible = true;\r\n\r\n if (self.current || self.isIdle) {\r\n self.update();\r\n\r\n self.updateControls();\r\n }\r\n\r\n self.trigger(\"onActivate\");\r\n\r\n self.addEvents();\r\n },\r\n\r\n // Start closing procedure\r\n // This will start \"zoom-out\" animation if needed and clean everything up afterwards\r\n // =================================================================================\r\n\r\n close: function (e, d) {\r\n var self = this,\r\n current = self.current,\r\n effect,\r\n duration,\r\n $content,\r\n domRect,\r\n opacity,\r\n start,\r\n end;\r\n\r\n var done = function () {\r\n self.cleanUp(e);\r\n };\r\n\r\n if (self.isClosing) {\r\n return false;\r\n }\r\n\r\n self.isClosing = true;\r\n\r\n // If beforeClose callback prevents closing, make sure content is centered\r\n if (self.trigger(\"beforeClose\", e) === false) {\r\n self.isClosing = false;\r\n\r\n requestAFrame(function () {\r\n self.update();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // Remove all events\r\n // If there are multiple instances, they will be set again by \"activate\" method\r\n self.removeEvents();\r\n\r\n $content = current.$content;\r\n effect = current.opts.animationEffect;\r\n duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0;\r\n\r\n current.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\");\r\n\r\n if (e !== true) {\r\n $.fancybox.stop(current.$slide);\r\n } else {\r\n effect = false;\r\n }\r\n\r\n // Remove other slides\r\n current.$slide\r\n .siblings()\r\n .trigger(\"onReset\")\r\n .remove();\r\n\r\n // Trigger animations\r\n if (duration) {\r\n self.$refs.container\r\n .removeClass(\"fancybox-is-open\")\r\n .addClass(\"fancybox-is-closing\")\r\n .css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Clean up\r\n self.hideLoading(current);\r\n\r\n self.hideControls(true);\r\n\r\n self.updateCursor();\r\n\r\n // Check if possible to zoom-out\r\n if (\r\n effect === \"zoom\" &&\r\n !($content && duration && current.type === \"image\" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current)))\r\n ) {\r\n effect = \"fade\";\r\n }\r\n\r\n if (effect === \"zoom\") {\r\n $.fancybox.stop($content);\r\n\r\n domRect = $.fancybox.getTranslate($content);\r\n\r\n start = {\r\n top: domRect.top,\r\n left: domRect.left,\r\n scaleX: domRect.width / end.width,\r\n scaleY: domRect.height / end.height,\r\n width: end.width,\r\n height: end.height\r\n };\r\n\r\n // Check if we need to animate opacity\r\n opacity = current.opts.zoomOpacity;\r\n\r\n if (opacity == \"auto\") {\r\n opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1;\r\n }\r\n\r\n if (opacity) {\r\n end.opacity = 0;\r\n }\r\n\r\n $.fancybox.setTranslate($content, start);\r\n\r\n forceRedraw($content);\r\n\r\n $.fancybox.animate($content, end, duration, done);\r\n\r\n return true;\r\n }\r\n\r\n if (effect && duration) {\r\n $.fancybox.animate(\r\n current.$slide.addClass(\"fancybox-slide--previous\").removeClass(\"fancybox-slide--current\"),\r\n \"fancybox-animated fancybox-fx-\" + effect,\r\n duration,\r\n done\r\n );\r\n } else {\r\n // If skip animation\r\n if (e === true) {\r\n setTimeout(done, duration);\r\n } else {\r\n done();\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // Final adjustments after removing the instance\r\n // =============================================\r\n\r\n cleanUp: function (e) {\r\n var self = this,\r\n instance,\r\n $focus = self.current.opts.$orig,\r\n x,\r\n y;\r\n\r\n self.current.$slide.trigger(\"onReset\");\r\n\r\n self.$refs.container.empty().remove();\r\n\r\n self.trigger(\"afterClose\", e);\r\n\r\n // Place back focus\r\n if (!!self.current.opts.backFocus) {\r\n if (!$focus || !$focus.length || !$focus.is(\":visible\")) {\r\n $focus = self.$trigger;\r\n }\r\n\r\n if ($focus && $focus.length) {\r\n x = window.scrollX;\r\n y = window.scrollY;\r\n\r\n $focus.trigger(\"focus\");\r\n\r\n $(\"html, body\")\r\n .scrollTop(y)\r\n .scrollLeft(x);\r\n }\r\n }\r\n\r\n self.current = null;\r\n\r\n // Check if there are other instances\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n instance.activate();\r\n } else {\r\n $(\"body\").removeClass(\"fancybox-active compensate-for-scrollbar\");\r\n\r\n $(\"#fancybox-style-noscroll\").remove();\r\n }\r\n },\r\n\r\n // Call callback and trigger an event\r\n // ==================================\r\n\r\n trigger: function (name, slide) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n self = this,\r\n obj = slide && slide.opts ? slide : self.current,\r\n rez;\r\n\r\n if (obj) {\r\n args.unshift(obj);\r\n } else {\r\n obj = self;\r\n }\r\n\r\n args.unshift(self);\r\n\r\n if ($.isFunction(obj.opts[name])) {\r\n rez = obj.opts[name].apply(obj, args);\r\n }\r\n\r\n if (rez === false) {\r\n return rez;\r\n }\r\n\r\n if (name === \"afterClose\" || !self.$refs) {\r\n $D.trigger(name + \".fb\", args);\r\n } else {\r\n self.$refs.container.trigger(name + \".fb\", args);\r\n }\r\n },\r\n\r\n // Update infobar values, navigation button states and reveal caption\r\n // ==================================================================\r\n\r\n updateControls: function () {\r\n var self = this,\r\n current = self.current,\r\n index = current.index,\r\n $container = self.$refs.container,\r\n $caption = self.$refs.caption,\r\n caption = current.opts.caption;\r\n\r\n // Recalculate content dimensions\r\n current.$slide.trigger(\"refresh\");\r\n\r\n // Set caption\r\n if (caption && caption.length) {\r\n self.$caption = $caption;\r\n\r\n $caption\r\n .children()\r\n .eq(0)\r\n .html(caption);\r\n } else {\r\n self.$caption = null;\r\n }\r\n\r\n if (!self.hasHiddenControls && !self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n // Update info and navigation elements\r\n $container.find(\"[data-fancybox-count]\").html(self.group.length);\r\n $container.find(\"[data-fancybox-index]\").html(index + 1);\r\n\r\n $container.find(\"[data-fancybox-prev]\").prop(\"disabled\", !current.opts.loop && index <= 0);\r\n $container.find(\"[data-fancybox-next]\").prop(\"disabled\", !current.opts.loop && index >= self.group.length - 1);\r\n\r\n if (current.type === \"image\") {\r\n // Re-enable buttons; update download button source\r\n $container\r\n .find(\"[data-fancybox-zoom]\")\r\n .show()\r\n .end()\r\n .find(\"[data-fancybox-download]\")\r\n .attr(\"href\", current.opts.image.src || current.src)\r\n .show();\r\n } else if (current.opts.toolbar) {\r\n $container.find(\"[data-fancybox-download],[data-fancybox-zoom]\").hide();\r\n }\r\n\r\n // Make sure focus is not on disabled button/element\r\n if ($(document.activeElement).is(\":hidden,[disabled]\")) {\r\n self.$refs.container.trigger(\"focus\");\r\n }\r\n },\r\n\r\n // Hide toolbar and caption\r\n // ========================\r\n\r\n hideControls: function (andCaption) {\r\n var self = this,\r\n arr = [\"infobar\", \"toolbar\", \"nav\"];\r\n\r\n if (andCaption || !self.current.opts.preventCaptionOverlap) {\r\n arr.push(\"caption\");\r\n }\r\n\r\n this.$refs.container.removeClass(\r\n arr\r\n .map(function (i) {\r\n return \"fancybox-show-\" + i;\r\n })\r\n .join(\" \")\r\n );\r\n\r\n this.hasHiddenControls = true;\r\n },\r\n\r\n showControls: function () {\r\n var self = this,\r\n opts = self.current ? self.current.opts : self.opts,\r\n $container = self.$refs.container;\r\n\r\n self.hasHiddenControls = false;\r\n self.idleSecondsCounter = 0;\r\n\r\n $container\r\n .toggleClass(\"fancybox-show-toolbar\", !!(opts.toolbar && opts.buttons))\r\n .toggleClass(\"fancybox-show-infobar\", !!(opts.infobar && self.group.length > 1))\r\n .toggleClass(\"fancybox-show-caption\", !!self.$caption)\r\n .toggleClass(\"fancybox-show-nav\", !!(opts.arrows && self.group.length > 1))\r\n .toggleClass(\"fancybox-is-modal\", !!opts.modal);\r\n },\r\n\r\n // Toggle toolbar and caption\r\n // ==========================\r\n\r\n toggleControls: function () {\r\n if (this.hasHiddenControls) {\r\n this.showControls();\r\n } else {\r\n this.hideControls();\r\n }\r\n }\r\n });\r\n\r\n $.fancybox = {\r\n version: \"3.5.7\",\r\n defaults: defaults,\r\n\r\n // Get current instance and execute a command.\r\n //\r\n // Examples of usage:\r\n //\r\n // $instance = $.fancybox.getInstance();\r\n // $.fancybox.getInstance().jumpTo( 1 );\r\n // $.fancybox.getInstance( 'jumpTo', 1 );\r\n // $.fancybox.getInstance( function() {\r\n // console.info( this.currIndex );\r\n // });\r\n // ======================================================\r\n\r\n getInstance: function (command) {\r\n var instance = $('.fancybox-container:not(\".fancybox-is-closing\"):last').data(\"FancyBox\"),\r\n args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if (instance instanceof FancyBox) {\r\n if ($.type(command) === \"string\") {\r\n instance[command].apply(instance, args);\r\n } else if ($.type(command) === \"function\") {\r\n command.apply(instance, args);\r\n }\r\n\r\n return instance;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Create new instance\r\n // ===================\r\n\r\n open: function (items, opts, index) {\r\n return new FancyBox(items, opts, index);\r\n },\r\n\r\n // Close current or all instances\r\n // ==============================\r\n\r\n close: function (all) {\r\n var instance = this.getInstance();\r\n\r\n if (instance) {\r\n instance.close();\r\n\r\n // Try to find and close next instance\r\n if (all === true) {\r\n this.close(all);\r\n }\r\n }\r\n },\r\n\r\n // Close all instances and unbind all events\r\n // =========================================\r\n\r\n destroy: function () {\r\n this.close(true);\r\n\r\n $D.add(\"body\").off(\"click.fb-start\", \"**\");\r\n },\r\n\r\n // Try to detect mobile devices\r\n // ============================\r\n\r\n isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\r\n // Detect if 'translate3d' support is available\r\n // ============================================\r\n\r\n use3d: (function () {\r\n var div = document.createElement(\"div\");\r\n\r\n return (\r\n window.getComputedStyle &&\r\n window.getComputedStyle(div) &&\r\n window.getComputedStyle(div).getPropertyValue(\"transform\") &&\r\n !(document.documentMode && document.documentMode < 11)\r\n );\r\n })(),\r\n\r\n // Helper function to get current visual state of an element\r\n // returns array[ top, left, horizontal-scale, vertical-scale, opacity ]\r\n // =====================================================================\r\n\r\n getTranslate: function ($el) {\r\n var domRect;\r\n\r\n if (!$el || !$el.length) {\r\n return false;\r\n }\r\n\r\n domRect = $el[0].getBoundingClientRect();\r\n\r\n return {\r\n top: domRect.top || 0,\r\n left: domRect.left || 0,\r\n width: domRect.width,\r\n height: domRect.height,\r\n opacity: parseFloat($el.css(\"opacity\"))\r\n };\r\n },\r\n\r\n // Shortcut for setting \"translate3d\" properties for element\r\n // Can set be used to set opacity, too\r\n // ========================================================\r\n\r\n setTranslate: function ($el, props) {\r\n var str = \"\",\r\n css = {};\r\n\r\n if (!$el || !props) {\r\n return;\r\n }\r\n\r\n if (props.left !== undefined || props.top !== undefined) {\r\n str =\r\n (props.left === undefined ? $el.position().left : props.left) +\r\n \"px, \" +\r\n (props.top === undefined ? $el.position().top : props.top) +\r\n \"px\";\r\n\r\n if (this.use3d) {\r\n str = \"translate3d(\" + str + \", 0px)\";\r\n } else {\r\n str = \"translate(\" + str + \")\";\r\n }\r\n }\r\n\r\n if (props.scaleX !== undefined && props.scaleY !== undefined) {\r\n str += \" scale(\" + props.scaleX + \", \" + props.scaleY + \")\";\r\n } else if (props.scaleX !== undefined) {\r\n str += \" scaleX(\" + props.scaleX + \")\";\r\n }\r\n\r\n if (str.length) {\r\n css.transform = str;\r\n }\r\n\r\n if (props.opacity !== undefined) {\r\n css.opacity = props.opacity;\r\n }\r\n\r\n if (props.width !== undefined) {\r\n css.width = props.width;\r\n }\r\n\r\n if (props.height !== undefined) {\r\n css.height = props.height;\r\n }\r\n\r\n return $el.css(css);\r\n },\r\n\r\n // Simple CSS transition handler\r\n // =============================\r\n\r\n animate: function ($el, to, duration, callback, leaveAnimationName) {\r\n var self = this,\r\n from;\r\n\r\n if ($.isFunction(duration)) {\r\n callback = duration;\r\n duration = null;\r\n }\r\n\r\n self.stop($el);\r\n\r\n from = self.getTranslate($el);\r\n\r\n $el.on(transitionEnd, function (e) {\r\n // Skip events from child elements and z-index change\r\n if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == \"z-index\")) {\r\n return;\r\n }\r\n\r\n self.stop($el);\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", \"\");\r\n }\r\n\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n self.setTranslate($el, {\r\n top: to.top,\r\n left: to.left,\r\n width: from.width * to.scaleX,\r\n height: from.height * to.scaleY,\r\n scaleX: 1,\r\n scaleY: 1\r\n });\r\n }\r\n } else if (leaveAnimationName !== true) {\r\n $el.removeClass(to);\r\n }\r\n\r\n if ($.isFunction(callback)) {\r\n callback(e);\r\n }\r\n });\r\n\r\n if ($.isNumeric(duration)) {\r\n $el.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n // Start animation by changing CSS properties or class name\r\n if ($.isPlainObject(to)) {\r\n if (to.scaleX !== undefined && to.scaleY !== undefined) {\r\n delete to.width;\r\n delete to.height;\r\n\r\n if ($el.parent().hasClass(\"fancybox-slide--image\")) {\r\n $el.parent().addClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n\r\n $.fancybox.setTranslate($el, to);\r\n } else {\r\n $el.addClass(to);\r\n }\r\n\r\n // Make sure that `transitionend` callback gets fired\r\n $el.data(\r\n \"timer\",\r\n setTimeout(function () {\r\n $el.trigger(transitionEnd);\r\n }, duration + 33)\r\n );\r\n },\r\n\r\n stop: function ($el, callCallback) {\r\n if ($el && $el.length) {\r\n clearTimeout($el.data(\"timer\"));\r\n\r\n if (callCallback) {\r\n $el.trigger(transitionEnd);\r\n }\r\n\r\n $el.off(transitionEnd).css(\"transition-duration\", \"\");\r\n\r\n $el.parent().removeClass(\"fancybox-is-scaling\");\r\n }\r\n }\r\n };\r\n\r\n // Default click handler for \"fancyboxed\" links\r\n // ============================================\r\n\r\n function _run(e, opts) {\r\n var items = [],\r\n index = 0,\r\n $target,\r\n value,\r\n instance;\r\n\r\n // Avoid opening multiple times\r\n if (e && e.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n opts = opts || {};\r\n\r\n if (e && e.data) {\r\n opts = mergeOpts(e.data.options, opts);\r\n }\r\n\r\n $target = opts.$target || $(e.currentTarget).trigger(\"blur\");\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance && instance.$trigger && instance.$trigger.is($target)) {\r\n return;\r\n }\r\n\r\n if (opts.selector) {\r\n items = $(opts.selector);\r\n } else {\r\n // Get all related items and find index for clicked one\r\n value = $target.attr(\"data-fancybox\") || \"\";\r\n\r\n if (value) {\r\n items = e.data ? e.data.items : [];\r\n items = items.length ? items.filter('[data-fancybox=\"' + value + '\"]') : $('[data-fancybox=\"' + value + '\"]');\r\n } else {\r\n items = [$target];\r\n }\r\n }\r\n\r\n index = $(items).index($target);\r\n\r\n // Sometimes current item can not be found\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n\r\n instance = $.fancybox.open(items, opts, index);\r\n\r\n // Save last active element\r\n instance.$trigger = $target;\r\n }\r\n\r\n // Create a jQuery plugin\r\n // ======================\r\n\r\n $.fn.fancybox = function (options) {\r\n var selector;\r\n\r\n options = options || {};\r\n selector = options.selector || false;\r\n\r\n if (selector) {\r\n // Use body element instead of document so it executes first\r\n $(\"body\")\r\n .off(\"click.fb-start\", selector)\r\n .on(\"click.fb-start\", selector, {\r\n options: options\r\n }, _run);\r\n } else {\r\n this.off(\"click.fb-start\").on(\r\n \"click.fb-start\", {\r\n items: this,\r\n options: options\r\n },\r\n _run\r\n );\r\n }\r\n\r\n return this;\r\n };\r\n\r\n // Self initializing plugin for all elements having `data-fancybox` attribute\r\n // ==========================================================================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox]\", _run);\r\n\r\n // Enable \"trigger elements\"\r\n // =========================\r\n\r\n $D.on(\"click.fb-start\", \"[data-fancybox-trigger]\", function (e) {\r\n $('[data-fancybox=\"' + $(this).attr(\"data-fancybox-trigger\") + '\"]')\r\n .eq($(this).attr(\"data-fancybox-index\") || 0)\r\n .trigger(\"click.fb-start\", {\r\n $trigger: $(this)\r\n });\r\n });\r\n\r\n // Track focus event for better accessibility styling\r\n // ==================================================\r\n (function () {\r\n var buttonStr = \".fancybox-button\",\r\n focusStr = \"fancybox-focus\",\r\n $pressed = null;\r\n\r\n $D.on(\"mousedown mouseup focus blur\", buttonStr, function (e) {\r\n switch (e.type) {\r\n case \"mousedown\":\r\n $pressed = $(this);\r\n break;\r\n case \"mouseup\":\r\n $pressed = null;\r\n break;\r\n case \"focusin\":\r\n $(buttonStr).removeClass(focusStr);\r\n\r\n if (!$(this).is($pressed) && !$(this).is(\"[disabled]\")) {\r\n $(this).addClass(focusStr);\r\n }\r\n break;\r\n case \"focusout\":\r\n $(buttonStr).removeClass(focusStr);\r\n break;\r\n }\r\n });\r\n })();\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n(function ($) {\r\n \"use strict\";\r\n\r\n // Object containing properties for each media type\r\n var defaults = {\r\n youtube: {\r\n matcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n params: {\r\n autoplay: 1,\r\n autohide: 1,\r\n fs: 1,\r\n rel: 0,\r\n hd: 1,\r\n wmode: \"transparent\",\r\n enablejsapi: 1,\r\n html5: 1\r\n },\r\n paramPlace: 8,\r\n type: \"iframe\",\r\n url: \"https://www.youtube-nocookie.com/embed/$4\",\r\n thumb: \"https://img.youtube.com/vi/$4/hqdefault.jpg\"\r\n },\r\n\r\n vimeo: {\r\n matcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n params: {\r\n autoplay: 1,\r\n hd: 1,\r\n show_title: 1,\r\n show_byline: 1,\r\n show_portrait: 0,\r\n fullscreen: 1\r\n },\r\n paramPlace: 3,\r\n type: \"iframe\",\r\n url: \"//player.vimeo.com/video/$2\"\r\n },\r\n\r\n instagram: {\r\n matcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n type: \"image\",\r\n url: \"//$1/p/$2/media/?size=l\"\r\n },\r\n\r\n // Examples:\r\n // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z\r\n // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en\r\n // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n gmap_place: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return (\r\n \"//maps.google.\" +\r\n rez[2] +\r\n \"/?ll=\" +\r\n (rez[9] ? rez[9] + \"&z=\" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\\//, \"&\") : \"\") : rez[12] + \"\").replace(/\\?/, \"&\") +\r\n \"&output=\" +\r\n (rez[12] && rez[12].indexOf(\"layer=c\") > 0 ? \"svembed\" : \"embed\")\r\n );\r\n }\r\n },\r\n\r\n // Examples:\r\n // https://www.google.com/maps/search/Empire+State+Building/\r\n // https://www.google.com/maps/search/?api=1&query=centurylink+field\r\n // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393\r\n gmap_search: {\r\n matcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,\r\n type: \"iframe\",\r\n url: function (rez) {\r\n return \"//maps.google.\" + rez[2] + \"/maps?q=\" + rez[5].replace(\"query=\", \"q=\").replace(\"api=1\", \"\") + \"&output=embed\";\r\n }\r\n }\r\n };\r\n\r\n // Formats matching url to final form\r\n var format = function (url, rez, params) {\r\n if (!url) {\r\n return;\r\n }\r\n\r\n params = params || \"\";\r\n\r\n if ($.type(params) === \"object\") {\r\n params = $.param(params, true);\r\n }\r\n\r\n $.each(rez, function (key, value) {\r\n url = url.replace(\"$\" + key, value || \"\");\r\n });\r\n\r\n if (params.length) {\r\n url += (url.indexOf(\"?\") > 0 ? \"&\" : \"?\") + params;\r\n }\r\n\r\n return url;\r\n };\r\n\r\n $(document).on(\"objectNeedsType.fb\", function (e, instance, item) {\r\n var url = item.src || \"\",\r\n type = false,\r\n media,\r\n thumb,\r\n rez,\r\n params,\r\n urlParams,\r\n paramObj,\r\n provider;\r\n\r\n media = $.extend(true, {}, defaults, item.opts.media);\r\n\r\n // Look for any matching media type\r\n $.each(media, function (providerName, providerOpts) {\r\n rez = url.match(providerOpts.matcher);\r\n\r\n if (!rez) {\r\n return;\r\n }\r\n\r\n type = providerOpts.type;\r\n provider = providerName;\r\n paramObj = {};\r\n\r\n if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) {\r\n urlParams = rez[providerOpts.paramPlace];\r\n\r\n if (urlParams[0] == \"?\") {\r\n urlParams = urlParams.substring(1);\r\n }\r\n\r\n urlParams = urlParams.split(\"&\");\r\n\r\n for (var m = 0; m < urlParams.length; ++m) {\r\n var p = urlParams[m].split(\"=\", 2);\r\n\r\n if (p.length == 2) {\r\n paramObj[p[0]] = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\r\n }\r\n }\r\n }\r\n\r\n params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj);\r\n\r\n url =\r\n $.type(providerOpts.url) === \"function\" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params);\r\n\r\n thumb =\r\n $.type(providerOpts.thumb) === \"function\" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez);\r\n\r\n if (providerName === \"youtube\") {\r\n url = url.replace(/&t=((\\d+)m)?(\\d+)s/, function (match, p1, m, s) {\r\n return \"&start=\" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10));\r\n });\r\n } else if (providerName === \"vimeo\") {\r\n url = url.replace(\"&%23\", \"#\");\r\n }\r\n\r\n return false;\r\n });\r\n\r\n // If it is found, then change content type and update the url\r\n\r\n if (type) {\r\n if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) {\r\n item.opts.thumb = thumb;\r\n }\r\n\r\n if (type === \"iframe\") {\r\n item.opts = $.extend(true, item.opts, {\r\n iframe: {\r\n preload: false,\r\n attr: {\r\n scrolling: \"no\"\r\n }\r\n }\r\n });\r\n }\r\n\r\n $.extend(item, {\r\n type: type,\r\n src: url,\r\n origSrc: item.src,\r\n contentSource: provider,\r\n contentType: type === \"image\" ? \"image\" : provider == \"gmap_place\" || provider == \"gmap_search\" ? \"map\" : \"video\"\r\n });\r\n } else if (url) {\r\n item.type = item.opts.defaultType;\r\n }\r\n });\r\n\r\n // Load YouTube/Video API on request to detect when video finished playing\r\n var VideoAPILoader = {\r\n youtube: {\r\n src: \"https://www.youtube.com/iframe_api\",\r\n class: \"YT\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n vimeo: {\r\n src: \"https://player.vimeo.com/api/player.js\",\r\n class: \"Vimeo\",\r\n loading: false,\r\n loaded: false\r\n },\r\n\r\n load: function (vendor) {\r\n var _this = this,\r\n script;\r\n\r\n if (this[vendor].loaded) {\r\n setTimeout(function () {\r\n _this.done(vendor);\r\n });\r\n return;\r\n }\r\n\r\n if (this[vendor].loading) {\r\n return;\r\n }\r\n\r\n this[vendor].loading = true;\r\n\r\n script = document.createElement(\"script\");\r\n script.type = \"text/javascript\";\r\n script.src = this[vendor].src;\r\n\r\n if (vendor === \"youtube\") {\r\n window.onYouTubeIframeAPIReady = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n } else {\r\n script.onload = function () {\r\n _this[vendor].loaded = true;\r\n _this.done(vendor);\r\n };\r\n }\r\n\r\n document.body.appendChild(script);\r\n },\r\n done: function (vendor) {\r\n var instance, $el, player;\r\n\r\n if (vendor === \"youtube\") {\r\n delete window.onYouTubeIframeAPIReady;\r\n }\r\n\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n $el = instance.current.$content.find(\"iframe\");\r\n\r\n if (vendor === \"youtube\" && YT !== undefined && YT) {\r\n player = new YT.Player($el.attr(\"id\"), {\r\n events: {\r\n onStateChange: function (e) {\r\n if (e.data == 0) {\r\n instance.next();\r\n }\r\n }\r\n }\r\n });\r\n } else if (vendor === \"vimeo\" && Vimeo !== undefined && Vimeo) {\r\n player = new Vimeo.Player($el);\r\n\r\n player.on(\"ended\", function () {\r\n instance.next();\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n $(document).on({\r\n \"afterShow.fb\": function (e, instance, current) {\r\n if (instance.group.length > 1 && (current.contentSource === \"youtube\" || current.contentSource === \"vimeo\")) {\r\n VideoAPILoader.load(current.contentSource);\r\n }\r\n }\r\n });\r\n})(jQuery);\n// ==========================================================================\r\n//\r\n// Guestures\r\n// Adds touch guestures, handles click and tap events\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n var requestAFrame = (function () {\r\n return (\r\n window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n // if all else fails, use setTimeout\r\n function (callback) {\r\n return window.setTimeout(callback, 1000 / 60);\r\n }\r\n );\r\n })();\r\n\r\n var cancelAFrame = (function () {\r\n return (\r\n window.cancelAnimationFrame ||\r\n window.webkitCancelAnimationFrame ||\r\n window.mozCancelAnimationFrame ||\r\n window.oCancelAnimationFrame ||\r\n function (id) {\r\n window.clearTimeout(id);\r\n }\r\n );\r\n })();\r\n\r\n var getPointerXY = function (e) {\r\n var result = [];\r\n\r\n e = e.originalEvent || e || window.e;\r\n e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];\r\n\r\n for (var key in e) {\r\n if (e[key].pageX) {\r\n result.push({\r\n x: e[key].pageX,\r\n y: e[key].pageY\r\n });\r\n } else if (e[key].clientX) {\r\n result.push({\r\n x: e[key].clientX,\r\n y: e[key].clientY\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var distance = function (point2, point1, what) {\r\n if (!point1 || !point2) {\r\n return 0;\r\n }\r\n\r\n if (what === \"x\") {\r\n return point2.x - point1.x;\r\n } else if (what === \"y\") {\r\n return point2.y - point1.y;\r\n }\r\n\r\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\r\n };\r\n\r\n var isClickable = function ($el) {\r\n if (\r\n $el.is('a,area,button,[role=\"button\"],input,label,select,summary,textarea,video,audio,iframe') ||\r\n $.isFunction($el.get(0).onclick) ||\r\n $el.data(\"selectable\")\r\n ) {\r\n return true;\r\n }\r\n\r\n // Check for attributes like data-fancybox-next or data-fancybox-close\r\n for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) {\r\n if (atts[i].nodeName.substr(0, 14) === \"data-fancybox-\") {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var hasScrollbars = function (el) {\r\n var overflowY = window.getComputedStyle(el)[\"overflow-y\"],\r\n overflowX = window.getComputedStyle(el)[\"overflow-x\"],\r\n vertical = (overflowY === \"scroll\" || overflowY === \"auto\") && el.scrollHeight > el.clientHeight,\r\n horizontal = (overflowX === \"scroll\" || overflowX === \"auto\") && el.scrollWidth > el.clientWidth;\r\n\r\n return vertical || horizontal;\r\n };\r\n\r\n var isScrollable = function ($el) {\r\n var rez = false;\r\n\r\n while (true) {\r\n rez = hasScrollbars($el.get(0));\r\n\r\n if (rez) {\r\n break;\r\n }\r\n\r\n $el = $el.parent();\r\n\r\n if (!$el.length || $el.hasClass(\"fancybox-stage\") || $el.is(\"body\")) {\r\n break;\r\n }\r\n }\r\n\r\n return rez;\r\n };\r\n\r\n var Guestures = function (instance) {\r\n var self = this;\r\n\r\n self.instance = instance;\r\n\r\n self.$bg = instance.$refs.bg;\r\n self.$stage = instance.$refs.stage;\r\n self.$container = instance.$refs.container;\r\n\r\n self.destroy();\r\n\r\n self.$container.on(\"touchstart.fb.touch mousedown.fb.touch\", $.proxy(self, \"ontouchstart\"));\r\n };\r\n\r\n Guestures.prototype.destroy = function () {\r\n var self = this;\r\n\r\n self.$container.off(\".fb.touch\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n self.requestId = null;\r\n }\r\n\r\n if (self.tapped) {\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n }\r\n };\r\n\r\n Guestures.prototype.ontouchstart = function (e) {\r\n var self = this,\r\n $target = $(e.target),\r\n instance = self.instance,\r\n current = instance.current,\r\n $slide = current.$slide,\r\n $content = current.$content,\r\n isTouchDevice = e.type == \"touchstart\";\r\n\r\n // Do not respond to both (touch and mouse) events\r\n if (isTouchDevice) {\r\n self.$container.off(\"mousedown.fb.touch\");\r\n }\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Ignore taping on links, buttons, input elements\r\n if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) {\r\n return;\r\n }\r\n // Ignore clicks on the scrollbar\r\n if (!$target.is(\"img\") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Ignore clicks while zooming or closing\r\n if (!current || instance.isAnimating || current.$slide.hasClass(\"fancybox-animated\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n self.realPoints = self.startPoints = getPointerXY(e);\r\n\r\n if (!self.startPoints.length) {\r\n return;\r\n }\r\n\r\n // Allow other scripts to catch touch event if \"touch\" is set to false\r\n if (current.touch) {\r\n e.stopPropagation();\r\n }\r\n\r\n self.startEvent = e;\r\n\r\n self.canTap = true;\r\n self.$target = $target;\r\n self.$content = $content;\r\n self.opts = current.opts.touch;\r\n\r\n self.isPanning = false;\r\n self.isSwiping = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n self.canPan = instance.canPan();\r\n\r\n self.startTime = new Date().getTime();\r\n self.distanceX = self.distanceY = self.distance = 0;\r\n\r\n self.canvasWidth = Math.round($slide[0].clientWidth);\r\n self.canvasHeight = Math.round($slide[0].clientHeight);\r\n\r\n self.contentLastPos = null;\r\n self.contentStartPos = $.fancybox.getTranslate(self.$content) || {\r\n top: 0,\r\n left: 0\r\n };\r\n self.sliderStartPos = $.fancybox.getTranslate($slide);\r\n\r\n // Since position will be absolute, but we need to make it relative to the stage\r\n self.stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n self.sliderStartPos.top -= self.stagePos.top;\r\n self.sliderStartPos.left -= self.stagePos.left;\r\n\r\n self.contentStartPos.top -= self.stagePos.top;\r\n self.contentStartPos.left -= self.stagePos.left;\r\n\r\n $(document)\r\n .off(\".fb.touch\")\r\n .on(isTouchDevice ? \"touchend.fb.touch touchcancel.fb.touch\" : \"mouseup.fb.touch mouseleave.fb.touch\", $.proxy(self, \"ontouchend\"))\r\n .on(isTouchDevice ? \"touchmove.fb.touch\" : \"mousemove.fb.touch\", $.proxy(self, \"ontouchmove\"));\r\n\r\n if ($.fancybox.isMobile) {\r\n document.addEventListener(\"scroll\", self.onscroll, true);\r\n }\r\n\r\n // Skip if clicked outside the sliding area\r\n if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) {\r\n if ($target.is(\".fancybox-image\")) {\r\n e.preventDefault();\r\n }\r\n\r\n if (!($.fancybox.isMobile && $target.parents(\".fancybox-caption\").length)) {\r\n return;\r\n }\r\n }\r\n\r\n self.isScrollable = isScrollable($target) || isScrollable($target.parent());\r\n\r\n // Check if element is scrollable and try to prevent default behavior (scrolling)\r\n if (!($.fancybox.isMobile && self.isScrollable)) {\r\n e.preventDefault();\r\n }\r\n\r\n // One finger or mouse click - swipe or pan an image\r\n if (self.startPoints.length === 1 || current.hasError) {\r\n if (self.canPan) {\r\n $.fancybox.stop(self.$content);\r\n\r\n self.isPanning = true;\r\n } else {\r\n self.isSwiping = true;\r\n }\r\n\r\n self.$container.addClass(\"fancybox-is-grabbing\");\r\n }\r\n\r\n // Two fingers - zoom image\r\n if (self.startPoints.length === 2 && current.type === \"image\" && (current.isLoaded || current.$ghost)) {\r\n self.canTap = false;\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n\r\n self.isZooming = true;\r\n\r\n $.fancybox.stop(self.$content);\r\n\r\n self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft();\r\n self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop();\r\n\r\n self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;\r\n self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;\r\n\r\n self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]);\r\n }\r\n };\r\n\r\n Guestures.prototype.onscroll = function (e) {\r\n var self = this;\r\n\r\n self.isScrolling = true;\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n };\r\n\r\n Guestures.prototype.ontouchmove = function (e) {\r\n var self = this;\r\n\r\n // Make sure user has not released over iframe or disabled element\r\n if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) {\r\n self.ontouchend(e);\r\n return;\r\n }\r\n\r\n if (self.isScrolling) {\r\n self.canTap = false;\r\n return;\r\n }\r\n\r\n self.newPoints = getPointerXY(e);\r\n\r\n if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) {\r\n return;\r\n }\r\n\r\n if (!(self.isSwiping && self.isSwiping === true)) {\r\n e.preventDefault();\r\n }\r\n\r\n self.distanceX = distance(self.newPoints[0], self.startPoints[0], \"x\");\r\n self.distanceY = distance(self.newPoints[0], self.startPoints[0], \"y\");\r\n\r\n self.distance = distance(self.newPoints[0], self.startPoints[0]);\r\n\r\n // Skip false ontouchmove events (Chrome)\r\n if (self.distance > 0) {\r\n if (self.isSwiping) {\r\n self.onSwipe(e);\r\n } else if (self.isPanning) {\r\n self.onPan();\r\n } else if (self.isZooming) {\r\n self.onZoom();\r\n }\r\n }\r\n };\r\n\r\n Guestures.prototype.onSwipe = function (e) {\r\n var self = this,\r\n instance = self.instance,\r\n swiping = self.isSwiping,\r\n left = self.sliderStartPos.left || 0,\r\n angle;\r\n\r\n // If direction is not yet determined\r\n if (swiping === true) {\r\n // We need at least 10px distance to correctly calculate an angle\r\n if (Math.abs(self.distance) > 10) {\r\n self.canTap = false;\r\n\r\n if (instance.group.length < 2 && self.opts.vertical) {\r\n self.isSwiping = \"y\";\r\n } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === \"auto\" && $(window).width() > 800)) {\r\n self.isSwiping = \"x\";\r\n } else {\r\n angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI);\r\n\r\n self.isSwiping = angle > 45 && angle < 135 ? \"y\" : \"x\";\r\n }\r\n\r\n if (self.isSwiping === \"y\" && $.fancybox.isMobile && self.isScrollable) {\r\n self.isScrolling = true;\r\n\r\n return;\r\n }\r\n\r\n instance.isDragging = self.isSwiping;\r\n\r\n // Reset points to avoid jumping, because we dropped first swipes to calculate the angle\r\n self.startPoints = self.newPoints;\r\n\r\n $.each(instance.slides, function (index, slide) {\r\n var slidePos, stagePos;\r\n\r\n $.fancybox.stop(slide.$slide);\r\n\r\n slidePos = $.fancybox.getTranslate(slide.$slide);\r\n stagePos = $.fancybox.getTranslate(instance.$refs.stage);\r\n\r\n slide.$slide\r\n .css({\r\n transform: \"\",\r\n opacity: \"\",\r\n \"transition-duration\": \"\"\r\n })\r\n .removeClass(\"fancybox-animated\")\r\n .removeClass(function (index, className) {\r\n return (className.match(/(^|\\s)fancybox-fx-\\S+/g) || []).join(\" \");\r\n });\r\n\r\n if (slide.pos === instance.current.pos) {\r\n self.sliderStartPos.top = slidePos.top - stagePos.top;\r\n self.sliderStartPos.left = slidePos.left - stagePos.left;\r\n }\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: slidePos.top - stagePos.top,\r\n left: slidePos.left - stagePos.left\r\n });\r\n });\r\n\r\n // Stop slideshow\r\n if (instance.SlideShow && instance.SlideShow.isActive) {\r\n instance.SlideShow.stop();\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Sticky edges\r\n if (swiping == \"x\") {\r\n if (\r\n self.distanceX > 0 &&\r\n (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left + Math.pow(self.distanceX, 0.8);\r\n } else if (\r\n self.distanceX < 0 &&\r\n (self.instance.group.length < 2 ||\r\n (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop))\r\n ) {\r\n left = left - Math.pow(-self.distanceX, 0.8);\r\n } else {\r\n left = left + self.distanceX;\r\n }\r\n }\r\n\r\n self.sliderLastPos = {\r\n top: swiping == \"x\" ? 0 : self.sliderStartPos.top + self.distanceY,\r\n left: left\r\n };\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n if (self.sliderLastPos) {\r\n $.each(self.instance.slides, function (index, slide) {\r\n var pos = slide.pos - self.instance.currPos;\r\n\r\n $.fancybox.setTranslate(slide.$slide, {\r\n top: self.sliderLastPos.top,\r\n left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter\r\n });\r\n });\r\n\r\n self.$container.addClass(\"fancybox-is-sliding\");\r\n }\r\n });\r\n };\r\n\r\n Guestures.prototype.onPan = function () {\r\n var self = this;\r\n\r\n // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit)\r\n if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) {\r\n self.startPoints = self.newPoints;\r\n return;\r\n }\r\n\r\n self.canTap = false;\r\n\r\n self.contentLastPos = self.limitMovement();\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n // Make panning sticky to the edges\r\n Guestures.prototype.limitMovement = function () {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n var distanceX = self.distanceX;\r\n var distanceY = self.distanceY;\r\n\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY;\r\n\r\n if (currentWidth > canvasWidth) {\r\n newOffsetX = currentOffsetX + distanceX;\r\n } else {\r\n newOffsetX = currentOffsetX;\r\n }\r\n\r\n newOffsetY = currentOffsetY + distanceY;\r\n\r\n // Slow down proportionally to traveled distance\r\n minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5);\r\n minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5);\r\n maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);\r\n\r\n // ->\r\n if (distanceX > 0 && newOffsetX > minTranslateX) {\r\n newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0;\r\n }\r\n\r\n // <-\r\n if (distanceX < 0 && newOffsetX < maxTranslateX) {\r\n newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0;\r\n }\r\n\r\n // \\/\r\n if (distanceY > 0 && newOffsetY > minTranslateY) {\r\n newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0;\r\n }\r\n\r\n // /\\\r\n if (distanceY < 0 && newOffsetY < maxTranslateY) {\r\n newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0;\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) {\r\n var self = this;\r\n\r\n var canvasWidth = self.canvasWidth;\r\n var canvasHeight = self.canvasHeight;\r\n\r\n if (newWidth > canvasWidth) {\r\n newOffsetX = newOffsetX > 0 ? 0 : newOffsetX;\r\n newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;\r\n } else {\r\n // Center horizontally\r\n newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2);\r\n }\r\n\r\n if (newHeight > canvasHeight) {\r\n newOffsetY = newOffsetY > 0 ? 0 : newOffsetY;\r\n newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;\r\n } else {\r\n // Center vertically\r\n newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2);\r\n }\r\n\r\n return {\r\n top: newOffsetY,\r\n left: newOffsetX\r\n };\r\n };\r\n\r\n Guestures.prototype.onZoom = function () {\r\n var self = this;\r\n\r\n // Calculate current distance between points to get pinch ratio and new width and height\r\n var contentStartPos = self.contentStartPos;\r\n\r\n var currentWidth = contentStartPos.width;\r\n var currentHeight = contentStartPos.height;\r\n\r\n var currentOffsetX = contentStartPos.left;\r\n var currentOffsetY = contentStartPos.top;\r\n\r\n var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]);\r\n\r\n var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;\r\n\r\n var newWidth = Math.floor(currentWidth * pinchRatio);\r\n var newHeight = Math.floor(currentHeight * pinchRatio);\r\n\r\n // This is the translation due to pinch-zooming\r\n var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;\r\n var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;\r\n\r\n // Point between the two touches\r\n var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft();\r\n var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop();\r\n\r\n // And this is the translation due to translation of the centerpoint\r\n // between the two fingers\r\n var translateFromTranslatingX = centerPointEndX - self.centerPointStartX;\r\n var translateFromTranslatingY = centerPointEndY - self.centerPointStartY;\r\n\r\n // The new offset is the old/current one plus the total translation\r\n var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX);\r\n var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY);\r\n\r\n var newPos = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n scaleX: pinchRatio,\r\n scaleY: pinchRatio\r\n };\r\n\r\n self.canTap = false;\r\n\r\n self.newWidth = newWidth;\r\n self.newHeight = newHeight;\r\n\r\n self.contentLastPos = newPos;\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n }\r\n\r\n self.requestId = requestAFrame(function () {\r\n $.fancybox.setTranslate(self.$content, self.contentLastPos);\r\n });\r\n };\r\n\r\n Guestures.prototype.ontouchend = function (e) {\r\n var self = this;\r\n\r\n var swiping = self.isSwiping;\r\n var panning = self.isPanning;\r\n var zooming = self.isZooming;\r\n var scrolling = self.isScrolling;\r\n\r\n self.endPoints = getPointerXY(e);\r\n self.dMs = Math.max(new Date().getTime() - self.startTime, 1);\r\n\r\n self.$container.removeClass(\"fancybox-is-grabbing\");\r\n\r\n $(document).off(\".fb.touch\");\r\n\r\n document.removeEventListener(\"scroll\", self.onscroll, true);\r\n\r\n if (self.requestId) {\r\n cancelAFrame(self.requestId);\r\n\r\n self.requestId = null;\r\n }\r\n\r\n self.isSwiping = false;\r\n self.isPanning = false;\r\n self.isZooming = false;\r\n self.isScrolling = false;\r\n\r\n self.instance.isDragging = false;\r\n\r\n if (self.canTap) {\r\n return self.onTap(e);\r\n }\r\n\r\n self.speed = 100;\r\n\r\n // Speed in px/ms\r\n self.velocityX = (self.distanceX / self.dMs) * 0.5;\r\n self.velocityY = (self.distanceY / self.dMs) * 0.5;\r\n\r\n if (panning) {\r\n self.endPanning();\r\n } else if (zooming) {\r\n self.endZooming();\r\n } else {\r\n self.endSwiping(swiping, scrolling);\r\n }\r\n\r\n return;\r\n };\r\n\r\n Guestures.prototype.endSwiping = function (swiping, scrolling) {\r\n var self = this,\r\n ret = false,\r\n len = self.instance.group.length,\r\n distanceX = Math.abs(self.distanceX),\r\n canAdvance = swiping == \"x\" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50),\r\n speedX = 300;\r\n\r\n self.sliderLastPos = null;\r\n\r\n // Close if swiped vertically / navigate if horizontally\r\n if (swiping == \"y\" && !scrolling && Math.abs(self.distanceY) > 50) {\r\n // Continue vertical movement\r\n $.fancybox.animate(\r\n self.instance.current.$slide, {\r\n top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150,\r\n opacity: 0\r\n },\r\n 200\r\n );\r\n ret = self.instance.close(true, 250);\r\n } else if (canAdvance && self.distanceX > 0) {\r\n ret = self.instance.previous(speedX);\r\n } else if (canAdvance && self.distanceX < 0) {\r\n ret = self.instance.next(speedX);\r\n }\r\n\r\n if (ret === false && (swiping == \"x\" || swiping == \"y\")) {\r\n self.instance.centerSlide(200);\r\n }\r\n\r\n self.$container.removeClass(\"fancybox-is-sliding\");\r\n };\r\n\r\n // Limit panning from edges\r\n // ========================\r\n Guestures.prototype.endPanning = function () {\r\n var self = this,\r\n newOffsetX,\r\n newOffsetY,\r\n newPos;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n if (self.opts.momentum === false || self.dMs > 350) {\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n } else {\r\n // Continue movement\r\n newOffsetX = self.contentLastPos.left + self.velocityX * 500;\r\n newOffsetY = self.contentLastPos.top + self.velocityY * 500;\r\n }\r\n\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);\r\n\r\n newPos.width = self.contentStartPos.width;\r\n newPos.height = self.contentStartPos.height;\r\n\r\n $.fancybox.animate(self.$content, newPos, 366);\r\n };\r\n\r\n Guestures.prototype.endZooming = function () {\r\n var self = this;\r\n\r\n var current = self.instance.current;\r\n\r\n var newOffsetX, newOffsetY, newPos, reset;\r\n\r\n var newWidth = self.newWidth;\r\n var newHeight = self.newHeight;\r\n\r\n if (!self.contentLastPos) {\r\n return;\r\n }\r\n\r\n newOffsetX = self.contentLastPos.left;\r\n newOffsetY = self.contentLastPos.top;\r\n\r\n reset = {\r\n top: newOffsetY,\r\n left: newOffsetX,\r\n width: newWidth,\r\n height: newHeight,\r\n scaleX: 1,\r\n scaleY: 1\r\n };\r\n\r\n // Reset scalex/scaleY values; this helps for perfomance and does not break animation\r\n $.fancybox.setTranslate(self.$content, reset);\r\n\r\n if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) {\r\n self.instance.scaleToFit(150);\r\n } else if (newWidth > current.width || newHeight > current.height) {\r\n self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);\r\n } else {\r\n newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);\r\n\r\n $.fancybox.animate(self.$content, newPos, 150);\r\n }\r\n };\r\n\r\n Guestures.prototype.onTap = function (e) {\r\n var self = this;\r\n var $target = $(e.target);\r\n\r\n var instance = self.instance;\r\n var current = instance.current;\r\n\r\n var endPoints = (e && getPointerXY(e)) || self.startPoints;\r\n\r\n var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0;\r\n var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0;\r\n\r\n var where;\r\n\r\n var process = function (prefix) {\r\n var action = current.opts[prefix];\r\n\r\n if ($.isFunction(action)) {\r\n action = action.apply(instance, [current, e]);\r\n }\r\n\r\n if (!action) {\r\n return;\r\n }\r\n\r\n switch (action) {\r\n case \"close\":\r\n instance.close(self.startEvent);\r\n\r\n break;\r\n\r\n case \"toggleControls\":\r\n instance.toggleControls();\r\n\r\n break;\r\n\r\n case \"next\":\r\n instance.next();\r\n\r\n break;\r\n\r\n case \"nextOrClose\":\r\n if (instance.group.length > 1) {\r\n instance.next();\r\n } else {\r\n instance.close(self.startEvent);\r\n }\r\n\r\n break;\r\n\r\n case \"zoom\":\r\n if (current.type == \"image\" && (current.isLoaded || current.$ghost)) {\r\n if (instance.canPan()) {\r\n instance.scaleToFit();\r\n } else if (instance.isScaledDown()) {\r\n instance.scaleToActual(tapX, tapY);\r\n } else if (instance.group.length < 2) {\r\n instance.close(self.startEvent);\r\n }\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n // Ignore right click\r\n if (e.originalEvent && e.originalEvent.button == 2) {\r\n return;\r\n }\r\n\r\n // Skip if clicked on the scrollbar\r\n if (!$target.is(\"img\") && tapX > $target[0].clientWidth + $target.offset().left) {\r\n return;\r\n }\r\n\r\n // Check where is clicked\r\n if ($target.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\")) {\r\n where = \"Outside\";\r\n } else if ($target.is(\".fancybox-slide\")) {\r\n where = \"Slide\";\r\n } else if (\r\n instance.current.$content &&\r\n instance.current.$content\r\n .find($target)\r\n .addBack()\r\n .filter($target).length\r\n ) {\r\n where = \"Content\";\r\n } else {\r\n return;\r\n }\r\n\r\n // Check if this is a double tap\r\n if (self.tapped) {\r\n // Stop previously created single tap\r\n clearTimeout(self.tapped);\r\n self.tapped = null;\r\n\r\n // Skip if distance between taps is too big\r\n if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) {\r\n return this;\r\n }\r\n\r\n // OK, now we assume that this is a double-tap\r\n process(\"dblclick\" + where);\r\n } else {\r\n // Single tap will be processed if user has not clicked second time within 300ms\r\n // or there is no need to wait for double-tap\r\n self.tapX = tapX;\r\n self.tapY = tapY;\r\n\r\n if (current.opts[\"dblclick\" + where] && current.opts[\"dblclick\" + where] !== current.opts[\"click\" + where]) {\r\n self.tapped = setTimeout(function () {\r\n self.tapped = null;\r\n\r\n if (!instance.isAnimating) {\r\n process(\"click\" + where);\r\n }\r\n }, 500);\r\n } else {\r\n process(\"click\" + where);\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n $(document)\r\n .on(\"onActivate.fb\", function (e, instance) {\r\n if (instance && !instance.Guestures) {\r\n instance.Guestures = new Guestures(instance);\r\n }\r\n })\r\n .on(\"beforeClose.fb\", function (e, instance) {\r\n if (instance && instance.Guestures) {\r\n instance.Guestures.destroy();\r\n }\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// SlideShow\r\n// Enables slideshow functionality\r\n//\r\n// Example of usage:\r\n// $.fancybox.getInstance().SlideShow.start()\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n slideShow: '\"\r\n },\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000,\r\n progress: true\r\n }\r\n });\r\n\r\n var SlideShow = function (instance) {\r\n this.instance = instance;\r\n this.init();\r\n };\r\n\r\n $.extend(SlideShow.prototype, {\r\n timer: null,\r\n isActive: false,\r\n $button: null,\r\n\r\n init: function () {\r\n var self = this,\r\n instance = self.instance,\r\n opts = instance.group[instance.currIndex].opts.slideShow;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n if (instance.group.length < 2 || !opts) {\r\n self.$button.hide();\r\n } else if (opts.progress) {\r\n self.$progress = $('
').appendTo(instance.$refs.inner);\r\n }\r\n },\r\n\r\n set: function (force) {\r\n var self = this,\r\n instance = self.instance,\r\n current = instance.current;\r\n\r\n // Check if reached last element\r\n if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) {\r\n if (self.isActive && current.contentType !== \"video\") {\r\n if (self.$progress) {\r\n $.fancybox.animate(self.$progress.show(), {\r\n scaleX: 1\r\n }, current.opts.slideShow.speed);\r\n }\r\n\r\n self.timer = setTimeout(function () {\r\n if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) {\r\n instance.jumpTo(0);\r\n } else {\r\n instance.next();\r\n }\r\n }, current.opts.slideShow.speed);\r\n }\r\n } else {\r\n self.stop();\r\n instance.idleSecondsCounter = 0;\r\n instance.showControls();\r\n }\r\n },\r\n\r\n clear: function () {\r\n var self = this;\r\n\r\n clearTimeout(self.timer);\r\n\r\n self.timer = null;\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n start: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n if (current) {\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP)\r\n .removeClass(\"fancybox-button--play\")\r\n .addClass(\"fancybox-button--pause\");\r\n\r\n self.isActive = true;\r\n\r\n if (current.isComplete) {\r\n self.set(true);\r\n }\r\n\r\n self.instance.trigger(\"onSlideShowChange\", true);\r\n }\r\n },\r\n\r\n stop: function () {\r\n var self = this,\r\n current = self.instance.current;\r\n\r\n self.clear();\r\n\r\n self.$button\r\n .attr(\"title\", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START)\r\n .removeClass(\"fancybox-button--pause\")\r\n .addClass(\"fancybox-button--play\");\r\n\r\n self.isActive = false;\r\n\r\n self.instance.trigger(\"onSlideShowChange\", false);\r\n\r\n if (self.$progress) {\r\n self.$progress.removeAttr(\"style\").hide();\r\n }\r\n },\r\n\r\n toggle: function () {\r\n var self = this;\r\n\r\n if (self.isActive) {\r\n self.stop();\r\n } else {\r\n self.start();\r\n }\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n if (instance && !instance.SlideShow) {\r\n instance.SlideShow = new SlideShow(instance);\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (firstRun) {\r\n if (SlideShow && current.opts.slideShow.autoStart) {\r\n SlideShow.start();\r\n }\r\n } else if (SlideShow && SlideShow.isActive) {\r\n SlideShow.clear();\r\n }\r\n },\r\n\r\n \"afterShow.fb\": function (e, instance, current) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n SlideShow.set();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n // \"P\" or Spacebar\r\n if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is(\"button,a,input\")) {\r\n keypress.preventDefault();\r\n\r\n SlideShow.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb onDeactivate.fb\": function (e, instance) {\r\n var SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow) {\r\n SlideShow.stop();\r\n }\r\n }\r\n });\r\n\r\n // Page Visibility API to pause slideshow when window is not active\r\n $(document).on(\"visibilitychange\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n SlideShow = instance && instance.SlideShow;\r\n\r\n if (SlideShow && SlideShow.isActive) {\r\n if (document.hidden) {\r\n SlideShow.clear();\r\n } else {\r\n SlideShow.set();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// FullScreen\r\n// Adds fullscreen functionality\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n // Collection of methods supported by user browser\r\n var fn = (function () {\r\n var fnMap = [\r\n [\"requestFullscreen\", \"exitFullscreen\", \"fullscreenElement\", \"fullscreenEnabled\", \"fullscreenchange\", \"fullscreenerror\"],\r\n // new WebKit\r\n [\r\n \"webkitRequestFullscreen\",\r\n \"webkitExitFullscreen\",\r\n \"webkitFullscreenElement\",\r\n \"webkitFullscreenEnabled\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n // old WebKit (Safari 5.1)\r\n [\r\n \"webkitRequestFullScreen\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitCurrentFullScreenElement\",\r\n \"webkitCancelFullScreen\",\r\n \"webkitfullscreenchange\",\r\n \"webkitfullscreenerror\"\r\n ],\r\n [\r\n \"mozRequestFullScreen\",\r\n \"mozCancelFullScreen\",\r\n \"mozFullScreenElement\",\r\n \"mozFullScreenEnabled\",\r\n \"mozfullscreenchange\",\r\n \"mozfullscreenerror\"\r\n ],\r\n [\"msRequestFullscreen\", \"msExitFullscreen\", \"msFullscreenElement\", \"msFullscreenEnabled\", \"MSFullscreenChange\", \"MSFullscreenError\"]\r\n ];\r\n\r\n var ret = {};\r\n\r\n for (var i = 0; i < fnMap.length; i++) {\r\n var val = fnMap[i];\r\n\r\n if (val && val[1] in document) {\r\n for (var j = 0; j < val.length; j++) {\r\n ret[fnMap[0][j]] = val[j];\r\n }\r\n\r\n return ret;\r\n }\r\n }\r\n\r\n return false;\r\n })();\r\n\r\n if (fn) {\r\n var FullScreen = {\r\n request: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT);\r\n },\r\n exit: function () {\r\n document[fn.exitFullscreen]();\r\n },\r\n toggle: function (elem) {\r\n elem = elem || document.documentElement;\r\n\r\n if (this.isFullscreen()) {\r\n this.exit();\r\n } else {\r\n this.request(elem);\r\n }\r\n },\r\n isFullscreen: function () {\r\n return Boolean(document[fn.fullscreenElement]);\r\n },\r\n enabled: function () {\r\n return Boolean(document[fn.fullscreenEnabled]);\r\n }\r\n };\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n fullScreen: '\"\r\n },\r\n fullScreen: {\r\n autoStart: false\r\n }\r\n });\r\n\r\n $(document).on(fn.fullscreenchange, function () {\r\n var isFullscreen = FullScreen.isFullscreen(),\r\n instance = $.fancybox.getInstance();\r\n\r\n if (instance) {\r\n // If image is zooming, then force to stop and reposition properly\r\n if (instance.current && instance.current.type === \"image\" && instance.isAnimating) {\r\n instance.isAnimating = false;\r\n\r\n instance.update(true, true, 0);\r\n\r\n if (!instance.isComplete) {\r\n instance.complete();\r\n }\r\n }\r\n\r\n instance.trigger(\"onFullscreenChange\", isFullscreen);\r\n\r\n instance.$refs.container.toggleClass(\"fancybox-is-fullscreen\", isFullscreen);\r\n\r\n instance.$refs.toolbar\r\n .find(\"[data-fancybox-fullscreen]\")\r\n .toggleClass(\"fancybox-button--fsenter\", !isFullscreen)\r\n .toggleClass(\"fancybox-button--fsexit\", isFullscreen);\r\n }\r\n });\r\n }\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var $container;\r\n\r\n if (!fn) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").remove();\r\n\r\n return;\r\n }\r\n\r\n if (instance && instance.group[instance.currIndex].opts.fullScreen) {\r\n $container = instance.$refs.container;\r\n\r\n $container.on(\"click.fb-fullscreen\", \"[data-fancybox-fullscreen]\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n FullScreen.toggle();\r\n });\r\n\r\n if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) {\r\n FullScreen.request();\r\n }\r\n\r\n // Expose API\r\n instance.FullScreen = FullScreen;\r\n } else if (instance) {\r\n instance.$refs.toolbar.find(\"[data-fancybox-fullscreen]\").hide();\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n // \"F\"\r\n if (instance && instance.FullScreen && keycode === 70) {\r\n keypress.preventDefault();\r\n\r\n instance.FullScreen.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n if (instance && instance.FullScreen && instance.$refs.container.hasClass(\"fancybox-is-fullscreen\")) {\r\n FullScreen.exit();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Thumbs\r\n// Displays thumbnails in a grid\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var CLASS = \"fancybox-thumbs\",\r\n CLASS_ACTIVE = CLASS + \"-active\";\r\n\r\n // Make sure there are default values\r\n $.fancybox.defaults = $.extend(\r\n true, {\r\n btnTpl: {\r\n thumbs: '\"\r\n },\r\n thumbs: {\r\n autoStart: false, // Display thumbnails on opening\r\n hideOnClose: true, // Hide thumbnail grid when closing animation starts\r\n parentEl: \".fancybox-container\", // Container is injected into this element\r\n axis: \"y\" // Vertical (y) or horizontal (x) scrolling\r\n }\r\n },\r\n $.fancybox.defaults\r\n );\r\n\r\n var FancyThumbs = function (instance) {\r\n this.init(instance);\r\n };\r\n\r\n $.extend(FancyThumbs.prototype, {\r\n $button: null,\r\n $grid: null,\r\n $list: null,\r\n isVisible: false,\r\n isActive: false,\r\n\r\n init: function (instance) {\r\n var self = this,\r\n group = instance.group,\r\n enabled = 0;\r\n\r\n self.instance = instance;\r\n self.opts = group[instance.currIndex].opts.thumbs;\r\n\r\n instance.Thumbs = self;\r\n\r\n self.$button = instance.$refs.toolbar.find(\"[data-fancybox-thumbs]\");\r\n\r\n // Enable thumbs if at least two group items have thumbnails\r\n for (var i = 0, len = group.length; i < len; i++) {\r\n if (group[i].thumb) {\r\n enabled++;\r\n }\r\n\r\n if (enabled > 1) {\r\n break;\r\n }\r\n }\r\n\r\n if (enabled > 1 && !!self.opts) {\r\n self.$button.removeAttr(\"style\").on(\"click\", function () {\r\n self.toggle();\r\n });\r\n\r\n self.isActive = true;\r\n } else {\r\n self.$button.hide();\r\n }\r\n },\r\n\r\n create: function () {\r\n var self = this,\r\n instance = self.instance,\r\n parentEl = self.opts.parentEl,\r\n list = [],\r\n src;\r\n\r\n if (!self.$grid) {\r\n // Create main element\r\n self.$grid = $('
').appendTo(\r\n instance.$refs.container\r\n .find(parentEl)\r\n .addBack()\r\n .filter(parentEl)\r\n );\r\n\r\n // Add \"click\" event that performs gallery navigation\r\n self.$grid.on(\"click\", \"a\", function () {\r\n instance.jumpTo($(this).attr(\"data-index\"));\r\n });\r\n }\r\n\r\n // Build the list\r\n if (!self.$list) {\r\n self.$list = $('
').appendTo(self.$grid);\r\n }\r\n\r\n $.each(instance.group, function (i, item) {\r\n src = item.thumb;\r\n\r\n if (!src && item.type === \"image\") {\r\n src = item.src;\r\n }\r\n\r\n list.push(\r\n '\"\r\n );\r\n });\r\n\r\n self.$list[0].innerHTML = list.join(\"\");\r\n\r\n if (self.opts.axis === \"x\") {\r\n // Set fixed width for list element to enable horizontal scrolling\r\n self.$list.width(\r\n parseInt(self.$grid.css(\"padding-right\"), 10) +\r\n instance.group.length *\r\n self.$list\r\n .children()\r\n .eq(0)\r\n .outerWidth(true)\r\n );\r\n }\r\n },\r\n\r\n focus: function (duration) {\r\n var self = this,\r\n $list = self.$list,\r\n $grid = self.$grid,\r\n thumb,\r\n thumbPos;\r\n\r\n if (!self.instance.current) {\r\n return;\r\n }\r\n\r\n thumb = $list\r\n .children()\r\n .removeClass(CLASS_ACTIVE)\r\n .filter('[data-index=\"' + self.instance.current.index + '\"]')\r\n .addClass(CLASS_ACTIVE);\r\n\r\n thumbPos = thumb.position();\r\n\r\n // Check if need to scroll to make current thumb visible\r\n if (self.opts.axis === \"y\" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) {\r\n $list.stop().animate({\r\n scrollTop: $list.scrollTop() + thumbPos.top\r\n },\r\n duration\r\n );\r\n } else if (\r\n self.opts.axis === \"x\" &&\r\n (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth()))\r\n ) {\r\n $list\r\n .parent()\r\n .stop()\r\n .animate({\r\n scrollLeft: thumbPos.left\r\n },\r\n duration\r\n );\r\n }\r\n },\r\n\r\n update: function () {\r\n var that = this;\r\n that.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\", this.isVisible);\r\n\r\n if (that.isVisible) {\r\n if (!that.$grid) {\r\n that.create();\r\n }\r\n\r\n that.instance.trigger(\"onThumbsShow\");\r\n\r\n that.focus(0);\r\n } else if (that.$grid) {\r\n that.instance.trigger(\"onThumbsHide\");\r\n }\r\n\r\n // Update content position\r\n that.instance.update();\r\n },\r\n\r\n hide: function () {\r\n this.isVisible = false;\r\n this.update();\r\n },\r\n\r\n show: function () {\r\n this.isVisible = true;\r\n this.update();\r\n },\r\n\r\n toggle: function () {\r\n this.isVisible = !this.isVisible;\r\n this.update();\r\n }\r\n });\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var Thumbs;\r\n\r\n if (instance && !instance.Thumbs) {\r\n Thumbs = new FancyThumbs(instance);\r\n\r\n if (Thumbs.isActive && Thumbs.opts.autoStart === true) {\r\n Thumbs.show();\r\n }\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, item, firstRun) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible) {\r\n Thumbs.focus(firstRun ? 0 : 250);\r\n }\r\n },\r\n\r\n \"afterKeydown.fb\": function (e, instance, current, keypress, keycode) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n // \"G\"\r\n if (Thumbs && Thumbs.isActive && keycode === 71) {\r\n keypress.preventDefault();\r\n\r\n Thumbs.toggle();\r\n }\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance) {\r\n var Thumbs = instance && instance.Thumbs;\r\n\r\n if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) {\r\n Thumbs.$grid.hide();\r\n }\r\n }\r\n });\r\n})(document, jQuery);\n//// ==========================================================================\r\n//\r\n// Share\r\n// Displays simple form for sharing current url\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n $.extend(true, $.fancybox.defaults, {\r\n btnTpl: {\r\n share: '\"\r\n },\r\n share: {\r\n url: function (instance, item) {\r\n return (\r\n (!instance.currentHash && !(item.type === \"inline\" || item.type === \"html\") ? item.origSrc || item.src : false) || window.location\r\n );\r\n },\r\n tpl: '
' +\r\n \"

{{SHARE}}

\" +\r\n \"

\" +\r\n '' +\r\n '' +\r\n \"Facebook\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Twitter\" +\r\n \"\" +\r\n '' +\r\n '' +\r\n \"Pinterest\" +\r\n \"\" +\r\n \"

\" +\r\n '

' +\r\n \"
\"\r\n }\r\n });\r\n\r\n function escapeHtml(string) {\r\n var entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': \""\",\r\n \"'\": \"'\",\r\n \"/\": \"/\",\r\n \"`\": \"`\",\r\n \"=\": \"=\"\r\n };\r\n\r\n return String(string).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n return entityMap[s];\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"[data-fancybox-share]\", function () {\r\n var instance = $.fancybox.getInstance(),\r\n current = instance.current || null,\r\n url,\r\n tpl;\r\n\r\n if (!current) {\r\n return;\r\n }\r\n\r\n if ($.type(current.opts.share.url) === \"function\") {\r\n url = current.opts.share.url.apply(current, [instance, current]);\r\n }\r\n\r\n tpl = current.opts.share.tpl\r\n .replace(/\\{\\{media\\}\\}/g, current.type === \"image\" ? encodeURIComponent(current.src) : \"\")\r\n .replace(/\\{\\{url\\}\\}/g, encodeURIComponent(url))\r\n .replace(/\\{\\{url_raw\\}\\}/g, escapeHtml(url))\r\n .replace(/\\{\\{descr\\}\\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : \"\");\r\n\r\n $.fancybox.open({\r\n src: instance.translate(instance, tpl),\r\n type: \"html\",\r\n opts: {\r\n touch: false,\r\n animationEffect: false,\r\n afterLoad: function (shareInstance, shareCurrent) {\r\n // Close self if parent instance is closing\r\n instance.$refs.container.one(\"beforeClose.fb\", function () {\r\n shareInstance.close(null, 0);\r\n });\r\n\r\n // Opening links in a popup window\r\n shareCurrent.$content.find(\".fancybox-share__button\").click(function () {\r\n window.open(this.href, \"Share\", \"width=550, height=450\");\r\n return false;\r\n });\r\n },\r\n mobile: {\r\n autoFocus: false\r\n }\r\n }\r\n });\r\n });\r\n})(document, jQuery);\n// ==========================================================================\r\n//\r\n// Hash\r\n// Enables linking to each modal\r\n//\r\n// ==========================================================================\r\n(function (window, document, $) {\r\n \"use strict\";\r\n\r\n // Simple $.escapeSelector polyfill (for jQuery prior v3)\r\n if (!$.escapeSelector) {\r\n $.escapeSelector = function (sel) {\r\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\r\n var fcssescape = function (ch, asCodePoint) {\r\n if (asCodePoint) {\r\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n if (ch === \"\\0\") {\r\n return \"\\uFFFD\";\r\n }\r\n\r\n // Control characters and (dependent upon position) numbers get escaped as code points\r\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\r\n }\r\n\r\n // Other potentially-special ASCII characters get backslash-escaped\r\n return \"\\\\\" + ch;\r\n };\r\n\r\n return (sel + \"\").replace(rcssescape, fcssescape);\r\n };\r\n }\r\n\r\n // Get info about gallery name and current index from url\r\n function parseUrl() {\r\n var hash = window.location.hash.substr(1),\r\n rez = hash.split(\"-\"),\r\n index = rez.length > 1 && /^\\+?\\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1,\r\n gallery = rez.join(\"-\");\r\n\r\n return {\r\n hash: hash,\r\n /* Index is starting from 1 */\r\n index: index < 1 ? 1 : index,\r\n gallery: gallery\r\n };\r\n }\r\n\r\n // Trigger click evnt on links to open new fancyBox instance\r\n function triggerFromUrl(url) {\r\n if (url.gallery !== \"\") {\r\n // If we can find element matching 'data-fancybox' atribute,\r\n // then triggering click event should start fancyBox\r\n $(\"[data-fancybox='\" + $.escapeSelector(url.gallery) + \"']\")\r\n .eq(url.index - 1)\r\n .focus()\r\n .trigger(\"click.fb-start\");\r\n }\r\n }\r\n\r\n // Get gallery name from current instance\r\n function getGalleryID(instance) {\r\n var opts, ret;\r\n\r\n if (!instance) {\r\n return false;\r\n }\r\n\r\n opts = instance.current ? instance.current.opts : instance.opts;\r\n ret = opts.hash || (opts.$orig ? opts.$orig.data(\"fancybox\") || opts.$orig.data(\"fancybox-trigger\") : \"\");\r\n\r\n return ret === \"\" ? false : ret;\r\n }\r\n\r\n // Start when DOM becomes ready\r\n $(function () {\r\n // Check if user has disabled this module\r\n if ($.fancybox.defaults.hash === false) {\r\n return;\r\n }\r\n\r\n // Update hash when opening/closing fancyBox\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance) {\r\n var url, gallery;\r\n\r\n if (instance.group[instance.currIndex].opts.hash === false) {\r\n return;\r\n }\r\n\r\n url = parseUrl();\r\n gallery = getGalleryID(instance);\r\n\r\n // Make sure gallery start index matches index from hash\r\n if (gallery && url.gallery && gallery == url.gallery) {\r\n instance.currIndex = url.index - 1;\r\n }\r\n },\r\n\r\n \"beforeShow.fb\": function (e, instance, current, firstRun) {\r\n var gallery;\r\n\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n // Check if need to update window hash\r\n gallery = getGalleryID(instance);\r\n\r\n if (!gallery) {\r\n return;\r\n }\r\n\r\n // Variable containing last hash value set by fancyBox\r\n // It will be used to determine if fancyBox needs to close after hash change is detected\r\n instance.currentHash = gallery + (instance.group.length > 1 ? \"-\" + (current.index + 1) : \"\");\r\n\r\n // If current hash is the same (this instance most likely is opened by hashchange), then do nothing\r\n if (window.location.hash === \"#\" + instance.currentHash) {\r\n return;\r\n }\r\n\r\n if (firstRun && !instance.origHash) {\r\n instance.origHash = window.location.hash;\r\n }\r\n\r\n if (instance.hashTimer) {\r\n clearTimeout(instance.hashTimer);\r\n }\r\n\r\n // Update hash\r\n instance.hashTimer = setTimeout(function () {\r\n if (\"replaceState\" in window.history) {\r\n window.history[firstRun ? \"pushState\" : \"replaceState\"]({},\r\n document.title,\r\n window.location.pathname + window.location.search + \"#\" + instance.currentHash\r\n );\r\n\r\n if (firstRun) {\r\n instance.hasCreatedHistory = true;\r\n }\r\n } else {\r\n window.location.hash = instance.currentHash;\r\n }\r\n\r\n instance.hashTimer = null;\r\n }, 300);\r\n },\r\n\r\n \"beforeClose.fb\": function (e, instance, current) {\r\n if (!current || current.opts.hash === false) {\r\n return;\r\n }\r\n\r\n clearTimeout(instance.hashTimer);\r\n\r\n // Goto previous history entry\r\n if (instance.currentHash && instance.hasCreatedHistory) {\r\n window.history.back();\r\n } else if (instance.currentHash) {\r\n if (\"replaceState\" in window.history) {\r\n window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || \"\"));\r\n } else {\r\n window.location.hash = instance.origHash;\r\n }\r\n }\r\n\r\n instance.currentHash = null;\r\n }\r\n });\r\n\r\n // Check if need to start/close after url has changed\r\n $(window).on(\"hashchange.fb\", function () {\r\n var url = parseUrl(),\r\n fb = null;\r\n\r\n // Find last fancyBox instance that has \"hash\"\r\n $.each(\r\n $(\".fancybox-container\")\r\n .get()\r\n .reverse(),\r\n function (index, value) {\r\n var tmp = $(value).data(\"FancyBox\");\r\n\r\n if (tmp && tmp.currentHash) {\r\n fb = tmp;\r\n return false;\r\n }\r\n }\r\n );\r\n\r\n if (fb) {\r\n // Now, compare hash values\r\n if (fb.currentHash !== url.gallery + \"-\" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) {\r\n fb.currentHash = null;\r\n\r\n fb.close();\r\n }\r\n } else if (url.gallery !== \"\") {\r\n triggerFromUrl(url);\r\n }\r\n });\r\n\r\n // Check current hash and trigger click event on matching element to start fancyBox, if needed\r\n setTimeout(function () {\r\n if (!$.fancybox.getInstance()) {\r\n triggerFromUrl(parseUrl());\r\n }\r\n }, 50);\r\n });\r\n})(window, document, jQuery);\n// ==========================================================================\r\n//\r\n// Wheel\r\n// Basic mouse weheel support for gallery navigation\r\n//\r\n// ==========================================================================\r\n(function (document, $) {\r\n \"use strict\";\r\n\r\n var prevTime = new Date().getTime();\r\n\r\n $(document).on({\r\n \"onInit.fb\": function (e, instance, current) {\r\n instance.$refs.stage.on(\"mousewheel DOMMouseScroll wheel MozMousePixelScroll\", function (e) {\r\n var current = instance.current,\r\n currTime = new Date().getTime();\r\n\r\n if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === \"auto\" && current.type !== \"image\")) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (current.$slide.hasClass(\"fancybox-animated\")) {\r\n return;\r\n }\r\n\r\n e = e.originalEvent || e;\r\n\r\n if (currTime - prevTime < 250) {\r\n return;\r\n }\r\n\r\n prevTime = currTime;\r\n\r\n instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? \"next\" : \"previous\"]();\r\n });\r\n }\r\n });\r\n})(document, jQuery);","import './our-project.scss';\r\nimport { setupLayout } from '../Shared/layout';\r\nimport '@fancyapps/fancybox';\r\n\r\nsetupLayout();\r\n\r\ndocument.querySelectorAll(\".mobileCategoryBar\").forEach(each => {\r\n each.addEventListener(\"click\", () => {\r\n each.classList.toggle(\"active\");\r\n })\r\n});\r\n\r\ndocument.querySelectorAll(\".linksList li a\").forEach(each => {\r\n each.addEventListener(\"click\", (e) => {\r\n for (let m = 0; m < document.querySelectorAll(\".linksList li\").length; m++) {\r\n document.querySelectorAll(\".linksList li\")[m].classList.remove(\"active\");\r\n };\r\n (e.target as any).parentNode.classList.add(\"active\");\r\n\r\n let type: string = (e.target as any).getAttribute(\"data-target\");\r\n\r\n if (type != \"All\") {\r\n for (let x = 0; x < document.querySelectorAll(\".videos\").length; x++) {\r\n let temp = document.querySelectorAll(\".videos\");\r\n\r\n if (temp[x].getAttribute(\"data-check\") != type) {\r\n (temp[x] as any).style.display = \"none\";\r\n } else {\r\n (temp[x] as any).style.display = \"block\";\r\n }\r\n }\r\n } else {\r\n for (let x = 0; x < document.querySelectorAll(\".videos\").length; x++) {\r\n let temp = document.querySelectorAll(\".videos\");\r\n\r\n (temp[x] as any).style.display = \"block\";\r\n }\r\n }\r\n });\r\n});"],"sourceRoot":""}