{"version":3,"sources":["helpers.js","intersection-observer.js","lazysizes.min.js","ls.unveilhooks.min.js","ofi.js","app.js"],"names":["slideDown","el","timing","style","webkitTransition","transition","visibility","maxHeight","height","offsetHeight","removeProperty","overflow","endSlideDown","removeEventListener","requestAnimationFrame","addEventListener","opacity","slideUp","transitionEvent","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","clearTimeout","setTimeout","name","definition","module","exports","define","amd","fns","listener","doc","document","hack","documentElement","doScroll","domContentLoaded","loaded","test","readyState","shift","fn","push","scrollIt","destination","duration","easing","callback","easings","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","start","window","pageYOffset","startTime","performance","now","Date","getTime","headerHeight","innerWidth","documentHeight","Math","max","body","scrollHeight","clientHeight","windowHeight","innerHeight","getElementsByTagName","destinationOffset","offsetTop","destinationOffsetToScroll","round","scroll","time","min","timeFunction","ceil","load","_load","tag","url","Promise","resolve","reject","element","createElement","parent","attr","onload","onerror","error","async","type","rel","appendChild","css","js","img","removeClassByPrefix","prefix","regx","RegExp","className","replace","ImageCards","containerSelector","querySelector","items","children","currentIndex","map","item","classList","add","targetIndex","forward","backward","remove","firstItemDetached","parentNode","removeChild","length","i","lastItemDetached","insertBefore","firstChild","InteractiveMap","names","rooms","loadData","container","dispatchEvent","MouseEvent","querySelectorAll","groups","filter","g","id","endsWith","includes","content","r","getAttribute","createRoom","contentElement","e","contains","room","IntersectionObserverEntry","prototype","Object","defineProperty","get","intersectionRatio","registry","entry","target","rootBounds","boundingClientRect","intersectionRect","getEmptyRect","isIntersecting","targetRect","targetArea","width","intersectionArea","IntersectionObserver","opt_options","options","Error","root","nodeType","_checkForIntersections","throttle","bind","THROTTLE_TIMEOUT","_callback","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","threshold","margin","value","unit","join","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","isTargetAlreadyObserved","some","_registerInstance","_monitorIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","slice","opt_threshold","Array","isArray","sort","a","isNaN","opt_rootMargin","marginString","margins","split","parts","exec","parseFloat","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","forEach","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","_hasCrossedThreshold","getComputedStyle","display","getParentNode","atRoot","parentRect","parentComputedStyle","computeRectIntersection","html","top","left","right","clientWidth","bottom","_expandRectByRootMargin","rect","newRect","oldRatio","newRatio","containsDeep","indexOf","index","splice","timer","node","event","opt_useCapture","attachEvent","detatchEvent","rect1","rect2","err","child","host","b","c","lazySizes","getElementsByClassName","d","f","HTMLPictureElement","h","j","k","l","m","requestIdleCallback","n","o","p","q","s","setAttribute","trim","u","v","createEvent","instance","initCustomEvent","w","picturefill","pf","reevaluate","elements","src","x","y","offsetWidth","minSize","_lazysizesWidth","z","hidden","_lsFlush","A","B","ricTimeout","C","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","customMedia","init","expFactor","hFac","loadMode","loadHidden","lazySizesConfig","lazysizesConfig","F","D","G","H","I","J","K","L","M","N","O","navigator","userAgent","P","Q","R","S","T","U","offsetParent","V","expand","_lazyRace","ba","preloadAfterLoad","W","X","Z","Y","$","contentWindow","location","_","aa","defaultPrevented","nodeName","firesLoad","call","complete","naturalWidth","srcset","detail","E","updateElem","ca","checkElems","unveil","dataAttr","cfg","autoSizer","loader","uP","aC","rC","hC","fire","gW","rAF","require","href","preload","requireJs","backgroundImage","JSON","stringify","poster","objectFitImages","OFI","propRegex","testImg","Image","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","createPlaceholder","polyfillCurrentSrc","ns","evaled","fillImg","reselect","curSrc","supported","getStyle","fontFamily","parsed","props","setPlaceholder","placeholder","onImageReady","fixOne","ofi","skipTest","naturalHeight","keepSrcUsable","console","warn","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","descriptors","prop","set","ss","hijackAttributes","getOfiImageMaybe","HTMLImageElement","String","fix","imgs","opts","startAutoMode","tagName","watchMQ","ready","initDatepicker","windowWidth","mobileToggle","getElementById","nav","jqueryLibs","toggleNav","toggle","toggleMobileDropdown","nextElementSibling","preventDefault","listItem","parentElement","hiddenItems","menuCategories","menuItems","newsItem","link","maps","toLowerCase","mobileHeader","isDarkNav","pageWasScrolled","requestAF","lastScroll","yScrollPos","scrollLoop","homepageAnimation","animatedBlocks","observerConfig","observer","entries","observedBlocks","block","newsletterInput","newletterPlaceholder","overrideHomeNav","then","initNewsSlider","prev","next","owl","owlCarousel","loop","autoHeight","autoplay","autoplaySpeed","on","trigger","addClass","slider","change","page","removeClass","count","homeLinks","substring","igImgs","scrollToID","logo","loc","history","replaceState","title","pathname","search","homeLinkAbout","stop","animate","scrollTop","offset","hash","submenu","res","initMenuSliders","$galleries","owlInstances","each","eq","lazyLoad","mouseDrag","touchDrag","find","galleryItems","leftCol","rightCol","attachGalleryHandlers","galleryBtn","openGallery","galleryLinks","fancybox","open","slideShow","autoStart","speed","all","initNumberValidation","phonefield","validateNumber","val","num","util","libphonenumber","PhoneNumberUtil","isValid","isValidNumber","parse","append","errorphone","scrollTime","hide","clicked","initGDPRShow","click","descr","transpBlock","hasClass","heightDescr","lang","datepicker","regional","setDefaults","dropdown","timeOptions","sundayTimes","disabledDays","getFullYear","picker","minDate","beforeShow","beforeShowDay","date","day","getDay","dayString","jQuery","formatDate","Sys","WebForms","PageRequestManager","getInstance","add_endRequest","EndRequestHandler","sender","get_error","undefined","get_response","get_aborted","initNewsDetailSlider","pager","$owl","UpdatePanelHandler","brunchTime","option","resDay","dateVal","dateValParts","resDate","show","data","popupId","dataset","localStorage","setItem","getItem"],"mappings":"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","file":"bundle.js","sourcesContent":["/**\r\n * Slide an element down like jQuery's slideDown function using CSS3 transitions.\r\n * @see https://gist.github.com/ludder/4226288\r\n * @param {element} el\r\n * @param {string} timing\r\n * @return {void}\r\n */\r\nfunction slideDown(el, timing) {\r\n timing = timing || '300ms ease';\r\n\r\n // Get element height\r\n el.style.webkitTransition = 'initial';\r\n el.style.transition = 'initial';\r\n el.style.visibility = 'hidden';\r\n el.style.maxHeight = 'initial';\r\n var height = el.offsetHeight + 'px';\r\n el.style.removeProperty('visibility');\r\n el.style.maxHeight = '0';\r\n el.style.overflow = 'hidden';\r\n\r\n // Begin transition\r\n el.style.webkitTransition =\r\n 'max-height ' + timing + ', opacity ' + timing + '';\r\n el.style.transition = 'max-height ' + timing + ', opacity ' + timing + '';\r\n var endSlideDown = function () {\r\n el.style.removeProperty('-webkit-transition');\r\n el.style.removeProperty('transition');\r\n el.removeEventListener('transitionend', endSlideDown);\r\n };\r\n requestAnimationFrame(function () {\r\n el.addEventListener('transitionend', endSlideDown);\r\n el.style.maxHeight = height;\r\n el.style.opacity = '1';\r\n });\r\n}\r\n\r\n/**\r\n * Slide an element up like jQuery's slideUp function using CSS3 transitions.\r\n * @see https://gist.github.com/ludder/4226288\r\n * @param {element} el\r\n * @param {string} timing\r\n * @return {void}\r\n */\r\nfunction slideUp(el, timing) {\r\n timing = timing || '300ms ease';\r\n\r\n // Get element height\r\n el.style.webkitTransition = 'initial';\r\n el.style.transition = 'initial';\r\n var height = el.offsetHeight + 'px';\r\n el.style.maxHeight = height;\r\n el.style.overflow = 'hidden';\r\n\r\n // Begin transition\r\n el.style.webkitTransition =\r\n 'max-height ' + timing + ', opacity ' + timing + '';\r\n el.style.transition = 'max-height ' + timing + ', opacity ' + timing + '';\r\n var endSlideDown = function () {\r\n el.style.removeProperty('-webkit-transition');\r\n el.style.removeProperty('transition');\r\n el.removeEventListener(transitionEvent('end'), endSlideDown);\r\n };\r\n requestAnimationFrame(function () {\r\n el.style.maxHeight = '0';\r\n el.style.opacity = '0';\r\n });\r\n}\r\n\r\n// debounce (inspired by lodash _.debounce)\r\nfunction debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this,\r\n args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n/*!\r\n * domready (c) Dustin Diaz 2014 - License MIT\r\n */\r\n!(function (name, definition) {\r\n if (typeof module != 'undefined') module.exports = definition();\r\n else if (typeof define == 'function' && typeof define.amd == 'object')\r\n define(definition);\r\n else this[name] = definition();\r\n})('domready', function () {\r\n var fns = [],\r\n listener,\r\n doc = typeof document === 'object' && document,\r\n hack = doc && doc.documentElement.doScroll,\r\n domContentLoaded = 'DOMContentLoaded',\r\n loaded =\r\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\r\n\r\n if (!loaded && doc)\r\n doc.addEventListener(\r\n domContentLoaded,\r\n (listener = function () {\r\n doc.removeEventListener(domContentLoaded, listener);\r\n loaded = 1;\r\n while ((listener = fns.shift())) listener();\r\n })\r\n );\r\n\r\n return function (fn) {\r\n loaded ? setTimeout(fn, 0) : fns.push(fn);\r\n };\r\n});\r\n// function onScrollFinished() {\r\n// console.log('scroll finished');\r\n// }\r\n\r\nfunction scrollIt(destination, duration = 300, easing = 'linear', callback) {\r\n const easings = {\r\n linear(t) {\r\n return t;\r\n },\r\n easeInQuad(t) {\r\n return t * t;\r\n },\r\n easeOutQuad(t) {\r\n return t * (2 - t);\r\n },\r\n easeInOutQuad(t) {\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n },\r\n easeInCubic(t) {\r\n return t * t * t;\r\n },\r\n easeOutCubic(t) {\r\n return --t * t * t + 1;\r\n },\r\n easeInOutCubic(t) {\r\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\r\n },\r\n easeInQuart(t) {\r\n return t * t * t * t;\r\n },\r\n easeOutQuart(t) {\r\n return 1 - --t * t * t * t;\r\n },\r\n easeInOutQuart(t) {\r\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\r\n },\r\n easeInQuint(t) {\r\n return t * t * t * t * t;\r\n },\r\n easeOutQuint(t) {\r\n return 1 + --t * t * t * t * t;\r\n },\r\n easeInOutQuint(t) {\r\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\r\n }\r\n };\r\n\r\n const start = window.pageYOffset;\r\n const startTime =\r\n 'now' in window.performance ? performance.now() : new Date().getTime();\r\n const headerHeight = window.innerWidth > 1024 ? 72 : 52;\r\n const documentHeight = Math.max(\r\n document.body.scrollHeight,\r\n document.body.offsetHeight,\r\n document.documentElement.clientHeight,\r\n document.documentElement.scrollHeight,\r\n document.documentElement.offsetHeight\r\n );\r\n const windowHeight =\r\n window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.getElementsByTagName('body')[0].clientHeight;\r\n // EDITED to fix 72px navbar\r\n const destinationOffset =\r\n typeof destination === 'number'\r\n ? destination\r\n : destination.offsetTop - headerHeight;\r\n const destinationOffsetToScroll = Math.round(\r\n documentHeight - destinationOffset < windowHeight\r\n ? documentHeight - windowHeight\r\n : destinationOffset\r\n );\r\n\r\n if ('requestAnimationFrame' in window === false) {\r\n window.scroll(0, destinationOffsetToScroll);\r\n if (callback) {\r\n callback();\r\n }\r\n return;\r\n }\r\n\r\n function scroll() {\r\n const now =\r\n 'now' in window.performance ? performance.now() : new Date().getTime();\r\n const time = Math.min(1, (now - startTime) / duration);\r\n const timeFunction = easings[easing](time);\r\n window.scroll(\r\n 0,\r\n Math.ceil(timeFunction * (destinationOffsetToScroll - start) + start)\r\n );\r\n\r\n if (Math.ceil(window.pageYOffset) === destinationOffsetToScroll) {\r\n if (callback) {\r\n callback();\r\n }\r\n return;\r\n }\r\n\r\n requestAnimationFrame(scroll);\r\n }\r\n\r\n scroll();\r\n}\r\n\r\n// load files programatically function\r\nconst load = (function () {\r\n function _load(tag) {\r\n return function (url) {\r\n return new Promise((resolve, reject) => {\r\n const element = document.createElement(tag);\r\n let parent = 'body';\r\n let attr = 'src';\r\n\r\n element.onload = () => resolve(url);\r\n element.onerror = () => reject(element.error);\r\n\r\n switch (tag) {\r\n case 'script':\r\n element.async = true;\r\n break;\r\n case 'link':\r\n element.type = 'text/css';\r\n element.rel = 'stylesheet';\r\n attr = 'href';\r\n parent = 'head';\r\n }\r\n\r\n element[attr] = url;\r\n document[parent].appendChild(element);\r\n });\r\n };\r\n }\r\n\r\n return {\r\n css: _load('link'),\r\n js: _load('script'),\r\n img: _load('img')\r\n };\r\n})();\r\n\r\nfunction removeClassByPrefix(el, prefix) {\r\n const regx = new RegExp('\\\\b' + prefix + '.*?\\\\b', 'g');\r\n el.className = el.className.replace(regx, '');\r\n return el;\r\n}\r\n\r\nclass ImageCards {\r\n constructor(containerSelector) {\r\n this.parent = document.querySelector(containerSelector);\r\n this.items = this.parent.children;\r\n this.currentIndex = 0;\r\n // temp\r\n [...this.items].map((item) => item.classList.add('ready'));\r\n // this.forward();\r\n }\r\n\r\n change(targetIndex) {\r\n // ->\r\n if (targetIndex > this.currentIndex) {\r\n this.forward();\r\n if (targetIndex > this.currentIndex + 1) {\r\n setTimeout(() => {\r\n this.forward();\r\n }, 1000);\r\n }\r\n } else {\r\n // <-\r\n this.backward();\r\n if (targetIndex < this.currentIndex - 1) {\r\n setTimeout(() => {\r\n this.backward();\r\n }, 1000);\r\n }\r\n }\r\n this.currentIndex = targetIndex;\r\n }\r\n\r\n forward() {\r\n this.items[0].classList.remove('ready');\r\n setTimeout(() => {\r\n const firstItemDetached = this.items[0].parentNode.removeChild(\r\n this.items[0]\r\n );\r\n this.parent.appendChild(firstItemDetached);\r\n setTimeout(() => {\r\n this.items[this.items.length - 1].classList.add('ready');\r\n }, 50);\r\n }, 400);\r\n }\r\n\r\n backward() {\r\n const i = this.items.length - 1;\r\n this.items[i].classList.remove('ready');\r\n setTimeout(() => {\r\n const lastItemDetached = this.items[i].parentNode.removeChild(\r\n this.items[i]\r\n );\r\n this.parent.insertBefore(lastItemDetached, this.parent.firstChild);\r\n setTimeout(() => {\r\n this.items[0].classList.add('ready');\r\n }, 50);\r\n }, 400);\r\n }\r\n}\r\n\r\nclass InteractiveMap {\r\n constructor() {\r\n this.names = ['betlem', 'champagne', 'knihovna', 'krystalova-mistnost'];\r\n this.rooms = [];\r\n this.loadData();\r\n this.rooms[0].container.dispatchEvent(new MouseEvent('click'));\r\n }\r\n\r\n loadData() {\r\n const rooms = document.querySelectorAll('.room');\r\n this.names.map((name) => {\r\n const groups = [...document.querySelectorAll('.restaurant-map g')].filter(\r\n (g) => {\r\n return g.id && g.id.endsWith(name);\r\n }\r\n );\r\n\r\n // container element\r\n const container = groups.filter(\r\n (g) => !g.id.includes('text') && !g.id.includes('arow')\r\n )[0];\r\n\r\n // arrow and text\r\n const children = groups.filter((g) => g !== container);\r\n\r\n // contentElement\r\n const content = [...rooms].filter(\r\n (r) => r.getAttribute('data-alias') === name\r\n )[0];\r\n this.createRoom(container, children, content);\r\n });\r\n }\r\n\r\n createRoom(container, children, contentElement) {\r\n container.addEventListener('mouseenter', (e) => {\r\n if (\r\n !container.classList.contains('active') &&\r\n !container.classList.contains('active-right')\r\n ) {\r\n container.classList.add('hover');\r\n }\r\n });\r\n container.addEventListener('mouseleave', (e) => {\r\n if (\r\n !container.classList.contains('active') &&\r\n !container.classList.contains('active-right')\r\n ) {\r\n container.classList.remove('hover');\r\n }\r\n });\r\n container.addEventListener('click', () => {\r\n if (!container.classList.contains('active')) {\r\n this.rooms.map((room) => {\r\n room.container.classList.remove('active');\r\n room.container.classList.remove('active-right');\r\n room.contentElement.classList.remove('active');\r\n });\r\n if (container.id.includes('knihovna')) {\r\n container.classList.add('active-right');\r\n } else {\r\n container.classList.add('active');\r\n }\r\n container.classList.remove('hover');\r\n contentElement.classList.add('active');\r\n }\r\n });\r\n this.rooms.push({\r\n container,\r\n children,\r\n contentElement\r\n });\r\n }\r\n}\r\n","/**\r\n * Copyright 2016 Google Inc. All Rights Reserved.\r\n *\r\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\r\n *\r\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\r\n *\r\n */\r\n\r\n(function (window, document) {\r\n 'use strict';\r\n\r\n\r\n // Exits early if all IntersectionObserver and IntersectionObserverEntry\r\n // features are natively supported.\r\n if ('IntersectionObserver' in window &&\r\n 'IntersectionObserverEntry' in window &&\r\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\r\n\r\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\r\n // See: https://github.com/w3c/IntersectionObserver/issues/211\r\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\r\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\r\n 'isIntersecting', {\r\n get: function () {\r\n return this.intersectionRatio > 0;\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n\r\n\r\n /**\r\n * An IntersectionObserver registry. This registry exists to hold a strong\r\n * reference to IntersectionObserver instances currently observering a target\r\n * element. Without this registry, instances without another reference may be\r\n * garbage collected.\r\n */\r\n var registry = [];\r\n\r\n\r\n /**\r\n * Creates the global IntersectionObserverEntry constructor.\r\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\r\n * @param {Object} entry A dictionary of instance properties.\r\n * @constructor\r\n */\r\n function IntersectionObserverEntry(entry) {\r\n this.time = entry.time;\r\n this.target = entry.target;\r\n this.rootBounds = entry.rootBounds;\r\n this.boundingClientRect = entry.boundingClientRect;\r\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\r\n this.isIntersecting = !!entry.intersectionRect;\r\n\r\n // Calculates the intersection ratio.\r\n var targetRect = this.boundingClientRect;\r\n var targetArea = targetRect.width * targetRect.height;\r\n var intersectionRect = this.intersectionRect;\r\n var intersectionArea = intersectionRect.width * intersectionRect.height;\r\n\r\n // Sets intersection ratio.\r\n if (targetArea) {\r\n this.intersectionRatio = intersectionArea / targetArea;\r\n } else {\r\n // If area is zero and is intersecting, sets to 1, otherwise to 0\r\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Creates the global IntersectionObserver constructor.\r\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\r\n * @param {Function} callback The function to be invoked after intersection\r\n * changes have queued. The function is not invoked if the queue has\r\n * been emptied by calling the `takeRecords` method.\r\n * @param {Object=} opt_options Optional configuration options.\r\n * @constructor\r\n */\r\n function IntersectionObserver(callback, opt_options) {\r\n\r\n var options = opt_options || {};\r\n\r\n if (typeof callback != 'function') {\r\n throw new Error('callback must be a function');\r\n }\r\n\r\n if (options.root && options.root.nodeType != 1) {\r\n throw new Error('root must be an Element');\r\n }\r\n\r\n // Binds and throttles `this._checkForIntersections`.\r\n this._checkForIntersections = throttle(\r\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\r\n\r\n // Private properties.\r\n this._callback = callback;\r\n this._observationTargets = [];\r\n this._queuedEntries = [];\r\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\r\n\r\n // Public properties.\r\n this.thresholds = this._initThresholds(options.threshold);\r\n this.root = options.root || null;\r\n this.rootMargin = this._rootMarginValues.map(function (margin) {\r\n return margin.value + margin.unit;\r\n }).join(' ');\r\n }\r\n\r\n\r\n /**\r\n * The minimum interval within which the document will be checked for\r\n * intersection changes.\r\n */\r\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\r\n\r\n\r\n /**\r\n * The frequency in which the polyfill polls for intersection changes.\r\n * this can be updated on a per instance basis and must be set prior to\r\n * calling `observe` on the first target.\r\n */\r\n IntersectionObserver.prototype.POLL_INTERVAL = null;\r\n\r\n /**\r\n * Use a mutation observer on the root element\r\n * to detect intersection changes.\r\n */\r\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\r\n\r\n\r\n /**\r\n * Starts observing a target element for intersection changes based on\r\n * the thresholds values.\r\n * @param {Element} target The DOM element to observe.\r\n */\r\n IntersectionObserver.prototype.observe = function (target) {\r\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\r\n return item.element == target;\r\n });\r\n\r\n if (isTargetAlreadyObserved) {\r\n return;\r\n }\r\n\r\n if (!(target && target.nodeType == 1)) {\r\n throw new Error('target must be an Element');\r\n }\r\n\r\n this._registerInstance();\r\n this._observationTargets.push({ element: target, entry: null });\r\n this._monitorIntersections();\r\n this._checkForIntersections();\r\n };\r\n\r\n\r\n /**\r\n * Stops observing a target element for intersection changes.\r\n * @param {Element} target The DOM element to observe.\r\n */\r\n IntersectionObserver.prototype.unobserve = function (target) {\r\n this._observationTargets =\r\n this._observationTargets.filter(function (item) {\r\n\r\n return item.element != target;\r\n });\r\n if (!this._observationTargets.length) {\r\n this._unmonitorIntersections();\r\n this._unregisterInstance();\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Stops observing all target elements for intersection changes.\r\n */\r\n IntersectionObserver.prototype.disconnect = function () {\r\n this._observationTargets = [];\r\n this._unmonitorIntersections();\r\n this._unregisterInstance();\r\n };\r\n\r\n\r\n /**\r\n * Returns any queue entries that have not yet been reported to the\r\n * callback and clears the queue. This can be used in conjunction with the\r\n * callback to obtain the absolute most up-to-date intersection information.\r\n * @return {Array} The currently queued entries.\r\n */\r\n IntersectionObserver.prototype.takeRecords = function () {\r\n var records = this._queuedEntries.slice();\r\n this._queuedEntries = [];\r\n return records;\r\n };\r\n\r\n\r\n /**\r\n * Accepts the threshold value from the user configuration object and\r\n * returns a sorted array of unique threshold values. If a value is not\r\n * between 0 and 1 and error is thrown.\r\n * @private\r\n * @param {Array|number=} opt_threshold An optional threshold value or\r\n * a list of threshold values, defaulting to [0].\r\n * @return {Array} A sorted list of unique and valid threshold values.\r\n */\r\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\r\n var threshold = opt_threshold || [0];\r\n if (!Array.isArray(threshold)) threshold = [threshold];\r\n\r\n return threshold.sort().filter(function (t, i, a) {\r\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\r\n throw new Error('threshold must be a number between 0 and 1 inclusively');\r\n }\r\n return t !== a[i - 1];\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Accepts the rootMargin value from the user configuration object\r\n * and returns an array of the four margin values as an object containing\r\n * the value and unit properties. If any of the values are not properly\r\n * formatted or use a unit other than px or %, and error is thrown.\r\n * @private\r\n * @param {string=} opt_rootMargin An optional rootMargin value,\r\n * defaulting to '0px'.\r\n * @return {Array} An array of margin objects with the keys\r\n * value and unit.\r\n */\r\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\r\n var marginString = opt_rootMargin || '0px';\r\n var margins = marginString.split(/\\s+/).map(function (margin) {\r\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\r\n if (!parts) {\r\n throw new Error('rootMargin must be specified in pixels or percent');\r\n }\r\n return { value: parseFloat(parts[1]), unit: parts[2] };\r\n });\r\n\r\n // Handles shorthand.\r\n margins[1] = margins[1] || margins[0];\r\n margins[2] = margins[2] || margins[0];\r\n margins[3] = margins[3] || margins[1];\r\n\r\n return margins;\r\n };\r\n\r\n\r\n /**\r\n * Starts polling for intersection changes if the polling is not already\r\n * happening, and if the page's visibilty state is visible.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._monitorIntersections = function () {\r\n if (!this._monitoringIntersections) {\r\n this._monitoringIntersections = true;\r\n\r\n // If a poll interval is set, use polling instead of listening to\r\n // resize and scroll events or DOM mutations.\r\n if (this.POLL_INTERVAL) {\r\n this._monitoringInterval = setInterval(\r\n this._checkForIntersections, this.POLL_INTERVAL);\r\n }\r\n else {\r\n addEvent(window, 'resize', this._checkForIntersections, true);\r\n addEvent(document, 'scroll', this._checkForIntersections, true);\r\n\r\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\r\n this._domObserver = new MutationObserver(this._checkForIntersections);\r\n this._domObserver.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Stops polling for intersection changes.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._unmonitorIntersections = function () {\r\n if (this._monitoringIntersections) {\r\n this._monitoringIntersections = false;\r\n\r\n clearInterval(this._monitoringInterval);\r\n this._monitoringInterval = null;\r\n\r\n removeEvent(window, 'resize', this._checkForIntersections, true);\r\n removeEvent(document, 'scroll', this._checkForIntersections, true);\r\n\r\n if (this._domObserver) {\r\n this._domObserver.disconnect();\r\n this._domObserver = null;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Scans each observation target for intersection changes and adds them\r\n * to the internal entries queue. If new entries are found, it\r\n * schedules the callback to be invoked.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._checkForIntersections = function () {\r\n var rootIsInDom = this._rootIsInDom();\r\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\r\n\r\n this._observationTargets.forEach(function (item) {\r\n var target = item.element;\r\n var targetRect = getBoundingClientRect(target);\r\n var rootContainsTarget = this._rootContainsTarget(target);\r\n var oldEntry = item.entry;\r\n var intersectionRect = rootIsInDom && rootContainsTarget &&\r\n this._computeTargetAndRootIntersection(target, rootRect);\r\n\r\n var newEntry = item.entry = new IntersectionObserverEntry({\r\n time: now(),\r\n target: target,\r\n boundingClientRect: targetRect,\r\n rootBounds: rootRect,\r\n intersectionRect: intersectionRect\r\n });\r\n\r\n if (!oldEntry) {\r\n this._queuedEntries.push(newEntry);\r\n } else if (rootIsInDom && rootContainsTarget) {\r\n // If the new entry intersection ratio has crossed any of the\r\n // thresholds, add a new entry.\r\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\r\n this._queuedEntries.push(newEntry);\r\n }\r\n } else {\r\n // If the root is not in the DOM or target is not contained within\r\n // root but the previous entry for this target had an intersection,\r\n // add a new record indicating removal.\r\n if (oldEntry && oldEntry.isIntersecting) {\r\n this._queuedEntries.push(newEntry);\r\n }\r\n }\r\n }, this);\r\n\r\n if (this._queuedEntries.length) {\r\n this._callback(this.takeRecords(), this);\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Accepts a target and root rect computes the intersection between then\r\n * following the algorithm in the spec.\r\n * TODO(philipwalton): at this time clip-path is not considered.\r\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\r\n * @param {Element} target The target DOM element\r\n * @param {Object} rootRect The bounding rect of the root after being\r\n * expanded by the rootMargin value.\r\n * @return {?Object} The final intersection rect object or undefined if no\r\n * intersection is found.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._computeTargetAndRootIntersection =\r\n function (target, rootRect) {\r\n\r\n // If the element isn't displayed, an intersection can't happen.\r\n if (window.getComputedStyle(target).display == 'none') return;\r\n\r\n var targetRect = getBoundingClientRect(target);\r\n var intersectionRect = targetRect;\r\n var parent = getParentNode(target);\r\n var atRoot = false;\r\n\r\n while (!atRoot) {\r\n var parentRect = null;\r\n var parentComputedStyle = parent.nodeType == 1 ?\r\n window.getComputedStyle(parent) : {};\r\n\r\n // If the parent isn't displayed, an intersection can't happen.\r\n if (parentComputedStyle.display == 'none') return;\r\n\r\n if (parent == this.root || parent == document) {\r\n atRoot = true;\r\n parentRect = rootRect;\r\n } else {\r\n // If the element has a non-visible overflow, and it's not the \r\n // or element, update the intersection rect.\r\n // Note: and cannot be clipped to a rect that's not also\r\n // the document rect, so no need to compute a new intersection.\r\n if (parent != document.body &&\r\n parent != document.documentElement &&\r\n parentComputedStyle.overflow != 'visible') {\r\n parentRect = getBoundingClientRect(parent);\r\n }\r\n }\r\n\r\n // If either of the above conditionals set a new parentRect,\r\n // calculate new intersection data.\r\n if (parentRect) {\r\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\r\n\r\n if (!intersectionRect) break;\r\n }\r\n parent = getParentNode(parent);\r\n }\r\n return intersectionRect;\r\n };\r\n\r\n\r\n /**\r\n * Returns the root rect after being expanded by the rootMargin value.\r\n * @return {Object} The expanded root rect.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._getRootRect = function () {\r\n var rootRect;\r\n if (this.root) {\r\n rootRect = getBoundingClientRect(this.root);\r\n } else {\r\n // Use / instead of window since scroll bars affect size.\r\n var html = document.documentElement;\r\n var body = document.body;\r\n rootRect = {\r\n top: 0,\r\n left: 0,\r\n right: html.clientWidth || body.clientWidth,\r\n width: html.clientWidth || body.clientWidth,\r\n bottom: html.clientHeight || body.clientHeight,\r\n height: html.clientHeight || body.clientHeight\r\n };\r\n }\r\n return this._expandRectByRootMargin(rootRect);\r\n };\r\n\r\n\r\n /**\r\n * Accepts a rect and expands it by the rootMargin value.\r\n * @param {Object} rect The rect object to expand.\r\n * @return {Object} The expanded rect.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\r\n var margins = this._rootMarginValues.map(function (margin, i) {\r\n return margin.unit == 'px' ? margin.value :\r\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\r\n });\r\n var newRect = {\r\n top: rect.top - margins[0],\r\n right: rect.right + margins[1],\r\n bottom: rect.bottom + margins[2],\r\n left: rect.left - margins[3]\r\n };\r\n newRect.width = newRect.right - newRect.left;\r\n newRect.height = newRect.bottom - newRect.top;\r\n\r\n return newRect;\r\n };\r\n\r\n\r\n /**\r\n * Accepts an old and new entry and returns true if at least one of the\r\n * threshold values has been crossed.\r\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\r\n * particular target element or null if no previous entry exists.\r\n * @param {IntersectionObserverEntry} newEntry The current entry for a\r\n * particular target element.\r\n * @return {boolean} Returns true if a any threshold has been crossed.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._hasCrossedThreshold =\r\n function (oldEntry, newEntry) {\r\n\r\n // To make comparing easier, an entry that has a ratio of 0\r\n // but does not actually intersect is given a value of -1\r\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\r\n oldEntry.intersectionRatio || 0 : -1;\r\n var newRatio = newEntry.isIntersecting ?\r\n newEntry.intersectionRatio || 0 : -1;\r\n\r\n // Ignore unchanged ratios\r\n if (oldRatio === newRatio) return;\r\n\r\n for (var i = 0; i < this.thresholds.length; i++) {\r\n var threshold = this.thresholds[i];\r\n\r\n // Return true if an entry matches a threshold or if the new ratio\r\n // and the old ratio are on the opposite sides of a threshold.\r\n if (threshold == oldRatio || threshold == newRatio ||\r\n threshold < oldRatio !== threshold < newRatio) {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Returns whether or not the root element is an element and is in the DOM.\r\n * @return {boolean} True if the root element is an element and is in the DOM.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._rootIsInDom = function () {\r\n return !this.root || containsDeep(document, this.root);\r\n };\r\n\r\n\r\n /**\r\n * Returns whether or not the target element is a child of root.\r\n * @param {Element} target The target element to check.\r\n * @return {boolean} True if the target element is a child of root.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\r\n return containsDeep(this.root || document, target);\r\n };\r\n\r\n\r\n /**\r\n * Adds the instance to the global IntersectionObserver registry if it isn't\r\n * already present.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._registerInstance = function () {\r\n if (registry.indexOf(this) < 0) {\r\n registry.push(this);\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Removes the instance from the global IntersectionObserver registry.\r\n * @private\r\n */\r\n IntersectionObserver.prototype._unregisterInstance = function () {\r\n var index = registry.indexOf(this);\r\n if (index != -1) registry.splice(index, 1);\r\n };\r\n\r\n\r\n /**\r\n * Returns the result of the performance.now() method or null in browsers\r\n * that don't support the API.\r\n * @return {number} The elapsed time since the page was requested.\r\n */\r\n function now() {\r\n return window.performance && performance.now && performance.now();\r\n }\r\n\r\n\r\n /**\r\n * Throttles a function and delays its executiong, so it's only called at most\r\n * once within a given time period.\r\n * @param {Function} fn The function to throttle.\r\n * @param {number} timeout The amount of time that must pass before the\r\n * function can be called again.\r\n * @return {Function} The throttled function.\r\n */\r\n function throttle(fn, timeout) {\r\n var timer = null;\r\n return function () {\r\n if (!timer) {\r\n timer = setTimeout(function () {\r\n fn();\r\n timer = null;\r\n }, timeout);\r\n }\r\n };\r\n }\r\n\r\n\r\n /**\r\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\r\n * @param {Node} node The DOM node to add the event handler to.\r\n * @param {string} event The event name.\r\n * @param {Function} fn The event handler to add.\r\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\r\n * phase. Note: this only works in modern browsers.\r\n */\r\n function addEvent(node, event, fn, opt_useCapture) {\r\n if (typeof node.addEventListener == 'function') {\r\n node.addEventListener(event, fn, opt_useCapture || false);\r\n }\r\n else if (typeof node.attachEvent == 'function') {\r\n node.attachEvent('on' + event, fn);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Removes a previously added event handler from a DOM node.\r\n * @param {Node} node The DOM node to remove the event handler from.\r\n * @param {string} event The event name.\r\n * @param {Function} fn The event handler to remove.\r\n * @param {boolean} opt_useCapture If the event handler was added with this\r\n * flag set to true, it should be set to true here in order to remove it.\r\n */\r\n function removeEvent(node, event, fn, opt_useCapture) {\r\n if (typeof node.removeEventListener == 'function') {\r\n node.removeEventListener(event, fn, opt_useCapture || false);\r\n }\r\n else if (typeof node.detatchEvent == 'function') {\r\n node.detatchEvent('on' + event, fn);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Returns the intersection between two rect objects.\r\n * @param {Object} rect1 The first rect.\r\n * @param {Object} rect2 The second rect.\r\n * @return {?Object} The intersection rect or undefined if no intersection\r\n * is found.\r\n */\r\n function computeRectIntersection(rect1, rect2) {\r\n var top = Math.max(rect1.top, rect2.top);\r\n var bottom = Math.min(rect1.bottom, rect2.bottom);\r\n var left = Math.max(rect1.left, rect2.left);\r\n var right = Math.min(rect1.right, rect2.right);\r\n var width = right - left;\r\n var height = bottom - top;\r\n\r\n return (width >= 0 && height >= 0) && {\r\n top: top,\r\n bottom: bottom,\r\n left: left,\r\n right: right,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n\r\n /**\r\n * Shims the native getBoundingClientRect for compatibility with older IE.\r\n * @param {Element} el The element whose bounding rect to get.\r\n * @return {Object} The (possibly shimmed) rect of the element.\r\n */\r\n function getBoundingClientRect(el) {\r\n var rect;\r\n\r\n try {\r\n rect = el.getBoundingClientRect();\r\n } catch (err) {\r\n // Ignore Windows 7 IE11 \"Unspecified error\"\r\n // https://github.com/w3c/IntersectionObserver/pull/205\r\n }\r\n\r\n if (!rect) return getEmptyRect();\r\n\r\n // Older IE\r\n if (!(rect.width && rect.height)) {\r\n rect = {\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n left: rect.left,\r\n width: rect.right - rect.left,\r\n height: rect.bottom - rect.top\r\n };\r\n }\r\n return rect;\r\n }\r\n\r\n\r\n /**\r\n * Returns an empty rect object. An empty rect is returned when an element\r\n * is not in the DOM.\r\n * @return {Object} The empty rect.\r\n */\r\n function getEmptyRect() {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n /**\r\n * Checks to see if a parent element contains a child elemnt (including inside\r\n * shadow DOM).\r\n * @param {Node} parent The parent element.\r\n * @param {Node} child The child element.\r\n * @return {boolean} True if the parent node contains the child node.\r\n */\r\n function containsDeep(parent, child) {\r\n var node = child;\r\n while (node) {\r\n if (node == parent) return true;\r\n\r\n node = getParentNode(node);\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Gets the parent node of an element or its host element if the parent node\r\n * is a shadow root.\r\n * @param {Node} node The node whose parent to get.\r\n * @return {Node|null} The parent node or null if no parent exists.\r\n */\r\n function getParentNode(node) {\r\n var parent = node.parentNode;\r\n\r\n if (parent && parent.nodeType == 11 && parent.host) {\r\n // If the parent is a shadow root, return the host element.\r\n return parent.host;\r\n }\r\n return parent;\r\n }\r\n\r\n\r\n // Exposes the constructors globally.\r\n window.IntersectionObserver = IntersectionObserver;\r\n window.IntersectionObserverEntry = IntersectionObserverEntry;\r\n\r\n}(window, document));","/*! lazysizes - v4.0.1 */\r\n!function (a, b) { var c = b(a, a.document); a.lazySizes = c, \"object\" == typeof module && module.exports && (module.exports = c) }(window, function (a, b) { \"use strict\"; if (b.getElementsByClassName) { var c, d, e = b.documentElement, f = a.Date, g = a.HTMLPictureElement, h = \"addEventListener\", i = \"getAttribute\", j = a[h], k = a.setTimeout, l = a.requestAnimationFrame || k, m = a.requestIdleCallback, n = /^picture$/i, o = [\"load\", \"error\", \"lazyincluded\", \"_lazyloaded\"], p = {}, q = Array.prototype.forEach, r = function (a, b) { return p[b] || (p[b] = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\")), p[b].test(a[i](\"class\") || \"\") && p[b] }, s = function (a, b) { r(a, b) || a.setAttribute(\"class\", (a[i](\"class\") || \"\").trim() + \" \" + b) }, t = function (a, b) { var c; (c = r(a, b)) && a.setAttribute(\"class\", (a[i](\"class\") || \"\").replace(c, \" \")) }, u = function (a, b, c) { var d = c ? h : \"removeEventListener\"; c && u(a, b), o.forEach(function (c) { a[d](c, b) }) }, v = function (a, d, e, f, g) { var h = b.createEvent(\"CustomEvent\"); return e || (e = {}), e.instance = c, h.initCustomEvent(d, !f, !g, e), a.dispatchEvent(h), h }, w = function (b, c) { var e; !g && (e = a.picturefill || d.pf) ? e({ reevaluate: !0, elements: [b] }) : c && c.src && (b.src = c.src) }, x = function (a, b) { return (getComputedStyle(a, null) || {})[b] }, y = function (a, b, c) { for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;)c = b.offsetWidth, b = b.parentNode; return c }, z = function () { var a, c, d = [], e = [], f = d, g = function () { var b = f; for (f = d.length ? e : d, a = !0, c = !1; b.length;)b.shift()(); a = !1 }, h = function (d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) }; return h._lsFlush = g, h }(), A = function (a, b) { return b ? function () { z(a) } : function () { var b = this, c = arguments; z(function () { a.apply(b, c) }) } }, B = function (a) { var b, c = 0, e = 125, g = d.ricTimeout, h = function () { b = !1, c = f.now(), a() }, i = m && d.ricTimeout ? function () { m(h, { timeout: g }), g !== d.ricTimeout && (g = d.ricTimeout) } : A(function () { k(h) }, !0); return function (a) { var d; (a = a === !0) && (g = 33), b || (b = !0, d = e - (f.now() - c), 0 > d && (d = 0), a || 9 > d && m ? i() : k(i, d)) } }, C = function (a) { var b, c, d = 99, e = function () { b = null, a() }, g = function () { var a = f.now() - c; d > a ? k(g, d - a) : (m || e)(e) }; return function () { c = f.now(), b || (b = k(g, d)) } }; !function () { var b, c = { lazyClass: \"lazyload\", loadedClass: \"lazyloaded\", loadingClass: \"lazyloading\", preloadClass: \"lazypreload\", errorClass: \"lazyerror\", autosizesClass: \"lazyautosizes\", srcAttr: \"data-src\", srcsetAttr: \"data-srcset\", sizesAttr: \"data-sizes\", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0, ricTimeout: 300 }; d = a.lazySizesConfig || a.lazysizesConfig || {}; for (b in c) b in d || (d[b] = c[b]); a.lazySizesConfig = d, k(function () { d.init && F() }) }(); var D = function () { var g, l, m, o, p, y, D, F, G, H, I, J, K, L, M = /^img$/i, N = /^iframe$/i, O = \"onscroll\" in a && !/glebot/.test(navigator.userAgent), P = 0, Q = 0, R = 0, S = -1, T = function (a) { R-- , a && a.target && u(a.target, T), (!a || 0 > R || !a.target) && (R = 0) }, U = function (a, c) { var d, f = a, g = \"hidden\" == x(b.body, \"visibility\") || \"hidden\" != x(a, \"visibility\"); for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;)g = (x(f, \"opacity\") || 1) > 0, g && \"visible\" != x(f, \"overflow\") && (d = f.getBoundingClientRect(), g = H > d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1); return g }, V = function () { var a, f, h, j, k, m, n, p, q, r = c.elements; if ((o = d.loadMode) && 8 > R && (a = r.length)) { f = 0, S++ , null == K && (\"expand\" in d || (d.expand = e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370), J = d.expand, K = J * d.expFactor), K > Q && 1 > R && S > 2 && o > 2 && !b.hidden ? (Q = K, S = 0) : Q = o > 1 && S > 1 && 6 > R ? J : P; for (; a > f; f++)if (r[f] && !r[f]._lazyRace) if (O) if ((p = r[f][i](\"data-expand\")) && (m = 1 * p) || (m = Q), q !== m && (y = innerWidth + m * L, D = innerHeight + m, n = -1 * m, q = m), h = r[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * L && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || \"hidden\" != x(r[f], \"visibility\")) && (l && 3 > R && !p && (3 > o || 4 > S) || U(r[f], m))) { if (ba(r[f]), k = !0, R > 9) break } else !k && l && !j && 4 > R && 4 > S && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || \"auto\" != r[f][i](d.sizesAttr))) && (j = g[0] || r[f]); else ba(r[f]); j && !k && ba(j) } }, W = B(V), X = function (a) { s(a.target, d.loadedClass), t(a.target, d.loadingClass), u(a.target, Z), v(a.target, \"lazyloaded\") }, Y = A(X), Z = function (a) { Y({ target: a.target }) }, $ = function (a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } }, _ = function (a) { var b, c = a[i](d.srcsetAttr); (b = d.customMedia[a[i](\"data-media\") || a[i](\"media\")]) && a.setAttribute(\"media\", b), c && a.setAttribute(\"srcset\", c) }, aa = A(function (a, b, c, e, f) { var g, h, j, l, o, p; (o = v(a, \"lazybeforeunveil\", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute(\"sizes\", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || \"\")), p = b.firesLoad || \"src\" in a && (h || g || l), o = { target: a }, p && (u(a, T, !0), clearTimeout(m), m = k(T, 2500), s(a, d.loadingClass), u(a, Z, !0)), l && q.call(j.getElementsByTagName(\"source\"), _), h ? a.setAttribute(\"srcset\", h) : g && !l && (N.test(a.nodeName) ? $(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function () { (!p || a.complete && a.naturalWidth > 1) && (p ? T(o) : R-- , X(o)) }, !0) }), ba = function (a) { var b, c = M.test(a.nodeName), e = c && (a[i](d.sizesAttr) || a[i](\"sizes\")), f = \"auto\" == e; (!f && l || !c || !a[i](\"src\") && !a.srcset || a.complete || r(a, d.errorClass) || !r(a, d.lazyClass)) && (b = v(a, \"lazyunveilread\").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, R++ , aa(a, b, f, e, c)) }, ca = function () { if (!l) { if (f.now() - p < 999) return void k(ca, 999); var a = C(function () { d.loadMode = 3, W() }); l = !0, d.loadMode = 3, W(), j(\"scroll\", function () { 3 == d.loadMode && (d.loadMode = 2), a() }, !0) } }; return { _: function () { p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + \" \" + d.preloadClass), L = d.hFac, j(\"scroll\", W, !0), j(\"resize\", W, !0), a.MutationObserver ? new MutationObserver(W).observe(e, { childList: !0, subtree: !0, attributes: !0 }) : (e[h](\"DOMNodeInserted\", W, !0), e[h](\"DOMAttrModified\", W, !0), setInterval(W, 999)), j(\"hashchange\", W, !0), [\"focus\", \"mouseover\", \"click\", \"load\", \"transitionend\", \"animationend\", \"webkitAnimationEnd\"].forEach(function (a) { b[h](a, W, !0) }), /d$|^c/.test(b.readyState) ? ca() : (j(\"load\", ca), b[h](\"DOMContentLoaded\", W), k(ca, 2e4)), c.elements.length ? (V(), z._lsFlush()) : W() }, checkElems: W, unveil: ba } }(), E = function () { var a, c = A(function (a, b, c, d) { var e, f, g; if (a._lazysizesWidth = d, d += \"px\", a.setAttribute(\"sizes\", d), n.test(b.nodeName || \"\")) for (e = b.getElementsByTagName(\"source\"), f = 0, g = e.length; g > f; f++)e[f].setAttribute(\"sizes\", d); c.detail.dataAttr || w(a, c.detail) }), e = function (a, b, d) { var e, f = a.parentNode; f && (d = y(a, f, d), e = v(a, \"lazybeforesizes\", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width, d && d !== a._lazysizesWidth && c(a, f, e, d))) }, f = function () { var b, c = a.length; if (c) for (b = 0; c > b; b++)e(a[b]) }, g = C(f); return { _: function () { a = b.getElementsByClassName(d.autosizesClass), j(\"resize\", g) }, checkElems: g, updateElem: e } }(), F = function () { F.i || (F.i = !0, E._(), D._()) }; return c = { cfg: d, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z } } });","/*! lazysizes - v4.0.1 */\r\n!(function(a, b) {\r\n var c = function() {\r\n b(a.lazySizes), a.removeEventListener('lazyunveilread', c, !0);\r\n };\r\n (b = b.bind(null, a, a.document)),\r\n 'object' == typeof module && module.exports\r\n ? b(require('lazysizes'))\r\n : a.lazySizes ? c() : a.addEventListener('lazyunveilread', c, !0);\r\n})(window, function(a, b, c) {\r\n 'use strict';\r\n function d(a, c) {\r\n if (!g[a]) {\r\n var d = b.createElement(c ? 'link' : 'script'),\r\n e = b.getElementsByTagName('script')[0];\r\n c ? ((d.rel = 'stylesheet'), (d.href = a)) : (d.src = a),\r\n (g[a] = !0),\r\n (g[d.src || d.href] = !0),\r\n e.parentNode.insertBefore(d, e);\r\n }\r\n }\r\n var e,\r\n f,\r\n g = {};\r\n b.addEventListener &&\r\n ((f = /\\(|\\)|\\s|'/),\r\n (e = function(a, c) {\r\n var d = b.createElement('img');\r\n (d.onload = function() {\r\n (d.onload = null), (d.onerror = null), (d = null), c();\r\n }),\r\n (d.onerror = d.onload),\r\n (d.src = a),\r\n d && d.complete && d.onload && d.onload();\r\n }),\r\n addEventListener(\r\n 'lazybeforeunveil',\r\n function(a) {\r\n if (a.detail.instance == c) {\r\n var b, g, h, i;\r\n a.defaultPrevented ||\r\n ('none' == a.target.preload && (a.target.preload = 'auto'),\r\n (b = a.target.getAttribute('data-link')),\r\n b && d(b, !0),\r\n (b = a.target.getAttribute('data-script')),\r\n b && d(b),\r\n (b = a.target.getAttribute('data-require')),\r\n b && (c.cfg.requireJs ? c.cfg.requireJs([b]) : d(b)),\r\n (h = a.target.getAttribute('data-bg')),\r\n h &&\r\n ((a.detail.firesLoad = !0),\r\n (g = function() {\r\n (a.target.style.backgroundImage =\r\n 'url(' + (f.test(h) ? JSON.stringify(h) : h) + ')'),\r\n (a.detail.firesLoad = !1),\r\n c.fire(a.target, '_lazyloaded', {}, !0, !0);\r\n }),\r\n e(h, g)),\r\n (i = a.target.getAttribute('data-poster')),\r\n i &&\r\n ((a.detail.firesLoad = !0),\r\n (g = function() {\r\n (a.target.poster = i),\r\n (a.detail.firesLoad = !1),\r\n c.fire(a.target, '_lazyloaded', {}, !0, !0);\r\n }),\r\n e(i, g)));\r\n }\r\n },\r\n !1\r\n ));\r\n});\r\n","/*! npm.im/object-fit-images 3.2.3 */\r\nvar objectFitImages = (function () {\r\n 'use strict';\r\n\r\n var OFI = 'bfred-it:object-fit-images';\r\n var propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\r\n var testImg = typeof Image === 'undefined' ? { style: { 'object-position': 1 } } : new Image();\r\n var supportsObjectFit = 'object-fit' in testImg.style;\r\n var supportsObjectPosition = 'object-position' in testImg.style;\r\n var supportsOFI = 'background-size' in testImg.style;\r\n var supportsCurrentSrc = typeof testImg.currentSrc === 'string';\r\n var nativeGetAttribute = testImg.getAttribute;\r\n var nativeSetAttribute = testImg.setAttribute;\r\n var autoModeEnabled = false;\r\n\r\n function createPlaceholder(w, h) {\r\n return (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\r\n }\r\n\r\n function polyfillCurrentSrc(el) {\r\n if (el.srcset && !supportsCurrentSrc && window.picturefill) {\r\n var pf = window.picturefill._;\r\n // parse srcset with picturefill where currentSrc isn't available\r\n if (!el[pf.ns] || !el[pf.ns].evaled) {\r\n // force synchronous srcset parsing\r\n pf.fillImg(el, { reselect: true });\r\n }\r\n\r\n if (!el[pf.ns].curSrc) {\r\n // force picturefill to parse srcset\r\n el[pf.ns].supported = false;\r\n pf.fillImg(el, { reselect: true });\r\n }\r\n\r\n // retrieve parsed currentSrc, if any\r\n el.currentSrc = el[pf.ns].curSrc || el.src;\r\n }\r\n }\r\n\r\n function getStyle(el) {\r\n var style = getComputedStyle(el).fontFamily;\r\n var parsed;\r\n var props = {};\r\n while ((parsed = propRegex.exec(style)) !== null) {\r\n props[parsed[1]] = parsed[2];\r\n }\r\n return props;\r\n }\r\n\r\n function setPlaceholder(img, width, height) {\r\n // Default: fill width, no height\r\n var placeholder = createPlaceholder(width || 1, height || 0);\r\n\r\n // Only set placeholder if it's different\r\n if (nativeGetAttribute.call(img, 'src') !== placeholder) {\r\n nativeSetAttribute.call(img, 'src', placeholder);\r\n }\r\n }\r\n\r\n function onImageReady(img, callback) {\r\n // naturalWidth is only available when the image headers are loaded,\r\n // this loop will poll it every 100ms.\r\n if (img.naturalWidth) {\r\n callback(img);\r\n } else {\r\n setTimeout(onImageReady, 100, img, callback);\r\n }\r\n }\r\n\r\n function fixOne(el) {\r\n var style = getStyle(el);\r\n var ofi = el[OFI];\r\n style['object-fit'] = style['object-fit'] || 'fill'; // default value\r\n\r\n // Avoid running where unnecessary, unless OFI had already done its deed\r\n if (!ofi.img) {\r\n // fill is the default behavior so no action is necessary\r\n if (style['object-fit'] === 'fill') {\r\n return;\r\n }\r\n\r\n // Where object-fit is supported and object-position isn't (Safari < 10)\r\n if (\r\n !ofi.skipTest && // unless user wants to apply regardless of browser support\r\n supportsObjectFit && // if browser already supports object-fit\r\n !style['object-position'] // unless object-position is used\r\n ) {\r\n return;\r\n }\r\n }\r\n\r\n // keep a clone in memory while resetting the original to a blank\r\n if (!ofi.img) {\r\n ofi.img = new Image(el.width, el.height);\r\n ofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\r\n ofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\r\n\r\n // preserve for any future cloneNode calls\r\n // https://github.com/bfred-it/object-fit-images/issues/53\r\n nativeSetAttribute.call(el, \"data-ofi-src\", el.src);\r\n if (el.srcset) {\r\n nativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\r\n }\r\n\r\n setPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\r\n\r\n // remove srcset because it overrides src\r\n if (el.srcset) {\r\n el.srcset = '';\r\n }\r\n try {\r\n keepSrcUsable(el);\r\n } catch (err) {\r\n if (window.console) {\r\n console.warn('https://bit.ly/ofi-old-browser');\r\n }\r\n }\r\n }\r\n\r\n polyfillCurrentSrc(ofi.img);\r\n\r\n el.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\r\n el.style.backgroundPosition = style['object-position'] || 'center';\r\n el.style.backgroundRepeat = 'no-repeat';\r\n el.style.backgroundOrigin = 'content-box';\r\n\r\n if (/scale-down/.test(style['object-fit'])) {\r\n onImageReady(ofi.img, function () {\r\n if (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\r\n el.style.backgroundSize = 'contain';\r\n } else {\r\n el.style.backgroundSize = 'auto';\r\n }\r\n });\r\n } else {\r\n el.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\r\n }\r\n\r\n onImageReady(ofi.img, function (img) {\r\n setPlaceholder(el, img.naturalWidth, img.naturalHeight);\r\n });\r\n }\r\n\r\n function keepSrcUsable(el) {\r\n var descriptors = {\r\n get: function get(prop) {\r\n return el[OFI].img[prop ? prop : 'src'];\r\n },\r\n set: function set(value, prop) {\r\n el[OFI].img[prop ? prop : 'src'] = value;\r\n nativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\r\n fixOne(el);\r\n return value;\r\n }\r\n };\r\n Object.defineProperty(el, 'src', descriptors);\r\n Object.defineProperty(el, 'currentSrc', {\r\n get: function () { return descriptors.get('currentSrc'); }\r\n });\r\n Object.defineProperty(el, 'srcset', {\r\n get: function () { return descriptors.get('srcset'); },\r\n set: function (ss) { return descriptors.set(ss, 'srcset'); }\r\n });\r\n }\r\n\r\n function hijackAttributes() {\r\n function getOfiImageMaybe(el, name) {\r\n return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\r\n }\r\n if (!supportsObjectPosition) {\r\n HTMLImageElement.prototype.getAttribute = function (name) {\r\n return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\r\n };\r\n\r\n HTMLImageElement.prototype.setAttribute = function (name, value) {\r\n return nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\r\n };\r\n }\r\n }\r\n\r\n function fix(imgs, opts) {\r\n var startAutoMode = !autoModeEnabled && !imgs;\r\n opts = opts || {};\r\n imgs = imgs || 'img';\r\n\r\n if ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\r\n return false;\r\n }\r\n\r\n // use imgs as a selector or just select all images\r\n if (imgs === 'img') {\r\n imgs = document.getElementsByTagName('img');\r\n } else if (typeof imgs === 'string') {\r\n imgs = document.querySelectorAll(imgs);\r\n } else if (!('length' in imgs)) {\r\n imgs = [imgs];\r\n }\r\n\r\n // apply fix to all\r\n for (var i = 0; i < imgs.length; i++) {\r\n imgs[i][OFI] = imgs[i][OFI] || {\r\n skipTest: opts.skipTest\r\n };\r\n fixOne(imgs[i]);\r\n }\r\n\r\n if (startAutoMode) {\r\n document.body.addEventListener('load', function (e) {\r\n if (e.target.tagName === 'IMG') {\r\n fix(e.target, {\r\n skipTest: opts.skipTest\r\n });\r\n }\r\n }, true);\r\n autoModeEnabled = true;\r\n imgs = 'img'; // reset to a generic selector for watchMQ\r\n }\r\n\r\n // if requested, watch media queries for object-fit change\r\n if (opts.watchMQ) {\r\n window.addEventListener('resize', fix.bind(null, imgs, {\r\n skipTest: opts.skipTest\r\n }));\r\n }\r\n }\r\n\r\n fix.supportsObjectFit = supportsObjectFit;\r\n fix.supportsObjectPosition = supportsObjectPosition;\r\n\r\n hijackAttributes();\r\n\r\n return fix;\r\n\r\n}());","$(document).ready(function () {\r\n initDatepicker();\r\n objectFitImages();\r\n const windowWidth = window.innerWidth;\r\n // mobile nav functions\r\n const mobileToggle = document.getElementById('mobileToggle');\r\n const nav = document.querySelector('.nav');\r\n const body = document.getElementsByTagName('body')[0];\r\n const jqueryLibs = '/RZAT/src/js/dist/vendor.js';\r\n\r\n // toggle nav function\r\n const toggleNav = () => {\r\n nav.classList.toggle('open');\r\n mobileToggle.classList.toggle('active');\r\n body.classList.toggle('mobileMenu');\r\n };\r\n // mobile nav toggle eventListener\r\n mobileToggle.addEventListener('click', toggleNav);\r\n\r\n // mobile dropdown menu handling\r\n const toggleMobileDropdown = (e) => {\r\n if (e.target.tagName === 'A' && e.target.nextElementSibling) {\r\n e.preventDefault();\r\n }\r\n let listItem;\r\n if (e.target.tagName === 'LI') {\r\n listItem = e.target;\r\n } else {\r\n listItem = e.target.parentElement;\r\n }\r\n const hiddenItems =\r\n e.target.querySelector('.CMSListMenuUL') || e.target.nextElementSibling;\r\n if (listItem.classList.contains('open')) {\r\n slideUp(hiddenItems);\r\n listItem.classList.remove('open');\r\n } else if (hiddenItems === null) {\r\n return;\r\n } else {\r\n menuCategories.filter((c) => c.classList.contains('open')).map((c) => {\r\n slideUp(c.querySelector('.CMSListMenuUL'));\r\n c.classList.remove('open');\r\n });\r\n slideDown(hiddenItems);\r\n listItem.classList.add('open');\r\n }\r\n };\r\n let menuCategories;\r\n // if mobile\r\n if (windowWidth < 1024) {\r\n menuCategories = [...document.querySelectorAll('#menuElem > li')]\r\n .filter((el) => el.querySelector('.CMSListMenuUL'))\r\n .map((el) => {\r\n el.addEventListener('click', toggleMobileDropdown);\r\n return el;\r\n });\r\n\r\n // TODO: Temp hide news and map on mobile\r\n const menuItems = [...document.querySelectorAll('#menuElem a')];\r\n const newsItem = menuItems.filter(link => link.getAttribute('href').includes('#novinky'));\r\n if (newsItem.length > 0) {\r\n newsItem[0].style.display = 'none';\r\n }\r\n const maps = menuItems.filter(l => l.getAttribute('href').toLowerCase().includes('map'));\r\n if (maps.length > 0) {\r\n maps[0].style.display = 'none';\r\n }\r\n }\r\n\r\n const mobileHeader = document.querySelector('.mobile-header');\r\n let isDarkNav;\r\n if (nav.getAttribute('data-dark') === 'true') {\r\n isDarkNav = true;\r\n } else {\r\n isDarkNav = false;\r\n }\r\n\r\n\r\n // adding/removing 'scrolled' class to navigation based on scroll\r\n const pageWasScrolled = () => {\r\n const scroll = window.pageYOffset;\r\n const innerHeight = window.innerHeight;\r\n // height sets the scrolled breakpoint\r\n const height = innerHeight - innerHeight / 2;\r\n if (windowWidth > 1024) {\r\n if (scroll > height && !nav.classList.contains('scrolled')) {\r\n nav.classList.add('scrolled');\r\n } else if (scroll < height && nav.classList.contains('scrolled')) {\r\n nav.classList.remove('scrolled');\r\n }\r\n } else {\r\n if (scroll > height && !mobileHeader.classList.contains('dark')) {\r\n mobileHeader.classList.add('dark');\r\n } else if (scroll < height && mobileHeader.classList.contains('dark')) {\r\n mobileHeader.classList.remove('dark');\r\n }\r\n }\r\n };\r\n\r\n const requestAF = window.requestAnimationFrame;\r\n let lastScroll, yScrollPos;\r\n\r\n // checks with requestAnimationFrame if page was scrolled, fire pageWasScrolled() if true\r\n const scrollLoop = () => {\r\n yScrollPos = window.pageYOffset;\r\n if (lastScroll === yScrollPos) {\r\n requestAF(scrollLoop);\r\n return false;\r\n } else {\r\n lastScroll = yScrollPos;\r\n pageWasScrolled();\r\n }\r\n requestAF(scrollLoop);\r\n };\r\n // start scrollLoop only if on the right page based in isDarkNav\r\n if (!isDarkNav) scrollLoop();\r\n\r\n // homepage animation observer\r\n const homepageAnimation = () => {\r\n if (windowWidth > 1024) {\r\n const animatedBlocks = document.querySelectorAll('.animated');\r\n const observerConfig = {\r\n threshold: [0]\r\n };\r\n // instance of Intersection observer adding/removing .animate class on intersection\r\n const observer = new IntersectionObserver((entries, observerConfig) => {\r\n entries.map((entry) => {\r\n if (entry.intersectionRatio > 0) {\r\n entry.target.classList.add('animate');\r\n } else {\r\n entry.target.classList.remove('animate');\r\n }\r\n });\r\n });\r\n const observedBlocks = [...animatedBlocks].map((block) =>\r\n observer.observe(block)\r\n );\r\n }\r\n };\r\n\r\n // if on homepage\r\n if (document.querySelector('.home-about')) {\r\n // newsletter placeholder\r\n const newsletterInput = document.querySelector(\r\n '.NewsletterSubscription input.form-control'\r\n );\r\n if (newsletterInput !== null) {\r\n newsletterInput.setAttribute('placeholder', newletterPlaceholder);\r\n }\r\n homepageAnimation();\r\n\r\n // override home hash navigation\r\n overrideHomeNav();\r\n\r\n\r\n\r\n // init homepage slider\r\n load.js(jqueryLibs).then(() => initNewsSlider());\r\n }\r\n\r\n function initNewsSlider() {\r\n // init owl carousel\r\n const prev = $('.text-slider .prev');\r\n const next = $('.text-slider .next');\r\n const owl = $('.text-slider .owl-carousel').owlCarousel({\r\n loop: false,\r\n nav: false,\r\n items: 1,\r\n autoHeight: true,\r\n autoplay: true,\r\n autoplaySpeed: 800\r\n });\r\n prev.on('click', () => {\r\n owl.trigger('prev.owl.carousel', [800]).trigger('stop.owl.autoplay');\r\n });\r\n next.on('click', () => {\r\n owl.trigger('next.owl.carousel', [800]).trigger('stop.owl.autoplay');\r\n });\r\n prev.addClass('hide');\r\n\r\n // new instance of ImageCards\r\n const slider = new ImageCards('.image-cards');\r\n\r\n owl.on('changed.owl.carousel', (e) => {\r\n slider.change(e.page.index);\r\n if (e.page.index === 0) {\r\n prev.addClass('hide');\r\n next.removeClass('hide');\r\n } else if (e.page.index === e.page.count - 1) {\r\n prev.removeClass('hide');\r\n next.addClass('hide');\r\n } else {\r\n prev.removeClass('hide');\r\n next.removeClass('hide');\r\n }\r\n });\r\n }\r\n\r\n function overrideHomeNav() {\r\n const homeLinks = [...document.querySelectorAll('#menuElem a')]\r\n .filter((link) => link.getAttribute('href').includes('#'))\r\n .map((link) => {\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const id = link.getAttribute('href').substring(link.getAttribute('href').indexOf('#') + 1);\r\n if (document.getElementById(id)) {\r\n if (id.toLowerCase() === 'kontakt' || id.toLowerCase() === 'contact') {\r\n const igImgs = [...document.querySelectorAll('img.lazyload')];\r\n igImgs.forEach(i => lazySizes.loader.unveil(i));\r\n // const distance = document.body.scrollHeight + 1000;\r\n // scrollIt(distance, 1500, 'easeOutQuad');\r\n //setTimeout(() => scrollIt(document.getElementById(id), 500, 'linear'), 1500);\r\n }\r\n scrollToID(id);\r\n if (windowWidth < 1024) toggleNav();\r\n }\r\n });\r\n return link;\r\n });\r\n\r\n let logo;\r\n if (windowWidth <= 1024) {\r\n logo = document.querySelector('.mobile-logo');\r\n } else {\r\n logo = document.querySelector('.header__logo');\r\n }\r\n logo.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n if (window.pageYOffset > 0) {\r\n scrollIt(0, 1500, 'easeOutQuad', null);\r\n const loc = window.location;\r\n history.replaceState('', document.title, loc.pathname + loc.search);\r\n }\r\n });\r\n\r\n const homeLinkAbout = [...document.querySelectorAll('#menuElem a')]\r\n .filter((link) => link.getAttribute('href') === '/en/' || link.getAttribute('href') === '/cz/')[0];\r\n homeLinkAbout.addEventListener('click', (e) => e.preventDefault());\r\n\r\n\r\n }\r\n\r\n function scrollToID(id) {\r\n $('html, body').stop().animate({ scrollTop: $(`#${id}`).offset().top - 70 }, 1500) //anchor top offset - header height\r\n window.location.hash = `#${id}`;\r\n }\r\n\r\n // if on menu\r\n if (document.querySelector('.menu-submenu')) {\r\n const submenu = document.querySelector('.menu-submenu');\r\n\r\n\r\n setTimeout(() => {\r\n scrollIt(submenu.offsetTop / 2, 700, 'easeOutQuad', null);\r\n }, 200);\r\n\r\n // init each instance of gallery (owl carousel)\r\n load.js(jqueryLibs).then((res) => initMenuSliders());\r\n }\r\n\r\n function initMenuSliders() {\r\n const $galleries = $('.click-gallery .owl-carousel');\r\n const owlInstances = {};\r\n if ($galleries.length > 0) {\r\n $galleries.each((i, g) => {\r\n owlInstances[i] = $galleries.eq(i).owlCarousel({\r\n loop: true,\r\n nav: false,\r\n items: 1,\r\n margin: 5,\r\n lazyLoad: true,\r\n autoHeight: true,\r\n mouseDrag: false,\r\n touchDrag: false\r\n });\r\n $galleries\r\n .eq(i)\r\n .parent()\r\n .find('.prev')\r\n .on('click', () => owlInstances[i].trigger('prev.owl.carousel'));\r\n $galleries\r\n .eq(i)\r\n .parent()\r\n .find('.next')\r\n .on('click', () => owlInstances[i].trigger('next.owl.carousel'));\r\n });\r\n }\r\n }\r\n\r\n // if on gallery page\r\n let galleryItems = [];\r\n if (document.querySelector('.gallery')) {\r\n // prepare array of ordered images for fancyBox\r\n const leftCol = [...document.querySelectorAll('.left-col .item--single')];\r\n const rightCol = [...document.querySelectorAll('.right-col .item--single')];\r\n\r\n if (leftCol.length > rightCol.length) {\r\n leftCol.map((el, i) => {\r\n galleryItems.push(el);\r\n if (rightCol[i]) {\r\n galleryItems.push(rightCol[i]);\r\n }\r\n });\r\n } else {\r\n rightCol.map((el, i) => {\r\n if (leftCol[i]) {\r\n galleryItems.push(leftCol[i]);\r\n }\r\n galleryItems.push(el);\r\n });\r\n\r\n }\r\n // load jquery libs\r\n load.js(jqueryLibs).then(() => attachGalleryHandlers());\r\n\r\n // also open gallery with the button\r\n const galleryBtn = document.getElementById('openGallery');\r\n galleryBtn.addEventListener('click', () => openGallery());\r\n }\r\n\r\n function attachGalleryHandlers() {\r\n const galleryLinks = [...document.querySelectorAll('.item--single')];\r\n if (galleryLinks.length > 0) {\r\n galleryLinks.map((el) =>\r\n el.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n openGallery(galleryItems.indexOf(el));\r\n })\r\n );\r\n }\r\n }\r\n\r\n function openGallery(index = 0) {\r\n // manually launch fancyBox on selected index\r\n $.fancybox.open(\r\n galleryItems,\r\n {\r\n hash: false,\r\n // afterShow: () => console.log('lightbox opened'),\r\n slideShow: {\r\n autoStart: false,\r\n speed: 3000\r\n }\r\n },\r\n index\r\n );\r\n }\r\n\r\n // if form is present\r\n if (document.querySelector('.reservation .FormPanel')) {\r\n Promise.all([\r\n load.js(jqueryLibs),\r\n load.js(\"/RZAT/phonenumber/libphonenumber.js\")\r\n ]).then(() => {\r\n initDatepicker();\r\n initNumberValidation();\r\n })\r\n }\r\n\r\n function initNumberValidation() {\r\n // najit cislo a ulozit\r\n var phonefield = $(\".phone-field\");\r\n\r\n // event click na submit button\r\n // $(\".FormButton\").click(function (e) {\r\n // validateNumber(phonefield.val(), e);\r\n // });\r\n $(\".FormButton\").on('click', function (e) {\r\n validateNumber(phonefield.val(), e);\r\n });\r\n };\r\n\r\n function validateNumber(num, e) {\r\n const util = new libphonenumber.PhoneNumberUtil();\r\n let isValid;\r\n try {\r\n isValid = util.isValidNumber(util.parse(num));\r\n } catch (err) {\r\n isValid = false;\r\n }\r\n\r\n if (!isValid) {\r\n e.preventDefault();\r\n if ($(\".EditingFormErrorLabel.error\").length === 0)\r\n $(\".phone-valid .error\").append(\"\" + errorphone + \"\");\r\n\r\n if (document.querySelector('.reservation')) {\r\n const scrollTime = windowWidth > 1024 ? 800 : 1500;\r\n const easing = 'easeOutQuad';\r\n scrollIt(document.querySelector('.reservation'), scrollTime, easing);\r\n }\r\n }\r\n else {\r\n $(\".phone-valid .error\").hide();\r\n clicked = false;\r\n }\r\n }\r\n\r\n if (document.querySelector('.GDPR-detal-text')) {\r\n load.js(jqueryLibs).then(() => {\r\n initGDPRShow();\r\n })\r\n }\r\n\r\n function initGDPRShow() {\r\n $(\".GDPR-detal-text\").click(function () {\r\n var descr = $(this);\r\n var transpBlock = $('.show--opacity');\r\n if (descr.hasClass(\"opening\")) return\r\n if (!descr.hasClass(\"open\")) {\r\n var heightDescr = descr[0].scrollHeight;\r\n descr.css(\"max-height\", heightDescr);\r\n transpBlock.addClass('transparent');\r\n descr.addClass(\"opening\");\r\n setTimeout(() => {\r\n descr.addClass(\"open\");\r\n $(\".accept .error\").addClass(\"open\");\r\n transpBlock.addClass('none');\r\n descr.removeClass(\"opening\");\r\n }, 500);\r\n $(\"#GDPRMore\").addClass('none');\r\n } else {\r\n descr.css(\"max-height\", \"100px\");\r\n transpBlock.removeClass('none transparent');\r\n $(\"#GDPRMore\").removeClass('none');\r\n descr.addClass(\"opening\");\r\n setTimeout(() => {\r\n descr.removeClass(\"open\");\r\n $(\".accept .error\").removeClass(\"open\");\r\n descr.removeClass(\"opening\");\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n function initDatepicker() {\r\n const lang = $('body').hasClass('CSCZ')\r\n ? $.datepicker.regional['cs']\r\n : $.datepicker.regional['en-GB'];\r\n $.datepicker.setDefaults(lang);\r\n $('.FormPanel .date').attr('readonly', true);\r\n\r\n const dropdown = document.querySelector('.time-group .time');\r\n const timeOptions = [...document.querySelectorAll('.time-group option')];\r\n const sundayTimes = ['11:30', '11:45'];\r\n const disabledDays = [`24-12-${new Date().getFullYear()}`, '29-07-2019', '30-07-2019', '31-07-2019', '01-08-2019', '02-08-2019', '03-08-2019', '04-08-2019', '05-08-2019'];\r\n\r\n\r\n if ($('.ui-datepicker').length) {\r\n $('.ui-datepicker').remove();\r\n }\r\n const picker = $('.FormPanel .date').datepicker({\r\n minDate: 0,\r\n beforeShow: function () {\r\n $('.ui-datepicker').addClass('notranslate');\r\n },\r\n beforeShowDay: function (date) {\r\n const day = date.getDay();\r\n const dayString = jQuery\r\n .datepicker\r\n .formatDate('dd-mm-yy', date);\r\n return [disabledDays.indexOf(dayString) === -1]\r\n }\r\n });\r\n }\r\n\r\n Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);\r\n function EndRequestHandler(sender, args) {\r\n if (args.get_error() == undefined && !args.get_response().get_aborted()) {\r\n if (document.querySelector('.FormPanel')) {\r\n initDatepicker();\r\n }\r\n if (document.querySelector('.events')) {\r\n const scrollTime = windowWidth > 1024 ? 800 : 1500;\r\n const easing = 'easeOutQuad';\r\n scrollIt(document.querySelector('.order-form'), scrollTime, easing);\r\n }\r\n\r\n if (document.querySelector('.NewsletterSubscription')) {\r\n const scrollTime = windowWidth > 1024 ? 800 : 1500;\r\n const easing = 'easeOutQuad';\r\n scrollIt(document.querySelector('.NewsletterSubscription'), scrollTime, easing);\r\n }\r\n if (document.querySelector('.reservation')) {\r\n const scrollTime = windowWidth > 1024 ? 800 : 1500;\r\n const easing = 'easeOutQuad';\r\n scrollIt(document.querySelector('.reservation'), scrollTime, easing);\r\n }\r\n if (document.querySelector('.GDPR-detal-text')) {\r\n initGDPRShow()\r\n }\r\n if (document.querySelector('.reservation')) {\r\n initNumberValidation()\r\n }\r\n }\r\n }\r\n\r\n // if on interactive map page\r\n if (document.querySelector('.restaurant-map')) {\r\n if (windowWidth >= 1024) {\r\n // init InteractiveMap \r\n const map = new InteractiveMap();\r\n }\r\n\r\n\r\n }\r\n\r\n // if on blog post with gallery\r\n if (document.querySelector('.news-detail .owl-carousel')) {\r\n load.js(jqueryLibs).then(() => initNewsDetailSlider());\r\n }\r\n\r\n function initNewsDetailSlider() {\r\n const pager = $('.news-detail .Pager').remove();\r\n const $owl = $('.news-detail .owl-carousel').owlCarousel({\r\n loop: false,\r\n nav: false,\r\n items: 1,\r\n autoHeight: true,\r\n margin: 5,\r\n lazyLoad: true\r\n });\r\n $('.news-detail .prev').on('click', () => $owl.trigger('prev.owl.carousel'));\r\n $('.news-detail .next').on('click', () => $owl.trigger('next.owl.carousel'));\r\n }\r\n\r\n var clicked = false;\r\n (function () {\r\n document\r\n .addEventListener(\"click\", function (e) {\r\n if (e.target.classList.contains(\"FormButton\")) {\r\n if (clicked) {\r\n e.preventDefault();\r\n }\r\n clicked = true;\r\n }\r\n });\r\n })();\r\n\r\n Sys\r\n .WebForms\r\n .PageRequestManager\r\n .getInstance()\r\n .add_endRequest(UpdatePanelHandler);\r\n function UpdatePanelHandler(sender, args) {\r\n if (args.get_error() == undefined && !args.get_response().get_aborted()) {\r\n clicked = false;\r\n }\r\n }\r\n\r\n\r\n //Sunday brunch from 11:00\r\n function brunchTime() {\r\n var option = $(\".reservation .time-group option[value^='11:']\");\r\n var resDay;\r\n option.remove();\r\n\r\n dateVal = $(\".reservation .date-group .date\").val();\r\n\r\n if (dateVal.indexOf(\".\") >= 0) {\r\n dateValParts = dateVal.split(\".\");\r\n } else {\r\n dateValParts = dateVal.split(\"/\");\r\n }\r\n\r\n if (dateVal != \"\") {\r\n var resDate = new Date(dateValParts[2], dateValParts[1] - 1, dateValParts[0]);\r\n resDay = resDate.getDay();\r\n } else {\r\n resDay = -1;\r\n }\r\n\r\n if (resDay == 0) {\r\n option.show();\r\n }\r\n }\r\n\r\n if (document.querySelector('.reservation .time-group')) {\r\n load.js(jqueryLibs).then(() => brunchTime());\r\n }\r\n\r\n //document.querySelector(\".reservation .date-group input\").onchange = function () { load.js(jqueryLibs).then(() => brunchTime()) };\r\n const data = document.querySelector(\".popup-overlay\");\r\n if (data) {\r\n const popupId = data.dataset.popupId;\r\n $(\".popup-close-action, .popup-overlay\").click(function (event) {\r\n event.preventDefault();\r\n $(\"body\").removeClass(\"popup-active\");\r\n window.localStorage.setItem(popupId, \"closed\");\r\n });\r\n\r\n $(\".popup-button-action, .popup-overlay\").click(function (event) {\r\n $(\"body\").removeClass(\"popup-active\");\r\n window.localStorage.setItem(popupId, \"closed\");\r\n });\r\n\r\n if (window.localStorage.getItem(popupId) != \"closed\") {\r\n window.setTimeout(function () {\r\n $(\"body\").addClass(\"popup-active\");\r\n }, 1000);\r\n } else {\r\n $(\"body\").removeClass(\"popup-active\");\r\n }\r\n };\r\n});\r\n"]}