{"version":3,"sources":["script.js"],"names":["DoAfterDelay","logic","delay","arguments","length","undefined","document","addEventListener","this","selector","element","clearTimeout","selected","timer","addToClasses","closestClass","elm","className","_typeof","hasAttribute","classList","contains","parentNode","constraints","target","positioningTarget","LargeSelect","startDate","moment","content","querySelector","classes","setPopupContent","clientHeight","contentHeight","popupContainer","removeChild","querySelectorAll","eachHeight","style","height","position","_setUniqueId","toggleClass","_setPopupSizeAndPosition","body","appendChild","split","_handleDocumentClick","inputs","forEachElement","tagName","toUpperCase","_removePopupContainer","_setClickHandler","fullScreenMobile","prototype","handleClickEvent","el","_handleClickEvent","e","stopPropagation","closePopup","viewportHeight","viewportScrollPos","popupTopOffset","lowestAvail","popupBottomPos","moveAmount","hasMoved","scrollToPosition","window","perTick","duration","setTimeout","_this3","removeProperty","LargeSelectList","select","setTextValue","posY","pageYOffset","posX","rect","optionSelectSetValueAndSelected","top","left","width","dataset","value","currentTarget","Math","max","innerWidth","listContentNode","random","toString","forEach","openOverlay","cloned","listNode","onAutoClose","item","popup","selectValue","bind","_this2","closingPopup","selectType","groupName","_this","uid","closest","accordion","fsMob","activeTab","to","tabs","scrollTop","scrollTo","init","Modal","attachClickEvent","call","evt","_this4","ListTabs","remoteSrc","mode","clickEventSetup","underlineSetup","debounce","m","moveUnderline","paneTarget","insertKeywordSearchRootId","event","currentActivePane","removeFromClasses","newActivePane","doit","onresize","isMobile","onResize","switchPane","fitTabs","positionUnderline","tab","navWidth","nav","offsetWidth","navMoreLink","tabsWidth","tabWidth","tabTextWidth","tabPos","line","navMoreLinks","offsetLeft","collapsableContent","scope","type","LargeSelectDate","pc","toReturn","calSelector","Object","create","constructor","selectContent","date","showAdjacentMonths","rawValue","selectedDate","calPostValue","innerHTML","clickEvents","format","eventDispatch","cloneNode","clndr","template","past","today","lastMonth","trackSelectedDate","adjacentDaysChangeMonth","click","LargeSelectTime","tableHeadHeight","numberOfTrs","header","openMenu","checked","startPosition","calcDepartureGrid","createElement","console","warn","innerHeight","offsetTop","popupHeight","clickListener","preventDefault","modalSize","modalHTMLTitle","title","selectNode","current","destroy","options","getAttribute","add","textvalue","container","close","children","openDynamicControl","remove","LargeSelectPax","paxOutput","bindEvents","bindPostLoadEvents","objectName","size","theme","modalPadding","modalTheme","itemFrom","itemTo","itemId","setValues","toggleCustomSelect","stopImmediatePropagation","open","modalInner","modal","modalBottomOffset","addContent","inputOffset","offsetHeight","input","eval","modalMode","onchange","modalSrc","outerHTML","contentHTML","indexOf","src","nodeId","modalStartnode","optionSelect","text","textContent","nativeElement","selectInput","sourceId","setAttribute","optionsElement","boundingTop","getBoundingClientRect","optionsHeight","offsetBottom","viewPortHeight","removeAttribute","source","option","map","typeElement","img","concat","imgSrc","join","i","callback","slider","optionSelectValue","itemWidthSm","prevLink","controls","itemWidthMd","itemWidthLg","thisSlider","slideBy","loop","margin","padding","controlsContainer","prevButton","from","nextButton","nextLink","touch","id","swipeAngle","mouseDrag","responsive","lightGallery","accordionItemContainers","sliderTeasers","overflow","changeNativeSelect","tns","values","fixedWidth","gutter","items","autoHeight","hasClass","timeout","clearBottom","spin","actionSpin","clearInterval","min","parseInt","flashError","innerText","val","step","hour","minutes","wrapper","renderSelect","hours","n","createTextNode","toggleTooltip","calInsert","inputGroup","calInput","calMinTime","calMaxTime","isValid","slideshow","ignoreInactiveDaysInSelection","modalListener","0","calendar","removeEventListener","992","modalScrollHeight","initImageUploads","getDimensions","errorMessage","getTeaserSlider","key","push","maxSize","fileSize","isValidImageFileType","isValidImage","handleChange","_this6","768","speed","onInit","_createClass","parentElement","toolTipIcon","headers","file","uint8Array","_classCallCheck","BookBlock","offset","pageOffset","checkOffset","that","_regeneratorRuntime","_callee$","_context","previousSibling","dir","readBuffer","setInterval","abrupt","_callee","_this5","Array","inlineCalendar","$","html","endDate","nextMonth","inactive","modalHeight","scrollHeight","ImageUploader","image","validImage","previewFile","showErrorCode","message","files","toFixed","setErrorCode","accept","includes","then","imageTypeCheckSuccess","reader","FileReader","result","filevalue","readAsDataURL","check","buffers","every","index","start","end","Promise","resolve","reject","onload","onerror","readAsArrayBuffer","slice","isPNG","isJPEG","isGIF","isBMP","_x","_handleChange","apply","_asyncToGenerator","mark","wrap","prev","next","sent","Uint8Array","stop","_this7"],"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}\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.validImage = false;\n this.init();\n }\n init() {\n this.target.addEventListener('change', this.previewFile.bind(this));\n }\n\n setErrorCode(errorMessage, showErrorCode, message) {\n if (showErrorCode) {\n errorMessage.classList.remove(\"field-validation-valid\");\n errorMessage.classList.add(\"field-validation-error\");\n errorMessage.innerHTML = message;\n } else {\n errorMessage.classList.add(\"field-validation-valid\");\n errorMessage.classList.remove(\"field-validation-error\");\n errorMessage.innerHTML = \"\";\n }\n }\n\n previewFile() {\n const file = this.target.files[0];\n const errorMessage = document.querySelector(\".image-validation\");\n let maxSize = parseInt(errorMessage.dataset[\"maxFileSize\"]);\n if (!maxSize) {\n maxSize = 8\n }\n const fileSize = ((file.size / 1024) / 1024).toFixed(4);\n if (fileSize > maxSize) {\n this.setErrorCode(errorMessage, true, errorMessage.dataset[\"fileSizeMessage\"]);\n } else {\n\n const acceptedType = this.target.accept.split(\",\")\n const isValidImageFileType = acceptedType.includes(file.type);\n let isValidImage = false;\n if (isValidImageFileType) {\n handleChange(this)\n .then(imageTypeCheckSuccess => {\n isValidImage = imageTypeCheckSuccess\n })\n .then(() => {\n if (isValidImageFileType && isValidImage) {\n this.setErrorCode(errorMessage, false, \"\");\n const reader = new FileReader();\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 if (file) {\n reader.readAsDataURL(file);\n }\n } else {\n this.setErrorCode(errorMessage, true, errorMessage.dataset[\"fileTypeMessage\"]);\n }\n })\n } else {\n errorMessage.classList.remove(\"field-validation-valid\");\n errorMessage.classList.add(\"field-validation-error\");\n errorMessage.innerHTML = errorMessage.dataset[\"fileTypeMessage\"];\n }\n }\n }\n}\n\nfunction check(headers) {\n return (buffers,options={\n offset: 0\n })=>headers.every((header,index)=>header === buffers[options.offset + index]);\n}\n\nfunction readBuffer(file, start=0, end=2) {\n return new Promise((resolve,reject)=>{\n const reader = new FileReader();\n reader.onload = ()=>{\n resolve(reader.result);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file.slice(start, end));\n }\n );\n}\n\nconst isPNG = check([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\nconst isJPEG = check([0xff, 0xd8, 0xff, 0xe0]);\nconst isGIF = check([0x47, 0x49, 0x46, 0x38]);\nconst isBMP = check([0x42, 0x4d]);\n\n\nasync function handleChange(event) {\n const file = event.target.files[0];\n const buffers = await readBuffer(file, 0, 8);\n const uint8Array = new Uint8Array(buffers);\n if(file.type === \"image/jpeg\"){\n return isJPEG(uint8Array);\n }\n if(file.type === \"image/png\"){\n return isPNG(uint8Array);\n }\n if(file.type === \"image/bmp\"){\n return isBMP(uint8Array);\n }\n if(file.type === \"image/gif\"){\n return isGIF(uint8Array);\n }\n return false;\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})"]}