{"version":3,"sources":["script.js"],"names":["selector","logic","forEachElement","delay","element","addEventListener","this","invoke","activated","timer","clearTimeout","addToClasses","setTimeout","closestClass","collapsableContent","className","elm","_typeof","hasAttribute","classList","contains","parentNode","classes","target","positioningTarget","LargeSelect","call","today","querySelector","lastMonth","content","_removePopupContainer","closingPopup","clientHeight","contentHeight","popupContainer","document","startPosition","_setPopupSizeAndPosition","length","eachHeight","style","removeProperty","height","position","toggleClass","header","_handleDocumentClick","inputs","split","checked","_setClickHandler","fullScreenMobile","window","prototype","setPopupContent","e","console","warn","stopPropagation","viewportHeight","popupHeight","lowestAvail","hasMoved","popupBottomPos","scrollToPosition","removeChild","moveAmount","pageYOffset","el","LargeSelectList","_this3","optionSelectSetValueAndSelected","setTextValue","posX","rect","left","width","right","select","value","eventDispatch","fsMob","clientWidth","innerWidth","cloned","listContentNode","cloneNode","listNode","_this2","options","forEach","openOverlay","createElement","getAttribute","remove","popup","selectNode","appendChild","dataset","selectType","_setUniqueId","ListTabs","body","clickEventSetup","bind","uid","switchPane","tagName","toUpperCase","closest","accordion","activeTab","currentActivePane","to","duration","perTick","Modal","scrollTop","scrollTo","bindPostLoadEvents","bindEvents","attachClickEvent","_this4","evt","event","currentTarget","remoteSrc","groupName","undefined","init","contentHTML","underlineSetup","indexOf","m","debounce","_this","moveUnderline","insertKeywordSearchRootId","tabs","paneTarget","doit","onresize","newActivePane","removeFromClasses","isMobile","querySelectorAll","fitTabs","positionUnderline","tabsWidth","navMoreLink","offsetWidth","tab","navWidth","navMoreLinks","nav","line","tabWidth","tabPos","offsetLeft","tabTextWidth","item","LargeSelectDate","constructor","toReturn","calInsert","calTemplate","calPostValue","scope","trackSelectedDate","Object","create","moment","showAdjacentMonths","selectContent","selectedDate","clickEvents","rawValue","innerHTML","parsedValue","closePopup","pc","preventDefault","$","clndr","constraints","startDate","nextMonth","date","adjacentDaysChangeMonth","LargeSelectTime","val","click","format","calcDepartureGrid","numberOfTrs","children","_handleClickEvent","onAutoClose","openMenu","contentLoaded","innerHeight","viewportScrollPos","popupTopOffset","size","modalTheme","add","theme","destroy","close","open","selectValue","container","callback","textvalue","openDynamicControl","LargeSelectPax","typeElement","current","objectName","onchange","optionSelectValue","clickListener","title","modalTitle","modalSize","modalHeight","modalPadding","modalHTML","itemTo","itemId","setValues","toggleCustomSelect","modalInner","modalBottomOffset","offsetHeight","modal","addContent","input","eval","changeNativeSelect","mode","modalMode","modalSrc","outerHTML","values","hasClass","optionSelect","nodeId","clearBottom","modalStartnode","getElementById","text","textContent","nativeElement","optionsElement","selectInput","boundingTop","getBoundingClientRect","offsetBottom","viewPortHeight","onResize","setAttribute","createTextNode","source","img","filter","option","concat","name","pluralizedname","paxOutput","join","slideShowType","itemWidthXs","itemWidthSm","itemWidthMd","slideshow","startIndex","gutter","prevButton","nextButton","touch","swipeAngle","from","mouseDrag","responsive","id","itemFrom","accordionItemContainers","offsetTop","slider","getTeaserSlider","sliderTeasers","getDimensions","overflow","inputOffset","loop","controlsContainer","renderSelect","autoHeight","items","fixedWidth","speed","timeout","clearInterval","spin","top","setInterval","parseInt","removeAttribute","max","flashError","actionSpin","innerText","step","dir","parentElement","sourceId","Array","i","n","toggleTooltip","toolTipIcon","imgSrc","calendar","template","html","ignoreInactiveDaysInSelection","past","controls","tns","autoplay","slideBy","calInput","margin","padding","modalListener","removeEventListener","768","1200","initImageUploads","ImageUploader","_createClass","file","BookBlock","_classCallCheck","push","that","_this6","0","offset","onInit","previewFile","wrapper","hour","minutes","min","previousSibling","hours","_this5","inlineCalendar","inputGroup","calMinTime","calMaxTime","isValid","endDate","inactive","scrollHeight","image","key","files","reader","FileReader","src","result","filevalue","readAsDataURL","pageOffset","checkOffset"],"mappings":"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","file":"script.js","sourcesContent":["// accordion js\n//document.addEventListener(\"DOMContentLoaded\",\n// (_) => {\n// const toggleAccordionContent = (event) => {\n// //let accordion, target, activeTab;\n\n// //accordion = element.closest('.accordion');\n// //target = element.getAttribute('data-target');\n// //activeTab = accordion.querySelector('.accordion-pane.active');\n\n// //if (target !== activeTab.getAttribute('data-value')) {\n// // removeFromClasses(activeTab, \"active\");\n// // addToClasses(accordion.querySelector('.accordion-pane[data-value=\"' + target + '\"]'), \"active\");\n// //}\n// }\n\n// const addEventListener = (element) => {\n// element.addEventListener('click', toggleAccordionContent);\n// }\n\n// document.querySelectorAll(\".tabs [data-target]\").forEach(addEventListener);\n// });\n\nconst DoAfterDelay = function (logic, delay = 300) {\n let timer = null;\n\n this.invoke = () => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(() => {\n logic();\n },\n delay);\n };\n}\n\nconst closestClass = (elm, className) => elm && typeof elm === \"object\" && elm.hasAttribute(\"class\") && typeof elm.classList !== \"undefined\" && (elm.classList.contains(className) || closestClass(elm.parentNode, className));\n\ndocument.addEventListener('DOMContentLoaded', function () {\n\n if (selector(\".type-select\").length) {\n\n selector(\".type-select [data-type]\").forEachElement(function (element) {\n element.addEventListener('click', function (item) {\n\n let selected = item.target.closest('.flag');\n let activated = selected.dataset.type;\n\n if (activated == 'oneway') {\n addToClasses(document.querySelector('.direction-return'), 'disabled');\n } else {\n removeFromClasses(document.querySelector('.direction-return'), 'disabled');\n }\n\n })\n });\n\n }\n\n})\ndocument.addEventListener('DOMContentLoaded', function () {\n if (selector(\".collapse-this\").length) {\n const collapsableContent = selector('.collapse-this .collapsable-title');\n collapsableContent.forEachElement(function (element) {\n element.addEventListener('click', function () {\n var scope = element.closest('.collapse-this');\n toggleClass(scope, 'open');\n })\n })\n }\n})\n\nfunction LargeSelectDate(target, positioningTarget) {\n LargeSelect.call(this, target, positioningTarget);\n let content = target.parentNode.querySelector(\"[data-select-content]\");\n this.setTextValue(content);\n}\n\nLargeSelectDate.prototype = Object.create(LargeSelect.prototype);\nLargeSelectDate.prototype.constructor = LargeSelectDate;\nLargeSelectDate.prototype.setTextValue = function (selectContent) {\n\n let rawValue = this.target.closest('[data-select-wrap]').querySelector('input[type=hidden]').value;\n let parsedValue = new moment(rawValue, \"YYYY-MM-DD\");\n\n this.target.querySelector('.large-select__value').innerHTML =\n parsedValue.format(\"DD/MM/YYYY\");\n};\n\nLargeSelectDate.prototype.setPopupContent = function () {\n let pc = this.popupContainer;\n let _this = this;\n let toReturn = this.target.parentNode.querySelector(\"[data-select-content]\").cloneNode(true);\n this.target.parentNode.removeChild(this.target.parentNode.querySelector(\"[data-select-content]\"));\n pc.appendChild(toReturn);\n\n let calSelector = '[data-uid=\"' + this.popupContainer.dataset.uid + '\"]';\n let calInsert = calSelector + ' [data-calendar-insert]';\n let calTemplate = '[data-calendar-template]';\n let calPostValue = _this.target.closest('[data-select-wrap]').querySelector('input');\n\n $(calInsert).clndr({\n template: $(calTemplate).html(),\n constraints: {\n startDate: new moment(),\n },\n classes: {\n past: \"disabled\",\n today: \"today\",\n lastMonth: \"disabled\",\n nextMonth: \"faded\"\n },\n trackSelectedDate: true,\n date: new moment(),\n showAdjacentMonths: true,\n adjacentDaysChangeMonth: true,\n selectedDate: $(calPostValue).val(),\n clickEvents: {\n click: function (target) {\n calPostValue.value = target.date.format('YYYY-MM-DD');\n _this.closePopup();\n eventDispatch(calPostValue, 'change');\n\n }\n }\n });\n\n // TODO: Add clndr.js here $(calInsert).clndr({ template: $(calTemplate).html(); });\n // When date selected call _this.closePopup();\n // Value will need to be set in date-time field, this.target.parentNode.querySelector('[name=date-time]');\n\n [].forEach.call(pc.querySelectorAll('[data-calendar-done]'), function (el) {\n el.addEventListener('click', function (e) {\n _this.closePopup();\n e.preventDefault();\n });\n });\n};\n\nLargeSelectDate.prototype.closingPopup = function () {\n this.setTextValue(this.popupContainer);\n this.target.parentNode.appendChild(this.popupContainer.children[0]);\n};\n\n[].forEach.call(document.querySelectorAll(\"[data-select-type='date']\"), function (el) {\n if (el.dataset[\"autoload\"] !== \"false\") {\n let select = new LargeSelectDate(el);\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n [].forEach.call(document.querySelectorAll(\"[data-select-type='datetime-date']\"), function (el) {\n if (el.dataset[\"autoload\"] !== \"false\") {\n let select = new LargeSelectDate(el, el.closest('.date-time-picker'));\n }\n });\n\n [].forEach.call(document.querySelectorAll(\"[data-select-type='datetime-time']\"), function (el) {\n if (el.dataset[\"autoload\"] !== \"false\") {\n let select = new LargeSelectTime(el, el.closest('.date-time-picker'));\n }\n });\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n\n if (selector(\".departure-grid\").length) {\n calcDepartureGrid();\n }\n\n})\n\n\nfunction calcDepartureGrid() {\n\n let totalHeight = document.querySelector(\".departure-grid\").clientHeight;\n\n let midHeight = document.querySelector(\".departure-grid__mid\").clientHeight;\n\n let tableHeadHeight = document.querySelector(\".departure-grid__mid .tr.thead\").clientHeight;\n\n let contentHeight = midHeight - tableHeadHeight;\n\n let numberOfTrs = document.querySelectorAll(\".tr:not(.thead)\").length;\n\n numberOfTrs = 7\n\n let eachHeight = contentHeight / numberOfTrs;\n\n\n document.querySelector(\".departure-grid__foot\").style.height = (eachHeight) + 'px';\n document.querySelector(\".departure-grid__foot\").style.position = 'fixed';\n\n\n /*\n\nif (e.target.closest('.pax-select__lower-options')) {\n\n\n} else {\n\nif (e.target.closest('.pax-select')) {\nvar select = e.target.closest('.pax-select');\nif (hasClass(select, 'pax-select--open')) {\nremoveFromClasses(select, 'pax-select--open');\n} else {\naddToClasses(select, 'pax-select--open');\n}\n} else {\nvar paxSelects = document.querySelectorAll('.pax-select--open');\nfor (let i = 0; i < paxSelects.length; i++) {\nremoveFromClasses(paxSelects[i], 'pax-select--open');\n}\n}\n\n}\n*/\n\n}\n\n// Header JS\ndocument.addEventListener('DOMContentLoaded', function () {\n\n if (selector(\".header\").length) {\n const header = document.querySelector(\".header\");\n header.querySelector(\".burger-icon input\").addEventListener('change', function () {\n openMenu(header);\n })\n }\n})\n\nfunction openMenu(header) {\n toggleClass(header, 'menu-open');\n toggleClass(document.querySelector('html'), 'overflow-mobile-hidden');\n var inputs = \".\" + header.className.split(\" \")[0] + \" .nav input[type=checkbox]\";\n selector(inputs).forEachElement(function (element) {\n element.checked = false;\n })\n}\n\n\nfunction LargeSelect(target, positioningTarget) {\n this.target = target;\n this.positioningTarget = null;\n this.popupContainer = null;\n this.fullScreenMobile = false;\n this.startPosition = 0;\n this.hasMoved = false;\n\n this._setClickHandler = function () {\n this.target.addEventListener('click', function (e) {\n this._handleClickEvent(this.target);\n e.stopPropagation();\n }.bind(this));\n };\n\n this._handleClickEvent = function (target) {\n if (this.popupContainer) {\n this._removePopupContainer();\n return;\n }\n this._createPopupContainer();\n this.setPopupContent();\n this.contentLoaded();\n };\n\n this._removePopupContainer = function () {\n if (this.popupContainer !== null) {\n this.closingPopup();\n document.body.removeChild(this.popupContainer);\n this.popupContainer = null;\n if (this.hasMoved) {\n scrollToPosition(window, this.startPosition, 200);\n }\n\n }\n };\n\n this._setPopupSizeAndPosition = function () {\n if (!this.popupContainer) {\n return;\n }\n\n let el = this.popupContainer;\n\n if (this._isMobile()) {\n el.style.removeProperty('top');\n el.style.removeProperty('left');\n el.style.removeProperty('width');\n return;\n }\n\n let t = this.positioningTarget || this.target;\n let rect = t.getBoundingClientRect();\n let posY = rect.bottom + window.pageYOffset + 'px';\n let posX = rect.left + 'px';\n let width = (rect.right - rect.left) + 'px';\n\n el.style.top = posY;\n el.style.left = posX;\n el.style.width = width;\n };\n\n this._isMobile = function () {\n if (this.target.dataset.fsMob === \"true\") {\n return Math.max(document.documentElement.clientWidth, window.innerWidth || 0) < 768\n }\n\n return false;\n };\n\n this._setUniqueId = function (el) {\n el.dataset.uid = Math.random().toString(36).substr(2, 9);\n };\n\n this._createPopupContainer = function () {\n document.querySelectorAll(\".large-select__options\").forEach(openOverlay => {\n if (typeof openOverlay.onAutoClose === \"function\") {\n openOverlay.onAutoClose();\n } else {\n openOverlay.remove();\n }\n });\n\n this._removePopupContainer();\n\n let popup = this.popupContainer = document.createElement('div');\n popup.onAutoClose = () => {\n this.hasMoved = false;\n this._removePopupContainer();\n };\n\n popup.className = \"large-select__options\" +\n (this.fullScreenMobile ? \" -fs\" : \"\") +\n ' large-select__popup--' + (this.target.dataset.selectType)\n ;\n\n this._setUniqueId(popup);\n this._setPopupSizeAndPosition();\n\n document.body.appendChild(popup);\n\n document.addEventListener('click', this._handleDocumentClick.bind(this));\n };\n\n this._handleDocumentClick = function (e) {\n if (this.popupContainer === null) {\n return;\n }\n\n let selector = '[data-uid=\"' + this.popupContainer.dataset.uid + '\"]';\n\n if (e.target.tagName.toUpperCase() !== \"BODY\" && e.target.closest(selector) === null && closestClass(e.target, \"controls\") === false) {\n this._removePopupContainer();\n }\n };\n\n this._setClickHandler();\n\n this.fullScreenMobile = this.target.dataset.fsMob === \"true\";\n this.positioningTarget = positioningTarget;\n\n window.addEventListener('resize', this._setPopupSizeAndPosition.bind(this));\n}\n\nLargeSelect.prototype.handleClickEvent = function (el) {\n this._handleClickEvent(el);\n};\n\nLargeSelect.prototype.setPopupContent = function () {\n console.warn(\"Not implemented\");\n};\n\nLargeSelect.prototype.closePopup = function () {\n this._removePopupContainer();\n};\n\nLargeSelect.prototype.closingPopup = function () {\n};\n\nLargeSelect.prototype.contentLoaded = function () {\n let viewportHeight = window.innerHeight;\n let viewportScrollPos = window.pageYOffset;\n let popupTopOffset = this.popupContainer.offsetTop;\n this.startPosition = viewportScrollPos;\n let popupHeight = this.popupContainer.clientHeight;\n\n let lowestAvail = (viewportHeight + viewportScrollPos);\n let popupBottomPos = (popupTopOffset + popupHeight + 20);\n\n let moveAmount = (popupTopOffset + (popupHeight + 20)) - viewportHeight;\n this.hasMoved = false;\n if (popupBottomPos > lowestAvail) {\n this.hasMoved = true;\n scrollToPosition(window, moveAmount, 400);\n\n }\n\n};\n\nfunction scrollToPosition(element, to, duration) {\n\n if (duration <= 0) return;\n var difference = to - window.pageYOffset;\n var perTick = difference / duration * 10;\n\n setTimeout(function () {\n element.scrollTop = window.pageYOffset + perTick;\n element.scrollTo(0, window.pageYOffset + perTick);\n if (window.pageYOffset === to) {\n return;\n }\n scrollToPosition(element, to, duration - 10);\n }, 10);\n}\n\n\nfunction LargeSelectList(target) {\n LargeSelect.call(this, target);\n let content = target.parentNode.querySelector(\"[data-select-content]\");\n this.setTextValue(content);\n let select = target.parentNode.querySelector('select');\n\n select.addEventListener(\"change\",\n evt => {\n if (!this.popupContainer) {\n optionSelectSetValueAndSelected(select, evt.currentTarget.value);\n this.setTextValue();\n }\n });\n}\n\nLargeSelectList.prototype = Object.create(LargeSelect.prototype);\nLargeSelectList.prototype.constructor = LargeSelectList;\nLargeSelectList.prototype.selectValue = function (e, val) {\n let value = val || e.currentTarget.dataset.value;\n let select = this.target.parentNode.querySelector('select');\n\n select.value = value;\n eventDispatch(select, 'change');\n\n optionSelectSetValueAndSelected(select, value);\n\n this.closePopup();\n};\nLargeSelectList.prototype.setPopupContent = function () {\n let listContentNode = this.target.parentNode.querySelector(\"[data-select-content]\");\n let selectNode = this.target.parentNode.querySelector('select');\n let cloned = listContentNode.cloneNode(true);\n\n this.target.parentNode.removeChild(listContentNode);\n this.popupContainer.appendChild(cloned);\n\n let listNode = cloned.querySelector('ul');\n listNode.innerHTML = '';\n\n [].forEach.call(selectNode.options, function (el) {\n let item = document.createElement('li');\n\n if (el.getAttribute(\"selected\") === \"\") {\n item.classList.add('-selected');\n }\n\n item.dataset.value = el.value;\n item.innerHTML = el.dataset.textvalue;\n item.addEventListener('click', this.selectValue.bind(this));\n listNode.appendChild(item);\n }.bind(this));\n};\nLargeSelectList.prototype.setTextValue = function (el) {\n let selectNode = this.target.parentNode.querySelector('select');\n\n this.target.querySelector('.large-select__value').innerHTML = selectNode.querySelector('[selected]').dataset.textvalue;\n};\n\nLargeSelectList.prototype.closingPopup = function () {\n this.setTextValue(this.popupContainer);\n this.target.parentNode.appendChild(this.popupContainer.children[0]);\n};\n\n[].forEach.call(document.querySelectorAll('[data-select-type=\"list\"]'), function (el) {\n if (el.dataset[\"autoload\"] !== \"false\")\n new LargeSelectList(el)\n});\n\nfunction ListTabs(groupName) {\n this.groupName = groupName;\n\n this.init = function () {\n this.underlineSetup();\n this.clickEventSetup();\n };\n\n this.underlineSetup = function () {\n let _this = this;\n window.addEventListener(\"resize\", debounce(function (e) {\n selector(\"[data-tabs='\" + _this.groupName + \"'] .tab.active\").forEachElement(function (element) {\n _this.moveUnderline(element);\n });\n }));\n };\n\n this.switchPane = function (el) {\n let accordion, paneTarget, target, activeTab;\n\n accordion = el.closest('[data-tabs]');\n paneTarget = accordion.dataset.tabs;\n target = el.dataset.target;\n activeTab = accordion.querySelector('[data-tabs=\"' + paneTarget + '\"] .active');\n\n if (target !== activeTab.dataset.target) {\n if (paneTarget == \"mmb\") {\n\n let currentActivePane = document.querySelector('[data-value=\"' + activeTab.dataset.target + '\"]');\n removeFromClasses(currentActivePane, \"active\");\n\n let newActivePane = document.querySelector('[data-value=\"' + target + '\"]');\n addToClasses(newActivePane, \"active\");\n\n } else {\n let currentActivePane = document.querySelector('[data-tablist-name=\"' + paneTarget + '\"] > .panes > [data-tab-value=\"' + activeTab.dataset.target + '\"]');\n removeFromClasses(currentActivePane, \"pane--active\");\n\n let newActivePane = document.querySelector('[data-tablist-name=\"' + paneTarget + '\"] > .panes > [data-tab-value=\"' + target + '\"]');\n addToClasses(newActivePane, \"pane--active\");\n }\n }\n };\n\n this.clickEventSetup = function () {\n let _this = this;\n [].forEach.call(document.querySelectorAll(\"[data-tabs='\" + this.groupName + \"'] .tab\"),\n function (el) {\n el.addEventListener(\"click\", function () {\n _this.switchPane(el);\n _this.positionUnderline(el);\n });\n });\n };\n\n this.positionUnderline = function (tab) {\n if (!(hasClass(tab, 'active'))) {\n removeFromClasses(tab.parentNode.querySelector('.tab.active'), 'active');\n addToClasses(tab, 'active');\n this.moveUnderline(tab);\n }\n };\n\n this.moveUnderline = function (tab) {\n let tabs, tabWidth, tabTextWidth, tabPos, line;\n\n tabs = tab.parentNode;\n tabWidth = tab.offsetWidth;\n tabTextWidth = tab.querySelector('.text').offsetWidth;\n tabPos = tab.offsetLeft + ((tabWidth - tabTextWidth) / 2);\n line = tabs.querySelector(\".line\");\n\n line.style.width = tabTextWidth + 'px';\n line.style.left = tabPos + 'px'\n };\n\n this.init()\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n window.tabs = [];\n\n [].forEach.call(document.querySelectorAll('[data-tabs]'), function (el) {\n window.tabs[el.dataset.tabs] = new ListTabs(el.dataset.tabs);\n });\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n // map script?\n})\n\n\nvar Modal = {\n \"current\": null,\n \"init\": function init() {\n Modal.bindEvents();\n },\n \"bindPostLoadEvents\": function bindPostLoadEvents(objectName) {\n selector(objectName + ' [data-modal]').forEachElement(function (element) {\n Modal.attachClickEvent(element);\n });\n },\n \"bindEvents\": function bindEvents() {\n selector(\"[data-modal]\").forEachElement(function (element) {\n Modal.attachClickEvent(element);\n });\n },\n \"attachClickEvent\": function attachClickEvent(element) {\n if (!(\"initialised\" in element.dataset)) {\n element.addEventListener(\"click\", (event) => this.clickListener(event, element, true));\n element.dataset[\"initialised\"] = true;\n }\n },\n \"clickListener\": function clickListener(event, element) {\n // prevent navigation if a tag\n event.preventDefault();\n Modal.create(element);\n Modal.open(element, event);\n },\n \"create\": function create(el) {\n var title = el.dataset.modalTitle;\n var size = el.dataset.modalSize;\n var height = el.dataset.modalHeight;\n\n var padding = el.dataset.modalPadding;\n var theme = el.dataset.modalTheme;\n var modalHTMLTitle = title ? '
' + title + '
' : '';\n var modalHTML = '
' + modalHTMLTitle + '
';\n var m = Modal.current = document.createElement(\"div\");\n m.classList.add(\"modal\");\n m.classList.add(\"modal--\" + theme);\n m.classList.add(size);\n m.classList.add(height);\n m.innerHTML = modalHTML;\n document.body.appendChild(m);\n m.querySelector('.modal__close').addEventListener(\"click\", function (e) {\n Modal.close();\n Modal.destroy();\n });\n m.addEventListener(\"mousedown\", function (e) {\n if (e.target !== this) return false;\n Modal.close();\n Modal.destroy();\n });\n },\n \"destroy\": function destroy() {\n Modal.current.parentNode.removeChild(Modal.current);\n },\n \"open\": function open(el, event) {\n event.stopPropagation();\n var container = document.querySelector('.modal');\n toggleClass(container, 'modal--open');\n Modal.addContent(el);\n toggleClass(document.querySelector('html'), 'modal-overlay');\n\n if (el.dataset.callback !== undefined) {\n eval(el.dataset.callback);\n }\n },\n \"close\": function close() {\n const openDynamicControl = document.querySelector('[data-uid]');\n if (openDynamicControl !== null) {\n openDynamicControl.remove();\n }\n var container = document.querySelector('.modal');\n toggleClass(container, 'modal--open');\n toggleClass(document.querySelector('html'), 'modal-overlay');\n },\n \"addContent\": function addContent(el) {\n var mode = el.dataset.modalMode;\n var remoteSrc = el.dataset.modalSrc;\n\n if (mode == undefined) {\n\n var content = el.dataset.modal;\n var contentHTML = document.querySelector(content).outerHTML;\n\n Modal.current.querySelector('.modal__content').innerHTML = contentHTML;\n\n } else if (mode == 'remote') {\n var m = document.createElement(\"iframe\");\n m.classList.add(\"modal__iframe\");\n\n if (remoteSrc.indexOf('?') !== -1) {\n m.src = remoteSrc + '&frame=true';\n } else {\n m.src = remoteSrc + '?frame=true';\n }\n\n\n m.src = remoteSrc + '?frame=true';\n Modal.current.querySelector('.modal__content').appendChild(m);\n }\n }\n}; //modal functionality\n\nfunction insertKeywordSearchRootId() {\n var nodeId = event.target.dataset.modalStartnode;\n if (nodeId !== 'undefined') {\n document.getElementById('searchRootId').value = nodeId;\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n\n Modal.init();\n})\n// nav JS\ndocument.addEventListener('DOMContentLoaded', function () {\n selector('.nav.nav--is-collapsable').forEachElement(function (element) {\n //Resize Window\n var doit;\n doit = setTimeout(onResize, 100);\n window.onresize = function () {\n if (!(isMobile())) {\n clearTimeout(doit);\n doit = setTimeout(onResize, 100);\n }\n };\n })\n\n if (!(isMobile())) {\n selector('.nav.nav--is-collapsable').forEachElement(function (element) {\n fitTabs(element);\n })\n }\n\n\n})\n\n\nfunction onResize() {\n if (!(isMobile())) {\n selector('.nav.nav--is-collapsable').forEachElement(function (element) {\n fitTabs(element);\n })\n }\n};\n\n\nfunction fitTabs(nav) {\n let navWidth = nav.offsetWidth;\n let navMoreLink = nav.querySelector('.nav__list__more');\n let tabsWidth = navMoreLink.offsetWidth;\n\n nav.querySelectorAll('.nav__list > li:not(.nav__list__more)').forEach(function (element) {\n tabsWidth += element.offsetWidth;\n if (tabsWidth > navWidth) {\n removeFromClasses(navMoreLink, 'hide');\n navMoreLink.querySelector('ul').appendChild(element);\n } else {\n // addToClasses(navMoreLink, 'hide');\n }\n });\n if (tabsWidth < navWidth) {\n var navMoreLinks = nav.querySelectorAll('.nav__list__more > ul > li');\n if (navMoreLinks.length == 1) {\n tabsWidth = tabsWidth - navMoreLink.offsetWidth;\n }\n nav.querySelectorAll('.nav__list__more > ul > li').forEach(function (element) {\n tabsWidth += element.offsetWidth;\n if (tabsWidth < navWidth) {\n nav.querySelector('.nav__list').appendChild(element);\n nav.querySelector('.nav__list').appendChild(navMoreLink);\n if (navMoreLinks.length == 1) {\n addToClasses(navMoreLink, 'hide');\n } else {\n // removeFromClasses(navMoreLink, 'hide');\n }\n }\n })\n }\n}\n\nfunction LargeSelectPax(target) {\n LargeSelect.call(this, target);\n let content = target.parentNode.querySelector(\"[data-select-content]\");\n this.setTextValue(content);\n}\n\nLargeSelectPax.prototype = Object.create(LargeSelect.prototype);\nLargeSelectPax.prototype.constructor = LargeSelectPax;\nLargeSelectPax.prototype.setTextValue = function (selectContent) {\n\n let allTypeElements = [].filter.call(selectContent.querySelectorAll(\"[data-passengertype]\"),\n (element) => {\n return element.value !== \"0\";\n });\n\n let paxOutput = allTypeElements.map(typeElement => {\n return typeElement.value === \"1\"\n ? `${typeElement.value} ${typeElement.dataset.name}`\n : `${typeElement.value} ${typeElement.dataset.pluralizedname}`;\n });\n\n this.target.querySelector('.large-select__value').innerHTML = paxOutput.join(', ');\n};\n\nLargeSelectPax.prototype.setPopupContent = function () {\n let toReturn = this.target.parentNode.querySelector(\"[data-select-content]\").cloneNode(true);\n let _this = this;\n this.target.parentNode.removeChild(this.target.parentNode.querySelector(\"[data-select-content]\"));\n this.popupContainer.appendChild(toReturn);\n\n [].forEach.call(this.popupContainer.querySelectorAll('[data-select-done]'), function (el) {\n el.addEventListener('click', function (e) {\n _this.closePopup();\n e.preventDefault();\n });\n });\n\n [].forEach.call(this.popupContainer.querySelectorAll('select'), function (el) {\n el.onchange = function (e) {\n optionSelectValue(el, el.value);\n }\n });\n};\n\nLargeSelectPax.prototype.closingPopup = function () {\n this.setTextValue(this.popupContainer);\n this.target.parentNode.appendChild(this.popupContainer.children[0]);\n};\n\n[].forEach.call(document.querySelectorAll(\"[data-select-type='pax']\"), function (el) {\n if (el.dataset[\"autoload\"] !== \"false\") {\n let select = new LargeSelectPax(el);\n }\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n\n if (selector(\".route-select\").length) {\n\n selector(\".route-select .route-select__lower-options li\").forEachElement(function (element) {\n element.addEventListener('click', function (item) {\n current = item.target.closest('li');\n let itemFrom = current.dataset.from;\n let itemTo = current.dataset.to;\n let itemId = current.dataset.id;\n var setValues = item.target.closest('.route-select');\n setValues.querySelector('.route-select__value .from').innerHTML = itemFrom;\n setValues.querySelector('.route-select__value .to').innerHTML = itemTo;\n setValues.querySelector('[name=\"route-select__values__id\"]').value = itemId;\n })\n });\n\n }\n\n})\n\ndocument.addEventListener('DOMContentLoaded', function () {\n // custom select -- >\n if (selector(\".custom-select\").length) {\n document.addEventListener('mousedown',\n function (e) {\n //if click select or click on doc whilst select is open\n if ((e.target.closest('.custom-select')) ||\n document.querySelectorAll('.custom-select.open').length > 0) {\n toggleCustomSelect(e);\n e.stopImmediatePropagation();\n\n let modal = e.target.closest('.custom-select').closest('.modal');\n let modalInner = modal ? modal.querySelector('.modal__inner') : null;\n if (modal) {\n const input = e.target.closest('.custom-select');\n const modalBottomOffset = modalInner.offsetTop + modalInner.offsetHeight;\n const inputOffset = modalInner.offsetTop + input.offsetTop + input.offsetHeight + 400;\n\n if (modalInner.offsetHeight < modal.offsetHeight) {\n modalInner.style.overflow = 'visible';\n if (input.classList.contains(\"align-top\")) {\n input.classList.remove(\"align-top\");\n }\n } else {\n modalInner.style.overflow = 'hidden';\n if (inputOffset >= modalBottomOffset) {\n input.classList.add(\"align-top\");\n } else {\n input.classList.remove(\"align-top\");\n }\n }\n }\n }\n });\n\n selector('.custom-select select').forEachElement(function (element) {\n element.onchange = function () {\n changeNativeSelect(element, this);\n }\n });\n\n selector('div:not([data-ignore]) .custom-select').forEachElement(function (element) {\n if (element.dataset[\"autoload\"] !== \"false\") {\n renderSelect(element, function (element) {\n element.classList.add(\"loaded\");\n });\n }\n\n })\n }\n})\n\nvar values = [];\n\n//create custom select from native custom-select element\nfunction toggleCustomSelect(e) {\n if (e.target.closest('.custom-select')) {\n var select = e.target.closest('.custom-select');\n if (hasClass(select, 'open')) {\n if (hasClass(e.target, 'option')) {\n optionSelect(e.target);\n } else if (hasClass(e.target, 'options')) {\n return;\n } else {\n removeFromClasses(select, 'open, align-bottom');\n }\n\n } else {\n selector('.custom-select').forEachElement(function (element) {\n removeFromClasses(element, 'open, align-bottom');\n })\n addToClasses(select, 'open');\n if (clearBottom(select)) {\n addToClasses(select, 'align-bottom');\n }\n }\n } else {\n selector('.custom-select').forEachElement(function (element) {\n removeFromClasses(element, 'open, align-bottom');\n })\n }\n}\n\n//position options if element is at the bottom of the viewport\nfunction clearBottom(select) {\n var options = select.querySelector('.options'),\n boundingTop = options.getBoundingClientRect().top,\n optionsHeight = options.offsetHeight,\n offsetBottom = boundingTop + optionsHeight,\n viewPortHeight = window.innerHeight;\n if (offsetBottom > viewPortHeight) {\n return true;\n }\n}\n\nfunction optionSelectSetValueAndSelected(select, value) {\n [].forEach.call(select.options, function (el) {\n el.setAttribute(\"selected\", el.value === value);\n el.removeAttribute(\"selected\");\n\n if (el.value == value) {\n el.setAttribute(\"selected\", \"\");\n }\n });\n\n select.value = value;\n}\n\nfunction optionSelectValue(element, value) {\n var scope = element.closest('.custom-select');\n\n optionSelectSetValueAndSelected(scope.querySelector('select'), value);\n // single select\n let text = scope.querySelector('.option[value=\"' + value + '\"]').innerText;\n scope.querySelector('.select').value = text;\n selector('.custom-select.open .option').forEachElement(function (element) {\n if (hasClass(element, 'active')) {\n removeFromClasses(element, 'active');\n }\n });\n //select new option\n addToClasses(element, 'active');\n}\n\nfunction optionSelect(element) {\n //try to OO this a bit better\n var scope = element.closest('.custom-select'),\n value = element.getAttribute('value'),\n text = element.textContent;\n\n // single select\n var nativeElement = scope.querySelector('select');\n\n optionSelectSetValueAndSelected(nativeElement, value);\n eventDispatch(nativeElement, 'change');\n\n scope.querySelector('.select').value = text;\n //deselect current option\n selector('.custom-select.open .option').forEachElement(function (el) {\n if (hasClass(el, 'active')) {\n removeFromClasses(el, 'active');\n }\n })\n //select new option\n addToClasses(element, 'active');\n removeFromClasses(scope, 'open');\n}\n\nfunction changeNativeSelect(e) {\n var scope = e.closest('.custom-select'),\n value = e.value,\n text = e.options[e.selectedIndex].text;\n scope.querySelector('.select').value = text;\n selector('.custom-select.open .option').forEachElement(function (e) {\n removeFromClasses(e, 'active');\n })\n addToClasses(scope.querySelector('.option[value=\"' + value + '\"]'), 'active');\n removeFromClasses(scope, 'open');\n}\n\nfunction renderSelect(e, callback) {\n var source = e.querySelector('select'),\n sourceId = source.id;\n //create desktio select input and set value/attrs\n var selectInput = document.createElement('input');\n selectInput.setAttribute(\"type\", \"text\");\n selectInput.id = sourceId;\n selectInput.setAttribute(\"readonly\", \"true\");\n addToClasses(selectInput, \"form-control select\");\n\n //create desktop options wrapper\n var optionsElement = document.createElement('div');\n addToClasses(optionsElement, \"options\");\n\n //render elements to DOM\n e.querySelector('.inner').appendChild(selectInput);\n e.querySelector('.inner').appendChild(optionsElement);\n\n\n //duplicate select options and render to deskopt options\n for (var i = 0, n = source.length; i < n; i++) {\n var value = source[i].getAttribute('value'),\n text = document.createTextNode(source[i].text),\n option = document.createElement('div');\n option.classList.add('option');\n\n if (source[i].hasAttribute('selected')) {\n option.classList.add('active');\n }\n if (source[i].getAttribute('data-thumbnail')) {\n var img = document.createElement(\"span\");\n img.classList.add('image'),\n img.appendChild(document.createElement(\"img\")),\n imgSrc = source[i].getAttribute('data-thumbnail');\n img.querySelector('img').setAttribute('src', imgSrc);\n option.appendChild(img);\n optionsElement.classList.add('has-images');\n }\n\n option.appendChild(text);\n option.setAttribute('value', value);\n // Set placeholder/value text of custom input but dont create actual selec option\n if (source[i].hasAttribute('disabled')) {\n selectInput.setAttribute('placeholder', value);\n } else {\n if (source[i].hasAttribute('selected')) {\n selectInput.setAttribute('value', source[i].text);\n }\n optionsElement.appendChild(option);\n }\n }\n // selectInput.value = source.options[source.selectedIndex].text;\n // callback\n if (callback && typeof callback === 'function') {\n callback(e);\n }\n}\n\n//custom select -- >\nlet slider = function () {\n if (selector(\".slider-gallery\").length) {\n var itemWidthXs,\n itemWidthSm,\n itemWidthMd,\n itemWidthLg;\n selector('.slider-gallery').forEachElement(function (element) {\n var slideShowType = element.getAttribute('data-for'),\n slideshow = element.querySelector('.items'),\n controls = element.querySelector('.slideshow-controls'),\n prevLink = controls.querySelector('.prev'),\n nextLink = controls.querySelector('.next');\n\n\n var loop = false;\n itemWidthXs = 300;\n itemWidthSm = 300;\n itemWidthMd = 300;\n itemWidthLg = 360;\n\n var thisSlider = tns({\n container: slideshow,\n startIndex: 0,\n autoplay: false,\n slideBy: 1,\n nav: false,\n loop: loop,\n gutter: 0,\n margin: 0,\n padding: 0,\n controlsContainer: controls,\n prevButton: prevLink,\n nextButton: nextLink,\n touch: true,\n swipeAngle: 45,\n mouseDrag: true,\n responsive: {\n 0: {},\n 768: {\n mouseDrag: false\n },\n 992: {},\n 1200: {}\n }\n });\n\n element.classList.add('slider-gallery__initialised')\n })\n }\n\n selector(\".light-gallery\").forEachElement(function (element) {\n lightGallery(document.querySelector('.light-gallery'), {\n selector: \"div a\"\n });\n });\n}\n\ndocument.addEventListener('DOMContentLoaded',\n function () {\n const accordionItemContainers = document.querySelectorAll(\".js-accordion-content > .container\")\n\n if (accordionItemContainers.length) {\n accordionItemContainers.forEach(function (element) {\n element.classList = ['container-fluid']\n })\n }\n }\n)\n\ndocument.addEventListener('DOMContentLoaded', slider);\n\nlet sliderTeasers = [];\n\ndocument.addEventListener('DOMContentLoaded',\n function () {\n if (selector(\".slider-teaser\").length) {\n selector('.slider-teaser').forEachElement(function (element) {\n const slider = getTeaserSlider(element);\n sliderTeasers.push(slider)\n });\n }\n });\n\nfunction getDimensions() {\n if (selector(\".slider-teaser\").length) {\n sliderTeasers.forEach(slider => {\n slider.destroy();\n })\n\n sliderTeasers = [];\n\n selector('.slider-teaser').forEachElement(function (element) {\n const slider = getTeaserSlider(element)\n\n sliderTeasers.push(slider)\n });\n }\n}\n\nfunction getTeaserSlider(element) {\n const container = element.querySelector('.items');\n const controlsContainer = element.querySelector('.slideshow-controls');\n\n return tns({\n container,\n loop: false,\n controlsContainer,\n nav: false,\n autoHeight: true,\n responsive: {\n 0: {\n gutter: 0,\n items: 1,\n fixedWidth: 264,\n autoHeight: false,\n controls: true\n },\n 768: {\n gutter: 0,\n items: 3,\n fixedWidth: false,\n autoHeight: true\n }\n },\n swipeAngle: 45,\n mouseDrag: true,\n speed: 400,\n onInit: function () {\n //[].forEach.call(images, image => processor.ProcessElement(image));\n }\n });\n}\n\n\nlet timeout = false;\n\nwindow.addEventListener('resize', function () {\n\n clearTimeout(timeout);\n\n timeout = setTimeout(getDimensions, 50);\n});\n\n\n//\n//container: slideshow,\n// controlsContainer: controls,\n// prevButton: prevLink,\n// nextButton: nextLink,\n// touch: true,\n// swipeAngle: 45,\n// mouseDrag: true,\n// responsive: {\n// 0: {\n// fixedWidth:\titemWidthXs\n// },\n// 768: {\n// fixedWidth:\titemWidthSm,\n// mouseDrag: false\n// },\n// 992: {\n// fixedWidth: itemWidthMd\n// },\n// 1200: {\n// fixedWidth:\titemWidthLg\n// }\n//}\n//\n//spinner\ndocument.addEventListener('DOMContentLoaded', function () {\n selector('.spinner-wrap .control').forEachElement(function (element) {\n var el = element.parentNode.previousSibling.parentNode.querySelectorAll('input'),\n dir = element.getAttribute('data-direction');\n //click\n element.addEventListener('click', function (e) {\n actionSpin(el, dir);\n })\n //continuous spin\n //mobile touch\n element.addEventListener('touchstart', function (e) {\n spin = setInterval(function () {\n actionSpin(el, dir);\n }, 100);\n })\n element.addEventListener('touchend', function (e) {\n clearInterval(spin);\n })\n //desktop\n element.addEventListener('mousedown', function (e) {\n spin = setInterval(function () {\n actionSpin(el, dir);\n }, 100);\n })\n element.addEventListener('mouseup', function (e) {\n clearInterval(spin);\n })\n });\n //type in spinner\n selector('.spinner-wrap .form-control').forEachElement(function (element) {\n element.addEventListener('input', function (e) {\n var min = parseInt(this.getAttribute('min')),\n max = parseInt(this.getAttribute('max')),\n val = parseInt(this.value);\n if (val > max) {\n this.value = max;\n flashError(this);\n } else if (val < min) {\n this.value = min;\n flashError(this);\n }\n })\n });\n\n //update spinner value\n function actionSpin(el, dir) {\n var el = el[0],\n val = parseInt(el.value),\n min = parseInt(el.getAttribute('min')),\n max = parseInt(el.getAttribute('max')),\n step = parseInt(el.getAttribute('data-step-by'));\n\n if ((dir == \"up\") && (val <= (max - step))) {\n if (val == undefined || val == \"\") {\n el.value = 1;\n } else {\n el.value = val + step;\n }\n } else if ((dir == \"down\") && (val >= (min + step))) {\n el.value = val - step;\n } else {\n flashError(el);\n }\n }\n});\n//spinner\n//table overflow\ndocument.addEventListener('DOMContentLoaded', function () {\n selector('.table.overflow').forEachElement(function (element) {\n //Resize Window\n var doit;\n doit = setTimeout(onResize, 100);\n window.onresize = function () {\n if ((isMobile())) {\n clearTimeout(doit);\n doit = setTimeout(onResize, 100);\n }\n };\n })\n});\n\nfunction LargeSelectTime(target, positioningTarget) {\n LargeSelect.call(this, target, positioningTarget);\n let content = target.parentNode.querySelector(\"[data-select-content]\");\n this.setTextValue(content);\n\n let wrapper = target.parentElement;\n let hour = wrapper.querySelector('[data-select-hours]').closest('.custom-select');\n let minutes = wrapper.querySelector('[data-select-minutes]').closest('.custom-select');\n\n renderSelect(hour, function (element) {\n element.classList.add(\"loaded\");\n });\n renderSelect(minutes, function (element) {\n element.classList.add(\"loaded\");\n });\n\n}\n\nLargeSelectTime.prototype = Object.create(LargeSelect.prototype);\nLargeSelectTime.prototype.constructor = LargeSelectTime;\nLargeSelectTime.prototype.setTextValue = function (selectContent) {\n let hours = selectContent.querySelector('[data-select-hours]').value;\n let minutes = selectContent.querySelector('[data-select-minutes]').value;\n\n this.target.querySelector('.large-select__value').innerHTML = hours + ' : ' + minutes;\n};\n\nLargeSelectTime.prototype.setPopupContent = function () {\n let toReturn = this.target.parentNode.querySelector(\"[data-select-content]\").cloneNode(true);\n this.target.parentNode.removeChild(this.target.parentNode.querySelector(\"[data-select-content]\"));\n this.popupContainer.appendChild(toReturn);\n\n Array.from(this.popupContainer.querySelectorAll('[data-calc-totals]'))\n .forEach(el => {\n el.addEventListener('click',\n function (e) {\n this.closePopup();\n e.preventDefault();\n }.bind(this));\n });\n\n [].forEach.call(this.popupContainer.querySelectorAll('select'), function (el) {\n el.onchange = function (e) {\n optionSelectValue(el, el.value);\n }\n });\n};\n\nLargeSelectTime.prototype.closingPopup = function () {\n this.setTextValue(this.popupContainer);\n this.target.parentNode.appendChild(this.popupContainer.children[0]);\n};\n\n[].forEach.call(document.querySelectorAll(\"[data-select-type='time']\"), function (el) {\n let select = new LargeSelectTime(el);\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n document.addEventListener('mousedown', function (e) {\n //if click tooltip or click on doc whilst select is open - for touch devices that dont have hover\n if ((e.target.closest('.tooltip-icon')) || document.querySelectorAll('.tooltip-icon.hover').length > 0) {\n toggleTooltip(e);\n }\n })\n})\n\nfunction toggleTooltip(e) {\n if (e.target.closest('.tooltip-icon')) {\n var toolTipIcon = e.target.closest('.tooltip-icon');\n if (hasClass(toolTipIcon, 'hover')) {\n removeFromClasses(toolTipIcon, 'hover');\n } else {\n selector('.tooltip-icon').forEachElement(function (element) {\n removeFromClasses(element, 'hover');\n })\n addToClasses(toolTipIcon, 'hover');\n }\n } else {\n selector('.tooltip-icon').forEachElement(function (element) {\n removeFromClasses(element, 'hover');\n })\n }\n}\n\nconst inlineCalendar = (inputGroup) => {\n let calInsert = inputGroup.querySelector('.date-popup');\n let calInput = inputGroup.querySelector('input[type=text]');\n let calPostValue = inputGroup.querySelector('input[type=hidden]');\n let calTemplate = '[data-calendar-template]';\n let modal = inputGroup.closest('.modal');\n let modalInner = modal ? modal.querySelector('.modal__inner') : null;\n let calMinTime = new moment(inputGroup.dataset[\"min\"], \"YYYY/MM/DD\", true);\n let calMaxTime = new moment(inputGroup.dataset[\"max\"], \"YYYY/MM/DD\", true);\n\n let open = () => {\n var calendar = $(calInsert).clndr({\n template: $(calTemplate).html(),\n constraints: {\n startDate: calMinTime.isValid() ? calMinTime : new moment(),\n endDate: calMaxTime.isValid() ? calMaxTime : new moment()\n },\n ignoreInactiveDaysInSelection: true,\n classes: {\n past: \"disabled\",\n today: \"today\",\n lastMonth: \"disabled\",\n nextMonth: \"faded\",\n inactive: \"disabled\"\n },\n trackSelectedDate: true,\n date: new moment(),\n showAdjacentMonths: true,\n adjacentDaysChangeMonth: true,\n selectedDate: new moment($(calPostValue).val(), [\"DD/MM/YYYY\", \"YYYY-MM-DD\", \"YYYY/MM/DD\"]),\n clickEvents: {\n click: function (target) {\n if (target.element.classList.contains('inactive') || target.element.classList.contains('disabled')) {\n return;\n }\n calPostValue.value = target.date.format('YYYY-MM-DD');\n calInput.value = target.date.format('DD/MM/YYYY');\n eventDispatch(calPostValue, 'change');\n calendar.destroy();\n },\n\n }\n\n });\n\n let modalListener = (e) => {\n if (e.target.closest('.date-picker') !== null || closestClass(e.target, \"controls\")) {\n return;\n }\n\n calendar.destroy();\n modal.removeEventListener('click', modalListener);\n modalInner.removeAttribute('style');\n }\n if (modal) {\n setTimeout(() => {\n modal.addEventListener('click', modalListener);\n\n const modalHeight = modalInner.offsetHeight;\n const modalScrollHeight = modalInner.scrollHeight;\n\n if (modalScrollHeight >= modalHeight) {\n modalInner.style.overflow = 'visible';\n }\n }, 250);\n }\n\n }\n\n calInput.addEventListener('click', () => {\n open();\n });\n\n\n}\n\ndocument.addEventListener(\"DOMContentLoaded\",\n () => {\n initImageUploads();\n });\n\nfunction initImageUploads() {\n selector(\"input[type=file]\").forEach(el => {\n new ImageUploader(el);\n });\n}\n\nclass ImageUploader {\n constructor(target) {\n this.target = target;\n this.wrapper = target.closest('.form-group');\n this.image = this.wrapper.querySelector(\"img\");\n this.input = this.wrapper.querySelector(\"input[type=hidden][data-image-file-value]\");\n this.init();\n }\n init() {\n this.target.addEventListener('change', this.previewFile.bind(this));\n }\n\n previewFile() {\n var file = this.target.files[0];\n var reader = new FileReader();\n\n reader.addEventListener(\"load\", function () {\n this.image.src = reader.result;\n this.target.dataset.filevalue = reader.result;\n this.input.value = reader.result;\n }.bind(this), false);\n\n if (file) {\n reader.readAsDataURL(file);\n }\n }\n}\n\n\nclass BookBlock {\n constructor(el) {\n this.scope = el;\n this.offset = this.scope.getBoundingClientRect().top - document.querySelector(\"body\").getBoundingClientRect().top;\n this.pageOffset = document.querySelector(\"main > *:first-child\").getBoundingClientRect().top - document.querySelector(\"body\").getBoundingClientRect().top;\n this.checkOffset();\n this.bindEvents();\n }\n\n bindEvents() {\n let that = this;\n document.addEventListener('scroll', () => {\n this.checkOffset();\n });\n\n window.addEventListener(\"resize\", debounce(() => that.checkOffset()));\n }\n\n checkOffset() {\n let offset = document.querySelector(\"body\").getBoundingClientRect().top + this.offset - this.pageOffset;\n if (offset <= 0) {\n this.scope.style.left = this.scope.getBoundingClientRect().left + \"px\";\n this.scope.style.width = this.scope.getBoundingClientRect().width + \"px\";\n this.scope.style.left = (this.scope.parentElement.getBoundingClientRect().left + 15) + \"px\";\n this.scope.style.width = (this.scope.parentElement.getBoundingClientRect().width - 30) + \"px\";\n this.scope.classList.add(\"book-block--stick\");\n } else {\n this.scope.style.left = \"\";\n this.scope.style.width = \"\";\n this.scope.classList.remove(\"book-block--stick\");\n }\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n document.querySelectorAll(\".book-block\").forEach(el => {\n if (!isMobile()) {\n new BookBlock(el);\n }\n })\n})"]}