{"version":3,"sources":["accordion/accordion.js","borgerdk/borgerdk_accordion.js","content-share-links/content-share-links.js","emergency-notification/emergency-notification.js","esdh/esdh.js","esdh-subscribe/esdh_subscribe.js","feedback/feedback.js","filters/filters.js","forms/forms.js","header/header.js","hero/hero-slider.js","image-gallery/image-gallery.js","list-page/faceted-list.datefilter-extension.js","list-page/faceted-list.js","list-page/faceted-list.pagination.js","main-content/main-content.js","navtabs/navtabs.js","newsletter/page-subscribe.js","newsletter/site-subscribe.js","search/search.js","slider-grid/slider-grid.js","subscribe/subscribe.js","video/video.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"modules.js","sourcesContent":["function accordion() {\r\n var container = $(\".accordion\");\r\n var trigger = $(container).find(\".accordion__header\");\r\n var item = $(container).find(\".accordion__item\");\r\n\r\n if (container.length > 0) {\r\n container.each(function () {\r\n var containerItem = $(this);\r\n\r\n if (containerItem.parent().closest(\".mw-custom.kr-custom\").next().find(\".accordion\").length > 0)\r\n containerItem.addClass(\"before-accordion\");\r\n\r\n if (containerItem.children(\".accordion__toggle-all\").length > 0) {\r\n var toggleAll = $(\".accordion__toggle-all\", containerItem),\r\n accordionCount = $(\".accordion__item\", containerItem).length,\r\n accordionExpanded = 0;\r\n\r\n toggleAll\r\n .bind(\"status\", function (e, accordionTrigger) {\r\n // triggered if only one accordion is clicked\r\n if (accordionTrigger === \"expand\") {\r\n accordionExpanded++;\r\n }\r\n if (accordionTrigger === \"collapse\") {\r\n accordionExpanded--;\r\n }\r\n\r\n // triggerede if the all button is clicked\r\n if (accordionTrigger === \"expandAll\") {\r\n accordionExpanded = accordionCount;\r\n }\r\n if (accordionTrigger === \"collapseAll\") {\r\n accordionExpanded = 0;\r\n }\r\n\r\n if (accordionExpanded === accordionCount) {\r\n containerItem.addClass(\"accordion--all-open\");\r\n } else {\r\n containerItem.removeClass(\"accordion--all-open\");\r\n }\r\n })\r\n .on(\"click\", function () {\r\n if (containerItem.hasClass(\"accordion--all-open\")) {\r\n toggleAll.trigger(\"status\", \"collapseAll\");\r\n $(\".accordion__header\", containerItem).trigger(\"collapse\");\r\n } else {\r\n toggleAll.trigger(\"status\", \"expandAll\");\r\n $(\".accordion__header\", containerItem).trigger(\"expand\");\r\n }\r\n return false;\r\n });\r\n }\r\n });\r\n item.each(function () {\r\n var header = $(this).find(\".accordion__header\");\r\n var headerHeight = header.outerHeight();\r\n var linkItem = $(this).find(\".accordion__link\");\r\n var linkHeight = headerHeight + \"px\";\r\n\r\n linkItem.css(\"height\", linkHeight);\r\n });\r\n if (window.location.hash) {\r\n var $hashTarget = $(\"body\").find(\r\n \"[data-accordion-id='\" + window.location.hash.substring(1) + \"']\"\r\n );\r\n var accordion = $hashTarget.find(\".accordion__header\");\r\n\r\n if (accordion.length === 1) {\r\n $(accordion).collapsible({\r\n startOpen: true,\r\n });\r\n trigger = trigger.not(accordion);\r\n\r\n $(\"html, body\").animate(\r\n {\r\n scrollTop: accordion.offset().top - accordion.height(),\r\n },\r\n \"fast\"\r\n );\r\n }\r\n }\r\n //uses jquery.collapsable.js for better accessibility\r\n $(trigger).collapsible();\r\n\r\n container.find(\".accordion__content\").removeClass(\"init\");\r\n }\r\n}\r\n\r\n$(function () {\r\n accordion();\r\n});\r\n","// Borger.dk content as accordion\r\n$(\".kernetekst,.lovgivning,.anbefaler,.selvbetjeningslinks\").addClass(\"borgerDKaccordion\");\r\n$(\".kernetekst > div\").addClass(\"accordion__item\");\r\n$(\".kernetekst > div > h2, .kernetekst > div > h3, .kernetekst > div > h4, .lovgivning > h2, .lovgivning > h3, .lovgivning > h4, .anbefaler > h2,.anbefaler > h3,.anbefaler > h4, .selvbetjeningslinks > h2,.selvbetjeningslinks > h3,.selvbetjeningslinks > h4\").addClass(\"accordion__header collapsible-heading\");\r\n\r\n$(\".kernetekst > div > div, .lovgivning > div, .anbefaler > div\").addClass(\"accordion__content init collapsible-content\");\r\n\r\n$(function () {\r\n $('.kernetekst > div > div').append('

Indhold hentet fra borger.dk

');\r\n $('.lovgivning,.anbefaler,.selvbetjeningslinks').wrapInner('
');\r\n $('.selvbetjeningslinks > div > ul').wrap('
');\r\n\r\n var container = $(\".borgerDKaccordion\");\r\n var trigger = $(container).find(\".accordion__header\");\r\n\r\n if ($(container).length > 0) {\r\n\r\n //uses jquery.collapsable.js for better accessibility \r\n $(trigger).collapsible();\r\n\r\n $(container).find(\".accordion__content\").removeClass(\"init\");\r\n\r\n\r\n $(trigger).on(\"click\", function () {\r\n var self = this;\r\n\r\n /* \r\n $(self)\r\n .parent().toggleClass(\"active\");\r\n .siblings().removeClass(\"active\"); */\r\n });\r\n\r\n container.each(function () {\r\n var containerItem = $(this);\r\n if (containerItem.prev().find(\".accordion\").length > 0)\r\n containerItem.addClass(\"after-accordion\");\r\n if (containerItem.next().find(\".accordion\").length > 0 || containerItem.next().hasClass(\"borgerDKaccordion\"))\r\n containerItem.addClass(\"before-accordion\");\r\n });\r\n }\r\n\r\n // Hack for accommodating client request for \"seamless\" transition from accordion groups\r\n\r\n $('.grid-editor--gridBorgerDk, .grid-editor--gridAcordion').each(function () {\r\n let $this = $(this);\r\n if ($this.prev().is('.grid-editor--gridBorgerDk') || $this.prev().is('.grid-editor--gridAcordion')) {\r\n $this.prev().addClass('no-bottom-margin');\r\n }\r\n });\r\n});","(function () { \r\n const shareEl = document.querySelector('.content__toplinks');\r\n const shareTrigger = document.querySelector('.share');\r\n if (shareTrigger) {\r\n shareTrigger.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n shareEl.classList.add('active');\r\n });\r\n document.querySelector('.content__toplinks-close').addEventListener('click', function (e) {\r\n e.preventDefault();\r\n shareEl.classList.remove('active');\r\n });\r\n }\r\n})();","","function showPreviousAgendas(agendas, pageSize) {\r\n var input = document.getElementById(\"agendaListIndexInput\");\r\n input.value = (parseInt(input.value) + pageSize);\r\n if (parseInt(input.value) + pageSize >= agendas.length)\r\n $(\".esdh__showPrevious\").addClass(\"hidden\");\r\n\r\n $.ajax({\r\n url: '/Umbraco/surface/EDocAgendaResults/AddPartialToView',\r\n data: { id: \"~/Views/Partials/eDocAgenda/_EsdhSearchAgendasItems.cshtml\", agendaList: agendas, index: parseInt(input.value), pageSize: pageSize },\r\n type: \"POST\",\r\n success: function (data) {\r\n $(data).insertAfter($(\".esdh__area-item\").last());\r\n }\r\n });\r\n}\r\n\r\n$(function () {\r\n\r\n var committeeButtons = document.getElementsByName(\"committee-button\");\r\n var yearButtons = document.getElementsByName(\"year-button\");\r\n var form = document.getElementById(\"esdhSearchForm\");\r\n\r\n $(committeeButtons).on(\"click\", function (e) {\r\n e.preventDefault();\r\n document.getElementById(\"committeeFilter\").value = e.target.getAttribute(\"data-committee\");\r\n $(form).trigger(\"submit\");\r\n });\r\n\r\n $(yearButtons).on(\"click\", function (e) {\r\n e.preventDefault();\r\n document.getElementById(\"yearFilter\").value = e.target.getAttribute(\"data-year\");\r\n $(form).trigger(\"submit\");\r\n });\r\n\r\n});","$(function () {\r\n var esdhsubscribeOptions = {\r\n selectorId: \"esdh-subscribe\",\r\n triggerClass: \"esdh__toggle\",\r\n submitClass: \"esdh-subscribe__submit\",\r\n esdhContentId: \"esdh-subscribe__content\",\r\n selector: \"\",\r\n form: \"\",\r\n button: \"\",\r\n formNotification: \"\",\r\n successContainer: \".subscribe-success\",\r\n existContainer: \".subscribe-warning\",\r\n errorContainer: \".subscribe-error\",\r\n statusContainer: \".status\",\r\n init: function () {\r\n this.selector = $(\"#\" + this.selectorId);\r\n this.trigger = $(this.selector).find(\".\" + this.triggerClass);\r\n this.submit = $(this.selector).find(\".\" + this.submitClass);\r\n this.content = $(this.selector).find(\"#\" + this.esdhContentId);\r\n this.form = $(this.selector).find(\"form\");\r\n this.button = $(this.selector).find(\"button\");\r\n this.formNotification = $(this.selector).find(\".form-notification\");\r\n }\r\n }\r\n\r\n var response = [];\r\n response[1] = \"Email adressen er allerede tilmeldt nyhedsbrevet\";\r\n response[2] = \"Email adresse ikke gyldig\";\r\n response[3] = \"Tilmeldt\";\r\n response[4] = \"Der skete en fejl\";\r\n\r\n var errorClass = [];\r\n errorClass[1] = esdhsubscribeOptions.existContainer;\r\n errorClass[2] = esdhsubscribeOptions.existContainer;\r\n errorClass[3] = esdhsubscribeOptions.successContainer;\r\n errorClass[4] = esdhsubscribeOptions.errorContainer;\r\n\r\n var esdhsubscribeHandler = {\r\n initSubscribe: function (e) {\r\n\r\n e.preventDefault();\r\n $(esdhsubscribeOptions.button).prop(\"disabled\", true);\r\n\r\n esdhsubscribeHandler.submitForm(e);\r\n },\r\n\r\n submitForm: function () {\r\n var formArray = $(esdhsubscribeOptions.form).serializeArray();\r\n\r\n var commInputs = $(esdhsubscribeOptions.form).find(\"#committees\").find(\":checked\");\r\n var committees = [];\r\n\r\n $.each(commInputs, function (key, value) {\r\n committees.push(value.value);\r\n });\r\n\r\n var email = $(esdhsubscribeOptions.form).find(\"#esdh-email\")[0].value;\r\n\r\n var url = $(esdhsubscribeOptions.form).attr(\"action\");\r\n if (committees.length > 0) {\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: url,\r\n data: {\r\n names: committees,\r\n email: email\r\n },\r\n success: function (e) {\r\n if (e.data) {\r\n esdhsubscribeHandler.responseHandler(e.data);\r\n } else {\r\n esdhsubscribeHandler.responseHandler(e);\r\n }\r\n },\r\n error: function () {\r\n esdhsubscribeHandler.responseHandler(null);\r\n }\r\n });\r\n }\r\n else {\r\n $(esdhsubscribeOptions.button).prop(\"disabled\", false);\r\n esdhsubscribeHandler.responseHandler(null);\r\n }\r\n },\r\n responseHandler: function (status) {\r\n\r\n $(esdhsubscribeOptions.formNotification).find(\"div\").hide();\r\n\r\n $(esdhsubscribeOptions.statusContainer).removeClass(esdhsubscribeOptions.existContainer.replace(\".\", \"\"))\r\n .removeClass(esdhsubscribeOptions.errorContainer.replace(\".\", \"\")).removeClass(esdhsubscribeOptions.successContainer.replace(\".\", \"\"));\r\n\r\n for (var k in status) {\r\n if (status.hasOwnProperty(k)) {\r\n var key = status[k].Key;\r\n var value = status[k].Value;\r\n esdhsubscribeOptions.formNotification.find(\".status--\" + key).html($('.comittee--' + key).html() + \": \" + response[value]).addClass(errorClass[value].replace(\".\", \"\")).fadeIn(300);\r\n }\r\n }\r\n }\r\n }\r\n\r\n var esdhOpenCloseHandler = {\r\n\r\n openCloseToggle: function () {\r\n var isActive = $(esdhsubscribeOptions.content).hasClass(\"active\");\r\n\r\n if (!isActive) {\r\n esdhOpenCloseHandler.openSubscribe();\r\n $('.esdh-subscribe__overlay').addClass(\"active\");\r\n } else {\r\n esdhOpenCloseHandler.closeSubscribe();\r\n $('.esdh-subscribe__overlay').removeClass(\"active\");\r\n }\r\n },\r\n\r\n openSubscribe: function () {\r\n $(esdhsubscribeOptions.trigger).addClass(\"active\");\r\n\r\n $(esdhsubscribeOptions.content)\r\n\r\n .addClass(\"active\");\r\n },\r\n\r\n closeSubscribe: function () {\r\n $(esdhsubscribeOptions.trigger).removeClass(\"active\");\r\n\r\n $(esdhsubscribeOptions.content)\r\n\r\n .removeClass(\"active\");\r\n }\r\n\r\n }\r\n\r\n\r\n esdhsubscribeOptions.init();\r\n $(esdhsubscribeOptions.trigger).on(\"click\", function (e) {\r\n esdhOpenCloseHandler.openCloseToggle(e);\r\n e.preventDefault();\r\n });\r\n\r\n $('.esdh-subscribe__overlay, .esdh-close').on(\"click\", function () {\r\n $(esdhsubscribeOptions.trigger).trigger(\"click\");\r\n });\r\n\r\n $(esdhsubscribeOptions.formNotification).find(\"div\").hide();\r\n\r\n if ($(esdhsubscribeOptions.form).length > 0) {\r\n $(esdhsubscribeOptions.form).on(\"submit\", function (e) {\r\n if (esdhsubscribeOptions.form.valid()) {\r\n esdhsubscribeHandler.initSubscribe(e);\r\n }\r\n });\r\n }\r\n\r\n // close overlay when escape key is pressed\r\n $(document).on(\"keyup\", function (e) {\r\n if (e.key === \"Escape\") {\r\n var isActive = $(esdhsubscribeOptions.content).hasClass(\"active\");\r\n\r\n if (isActive) {\r\n esdhOpenCloseHandler.closeSubscribe();\r\n $('.esdh-subscribe__overlay').removeClass(\"active\");\r\n }\r\n }\r\n });\r\n\r\n // focus trap inside overlay when navigating with keyboard\r\n $(document).on(\"keyup\", function (e) {\r\n var isActive = $(esdhsubscribeOptions.content).hasClass(\"active\");\r\n if (!isActive)\r\n return;\r\n\r\n if (e.key === \"Tab\") {\r\n var first = esdhsubscribeOptions.content.find(\"a\").first();\r\n var last = esdhsubscribeOptions.content.find(\"button\").first();\r\n\r\n if (first.is(e.target) && e.shiftKey) {\r\n e.preventDefault();\r\n last.focus();\r\n }\r\n if (last.is(e.target) && !e.shiftKey) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n });\r\n});","var feedbackOptions = {\r\n selectorId: \"feedback\",\r\n triggerClass: \"feedback-trigger\",\r\n contentClass: \"feedback-content\",\r\n selector: \"\",\r\n trigger: \"\",\r\n content: \"\",\r\n form: \"\",\r\n pageId: 0,\r\n init: function () {\r\n this.selector = $(\"#\" + this.selectorId);\r\n this.trigger = $(this.selector).find(\".\" + this.triggerClass);\r\n this.content = $(this.selector).find(\".\" + this.contentClass);\r\n this.form = $(this.selector).find(\"form\");\r\n this.pageId = $(\"body\").data(\"nodeid\");\r\n }\r\n}\r\n\r\n\r\nvar feedbackHandler = {\r\n\r\n initFeedback: function (e, trigger) {\r\n\r\n var isActive = $(feedbackOptions.content).hasClass(\"active\");\r\n var priority = $(trigger).data(\"priority\");\r\n\r\n if (!isActive) {\r\n feedbackHandler.openFeedback(priority);\r\n } else {\r\n feedbackHandler.closeFeedback(priority);\r\n }\r\n },\r\n openFeedback: function () {\r\n $(feedbackOptions.trigger)\r\n .addClass(\"active\");\r\n\r\n $(feedbackOptions.content)\r\n .slideDown()\r\n .addClass(\"active\");\r\n },\r\n closeFeedback: function () {\r\n $(feedbackOptions.trigger)\r\n .removeClass(\"active\");\r\n\r\n $(feedbackOptions.content)\r\n .slideUp()\r\n .removeClass(\"active\");\r\n\r\n setTimeout(function () {\r\n $(feedbackOptions.selector).removeClass(\"feedback-submitted\");\r\n }, 5000);\r\n\r\n },\r\n submitFeedback: function (e) {\r\n\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n\r\n var postUrl = \"/umbraco/api/feedback/Post\";\r\n var formArray = $(feedbackOptions.form).serializeArray();\r\n\r\n var type = formArray[0],\r\n name = \"\",\r\n email = \"\",\r\n comment = formArray[1].value,\r\n priority = parseInt($(feedbackOptions.form).find(\"input[type=radio]:checked\").data(\"priority\"));\r\n\r\n\r\n var model = {\r\n Comment: comment,\r\n ParentId: feedbackOptions.pageId,\r\n Category: { Name: type.value, Priority: priority },\r\n PostersName: name,\r\n PostersEmail: email\r\n }\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: postUrl,\r\n data: model,\r\n success: function () {\r\n $(feedbackOptions.selector).addClass(\"feedback-submitted\");\r\n\r\n feedbackHandler.clearFormValues();\r\n feedbackHandler.closeFeedback();\r\n },\r\n error: function () {\r\n $(feedbackOptions.form).find(\"button\").after(\"

Der skete desværre en fejl. Prøv venligst igen lidt senere\");\r\n },\r\n dataType: \"json\"\r\n });\r\n\r\n\r\n },\r\n clearFormValues: function () {\r\n $(feedbackOptions.form).trigger(\"reset\");\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n$(function () {\r\n\r\n feedbackOptions.init();\r\n\r\n $(feedbackOptions.trigger).on(\"click\", function (e) {\r\n e.preventDefault();\r\n feedbackHandler.initFeedback(e, $(this));\r\n });\r\n\r\n $(feedbackOptions.content).find(\"form\").on(\"submit\", function (e) {\r\n\r\n e.preventDefault();\r\n\r\n var formIsValid = $(this).valid();\r\n\r\n if (formIsValid) {\r\n feedbackHandler.submitFeedback(e);\r\n }\r\n });\r\n\r\n});","// This will hopefully be converted into a vup app, and is just to demo some functionality until we have some dynamic content. It is a copy of section page tabs\r\n(function () {\r\n var keys = {\r\n ARROWS: [37, 38, 39, 40],\r\n ARROW_LEFT: 37,\r\n ARROW_UP: 38,\r\n ARROW_RIGHT: 39,\r\n ARROW_DOWN: 40,\r\n ENTER: 13,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34\r\n };\r\n // var selectors = { // TODO\r\n // tabWrapper: '.filter-tabs'\r\n // }\r\n\r\n\r\n\r\n /**\r\n @param {Object} startTab - The tab to start searching from.\r\n @param {Object} $list - A list of nav buttons as a jQuery object.\r\n @param {Object} key - The triggering key code.\r\n @returns {Object} - The tab to the left or right of `startTab`.\r\n */\r\n function findAdjacentTab(startTab, $list, key) {\r\n var dir =\r\n (key === keys.ARROW_LEFT || key === keys.ARROW_UP) ? 'prev' : 'next';\r\n var adjacentTab = (dir === 'prev') ?\r\n $(startTab.parentNode)\r\n .prev()[0] :\r\n $(startTab.parentNode)\r\n .next()[0];\r\n\r\n if (!adjacentTab) {\r\n var allTabs = $list.find('.filter-tabs__nav-item');\r\n if (dir === 'prev') {\r\n adjacentTab = allTabs[allTabs.length - 1];\r\n }\r\n else {\r\n adjacentTab = allTabs[0];\r\n }\r\n }\r\n\r\n return $(adjacentTab)\r\n .find('.filter-tabs__nav-trigger')[0];\r\n }\r\n\r\n /**\r\n @param {Object} newActive - Tab to be made active.\r\n @param {Object} $list - A list of nav buttons as a jQuery object.\r\n @param {Boolean} closeIfSame - KRUSO: Close the tab if it's the same as the currently active\r\n @returns {undefined}\r\n */\r\n function setActiveAndInactive(newActive, $list, closeIfSame) {\r\n $('.filters-overlay').hide();\r\n\r\n $list.find('.filter-tabs__nav-item')\r\n .each(function () {\r\n var assocPanelID = $(this)\r\n .find('.filter-tabs__nav-trigger')\r\n .first()\r\n .attr('aria-controls');\r\n var anchor = $(this)\r\n .find('.filter-tabs__nav-trigger')[0];\r\n\r\n\r\n\r\n\r\n if (this == newActive.parentNode && closeIfSame && $(this).hasClass('is-active')) {\r\n $(this)\r\n .removeClass('is-active');\r\n anchor.tabIndex = -1;\r\n anchor.setAttribute('aria-selected', 'false');\r\n $('#' + assocPanelID)\r\n .removeClass('is-current')\r\n .attr('aria-hidden', 'true');\r\n }\r\n else if (this !== newActive.parentNode) {\r\n $(this)\r\n .removeClass('is-active');\r\n anchor.tabIndex = -1;\r\n anchor.setAttribute('aria-selected', 'false');\r\n $('#' + assocPanelID)\r\n .removeClass('is-current')\r\n .attr('aria-hidden', 'true');\r\n }\r\n else {\r\n $(this)\r\n .addClass('is-active');\r\n anchor.tabIndex = 0;\r\n anchor.setAttribute('aria-selected', 'true');\r\n $('#' + assocPanelID)\r\n .addClass('is-current')\r\n .removeAttr('aria-hidden');\r\n $('.filters-overlay').show();\r\n }\r\n });\r\n }\r\n\r\n var $allTabGroups = $('.filter-tabs');\r\n\r\n $allTabGroups.each(function () {\r\n var $tabs = $(this);\r\n var $navlist = $tabs.find('.filter-tabs__navlist');\r\n\r\n $navlist.on('keydown', '.filter-tabs__nav-item .filter-tabs__nav-trigger',\r\n function (keyVent) {\r\n var which = keyVent.which;\r\n var target = keyVent.target;\r\n\r\n if ($.inArray(which, keys.ARROWS) > -1) {\r\n var adjacentTab = findAdjacentTab(target, $navlist, which);\r\n\r\n if (adjacentTab) {\r\n keyVent.preventDefault();\r\n adjacentTab.focus();\r\n\r\n setActiveAndInactive(adjacentTab, $navlist);\r\n }\r\n }\r\n else if (which === keys.ENTER || which === keys.SPACE) {\r\n keyVent.preventDefault();\r\n target.click();\r\n }\r\n else if (which === keys.PAGE_DOWN) {\r\n keyVent.preventDefault();\r\n var assocPanel = $('#' + this.getAttribute('aria-controls'));\r\n\r\n if (assocPanel) {\r\n assocPanel.trigger(\"focus\");\r\n }\r\n }\r\n }\r\n );\r\n\r\n // Click support\r\n $navlist.on('click', '.filter-tabs__nav-item .filter-tabs__nav-trigger', function () {\r\n setActiveAndInactive(this, $navlist, true);\r\n });\r\n\r\n // overlat click\r\n $('.filters-overlay').on('click', function () {\r\n setActiveAndInactive($('.is-active .filter-tabs__nav-trigger')[0], $navlist, true);\r\n });\r\n });\r\n\r\n $(document.body)\r\n .on('keydown', '.filter-tabs__panel', function (e) {\r\n if (e.key == \"ArrowUp\" || e.key == \"Up\") {\r\n e.preventDefault();\r\n var $navlist = $(this)\r\n .closest('.filter-tabs')\r\n .find('.filter-tabs__navlist');\r\n var activeTab = $navlist\r\n .find('.filter-tabs__nav-item.is-active .filter-tabs__nav-trigger')[0];\r\n\r\n if (activeTab) {\r\n activeTab.focus();\r\n }\r\n }\r\n });\r\n\r\n\r\n})();","\r\n(function ($) {\r\n //console.log(\"test\");\r\n $(\".umbraco-forms-field\").each(function () {\r\n if ($(this).find(\"label\").length == 1 && $(this).find(\"input\").length > 0) {\r\n $(this).find(\"input\").attr(\"aria-label\", ($(this).find(\"label\").html().replace(/(<([^>]+)>)/ig, \"\")) ? ($(this).find(\"label\").html().replace(/(<([^>]+)>)/ig, \"\")).trim() : ($(this).find(\"label\").html().replace(/(<([^>]+)>)/ig, \"\")));\r\n }\r\n });\r\n}(jQuery));\r\n\r\n","(function () {\r\n let storedScrollPos = 0;\r\n const content = document.querySelector(\"#content\");\r\n const headerWrapper = document.querySelector('.header-wrapper');\r\n\r\n const stickyHeader = document.querySelector('.header');\r\n let updating = false\r\n\r\n const alertEl = document.querySelector('.header-wrapper .alert');\r\n let alertSeenInCurrentSession = sessionStorage.getItem('alertSeen');\r\n let showAlertBox = alertEl && !alertSeenInCurrentSession;\r\n\r\n function handleScroll() {\r\n const threshold = stickyHeader.getBoundingClientRect();\r\n const snapPoint = showAlertBox ? alertEl.offsetHeight : 0;\r\n if (threshold.top <= snapPoint) {\r\n stickyHeader.classList.add('header--fixed');\r\n } else {\r\n stickyHeader.classList.remove('header--fixed');\r\n }\r\n\r\n if (showAlertBox && window.scrollY <= alertEl.offsetHeight) {\r\n stickyHeader.classList.remove('header--fixed');\r\n }\r\n\r\n updating = false\r\n\r\n }\r\n\r\n if (!showAlertBox) {\r\n stickyHeader.classList.add('header--fixed');\r\n }\r\n\r\n window.addEventListener('scroll', function () {\r\n if (window.scrollY > 1) {\r\n document.body.classList.add('scrolled');\r\n } else {\r\n document.body.classList.remove('scrolled');\r\n }\r\n\r\n if (window.scrollY > storedScrollPos && window.scrollY > 80) {\r\n document.body.classList.add('scrolling-down');\r\n } else {\r\n document.body.classList.remove('scrolling-down');\r\n }\r\n\r\n storedScrollPos = window.scrollY;\r\n\r\n\r\n if (!updating) {\r\n updating = true;\r\n requestAnimationFrame(handleScroll);\r\n }\r\n\r\n\r\n // to-top button\r\n if (content) {\r\n const contentBottom = content.offsetTop + content.offsetHeight;\r\n if (innerHeight + window.scrollY >= contentBottom) { // bottom of #content is in viewport. Should this be center of content instead?\r\n document.body.classList.add(\"scrolled-to-content\");\r\n } else {\r\n document.body.classList.remove(\"scrolled-to-content\");\r\n }\r\n }\r\n });\r\n\r\n // set .scroll class on load\r\n if (window.scrollY > 1) {\r\n document.body.classList.add('scrolled');\r\n }\r\n\r\n const menuBtn = document.querySelector('.menu-toggle');\r\n const searchBtn = document.querySelector('.search-toggle');\r\n const headerNav = document.querySelector('.header-nav');\r\n const closeBtn = document.querySelector('.search-close');\r\n\r\n let menuOpen = false;\r\n menuBtn.addEventListener('click', function () {\r\n menuOpen = !menuOpen;\r\n headerWrapper.classList.toggle('navigation--visible');\r\n document.body.classList.toggle('mobile-nav-open');\r\n headerNav.setAttribute('aria-hidden', !menuOpen);\r\n\r\n const menuToggle = document.getElementById('menu-toggle-ex1');\r\n menuToggle.setAttribute('aria-expanded', menuOpen);\r\n menuToggle.classList.toggle('active');\r\n });\r\n\r\n let searchOverlayOpen = false;\r\n const searchBtnFunc = function () {\r\n searchOverlayOpen = !searchOverlayOpen;\r\n document.body.classList.toggle('mobile-search-open');\r\n\r\n const searchToggle = document.getElementById('search-toggle-ex1');\r\n searchToggle.setAttribute('aria-expanded', searchOverlayOpen);\r\n searchToggle.classList.toggle('active');\r\n }\r\n\r\n searchBtn.addEventListener('click', searchBtnFunc);\r\n\r\n closeBtn.addEventListener('click', searchBtnFunc);\r\n\r\n\r\n // TODO: move to emergency-notification\r\n // alert box \r\n if (showAlertBox) {\r\n headerWrapper.classList.add('header-wrapper--has-alert');\r\n //alertEl.style.maxHeight = alertEl.scrollHeight + 'px';\r\n\r\n alertEl.querySelector('.alert__btn').addEventListener('click', function () {\r\n headerWrapper.classList.remove('header-wrapper--has-alert');\r\n sessionStorage.setItem('alertSeen', 'true');\r\n alertSeenInCurrentSession = true;\r\n showAlertBox = false;\r\n setTimeout(function () { // prevent keyboard navigation\r\n alertEl.innerHTML = '';\r\n handleScroll(); // recalculate header position to make it fixed\r\n }, 400); // animation delay\r\n window.focus();\r\n });\r\n } else if (alertEl) {\r\n alertEl.style.display = 'none'; // prevent keyboard navigation\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // mobile menu\r\n const mobileMenuBreakpoint = 992;\r\n const listItemsWithDropdownsLinks = document.querySelectorAll('.nav__item--has-children > a');\r\n listItemsWithDropdownsLinks.forEach(function (link) {\r\n link.addEventListener('click', function (e) {\r\n if (window.innerWidth < mobileMenuBreakpoint) {\r\n e.preventDefault();\r\n }\r\n\r\n const nextUlNode = link.parentNode.querySelector('ul');\r\n nextUlNode.classList.remove('is-hidden');\r\n nextUlNode.setAttribute('aria-hidden', false);\r\n\r\n const parentListItem = link.parentNode;\r\n const outerUl = parentListItem.parentNode;\r\n outerUl.classList.add('move-out');\r\n\r\n // scroll list to top to prevent hiding very short lists\r\n const scrollEls = document.querySelectorAll('.nav, .nav ul');\r\n scrollEls.forEach(function (el) {\r\n if (el.scrollTop !== 0) {\r\n el.scrollTop = 0;\r\n }\r\n });\r\n\r\n //append parentItem to breadcrumbs\r\n const labelEl = link.closest('ul').previousElementSibling;\r\n let label = '';\r\n if (labelEl.tagName.toLowerCase() === 'ol') {\r\n label = labelEl.getAttribute('data-breadcrumb-label');\r\n } else {\r\n label = labelEl.children.length === 0 ? labelEl.textContent : labelEl.querySelector('.nav-title').textContent\r\n }\r\n const breadcrumbOptions = {\r\n el: link,\r\n append: true,\r\n label: label\r\n }\r\n updateNavBreadCrumbs(breadcrumbOptions);\r\n });\r\n });\r\n\r\n\r\n // appends/removes the clicked item from the breadcrumbs, and scrolls the breadcrumb container if it's overflowing\r\n function updateNavBreadCrumbs(options) {\r\n const breadCrumbsList = document.querySelector('.nav-breadcrumbs');\r\n\r\n if (options.append) {\r\n const newListItem = document.createElement('li')\r\n const newListItemLink = document.createElement('a');\r\n newListItem.appendChild(newListItemLink);\r\n\r\n newListItemLink.textContent = options.label;\r\n newListItemLink.href = '#';\r\n newListItemLink.onclick = function () {\r\n const link = options.el;\r\n const parentListItem = link.parentNode;\r\n const outerUl = parentListItem.parentNode;\r\n outerUl.classList.remove('move-out');\r\n\r\n // find all list items below link list item, that are currently open, and close them\r\n const nextUlNodes = link.parentNode.querySelectorAll('ul');\r\n nextUlNodes.forEach(function (node) {\r\n node.classList.add('is-hidden');\r\n node.setAttribute('aria-hidden', true);\r\n node.classList.remove('move-out');\r\n });\r\n\r\n const breadcrumbOptions = {\r\n el: link,\r\n append: false,\r\n breadcrumb: this\r\n }\r\n updateNavBreadCrumbs(breadcrumbOptions);\r\n\r\n return false; // prevent updating URL\r\n }\r\n\r\n breadCrumbsList.appendChild(newListItem);\r\n } else {\r\n // remove this, and all further list items from the breadcrumbs\r\n let crumbListItem = options.breadcrumb.parentNode;\r\n const crumbListItemWithNextSiblings = [];\r\n crumbListItemWithNextSiblings.push(crumbListItem);\r\n\r\n while (crumbListItem.nextElementSibling) {\r\n crumbListItemWithNextSiblings.push(crumbListItem.nextElementSibling);\r\n crumbListItem = crumbListItem.nextElementSibling;\r\n }\r\n crumbListItemWithNextSiblings.forEach(function (el) {\r\n el.remove();\r\n });\r\n\r\n }\r\n // in case there are super long titles that make the list horizontally scrollable, we should scroll it to the end\r\n breadCrumbsList.scrollLeft = breadCrumbsList.scrollWidth;\r\n\r\n return false; // prevent updating URL\r\n }\r\n\r\n // updates the mobile nav to have the current page expanded in the dropdowns.\r\n // TODO: do we need this?\r\n // Case: \r\n // 1: You click around the menu, expanding and closing different sections, so you end up on a dropdown that is not the same as the current page you're on\r\n // 2: You close the menu.\r\n // 3: you open the menu again. You are still at the same place where you left the menu, and not back on the current page dropdown\r\n // Should this revert back to current page, or should we keep it like this? \r\n function resetNavToCurrentPage() {\r\n\r\n }\r\n\r\n // generate nav breadcrumbs, and set the mobile nav to the currentpage \r\n function initNavToCurrentPage() {\r\n console.log('init nav to current active page');\r\n // const currentPageLink = document.querySelector('.nav .active');\r\n // if (currentPageLink) {\r\n // console.log('it here', currentPageLink)\r\n // }\r\n const currentPageParents = document.querySelectorAll('.nav .active-child');\r\n currentPageParents.forEach(function (parentListItem) {\r\n // Only toogle element parent if it contains children\r\n if (parentListItem.classList.contains('nav__item--has-children')) {\r\n parentListItem.firstElementChild.click();\r\n }\r\n });\r\n }\r\n\r\n if (window.innerWidth < mobileMenuBreakpoint) {\r\n initNavToCurrentPage();\r\n }\r\n\r\n\r\n})();","(function () {\r\n // hero carrousel\r\n var $heroImageWrapper = $(\".hero--carousel .hero__image-wrapper\");\r\n\r\n $(function () {\r\n if ($heroImageWrapper.length > 0) {\r\n if (window.siteSettings.locale === \"da\") {\r\n $heroImageWrapper.on(\"init\", function (event, slick) {\r\n $(\".carousel-actions .slick-next\").html(\"Næste\");\r\n $(\".carousel-actions .slick-next\").attr(\"aria-label\", \"Næste\");\r\n $(\".carousel-actions .slick-prev\").html(\"Forrige\");\r\n $(\".carousel-actions .slick-prev\").attr(\"aria-label\", \"Forrige\");\r\n });\r\n }\r\n\r\n $heroImageWrapper.slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 8000,\r\n fade: true,\r\n appendArrows: \".carousel-arrows\",\r\n pauseOnHover: false,\r\n responsive: [\r\n {\r\n breakpoint: 993,\r\n settings: {},\r\n },\r\n ],\r\n });\r\n\r\n // add control buttons if more than one slide\r\n if ($heroImageWrapper.find(\".hero__image\").length > 1) {\r\n $(\".carousel-actions\").addClass(\"show\");\r\n }\r\n\r\n var playing = true;\r\n $(\".carousel-toggle\").on(\"click\", function () {\r\n if (playing) {\r\n $heroImageWrapper.slick(\"slickPause\");\r\n } else {\r\n $heroImageWrapper.slick(\"slickPlay\");\r\n }\r\n\r\n this.classList.toggle(\"active\");\r\n playing = !playing;\r\n });\r\n }\r\n });\r\n\r\n // sliding tabs thing\r\n})();\r\n","$(function () {\r\n $(\".fancybox\").fancybox(\r\n {\r\n afterShow: function () {\r\n var src = this.element.attr('href');\r\n $('').appendTo(this.inner);\r\n }\r\n });\r\n});","$(function () {\r\n\r\n $(\".datepickerfield-facet\").each(function () {\r\n var $self = $(this);\r\n\r\n $self.pikaday({\r\n firstDay: 1,\r\n format: 'DD/MM YYYY',\r\n i18n: {\r\n previousMonth: 'Forrige Måned',\r\n nextMonth: 'Næste Måned',\r\n months: ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'July', 'August', 'September', 'Oktober', 'November', 'December'],\r\n weekdays: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'],\r\n weekdaysShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør']\r\n },\r\n onSelect: function () {\r\n var selectedDate = this.getMoment().format('DD/MM YYYY');\r\n var unixdate = this.getMoment().unix();\r\n //\r\n var fromdate = unixdate;\r\n var todate = unixdate;\r\n\r\n if ($self.hasClass('fromdate')) {\r\n if ($('.todate').val() != \"\") {\r\n var day = $('.todate').val().split('/')[0];\r\n var month = $('.todate').val().split('/')[1].split(\" \")[0];\r\n var year = $('.todate').val().split(' ')[1];\r\n todate = moment(year + \"-\" + month + \"-\" + day).unix();\r\n // one day minus 1 second\r\n todate += 86399;\r\n } else {\r\n todate = 0;\r\n }\r\n\r\n }\r\n\r\n if ($self.hasClass('todate')) {\r\n if ($('.fromdate').val() != \"\") {\r\n var day = $('.fromdate').val().split('/')[0];\r\n var month = $('.fromdate').val().split('/')[1].split(\" \")[0];\r\n var year = $('.fromdate').val().split(' ')[1];\r\n fromdate = moment(year + \"-\" + month + \"-\" + day).unix();\r\n } else {\r\n fromdate = 0;\r\n }\r\n // one day minus 1 second\r\n todate += 86399;\r\n }\r\n\r\n $(\".list-page__item\").each(function () {\r\n\r\n var element = $(this);\r\n element.removeClass(\"hidden-datefilter\");\r\n\r\n if (todate < fromdate && todate > 0 &&\r\n fromdate > 0) {\r\n element.addClass(\"hidden-datefilter\");\r\n\r\n } else if (todate > 0 &&\r\n fromdate > 0 &&\r\n (element.data(\"timestamp\") <= fromdate || element.data(\"timestamp\") > todate)) {\r\n\r\n element.addClass(\"hidden-datefilter\");\r\n\r\n } else if (fromdate > 0 && element.data(\"timestamp\") <= fromdate) {\r\n element.addClass(\"hidden-datefilter\");\r\n } else if (todate > 0 && element.data(\"timestamp\") >= todate) {\r\n element.addClass(\"hidden-datefilter\");\r\n }\r\n });\r\n\r\n\r\n $self.prev(\".datepickerfieldshadow\").val(selectedDate);\r\n }\r\n });\r\n });\r\n\r\n\r\n //Add 'even' and 'odd' class for element styling\r\n //for 'no-image' elements\r\n $(\".no-image\").each(function (index) {\r\n\r\n // For each one, peek at the previous object.\r\n var objPrev = $(this).prev('.no-image');\r\n if (objPrev.hasClass('odd')) {\r\n $(this).addClass('even');\r\n\r\n } else if ($(this).prev('.has-image')) {\r\n if ($(this).prevAll('.no-image:first').hasClass('odd')) {\r\n $(this).addClass('even');\r\n } else {\r\n $(this).addClass('odd');\r\n }\r\n } else {\r\n $(this).addClass('odd');\r\n }\r\n });\r\n\r\n //for 'has-image' elements\r\n $(\".has-image\").each(function (index) {\r\n // For each one, peek at the previous object.\r\n var objPrev = $(this).prev('.has-image');\r\n if (objPrev.hasClass('odd')) {\r\n $(this).addClass('even');\r\n } else if ($(this).prev('.no-image')) {\r\n if ($(this).prevAll('.has-image:first').hasClass('odd')) {\r\n $(this).addClass('even');\r\n } else {\r\n $(this).addClass('odd');\r\n }\r\n } else {\r\n $(this).addClass('odd');\r\n }\r\n });\r\n\r\n //toggle facet container\r\n $(\".faceted-filter-content\").find('.js-faceted-filter-content__toggle').on('click', function () {\r\n let id = $(this).data('id');\r\n let scopedContainer = $('.js-faceted-filter-container__' + id);\r\n\r\n\r\n if (scopedContainer.find('.form-group').find('.selected').length > 0) {\r\n $('.js-faceted-filter-container__' + id).addClass('filter-ele');\r\n } else {\r\n $('.js-faceted-filter-container__' + id).removeClass('filter-ele');\r\n }\r\n\r\n $('.js-faceted-filter-container').each(function () {\r\n if ($(this).data('id') == id) {\r\n $(this).toggleClass('toggle');\r\n } else {\r\n $(this).removeClass('toggle');\r\n }\r\n\r\n });\r\n $('.js-faceted-filter-content__toggle').each(function () {\r\n if ($(this).data('id') == id) {\r\n $(this).toggleClass('active');\r\n } else {\r\n $(this).removeClass('active');\r\n }\r\n\r\n });\r\n });\r\n\r\n // wait until existing the filter elements in to dom\r\n setTimeout(function () {\r\n let selectedArray = [];\r\n\r\n $('.form-group').find('.checkbox').each(function () {\r\n $(this).find('label').on('click', function () {\r\n let $this = $(this);\r\n\r\n let id = $this.closest(\".js-faceted-filter-container\").data('id');\r\n\r\n window.location.hash = 'page=1';\r\n\r\n if (!Array.isArray(selectedArray[id])) {\r\n selectedArray[id] = [];\r\n }\r\n\r\n\r\n if (!$(this).find('input').is(\":checked\")) {\r\n $(this).closest('.checkbox').removeClass('selected');\r\n $(this).closest('.filter-item').removeClass('selected');\r\n selectedArray[id] = selectedArray[id].filter(function (item) { return item.find('input').attr('id') != $this.find('input').attr('id') })\r\n\r\n } else {\r\n let item = $(this).closest('.checkbox');\r\n item.find('input').removeClass('filter')\r\n $(this).closest('.checkbox').addClass('selected');\r\n $(this).closest('.filter-item').addClass('selected');\r\n selectedArray[id].push(item)\r\n\r\n }\r\n\r\n // Insert clear-filters button\r\n\r\n let selectedFiltersContainer = $('.js-faceted-filter-container__' + id);\r\n selectedFiltersContainer.find('.selected-filters').remove();\r\n\r\n if (selectedArray[id].length > 0) {\r\n\r\n selectedFiltersContainer.prepend(\"

\");\r\n\r\n selectedArray[id].forEach(function (value) {\r\n let element = value.remove('input');\r\n selectedFiltersContainer.find('.selected-filters').prepend('
' + element.html() + \"
\");\r\n });\r\n\r\n $('.js-faceted-filter-content__toggle__' + id).find('.js-faceted-filter-content__count').addClass('active');\r\n $('.js-faceted-filter-content__toggle__' + id).find('.js-faceted-filter-content__count').html(selectedArray[id].length)\r\n } else {\r\n $('.js-faceted-filter-content__toggle__' + id).find('.js-faceted-filter-content__count').removeClass('active');\r\n }\r\n if (selectedFiltersContainer.find('.form-group').find('.selected').length > 0 && selectedFiltersContainer.find('.selected-filters').find('#clear-filters').length < 1) {\r\n selectedFiltersContainer.find('.selected-filters').append('');\r\n } else {\r\n selectedFiltersContainer.find('#clear-filters').remove();\r\n }\r\n });\r\n });\r\n\r\n $('body').on('click', '.selected-filters label', function () {\r\n let id = $(this).find('input').attr('id');\r\n\r\n $(this).find('input').attr('id', null);\r\n\r\n $('#' + id).each(function () {\r\n\r\n if ($(this).is(\":checked\")) {\r\n\r\n $(this).click();\r\n\r\n }\r\n })\r\n return false;\r\n\r\n }\r\n\r\n );\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Clear filters\r\n $('body').on(\"click\", \"#clear-filters\", function () { // Use event delegation method\r\n // Triggerclick event on all filter buttons\r\n $('.form-group').find('input:checked').each(function (i, obj) {\r\n obj.click();\r\n });\r\n\r\n $('.form-group').find('.checkbox').removeClass('selected');\r\n $('.faceted-filter-container').removeClass('filter-ele');\r\n $('#clear-filters').remove(); // Remove the button itself\r\n });\r\n $(\".list-page__item\").find(\".list-page__item-title\").each(function () {\r\n window.headlineEllipsis($(this));\r\n });\r\n $(\".list-page__item\").find(\".list-page__item-description\").each(function () {\r\n window.textEllipsis($(this));\r\n });\r\n }, 200);\r\n\r\n $(window).on('resize', function () {\r\n $(\".list-page__item\").find(\".list-page__item-title\").each(function () {\r\n window.headlineEllipsis($(this));\r\n });\r\n $(\".list-page__item\").find(\".list-page__item-description\").each(function () {\r\n window.textEllipsis($(this));\r\n });\r\n });\r\n});","//Sort function to sort by INT.\r\nfunction sortArrayByInt(a, b) {\r\n return a - b;\r\n}\r\n\r\nvar facetOptions = {\r\n selectorClass: \"faceted-list-container\",\r\n selector: \"\",\r\n itemId: \"#item_id_\",\r\n itemActive: \"item-active\",\r\n filterContainer: \".js-faceted-filter-container\",\r\n loadingContainer: \".faceted-list-loading\",\r\n facetsArray: [],\r\n itemsArray: [],\r\n filterList: \"\",\r\n groupFilterList: \"\",\r\n multipleFilterList: [],\r\n rangeSliderFilter: \"\",\r\n rangeSlidersCount: 0,\r\n rangeSliderActivations: 0,\r\n itemsNumericArray: [],\r\n itemsNumericMin: 0,\r\n itemsNumericMax: 0,\r\n runFilterAgain: false,\r\n init: function () {\r\n this.selector = \".\" + this.selectorClass;\r\n }\r\n}\r\n\r\nvar nstSlider;\r\nvar rangeMin, rangeMax;\r\n\r\nvar facetClasses = {\r\n listItem: \"faceted-list-item\",\r\n dataLoaded: \"data-loaded\",\r\n nstSlider: \"nstSlider\",\r\n range: \"range\"\r\n}\r\n\r\nvar facetTypes = {\r\n numeric: 0,\r\n checkbox: 1,\r\n checkboxList: 2,\r\n dropdown: 3\r\n}\r\n\r\n//Get facet data and activate the handler\r\nvar facetDataHandler = {\r\n\r\n init: function () {\r\n this.getFacetData();\r\n },\r\n getFacetData: function () {\r\n // var elem = this;\r\n return $.ajax({\r\n type: \"GET\",\r\n url: \"/umbraco/FactedList/FactedListItems/GetFacets?nodeId=\" + $(\"body\").data(\"nodeid\"),\r\n cache: false,\r\n error: function () {\r\n setTimeout(function () {\r\n $(facetOptions.loadingContainer).find(\".success\").fadeOut(400, function () {\r\n $(facetOptions.loadingContainer).find(\".error\").fadeIn(600);\r\n });\r\n }, 2000);\r\n\r\n $.Deferred().reject();\r\n },\r\n success: function (data) {\r\n\r\n //pluginHandler.initMixItUp();\r\n var deferred = $.Deferred();\r\n facetOptions.facetsArray = data.facets; // these are the facets \r\n facetOptions.itemsArray = data.items; // these are all items in the list with their facet values\r\n\r\n facetDataHandler.facetHandler(facetOptions.facetsArray);\r\n\r\n //Fade out loading animation\r\n setTimeout(function () {\r\n $(facetOptions.selector).addClass(facetClasses.dataLoaded);\r\n $(facetOptions.loadingContainer).fadeOut(600);\r\n\r\n deferred.resolve(data);\r\n\r\n return deferred.promise();\r\n }, 1000);\r\n\r\n }\r\n });\r\n },\r\n facetHandler: function (facets) {\r\n\r\n for (var i = 0; i < facets.length; i++) {\r\n var facet = facets[i];\r\n var facetType = facet.type;\r\n\r\n if (facetType == facetTypes.numeric) {\r\n facetOptions.rangeSlidersCount++;\r\n facetRenderHandler.numeric(facet);\r\n }\r\n\r\n else if (facetType == facetTypes.checkbox) {\r\n facetRenderHandler.checkbox(facet);\r\n }\r\n\r\n else if (facetType == facetTypes.checkboxList) {\r\n facetRenderHandler.checkboxList(facet);\r\n }\r\n\r\n else if (facetType == facetTypes.dropdown) {\r\n facetRenderHandler.dropdown(facet);\r\n }\r\n }\r\n\r\n classHandler.init();\r\n }\r\n}\r\n\r\n\r\n//Run through facets and start the HTML generator for each one.\r\nvar facetRenderHandler = {\r\n numeric: function (facet) {\r\n var numericFilterClass = facetClasses.range + \"-\" + facet.id;\r\n facetOptions.rangeSliderFilter += \".\" + numericFilterClass;\r\n\r\n var numericArray = [];\r\n for (var i = 0; i < facetOptions.itemsArray.length; i++) {\r\n var item = facetOptions.itemsArray[i];\r\n var itemValues = item.value;\r\n\r\n for (var j = 0; j < itemValues.length; j++) {\r\n itemValue = itemValues[j];\r\n\r\n if (itemValue.facetId == facet.id || itemValue.id == facet.id) {\r\n var oldStyleVal = itemValue.value;\r\n var newStyleVal = itemValue.itemValue;\r\n\r\n var oldValIsNumeric = !isNaN(parseFloat(oldStyleVal)) && isFinite(oldStyleVal);\r\n\r\n var pushValue = oldValIsNumeric && oldStyleVal !== null ? oldStyleVal : newStyleVal !== null ? newStyleVal : 0;\r\n\r\n pushValue = pushValue !== undefined ? pushValue : 0;\r\n\r\n numericArray.push(pushValue);\r\n // we add all of the range values that were set on child items to an array\r\n // we use the array for creating a range slider \r\n }\r\n }\r\n }\r\n filterHtmlGenerator.generateRangeSlider(facet, numericArray, facetOptions.nrOfRangeSliders);\r\n },\r\n checkbox: function (facet) {\r\n filterHtmlGenerator.generateCheckbox(facet);\r\n },\r\n checkboxList: function (facet) {\r\n filterHtmlGenerator.generateCheckboxList(facet);\r\n },\r\n dropdown: function (facet) {\r\n filterHtmlGenerator.generateDropdownList(facet);\r\n }\r\n}\r\n\r\n\r\n//Generate HTML for each facet\r\nvar filterHtmlGenerator = {\r\n defaultMarkup: function (appendItem, idPostfix) {\r\n var col = '
';\r\n var group = '
';\r\n var postFix = idPostfix != '' ? '__' + idPostfix : ''\r\n\r\n $(facetOptions.filterContainer + postFix)\r\n .append($(col)\r\n .append($(group)\r\n .append(appendItem)));\r\n },\r\n generateRangeSlider: function (facet, numericArray) {\r\n //create the slider\r\n if (numericArray.length > 0) {\r\n var checkboxHtml = '' + facet.name + ''\r\n + '
';\r\n\r\n //Append the checkbox with default markup arround it.\r\n filterHtmlGenerator.defaultMarkup(checkboxHtml, '');\r\n\r\n //Set values in the new range slider\r\n pluginHandler.setRangeValues(facet, numericArray);\r\n }\r\n },\r\n generateCheckbox: function (facet) {\r\n var filter = facet.name.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n var checkboxHtml = '
';\r\n\r\n //Append the checkbox with default markup arround it.\r\n filterHtmlGenerator.defaultMarkup(checkboxHtml, '');\r\n },\r\n generateCheckboxList: function (facet) {\r\n var checkboxList = '' + facet.name + '';\r\n var facetValues = facet.value;\r\n\r\n for (var i = 0; i < facetValues.length; i++) {\r\n var checkboxItem = facetValues[i];\r\n var filter = \"\";\r\n\r\n if (checkboxItem.value !== undefined) {\r\n filter = checkboxItem.value.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n } else {\r\n filter = checkboxItem.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n }\r\n\r\n checkboxList += '
';\r\n }\r\n\r\n //Append the checkbox list with default markup arround it.\r\n filterHtmlGenerator.defaultMarkup(checkboxList, facet.id);\r\n },\r\n generateDropdownList: function (facet) {\r\n\r\n var dropdownList = '';\r\n\r\n //Append the dropdown list with default markup arround it.\r\n filterHtmlGenerator.defaultMarkup(dropdownList, '');\r\n }\r\n}\r\n\r\n\r\nvar classHandler = {\r\n\r\n init: function () {\r\n var self = this;\r\n\r\n self.addHtmlFilterClasses();\r\n\r\n //Start the filter handler - because all HTML and Classes is added and ready\r\n filterHandler.init();\r\n },\r\n addHtmlFilterClasses: function () {\r\n\r\n // adding filter classes to list items\r\n\r\n for (var i = 0; i < facetOptions.itemsArray.length; i++) {\r\n var item = facetOptions.itemsArray[i];\r\n var itemId = item.id;\r\n var itemValues = item.value;\r\n var $target = $(facetOptions.itemId + itemId);\r\n\r\n for (var j = 0; j < itemValues.length; j++) {\r\n try {\r\n itemValue = itemValues[j];\r\n var value = itemValue.value;\r\n\r\n var useNewValues = itemValue.itemValue !== null && itemValue.itemValue !== undefined;\r\n var useOldValue = itemValue.value !== null && itemValue.value !== undefined;\r\n // usually, if it a list facet, values are stored in .itemValue\r\n // if it is a one value facet, values are stored in .value\r\n\r\n if (useNewValues) {\r\n if (itemValue.itemValue === undefined || itemValue.itemValue === null) {\r\n continue;\r\n }\r\n } else if (useOldValue) {\r\n if (value === undefined || value === null) {\r\n continue;\r\n }\r\n }\r\n\r\n if (itemValue.type == facetTypes.numeric) {\r\n if (itemValue.itemValue) {\r\n $target.data(\"size\", itemValue.itemValue);\r\n }\r\n }\r\n\r\n if (itemValue.type == facetTypes.checkbox) {\r\n // checkbox value, just add checkbox as a class\r\n if (itemValue.itemValue) {\r\n var checkboxValue = \"\";\r\n if (useNewValues) {\r\n checkboxValue = itemValue.name.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n } else if (useOldValue) {\r\n checkboxValue = value.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n }\r\n\r\n //$target.addClass(checkboxValue);\r\n $target.addClass(\"filter-\" + checkboxValue);\r\n }\r\n }\r\n\r\n if (itemValue.type == facetTypes.checkboxList) {\r\n var typeValue = value;\r\n // checkbox list, just add checkbox item as a class\r\n\r\n for (var k = 0; k < typeValue.length; k++) {\r\n var checkboxItem = typeValue[k];\r\n\r\n var filter = \"\";\r\n\r\n if (checkboxItem.value !== undefined) {\r\n if (checkboxItem.itemValue === true) {\r\n //if the value is selected add the class to the item\r\n filter = checkboxItem.value.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n }\r\n } else {\r\n filter = checkboxItem.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n }\r\n\r\n $target.addClass(\"filter-\" + filter);\r\n }\r\n }\r\n\r\n if (itemValue.type == facetTypes.dropdown) {\r\n // add dropdown item value as class\r\n if (itemValue.itemValue !== null) {\r\n\r\n if (typeof itemValue.itemValue != \"string\") {\r\n itemValue.itemValue.forEach(function (element) {\r\n element = element.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n $target.addClass(\"filter-\" + element);\r\n });\r\n }\r\n\r\n if (typeof itemValue.itemValue == \"string\") {\r\n var listValue = itemValue.itemValue.toLowerCase().replace(/\\//g, '-').replace(/\\ /g, '-').replace(/[^a-zA-Z0-9_]+/g, '');\r\n\r\n $target.addClass(\"filter-\" + listValue);\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n catch (e) {\r\n console.log(\"failure handling contentId \" + itemId);\r\n }\r\n }\r\n }\r\n },\r\n addRangeItemClasses: function (facet) {\r\n var hitItems = facet.hitItems; // hitItems is a list of child items that fulfill the current range criteria\r\n var filterClass = facetClasses.range + \"-\" + facet.id;\r\n\r\n // we add a class called range-GUID , where GUID is the guid of the facet\r\n facetOptions.rangeSliderActivations++;\r\n console.log(\"filterclass\", \".\" + facetClasses.listItem + \".\" + filterClass);\r\n console.log(\"length\", $(\".\" + facetClasses.listItem + \".\" + filterClass).length);\r\n\r\n $(\".\" + facetClasses.listItem + \".\" + filterClass).removeClass(filterClass);\r\n\r\n for (var i = 0; i < hitItems.length; i++) {\r\n var item = hitItems[i],\r\n itemId = item.id,\r\n $target = $(facetOptions.itemId + itemId);\r\n\r\n $target.addClass(filterClass);\r\n }\r\n\r\n if (facetOptions.rangeSliderActivations > facetOptions.rangeSlidersCount) {\r\n filterHandler.parseFilters();\r\n }\r\n }\r\n}\r\n\r\n\r\n//Filter controller takes care of creating the filter for the MixItUp Plugin\r\nvar filterHandler = {\r\n $filters: null,\r\n groups: [],\r\n outputArray: [],\r\n outputString: \"\",\r\n init: function () {\r\n var self = this;\r\n\r\n self.$filters = $(facetOptions.filterContainer);\r\n\r\n self.$filters.find(\".form-group\").each(function () {\r\n self.groups.push({\r\n $inputs: $(this).find(\"input, option\"),\r\n active: [],\r\n tracker: false\r\n });\r\n });\r\n\r\n //Start MixItUp\r\n pluginHandler.initMixItUp();\r\n\r\n self.bindHandlers();\r\n },\r\n\r\n\r\n // The \"bindHandlers\" method will listen for whenever a form value changes. \r\n bindHandlers: function () {\r\n var self = this;\r\n\r\n self.$filters.on(\"change\", function () {\r\n self.parseFilters();\r\n\r\n if (typeof pagination !== 'undefined') {\r\n pagination.init()\r\n }\r\n\r\n });\r\n },\r\n\r\n\r\n // The parseFilters method checks which filters are active in each group:\r\n parseFilters: function () {\r\n var self = this;\r\n\r\n // loop through each filter group and add active filters to arrays\r\n // this will be used for the actual filtering\r\n for (var i = 0, group; group = self.groups[i]; i++) {\r\n group.active = [];\r\n group.$inputs.each(function () {\r\n $(this).is(\":checked\") && group.active.push($(this).data(\"filter\"));\r\n });\r\n group.active.length && (group.tracker = 0);\r\n }\r\n\r\n self.concatenate();\r\n },\r\n\r\n\r\n // The \"concatenate\" method will crawl through each group, concatenating filters as desired:\r\n // Plugin from MixItUp Advanced filter \"Checkbox List\"\r\n concatenate: function () {\r\n var self = this;\r\n\r\n self.outputString = [];\r\n\r\n var cache = \"\",\r\n crawled = false,\r\n checkTrackers = function () {\r\n var done = 0;\r\n\r\n for (var i = 0, group; group = self.groups[i]; i++) {\r\n (group.tracker === false) && done++;\r\n }\r\n\r\n return (done < self.groups.length);\r\n },\r\n crawl = function () {\r\n for (var i = 0, group; group = self.groups[i]; i++) {\r\n group.active[group.tracker] && (cache += group.active[group.tracker]);\r\n\r\n if (i === self.groups.length - 1) {\r\n //Adding the range slider to the filter list for each group filter there is - Thylle\r\n self.outputArray.push(cache + facetOptions.rangeSliderFilter);\r\n\r\n //self.outputArray.push(cache);\r\n cache = \"\";\r\n updateTrackers();\r\n }\r\n }\r\n },\r\n updateTrackers = function () {\r\n for (var i = self.groups.length - 1; i > -1; i--) {\r\n var group = self.groups[i];\r\n\r\n if (group.active[group.tracker + 1]) {\r\n group.tracker++;\r\n break;\r\n } else if (i > 0) {\r\n group.tracker && (group.tracker = 0);\r\n } else {\r\n crawled = true;\r\n }\r\n }\r\n };\r\n\r\n self.outputArray = [];\r\n\r\n do {\r\n crawl();\r\n }\r\n while (!crawled && checkTrackers());\r\n\r\n self.outputString = self.outputArray.join();\r\n\r\n // If the output string is empty, show all rather than none:\r\n !self.outputString.length && (self.outputString = \"all\");\r\n\r\n self.updateFilter(self.outputString);\r\n },\r\n\r\n\r\n //Update the filter in MixItUp with the new filter output string\r\n updateFilter: function (filterString) {\r\n\r\n //Log the filter and see if it is correct\r\n //console.log(filterString);\r\n\r\n // Send the output string to MixItUp via the 'filter' method:\r\n if ($(facetOptions.selector).mixItUp(\"isLoaded\")) {\r\n $(facetOptions.selector).mixItUp(\"filter\", filterString);\r\n }\r\n }\r\n};\r\n\r\n\r\n//Plugins Handler\r\nvar pluginHandler = {\r\n initMixItUp: function () {\r\n $(facetOptions.selector).mixItUp({\r\n controls: {\r\n enable: false\r\n },\r\n animation: {\r\n enable: false\r\n //easing: 'cubic-bezier(0.86, 0, 0.07, 1)',\r\n //duration: 600\r\n },\r\n callbacks: {\r\n onMixStart: function (state) {\r\n //Fade in loading animation\r\n $(facetOptions.loadingContainer).fadeIn(0);\r\n // this runs before getting the filters needed for the filtering process\r\n },\r\n onMixEnd: function (state) {\r\n\r\n // after mixitup has done the filtering\r\n\r\n state.$hide.removeClass(facetOptions.itemActive);\r\n state.$show.addClass(facetOptions.itemActive);\r\n\r\n $(\".group-item\").each(function () {\r\n var $self = $(this);\r\n var $visibleListItems = $self.find(\".\" + facetOptions.itemActive);\r\n\r\n if ($visibleListItems.length <= 0) {\r\n $self.addClass(\"hide-group\");\r\n } else {\r\n $self.removeClass(\"hide-group\");\r\n }\r\n });\r\n\r\n //Fade out loading animation\r\n setTimeout(function () {\r\n $(facetOptions.loadingContainer).fadeOut(400);\r\n }, 1000);\r\n }\r\n }\r\n })\r\n if (typeof pagination !== 'undefined') {\r\n pagination.init()\r\n }\r\n\r\n },\r\n setRangeValues: function (facet, numericArray) {\r\n\r\n var min = Math.min.apply(Math, numericArray);\r\n var max = Math.max.apply(Math, numericArray);\r\n\r\n // set the range slider limits\r\n\r\n //Round \"min\" down and \"max\" up.\r\n max = Math.ceil((max + 5) / 10) * 10;\r\n if (min >= 5) {\r\n min = Math.floor((min - 5) / 10) * 10;\r\n }\r\n\r\n rangeMin = min;\r\n rangeMax = max;\r\n\r\n $('#' + facet.id).find(\".\" + facetClasses.nstSlider)\r\n .attr(\"data-range_min\", min)\r\n .attr(\"data-range_max\", max)\r\n .attr(\"data-cur_min\", min)\r\n .attr(\"data-cur_max\", max);\r\n\r\n pluginHandler.loadRangeSlider(facet);\r\n },\r\n loadRangeSlider: function (facet) {\r\n var delayFilter = null;\r\n\r\n //NST Slider - for range slider\r\n nstSlider = $('#' + facet.id).find(\".\" + facetClasses.nstSlider).nstSlider({\r\n \"left_grip_selector\": \".leftGrip\",\r\n \"right_grip_selector\": \".rightGrip\",\r\n \"value_bar_selector\": \".bar\",\r\n \"value_changed_callback\": function (cause, minValue, maxValue) {\r\n\r\n // event handler for when you set the slider values\r\n // cause - \"init\" or \"mouse_drag\"\r\n // minValue - the selected min value\r\n // maxValue - the selected max values\r\n\r\n $('#' + facet.id).find('.leftLabel').text(minValue);\r\n $('#' + facet.id).find('.rightLabel').text(maxValue);\r\n\r\n //Empty facet hit items array before filling it up with items to show\r\n facet.hitItems = [];\r\n\r\n //We clear the delayFilter first, to make sure that future requests first launch after x secs and behave properly.\r\n window.clearTimeout(delayFilter);\r\n\r\n delayFilter = window.setTimeout(function () {\r\n\r\n // checking all items if they fulfill the criteria of the slider criteria\r\n\r\n for (var i = 0; i < facetOptions.itemsArray.length; i++) {\r\n var item = facetOptions.itemsArray[i];\r\n var itemValues = item.value;\r\n\r\n for (var j = 0; j < itemValues.length; j++) {\r\n itemValue = itemValues[j];\r\n\r\n if (itemValue.type == facetTypes.numeric) {\r\n\r\n // when running the first time, the items taht dont have a set range value, get rangeMin-1\r\n // this is because the range slider is always included in the filtering process\r\n // even though slider did not get any values set. \r\n // so if they have value rangeMin-1 tehy will get included whn no filtering is applied, but if the user changes the slider range, \r\n //then they get filtered out\r\n if (cause == \"init\" &&\r\n (itemValue.itemValue == null || itemValue.itemValue == undefined)) {\r\n itemValue.itemValue = rangeMin - 1;\r\n }\r\n\r\n if (minValue == rangeMin && maxValue == rangeMax && itemValue.itemValue == -1) {\r\n facet.hitItems.push(item);\r\n }\r\n\r\n var useNewValues = itemValue.itemValue !== null && itemValue.itemValue !== undefined;\r\n var useOldValue = itemValue.value !== null && itemValue.value !== undefined;\r\n\r\n if (useNewValues) {\r\n if (itemValue.itemValue >= minValue && itemValue.itemValue <= maxValue) {\r\n facet.hitItems.push(item);\r\n }\r\n } else if (useOldValue) {\r\n if (itemValue.value >= minValue && itemValue.value <= maxValue) {\r\n facet.hitItems.push(item);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n classHandler.addRangeItemClasses(facet);\r\n }, 500);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction getState() {\r\n setTimeout(function () {\r\n console.log('triggered');\r\n $(\".faceted-list-container .filter\").each(function () {\r\n var elem = $(this);\r\n\r\n if ($(this).is(':checkbox')) {\r\n console.log('test', localStorage.getItem(elem.attr(\"id\")));\r\n\r\n if (localStorage.getItem(elem.attr(\"id\")) == \"on\") {\r\n elem.trigger(\"click\");\r\n }\r\n } else if ($(this).is('select')) {\r\n if (localStorage.getItem(elem.attr(\"id\")) >= 0) {\r\n // console.log('option',elem.val());\r\n\r\n if (elem\r\n .find('option:nth-child(' + localStorage.getItem(elem.attr(\"id\")) + ')').length >\r\n 0) {\r\n elem\r\n .find('option:nth-child(' + localStorage.getItem(elem.attr(\"id\")) + ')')\r\n .prop('selected', true)\r\n .trigger('change');\r\n }\r\n\r\n }\r\n //console.log('test', localStorage.getItem(elem.attr(\"id\")));\r\n }\r\n });\r\n },\r\n 1000);\r\n}\r\n\r\n//Document is ready\r\n$(function () {\r\n\r\n facetOptions.init();\r\n\r\n if ($(facetOptions.selector).length > 0) {\r\n\r\n $.when(facetDataHandler.getFacetData())\r\n .then(getState(), null);\r\n }\r\n\r\n if (typeof (Storage) !== \"undefined\") {\r\n\r\n $(\"body\").on(\"change\", \".faceted-list-container .filter\",\r\n function () {\r\n\r\n var elem = $(this);\r\n\r\n if (elem.is(\":checked\")) {\r\n localStorage.setItem(elem.attr(\"id\"), $.trim(elem.val()));\r\n } else if (elem.is(\"select\")) {\r\n var selected = elem.find(\"option:selected\");\r\n if (selected.length) {\r\n localStorage.setItem(elem.attr(\"id\"), $.trim(parseInt(elem.find(\"option:selected\").val()) + 1));\r\n } else {\r\n localStorage.removeItem(elem.attr(\"id\"));\r\n }\r\n\r\n } else {\r\n localStorage.removeItem(elem.attr(\"id\"));\r\n }\r\n\r\n });\r\n }\r\n});\r\n\r\n\r\n","\r\nif (window.siteSettings.pageSize) {\r\n\r\n\r\n var pagination = {\r\n init: function () {\r\n currentPage = parseInt(location.hash.substr(1).split(\"=\")[1]) > 1 ? parseInt(location.hash.substr(1).split(\"=\")[1]) : 1;\r\n\r\n var constructor = {\r\n pageSize: window.siteSettings.pageSize,\r\n page: currentPage,\r\n containerClass: '.faceted-list-container',\r\n itemsClass: '.item-active',\r\n min: parseInt(window.siteSettings.pageSize * (currentPage - 1)),\r\n max: parseInt(window.siteSettings.pageSize * currentPage),\r\n visiblePagingItems: 5\r\n };\r\n\r\n let i = 0;\r\n\r\n $(constructor.containerClass).find(constructor.itemsClass).each(function () {\r\n let $this = $(this)\r\n\r\n if (i >= constructor.min && i < constructor.max) {\r\n $this.removeClass('hidden');\r\n\r\n } else {\r\n $this.addClass('hidden');\r\n }\r\n i++;\r\n });\r\n\r\n let pages = $(constructor.containerClass).find(\".item-active\").length > 0 ? parseInt($(constructor.containerClass).find(\".item-active\").length / constructor.pageSize) + (($(constructor.containerClass).find(\".item-active\").length / constructor.pageSize) % 1 === 0 ? 0 : 1) : 0;\r\n\r\n $(constructor.containerClass).find(\".pagination-wrapper\").remove();\r\n\r\n if (pages > 1) {\r\n\r\n let navigationPages = \"

\" + window.siteSettings.showing + \" \" + (constructor.min + 1) + \" \" + window.siteSettings.to + \" \" + (constructor.max < $(constructor.containerClass).find(\".item-active\").length ? constructor.max : $(constructor.containerClass).find(\".item-active\").length) + \" \" + window.siteSettings.of + \" \" + $(constructor.containerClass).find(\".item-active\").length + \"

\"\r\n\r\n\r\n $(constructor.containerClass).append(navigationPages);\r\n }\r\n\r\n }\r\n };\r\n\r\n window.addEventListener(\"hashchange\", function (e) {\r\n\r\n if (location.hash.substring(1).split(\"=\")[0] == \"page\") {\r\n e.preventDefault();\r\n pagination.init();\r\n window.scroll(0, findPos(document.getElementById(\"faceted-list-top\")));\r\n\r\n }\r\n\r\n });\r\n\r\n function findPos(obj) {\r\n var curtop = 0;\r\n if (obj.offsetParent) {\r\n do {\r\n curtop += obj.offsetTop;\r\n } while (obj = obj.offsetParent);\r\n return [curtop];\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","\r\n$(function () {\r\n\r\n if ($(\".share\").length > 0) {\r\n $(\".share\").on(\"click\", function () {\r\n $(\".content__toplinks-social\").addClass(\"content__toplinks-active\");\r\n $(\".share\").hide();\r\n return false;\r\n });\r\n\r\n $(\".content__toplinks-close\").on(\"click\", function () {\r\n $(\".content__toplinks-social\").removeClass(\"content__toplinks-active\");\r\n $(\".share\").show();\r\n return false;\r\n });\r\n\r\n }\r\n});","// TODO: .tabs__panel-mobile-trigger\r\n/**\r\n * by default tabs sjould be turned into accordion on mobile.\r\n * //if the css class tabs--no-accordion is set, then don't use accordions\r\n * \r\n * it should be possible to set a setting allows to close the open tab,\r\n * make it a custom event that can be called on the tab, or just call click event?\r\n * \r\n */\r\n(function () {\r\n var keys = {\r\n ARROWS: [37, 38, 39, 40],\r\n ARROW_LEFT: 37,\r\n ARROW_UP: 38,\r\n ARROW_RIGHT: 39,\r\n ARROW_DOWN: 40,\r\n ENTER: 13,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34\r\n };\r\n\r\n /**\r\n @param {Object} startTab - The tab to start searching from.\r\n @param {Object} $list - A list of nav buttons as a jQuery object.\r\n @param {Object} key - The triggering key code.\r\n @returns {Object} - The tab to the left or right of `startTab`.\r\n */\r\n function findAdjacentTab(startTab, $list, key) {\r\n var dir =\r\n (key === keys.ARROW_LEFT || key === keys.ARROW_UP) ? 'prev' : 'next';\r\n var adjacentTab = (dir === 'prev') ?\r\n $(startTab.parentNode)\r\n .prev()[0] :\r\n $(startTab.parentNode)\r\n .next()[0];\r\n\r\n if (!adjacentTab) {\r\n var allTabs = $list.find('.tabs__nav-item');\r\n if (dir === 'prev') {\r\n adjacentTab = allTabs[allTabs.length - 1];\r\n }\r\n else {\r\n adjacentTab = allTabs[0];\r\n }\r\n }\r\n\r\n return $(adjacentTab)\r\n .find('.tabs__nav-trigger')[0];\r\n }\r\n\r\n /**\r\n @param {Object} newActive - Tab to be made active.\r\n @param {Object} $list - A list of nav buttons as a jQuery object.\r\n @param {Boolean} closeIfSame - KRUSO: Close the tab if it's the same as the currently active\r\n @returns {undefined}\r\n */\r\n function setActiveAndInactive(newActive, $list, closeIfSame) {\r\n $list.find('.tabs__nav-item')\r\n .each(function () {\r\n var assocPanelID = $(this)\r\n .find('.tabs__nav-trigger')\r\n .first()\r\n .attr('aria-controls');\r\n var anchor = $(this)\r\n .find('.tabs__nav-trigger')[0];\r\n\r\n\r\n\r\n\r\n if (this !== newActive.parentNode || closeIfSame) {\r\n if (closeIfSame)\r\n History.replaceState({}, this.ownerDocument.title, this.firstElementChild.getAttribute('data-transport-ref'));\r\n $(this)\r\n .removeClass('is-active');\r\n anchor.tabIndex = -1;\r\n anchor.setAttribute('aria-selected', 'false');\r\n $('#' + assocPanelID)\r\n .removeClass('is-current')\r\n .removeClass('current-section')\r\n .attr('aria-hidden', 'true');\r\n }\r\n else {\r\n History.replaceState({}, this.ownerDocument.title, this.firstElementChild.getAttribute('data-section-ref'));\r\n $(this)\r\n .addClass('is-active');\r\n anchor.tabIndex = 0;\r\n anchor.setAttribute('aria-selected', 'true');\r\n $('#' + assocPanelID)\r\n .addClass('is-current')\r\n .removeAttr('aria-hidden');\r\n }\r\n });\r\n }\r\n\r\n var $allTabGroups = $('.tabs');\r\n\r\n $allTabGroups.each(function () {\r\n var $tabs = $(this);\r\n var $navlist = $tabs.find('.tabs__navlist');\r\n var $navAccordionTrigger = $tabs.find('.tabs__panel-mobile-trigger'); // KRUSO\r\n\r\n $navlist.on('keydown', '.tabs__nav-item .tabs__nav-trigger',\r\n function (keyVent) {\r\n var which = keyVent.which;\r\n var target = keyVent.target;\r\n\r\n if ($.inArray(which, keys.ARROWS) > -1) {\r\n var adjacentTab = findAdjacentTab(target, $navlist, which);\r\n\r\n if (adjacentTab) {\r\n keyVent.preventDefault();\r\n adjacentTab.focus();\r\n\r\n setActiveAndInactive(adjacentTab, $navlist);\r\n }\r\n }\r\n else if (which === keys.ENTER || which === keys.SPACE) {\r\n keyVent.preventDefault();\r\n target.click();\r\n }\r\n else if (which === keys.PAGE_DOWN) {\r\n keyVent.preventDefault();\r\n var assocPanel = $('#' + this.getAttribute('aria-controls'));\r\n\r\n if (assocPanel) {\r\n assocPanel.focus();\r\n }\r\n }\r\n }\r\n );\r\n\r\n // Click support\r\n $navlist.on('click', '.tabs__nav-item .tabs__nav-trigger', function () {\r\n setActiveAndInactive(this, $navlist);\r\n });\r\n\r\n //console.log($navAccordionTrigger)\r\n //KRUSO: mobile accordion trigger\r\n $navAccordionTrigger.each(function () {\r\n var $trigger = $(this)\r\n var isActive = $trigger.closest('.tabs__panel').hasClass('is-current')\r\n var isTabSpecified = $trigger.closest('.tabs__panel').hasClass('current-section')\r\n var navlistEl = $tabs.find('#' + $trigger.closest('.tabs__panel').attr('aria-labelledby'))[0]\r\n\r\n if (window.innerWidth < 992 && isActive && !isTabSpecified) { // close all open tabs on load on mobile (except for the specified one)\r\n setActiveAndInactive(navlistEl, $navlist, isActive)\r\n }\r\n\r\n $trigger.on('click', function (e) {\r\n e.preventDefault()\r\n isActive = $trigger.closest('.tabs__panel').hasClass('is-current')\r\n console.log(navlistEl)\r\n setActiveAndInactive(navlistEl, $navlist, isActive)\r\n })\r\n })\r\n });\r\n\r\n $(document.body)\r\n .on('keydown', '.tabs__panel', function (e) {\r\n if (e.key == \"ArrowUp\" || e.key == \"Up\") {\r\n e.preventDefault();\r\n var $navlist = $(this)\r\n .closest('.tabs')\r\n .find('.tabs__navlist');\r\n var activeTab = $navlist\r\n .find('.tabs__nav-item.is-active .tabs__nav-trigger')[0];\r\n\r\n if (activeTab) {\r\n activeTab.focus();\r\n }\r\n }\r\n });\r\n\r\n})();\r\n","var pageSubscribeOptions = {\r\n selectorId: \"page-subscribe\",\r\n triggerClass: \"page-subscribe-trigger\",\r\n submitClass: \"page-subscribe__submit\",\r\n contentClass: \"page-subscribe__content\",\r\n selector: \"\",\r\n form: \"\",\r\n button: \"\",\r\n formNotification: \"\",\r\n successContainer: \".page-subscribe-success\",\r\n existContainer: \".page-subscribe-warning\",\r\n errorContainer: \".page-subscribe-error\",\r\n init: function () {\r\n this.selector = $(\"#\" + this.selectorId);\r\n this.trigger = $(this.selector).find(\".\" + this.triggerClass);\r\n this.submit = $(this.selector).find(\".\" + this.submitClass);\r\n this.content = $(this.selector).find(\".\" + this.contentClass);\r\n this.form = $(this.selector).find(\"form\");\r\n this.button = $(this.selector).find(\"button\");\r\n this.formNotification = $(this.selector).find(\".form-notification\");\r\n }\r\n}\r\n\r\nvar pageSubscribeHandler = {\r\n initSubscribe: function (e) {\r\n\r\n e.preventDefault();\r\n $(pageSubscribeOptions.button).prop(\"disabled\", true);\r\n\r\n pageSubscribeHandler.pageSubmitForm(e);\r\n },\r\n\r\n pageSubmitForm: function () {\r\n var formArray = $(pageSubscribeOptions.form).serializeArray();\r\n\r\n var nodeId = $(pageSubscribeOptions.form).find(\"#nodeId\")[0].value,\r\n email = $(pageSubscribeOptions.form).find(\"#subscriberEmail\")[0].value;\r\n\r\n var url = $(pageSubscribeOptions.form).attr(\"action\");\r\n $.ajax({\r\n type: \"POST\",\r\n url: url,\r\n data: {\r\n nodeId: nodeId,\r\n subscriberName: \"sub\",\r\n subscriberEmail: email\r\n },\r\n success: function (e) {\r\n if (e) {\r\n pageSubscribeHandler.pageResponseHandler(e);\r\n } else {\r\n pageSubscribeHandler.pageResponseHandler(e);\r\n }\r\n },\r\n error: function () {\r\n pageSubscribeHandler.pageResponseHandler(null);\r\n }\r\n });\r\n },\r\n pageResponseHandler: function (status) {\r\n\r\n $(pageSubscribeOptions.formNotification).find(\"div\").hide();\r\n\r\n if (status == \"valid\" || status == 3) {\r\n // $(pageSubscribeOptions.form).slideUp(400);\r\n $(pageSubscribeOptions.formNotification).find(pageSubscribeOptions.successContainer).fadeIn(300);\r\n }\r\n else if (status == \"alreadyExist\" || status == 1) {\r\n $(pageSubscribeOptions.button).prop(\"disabled\", false);\r\n $(pageSubscribeOptions.formNotification).find(pageSubscribeOptions.existContainer).fadeIn(300);\r\n }\r\n else {\r\n $(pageSubscribeOptions.button).prop(\"disabled\", false);\r\n $(pageSubscribeOptions.formNotification).find(pageSubscribeOptions.errorContainer).fadeIn(300);\r\n }\r\n },\r\n}\r\n\r\nvar pageOpenCloseHandler = {\r\n\r\n openCloseToggle: function () {\r\n var isActive = $(pageSubscribeOptions.content).hasClass(\"active\");\r\n\r\n if (!isActive) {\r\n pageOpenCloseHandler.pageOpenSubscribe();\r\n $('.page-subscribe__overlay').addClass(\"active\");\r\n } else {\r\n pageOpenCloseHandler.pageCloseSubscribe();\r\n $('.page-subscribe__overlay').removeClass(\"active\");\r\n }\r\n },\r\n\r\n pageOpenSubscribe: function () {\r\n $(pageSubscribeOptions.trigger).addClass(\"active\");\r\n\r\n $(pageSubscribeOptions.content)\r\n .slideDown()\r\n .addClass(\"active\");\r\n },\r\n\r\n pageCloseSubscribe: function () {\r\n $(pageSubscribeOptions.trigger).removeClass(\"active\");\r\n\r\n $(pageSubscribeOptions.content)\r\n .slideUp()\r\n .removeClass(\"active\");\r\n }\r\n\r\n}\r\n\r\n$(function () {\r\n pageSubscribeOptions.init();\r\n\r\n $(pageSubscribeOptions.trigger).on(\"click\", function (e) {\r\n\r\n e.preventDefault();\r\n pageOpenCloseHandler.openCloseToggle(e);\r\n });\r\n\r\n $('.page-subscribe__overlay, .page-subscribe__close').on(\"click\", function () {\r\n //e.preventDefault();\r\n //pageSubscribeHandler.initSubscribe(e);\r\n $(pageSubscribeOptions.trigger).trigger(\"click\");\r\n });\r\n\r\n $(pageSubscribeOptions.formNotification).find(\"div\").hide();\r\n\r\n if ($(pageSubscribeOptions.form).length > 0) {\r\n $(pageSubscribeOptions.form).on(\"submit\", function (e) {\r\n if (pageSubscribeOptions.form.valid()) {\r\n pageSubscribeHandler.initSubscribe(e);\r\n }\r\n });\r\n }\r\n});","var subscribeOptions = {\r\n existingTagSubscriptionIds: undefined,\r\n existingTagSubscriptionForm: \"\",\r\n selectorId: \"subscribe\",\r\n submitClass: \"subscribe__submit\",\r\n contentClass: \"subscribe__content\",\r\n selector: \"\",\r\n newTagSubscriptionsForm: \"\",\r\n form: \"\",\r\n button: \"\",\r\n formValidationFeedbackMessage: \"\",\r\n formNotification: \"\",\r\n successContainer: \".subscribe-success\",\r\n existContainer: \".subscribe-warning\",\r\n errorContainer: \".subscribe-error\",\r\n unsubContainer: \".subscribe-wasremoved\",\r\n init: function () {\r\n this.existingTagSubscriptionIds = $(\"#existingTagSubscriptionIds\").val();\r\n this.existingTagSubscriptionForm = $(\"#editTagSubscriptionForm\");\r\n this.selector = $(\"#\" + this.selectorId);\r\n this.submit = $(\".\" + this.submitClass);\r\n this.content = $(this.selector).find(\".\" + this.contentClass);\r\n this.newTagSubscriptionsForm = $(\"#newTagSubscriptionForm\");\r\n this.form = $(this.selector).find(\"form\");\r\n this.button = $(this.selector).find(\"button\");\r\n this.formValidationFeedbackMessage = $(\"#formValidationFeedbackMessage\");\r\n this.formNotification = $(this.selector).find(\".form-notification\");\r\n if (this.formNotification.length === 0) {\r\n this.formNotification = $(\".form-notification\");\r\n }\r\n }\r\n};\r\n\r\nvar subscribeHandler = {\r\n initSubscribe: function (e) {\r\n\r\n e.preventDefault();\r\n $(subscribeOptions.button).prop(\"disabled\", true);\r\n\r\n subscribeHandler.createNewSubscription(e);\r\n },\r\n\r\n createNewSubscription: function () {\r\n loadingHandler.show();\r\n var subscribedTagIds = this.gatherSubscribedTagIds();\r\n\r\n var nodeId = $(subscribeOptions.newTagSubscriptionsForm).find(\"#nodeId\")[0].value,\r\n email = $(subscribeOptions.newTagSubscriptionsForm).find(\"#subscriberEmail\")[0].value;\r\n\r\n var url = $(subscribeOptions.newTagSubscriptionsForm).attr(\"action\");\r\n $.ajax({\r\n type: \"POST\",\r\n url: url,\r\n data: {\r\n nodeId: nodeId,\r\n subscriberName: \"sub\",\r\n subscriberEmail: email,\r\n tagsIds: subscribedTagIds\r\n },\r\n success: function (e) {\r\n if (e) {\r\n subscribeHandler.responseHandler(e);\r\n } else {\r\n subscribeHandler.responseHandler(e);\r\n }\r\n },\r\n error: function () {\r\n subscribeHandler.responseHandler(null);\r\n }\r\n });\r\n },\r\n updateSubscriberData: function (e, shouldUnsubscribe) {\r\n e.preventDefault();\r\n\r\n if (shouldUnsubscribe) {\r\n var prompt = confirm(\"\\u00d8nsker du en komplet opsigelse af abonnement p\\u00e5 nyhedsbrevet?\");\r\n if (!prompt)\r\n return;\r\n }\r\n else {\r\n // Validate for cases where user only wants to update, not unsub completely\r\n if (!subscribeHandler.validateStateOk()) {\r\n return;\r\n }\r\n }\r\n\r\n loadingHandler.show();\r\n\r\n // Data\r\n var subscribedTagIds = this.gatherSubscribedTagIds();\r\n var nodeId = $(subscribeOptions.existingTagSubscriptionForm).find(\"#nodeId\")[0].value;\r\n var subscriberEmail = $(subscribeOptions.existingTagSubscriptionForm).find(\"#subscriberEmail\")[0].value;\r\n var subscriberId = $(subscribeOptions.existingTagSubscriptionForm).find(\"#subscriberId\")[0].value;\r\n var secretKey = $(subscribeOptions.existingTagSubscriptionForm).find(\"#givenSecret\")[0].value;\r\n\r\n var url = $(subscribeOptions.existingTagSubscriptionForm).attr(\"action\");\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: url,\r\n data: {\r\n nodeId: nodeId,\r\n subscriberId: +subscriberId,\r\n subscriberEmail: subscriberEmail,\r\n tagIds: subscribedTagIds,\r\n secretKey: secretKey,\r\n shouldRemoveSubscription: shouldUnsubscribe\r\n },\r\n success: function (e) {\r\n if (e) {\r\n subscribeHandler.responseHandler(e);\r\n } else {\r\n subscribeHandler.responseHandler(e);\r\n }\r\n },\r\n error: function () {\r\n subscribeHandler.responseHandler(null);\r\n }\r\n });\r\n },\r\n gatherSubscribedTagIds: function () {\r\n var tagCheckboxElements = $(\"#subscriptionTagsSelection\").find(\"input[name='subscriptionTags']:checked\");\r\n\r\n var arrayOfChosenTagIds = [];\r\n for (var i = 0; i < tagCheckboxElements.length; i++) {\r\n arrayOfChosenTagIds.push(tagCheckboxElements[i].value);\r\n }\r\n\r\n var joined = arrayOfChosenTagIds.join(\",\");\r\n\r\n return joined;\r\n },\r\n responseHandler: function (status) {\r\n\r\n if (status == 12) {\r\n $(subscribeOptions.newTagSubscriptionsForm).slideUp(400);\r\n $(subscribeOptions.existingTagSubscriptionForm).slideUp(0);\r\n $(subscribeOptions.formNotification).find(subscribeOptions.unsubContainer).fadeIn(300);\r\n } else if (status == \"valid\" || status == 3) {\r\n $(subscribeOptions.formNotification).find(subscribeOptions.successContainer).fadeIn(300);\r\n } else if (status == \"alreadyExist\" || status == 1) {\r\n $(subscribeOptions.button).prop(\"disabled\", false);\r\n $(subscribeOptions.formNotification).find(subscribeOptions.existContainer).fadeIn(300);\r\n } else {\r\n $(subscribeOptions.button).prop(\"disabled\", false);\r\n $(subscribeOptions.formNotification).find(subscribeOptions.errorContainer).fadeIn(300);\r\n }\r\n\r\n loadingHandler.hide();\r\n },\r\n\r\n validateStateOk: function () {\r\n var subscribedTagIds = subscribeHandler.gatherSubscribedTagIds();\r\n\r\n if (!subscribedTagIds) {\r\n $(subscribeOptions.formValidationFeedbackMessage).show();\r\n\r\n if ($(\"#editSubscriptionButton\").length > 0) {\r\n $(\"#editSubscriptionButton\").attr(\"disabled\", \"disabled\"); // Disable update button\r\n }\r\n if ($(subscribeOptions.submit).length > 0) {\r\n $(subscribeOptions.submit).attr(\"disabled\", \"disabled\");\r\n }\r\n\r\n return false;\r\n }\r\n else {\r\n $(subscribeOptions.formValidationFeedbackMessage).hide();\r\n\r\n if ($(\"#editSubscriptionButton\").length > 0) {\r\n $(\"#editSubscriptionButton\").attr(\"disabled\", null); // Reeanble update button\r\n }\r\n if ($(subscribeOptions.submit).length > 0) {\r\n $(subscribeOptions.submit).attr(\"disabled\", null);\r\n }\r\n return true;\r\n }\r\n },\r\n};\r\n\r\nvar loadingHandler = {\r\n\r\n show: function () {\r\n $(\"#subscribe\").hide();\r\n $(\".subscribe-action-button\").hide();\r\n $(\"#subscribeLoader\").show();\r\n },\r\n\r\n hide: function () {\r\n $(\"#subscribe\").show();\r\n $(\".subscribe-action-button\").show();\r\n $(\"#subscribeLoader\").hide();\r\n }\r\n};\r\n\r\n\r\nvar selectionHandler = {\r\n\r\n getAllSelectedFromSection: function (sectionSelector) {\r\n var inputsToCheck = $(sectionSelector).find(\"input[name='subscriptionTags']:checked\");\r\n\r\n return inputsToCheck;\r\n },\r\n\r\n autoSelectTypesWhenSelectingFirstZipcode: function () {\r\n var allTypeElements = $(\".sectionTypes input[name*='subscriptionTags\");\r\n var totalChecked = 0;\r\n for (var i = 0; i < allTypeElements.length; i++) {\r\n if (allTypeElements[i].checked === false)\r\n totalChecked++;\r\n }\r\n var noneSelected = (totalChecked === allTypeElements.length);\r\n if (noneSelected) {\r\n for (var y = 0; y < allTypeElements.length; y++) {\r\n allTypeElements[y].checked = true;\r\n }\r\n }\r\n },\r\n\r\n // When editing an existing subscription, mark checkboxes in UI for the tags they've already signed up for\r\n selectExistingSubscriptions: function (collectionOfTagIds) {\r\n var collectionOfTagIdsArray = collectionOfTagIds.split(\",\");\r\n if (collectionOfTagIdsArray.length > 0) {\r\n for (var i = 0; i < collectionOfTagIdsArray.length; i++) {\r\n var currentCheckboxElementId = $(\"#subscriptionTag_\" + collectionOfTagIdsArray[i]);\r\n\r\n if ($(currentCheckboxElementId)[0]) {\r\n $(currentCheckboxElementId)[0].checked = true;\r\n }\r\n }\r\n }\r\n\r\n loadingHandler.hide();\r\n }\r\n};\r\n\r\n\r\n$(function () {\r\n\r\n console.log(\"Booting handlers...\");\r\n\r\n loadingHandler.show();\r\n\r\n subscribeOptions.init();\r\n subscribeHandler.validateStateOk();\r\n\r\n /**\r\n * If existing tagIds are loaded (edit subscription mode), let's preselect them in the UI.\r\n */\r\n\r\n if (subscribeOptions.existingTagSubscriptionIds) {\r\n console.log(\"subscribeOptionseditTagSubscriptionIds\", subscribeOptions.existingTagSubscriptionIds);\r\n selectionHandler.selectExistingSubscriptions(subscribeOptions.existingTagSubscriptionIds);\r\n }\r\n\r\n /**\r\n * Events\r\n */\r\n\r\n // Checkbox: Update checked status of the \"showall\" input according to children checkboxes\r\n $(\"input[name*='subscriptionTags']\").on(\"change\", function () {\r\n subscribeHandler.validateStateOk();\r\n });\r\n\r\n // Checkbox: Whenever first \"Postnummer\" is clicked on a (freshly loaded) signup page, make sure to tick all \"Types\" (H�ringer/Afg�relser)\r\n $(\".sectionZipcodes input[name*='subscriptionTags'] , #showAll_categories_zipCodes\").on(\"change\", function () {\r\n if ($(this)[0].checked === true) {\r\n selectionHandler.autoSelectTypesWhenSelectingFirstZipcode();\r\n }\r\n });\r\n\r\n // Submit: New subscription\r\n if ($(subscribeOptions.newTagSubscriptionsForm).length > 0) {\r\n $(subscribeOptions.newTagSubscriptionsForm).on(\"submit\", function (e) {\r\n if (subscribeOptions.newTagSubscriptionsForm.valid()) {\r\n subscribeHandler.initSubscribe(e);\r\n }\r\n });\r\n }\r\n\r\n\r\n // Submit: Update an existing subscription\r\n if ($(subscribeOptions.existingTagSubscriptionForm).length > 0) {\r\n $(subscribeOptions.existingTagSubscriptionForm).on(\"submit\", function (e) {\r\n if (subscribeOptions.existingTagSubscriptionForm.valid()) {\r\n subscribeHandler.updateSubscriberData(e, false);\r\n }\r\n });\r\n }\r\n\r\n // Submit: Update an existing subscription\r\n $(\"#removeSubscription\").on(\"click\", function (e) {\r\n if (subscribeOptions.existingTagSubscriptionForm.valid()) {\r\n subscribeHandler.updateSubscriberData(e, true);\r\n }\r\n });\r\n\r\n // choosing a focused tag by pressing the \"Enter\" key\r\n $(document).on(\"keydown\", function (e) {\r\n\r\n if (e.key === \"Enter\" && e.target.name == \"subscriptionTags\") {\r\n e.preventDefault();\r\n e.target.click();\r\n }\r\n });\r\n\r\n loadingHandler.hide();\r\n});","/*Containers*/\r\nvar formContainer = $(\"form.search-form\");\r\nvar formSearchField = $(formContainer).find(\".search-form__input\");\r\n\r\n/*ID and URL information for the search*/\r\nvar siteId = $(\"body\").data(\"nodeid\");\r\nvar searchUrl = $(formContainer).attr(\"action\");\r\n\r\nvar searchSuggentions = new Bloodhound({\r\n datumTokenizer: Bloodhound.tokenizers.whitespace,\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n remote: {\r\n url: \"/umbraco/openpublic/AutoCompleteApi/GetAutocomplete/\",\r\n replace: function (url, query) {\r\n return url + \"?q=\" + query + \"¤tNodeId=\" + siteId + \"&amount=5\";\r\n },\r\n },\r\n});\r\n\r\nsearchSuggentions.initialize();\r\n\r\nvar options = {\r\n hint: true,\r\n highlight: true,\r\n minLength: 3,\r\n};\r\nvar datasetOptions = {\r\n name: \"search-autocomplete\",\r\n limit: 10,\r\n source: searchSuggentions.ttAdapter(),\r\n templates: {\r\n empty: [].join(\"\\n\"),\r\n },\r\n};\r\n\r\nfunction submitSearch(e, word) {\r\n if (e != null) {\r\n e.preventDefault();\r\n }\r\n\r\n if (word !== undefined && word != \"\") {\r\n window.location.href = searchUrl + \"?q=\" + word;\r\n } else {\r\n $(formSearchField).focus();\r\n }\r\n}\r\nfunction setSearchWord(value) {\r\n $(formSearchField).val(value);\r\n return false;\r\n}\r\n\r\n$(formContainer).on(\"submit\", function (e) {\r\n var searchWord = formSearchField.val();\r\n submitSearch(e, searchWord);\r\n});\r\n\r\n$(formSearchField)\r\n .typeahead(options, datasetOptions)\r\n .on(\"typeahead:selected\", function (obj, value) {\r\n setSearchWord(value);\r\n })\r\n .on(\"typeahead:close\", function (obj, value) {\r\n $(\".search-overlay\").removeClass(\"green-overlay\");\r\n });\r\n\r\n$(\".search-form__input.tt-input\").on(\"input\", function (obj, value) {\r\n if ($(this).val().length > 2) {\r\n $(\".search-overlay\").addClass(\"green-overlay\");\r\n } else {\r\n $(\".search-overlay\").removeClass(\"green-overlay\");\r\n }\r\n});\r\n//$(formSearchField).typeahead(options, datasetOptions);\r\n\r\n//$(formSearchField).typeahead(options, datasetOptions).on(\"typeahead:close\", function (obj, value) {\r\n// $(\".search-overlay\").removeClass(\"green-overlay\");\r\n//});\r\n\r\n/*Post clicked search result to OPW statistics in Umbraco*/\r\nvar searchResultItem = \".search-result\";\r\n\r\n$(searchResultItem)\r\n .find(\"a\")\r\n .on(\"click\", function () {\r\n var nodeId = $(this)\r\n .parents(searchResultItem)\r\n .first()\r\n .find(\".search-result-nodeid\")\r\n .val();\r\n var path = $(this)\r\n .parents(searchResultItem)\r\n .first()\r\n .find(\".search-result-path\")\r\n .val();\r\n var hostname = window.location.hostname;\r\n var searchword = $(this)\r\n .parents(searchResultItem)\r\n .first()\r\n .find(\".search-result-searchword\")\r\n .val();\r\n\r\n var dataToPost = {\r\n NodeId: nodeId,\r\n Searchword: searchword,\r\n Hostname: hostname,\r\n Path: path,\r\n };\r\n\r\n $.ajax({\r\n url: \"/Umbraco/api/SearchStatisticApi/Post\",\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: dataToPost,\r\n });\r\n // return false;\r\n });\r\n\r\nvar searchFilterParameters = {\r\n query: undefined,\r\n dateFrom: undefined,\r\n dateTo: undefined,\r\n type: undefined,\r\n};\r\n\r\n//Functions that we use arround the code\r\nvar searchFilterFunctions = {\r\n getParameterByName: function (name) {\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n results = regex.exec(location.search);\r\n return results == null\r\n ? \"\"\r\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n },\r\n\r\n convertDateToCorrectFormat: function (date) {\r\n var endFullDate = new Date(date);\r\n var endTwoDigitMonth = endFullDate.getMonth() + 1 + \"\";\r\n if (endTwoDigitMonth.length == 1) endTwoDigitMonth = \"0\" + endTwoDigitMonth;\r\n var endTwoDigitDate = endFullDate.getDate() + \"\";\r\n if (endTwoDigitDate.length == 1) endTwoDigitDate = \"0\" + endTwoDigitDate;\r\n var finalDate =\r\n endFullDate.getFullYear() +\r\n \"-\" +\r\n endTwoDigitMonth +\r\n \"-\" +\r\n endTwoDigitDate;\r\n\r\n return finalDate;\r\n },\r\n\r\n //Update the querystring in the url and push the current state to History\r\n updateParmsAndState: function () {\r\n var querystring =\r\n \"?q=\" +\r\n encodeURIComponent(searchFilterParameters.query) +\r\n \"&type=\" +\r\n searchFilterParameters.type +\r\n \"&dateFrom=\" +\r\n searchFilterParameters.dateFrom +\r\n \"&dateTo=\" +\r\n searchFilterParameters.dateTo;\r\n\r\n //We use History.js to keep the states of the search and push the querystring\r\n History.pushState(\r\n {\r\n query: searchFilterParameters.query,\r\n dateFrom: searchFilterParameters.dateFrom,\r\n dateTo: searchFilterParameters.dateTo,\r\n type: searchFilterParameters.type,\r\n },\r\n \"SearchFilter\",\r\n querystring\r\n );\r\n },\r\n};\r\n\r\nvar searchFilter = {\r\n //Init the search filter and gather data from the querystring or the current History state\r\n init: function ($container) {\r\n var historyData = History.getState().data;\r\n\r\n searchFilterParameters = {\r\n query:\r\n historyData.query !== undefined\r\n ? historyData.query\r\n : searchFilterFunctions.getParameterByName(\"q\"),\r\n type:\r\n historyData.type !== undefined\r\n ? historyData.type\r\n : searchFilterFunctions.getParameterByName(\"type\"),\r\n dateFrom: historyData.dateFrom,\r\n dateTo: historyData.dateTo,\r\n };\r\n\r\n //Set default type\r\n if (\r\n searchFilterParameters.type === undefined ||\r\n searchFilterParameters.type === \"\"\r\n ) {\r\n searchFilterParameters.type = \"publishdate\";\r\n }\r\n\r\n if (searchFilterParameters.dateFrom === undefined) {\r\n searchFilterParameters.dateFrom =\r\n searchFilterFunctions.getParameterByName(\"dateFrom\") !== \"\"\r\n ? searchFilterFunctions.getParameterByName(\"dateFrom\")\r\n : undefined;\r\n }\r\n\r\n //If \"dateTo\" is undefined and there is nothing in the querystring, set current date.\r\n if (\r\n searchFilterParameters.dateTo === undefined ||\r\n searchFilterParameters.dateTo === \"\"\r\n ) {\r\n searchFilterParameters.dateTo =\r\n searchFilterFunctions.getParameterByName(\"dateTo\") !== \"\"\r\n ? searchFilterFunctions.getParameterByName(\"dateTo\")\r\n : searchFilterFunctions.convertDateToCorrectFormat(new Date());\r\n }\r\n\r\n searchFilter.setTypeOnRadioButtons($container);\r\n searchFilter.initDatepickers();\r\n },\r\n\r\n //Set checked based on the \"searchFilterParameters.type\"\r\n setTypeOnRadioButtons: function ($container) {\r\n var $radios = $container.find(\"input:radio\");\r\n\r\n $radios\r\n .filter(\"[value=\" + searchFilterParameters.type + \"]\")\r\n .prop(\"checked\", true);\r\n },\r\n\r\n //Init the datepickers\r\n initDatepickers: function () {\r\n var currentDate = new Date();\r\n var startDefaultDate =\r\n searchFilterParameters.dateFrom !== undefined\r\n ? searchFilterParameters.dateFrom\r\n : searchFilterFunctions.convertDateToCorrectFormat(currentDate);\r\n var endDefaultDate =\r\n searchFilterParameters.dateFrom !== undefined\r\n ? searchFilterParameters.dateTo\r\n : searchFilterFunctions.convertDateToCorrectFormat(currentDate);\r\n var dateFormat = \"yy-mm-dd\";\r\n var dayNames = [\r\n \"Søndag\",\r\n \"Mandag\",\r\n \"Tirsdag\",\r\n \"Onsdag\",\r\n \"Torsdag\",\r\n \"Fredag\",\r\n \"Lørdag\",\r\n ];\r\n var dayNamesMin = [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\"];\r\n var dayNamesShort = [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"];\r\n var monthNames = [\r\n \"Januar\",\r\n \"Februar\",\r\n \"Marts\",\r\n \"April\",\r\n \"Maj\",\r\n \"Juni\",\r\n \"Juli\",\r\n \"August\",\r\n \"September\",\r\n \"Oktober\",\r\n \"November\",\r\n \"December\",\r\n ];\r\n var monthNamesShort = [\r\n \"Jan\",\r\n \"Feb\",\r\n \"Mar\",\r\n \"Apr\",\r\n \"Maj\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Aug\",\r\n \"Sep\",\r\n \"Okt\",\r\n \"Nov\",\r\n \"Dec\",\r\n ];\r\n\r\n $(\"#filterdate-from\").datepicker({\r\n firstDay: 1,\r\n dateFormat: dateFormat,\r\n dayNames: dayNames,\r\n dayNamesMin: dayNamesMin,\r\n dayNamesShort: dayNamesShort,\r\n monthNames: monthNames,\r\n monthNamesShort: monthNamesShort,\r\n defaultDate: startDefaultDate,\r\n maxDate: 0,\r\n onSelect: function (dateText, inst) {\r\n searchFilterParameters.dateFrom = dateText; //the date as string\r\n },\r\n });\r\n $(\"#filterdate-from\").datepicker(\r\n \"setDate\",\r\n searchFilterParameters.dateFrom\r\n );\r\n\r\n $(\"#filterdate-to\").datepicker({\r\n firstDay: 1,\r\n dateFormat: dateFormat,\r\n dayNames: dayNames,\r\n dayNamesMin: dayNamesMin,\r\n dayNamesShort: dayNamesShort,\r\n monthNames: monthNames,\r\n monthNamesShort: monthNamesShort,\r\n defaultDate: endDefaultDate,\r\n maxDate: 0,\r\n onSelect: function (dateText, inst) {\r\n searchFilterParameters.dateTo = dateText; //the date as string\r\n },\r\n });\r\n $(\"#filterdate-to\").datepicker(\"setDate\", endDefaultDate);\r\n },\r\n\r\n //Change type when a radio is clicked\r\n changeType: function (self) {\r\n var value = $(self).val();\r\n searchFilterParameters.type = value;\r\n },\r\n\r\n //Submit the search filter\r\n submitSearch: function ($container, $self) {\r\n if ($container.valid()) {\r\n $self.text(\"Tilføjer...\");\r\n searchFilterFunctions.updateParmsAndState();\r\n\r\n //Reload the page\r\n location.reload();\r\n }\r\n },\r\n\r\n //Reset the search filter\r\n resertSearch: function ($self) {\r\n $self.text(\"Nulstiller...\");\r\n searchFilterParameters.type = \"\";\r\n searchFilterParameters.dateFrom = \"\";\r\n searchFilterParameters.dateTo = \"\";\r\n\r\n searchFilterFunctions.updateParmsAndState();\r\n\r\n //Reload the page\r\n location.reload();\r\n },\r\n};\r\n\r\n//Page ready - Init the search filter\r\n$(function () {\r\n var $container = $(\".search-filter--date\");\r\n\r\n if ($container.length) {\r\n $container.validate();\r\n\r\n jQuery.extend(jQuery.validator.messages, {\r\n required: \"*\",\r\n });\r\n\r\n //Init the search filter\r\n searchFilter.init($container);\r\n\r\n $(\".search-filter__type\").on(\"change\", function () {\r\n searchFilter.changeType($(this));\r\n });\r\n\r\n $(\".search-filter__submit\").on(\"click\", function () {\r\n searchFilter.submitSearch($container, $(this));\r\n });\r\n\r\n $(\".search-filter__reset\").on(\"click\", function () {\r\n searchFilter.resertSearch($(this));\r\n });\r\n }\r\n});\r\n","function initNavSlideshow($navSlider, $navFor) {\r\n //Find more settings here: http://kenwheeler.github.io/slick/\r\n\r\n $navFor.slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: false,\r\n fade: true,\r\n asNavFor: $navSlider,\r\n swipe: false\r\n });\r\n\r\n $navSlider.slick({\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n asNavFor: $navFor,\r\n dots: false,\r\n focusOnSelect: true,\r\n arrows: false\r\n });\r\n\r\n $('.mobile-slider-nav .next').click(function () {\r\n $(this).parent().closest('.slider-grid').find('.slider-nav').slick('slickNext');\r\n });\r\n\r\n}\r\n\r\nfunction setInitialActive(container) {\r\n container.find(\".slider-grid__tab-link:first\")\r\n .addClass('slider-grid__tab-link--active').attr('aria-selected', 'true');\r\n\r\n container.find(\".slider-grid__tab-content:first\")\r\n .addClass('slider-grid__tab-content--active');\r\n}\r\n\r\nfunction targtTabs(tab) {\r\n tab.click(function () {\r\n var tab_id = $(this).attr('data-tab');\r\n var sliderGrid = $(this).parent().closest('.slider-grid');\r\n currentTabs = $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-link');\r\n currentContent = $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-content');\r\n\r\n currentTabs.removeClass('slider-grid__tab-link--active').attr('aria-selected', 'false');\r\n currentContent.removeClass('slider-grid__tab-content--active');\r\n\r\n $(this).addClass('slider-grid__tab-link--active').attr('aria-selected', 'true');\r\n $(sliderGrid).find(\"#\" + tab_id).addClass('slider-grid__tab-content--active');\r\n });\r\n}\r\n\r\nfunction gotToNextSlide() {\r\n $('.fixed-desktop-nav .slider-grid__go-to-next').click(function () {\r\n var lastTab;\r\n var sliderGrid = $(this).parent().closest('.slider-grid');\r\n var navigationTabs = $(sliderGrid).find('.slider-grid__tab-link');\r\n if (navigationTabs.length > 0) {\r\n\r\n navigationTabs.each(function () {\r\n lastTab = $(this);\r\n });\r\n\r\n var selected = $(sliderGrid).find(\".fixed-desktop-nav .slider-grid__tabs-container div[aria-selected=true]\"),\r\n nextTab = selected.next(),\r\n nextTab_id = nextTab.attr('data-tab');\r\n\r\n if (selected[0].dataset.tab === lastTab[0].dataset.tab) { //if it's last tab, go to first one\r\n\r\n $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-link:last').attr('aria-selected', 'false').removeClass('slider-grid__tab-link--active');\r\n $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-link:first').attr('aria-selected', 'true').addClass('slider-grid__tab-link--active');\r\n\r\n $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-content:last').removeClass('slider-grid__tab-content--active');\r\n $(sliderGrid).find('.fixed-desktop-nav .slider-grid__tab-content:first').addClass('slider-grid__tab-content--active');\r\n\r\n } else {\r\n selected.attr('aria-selected', 'false').removeClass('slider-grid__tab-link--active')\r\n .next().attr('aria-selected', 'true').addClass('slider-grid__tab-link--active');\r\n\r\n $(sliderGrid).find(\".fixed-desktop-nav .slider-grid__tab-content\").removeClass('slider-grid__tab-content--active');\r\n $(sliderGrid).find(\"#\" + nextTab_id).addClass('slider-grid__tab-content--active');\r\n }\r\n }\r\n });\r\n}\r\n\r\n$(function () {\r\n $('.slider-grid').each(function () {\r\n var sliderNav = $(this).find('.slider-nav');\r\n var sliderFor = $(this).find('.slider-for');\r\n\r\n initNavSlideshow(sliderNav, sliderFor); //slick init on mobile TODO: Why do we initialize slider for mobile only, seems wrong\r\n });\r\n\r\n setInitialActive($('.fixed-desktop-nav'));\r\n targtTabs($('.fixed-desktop-nav .slider-grid__tab-link'));\r\n gotToNextSlide();\r\n\r\n});\r\n\r\n","// uncomment file and delete components/site-subscribe/site-subscribe.js when no need in using of local module Newsletter (Skive commune use it)\r\n\r\n//var subscribeOptions = {\r\n// existingTagSubscriptionIds: undefined,\r\n// existingTagSubscriptionForm: \"\",\r\n// selectorId: \"subscribe\",\r\n// triggerClass: \"subscribe__toggle\",\r\n// submitClass: \"subscribe__submit\",\r\n// contentClass: \"subscribe__content\",\r\n// selector: \"\",\r\n// newTagSubscriptionsForm: \"\",\r\n// form: \"\",\r\n// button: \"\",\r\n// formValidationFeedbackMessage: \"\",\r\n// formNotification: \"\",\r\n// successContainer: \".subscribe-success\",\r\n// existContainer: \".subscribe-warning\",\r\n// errorContainer: \".subscribe-error\",\r\n// unsubContainer: \".subscribe-wasremoved\",\r\n// init: function () {\r\n// this.existingTagSubscriptionIds = $(\"#existingTagSubscriptionIds\").val();\r\n// this.existingTagSubscriptionForm = $(\"#editTagSubscriptionForm\");\r\n// this.selector = $(\"#\" + this.selectorId);\r\n// this.trigger = $(\".\" + this.triggerClass);\r\n// this.submit = $(\".\" + this.submitClass);\r\n// this.content = $(this.selector).find(\".\" + this.contentClass);\r\n// this.newTagSubscriptionsForm = $(\"#newTagSubscriptionForm\");\r\n// this.form = $(this.selector).find(\"form\");\r\n// this.button = $(this.selector).find(\"button\");\r\n// this.formValidationFeedbackMessage = $(\"#formValidationFeedbackMessage\");\r\n// this.formNotification = $(this.selector).find(\".form-notification\");\r\n// }\r\n//};\r\n\r\n//var subscribeHandler = {\r\n// initSubscribe: function (e) {\r\n\r\n// e.preventDefault();\r\n// $(subscribeOptions.button).prop(\"disabled\", true);\r\n\r\n// subscribeHandler.createNewSubscription(e);\r\n// },\r\n\r\n// createNewSubscription: function () {\r\n// loadingHandler.show();\r\n// var subscribedTagIds = this.gatherSubscribedTagIds();\r\n\r\n// var nodeId = $(subscribeOptions.newTagSubscriptionsForm).find(\"#nodeId\")[0].value,\r\n// email = $(subscribeOptions.newTagSubscriptionsForm).find(\"#subscriberEmail\")[0].value;\r\n\r\n// var url = $(subscribeOptions.newTagSubscriptionsForm).attr(\"action\");\r\n// $.ajax({\r\n// type: \"POST\",\r\n// url: url,\r\n// data: {\r\n// nodeId: nodeId,\r\n// subscriberName: \"sub\",\r\n// subscriberEmail: email,\r\n// tagsIds: subscribedTagIds\r\n// },\r\n// success: function (e) {\r\n// if (e) {\r\n// subscribeHandler.responseHandler(e);\r\n// } else {\r\n// subscribeHandler.responseHandler(e);\r\n// }\r\n// },\r\n// error: function () {\r\n// subscribeHandler.responseHandler(null);\r\n// }\r\n// });\r\n// },\r\n// updateSubscriberData: function (e, shouldUnsubscribe) {\r\n// e.preventDefault();\r\n\r\n// if (shouldUnsubscribe) {\r\n// var prompt = confirm(\"\\u00d8nsker du en komplet opsigelse af abonnement p\\u00e5 nyhedsbrevet?\");\r\n// if (!prompt)\r\n// return;\r\n// }\r\n// else {\r\n// // Validate for cases where user only wants to update, not unsub completely\r\n// if (!subscribeHandler.validateStateOk()) {\r\n// return;\r\n// }\r\n// }\r\n\r\n// loadingHandler.show();\r\n\r\n// // Data\r\n// var subscribedTagIds = this.gatherSubscribedTagIds();\r\n// var nodeId = $(subscribeOptions.existingTagSubscriptionForm).find(\"#nodeId\")[0].value;\r\n// var subscriberEmail = $(subscribeOptions.existingTagSubscriptionForm).find(\"#subscriberEmail\")[0].value;\r\n// var subscriberId = $(subscribeOptions.existingTagSubscriptionForm).find(\"#subscriberId\")[0].value;\r\n// var secretKey = $(subscribeOptions.existingTagSubscriptionForm).find(\"#givenSecret\")[0].value;\r\n\r\n// var url = $(subscribeOptions.existingTagSubscriptionForm).attr(\"action\");\r\n\r\n// $.ajax({\r\n// type: \"POST\",\r\n// url: url,\r\n// data: {\r\n// nodeId: nodeId,\r\n// subscriberId: +subscriberId,\r\n// subscriberEmail: subscriberEmail,\r\n// tagIds: subscribedTagIds,\r\n// secretKey: secretKey,\r\n// shouldRemoveSubscription: shouldUnsubscribe\r\n// },\r\n// success: function (e) {\r\n// if (e) {\r\n// subscribeHandler.responseHandler(e);\r\n// } else {\r\n// subscribeHandler.responseHandler(e);\r\n// }\r\n// },\r\n// error: function () {\r\n// subscribeHandler.responseHandler(null);\r\n// }\r\n// });\r\n// },\r\n// gatherSubscribedTagIds: function () {\r\n// var tagCheckboxElements = $(\"#subscriptionTagsSelection\").find(\"input[name='subscriptionTags']:checked\");\r\n\r\n// var arrayOfChosenTagIds = [];\r\n// for (var i = 0; i < tagCheckboxElements.length; i++) {\r\n// arrayOfChosenTagIds.push(tagCheckboxElements[i].value);\r\n// }\r\n\r\n// var joined = arrayOfChosenTagIds.join(\",\");\r\n\r\n// return joined;\r\n// },\r\n// responseHandler: function (status) {\r\n\r\n// var formElement = $(subscribeOptions.selector).find(\"form\");\r\n// $(formElement).hide();\r\n\r\n// $(subscribeOptions.formNotification).find(\"div\").hide();\r\n\r\n// if (status == 12) {\r\n// $(subscribeOptions.newTagSubscriptionsForm).slideUp(400);\r\n// $(subscribeOptions.formNotification).find(subscribeOptions.unsubContainer).fadeIn(300);\r\n// } else if (status == \"valid\" || status == 3) {\r\n// $(subscribeOptions.newTagSubscriptionsForm).slideUp(400);\r\n// $(subscribeOptions.formNotification).find(subscribeOptions.successContainer).fadeIn(300);\r\n// } else if (status == \"alreadyExist\" || status == 1) {\r\n// $(subscribeOptions.button).prop(\"disabled\", false);\r\n// $(subscribeOptions.formNotification).find(subscribeOptions.existContainer).fadeIn(300);\r\n// } else {\r\n// $(subscribeOptions.button).prop(\"disabled\", false);\r\n// $(subscribeOptions.formNotification).find(subscribeOptions.errorContainer).fadeIn(300);\r\n// }\r\n\r\n// loadingHandler.hide();\r\n// },\r\n\r\n// validateStateOk: function () {\r\n// var subscribedTagIds = subscribeHandler.gatherSubscribedTagIds();\r\n\r\n// if (!subscribedTagIds) {\r\n// $(subscribeOptions.formValidationFeedbackMessage).show();\r\n\r\n// if ($(\"#editSubscriptionButton\").length > 0) {\r\n// $(\"#editSubscriptionButton\").attr(\"disabled\", \"disabled\"); // Disable update button\r\n// }\r\n\r\n// return false;\r\n// }\r\n// else {\r\n// $(subscribeOptions.formValidationFeedbackMessage).hide();\r\n\r\n// if ($(\"#editSubscriptionButton\").length > 0) {\r\n// $(\"#editSubscriptionButton\").attr(\"disabled\", null); // Reeanble update button\r\n// }\r\n\r\n// return true;\r\n// }\r\n// },\r\n//};\r\n\r\n//var openCloseHandler = {\r\n\r\n// openCloseToggle: function () {\r\n// var isActive = $(subscribeOptions.content).hasClass(\"active\");\r\n// var validationStateIsOk = subscribeHandler.validateStateOk();\r\n\r\n// if (!isActive && validationStateIsOk) {\r\n// openCloseHandler.openSubscribe();\r\n// } else {\r\n// openCloseHandler.closeSubscribe();\r\n// }\r\n// },\r\n\r\n// openSubscribe: function () {\r\n// $(subscribeOptions.trigger).addClass(\"active\");\r\n// $(subscribeOptions.content).addClass(\"active\");\r\n// $('.subscribe__overlay').addClass(\"active\");\r\n// },\r\n\r\n// closeSubscribe: function () {\r\n// $(subscribeOptions.trigger).removeClass(\"active\");\r\n// $(subscribeOptions.content).removeClass(\"active\");\r\n// $('.subscribe__overlay').removeClass(\"active\");\r\n// }\r\n//};\r\n\r\n//var loadingHandler = {\r\n\r\n// show: function () {\r\n// $(\"#subscribe\").hide();\r\n// $(\"#subscribeLoader\").show();\r\n// },\r\n\r\n// hide: function () {\r\n// $(\"#subscribe\").show();\r\n// $(\"#subscribeLoader\").hide();\r\n// }\r\n//};\r\n\r\n\r\n//var selectionHandler = {\r\n\r\n// toggleAllSelected: function (originCheckbox) {\r\n// var originCheckboxElement = $(originCheckbox);\r\n// var originCheckboxElementIsChecked = originCheckboxElement[0].checked;\r\n// var inputsToCheck = $(originCheckboxElement).parents(\".subscriptionTagSection\").find(\"input[name='subscriptionTags']\");\r\n\r\n// if (originCheckboxElementIsChecked) {\r\n// $.each(inputsToCheck, function (index) {\r\n// this.checked = true;\r\n// });\r\n\r\n// // selectionHandler.autoSelectTypesWhenSelectingFirstZipcode();\r\n// } else {\r\n// $.each(inputsToCheck, function (index) {\r\n// this.checked = false;\r\n// });\r\n// }\r\n// },\r\n\r\n// handleCheckedStatus: function (eventElement) {\r\n// var checkAllElement = $(eventElement).parents(\".subscriptionTagSection\").find(\"input[name*='showAll_']\")[0];\r\n// var allBelongingInputs = $(eventElement).parents(\".subscriptionTagSection\").find(\"input[name*='subscriptionTags']\");\r\n\r\n// var amountChecked = 0;\r\n// $.each(allBelongingInputs, function (index) {\r\n// if (this.checked === true) amountChecked++;\r\n// });\r\n\r\n// if (amountChecked === allBelongingInputs.length) {\r\n// // All are checked\r\n// checkAllElement.checked = true;\r\n// }\r\n// else {\r\n// // NOT all are checked\r\n// checkAllElement.checked = false;\r\n// }\r\n// },\r\n\r\n// getAllSelectedFromSection: function (sectionSelector) {\r\n// var inputsToCheck = $(sectionSelector).find(\"input[name='subscriptionTags']:checked\");\r\n\r\n// return inputsToCheck;\r\n// },\r\n\r\n// autoSelectTypesWhenSelectingFirstZipcode: function () {\r\n// var allTypeElements = $(\".sectionTypes input[name*='subscriptionTags\");\r\n// var totalChecked = 0;\r\n// for (var i = 0; i < allTypeElements.length; i++) {\r\n// if (allTypeElements[i].checked === false)\r\n// totalChecked++;\r\n// }\r\n// var noneSelected = (totalChecked === allTypeElements.length);\r\n// if (noneSelected) {\r\n// for (var y = 0; y < allTypeElements.length; y++) {\r\n// allTypeElements[y].checked = true;\r\n// selectionHandler.handleCheckedStatus(allTypeElements[y]);\r\n// }\r\n// }\r\n// },\r\n\r\n// // When editing an existing subscription, mark checkboxes in UI for the tags they've already signed up for\r\n// selectExistingSubscriptions: function (collectionOfTagIds) {\r\n// var collectionOfTagIdsArray = collectionOfTagIds.split(\",\");\r\n// if (collectionOfTagIdsArray.length > 0) {\r\n// for (var i = 0; i < collectionOfTagIdsArray.length; i++) {\r\n// var currentCheckboxElementId = $(\"#subscriptionTag_\" + collectionOfTagIdsArray[i]);\r\n\r\n// if ($(currentCheckboxElementId)[0]) {\r\n// $(currentCheckboxElementId)[0].checked = true;\r\n// }\r\n// }\r\n// }\r\n\r\n// loadingHandler.hide();\r\n// }\r\n//};\r\n\r\n\r\n//$(function () {\r\n\r\n// console.log(\"Booting handlers...\");\r\n\r\n// loadingHandler.show();\r\n\r\n// subscribeOptions.init();\r\n\r\n// /**\r\n// * If existing tagIds are loaded (edit subscription mode), let's preselect them in the UI.\r\n// */\r\n\r\n// if (subscribeOptions.existingTagSubscriptionIds) {\r\n// console.log(\"subscribeOptionseditTagSubscriptionIds\", subscribeOptions.existingTagSubscriptionIds);\r\n// selectionHandler.selectExistingSubscriptions(subscribeOptions.existingTagSubscriptionIds);\r\n// }\r\n\r\n// /**\r\n// * Events\r\n// */\r\n\r\n// $(\".\" + subscribeOptions.triggerClass).on(\"click\", function (e) {\r\n// e.preventDefault();\r\n// openCloseHandler.openCloseToggle(e);\r\n// });\r\n\r\n// $('.subscribe__overlay, .subscribe__close').on(\"click\", function () {\r\n// $(subscribeOptions.trigger).trigger(\"click\");\r\n// });\r\n\r\n// // Checkbox: Toggle select all\r\n// $(\"input[name*='showAll_']\").on(\"click\", function () {\r\n// selectionHandler.toggleAllSelected(this);\r\n// subscribeHandler.validateStateOk();\r\n// });\r\n\r\n// // Checkbox: Update checked status of the \"showall\" input according to children checkboxes\r\n// $(\"input[name*='subscriptionTags']\").on(\"change\", function () {\r\n// selectionHandler.handleCheckedStatus(this);\r\n// subscribeHandler.validateStateOk();\r\n// });\r\n\r\n// // Checkbox: Whenever first \"Postnummer\" is clicked on a (freshly loaded) signup page, make sure to tick all \"Types\" (Høringer/Afgørelser)\r\n// $(\".sectionZipcodes input[name*='subscriptionTags'] , #showAll_categories_zipCodes\").on(\"change\", function () {\r\n// if ($(this)[0].checked === true) {\r\n// selectionHandler.autoSelectTypesWhenSelectingFirstZipcode();\r\n// }\r\n// });\r\n\r\n// // Submit: New subscription\r\n// if ($(subscribeOptions.newTagSubscriptionsForm).length > 0) {\r\n// $(subscribeOptions.newTagSubscriptionsForm).on(\"submit\", function (e) {\r\n// if (subscribeOptions.newTagSubscriptionsForm.valid()) {\r\n// subscribeHandler.initSubscribe(e);\r\n// }\r\n// });\r\n// }\r\n\r\n\r\n// // Submit: Update an existing subscription\r\n// if ($(subscribeOptions.existingTagSubscriptionForm).length > 0) {\r\n// $(subscribeOptions.existingTagSubscriptionForm).on(\"submit\", function (e) {\r\n// if (subscribeOptions.existingTagSubscriptionForm.valid()) {\r\n// subscribeHandler.updateSubscriberData(e, false);\r\n// }\r\n// });\r\n// }\r\n\r\n// // Submit: Update an existing subscription\r\n// $(\"#removeSubscription\").on(\"click\", function (e) {\r\n// if (subscribeOptions.existingTagSubscriptionForm.valid()) {\r\n// subscribeHandler.updateSubscriberData(e, true);\r\n// }\r\n// });\r\n\r\n// loadingHandler.hide();\r\n//});","$(\".video_img\").on(\"click\", function (evt) {\r\n let current = $(this);\r\n\r\n let wrapper = current.closest(\".wrapper-play-button\");\r\n wrapper.removeClass(\"wrapper-play-button\");\r\n wrapper.addClass(\"wrapper\");\r\n\r\n wrapper.siblings(\".centered\").hide();\r\n\r\n current.hide();\r\n let iframe = current.siblings(\"iframe\");\r\n\r\n if (iframe.length) {\r\n const src = iframe.data(\"src\");\r\n iframe.attr(\"src\", src);\r\n iframe.show();\r\n }\r\n});\r\n"],"sourceRoot":"/source/"}