{"version":3,"sources":["plugins/service.js","tivoli.js","tivoli.basket.js","tivoli.checkboxes.js","tivoli.content-spinner.js","tivoli.content.youtube.js","tivoli.context-navigation.js","tivoli.cookie-disclaimer.js","tivoli.cookies.js","tivoli.dropdowns.js","tivoli.filter.js","tivoli.frontpage.js","tivoli.globalStates.js","tivoli.iframe.js","tivoli.lightbox.js","tivoli.map.js","tivoli.navigation.js","tivoli.printProgram.js","tivoli.product.js","tivoli.program.js","tivoli.radiobuttons.js","tivoli.restriction-modal.js","tivoli.search.js","tivoli.tooltip.js","tivoli.tracking.js","tivoli.upload.js","tivoli.youtube.js","plugins/lazyload.js","_accordion.js","_annual-report.js","_box-module-interactions.js","_box-module.js","_box-sorting-module.js","_button.js","_contact.js","_custom-form.js","_datepicker.js","_delivery.js","_easter-competition.js","_education.js","_errorPopup.js","_expandable-list.js","_formbase.js","_image_comparison.js","_map.js","_marquee.js","_newsletter-sticky.js","_newsletter.js","_page-tabs.js","_parallaxtop.js","_pass.js","_payment-receiver.js","_press.js","_promotion.js","_restaurants.js","_share-facebook.js","_share-page.js","_share-twitter.js","_show-feedback.js","_shows.js","_simpletabs.js","_tek.js","_tek_event_sign_up.js","_validation.js","_vertigo-gif-image-collect.js","_vertigo-gif-image-stack.js","_vertigo-gif-kiosk.js","halloween17/_main.js"],"names":["Service","options","this","self","cnt","defaultOptions","actions","$","extend","invoke","url","parameters","callback","sync","ajax","data","JSON","stringify","type","contentType","success","fail","Tivoli","browserDetectors","isBrowser","IOS7","$html","addClass","Safari","vars","isAnyTouchDevice","Android","iPad","iPhone","IE10","IE","EDGE","init","$window","smartresize","windowWidth","width","windowHeight","height","fontLoadTest","setGlobalScrolledClass","windowScrolled","scrollTop","setScrolledClass","scrolled","removeClass","on","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","setTimeout","apply","WebFont","load","custom","families","active","document","trigger","screenWidth","screen","screenHeight","window","screenMaxWidth","Math","max","settings","small","littlemedium","medium","large","xlarge","nav","animation","timing","mobileThreshold","tabletThreshold","devicePixelRatio","scrollChecker","scrollTimeout","isTouch","Modernizr","touchevents","isMobileDevice","navigator","userAgent","search","test","Chrome","Firefox","Opera","match","toLowerCase","indexOf","toString","String","prototype","endsWith","suffix","length","ready","getUrlParameterByName","name","replace","results","RegExp","exec","location","decodeURIComponent","getUrlParameterByNameInsensitive","getCurrentItemPath","itemPath","TivoliData","getCurrentLanguage","language","getGeneralErrorMessage","generalErrorMessage","Shop","Basket","reload","firstLoad","setupChangeQuantity","setupRemoveOrderLine","setupBuyProduct","setupMembershipDiscountHandling","validateTicketsOnHold","validation","forceInit","each","chooseNewQuantity","newQuantity","oldQuantity","minValue","maxValue","decrementer","incrementer","chooser","val","startValue","chosenQuantity","changeQuantityTimer","changeQuantity","quantityContainer","find","parseInt","keypress","e","which","blur","orderLine","parents","id","handleGoogleAnalyticsEvents","callServerAndUpdateBasket","orderLineId","currentItemPath","trackingUpdate","productName","productId","quantityChange","Tracking","pushDigitalDataCartQuantityUpdate","err","preventDefault","product","quantity","form","setLoadingState","basketView","BasketView","replaceWith","buyButton","loader","CircleLoader","loadInitial","traditional","dataType","error","reset","Success","loadFinish","href","attr","showBasketNotifications","ErrorMessage","message","html","show","hash","append","remove","action","dto","onSuccess","onError","console","log","basketContainer","addToBasket","gaQuantity","googleAnalyticsProducts","gaMainProduct","price","category","push","parentId","relatedProducts","index","value","quantityLockedToParent","relatedQuantity","gaRelatedProduct","googleAnalyticsAddToBasketEvent","googleAnalyticsRemoveFromBasketEvent","products","dataLayer","event","ecommerce","add","actionField","list","dimension4","checkboxes","not","customCheckbox","fn","clickHandler","input","prop","closest","change","checkbox","after","siblings","parent","stopPropagation","contentSpinner","jsContentSpinner","$contentSpinnerToggle","activeClass","Youtube","YoutubePlayer","Player","container","playerButtonElementClass","videoId","enableYoutubeVideo","target","disableYoutubeVideo","boxPlayer","switchClass","iframe","element","handleResponse","response","showSuccess","Message","showErrors","showWarnings","contextNavigation","$contextNavTrigger","triggerContextNav","watchForMenuChanges","mqSmall","openContextNav","toggleContextNav","toggleClass","$contextNav","hasClass","closeContextNav","$siteContainer","contextNavHeight","outerHeight","css","margin-top","CookieDisclaimer","disableCookieDisclaimer","cookie","set","removeEventListener","stickyScroll","pageYOffset","cookieSeen","Cookies","cookieDisclaimer","querySelector","$restrictionModal","calcHeight","disclaimer","get","ageRestrictionApproval","addEventListener","openCookieDisclaimer","cname","cvalue","exhours","d","Date","setTime","getTime","expires","toUTCString","ca","split","i","c","charAt","substring","dropdowns","selects","selectric","arrowButtonMarkup","disableOnMobile","onInit","lookForDropDownImages","setSelect","select","selectricItems","option","eq","imageRef","undefined","removeEmptyValues","emptyIndex","hide","ele","selectricButton","selectedOption","selectedImage","Filter","emitFilterSearchFinishedEvent","fields","$filterContainer","$filterSelector","ajaxFilters","ajaxTabs","dropDownFilters","sliderFilters","checkFilters","textFilters","$filterResult","loaded","datepickerInitialized","registeredFilterControls","saveFilterSelection","tab","filterValue","$element","assignFilterValue","dataset","objectData","p","hasOwnProperty","getFilterSelectionFromQueryString","elements","splice","join","filterElement","initFilterSelection","refreshParameterControls","getFilterSelection","attribute","is","filter","pageTabs","initTabSelection","dataSelectedMax","dataSelectedMin","clearFilters","ajaxMethods","initAjaxFilters","section","ajaxContent","serializedForm","serialize","postOnFilterChange","updateFilterResult","result","changeTab","newPageId","changeContent","content","empty","activeTabName","currentActiveForm","Extended","CurrentCount","LazyLoading","LazyLoad","accordion","tabName","filters","SlideFilters","CheckFilters","DropDownFilters","TextFilters","TabName","FilterId","Value","ValueMin","ValueMax","dateToUtcString","date","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","toISOString","range","daterangepicker","from","start","end","setDate","to","Period","StartDate","EndDate","startSearch","endSearch","a","b","showError","Frontpage","selector","heroSections","video","image","videoLink","globalStates","tivoli","resizeIframeOnChange","lastHeight","curHeight","setInterval","contentWindow","body","offsetHeight","Lightbox","elementArrayLength","activeLightBoxElement","lightbox","lightboxContent","header","menu","startBounds","selectorEvent","lightboxGroupAttribute","headerSelector","menuSelector","maxContentSize","headerHeight","iconCloseHeight","menuWidth","isMobile","currentWidth","currentHeight","currentScrollTop","elementArray","lightBoxCreated","isActive","scrollContainer","lightboxes","setWindowProperties","elementToPush","Array","insertLightBox","onResize","updateNextButton","updatePrevButton","keydown","keyCode","hideLightBox","activateLightBox","setContentBounds","touch","getFixedDimensions","item","clientWidth","clientHeight","left","offset","top","checkVideoCookieAndInsert","insertImage","getElementNumber","src","elementNumber","key","info","checkYoutubeCookieConsent","services","UC_UI","getServicesBaseInfo","service","consent","status","lightboxItem","shouldUpdateIframe","shouldUpdateImage","insertIFrame","headline","description","button","cookieComplienceObj","imgContent","firstImgChildSrc","cookieComplienceHtml","trim","parse","Headline","Description","ButtonText","DefaultImageUrl","imgText","firstImgChild","first","showFirstLayer","isIframe","update","title","contentClass","showImage","isLoaded","img","isSmallDevice","lightBoxItem","lightBoxText","iframeContainer","viewportWidth","viewportHeight","scale","heightRatio","widthRatio","x","y","removeAttr","Location","Map","map","overlay","zoom","minZoom","maxZoom","center","streetViewControl","panControl","zoomControl","mapTypeControl","imageOverlay","setMapPostionCenter","bounds","contains","getCenter","lng","lat","maxX","getNorthEast","maxY","minX","getSouthWest","minY","setCenter","google","maps","LatLng","marker","Marker","position","mapTextLatitude","mapTextLongitude","cursor","setIcon","markerIconUrl","setMap","addListener","GroundOverlay","tivoliMapUrl","overlayBounds","onAdd","div","createElement","style","border","borderWidth","image_","appendChild","div_","getPanes","mapPane","draw","overlayProjection","getProjection","sw","fromLatLngToDivPixel","bounds_","ne","onRemove","parentNode","removeChild","visibility","toggle","toggleDOM","getMap","map_","navigation","printProgram","$printDayProgramBtn","setClickEvent","printListener","setData","getProgramDate","$elem","dateString","moment","toDate","programDate","unsetDate","one","printProgramPage","digitalDataProgramPrint","format","print","Product","toggleOption","unwrap","wrap","handleDateButton","handleBuyProduct","handleQuantitySelectionForRelatedProducts","handleChooseSubProduct","dateButton","productLink","productQuantity","onChange","handleChange","selectionStr","selection","relProd","ddl","andSelf","mainProduct","createProductObject","$product","dom","subTitles","selectedId","gaName","gaId","gaCategory","gaPrice","gaDetailView","productRequiresDate","datespecificBuyButton","quantitySelector","buttonState","errorTimeout","buyContainer","mainProd","googleAnalyticsProdutPage","removeErrorMessage","requestData","CurrentItemPath","MainProduct","ProductId","Quantity","mainProductDatePicker","mainProductDate","datepicker","dateUtil","formatLocalDate","RelatedProducts","relatedProduct","showFailureIcon","ButtonMessage","showErrorMessage","loadingEnded","showSuccessIcon","BasketUrl","fadeIn","removeMessage","fadeOut","detailView","program","$events","programLinks","programName","digitalDataProgramClick","radiobuttons","customRadiobutton","radioButton","RestrictionModal","outputModal","$container","$buttonDecline","$buttonApprove","setRestrictionCookie","closeRescrictionModal","openSearchModal","closeSearchModal","focus","handleKeyPress","pushDigitalData","digitalDataSearch","CludoSearch","totalDocuments","params","query","close","tooltip","classToggleTouch","tooltipMessageContainer","prepend","loadConsent","addCrossDomainTracking","urlParams","URLSearchParams","myParam","referrer","CookieInformation","declineAllCategories","getConsentGivenFor","loadAllTrackingProducts","promotionalTracking","promotionalClickTracking","heroClickTracking","ariaLabel","textLabel","text","trackingDataAttribute","cta_button","initalRun","visitor","Visitor","getInstance","adobe_mcoid","overwriteCrossDomainMCIDAndAID","adobe_domains","domain","outboudLinks","jQuery","j","link","currentURL","appendVisitorIDsTo","appear","promoView","promotions","creative","digitalDataPromotionInview","off","force_appear","$trackingElm","promoClick","digitalDataPromotionClick","gaProducts","detailViewPage","gaProduct","handleGoogleAnalyticsDetailViewEvent","detail","initDigitalDataArray","digitalData","interaction","label","pushDigitalDataCartAdd","updates","addProducts","ol","productInfo","productCategory","productType","sku","color","size","variant","pushDigitalDataCartRemove","removeProducts","onsiteSearchTerm","onsiteSearchResults","day","component","updated","updatedCopy","added","removed","rmv","upload","initializeMoxieUpload","click","open","$form","texts","uploadButton","alert","valid","startProgress","uploader","z-index","uploadInProgress","loadingText","postForm","request","createFormRequest","showApplicationFormReceipt","uploadComplete","uploadError","errorText","uploadSucces","clearForm","plupload","Uploader","runtimes","browse_button","chunk_size","unique_names","multipart","multi_selection","dragdrop","resize","quality","flash_swf_url","silverlight_xap_url","max_file_size","mime_types","extensions","preinit","Init","up","UploadFile","file","PostInit","Browse","StateChanged","UploadProgress","total","percent","FilesAdded","files","FileUploaded","filepath","FilePath","UploadComplete","Error","player","autoplay","controls","autohide","loop","mute","rel","iv_load_policy","showinfo","cc_load_policy","onPlayerStateChange","YT","PlayerState","ENDED","play","onPlayerStateReady","playVideo","playerContainer","onYouTubeIframeAPIReady","playerVars","events","onReady","onStateChange","playerIsActive","stop","stopVideo","pause","pauseVideo","imgMaxWidth","imgs","bgImages","unveil","CalculateImageWidth","elem","maxWidth","maxWidthBeforeDensity","widthDesktopInPercent","widthTabletInPercent","widthMobileInPercent","fixedWidth","pixelDensity","imageMaxWidth","imageMaxHeight","widthFromPercent","bestWidth","min","imgWidth","ceil","CalculateImageExtension","bestWidthInRightDensity","resizeParams","squared","isSquared","w","h","extension","param","threshold","isBackgroundImages","inview","images","$e","wt","$w","wb","et","th","source","getAttribute","animate","opacity","setAttribute","scroll","Zepto","accordionItems","accordionOpenSingle","resizeOpenAccordion","$accordionTrigger","unbind","accordionAnim","itemHead","accordionBody","accordionBodyInner","bodyHeight","thisAccordianItem","mediumBreakPoint","openAccordions","openAccordionBody","notOpenAccordions","countUp","startVal","endVal","decimals","duration","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","timeToCall","useEasing","useGrouping","separator","decimal","prefix","getElementById","Number","countDown","startTime","timestamp","remaining","frameVal","rAF","dec","pow","version","printValue","isNaN","formatNumber","tagName","textContent","innerHTML","easeOutExpo","t","count","progress","round","resume","nStr","toFixed","x1","x2","rgx","annualreport","plusButton","expanderId","countUpCallBack","entrance","$allAppearedElements","arr","numArray","getMaxOfArray","visitorCalculator","turnover","setLabels","breakpoint","allSeasons","ages","setIsMobile","breakpointMobile","isSmallMobile","breakpointSmallMobile","setAges","setup","agesData","needMobileMode","largestText","ags","outer","ageSections","totalColWidth","age","col","inner","pointerTop","pointerMiddle","pointerBottom","desc","textMeasurer","textW","pTop","pMiddle","pBottom","pullLeft","overflow","toMove","moveTop","last","floor","descLeft","pTopLeft","pMiddleLeft","pBottomLeft","pBottomWidth","cW","largestValue","k","marginLeft","segments","setColumn","columns","percentPixels","showInnerLimit","showInner","outerValue","innerValue","handleIconBox","isTouchDevice","box","evt","minLeft","numSegments","maxLeft","className","recommend","drawCircle","currentElem","counterElem","numberOfSteps","circle","angle","outerRow","interval","radians","PI","cos","sin","clearInterval","boxModuleInteractions","windowChange","boxInfoToggle","boxClickExtension","boxInit","teaserBox","infoLink","$boxContent","$boxImage","contentHeight","isAnyTouch","hideBoxTeaserInfo","hideBoxInfo","boxHoveringCall","boxInfoToggleControl","showBoxTeaserInfo","showBoxInfo","boxControls","hideBoxExtension","boxBody","gradient","boxHeader","animHeight","boxImg","minHeight","maxHeight","slideDown","transition","slideUp","boxLinkTrigger","showBoxExtension","$this","boxExtension","listHeight","boxModule","callSwiper","swiperSettings","swiper","reInitSwiper","$swiper","$swipeBox","reInit","SixBySixWide","slidesPerView","slidesPerGroup","centeredSlides","offsetSlidesBefore","offsetSlidesAfter","touchRatio","SixBySix","FiveByFiveWide","FiveByFive","FourByFourWide","FourByFour","ThreeByThreeWide","ThreeByThree","TwoByTwoWide","TwoByTwoWideNoOffset","TwoByTwo","OneByOne","autoResize","slidesPerViewFit","killTouch","MQWidth","currentMQSize","getMQSize","topBoxSwiper","fullTimeSwiperInit","allFulltimeSwipers","setSwiper","newMQSize","xLargeBreak","largeBreak","mediumBreak","littleMediumBreak","smallBreak","swiperContainer","dontCalcHeight","wrapperClass","slideClass","reallyDontCalculateHeight","createPagination","paginationClickable","pagination","paginationAsRange","roundLengths","onTouchEnd","swipeBegun","onSlideChangeStart","onSwiperCreated","fullTimeSwiper","fulltimeBoxSwiper","Swiper","productSwiperWideContainer","fiveByFiveSwiperContainer","sixBySixSwiperContainer","productSwiper","fiveByFiveSwiper","sixBySixSwiper","standardSwiper","$swiperContainer","swiperItemLength","slideControl","initTopBoxSwiper","topBoxSwiperSettings","swiperInited","boxSwiper","$swiperHead","boxHeadSwiper","swiperBoxHeadSetting","headSlideNum","destroySlideControl","destroy","$swiperBoxHead","$headSlides","swiperPositionCallback","swipeTo","activeIndex","onSlideChangeEnd","onCreated","calculateHeight","swiperHead","onSlideClick","clickedSlide","clickedSlideIndex","slidePerGroup","totalSlides","slides","activeSlide","prev","next","swipePrev","swipeNext","hideInactivePagination","wholeSlides","$pagination","activeCount","slice","FilterSorting","allTabs","allFilters","insertQuotes","contentContainer","allContentItems","noResultsView","currentTab","currentFilterSelection","currentContentItems","currentTabGridSetting","openFilterMobile","filterSelection","activeFilter","animateIn","quotes","actives","noResults","$elements","TweenMax","autoAlpha","onComplete","setBoxSizes","gridType","display","filterGroup","$tab","$filters","outputString","bindHandlers","parseFilters","$currentFilter","synchronizeFilters","currentFilter","identicalFilters","ranges","$range","rangeFilter","searchData","rangeActive","$dropdown","$buttons","check","applyFilters","boxes","selectedFilter","quote","clone","boxSortingContainer","quotePosition","quoteArray","sort","random","originalLength","randomQuote","shift","before","sorter","largeBoxPattern","largeItems","smallBoxPattern","smallItems","clearBoxPattern","clearItems","l","pullBoxPattern","pullItems","$openFilter","$hideFilter","overlayAttribute","fromTo","setRangeSearch","selectedMax","selectedMin","maxRange","minRange","step","noUiSlider","margin","connect","behaviour","wNumb","Link","milliSecondsShown","addMessage","showMessage","isError","errorClass","showMessageDefault","showErrorMessageDefault","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","hideButtonTextToggle","$circleLoader","hideText","hideClass","loadToPercent","toPercent","animationTime","pathRight","pathLeft","loaderStates","clearQueue","abs","fullCircleAnimationTime","deg","now","paintLoadToPercent","easing","complete","getCircleArea","isRight","fromDegree","toDegree","innerRadius","svgCircleRadius","svgCircleThichness","a1","a2","a3","a4","Contact","NewsletterSignup","submit","newslettersignup","FirstName","LastName","Email","urls","NEWSLETTER_SUBMIT","Succes","customForm","handleCustomFormPost","formContainer","RedirectUrl","parseDate","parts","dif","pad","num","norm","tzo","formatLocalDateShort","formatLocalDateShortInverted","datePickerControls","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","yearSuffix","setDefaults","dateRangePicker","datePicker","closeDatePicker","datePickerAreas","mouseup","has","handleDateRestriction","noWeekends","datesStr","restrictDates","minFromStr","maxToStr","minDate","maxDate","beforeShowDay","noWeekend","testDate","handleEducationRanges","availableDates","OpenDates","originalItem","onSelect","education","getEducationTimes","datePickerInput","datePickerArea","datePickerSettings","dateRangeOptions","initialText","datepickerOptions","numberOfMonths","showOtherMonths","selectOtherMonths","presetRanges","handleDateRangeUrlParameters","queryFromDate","queryToDate","altField","altFormat","delivery","formIdPrefix","handleAlternativeBillingAddress","handleBillingAddress","handlePayment","handleFormPost","handleDeliveryLinkBack","preventCopyPaste","handleMitTivoliEditClick","handleApiPrefetch","initLoad","handleEanRequired","handleUserId","deliveryCheckbox","deliveryAddressContainer","setVisibilityForDeliveryInfo","setPaymentVisibility","saveCreditCardInput","toggleSaveCreditCardContainer","toggleCreditCardContainer","toggleInvoiceContainer","toggleMobilePayContainer","saveCreditCardContainer","creditCardContainer","invoiceContainer","showHideUserId","mobilePayContainer","eanNumber","eanIsrequired","setEanNumberRequired","selectedValue","formPrefixId","eanisRequired","isRequired","togglePlaceholderRequired","calcRules","userId","userIdValidation","placeholder","hasRequirement","pushGaCheckoutTrackingEvent","PaymentError","basketType","$emailField","handleMitTivoliEdit","emailValue","post","email","paymentMethod","checkout","paaskekonkurrence","$easterForm","formValidationHandling","setupEasterInputMask","inputmask","mask","easterPermissionContainer","$confirmTxtHasPerm","$confirmTxtNoPerm","HasPermission","handleEducationConfirm","lastForm","view","cache","handleEducationSignup","outerContainer","confirmationContainer","Form","EducationDate","handleNewsletterSignupGradeInterests","handleTivoliGardenSignup","handleEducationDateSelected","times","$select","CrmId","StartTime","handleEducationNewsletterSignup","GradeGroupChecked","showHideId","dateInput","dates","ErrorPopup","removeAlert","buttonText","buttonAction","expandableList","rows","expandBtn","rowContainer","showNext10","indexCount","formBase","handleLoader","successText","pureRedirect","handleInputRegexWarnings","re","warningMessage","imageComparison","switchCompareImage","compareImage","manchet","beforeImg","afterImg","imageComparisonTitle","imageComparisonManchet","imageComparisonAfter","imageComparisonBefore","drags","dragElement","resizeElement","startX","pageX","originalEvent","touches","dragWidth","outerWidth","posX","containerOffset","containerWidth","moveX","leftValue","widthValue","cur","fullmap","loadMap","cultureInfo","getScript","when","Deferred","deferred","resolve","done","setupFullMap","setupSimpleMap","currentPosition","getBaseContainers","createSimpleMap","styleMap","getLocations","setOptions","tabsContainer","loaderContainer","mapFooter","createMap","handleTabs","handleShowMoreButton","handleFullScreen","handleZooming","getPosition","scrollOverflowContainer","innerContainer","myOptions","defaultZoomLevel","draggable","minZoomLevel","maxZoomLevel","MapTypeId","ROADMAP","disableDoubleClickZoom","scrollwheel","disableDefaultUI","m","featureType","elementType","stylers","tabs","startTab","getTab","buttonContainer","dataContainer","itemIds","common","clearMap","createMarker","Latitude","Longitude","renderContent","showAll","itemId","searchStart","searchEnd","loc","addContentRow","setZoom","includeInfobox","simpleMarker","clickable","locationData","setZIndex","setMarkerIcon","markers","hasLink","Url","linkTagType","pixelOffset","Size","iconHeight","boxOptions","Title","disableAutoPan","isHidden","boxStyle","closeBoxURL","pane","enableEventPropagation","infobox","InfoBox","infoboxes","currentMarker","closeInfoBox","currentInfoBox","largestUsedZIndex","ListItem","geoMarker","GeolocationMarker","setCircleOptions","fillColor","fillOpacity","myposBtn","zoomInBtn","zoomOutBtn","getZoom","fullScreenToggle","fullScreenClose","innerContainerHeight","menuHeight","tabsHeight","mapFooterHeight","currentPos","neededPos","animateTimePos","fullScreenAnimationTimePerPx","neededHeight","animateTimeHeight","animateTime","refreshMap","scrollContainerOverflow","clearContent","includeInfoboxes","closeAllInfoBoxes","makeMarkersInactive","ActiveMarker","InactiveMarker","marquee","$menuTitleAnimArea","navWidth","pagePadding","delay","initNavigationMarquee","menuTitleWidth","$item","animateFrom","animationTiming","lengthOfAnimation","ease","Power1","easeOut","animateBack","menuTitleAnimWidth","$titleItem","updateVars","$itemToAnimate","TestMenuForMarquee","destroyNavigationMarquee","killTweensOf","clearProps","marqueeInit","resetMarquee","newsletterSticky","initStickyButton","stickyButton","stickyContainer","scrollArea","scrollWrapper","openOverlay","closeOverlay","stickyClose","stickyClassButtonMinified","stickyClassOpen","stickyClassOverlayActive","stickyClassActive","setNewsletterCookie","newsletterStickyCookie","newsletter","newsletterInterestInfoToggle","parentInterest","handleNewsletterSignup","successDiv","errorDiv","alreadyCreatedDiv","AlreadySignedUp","ChangeSettingsUrl","handleNewsletterEdit","buttons","loaders","ExternalId","ContactId","VisualId","interests","interestsIsSelected","Topics","setupInterests","isSelected","mitTivoliInterests","setSelected","definitionId","profileId","endpoint","Succeeded","handleNewsletterResubscribe","Interest","unSubscripteEditInterestsButtonSetup","editButton","editButtonUrl","initTabFiltering","pageTab","pageTabNav","activePageIndex","tabSection","history","obj","Page","pushState","prevPageIndex","changePage","initTabs","hideInactivePages","inActivePages","tabPages","selectedTabPage","children","filterClass","currentElement","currentPageElements","allTabPages","allTabPagesContent","staggerTo","initTabInteractionBase","pageTabBaseFilter","setMenuSize","tabContainer","totalWidth","checkArrows","currentIndex","getSize","tabItems","menuStartOffset","offsetWidth","initEvents","canMoveLeft","slide","right","canMoveRight","menuOffset","currentOffset","checkLeftArrow","checkRightArrow","tabNavBase","filterTab","parallaxtop","$promotion","$teasers","setBackgroundColors","$wrapper","prefixed","animateElements","setupValues","updatePage","windowPosition","setAllElements","promotionBgColor","setScrollTops","prevScrollTop","scrollAnim","oldScrollPos","$content","transform","$pattern","scaleRatio","$background","$contentSibling","Pass","initPassLookup","initPassForm","initPassPopupForm","initPassRenewForm","toogleMitTivoli","initPassActiveEmptyForm","initServicePermissionForm","containerLookup","additionalVerificationContainer","toggleAdditionalVerificationFirstName","handleLookupPost","enable","additionalVerificationFirstName","containerForm","handlePassRenewInputs","handlePassFormPost","handlePassImage","containerPopupForm","handlePassPopupFormPost","initFormWithQueryString","getValidator","FormErrors","AlertMessage","Body","ButtonHref","popUp","isMitTivoli","eventInfo","openPassRenewFormFields","formError","kind","renewPassChangedValues","ShowPermissionPopup","mitTivoliPassword","checked","passFormInfo","passFormInput","passFormAffectedCards","passFormInfoLabel","passFormHidden","passForm","emptyPassForm","handleServicePermissionFormPost","paymentReceiver","getstatus","timer","setupPaymentReceiver","press","promotion","_","restaurantName","ShareFacebook","shareFacebookButton","subject","fbAppId","FB","appId","xfbml","ui","method","picture","sharePage","sharePageButton","shareId","containerToExpand","ShareTwitter","shareTwitterButton","escape","showFeedback","callFeedbackSwiper","handleFeedbackPost","handleFeedbackDropdownComment","feedbackSwiperSettings","XLarge","Large","Medium","Small","feedBackSwiperInit","allfeedBackSwipers","setfeedBackSwiper","speed","autoHeight","feedbackSwiper","feedbackControl","setButtonWidth","boxItemWidth","handleErrors","questionIndex","errorIndex","$commentInput","numberOfOptions","shows","userReviewRate","stupidOverlay","fadeButton","buttonToHide","openHeight","min-height","castOverlay","userReviewStarWidth","GetURLParameter","sParam","sURLVariables","sParameterName","userReviewSetStars","mouseenter","starNum","mouseleave","star","simpletabs","tekForm","handleEnter","handleBtbLogin","handleTekLogin","handleDeleteImage","dummySrc","tekEventSignUp","addVipRequiredCheck","validator","addMethod","anySelected","handleSignUpForm","getParticipantsQuantity","participants","guestQuantityDdl","tekMemberCheckboxes","checkMaxParticipants","maxParticipants","warning","warningBox","guestQuantity","guestContainers","guestContainer","rules","viprequired","messages","submitPressed","validate","guestNames","tekMembers","handleEdit","customSerializeArray","getCheckBoxes","containerOrSelf","s","serializeArray","setupValidation","forms","validationForm","validators","addMultiCheckboxRule","addEanNumberRule","addValidDate3DdlRule","addRegExRule","nameValueToObject","modifyFormCollapsingDatePicker3Ddls","modifyFormAddFileData","CurrentItemUrl","formRenderingId","FormRenderingId","submitHandler","onForceValidation","anyErrors","errorKey","modifyFormUncollapseDatePicker3Ddls","errorMap","errorList","defaultShowErrors","showFirstDatePicker3DdlError","errorPlacement","ignore","focusInvalid","invalidHandler","theValidator","numberOfInvalids","errorElem","selectWrapper","pos","validated","$input","requiredMessage","required","dependsOn","sameAs","equalTo","sameAsError","eannumber","multiCheckbox","maxLength","maxlength","maxLengthError","minLength","minlength","minLengthError","customContains","customRegex1","customContains3","customRegex2","customRegex3","regexStr","regex","date3ddl","mOxie","Env","swf_url","FileReader","ip","FileInput","onchange","handleFileChange","reader","ev","nameValueArray","nv","handleMultiCheckBoxErrorMessage","errorMsg","fileInputs","fileData","getResult","sizeError","legalFileExtension","accept","pop","onloadend","readAsDataURL","hideErrorMessage","sizeErr","wrongFileTypeError","month","year","date3DdlContainer","labels","firstAlreadyFound","Object","call","v","values","cs","digit","ruleName","regexp","optional","VertigoGifCollect","vertigoGifContainer","getImageByCode","keepImage","imgCode","loadImage","imgSource","videoSource","naturalWidth","stopImmediatePropagation","imageCode","errorCode","imageUrl","externalCode","ExternalCode","ContentType","VertigoGif","initStack","getLatesImages","enableErorrMsg","loadNewImages","isTweening","swipeStack","ts","clientX","te","changedTouches","swipeRight","TimelineLite","direction","Quad","easeInOut","startImage","image1","image2","getNextImage","image3","image4","image5","zIndex","VertigoKiosk","vertigoKioskGifContainer","enableErrorMsg","removeErrorMsg","imgContainer","Campiagn","Halloween17","$video","$stopButton","videoPreload","stopHauntingMe","handleHorrorVideo","$button","inTheHauntedLoop","restartVideoTo","startOfTheEnd","handleContentEffect","adf","ClickTrack","ontimeupdate","currentTime","currentVideoTime","hauntedLoopTime","endLoopTime","time"],"mappings":"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","file":"responsive-main-e8f929de3064ab348d34d39f750b7be3.js","sourcesContent":["function Service(options) {\r\n    this.self = this;\r\n    self.cnt = null;\r\n    var defaultOptions = {\r\n        'actions': {}\r\n    };\r\n\r\n    this.options = $.extend(defaultOptions, options);\r\n\r\n    this.invoke = function (url, parameters, callback, sync) {\r\n        $.ajax({\r\n            data: JSON.stringify(parameters),\r\n            type: 'POST',\r\n            contentType: \"application/json; charset=utf-8\",\r\n            url: url,\r\n            success: function (data) {\r\n                callback(data);\r\n            },\r\n            fail: function (data) {\r\n\r\n            }\r\n        });\r\n    };\r\n}\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli = (function () {\r\n    var screenWidth = screen.width,\r\n        screenHeight = screen.height,\r\n        $window = $(window),\r\n\t\t$html = $('html'),\r\n        screenMaxWidth = Math.max(screenWidth, screenHeight);\r\n\r\n    var settings = {\r\n\t\t\twidth: {\r\n\t\t\t\t\tsmall: 640,\r\n\t\t\t\t\tlittlemedium: 850,\r\n\t\t\t\t\tmedium: 1024,\r\n\t\t\t\t\tlarge: 1200,\r\n\t\t\t\t\txlarge: 1580\r\n\t\t\t},\r\n\t\t\tnav: {\r\n\t\t\t\twidth: 256\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\t\t\ttiming: 400\r\n\t\t\t}\r\n    };\r\n    \r\n    var vars = {\r\n        mobileThreshold: settings.width.small, // if you change this, you must change mobile-landscape-width in _variables.scss\r\n        tabletThreshold: settings.width.medium, // same as above\r\n        screenWidth: screenWidth,\r\n        screenHeight: screenHeight,\r\n        screenMaxWidth: Math.max(screenWidth, screenHeight),\r\n        windowWidth: $window.width(),\r\n        windowHeight: $window.height(),\r\n        devicePixelRatio: \"devicePixelRatio\" in window ? devicePixelRatio : 1,\r\n        scrollChecker: null, \r\n        scrollTimeout: null,\r\n        isTouch: Modernizr.touchevents,\r\n        isMobileDevice: Modernizr.touchevents && screenMaxWidth < settings.width.small,\r\n        isAnyTouchDevice: Modernizr.touchevents && screenMaxWidth < settings.width.medium,\r\n    };\r\n\r\n\tvar isBrowser = {\r\n\t\tIE: function() {\r\n\t\t    return navigator.userAgent.search(\"MSIE\") >= 0 || navigator.userAgent.search(\"Trident\") >= 0;\r\n\t\t},\r\n\t\tEDGE: function() {\r\n\t\t\treturn /Edge\\/\\d./i.test(navigator.userAgent);\r\n\t\t},\r\n\t\tIE10: function() {\r\n\t\t\treturn navigator.userAgent.search(\"MSIE\") >= 0 && navigator.userAgent.search(\"MSIE 10.0\");\r\n\t\t},\r\n\t\tChrome: function() {\r\n\t\t\treturn navigator.userAgent.search(\"Chrome\") >= 0;\r\n\t\t},\r\n\t\tFirefox: function() {\r\n\t\t\treturn navigator.userAgent.search(\"Firefox\") >= 0;\r\n\t\t},\r\n\t\tSafari: function() {\r\n\t\t\treturn navigator.userAgent.search(\"Safari\") >= 0 && navigator.userAgent.search(\"Chrome\") < 0;\r\n\t\t},\r\n\t\tOpera: function() {\r\n\t\t\treturn navigator.userAgent.search(\"Opera\") >= 0;\r\n\t\t},\r\n\t\tIOS7: function() {\r\n\t\t\treturn navigator.userAgent.search(/(iPad|iPhone);.*CPU.*OS 7_\\d/i) >= 0;\r\n\t\t},\r\n\t\tiPhone: function() {\r\n\t\t\treturn navigator.userAgent.match(/iPhone/i) != null;\r\n\t\t},\r\n\t\tiPad: function() {\r\n\t\t\treturn navigator.userAgent.match(/iPad/i) != null;\r\n\t\t},\r\n\t\tAndroid: function() {\r\n\t\t\treturn navigator.userAgent.toLowerCase().indexOf(\"android\") > -1;\r\n\t\t},\r\n\t\ttoString: function() {\r\n\t\t\treturn navigator.userAgent;\r\n\t\t}\r\n\t};\r\n\r\n\tfunction browserDetectors() {\r\n\t\tif(isBrowser.IOS7()) {\r\n\t\t\t$html.addClass('IOS7');\r\n\t\t}\r\n\t\tif(isBrowser.Safari()) {\r\n\t\t\t$html.addClass('safari');\r\n\t\t}\r\n\t\tif(vars.isAnyTouchDevice) {\r\n\t\t\t$html.addClass('touch-device');\r\n\t\t}\r\n\t\tif(isBrowser.Android()) {\r\n\t\t\t$html.addClass('android');\r\n\t\t}\r\n\t\tif(isBrowser.iPad()) {\r\n\t\t\t$html.addClass('ipad');\r\n\t\t}\r\n\t\tif(isBrowser.iPhone()) {\r\n\t\t\t$html.addClass('iphone');\r\n\t\t}\r\n\t\tif(isBrowser.IE10()) {\r\n\t\t\t$html.addClass('lt-ie11');\r\n\t\t}\r\n\t\tif(isBrowser.IE()) {\r\n\t\t\t$html.addClass('ie-modern');\r\n\t\t}\r\n\t\tif(isBrowser.EDGE()) {\r\n\t\t\t$html.addClass('ms-edge');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction init() {\r\n\r\n\t\t$window.smartresize(function () {\r\n\t\t\tvars.windowWidth = $window.width();\r\n\t\t\tvars.windowHeight = $window.height();\r\n\t\t});\r\n\r\n\t\tbrowserDetectors();\r\n\t\tfontLoadTest();\r\n\t\tsetGlobalScrolledClass();\r\n\t}\r\n\r\n\tfunction setGlobalScrolledClass() {\r\n\t\tvar windowScrolled = $window.scrollTop() > 0;\r\n\t\tvar setScrolledClass = function(scrolled) {\r\n\t\t\tif (scrolled) {\r\n\t\t\t\t$html.addClass(\"content--scrolled\");\r\n\t\t\t} else {\r\n\t\t\t\t$html.removeClass(\"content--scrolled\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tsetScrolledClass(windowScrolled);\r\n\r\n\t\t$window.on(\"scroll\", debounce(function() {\r\n\t\t\twindowScrolled = $window.scrollTop() > 0;\r\n\t\t\tsetScrolledClass(windowScrolled);\r\n\t\t}, 50));\r\n\t}\r\n    \r\n\tfunction getUrlParameterByNameInsensitive(name) {\r\n\t    name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\t    name = name.toLowerCase();\r\n\t    var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n            results = regex.exec(location.search.toLowerCase());\r\n\t    return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n\t}\r\n\r\n\tfunction getUrlParameterByName(name) {\r\n\t    name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\t    var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n            results = regex.exec(location.search);\r\n\t    return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n\t}\r\n    \r\n    function getCurrentItemPath() {\r\n        var itemPath = \"/\";\r\n\r\n        if (TivoliData && TivoliData.itemPath) {\r\n            itemPath = TivoliData.itemPath;\r\n        }\r\n        return itemPath;\r\n    }\r\n    \r\n    function getCurrentLanguage() {\r\n        var language = \"en\";\r\n        if (TivoliData && TivoliData.language) {\r\n            language = TivoliData.language;\r\n        }\r\n        return language;\r\n    }\r\n    \r\n    function getGeneralErrorMessage() {\r\n        var generalErrorMessage = \"Error\";\r\n\r\n        if (TivoliData && TivoliData.generalErrorMessage) {\r\n            generalErrorMessage = TivoliData.generalErrorMessage;\r\n        }\r\n\r\n        return generalErrorMessage;\r\n    }\r\n    \r\n    String.prototype.endsWith = function (suffix) {\r\n        return this.indexOf(suffix, this.length - suffix.length) !== -1;\r\n    };\r\n\r\n\tfunction debounce(func, wait, immediate) {\r\n\t\tvar timeout;\r\n\t\treturn function() {\r\n\t\t\tvar context = this,\r\n\t\t\t\targs = arguments;\r\n\r\n\t\t\tvar later = function() {\r\n\t\t\t\ttimeout = null;\r\n\t\t\t\tif (!immediate) func.apply(context, args);\r\n\t\t\t};\r\n\t\t\tvar callNow = immediate && !timeout;\r\n\t\t\tclearTimeout(timeout);\r\n\t\t\ttimeout = setTimeout(later, wait);\r\n\t\t\tif (callNow) func.apply(context, args);\r\n\t\t};\r\n\t}\r\n\r\n\tfunction fontLoadTest() {\r\n\t\tWebFont.load({\r\n\t\t\tcustom: {\r\n\t\t\t\tfamilies: ['Domain-Display-Black', 'Knockout 28 A', 'Knockout 48 A', 'PT Serif']\r\n\t\t\t},\r\n\t\t\tactive: function() {\r\n\t\t\t\t$(document).trigger('allFontsLoaded');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n    \r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n\r\n\treturn {\r\n\t\tinit : init,\r\n\t\tgetUrlParameterByName: getUrlParameterByName,\r\n\t\tgetUrlParameterByNameInsensitive: getUrlParameterByNameInsensitive,\r\n\t\tdebounce: debounce,\r\n\t\tsettings : settings,\r\n\t\tisBrowser: isBrowser,\r\n\t\tvars: vars,\r\n\t\tgetCurrentItemPath: getCurrentItemPath,\r\n\t\tgetCurrentLanguage: getCurrentLanguage,\r\n\t\tgetGeneralErrorMessage: getGeneralErrorMessage\r\n\t};\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.Shop = Tivoli.Shop || {};\r\n\r\nTivoli.Shop.Basket = function () {\r\n\r\n    function init() {\r\n        reload(true);\r\n    }\r\n\r\n    function reload(firstLoad) {\r\n        setupChangeQuantity();\r\n        setupRemoveOrderLine();\r\n        setupBuyProduct();\r\n        setupMembershipDiscountHandling();\r\n        validateTicketsOnHold();\r\n        if(!firstLoad) {\r\n            Tivoli.validation.forceInit($(\".js-basket-membership\"));\r\n        }\r\n    }\r\n\r\n    function setupChangeQuantity() {\r\n        $(\".js-order-line-quantity\").each(function() {\r\n            var quantityContainer = $(this);\r\n\r\n            var chooser = quantityContainer.find(\".js-order-line-quantity-chooser\");\r\n            var decrementer = quantityContainer.find(\".js-order-line-quantity-decrement\");\r\n            var incrementer = quantityContainer.find(\".js-order-line-quantity-increment\");\r\n\r\n            var startValue = parseInt(chooser.val());\r\n            var minValue = quantityContainer.data(\"min\");\r\n            var maxValue = quantityContainer.data(\"max\");\r\n\r\n            var chosenQuantity = startValue;\r\n            var changeQuantityTimer = null;\r\n\r\n            function chooseNewQuantity(newQuantity, oldQuantity) {\r\n\r\n                if (newQuantity < minValue) {\r\n                    newQuantity = minValue;\r\n                }\r\n                if (newQuantity > maxValue) {\r\n                    newQuantity = maxValue;\r\n                }\r\n\r\n                if (newQuantity == minValue) {\r\n                    decrementer.addClass(\"disabled\");\r\n                } else {\r\n                    decrementer.removeClass(\"disabled\");\r\n                }\r\n                if (newQuantity == maxValue) {\r\n                    incrementer.addClass(\"disabled\");\r\n                } else {\r\n                    incrementer.removeClass(\"disabled\");\r\n                }\r\n\r\n                chooser.val(newQuantity);\r\n\r\n                if (newQuantity === startValue) {\r\n                    return;\r\n                }\r\n\r\n                chosenQuantity = newQuantity;\r\n\r\n                // Wait and see if other changes happen, before going to the server\r\n                if (changeQuantityTimer) {\r\n                    clearTimeout(changeQuantityTimer);\r\n                }\r\n\r\n                changeQuantityTimer = setTimeout(function() {\r\n                    changeQuantity(quantityContainer, newQuantity, oldQuantity);\r\n                }, 300);\r\n            }\r\n\r\n            decrementer.on(\"click\", function() {\r\n                chooseNewQuantity(chosenQuantity - 1, startValue);\r\n            });\r\n            incrementer.on(\"click\", function () {\r\n                chooseNewQuantity(chosenQuantity + 1, startValue);\r\n            });\r\n\r\n            chooser.keypress(function (e) {\r\n                if (e.which == 13) {\r\n                    chooser.blur();\r\n                }\r\n            });\r\n            chooser.on(\"blur\", function() {\r\n                chooseNewQuantity(parseInt(chooser.val()), startValue);\r\n            });\r\n        });\r\n    }\r\n\r\n    function changeQuantity(quantityContainer, newQuantity, oldQuantity) {\r\n        var orderLine = quantityContainer.parents(\".js-order-line\");\r\n        if (orderLine.length > 0) {\r\n            var id = orderLine.data(\"id\");\r\n            handleGoogleAnalyticsEvents(orderLine, newQuantity, oldQuantity);\r\n            callServerAndUpdateBasket(\"ChangeOrderLineQuantity\", { orderLineId: id, newQuantity: newQuantity, currentItemPath: Tivoli.getCurrentItemPath() }, null, null);\r\n            try{\r\n                var trackingUpdate = {\r\n                    productName : orderLine.data('ga-product-name'),\r\n                    productId : orderLine.data('ga-product-id'),\r\n                    quantityChange: newQuantity-oldQuantity\r\n                }\r\n                Tivoli.Shop.Tracking.pushDigitalDataCartQuantityUpdate([trackingUpdate]);\r\n            }catch(err){}\r\n        }\r\n    }\r\n\r\n    function setupRemoveOrderLine() {\r\n        $(\".js-order-line-remove\").on(\"click\", function() {\r\n            var orderLine = $(this).parents(\".js-order-line\");\r\n\r\n            if (orderLine.length > 0) {\r\n                var id = orderLine.data(\"id\");\r\n                \r\n                var chooserValue = parseInt(orderLine.find(\".js-order-line-quantity-chooser\").val());\r\n                handleGoogleAnalyticsEvents(orderLine, 0, chooserValue);\r\n                callServerAndUpdateBasket(\"RemoveOrderLine\", { orderLineId: id, currentItemPath: Tivoli.getCurrentItemPath() }, null, null);\r\n            }\r\n        });\r\n    }\r\n\r\n    function setupBuyProduct() {\r\n        $(\".js-basket-buy-button\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n\r\n            var button = $(this);\r\n\r\n            var product = button.parents(\".js-basket-product\");\r\n\r\n            var id = product.data(\"product-id\");\r\n            var quantity = product.data(\"quantity\");\r\n\r\n            callServerAndUpdateBasket(\"BasketBuyProduct\", { productId: id, quantity: quantity, currentItemPath: Tivoli.getCurrentItemPath() }, null, null);\r\n        });\r\n    }\r\n\r\n    function setupMembershipDiscountHandling() {\r\n        var form = $(\".js-basket-membership\");\r\n\r\n        form.on(\"form-success\", function (e, data) {\r\n            setLoadingState(false);\r\n            var basketView = data.BasketView;\r\n            if (basketView) {\r\n                $(\".js-basket-container\").replaceWith(basketView);\r\n                reload();\r\n            }\r\n        });\r\n\r\n        form.on(\"form-error\", function (e, data) {\r\n            setLoadingState(false);\r\n        });\r\n\r\n        form.on(\"form-request\", function () {\r\n            setLoadingState(true);\r\n        });\r\n    }\r\n\r\n\r\n    function validateTicketsOnHold() {\r\n        $(\".js-basket-validate\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            var buyButton = $(this);\r\n            var loader = buyButton.find(\".js-circle-loader\");\r\n            Tivoli.CircleLoader.loadInitial((loader), null);\r\n\r\n            // Add in-progress class to button\r\n            buyButton.addClass('button--in-progress');\r\n\r\n            $.ajax({\r\n                url: \"/WebShop/Basket/ValidateTicketsOnHold\",\r\n                traditional: true,\r\n                dataType: \"json\",\r\n                contentType: \"application/json; charset=utf-8\",\r\n                error: function (err) {\r\n                    Tivoli.CircleLoader.reset(loader);\r\n                },\r\n                success: function (data) {\r\n                    if (data.Success) {\r\n                        Tivoli.CircleLoader.loadFinish(loader, function () {\r\n                            window.location.href = buyButton.attr(\"href\");\r\n                        });\r\n                    } else {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                        reload();\r\n                        showBasketNotifications(data.ErrorMessage);\r\n                    }\r\n                },\r\n                type: 'POST'\r\n            });\r\n        });\r\n    }\r\n\r\n    function showBasketNotifications(message) {\r\n        $(\".shop-notifications span\").html(message);\r\n        $(\".shop-notifications\").show();\r\n        window.location.hash = \"info\";\r\n    }\r\n\r\n    function setLoadingState(show) {\r\n        if (show) {\r\n            $('.large-basket-container .row').addClass('loader-running');\r\n            $('.large-basket-container').append('<div class=\"load-overlay\"></div>');\r\n        } else {\r\n            $('.large-basket-container .row').removeClass('loader-running');\r\n            $('.load-overlay').remove();\r\n        }\r\n    }\r\n\r\n    function callServerAndUpdateBasket(action, dto, onSuccess, onError) {\r\n        setLoadingState(true);\r\n\r\n        $.ajax({\r\n            url: \"/WebShop/Basket/\" + action,\r\n            traditional: true,\r\n            data: JSON.stringify(dto),\r\n            dataType: \"json\",\r\n            contentType: \"application/json; charset=utf-8\",\r\n            error: function (err) {\r\n                setLoadingState(false);\r\n                if (typeof onError === \"function\") {\r\n                    onError(err);\r\n                }\r\n                console.log(err);\r\n            },\r\n            success: function (data) {\r\n                var basketContainer = $(\".js-basket-container\");\r\n                if (basketContainer.length === 0) {\r\n                    if (typeof onError === \"function\") {\r\n                        onError(\"\");\r\n                    }\r\n                }\r\n\r\n                if (typeof onSuccess === \"function\") {\r\n                    // Success method returns markup to reload\r\n                    data = onSuccess(data);\r\n                    if (!data) {\r\n                        setLoadingState(false);\r\n                        return;\r\n                    }\r\n                }\r\n                setLoadingState(false);\r\n                basketContainer.replaceWith(data);\r\n                reload();\r\n            },\r\n            type: 'POST'\r\n        });\r\n    }\r\n\r\n    function handleGoogleAnalyticsEvents(product, newQuantity, oldQuantity) {\r\n        var addToBasket = false;\r\n        if(newQuantity > oldQuantity) {\r\n            gaQuantity = newQuantity - oldQuantity;\r\n            addToBasket = true;\r\n        } else {\r\n            gaQuantity = oldQuantity - newQuantity;\r\n        }\r\n        \r\n        var googleAnalyticsProducts = [];\r\n\r\n        var gaMainProduct = {\r\n            'name' : product.data('ga-product-name'),\r\n            'id' : product.data('ga-product-id'),\r\n            'price': product.data('ga-product-price'),\r\n            'category': product.data('ga-product-category'),\r\n            'quantity': gaQuantity\r\n        }\r\n        googleAnalyticsProducts.push(gaMainProduct);\r\n\r\n        //Find related products on removeOrderline or if quantity is locked to parent\r\n        var parentId = product.data('id-parent');\r\n        if(parentId != \"\") {\r\n            var relatedProducts = $('[data-id-related=\"'+ parentId+ '\"]');\r\n            if(relatedProducts.length > 0) {\r\n                $.each( relatedProducts, function( index, value ){\r\n                    var quantityLockedToParent = $(this).data('quantity-locked-to-parent') == true;\r\n                    if(newQuantity == 0 || quantityLockedToParent) \r\n                    {\r\n                        var relatedQuantity = parseInt($(this).find(\".js-order-line-quantity-chooser\").val());\r\n\r\n                        if(quantityLockedToParent) {\r\n                            relatedQuantity = gaQuantity;\r\n                        }\r\n\r\n                        if(relatedQuantity != 0 ) {\r\n                            var gaRelatedProduct = {\r\n                                'name' : $(this).data('ga-product-name'),\r\n                                'id' : $(this).data('ga-product-id'),\r\n                                'price': $(this).data('ga-product-price'),\r\n                                'category': $(this).data('ga-product-category'),\r\n                                'quantity': relatedQuantity\r\n                            }\r\n                    \r\n                            googleAnalyticsProducts.push(gaRelatedProduct);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        }\r\n\r\n        if(addToBasket) {\r\n            googleAnalyticsAddToBasketEvent(googleAnalyticsProducts);\r\n        } else {\r\n            googleAnalyticsRemoveFromBasketEvent(googleAnalyticsProducts);\r\n        }\r\n        \r\n    }\r\n    \r\n    function googleAnalyticsAddToBasketEvent(products) {\r\n        dataLayer.push({\r\n            event: 'addToCartTivoliDk',\r\n            ecommerce: {\r\n                add: {\r\n                    actionField: {\r\n                        list: 'basketpage', // -> ’produktoversigt’ eller ’produktside’ eller ’kurvsiden’ \r\n                        dimension4: 'Tivoli.dk', // fast værdi -> skelne mellem tivoli.dk og billetlugen etc.\r\n                    },\r\n                    'products':  products\r\n                }\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    function googleAnalyticsRemoveFromBasketEvent(products) {\r\n        dataLayer.push({\r\n            event: 'removeFromCartTivoliDk',\r\n            ecommerce: {\r\n                remove: {\r\n                    actionField: {\r\n                        list: 'basketpage', // -> ’produktoversigt’ eller ’produktside’ eller ’kurvsiden’ \r\n                        dimension4: 'Tivoli.dk', // fast værdi -> skelne mellem tivoli.dk og billetlugen etc.\r\n                    },\r\n                    'products':  products\r\n                }\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        reload: reload\r\n    };\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.checkboxes = function () {\r\n    $.fn.customCheckbox = function() {\r\n        var domElements = '<div><span class=\"unchecked\"></span><span class=\"checked\"></span></div>';\r\n        \r\n        this.each(function() {\r\n\r\n            var checkbox = $(this);\r\n\r\n            checkbox.addClass('custom-checkbox');\r\n            checkbox.after(domElements);\r\n\r\n\r\n            if(checkbox.siblings('div').height() < checkbox.siblings('label').height()) {\r\n                checkbox.parent().addClass('label-overflow');\r\n            };\r\n\r\n            // On click on \"checkbox\" imitator\r\n            checkbox.siblings('div').on('click', function(e) {\r\n                var input = $(this).siblings(':checkbox');\r\n                e.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n                clickHandler(input);\r\n            });\r\n\r\n            // On click on \"checkbox\" / or label\r\n            function clickHandler(input) {\r\n                if (!input.prop('checked')) {\r\n                    input.closest('label').addClass('active');\r\n                    input.prop('checked', true);\r\n\r\n                } else {\r\n                    input.prop('checked', false);\r\n                    input.closest('label').removeClass('active');\r\n                }\r\n                input.change();\r\n            }\r\n\r\n        });\r\n    };\r\n\r\n    function init() {\r\n        // .UICheckbox__input is used in React and therefore excluded here\r\n        $(':checkbox').not('.UICheckbox__input, .preventCustomCheckbox').customCheckbox();\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.contentSpinner = function () {\r\n\r\n\tvar jsContentSpinner = $('.js-content-spinner');\r\n\r\n\tvar activeClass = 'content-spinner__item--active';\r\n\r\n\tvar $contentSpinnerToggle = $('.js-content-spinner-toggle');\r\n\r\n\tfunction init() {\r\n\r\n\t\tif(jsContentSpinner.length <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$contentSpinnerToggle.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar $contentSpinnerSection = $(this).closest('.js-content-spinner');\r\n\r\n\t\t\t$contentSpinnerSection.find('.' + activeClass).removeClass(activeClass).siblings().addClass(activeClass);\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initContentSpinner() {\r\n\t\tjsContentSpinner.each(function() {\r\n\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n}();","var Tivoli = $.extend(Tivoli, {\r\n    Youtube: {}\r\n});\r\n\r\nTivoli.YoutubePlayer = $.extend(Tivoli.Youtube, {\r\n/*\r\n    General youtube player handler, to start and stop a youtube video. \r\n    The player is initialized with a container element, where the video container is included, \r\n    and a option object containing the player element class, to observe from.\r\n*/\r\n\r\n    Player: function (options) {\r\n        var self = this;\r\n\r\n        var cnt = null;\r\n\r\n        var defaultOptions = {};\r\n\r\n        this.options = $.extend(defaultOptions, options);\r\n\r\n        this.init = function (container) {\r\n            cnt = container;\r\n\r\n            cnt.on(\"click\", self.options.playerButtonElementClass, function (e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                var videoId = $(this).attr(\"data-videoId\");\r\n\r\n                if (videoId == \"\") { return; }\r\n\r\n                self.enableYoutubeVideo($(e.target).closest(cnt).find(\".video-player\"), videoId);\r\n\r\n            });\r\n\r\n            $(document).on(\"click\", function (e) {\r\n                self.disableYoutubeVideo($(\".video-player-expanded\"));\r\n            });\r\n\r\n            //append youtube player iframe, and inject videoId\r\n            this.enableYoutubeVideo = function (boxPlayer, videoId) {\r\n                $(boxPlayer).switchClass(\"video-player\", \"video-player-expanded\", 1000, \"easeInOutQuad\");\r\n\r\n                $(boxPlayer).html('<iframe frameborder=\"0\" width=\"100%\" height=\"100%\" src=\"\" allowfullscreen></iframe>');\r\n                var iframe = $(boxPlayer).find(\"iframe\");\r\n                $(iframe).attr(\"src\", ('https://youtube.com/embed/{id}?rel=0&hd=1&autoplay=1&showinfo=0&controls=0').replace(\"{id}\", videoId));\r\n            };\r\n\r\n            //Disable and remove all ongoing iframed videos\r\n            this.disableYoutubeVideo = function (boxPlayer) {\r\n                $(boxPlayer).each(function(index, element) {\r\n                    if ($(element).length > 0) {\r\n                        $(boxPlayer).switchClass(\"video-player-expanded\", \"video-player\", 500, \"easeInOutQuad\", function () {\r\n                            $(boxPlayer).find(\"iframe\").remove();\r\n                        });\r\n                    }\r\n                });\r\n               \r\n            };\r\n\r\n            this.handleResponse = function (response) {\r\n                if (response.Success) {\r\n                    self.showSuccess(response.Message);\r\n                } else {\r\n                    self.showErrors(response.Message);\r\n                }\r\n            };\r\n\r\n            this.showErrors = function (message) { };\r\n\r\n            this.showWarnings = function (message) { };\r\n\r\n            this.showSuccess = function (message) { };\r\n\r\n        };\r\n    },\r\n});\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.contextNavigation = function () {\r\n\tvar $html = $('html'),\r\n\t\t$siteContainer = $('#site-container ');\r\n\t\t$contextNavTrigger = $('.js-context-nav-trigger'),\r\n\t\t$contextNav = $('.js-context-nav');\r\n\r\n \tvar navWidth = Tivoli.settings.nav.width;\r\n\tvar mqSmall = Tivoli.settings.width.small;\r\n\r\n\tvar slideOutRightClass = 'slideout-right-is-active',\r\n\t\tmenuIsActiveClass = 'menu-is-active';\r\n\r\n\tfunction init() {\r\n\t\tif ($contextNavTrigger.length <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttriggerContextNav();\r\n\t\twatchForMenuChanges();\r\n\r\n\t\t// OPEN NAV ON LOAD (if not small)\r\n\t\tif($(window).width() > mqSmall) {\r\n\t\t\topenContextNav();\r\n\t\t\t$contextNavTrigger.addClass('is-active')\r\n\t\t}\r\n\t}\r\n\r\n\tfunction watchForMenuChanges() {\r\n\r\n\t}\r\n\r\n\tfunction triggerContextNav() {\r\n\t\t$contextNavTrigger.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\ttoggleContextNav();\r\n\t\t\t$(this).toggleClass('is-active')\r\n\t\t});\r\n\t}\r\n\r\n\tfunction toggleContextNav() {\r\n\t\tif($contextNav.hasClass('is-active')) {\r\n\t\t\tcloseContextNav();\r\n\t\t} else {\r\n\t\t\topenContextNav();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction closeContextNav() {\r\n\t\t$contextNav.removeClass('is-active'); //.attr('style', '');\r\n\t\t$html.removeClass('context-nav-is-active');\r\n\t\t$siteContainer.attr('style', '');\r\n\t}\r\n\r\n\tfunction openContextNav() {\r\n\t\tvar contextNavHeight = $contextNav.find('section').outerHeight();\r\n\r\n\t\t// ADD CLASS to html\r\n\t\t$html.addClass('context-nav-is-active');\r\n\r\n\t\t// ADD CLASS TO Content Nav and set HEIGHT\r\n\t\t$contextNav.addClass('is-active');//.css('max-height', contextNavHeight);\r\n\r\n\t\t// PUSH FROM TOP WITH MARGIN\r\n\t\t$siteContainer.css({\r\n\t\t\t'margin-top': contextNavHeight + 'px'\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.CookieDisclaimer = (function () {\r\n\r\n    var init = function () {\r\n\r\n        var vars = {\r\n            cookie: Tivoli.Cookies\r\n        };\r\n\r\n        var cookieDisclaimer = document.querySelector('.cookie-disclaimer'),\r\n            $restrictionModal = $('.restriction-modal'),\r\n            cookieHeight = $(cookieDisclaimer).height(),\r\n            headerHeight = 60,\r\n            calcHeight = cookieHeight + headerHeight,\r\n            cookieSeen = false;\r\n\r\n        var disclaimer = vars.cookie.get(\"cookieDisclaimer\");\r\n        var ageRestrictionApproval = vars.cookie.get(\"ageRestrictionApproval\"); // Don't show, if age-restriction is present (this will set cookie-disclaimer).\r\n\r\n        if (disclaimer != \"true\") {\r\n            if (ageRestrictionApproval != \"true\" && $restrictionModal.length > 0) {\r\n                return;\r\n            }\r\n            openCookieDisclaimer();\r\n        }\r\n\r\n        function openCookieDisclaimer() {\r\n            $('.cookie-disclaimer').addClass('cookie-disclaimer--enabled');\r\n\r\n            var $cookieDisclaimerBtn = $('.cookie-disclaimer__close');\r\n            var activated;\r\n\r\n            $cookieDisclaimerBtn.on('click touchstart', function (e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                disableCookieDisclaimer();\r\n            });\r\n\r\n            window.addEventListener('scroll', stickyScroll, false);\r\n        }\r\n\r\n        function disableCookieDisclaimer() {\r\n            $('.cookie-disclaimer').removeClass('cookie-disclaimer--enabled');\r\n            vars.cookie.set(\"cookieDisclaimer\", \"true\", 500);\r\n            window.removeEventListener('scroll', stickyScroll, false);\r\n        }\r\n\r\n        function stickyScroll(e) {\r\n            if (window.pageYOffset > (calcHeight) && cookieSeen) {\r\n                disableCookieDisclaimer();\r\n            }\r\n            if(window.pageYOffset < (calcHeight)){\r\n                cookieSeen = true;\r\n            }\r\n        }  \r\n    };\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.Cookies = (function () {\r\n    var set = function(cname, cvalue, exhours) {\r\n        var d = new Date();\r\n        d.setTime(d.getTime() + (exhours * 3600000));\r\n        var expires = \"expires=\" + d.toUTCString();\r\n        document.cookie = cname + \"=\" + cvalue + \";\" + ((exhours === 0) ? \"\" : (expires + \"; path=/\"));\r\n    };\r\n    var get = function(cname) {\r\n        var name = cname + \"=\";\r\n        var ca = document.cookie.split(';');\r\n        for (var i = 0; i < ca.length; i++) {\r\n            var c = ca[i];\r\n            while (c.charAt(0) == ' ') c = c.substring(1);\r\n            if (c.indexOf(name) == 0)\r\n                return c.substring(name.length, c.length);\r\n        }\r\n        return \"\";\r\n    };\r\n\r\n    return {\r\n        set: set,\r\n        get: get,\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.dropdowns = function () {\r\n\r\n\r\n\tfunction init() {\r\n\t\tvar selects = $('select').not('.disable-selectric');\r\n\r\n\t\tif (selects.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselects.selectric({\r\n\t\t\tarrowButtonMarkup: '<b class=\"selectric-button\"></b>',\r\n\t\t\tdisableOnMobile: true,\r\n\t\t\tonInit: lookForDropDownImages\r\n\t\t});\r\n\t\tselects.on(\"change\", function () {\r\n\t\t\tsetSelect(this);\r\n\t\t\t$(this).trigger('blur'); // Make sure JQUERY VALIDATE sees the updated value (and validates it)\r\n\t\t})\r\n\t}\r\n\r\n\tfunction lookForDropDownImages() {\r\n\r\n\t\tvar select = $(this);\r\n\t\tvar selectricItems = select.closest('.selectricWrapper').find('li');\r\n\t\tvar option = select.find('option');\r\n\r\n\t\tfor (var i = 0; i < option.length; i++) {\r\n\t\t\tif (option.eq(i).attr('data-imagesrc') !== '') {\r\n\r\n\t\t\t\tvar imageRef = option.eq(i).data('imagesrc') !== undefined ? option.eq(i).data('imagesrc') : 'none';\r\n\r\n\t\t\t\tif (imageRef !== 'none') {\r\n\t\t\t\t\tselectricItems.eq(i).addClass('select-icon');\r\n\t\t\t\t\tselectricItems.eq(i).attr('style', 'background-image: url(\"' + imageRef + '\");');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tremoveEmptyValues(select);\r\n\t}\r\n\r\n\tfunction removeEmptyValues(select) {\r\n\t\tvar selectricItems = select.closest('.selectricWrapper').find('li');\r\n\t\tif (select.data('required')) {\r\n\t\t\tvar optionValue = select.find('option');\r\n\r\n\t\t\toptionValue.each(function () {\r\n\t\t\t\tif ($(this).val() === '') {\r\n\t\t\t\t\tvar emptyIndex = $(this).index();\r\n\t\t\t\t\tselectricItems.eq(emptyIndex).hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setSelect(ele) {\r\n\t\tvar select = $(ele);\r\n\t\tvar selectricButton = select.closest('.selectricWrapper').find('.selectric');\r\n\t\tvar selectedOption = select.find(':selected');\r\n\t\tvar selectedImage = selectedOption.data('imagesrc') !== undefined ? selectedOption.data('imagesrc') : '';\r\n\r\n\t\tif (selectedImage !== '') {\r\n\t\t\tselectricButton.addClass('selectric-has-icon');\r\n\t\t\tselectricButton.attr('style', 'background-image: url(\"' + selectedImage + '\");');\r\n\t\t} else {\r\n\t\t\tselectricButton.removeClass('selectric-has-icon');\r\n\t\t\tselectricButton.attr('style', '');\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.Filter = (function () {\r\n    var fields = {\r\n        $filterContainer: $(\".list-sorting\"),\r\n        $filterSelector: $(\"#filters\"),\r\n        ajaxFilters: $(\".ajax-filter .filter-controls\"),\r\n        ajaxTabs: $(\".ajax-filter .tab-filter\"),\r\n        dropDownFilters: $(\".filter-search.dropdown\"),\r\n        sliderFilters: $(\".filter-search.slider\"),\r\n        checkFilters: $(\".filter-search.checkbox\"),\r\n        textFilters: $(\".filter-search.textbox\"),\r\n        $filterResult: $(\".js-active-in-filter\"),\r\n        loaded: false,\r\n        datepickerInitialized: false\r\n    };\r\n\r\n    var vars = {\r\n        cookie: Tivoli.Cookies,\r\n        registeredFilterControls: [],\r\n    };\r\n\r\n    //Save data attributes to a cookie for later search\r\n    var saveFilterSelection = function (tab) {\r\n        var filterValue = \"\";\r\n        fields.$filterSelector.find(\".filter-search\").each(function (index, element) {\r\n            var $element = $(element);\r\n            if ($element.hasClass(\"slider\")) {\r\n                filterValue += \"$id=\" + $element.data(\"id\");\r\n                filterValue = assignFilterValue(filterValue, element.dataset);\r\n            }\r\n            else if ($element.hasClass(\"checkbox\")) {\r\n                filterValue += \"$id=\" + $element.data(\"id\");\r\n                filterValue += (\"&active:\" + $element.parent().hasClass(\"active\"));\r\n            }\r\n            else if ($element.hasClass(\"dropdown\")) {\r\n                filterValue += \"$id=\" + $element.data(\"id\");\r\n                filterValue += \"&value:\" + $element.val();\r\n            }\r\n        });\r\n        if (tab) {\r\n            filterValue += \"$id=\" + tab.data(\"id\");\r\n            filterValue += \"&value:\" + tab.val();\r\n        };\r\n        vars.cookie.set(fields.$filterSelector.data(\"cookie\"), filterValue, 1);\r\n        return;\r\n    };\r\n\r\n    // Build cookie string value \r\n    var assignFilterValue = function (value, objectData) {\r\n        for (var p in objectData) {\r\n            if (objectData.hasOwnProperty(p)) {\r\n                value += (\"&\" + p + \":\" + objectData[p]);\r\n            }\r\n        }\r\n        return value;\r\n    };\r\n\r\n    //Retrieve values from query string\r\n    var getFilterSelectionFromQueryString = function () {\r\n       if(fields.loaded) {\r\n           return \r\n       }\r\n       var query = location.search;\r\n       if(query == \"\") {\r\n           return;\r\n       }\r\n\r\n       fields.loaded = true;\r\n       var search = location.search.split('search=').splice(1).join('').split('&')[0]\r\n       var elements = search.split(\"--\");\r\n       vars.registeredFilterControls = []\r\n\r\n       $.each(elements, function (index, element) {\r\n            if (!element == \"\") {\r\n                var parameters = element.split(\",\");\r\n                var id = parameters[0];\r\n                if (id !== \"\") {\r\n                    var filterElement = fields.ajaxFilters.find(\"[data-id=\" + id + \"]\");\r\n                    vars.registeredFilterControls.push(filterElement);\r\n                    initFilterSelection(filterElement, parameters[0], parameters[1]);\r\n                }\r\n            }\r\n        });\r\n        refreshParameterControls();\r\n        return;\r\n    }\r\n\r\n    //Retrieve cookie values\r\n    var getFilterSelection = function () {\r\n        if (fields.loaded) {\r\n            return;\r\n        }\r\n        fields.loaded = true;\r\n        var tivoliRideFilterValues = vars.cookie.get(fields.$filterSelector.data(\"cookie\"));\r\n        var elements = tivoliRideFilterValues.split(\"$id=\");\r\n        vars.registeredFilterControls = [];\r\n        $.each(elements, function (index, element) {\r\n            if (!element == \"\") {\r\n                var parameters = element.split(\"&\");\r\n                var id = parameters[0];\r\n                if (id !== \"\") {\r\n                    var filterElement = fields.$filterContainer.find(\"[data-id=\" + id + \"]\");\r\n                    vars.registeredFilterControls.push(filterElement);\r\n\r\n                    for (var i = 0; i < parameters.length; i++) {\r\n                        initFilterSelection(filterElement, parameters[i].split(\":\")[0], parameters[i].split(\":\")[1]);\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        refreshParameterControls();\r\n        return;\r\n    };\r\n\r\n    //Attach dataattributes to the element\r\n    var initFilterSelection = function (element, attribute, value) {\r\n        var $element = $(element);\r\n        if ($element.is(':checkbox') && value === \"true\") {\r\n            $element.parent().addClass(attribute);\r\n            $element.prop('checked', true);\r\n        } else if ($element.hasClass(\"slider\")) {\r\n            fields.$filterSelector.find(element).attr(\"data-\" + attribute, value);\r\n        } else if ($element.hasClass(\"dropdown\")) {\r\n            fields.$filterSelector.find(element).val(value).selectric(\"refresh\");\r\n            fields.$filterContainer.find(\"#\" + $element.data(\"id\")).each(function (index, filter) {\r\n                if ($(filter).length) {\r\n                    $(filter).val(value).selectric('refresh');\r\n                }\r\n\r\n            });\r\n        } else if ($element.hasClass(\"tab-filter\")) {\r\n            Tivoli.pageTabs.initTabSelection($element);\r\n        }\r\n        return;\r\n    };\r\n\r\n    // Set paramter controls to latest position\r\n    var refreshParameterControls = function() {\r\n        $.each(vars.registeredFilterControls, function (index, e) {\r\n            var element = $(e);\r\n            if (element.hasClass(\"slider\")) {\r\n                var dataSelectedMax = parseInt(element.attr('data-selectedmax')) >= 0 ? parseInt(element.attr('data-selectedmax')) : 1000;\r\n                var dataSelectedMin = parseInt(element.attr('data-selectedmin')) >= 0 ? parseInt(element.attr('data-selectedmin')) : 0;\r\n                element.val([dataSelectedMin, dataSelectedMax]);\r\n            }\r\n        });\r\n\r\n        return;\r\n    };\r\n\r\n    var clearFilters = function () {\r\n        fields.sliderFilters.each(function (index, e) {\r\n            var element = $(e);\r\n            var dataSelectedMax = parseInt(element.data('maxval'));\r\n            var dataSelectedMin = parseInt(element.data('minval'));\r\n\r\n            element.data(\"selectedmax\", dataSelectedMax);\r\n            element.data(\"selectedmin\", dataSelectedMin);\r\n\r\n            element.val([dataSelectedMin, dataSelectedMax]);\r\n        });\r\n\r\n        fields.checkFilters.prop(\"checked\", false);\r\n        fields.dropDownFilters.val(\"-\").selectric('refresh');\r\n        fields.textFilters.val(\"\");\r\n        vars.cookie.set(fields.$filterSelector.data(\"cookie\"), '', 1);\r\n    };\r\n\r\n    var ajaxMethods = {\r\n        initAjaxFilters: function() {\r\n            if (fields.ajaxFilters.length === 0) {\r\n                return;\r\n            }\r\n\r\n            getFilterSelectionFromQueryString();\r\n            getFilterSelection();\r\n            \r\n            var section = fields.ajaxFilters.parents(\"section\");\r\n            fields.ajaxContent = section.find(\".ajax-content\");\r\n            fields.ajaxFilters.on('change', function () {\r\n                var form = $(this);\r\n                var name = form.parents(\".js-tab-page\").attr(\"id\");\r\n                var serializedForm = ajaxMethods.serialize(form, name);\r\n                ajaxMethods.postOnFilterChange(serializedForm);\r\n\r\n                saveFilterSelection();\r\n            });\r\n            fields.ajaxFilters.each(function () {\r\n                var form = $(this);\r\n                if (form.hasClass(\"is-selected\")) {\r\n                    var name = form.parents(\".js-tab-page\").attr(\"id\");\r\n                    var serializedForm = ajaxMethods.serialize(form, name);\r\n                    var queryFromDate = (location.search.split(\"fromdate\" + '=')[1] || '').split('&')[0];\r\n\r\n                    //If parameter fromDate is set, do not init search\r\n                    if(queryFromDate == '') {\r\n                        ajaxMethods.postOnFilterChange(serializedForm);\r\n                    } \r\n                    \r\n                }\r\n            });\r\n        },\r\n        updateFilterResult: function (result) {\r\n            fields.$filterResult.each(function () {\r\n                $(this).html($(result).find(\".js-filter-result\").length);\r\n            });\r\n        },\r\n        changeTab: function (newPageId) {\r\n            if (fields.ajaxTabs.length === 0) {\r\n                return;\r\n            }\r\n            var form = $(\"#\" + newPageId + \" .filter-controls\");\r\n            var serializedForm = ajaxMethods.serialize(form, newPageId);\r\n            ajaxMethods.postOnFilterChange(serializedForm);\r\n\r\n            saveFilterSelection();\r\n        },\r\n        changeContent : function(content) {\r\n            fields.ajaxContent.empty();\r\n            fields.ajaxContent.append(content);\r\n            ajaxMethods.updateFilterResult(content);\r\n\r\n            fields.ajaxContent.find(\".filter-no-results a\").on(\"click\", function (e) {\r\n                e.preventDefault();\r\n                clearFilters();\r\n\r\n                var activeTabName = fields.ajaxTabs.filter(\".js-selected\").data(\"id\");\r\n                var form = ajaxMethods.currentActiveForm(activeTabName);\r\n                var serializedForm = ajaxMethods.serialize(form, activeTabName);\r\n                ajaxMethods.postOnFilterChange(serializedForm);\r\n            });\r\n            fields.ajaxContent.find(\".extended-search\").on(\"click\", function (e) {\r\n                e.preventDefault();\r\n                var form = ajaxMethods.currentActiveForm();\r\n                var serializedForm = ajaxMethods.serialize(form);\r\n                if ($(this).data(\"query-number\") != \"\") {\r\n                    ajaxMethods.postOnFilterChange(serializedForm, { Extended: true, CurrentCount: $(this).data(\"query-number\") });\r\n                } else {\r\n                    ajaxMethods.postOnFilterChange(serializedForm, { Extended: true });\r\n                }\r\n                \r\n            });\r\n            \r\n\r\n            Tivoli.LazyLoading.LazyLoad(fields.ajaxContent.find(\"img.lazy\"), fields.ajaxContent.find(\"[data-bg].lazy\"));\r\n            Tivoli.accordion.init();\r\n        },\r\n        currentActiveForm: function (activeTabName) {\r\n            if (activeTabName) {\r\n                return $(\"#\" + activeTabName + \" .filter-controls\");\r\n            } else {\r\n                return fields.ajaxFilters.filter(\".is-selected\");\r\n            }\r\n        },\r\n        serialize : function (form, tabName) {\r\n            var filters = {\r\n                SlideFilters: [],\r\n                CheckFilters: [],\r\n                DropDownFilters: [],\r\n                TextFilters: [],\r\n            };\r\n\r\n            filters.TabName = tabName;\r\n\r\n            form.find(\"input[type=hidden]\").each(function() {\r\n                var input = $(this);\r\n                filters[input.attr(\"name\")] = input.val();\r\n            });\r\n            form.find(\"input[type=checkbox]\").each(function () {\r\n                var input = $(this);\r\n                if (input.prop('checked')) {\r\n                    filters.CheckFilters.push({\r\n                        FilterId: input.attr(\"name\"),\r\n                        Value: true\r\n                    });\r\n                }\r\n            });\r\n            form.find(\".filter-search.dropdown\").each(function () {\r\n                var input = $(this);\r\n                var value = input.val();\r\n                if (value && value.length > 0) {\r\n                    filters.DropDownFilters.push({\r\n                        FilterId: input.attr(\"name\"),\r\n                        Value: value\r\n                    });\r\n                }\r\n            });\r\n            form.find(\".filter-search.slider\").each(function () {\r\n                var input = $(this);\r\n                filters.SlideFilters.push({\r\n                    FilterId: input.attr(\"name\"),\r\n                    ValueMin: input.data(\"selectedmin\"),\r\n                    ValueMax: input.data(\"selectedmax\")\r\n                });\r\n            });\r\n            form.find(\".filter-search.daterange\").each(function () {\r\n                var input = $(this);\r\n\r\n                if (fields.datepickerInitialized || input.siblings(\".daterangepicker\").length) {\r\n                    fields.datepickerInitialized = true;\r\n\r\n                    // If local time is 0:00, then result will be UTC 0:00\r\n                    function dateToUtcString(date) {\r\n                        var localDateChangedToUtc = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));\r\n                        return localDateChangedToUtc.toISOString();\r\n                    }\r\n\r\n                    var range = input.daterangepicker(\"getRange\");\r\n                    if (range) {\r\n                        var from = dateToUtcString(range.start);\r\n                        range.end.setDate(range.end.getDate() + 1);\r\n                        var to = dateToUtcString(range.end);\r\n\r\n                        if (from && to) {\r\n                            filters.Period = {\r\n                                StartDate: from,\r\n                                EndDate: to\r\n                            };\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            form.find(\".filter-search.textbox\").each(function () {\r\n                var input = $(this);\r\n                var value = input.val();\r\n                if (value && value.length > 0) {\r\n                    filters.TextFilters.push({\r\n                        FilterId: input.attr(\"name\"),\r\n                        Value: value\r\n                    });\r\n                }\r\n            });\r\n\r\n            return filters;\r\n        },\r\n        postOnFilterChange: function (serializedForm, settings) {\r\n            ajaxMethods.startSearch();\r\n            \r\n            $.extend(serializedForm, settings);\r\n            $.ajax({\r\n                type: \"POST\",\r\n                url: \"?json=1\",\r\n                data: JSON.stringify(serializedForm),\r\n                contentType: 'application/json; charset=utf-8',\r\n                success: function (response) {\r\n                    ajaxMethods.changeContent(response);\r\n                    ajaxMethods.endSearch();\r\n                },\r\n                error: function (a, b, c) {\r\n                    ajaxMethods.showError();\r\n                    ajaxMethods.endSearch();\r\n                },\r\n                dataType: \"html\"\r\n            });\r\n        },\r\n        startSearch: function() {\r\n            // Show loader.\r\n            fields.ajaxContent.addClass('loader-running');\r\n        },\r\n        endSearch: function() {\r\n            // Hide loader.\r\n            fields.ajaxContent.removeClass('loader-running');\r\n\r\n            // Emit completion event\r\n            emitFilterSearchFinishedEvent();\r\n\r\n        },\r\n        showError: function () {\r\n            // Tell the user, that an error occured?\r\n        }\r\n    };\r\n\r\n    ajaxMethods.initAjaxFilters();\r\n\r\n    function emitFilterSearchFinishedEvent() {\r\n        $(document).trigger('filterSearchComplete');\r\n    }\r\n\r\n    return {\r\n        getFilterSelection: getFilterSelection,\r\n        saveFilterSelection: saveFilterSelection,\r\n        clearFilters: clearFilters,\r\n        updateFilterResult: ajaxMethods.updateFilterResult,\r\n        changeTab: ajaxMethods.changeTab\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.Frontpage = (function () {\r\n    var fields = {\r\n        selector: \".hero-section-container\"       \r\n    };\r\n\r\n    var init = function () {\r\n        var heroSections = $(fields.selector);\r\n        if (heroSections.length <= 0) {\r\n            return;\r\n        }\r\n\r\n        var video = heroSections.find(\".hero-media-video\"),\r\n            image = heroSections.find(\".hero-background\");\r\n\r\n        if (Tivoli.vars.isAnyTouchDevice && video.length > 0) {\r\n            video.hide();\r\n        } else if (video.length > 0) {\r\n            var videoLink = video.find(\".hero-video\").attr(\"data-videoLink\");\r\n            video.find(\".hero-video source\").attr(\"src\", videoLink);\r\n            image.hide();\r\n        }\r\n    };\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.globalStates = (function () {\r\n  //\r\n\t// var state = {\r\n\t// \tmenuOpen: false,\r\n\t// \tasideOpen: false,\r\n\t// \ttopWidgetOpen: false\r\n\t// };\r\n  //\r\n\t// var contentIsLocked = false;\r\n  //\r\n\t// var lastScrolled;\r\n\t// var $html = $('html');\r\n\t// var $body = $('body');\r\n\t// var slideOutRightClassName = 'slideout-right-is-active',\r\n\t// \tmenuIsActiveClassName = 'menu-is-active',\r\n\t// \ttopWidgetClassName = 'top-widget-active';\r\n\t// \t// contextNavActiveClass = 'context-nav-is-active';\r\n  //\r\n\t// function statesCurrentlyOpen(state) {\r\n\t// \tvar statesOpen = [];\r\n\t// \tfor (var item in state) {\r\n\t// \t\tif(state[item]) {\r\n\t// \t\t\tstatesOpen.push(item);\r\n\t// \t\t}\r\n\t// \t}\r\n\t// \treturn statesOpen;\r\n\t// }\r\n  //\r\n\t// function lockScroll() {\r\n\t// \tif (!contentIsLocked && statesCurrentlyOpen(state).length < 1) {\r\n\t// \t\tvar scrollTop = $(window).scrollTop();\r\n\t// \t\tlastScrolled = scrollTop;\r\n\t// \t\t$html.css({\r\n\t// \t\t\ttop: -scrollTop\r\n\t// \t\t});\r\n\t// \t\tcontentIsLocked = true;\r\n\t// \t}\r\n\t// }\r\n  //\r\n\t// function setScroll(value) {\r\n\t// \tif (contentIsLocked && statesCurrentlyOpen(state).length < 1) {\r\n\t// \t\t$body.scrollTop(value);\r\n\t// \t\tcontentIsLocked = false;\r\n\t// \t}\r\n\t// }\r\n  //\r\n\t// var setState = {\r\n\t// \tmenu: {\r\n\t// \t\topen: function () {\r\n\t// \t\t\tlockScroll();\r\n\t// \t\t\t$html.addClass(menuIsActiveClassName);\r\n\t// \t\t\tstate.menuOpen = true;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t},\r\n\t// \t\tclose: function () {\r\n\t// \t\t\t$html.removeClass(menuIsActiveClassName);\r\n\t// \t\t\tstate.menuOpen = false;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t\tsetScroll(lastScrolled);\r\n\t// \t\t}\r\n\t// \t},\r\n\t// \taside: {\r\n\t// \t\topen: function () {\r\n\t// \t\t\tlockScroll();\r\n\t// \t\t\t$html.addClass(slideOutRightClassName);\r\n\t// \t\t\tstate.asideOpen = true;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t},\r\n\t// \t\tclose: function () {\r\n\t// \t\t\t$html.removeClass(slideOutRightClassName);\r\n\t// \t\t\tstate.asideOpen = false;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t\tsetScroll(lastScrolled);\r\n\t// \t\t}\r\n\t// \t},\r\n\t// \ttopWidget: {\r\n\t// \t\topen: function () {\r\n\t// \t\t\tlockScroll();\r\n\t// \t\t\t$html.addClass(topWidgetClassName);\r\n\t// \t\t\tstate.topWidgetOpen = true;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t},\r\n\t// \t\tclose: function () {\r\n\t// \t\t\t$html.removeClass(topWidgetClassName);\r\n\t// \t\t\tstate.topWidgetOpen = false;\r\n\t// \t\t\ttriggerStateChange(state);\r\n\t// \t\t\tsetScroll(lastScrolled);\r\n\t// \t\t}\r\n\t// \t},\r\n\t// \tcloseAll: function () {\r\n\t// \t\tif (state.menuOpen) this.menu.close();\r\n\t// \t\tif (state.asideOpen) this.aside.close();\r\n\t// \t\tif (state.topWidgetOpen) this.topWidget.close();\r\n\t// \t}\r\n\t// };\r\n  //\r\n\t// function triggerStateChange(newStates) {\r\n\t// \t$(document).trigger(\"StateChange\", newStates);\r\n\t// }\r\n\r\n\t// return {\r\n\t// \tstate: state,\r\n\t// \tsetState: setState\r\n\t// };\r\n\r\n})();","var tivoli = tivoli || {};\r\n\r\nTivoli.iframe = (function() {\r\n    function init() {\r\n        $.each($('.iframe'), function () {\r\n            resizeIframeOnChange(this);\r\n        });\r\n    }\r\n\r\n\r\n    function resizeIframe(iframe) {\r\n            iframe.height = iframe.contentWindow.document.body.scrollHeight + \"px\";\r\n    }\r\n\r\n    function resizeIframeOnChange(iframe) {\r\n        var lastHeight = 0, curHeight = 0;\r\n        setInterval(function() {\r\n            curHeight = iframe.contentWindow.document.body.offsetHeight;\r\n            if (curHeight != lastHeight) {\r\n                $('.iframe').css('height', curHeight + 100 + 'px');\r\n                lastHeight = curHeight;\r\n            }\r\n        }, 500);\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n})();\r\n\r\n\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.Lightbox = (function () {\r\n    var fields = {\r\n        selector: \".js-lightbox\",\r\n        selectorEvent: \"click\",\r\n        container: \"#site-container\",\r\n\r\n        // For later use:\r\n        lightboxGroupAttribute: \"group\",\r\n\r\n        headerSelector: \"#head-section\",\r\n        menuSelector: \"#nav-section > .scroll-wrapper\",\r\n\r\n        // Properties for calculation purposes\r\n        maxContentSize: 0.7, // percent viewport width / height\r\n\r\n        windowHeight: 0,\r\n        windowWidth: 0,\r\n        headerHeight: 0,\r\n        iconCloseHeight: 35,\r\n        menuWidth: 0,\r\n        isMobile: false,\r\n\r\n        currentWidth: 0,\r\n        currentHeight: 0,\r\n        currentScrollTop: 0\r\n    };\r\n\r\n    var elementArray = [];\r\n    var elementArrayLength;\r\n    var activeLightBoxElement;\r\n\r\n    // Elements\r\n    var lightBoxCreated = false,\r\n        isActive = false,\r\n        scrollContainer = $(\"body\"),\r\n        lightbox,\r\n        lightboxContent,\r\n        header,\r\n        menu;\r\n\r\n    var startBounds;\r\n\r\n    var init = function (options) {\r\n        var lightboxes = $(fields.selector);\r\n        if (lightboxes.length <= 0) {\r\n            return;\r\n        }\r\n\r\n        $.extend(fields, options);\r\n        header = $(fields.headerSelector);\r\n        menu = $(fields.menuSelector);\r\n\r\n        setWindowProperties();\r\n\r\n        $('.swiper .js-lightbox').each(function () {\r\n            var elementToPush = new Array();\r\n            elementToPush[0] = $(this).attr(\"href\");\r\n            elementToPush[1] = $(this).hasClass(\"js-lightbox-iframe\");\r\n            elementToPush[2] = $(this).data(\"title\");\r\n            elementToPush[3] = $(this);\r\n            elementArray.push(elementToPush);\r\n        });\r\n        elementArrayLength = elementArray.length;\r\n\r\n        if (!lightBoxCreated) {\r\n            insertLightBox();\r\n            $(window).smartresize(onResize);\r\n\r\n            $(document).on('menuClose', onResize);\r\n            $(document).on('menuOpen', onResize);\r\n            $('.js-lightbox-next').on('click', function (e) {\r\n                e.preventDefault();\r\n                updateNextButton();\r\n            });\r\n            $('.js-lightbox-prev').on('click', function (e) {\r\n                e.preventDefault();\r\n                updatePrevButton();\r\n            });\r\n\r\n            if (elementArrayLength <= 1) {\r\n                $('.js-lightbox-next').hide();\r\n                $('.js-lightbox-prev').hide();\r\n            }\r\n\r\n            $(\"body\").keydown(function (e) {\r\n                if (e.keyCode == 37) { // left\r\n                    updatePrevButton();\r\n                }\r\n                if (e.keyCode == 39) { // right\r\n                    updateNextButton();\r\n                }\r\n                if (e.keyCode == 27) { //escape\r\n                    hideLightBox();\r\n                }\r\n            });\r\n        }\r\n        lightboxes.on(fields.selectorEvent, activateLightBox);\r\n    };\r\n\r\n    var onResize = function () {\r\n        setWindowProperties();\r\n\r\n        if (isActive) {\r\n            setContentBounds();\r\n        }\r\n    };\r\n\r\n    var setWindowProperties = function () {\r\n        var $window = $(window);\r\n\r\n        fields.windowHeight = $window.height();\r\n        fields.windowWidth = $window.width();\r\n        fields.headerHeight = header[0].offsetHeight;\r\n        fields.isMobile = Modernizr.touch && $window.width() < Tivoli.settings.width.medium;\r\n        fields.currentScrollTop = scrollContainer.scrollTop();\r\n    };\r\n\r\n    var getFixedDimensions = function (item) {\r\n        return {\r\n            width: item[0].clientWidth,\r\n            height: item[0].clientHeight,\r\n            left: item.offset().left,\r\n            top: item.offset().top - fields.currentScrollTop\r\n        };\r\n    };\r\n\r\n    var insertLightBox = function () {\r\n        lightbox = $(\"<div class='lightbox lightbox--hidden'><div class='lightbox__layer'></div><div class='lightbox__content'><a class='js-lightbox-next lightbox__next color-gold' data-link=''><i class='icon-arrow-right'></i></a><a class='js-lightbox-prev lightbox__prev color-gold' data-link=''><i class='icon-arrow-left'></i></a><div class='lightbox__close button-plus color-gold transform'></div></div></div>\");\r\n        lightboxContent = lightbox.find(\".lightbox__content\");\r\n\r\n        var close = lightbox.find(\".lightbox__close, .lightbox__layer\");\r\n        close.on(fields.selectorEvent, hideLightBox);\r\n\r\n        $(fields.container).after(lightbox);\r\n\r\n        lightBoxCreated = true;\r\n    };\r\n\r\n    var updateNextButton = function () {\r\n        if (activeLightBoxElement + 1 == elementArrayLength) {\r\n            activeLightBoxElement = 0;\r\n        } else {\r\n            activeLightBoxElement = activeLightBoxElement + 1;\r\n        }\r\n\r\n        if (elementArray[activeLightBoxElement][1]) {\r\n            checkVideoCookieAndInsert(elementArray[activeLightBoxElement][3], true, true);\r\n        } else {\r\n            insertImage(elementArray[activeLightBoxElement][0], true, elementArray[activeLightBoxElement][2]);\r\n        }\r\n    };\r\n\r\n    var updatePrevButton = function () {\r\n        if (activeLightBoxElement == 0) {\r\n            activeLightBoxElement = elementArrayLength - 1;\r\n        } else {\r\n            activeLightBoxElement = activeLightBoxElement - 1;\r\n        }\r\n\r\n        if (elementArray[activeLightBoxElement][1]) {\r\n            checkVideoCookieAndInsert(elementArray[activeLightBoxElement][3], true, true);\r\n        } else {\r\n            insertImage(elementArray[activeLightBoxElement][0], true, elementArray[activeLightBoxElement][2]);\r\n        }\r\n    };\r\n\r\n    var getElementNumber = function (src) {\r\n        var elementNumber;\r\n        $.each(elementArray, function (key, info) {\r\n            if (info[0] == src) {\r\n                elementNumber = key;\r\n            }\r\n        });\r\n\r\n        return elementNumber;\r\n    };\r\n\r\n    var checkYoutubeCookieConsent = function () {\r\n        var services = UC_UI ? UC_UI.getServicesBaseInfo() : [];\r\n        var service = null;\r\n\r\n        for (var i = 0; i < services.length; i++) {\r\n            if (services[i] && services[i]['name'] === 'YouTube Video') {\r\n                service = services[i];\r\n            }\r\n        }\r\n\r\n        if (service) {\r\n            consent = service.consent.status;\r\n        }\r\n\r\n        return consent;\r\n    };\r\n\r\n\r\n    var checkVideoCookieAndInsert = function (lightboxItem, shouldUpdateIframe, shouldUpdateImage) {\r\n        var consent = checkYoutubeCookieConsent();\r\n        if (consent) {\r\n            insertIFrame(lightboxItem.attr(\"href\"), shouldUpdateIframe);\r\n        } else {\r\n            var headline;\r\n            var description;\r\n            var button;\r\n            var cookieComplienceObj = $(\"#VideoCookieConsent\");\r\n            var imgContent = \"\";\r\n            var firstImgChildSrc = \"\";\r\n\r\n            if (cookieComplienceObj) {\r\n                var cookieComplienceHtml = cookieComplienceObj.html().trim();\r\n                var data = JSON.parse(cookieComplienceHtml);\r\n\r\n                if (data) {\r\n                    headline = data.Headline ? \"<span class='lightbox__content__item__headline'>\" + data.Headline + \"</span>\" : null;\r\n                    description = data.Description ? \"<span class='lightbox__content__item__description'>\" + data.Description + \"</span>\" : null;\r\n                    button = data.ButtonText ? \"<button class='lightbox__content__item__button'>\" + data.ButtonText + \"</button>\" : null;\r\n                    firstImgChildSrc = data.DefaultImageUrl;\r\n                }\r\n            }\r\n\r\n            if (headline) {\r\n                imgContent += headline;\r\n            }\r\n            if (description) {\r\n                imgContent += description;\r\n            }\r\n            if (button) {\r\n                $(button).prop(\"title\", data.ButtonText);\r\n                imgContent += button;\r\n            }\r\n\r\n            var imgText = \"<span class='lightbox__content__item__layover'></span><span class='lightbox__content__item__wrapper'><span class='lightbox__content__item__inner'>\" + imgContent + \"</span></span>\";\r\n            var firstImgChild = lightboxItem.find('img').first();\r\n\r\n            if (firstImgChild && firstImgChild.attr(\"src\")) {\r\n                firstImgChildSrc = firstImgChild.attr(\"src\");\r\n            }\r\n\r\n            insertImage(firstImgChildSrc, shouldUpdateImage, imgText, \"lightbox__content__wrapper\");\r\n            $('.lightbox__content__item__button').on('click', function (e) {\r\n                if (UC_UI) {\r\n                    hideLightBox();\r\n                    UC_UI.showFirstLayer()\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    var activateLightBox = function (e) {\r\n        var item = $(this),\r\n            isIframe = item.hasClass(\"js-lightbox-iframe\");\r\n\r\n        activeLightBoxElement = getElementNumber(item.attr(\"href\"));\r\n\r\n        e.preventDefault();\r\n\r\n        fields.currentScrollTop = scrollContainer.scrollTop();\r\n        startBounds = getFixedDimensions(item);\r\n\r\n        if (isIframe) {\r\n            checkVideoCookieAndInsert(item, false, false);\r\n\r\n        } else {\r\n            insertImage(item.attr(\"href\"), false, item.data('title'));\r\n        }\r\n    };\r\n\r\n    var insertImage = function (src, update, title, contentClass) {\r\n        var timeout,\r\n            isLoaded;\r\n\r\n        function showImage() {\r\n            if (isLoaded) {\r\n                clearTimeout(timeout);\r\n                setContentBounds();\r\n                return;\r\n            }\r\n\r\n            timeout = setTimeout(function () {\r\n                showImage();\r\n            }, 200);\r\n        };\r\n\r\n        lightboxContent.attr(\"style\", \"\");\r\n        lightboxContent.removeClass(\"lightbox__content__wrapper\");\r\n\r\n        if (contentClass) {\r\n            lightboxContent.addClass(contentClass);\r\n        }\r\n\r\n        if (update) {\r\n            var newImg = $(\"<img />\").attr(\"src\", src)\r\n                .load(function () {\r\n                    isActive = true;\r\n                    isLoaded = true;\r\n                    fields.currentWidth = this.width;\r\n                    fields.currentHeight = this.height;\r\n                });\r\n        }\r\n        var img = $(\"<img class='lightbox__content__item'/>\")\r\n            .attr(\"src\", src)\r\n            .load(function () {\r\n                isActive = true;\r\n                isLoaded = true;\r\n\r\n                if (!update) {\r\n                    fields.currentWidth = this.width;\r\n                    fields.currentHeight = this.height;\r\n                }\r\n\r\n                if (!isSmallDevice() && !update) {\r\n                    lightboxContent.css(startBounds);\r\n                } else {\r\n                    setContentBounds();\r\n                }\r\n                if (!update) {\r\n                    lightbox.toggleClass(\"lightbox--hidden\");\r\n                }\r\n            });\r\n\r\n        var imgText = \"<span class='lightbox__content__item__text'>\" + title + \"</span>\";\r\n\r\n        if (update) {\r\n            var lightBoxItem = $('.lightbox__content__item');\r\n            var lightBoxText = $('.lightbox__content__item__text');\r\n            lightBoxItem.hide();\r\n            lightboxContent.append(img);\r\n            lightboxContent.append(imgText);\r\n            setContentBounds();\r\n            showImage();\r\n            lightBoxItem.remove();\r\n            lightBoxText.remove();\r\n        } else {\r\n            lightboxContent.append(img);\r\n            lightboxContent.append(imgText);\r\n            if (!isSmallDevice()) {\r\n                showImage();\r\n            }\r\n        }\r\n\r\n    };\r\n\r\n    var insertIFrame = function (src, update) {\r\n        // Youtube use 16:9 players\r\n        var iframe = $('<iframe class=\"lightbox__iframe\" frameborder=\"0\" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen></iframe>');\r\n        var iframeContainer = $('<div class=\"lightbox__radius lightbox__content__item\"></div>');\r\n        iframe.attr(\"src\", src);\r\n\r\n        isActive = true;\r\n        fields.currentWidth = 1920;\r\n        fields.currentHeight = 1080;\r\n\r\n        lightboxContent.css(startBounds);\r\n        if (!update) {\r\n            lightbox.toggleClass(\"lightbox--hidden\");\r\n        }\r\n        setContentBounds();\r\n\r\n        if (update) {\r\n            $('.lightbox__iframe').remove();\r\n            $('.lightbox__content__item').remove();\r\n            $('.lightbox__content__item__text').remove();\r\n        }\r\n\r\n        lightboxContent.append(iframeContainer);\r\n        var iframeContent = lightbox.find(\".lightbox__radius\");\r\n        iframeContent.append(iframe);\r\n    };\r\n\r\n    var setContentBounds = function () {\r\n        var width = fields.currentWidth,\r\n            height = fields.currentHeight;\r\n\r\n        var //viewportWidth = fields.windowWidth - fields.menuWidth, // THIS is not needed anymore\r\n            // viewportHeight = fields.windowHeight - fields.headerHeight;\r\n            viewportWidth = fields.windowWidth,\r\n            viewportHeight = fields.windowHeight - fields.headerHeight;\r\n\r\n        var scale = 1;\r\n        var maxContentSize = isSmallDevice() ? 1 : fields.maxContentSize;\r\n        var heightRatio = height / viewportHeight;\r\n        var widthRatio = width / viewportWidth;\r\n\r\n        if (heightRatio > maxContentSize) {\r\n            scale = maxContentSize / heightRatio;\r\n        }\r\n        if (widthRatio > maxContentSize > heightRatio) {\r\n            scale = maxContentSize / widthRatio;\r\n        }\r\n\r\n        width = width * scale;\r\n        height = height * scale;\r\n\r\n        var x = (viewportWidth - width) / 2;\r\n        var y = (viewportHeight - height) / 2 + fields.headerHeight - fields.iconCloseHeight;\r\n        lightboxContent.css({ width: width, height: height, left: x, top: y });\r\n    };\r\n\r\n    var hideLightBox = function () {\r\n        if (!isActive) {\r\n            return;\r\n        }\r\n\r\n        isActive = false;\r\n        if (!isSmallDevice()) {\r\n            lightboxContent.css(startBounds);\r\n            setTimeout(function () {\r\n                lightbox.toggleClass(\"lightbox--hidden\");\r\n                lightboxContent.find(\".lightbox__content__item\").remove();\r\n                lightboxContent.find(\".lightbox__content__item__text\").remove();\r\n                lightboxContent.removeClass(\"lightbox__content__wrapper\");\r\n            }, 300);\r\n        } else {\r\n            lightboxContent.removeAttr(\"style\");\r\n            lightbox.toggleClass(\"lightbox--hidden\");\r\n            lightboxContent.find(\".lightbox__content__item\").remove();\r\n            lightboxContent.find(\".lightbox__content__item__text\").remove();\r\n            lightboxContent.removeClass(\"lightbox__content__wrapper\");\r\n        }\r\n    };\r\n\r\n    var isSmallDevice = function () {\r\n        return Tivoli.vars.windowWidth < Tivoli.vars.mobileThreshold;\r\n    };\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    $(document).on(\"jsonLoaded\", function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        hide: hideLightBox\r\n    };\r\n})();","var Tivoli = $.extend(Tivoli, {\r\n    Location: {}\r\n});\r\n\r\nTivoli.Location = $.extend(Tivoli.Location, {\r\n\r\n    Map: function (options) {\r\n        var self = this;\r\n        var map = {};\r\n        var overlay = {};\r\n        var cnt = null;\r\n\r\n        var defaultOptions = {\r\n           zoom: 19,\r\n            minZoom: 19,\r\n            maxZoom: 20,\r\n            center: null,\r\n            streetViewControl: false,\r\n            panControl: false,\r\n            zoomControl: false,\r\n            mapTypeControl: false\r\n        };\r\n\r\n        this.options = $.extend(defaultOptions, options);\r\n\r\n        this.init = function (container) {\r\n            cnt = container;\r\n            map = new google.maps.Map($(cnt)[0], self.options);\r\n            //var map = new google.maps.Map($(cnt), self.options);\r\n\r\n            var marker = new google.maps.Marker({\r\n                position: new google.maps.LatLng(self.options.mapTextLatitude, self.options.mapTextLongitude),\r\n                cursor: 'default'\r\n            });\r\n            marker.setIcon(self.options.markerIconUrl);\r\n            marker.setMap(map);\r\n\r\n            // Listen for the dragend event\r\n            google.maps.event.addListener(map, 'dragend', function () {\r\n                setMapPostionCenter();\r\n            });\r\n\r\n            overlay = new google.maps.GroundOverlay(self.options.tivoliMapUrl, self.options.overlayBounds);\r\n            overlay.setMap(map);\r\n\r\n            /* constructor */\r\n            function imageOverlay() { }\r\n\r\n            function setMapPostionCenter() {\r\n                if (self.options.bounds.contains(map.getCenter())) return;\r\n\r\n                // Out of bounds - Move the map back within the bounds\r\n\r\n                var c = map.getCenter(),\r\n                    x = c.lng(),\r\n                    y = c.lat(),\r\n                    maxX = self.options.bounds.getNorthEast().lng(),\r\n                    maxY = self.options.bounds.getNorthEast().lat(),\r\n                    minX = self.options.bounds.getSouthWest().lng(),\r\n                    minY = self.options.bounds.getSouthWest().lat();\r\n\r\n                if (x < minX) x = minX;\r\n                if (x > maxX) x = maxX;\r\n                if (y < minY) y = minY;\r\n                if (y > maxY) y = maxY;\r\n\r\n                map.setCenter(new google.maps.LatLng(y, x));\r\n            }\r\n            \r\n\r\n            /**\r\n             * onAdd is called when the map's panes are ready and the overlay has been\r\n             * added to the map.\r\n             */\r\n            imageOverlay.prototype.onAdd = function () {\r\n\r\n                var div = document.createElement('div');\r\n                div.style.border = 'none';\r\n                div.style.borderWidth = '0px';\r\n                div.style.position = 'absolute';\r\n\r\n                // Create the img element and attach it to the div.\r\n                var img = document.createElement('img');\r\n                img.src = this.image_;\r\n                img.style.width = '100%';\r\n                img.style.height = '100%';\r\n                div.appendChild(img);\r\n\r\n                this.div_ = div;\r\n\r\n                // Add the element to the \"overlayImage\" pane.\r\n                var panes = this.getPanes();\r\n                panes.mapPane.appendChild(this.div_);\r\n            };\r\n\r\n            imageOverlay.prototype.draw = function () {\r\n\r\n                // We use the south-west and north-east\r\n                // coordinates of the overlay to peg it to the correct position and size.\r\n                // To do this, we need to retrieve the projection from the overlay.\r\n                var overlayProjection = this.getProjection();\r\n\r\n                // Retrieve the south-west and north-east coordinates of this overlay\r\n                // in LatLngs and convert them to pixel coordinates.\r\n                // We'll use these coordinates to resize the div.\r\n                var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());\r\n                var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());\r\n\r\n                // Resize the image's div to fit the indicated dimensions.\r\n                var div = this.div_;\r\n                div.style.left = sw.x + 'px';\r\n                div.style.top = ne.y + 'px';\r\n                div.style.width = (ne.x - sw.x) + 'px';\r\n                div.style.height = (sw.y - ne.y) + 'px';\r\n            };\r\n\r\n            imageOverlay.prototype.onRemove = function () {\r\n                this.div_.parentNode.removeChild(this.div_);\r\n            };\r\n\r\n            // [START region_hideshow]\r\n            // Set the visibility to 'hidden' or 'visible'.\r\n            imageOverlay.prototype.hide = function () {\r\n                if (this.div_) {\r\n                    // The visibility property must be a string enclosed in quotes.\r\n                    this.div_.style.visibility = 'hidden';\r\n                }\r\n            };\r\n\r\n            imageOverlay.prototype.show = function () {\r\n                if (this.div_) {\r\n                    this.div_.style.visibility = 'visible';\r\n                }\r\n            };\r\n\r\n            imageOverlay.prototype.toggle = function () {\r\n                if (this.div_) {\r\n                    if (this.div_.style.visibility == 'hidden') {\r\n                        this.show();\r\n                    } else {\r\n                        this.hide();\r\n                    }\r\n                }\r\n            };\r\n\r\n            // Detach the map from the DOM via toggleDOM().\r\n            // Note that if we later reattach the map, it will be visible again,\r\n            // because the containing <div> is recreated in the overlay's onAdd() method.\r\n            imageOverlay.prototype.toggleDOM = function () {\r\n                if (map.getMap()) {\r\n                    // Note: setMap(null) calls OverlayView.onRemove()\r\n                    setMap(null);\r\n                } else {\r\n                    setMap(this.map_);\r\n                }\r\n            };\r\n\r\n            setMapPostionCenter();\r\n        };\r\n    },\r\n});\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.navigation = function () {\r\n/*\r\n    var navWidth = 256,\r\n\t\tmenuBreakWidth = Tivoli.settings.width.large,\r\n\t\tanimationTiming = Tivoli.settings.animation.timing;\r\n\r\n    function init() {\r\n\t\tmenuHandle();\r\n\t\tbasketActivation();\r\n\t\texitAllOpenStates();\r\n\t\ttopWidgetActivation();\r\n\t}\r\n\r\n\tfunction topWidgetToggle() {\r\n    \tif (!Tivoli.globalStates.state.topWidgetOpen) {\r\n    \t\tTivoli.globalStates.setState.topWidget.open();\r\n\t\t} else if (Tivoli.globalStates.state.topWidgetOpen) {\r\n\t\t\tTivoli.globalStates.setState.topWidget.close();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction topWidgetActivation() {\r\n\t\tvar $topWidgetTrigger = $('.js-open-top-widget');\r\n\t\tvar activated;\r\n\r\n\t\t$topWidgetTrigger .on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif(!activated) {\r\n\t\t\t\tactivated = true;\r\n\t\t\t\tsetTimeout(function(){ activated = false; }, animationTiming);\r\n\t\t\t\ttopWidgetToggle();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction asideContentOpen() {\r\n\t\tif (!Tivoli.globalStates.state.asideOpen) {\r\n\t\t\tif (Tivoli.globalStates.state.topWidgetOpen) {\r\n\t\t\t\ttopWidgetToggle();\r\n\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\tTivoli.globalStates.setState.aside.open();\r\n\t\t\t\t}, Tivoli.settings.animation.timing);\r\n\t\t\t} else {\r\n\t\t\t\tTivoli.globalStates.setState.aside.open();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction basketActivation() {\r\n\t\tvar basketTrigger = $('.js-slideout-right-basket');\r\n\t\tvar $slideoutRightContainer = $('.slideout-right-section');\r\n\t\tvar activated;\r\n\r\n\t\tbasketTrigger.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif ($slideoutRightContainer.length === 0) {\r\n\t\t\t    return;\r\n\t\t\t}\r\n\r\n\t\t\tif(!activated) {\r\n\t\t\t\tactivated = true;\r\n\t\t\t\tsetTimeout(function(){ activated = false; }, animationTiming);\r\n\t\t\t\tasideContentOpen();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n    function menuOpen() {\r\n        if (!Tivoli.globalStates.state.menuOpen) {\r\n\t\t\tTivoli.globalStates.setState.menu.open();\r\n    \t}\r\n\t}\r\n\r\n\t// MENU BUTTON ACTIVIATION\r\n    function menuHandle() {\r\n\r\n        var $menuBtn = $('.menu-button');\r\n        var activated;\r\n\r\n\t\t$menuBtn.on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n      console.log('menuHandle');\r\n\t\t\tif(!activated) {\r\n\t\t\t\tactivated = true;\r\n\t\t\t\tsetTimeout(function(){ activated = false; }, animationTiming);\r\n\t\t\t\tmenuOpen();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// EXIT MENU or ASIDE CONTENT\r\n\tfunction exitAllOpenStates() {\r\n    \tvar $exitNavOverlay = $('.js-menuoverlay-exit');\r\n\r\n\t\t$exitNavOverlay.on('click', function() {\r\n\t\t\t// Navigation can be open while using top widget\r\n\t\t\tif (Tivoli.globalStates.state.menuOpen && Tivoli.globalStates.state.topWidgetOpen) {\r\n\t\t\t\tTivoli.globalStates.setState.menu.close();\r\n\t\t\t} else {\r\n\t\t\t\tTivoli.globalStates.setState.closeAll();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n*/\r\n\r\n\r\n\r\n\t// CLOSE MENU, WHEN MENU-LINKS ARE CLICKED\r\n\t// function closeMenuOnClick() {\r\n\t// \tvar $menuItem = $('.main-nav, .sup-main-nav').find('a').not('a[href*=#]');\r\n\t//\r\n\t// \t$menuItem.on('click', function(e) {\r\n\t// \t\tif (menuBreakWidth > windowWidth) {\r\n\t// \t\t\te.preventDefault();\r\n\t// \t\t\tvar href = $(this).attr('href');\r\n\t// \t\t\tmenuOpen(); // CLOSE MENU, WHEN \"NORMAL\" MENU-ITEM IS CLICKED\r\n\t// \t\t\tsetTimeout(function() {\r\n\t// \t\t\t\twindow.location = href; // Wait until animation has been set\r\n\t// \t\t\t}, 600);\r\n\t// \t\t}\r\n\t// \t});\r\n\t// }\r\n\r\n\t// function menuAnchorLinks() {\r\n\t// \tvar navAnchorLink = $('.main-nav li').find('a[href*=\"#\"]');\r\n\t// \tvar currentPath = window.location.href.split('#')[0];\r\n\t//\r\n\t// \tvar anchorTarget;\r\n\t// \tvar animationLength = 550;\r\n\t// \tvar anchorAnimRunning;\r\n\t//\r\n\t// \tnavAnchorLink.on('click', function(e) {\r\n\t// \t\tvar link       = $(this).attr('href');\r\n\t// \t\tvar linkArray  = link.split('#');\r\n\t// \t\tvar navId      = (typeof linkArray[1] !== 'undefined') ? linkArray[1] : null;\r\n\t// \t\tvar targetPath = linkArray[0];\r\n\t//\r\n\t// \t\te.preventDefault();\r\n\t//\r\n\t// \t\tif(targetPath === currentPath && navId || targetPath === \"\") {\r\n\t// \t\t    scrollTarget('#' + navId);\r\n\t// \t\t    $('.main-nav li .is-active').removeClass('is-active');\r\n\t// \t\t    $(this).addClass('is-active');\r\n\t// \t\t} else if (navId) {\r\n\t// \t\t\te.preventDefault();\r\n\t// \t\t\twindow.location = targetPath+'#'+navId;\r\n\t// \t\t}\r\n\t//\r\n\t// \t\tfunction scrollTarget(whereTo) {\r\n\t// \t\t    anchorTarget = (Math.abs($body.offset().top)) + ($(whereTo).offset().top - menuTopHeight);\r\n\t// \t\t}\r\n\t//\r\n\t// \t\tif(!anchorAnimRunning) {\r\n\t// \t\t\tanchorAnimRunning = true;\r\n\t// \t\t\t$bodyhtml.animate({\r\n\t// \t\t\t\tscrollTop: anchorTarget\r\n\t// \t\t\t}, animationLength, function() {\r\n\t// \t\t\t\t$html.removeClass('menu-is-active');\r\n\t// \t\t\t\tanchorAnimRunning = false;\r\n\t// \t\t\t});\r\n\t// \t\t}\r\n\t// \t});\r\n\t// }\r\n\r\n    // function externalAnchorLinks() {\r\n    //     var anchorTarget;\r\n    //     var animationLength = 1;\r\n\t//\r\n    //     var link = window.location + '';\r\n    //     var linkArray = link.split('#');\r\n    //     var navId = (typeof linkArray[1] !== 'undefined') ? linkArray[1] : null;\r\n\t//\r\n    //     if (navId) {\r\n    //         var targetId = $(\"#\" + navId).length !== 'undefined' ? $(\"#\" + navId) : '';\r\n\t//\r\n    //         if (targetId.length <= 0) {\r\n    //             return;\r\n    //         }\r\n    //\r\n    //         anchorTarget = (Math.abs($body.offset().top)) + ($('#' + navId).offset().top - menuTopHeight);\r\n\t//\r\n    //         $bodyhtml.animate({\r\n    //             scrollTop: anchorTarget\r\n    //         }, animationLength, function() {\r\n    //         });\r\n    //     }\r\n    // }\r\n\r\n\r\n/*\tfunction menuSize() {\r\n\t\tif (!Tivoli.globalStates.state.menuOpen && Tivoli.vars.windowWidth < menuBreakWidth) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn navWidth;\r\n\t}\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        size: menuSize\r\n    };*/\r\n}();","var tivoli = tivoli || {};\r\n\r\nTivoli.printProgram = (function () {\r\n\r\n\tvar $printDayProgramBtn,\r\n\t\tprintProgram = false,\r\n\t\tprogramDate = false;\r\n\r\n\tfunction init() {\r\n\r\n\t\t$printDayProgramBtn = $('.js-print-program');\r\n\r\n\t\tif($printDayProgramBtn.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetClickEvent();\r\n\t\tprintListener();\r\n\r\n\t}\r\n\r\n\tfunction setClickEvent() {\r\n\t\t$printDayProgramBtn.on('click', function(e) {\r\n\t\t\tprintProgram = true;\r\n\t\t\tTivoli.Filter.clearFilters();\r\n\t\t\tsetData($(this));\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getProgramDate($elem) {\r\n\t\tvar programData = $elem.data('program-date');\r\n\t\treturn programData;\r\n\t}\r\n\r\n\tfunction setData($elem) {\r\n\t\tvar dateString = getProgramDate($elem);\r\n\t\tvar date = moment(dateString, \"DD-MM-YYYY\").toDate();\r\n\t\tprogramDate = dateString;\r\n\t\t$('.daterange').daterangepicker( \"setRange\", {start: date, end: date} );\r\n\t}\r\n\r\n\tfunction unsetDate() {\r\n\t\t$('.daterange').daterangepicker( \"clearRange\" );\r\n\t}\r\n\r\n\tfunction printListener() {\r\n\t\t$(document).one('filterSearchComplete', function () {\r\n\t\t\tprintProgramPage();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction printProgramPage() {\r\n\t\tif(printProgram) {\r\n\t\t\tTivoli.Shop.Tracking.digitalDataProgramPrint(moment(programDate, \"DD-MM-YYYY\").format('dddd'), moment(programDate, \"DD-MM-YYYY\").format('MMMM Do YYYY'));\r\n\t\t\twindow.print();\r\n\t\t\tprintProgram = false;\r\n\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tunsetDate();\r\n\t\t\t}, 500)\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).on('filterSearchComplete', function () {\r\n\t\tinit();\r\n\t});\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.Shop = Tivoli.Shop || {};\r\n\r\nTivoli.Shop.Product = function () {\r\n   \r\n    function toggleOption(option, show) {\r\n        option.toggle(show);\r\n        if (show) {\r\n            if (option.parent('span.toggleOption').length)\r\n                option.unwrap();\r\n        } else {\r\n            if (option.parent('span.toggleOption').length == 0)\r\n                option.wrap('<span class=\"toggleOption\" style=\"display: none;\" />');\r\n        }\r\n    };\r\n\r\n    function init() {\r\n\r\n\r\n        handleDateButton();\r\n        handleBuyProduct();\r\n        handleQuantitySelectionForRelatedProducts();\r\n        handleChooseSubProduct();\r\n    }\r\n\r\n    function handleDateButton() {\r\n        $.each($(\".js-date-button\"), function() {\r\n            var dateButton = $(this);\r\n            dateButton.on(\"click\", function (e) {\r\n                e.preventDefault();\r\n                var productLink = dateButton.attr(\"href\");\r\n                var productQuantity = dateButton.closest(\".js-buy-container\").find(\"select\").val();\r\n                if($(this).hasClass(\"js-grouped-date-button\")) {\r\n                    productQuantity = dateButton.parents(\".js-buy-container\").find(\".js-product-quantity\").val();\r\n                }\r\n                window.location = productLink + \"?quantity=\" + productQuantity;\r\n            });\r\n        });\r\n    }\r\n\r\n\r\n    function handleQuantitySelectionForRelatedProducts() {\r\n        $.each($(\".js-buy-container\"), function () {\r\n            var products = $(this).find(\".js-product\").andSelf().filter(\".js-product\");\r\n            var quantity = Tivoli.getUrlParameterByName(\"quantity\");\r\n            var mainProduct = null;\r\n            var relatedProducts = [];\r\n\r\n            // Find main product and related products\r\n            $.each(products, function() {\r\n                var product = $(this);\r\n                if (product.data(\"type\") === \"related\") {\r\n                    relatedProducts.push(createProductObject(product));\r\n                } else {\r\n                    mainProduct = createProductObject(product);\r\n                    if (quantity != \"\") {\r\n                        mainProduct.ddl.val(quantity);\r\n                    }\r\n                }\r\n            });\r\n\r\n            function onChange() {\r\n                handleChange($(this));\r\n            }\r\n            \r\n            function handleChange($elem) {\r\n                var selectionStr = $elem.val();\r\n                var selection = parseInt(selectionStr);\r\n                for (var i = 0; i < relatedProducts.length; i++) {\r\n                    var relProd = relatedProducts[i];\r\n\r\n                    // If value for related product is higher than main product - reduce value to same as main product\r\n                    var relSelection = parseInt(relProd.ddl.val());\r\n                    if (relSelection > selection) {\r\n                        relProd.ddl.val(selectionStr);\r\n                    }\r\n\r\n                    // Hide options with values above main selection\r\n                    $.each(relProd.ddl.find(\"option\"), function () {\r\n                        var option = $(this);\r\n\r\n                        if (parseInt(option.attr(\"value\"), 10) > selection) {\r\n                            // Beware: For this to work, jquery.selectric.js has been modified line 188-190\r\n                            toggleOption(option, false);\r\n                        } else {\r\n                            toggleOption(option, true);\r\n                        }\r\n                    });\r\n\r\n                    // Needed to be called twice in order for refresh to work properly\r\n                    relProd.ddl.selectric('refresh');\r\n                    relProd.ddl.selectric('refresh');\r\n                }\r\n            }\r\n\r\n            mainProduct.ddl.on('change', onChange);\r\n            mainProduct.ddl.selectric({\r\n                onChange: onChange\r\n            });\r\n\r\n            handleChange(mainProduct.ddl);\r\n        });\r\n    }\r\n    \r\n    function createProductObject($product) {\r\n        return {\r\n            dom: $product,\r\n            ddl: $product.find(\".js-product-quantity\").first()\r\n        };\r\n    }\r\n\r\n    function handleChooseSubProduct() {\r\n        var selects = $(\".js-product-select\");\r\n        if (selects.length === 0) {\r\n            return;\r\n        }\r\n\r\n        var onChange = function (select) {\r\n            var product = select.parents(\".js-product\");\r\n            if (!product.hasClass(\"js-is-product-group\")) {\r\n                return;\r\n            }\r\n\r\n            var container = select.parents(\".js-product-container\");\r\n            var subTitles = container.find(\".js-product-subtitle\");\r\n            var selectedId = select.val();\r\n\r\n            //Google analytics product data\r\n            var gaName = select.find('option:selected').data(\"ga-product-name\");\r\n            var gaId = select.find('option:selected').data(\"ga-product-id\");\r\n            var gaCategory = select.find('option:selected').data(\"ga-product-category\");\r\n            var gaPrice = select.find('option:selected').data(\"ga-product-price\");\r\n            var gaDetailView = product.data('ga-detail-view');\r\n            \r\n            var productRequiresDate  = select.find('option:selected').data('product-specific-date');\r\n            var productLink  = select.find('option:selected').data('product-link');\r\n            \r\n\r\n            \r\n\r\n            // Update productId\r\n            product.data(\"product-id\", selectedId);\r\n\r\n            //Update product with correct ga data\r\n            product.data(\"ga-product-name\", gaName);\r\n            product.data(\"ga-product-id\", gaId);\r\n            product.data(\"ga-product-price\", gaPrice);\r\n            product.data(\"ga-product-category\", gaCategory);\r\n            product.data('ga-detail-view', gaDetailView);\r\n\r\n            // Show/hide subtitles\r\n            subTitles.each(function() {\r\n                if ($(this).data(\"id\") === selectedId) {\r\n                    $(this).show();\r\n                } else {\r\n                    $(this).hide();\r\n                }\r\n            });\r\n\r\n            // Update buy button disabled + toggle product-quantity-visibility\r\n            var button = container.find(\".js-buy-button\");\r\n            var datespecificBuyButton = container.find('.js-grouped-date-button')\r\n            var quantitySelector = container.find(\".js-product-quantity-container\");\r\n            \r\n            //Handle datespecific \r\n            if(productRequiresDate === \"True\") {\r\n                button.hide();\r\n                datespecificBuyButton.show();\r\n                datespecificBuyButton.attr('href', productLink);\r\n            } else {\r\n                button.show();\r\n                datespecificBuyButton.hide();\r\n            }\r\n\r\n            if (selectedId) {\r\n                button.removeClass(\"disabled\");\r\n                quantitySelector.removeClass(\"product-quantity-hidden\");\r\n                container.addClass(\"product-container--forced-open\");\r\n                \r\n            } else {\r\n                button.addClass(\"disabled\");\r\n                quantitySelector.addClass(\"product-quantity-hidden\");\r\n\t\t\t\tcontainer.removeClass(\"product-container--forced-open\");\r\n            }\r\n        };\r\n\r\n        selects.on(\"change\", function() {\r\n            onChange($(this));\r\n        });\r\n\r\n        selects.each(function () {\r\n            onChange($(this));\r\n        });\r\n    }\r\n\r\n    function handleBuyProduct() {\r\n        $.each($(\".js-buy-button\"), function () {\r\n            var buttonState = {\r\n                errorTimeout: null\r\n            };\r\n            var buyButton = $(this);\r\n            buyButton.on(\"click\", function (e) {\r\n                e.preventDefault();\r\n\r\n                if (buyButton.hasClass(\"disable\")) {\r\n                    return;\r\n                }\r\n                \r\n                var loading = buyButton.data(\"loading\");\r\n                if (loading) {\r\n                    return;\r\n                }\r\n\r\n                // The buy container contains all the products that are part of a purchase, by clicking the buy button\r\n                var buyContainer = $(this).parents(\".js-buy-container\");\r\n                if (buyContainer.length === 0) {\r\n                    return;\r\n                }\r\n                if (buyContainer.length > 1) {\r\n                    buyContainer = buyContainer.first();\r\n                }\r\n\r\n                var products = buyContainer.find(\".js-product\").andSelf().filter(\".js-product\");\r\n                if (products.length === 0) {\r\n                    return;\r\n                }\r\n\r\n                // Only one related product supported atm.\r\n                var mainProd;\r\n                var relatedProd;\r\n                var relatedProducts = [];\r\n                var googleAnalyticsProdutPage = \"\";\r\n                var googleAnalyticsProducts = [];\r\n                $.each(products, function() {\r\n                    var product = $(this);\r\n                    if (product.data(\"type\") === \"related\") {\r\n                        relatedProducts.push(product);\r\n                    } else {\r\n                        mainProd = product;\r\n                    }\r\n                });\r\n\r\n                if (!mainProd) {\r\n                    return;\r\n                }\r\n\r\n                if (!mainProd.data(\"product-id\")) {\r\n                    return;\r\n                }\r\n                \r\n                buyButton.data(\"loading\", true);\r\n                buyButton.addClass(\"loading\");\r\n                \r\n                removeErrorMessage(buyButton, buttonState);\r\n\r\n                var requestData = {};\r\n                requestData.CurrentItemPath = Tivoli.getCurrentItemPath();\r\n\r\n                requestData.MainProduct = {\r\n                    ProductId: mainProd.data(\"product-id\"), Quantity: mainProd.find(\".js-product-quantity\").val()\r\n                };\r\n\r\n                var gaMainProduct = {\r\n                    'name' : mainProd.data('ga-product-name'),\r\n                    'id' : mainProd.data('ga-product-id'),\r\n                    'price': mainProd.data('ga-product-price'),\r\n                    'category': mainProd.data('ga-product-category'),\r\n                    'quantity': requestData.MainProduct.Quantity\r\n                }\r\n                googleAnalyticsProdutPage = mainProd.data('ga-detail-view');\r\n\r\n                googleAnalyticsProducts.push(gaMainProduct);\r\n\r\n                var mainProductDatePicker = mainProd.find(\".js-product-date\").siblings('.datepicker-simple-inner');\r\n                if (mainProductDatePicker.length > 0) {\r\n                    var mainProductDate = mainProductDatePicker.datepicker(\"getDate\");\r\n                    if (mainProductDate) {\r\n                        requestData.MainProduct.Date = Tivoli.dateUtil.formatLocalDate(mainProductDate);\r\n                    }\r\n                }\r\n                requestData.RelatedProducts = [];\r\n                if(relatedProducts.length > 0) {\r\n                    $.each( relatedProducts, function( index, value ){\r\n                        var relatedProduct = {\r\n                            ProductId: value.data(\"product-id\"), \r\n                            Quantity: value.find(\".js-product-quantity\").val()\r\n                        }\r\n                        requestData.RelatedProducts.push(relatedProduct);\r\n                        \r\n                        var gaRelatedProduct = {\r\n                            'name' : value.data('ga-product-name'),\r\n                            'id' : value.data('ga-product-id'),\r\n                            'price': value.data('ga-product-price'),\r\n                            'category': value.data('ga-product-category'),\r\n                            'quantity': relatedProduct.Quantity\r\n                        }\r\n                \r\n                        googleAnalyticsProducts.push(gaRelatedProduct);\r\n                    });\r\n                }\r\n                \r\n\r\n                var loader = buyButton.find(\".js-circle-loader\");\r\n                Tivoli.CircleLoader.loadInitial((loader), null);\r\n\r\n                // Add in-progress class to button\r\n                buyButton.addClass('button--in-progress');\r\n\r\n                $.ajax({\r\n                    url: \"/WebShop/Basket/BuyProduct\",\r\n                    traditional: true,\r\n                    data: JSON.stringify({ dto: requestData }),\r\n                    dataType: \"json\",\r\n                    contentType: \"application/json; charset=utf-8\",\r\n                    error: function (err) {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                        showFailureIcon(buyButton, buttonState);\r\n                        Tivoli.ButtonMessage.showErrorMessage(buyButton, err);\r\n                        loadingEnded(buyButton);\r\n                    },\r\n                    success: function (data) {\r\n                        if (data.Success) {\r\n                            Tivoli.CircleLoader.loadFinish(loader, function() {\r\n                                googleAnalyticsAddToBasketEvent(googleAnalyticsProducts, googleAnalyticsProdutPage);\r\n                                showSuccessIcon(buyButton);\r\n                                window.location.href = data.BasketUrl;\r\n\r\n                                // No load finished when going directly to the basket\r\n\r\n                                // USED FOR TESTING ERROR\r\n                               /* Tivoli.CircleLoader.reset(loader);\r\n                                showFailureIcon(buyButton, buttonState);\r\n                                Tivoli.ButtonMessage.showErrorMessage(buyButton, \"Produktet er udsolgt\");*/\r\n                                try{\r\n                                    var trackingUpdate = {\r\n                                        productName : gaMainProduct.name,\r\n                                        productId : gaMainProduct.id,\r\n                                        quantityChange: gaMainProduct.quantity\r\n                                    }\r\n                                    Tivoli.Shop.Tracking.pushDigitalDataCartQuantityUpdate([trackingUpdate]);\r\n                                }catch(err){}\r\n                            });\r\n\r\n                        } else {\r\n                            Tivoli.CircleLoader.reset(loader);\r\n                            showFailureIcon(buyButton, buttonState);\r\n                            Tivoli.ButtonMessage.showErrorMessage(buyButton, data.ErrorMessage);\r\n                            loadingEnded(buyButton);\r\n                        }\r\n                        \r\n                    },\r\n                    type: 'POST'\r\n                });\r\n            });\r\n\r\n        });\r\n    }\r\n    \r\n    function loadingEnded(buyButton) {\r\n        buyButton.data(\"loading\", false);\r\n        buyButton.removeClass(\"loading\");\r\n    }\r\n\r\n    function removeErrorMessage(item, buttonState) {\r\n        if (buttonState.errorTimeout) {\r\n            clearTimeout(buttonState.errorTimeout);\r\n            buttonState.errorTimeout = null;\r\n        }\r\n\r\n        item.removeClass('button--in-progress');\r\n        item.find('.icon-basket').fadeIn(300, function () {\r\n            item.find('.icon-error').remove();\r\n        });\r\n        Tivoli.ButtonMessage.removeMessage(item);\r\n        item.find('.icon-basket');\r\n    }\r\n\r\n    function showFailureIcon(item, buttonState) {\r\n        item.find('.icon-basket').fadeOut(300, function() {\r\n            $(this).after('<span class=\"button-error icon-error\"></span>');\r\n        });\r\n\r\n        buttonState.errorTimeout = setTimeout(function () {\r\n            removeErrorMessage(item, buttonState);\r\n        }, 10000);\r\n    }\r\n\r\n    function showSuccessIcon(item) {\r\n        item.find('.icon-basket').fadeOut(300, function() {\r\n            $(this).after('<span class=\"checkbox-anim\"></span>');\r\n        });\r\n    }\r\n\r\n    function googleAnalyticsAddToBasketEvent(products, detailView) {\r\n        dataLayer.push({\r\n            event: 'addToCartTivoliDk',\r\n            ecommerce: {\r\n                add: {\r\n                    actionField: {\r\n                        list: detailView, // -> ’produktoversigt’ eller ’produktside’ eller ’kurvsiden’ \r\n                        dimension4: 'Tivoli.dk', // fast værdi -> skelne mellem tivoli.dk og billetlugen etc.\r\n                    },\r\n                    'products':  products\r\n                }\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n}();","var tivoli = tivoli || {};\r\n\r\nTivoli.program = (function () {\r\n\r\n\tfunction init() {\r\n\t\t$events = $('.js-filter-result');\r\n\r\n\t\tif($events.length === 0) {\r\n\t\t\treturn;\r\n        }\r\n        \r\n        $events.each(function(index) {\r\n            var programLinks = $(this).find('a'),\r\n                programName = $(this).data('name'),\r\n                programDate = $(this).data('date');\r\n\r\n            programLinks.on('click', function() {\r\n                Tivoli.Shop.Tracking.digitalDataProgramClick(programName, programDate);\r\n            })\r\n        });\r\n\t}\r\n\r\n\t$(document).on('filterSearchComplete', function () {\r\n\t\tinit();\r\n\t});\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.radiobuttons = function () {\r\n\t$.fn.customRadiobutton = function() {\r\n\t\tvar domElements = '<div><span class=\"unchecked\"></span><span class=\"checked\"></span></div>';\r\n\r\n\t\tthis.each(function() {\r\n\r\n\t\t\tvar radioButton = $(this);\r\n\r\n\t\t\tradioButton.addClass('custom-radiobutton');\r\n\t\t\tradioButton.after(domElements);\r\n\r\n\t\t\t// Detech amount of text in label\r\n\t\t\tif(radioButton.siblings('div').height() < radioButton.siblings('label').height()) {\r\n\t\t\t\tradioButton.parent().addClass('label-overflow');\r\n\t\t\t};\r\n\r\n\t\t\t// On click on \"radio\" imitator\r\n\t\t\tradioButton.siblings('div').on('click touchsend', function(e) {\r\n\t\t\t\tvar input = $(this).siblings(':radio');\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tclickHandler(input);\r\n\t\t\t});\r\n\r\n\t\t\t// On click on \"radio\" / or label\r\n\t\t\tfunction clickHandler(input) {\r\n\t\t\t\tif (!input.prop('checked')) {\r\n\t\t\t\t\tinput.closest('label').addClass('active');\r\n\t\t\t\t\tinput.prop('checked', true);\r\n\r\n\t\t\t\t}\r\n\t\t\t\tinput.change();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t};\r\n\r\n\tfunction init() {\r\n\t\t//$(':radio').customRadiobutton();\r\n        $(':radio').not('.preventCustomRadio').customRadiobutton();\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.RestrictionModal = (function () {\r\n\r\n\tvar vars = {\r\n\t\tcookie: Tivoli.Cookies\r\n\t};\r\n\r\n\tvar $restrictionModal = $('.restriction-modal'),\r\n\t\t$container= $('#site-container'),\r\n\t\t$html = $('html'),\r\n\t\t$buttonDecline = $('.js-restriction-decline'),\r\n\t\t$buttonApprove = $('.js-restriction-approve');\r\n\r\n\tvar disclaimer = vars.cookie.get(\"cookieDisclaimer\");\r\n\tvar ageRestrictionApproval = vars.cookie.get(\"ageRestrictionApproval\");\r\n\r\n\tfunction init () {\r\n\t\tif(ageRestrictionApproval === \"true\" || $restrictionModal.length <= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\toutputModal();\r\n\r\n\t};\r\n\r\n\tfunction outputModal() {\r\n\t\t$restrictionModal.show();\r\n\t\t$container.after($restrictionModal);\r\n\t\t$html.addClass('overlay-active');\r\n\t\t$container.addClass('overlay-blur');\r\n\r\n\r\n\t\t$buttonDecline.on('click', function() {\r\n\t\t\tdisableCookieDisclaimer();\r\n\t\t});\r\n\r\n\t\t$buttonApprove.on('click', function() {\r\n\t\t\tsetRestrictionCookie();\r\n\t\t\tcloseRescrictionModal();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction closeRescrictionModal() {\r\n\t\t$html.removeClass('overlay-active');\r\n\t\t$container.removeClass('overlay-blur');\r\n\t\t$restrictionModal.removeClass('restriction-modal--active');\r\n\r\n\t\tsetRestrictionCookie();\r\n\t\tdisableCookieDisclaimer();\r\n\r\n\t\tsetTimeout(function() {\r\n\t\t\t$restrictionModal.remove();\r\n\t\t}, 500);\r\n\t}\r\n\r\n\tfunction setRestrictionCookie() {\r\n\t\tvars.cookie.set(\"ageRestrictionApproval\", \"true\", 500);\r\n\t}\r\n\r\n\tfunction disableCookieDisclaimer() {\r\n\t\tvars.cookie.set(\"cookieDisclaimer\", \"true\", 500);\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n})();","var tivoli = tivoli || {};\r\n\r\nTivoli.search = (function () {\r\n\t\r\n\tfunction init(){\r\n\t\tif($(\".search-modal-section\").length === 0) {\r\n\t\t\treturn;\r\n\t\t} \r\n\t\t\r\n\t\t$('.js-search').on('click', function () {\r\n\t\t\topenSearchModal();\r\n\t\t});\r\n\r\n\t\t$(\".ModalSearchForm__close-button\").on('click', function () {\r\n\t\t\tcloseSearchModal();\r\n\t\t});\r\n\r\n\t\t$(\".SearchModalContent\").on('click', function (e) {\t\t\t\r\n\t\t\tif ($(e.target).hasClass('ModalSearchForm') || $(e.target).hasClass('ModalContent__frame')) {\r\n\t\t\t\tcloseSearchModal();\r\n\t\t\t}\r\n\t\t});\t\t\r\n\t}\r\n\r\n\tfunction openSearchModal() {\r\n\t\t$(\".search-modal-section\").show();\r\n\t\t$(\".ModalSearchForm__input\").val(\"\");\r\n\t\t$(\".ModalSearchForm__input\").focus();\t\t\r\n\t\tdocument.addEventListener('keydown', function(e) {\r\n\t\t\thandleKeyPress(e);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction handleKeyPress(e){\r\n\t\tvar keyName = e.key;\r\n\t\tif (keyName === 'Escape') {\r\n\t\t closeSearchModal();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction closeSearchModal() {\r\n\t\tpushDigitalData();\r\n\t\t$(\".search-modal-section\").hide();\r\n\t\tdocument.removeEventListener('keydown', function(e) {\r\n\t\t\thandleKeyPress(e);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction pushDigitalData() {\r\n\t\tTivoli.Shop.Tracking.digitalDataSearch(window.CludoSearch.totalDocuments, window.CludoSearch.params.query);\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n\r\n\treturn {\r\n\t   close : closeSearchModal\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.tooltip = function () {\r\n\r\n    var isTouch = Modernizr.touch;\r\n\r\n    $.fn.tooltip = function () {\r\n        this.each(function () {\r\n\r\n            var tooltip = $(this);\r\n            var tooltipMessage = tooltip.data('tip');\r\n            var tooltipIcon = '<span class=\"tooltip__icon\"></span>';\r\n            var tooltipMessageContainer = '<div class=\"tooltip__message\">' + tooltipMessage + '</div>';\r\n\r\n            // APPEND tooltip HTML\r\n            tooltip.find('div').prepend(tooltipIcon);\r\n            tooltip.find('div').find('.tooltip__icon').prepend(tooltipMessageContainer);\r\n\r\n\r\n            if(!isTouch) {\r\n                tooltip.find('.tooltip__icon').on('mouseover', function() {\r\n                    tooltip.addClass('tooltip__message--active');\r\n                });\r\n                tooltip.find('.tooltip__icon').on('mouseout', function() {\r\n                    tooltip.removeClass('tooltip__message--active');\r\n                });\r\n\r\n            } else {\r\n                classToggleTouch(tooltip);\r\n            }\r\n        });\r\n    };\r\n    function classToggleTouch(tooltip) {\r\n        //console.log(tooltip.find('.tooltip__icon'))\r\n        tooltip.find('.tooltip__icon').on('touchend ', function() {\r\n            if(tooltip.is('tooltip__message--active')) {\r\n                tooltip.removeClass('tooltip__message--active');\r\n            } else {\r\n                tooltip.addClass('tooltip__message--active');\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n    function init() {\r\n\r\n        if($('.js-tooltip').length === 0) {\r\n            return;\r\n        }\r\n\r\n        $('.js-tooltip').tooltip();\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n}();","var Tivoli = Tivoli || {};\r\nTivoli.Shop = Tivoli.Shop || {};\r\n\r\nTivoli.Shop.Tracking = function () {\r\n\r\n    function init() {\r\n        loadConsent();\r\n        setTimeout(function () { addCrossDomainTracking(true); }, 500)\r\n    };\r\n\r\n    function loadConsent() {\r\n        var urlParams = new URLSearchParams(window.location.search);\r\n\r\n        if (urlParams) {\r\n            var myParam = urlParams.get('cookiesOff');\r\n\r\n            if (document.referrer === \"app\" || myParam) {\r\n                CookieInformation.declineAllCategories();\r\n            }\r\n        }\r\n\r\n        window.addEventListener('CookieInformationConsentGiven', function (event) {\r\n            if (CookieInformation.getConsentGivenFor('cookie_cat_statistic')) {\r\n                Tivoli.Cookies.set('sat_track', true, 24);\r\n            }\r\n            else {\r\n                Tivoli.Cookies.set('sat_track', false, 24);\r\n            }\r\n            if (CookieInformation.getConsentGivenFor('cookie_cat_marketing')) {\r\n                Tivoli.Cookies.set('sat_track_marketing', true, 24);\r\n\r\n                // Reinstate tracking if cookies accepted\r\n                loadAllTrackingProducts();\r\n                promotionalTracking();\r\n                promotionalClickTracking();\r\n                heroClickTracking();\r\n            }\r\n            else {\r\n                Tivoli.Cookies.set('sat_track_marketing', false, 24);\r\n            }\r\n        }, false);\r\n\r\n    }\r\n\r\n    function heroClickTracking() {\r\n        try {\r\n            $('.hero-content a, .js-promotional-tracking-click').each(function () {\r\n                var ariaLabel = $(this).attr('aria-label');\r\n                var textLabel = $(this).text();\r\n                var trackingDataAttribute = $(this).attr('data-tracking-clicktext');\r\n\r\n                if (typeof (trackingDataAttribute) !== 'undefined' && trackingDataAttribute.length > 0) {\r\n                    $(this).on('click', function () {\r\n                        var event = {\r\n                            event: 'banner_cta_click',\r\n                            cta_button: trackingDataAttribute\r\n                        };\r\n                        dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n                        dataLayer.push(event);\r\n                        console.log(event);\r\n                    })\r\n                }\r\n                else if (typeof (ariaLabel) !== 'undefined' && ariaLabel.length > 0) {\r\n                    $(this).on('click', function () {\r\n                        var event = {\r\n                            event: 'banner_cta_click',\r\n                            cta_button: ariaLabel\r\n                        };\r\n                        dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n                        dataLayer.push(event);\r\n                        console.log(event);\r\n                    })\r\n                } else if (typeof (textLabel) !== 'undefined' && textLabel.length > 0) {\r\n                    $(this).on('click', function () {\r\n                        var event = {\r\n                            event: 'banner_cta_click',\r\n                            cta_button: textLabel\r\n                        };\r\n                        dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\r\n                        dataLayer.push(event);\r\n                        console.log(event);\r\n                    })\r\n                }\r\n\r\n            })\r\n        } catch (err) {\r\n            console.log(err)\r\n        }\r\n    }\r\n\r\n    function addCrossDomainTracking(initalRun) {\r\n        initalRun = typeof initalRun !== 'undefined' ? initalRun : false;\r\n        try {\r\n            if (typeof (window) != \"undefined\" && typeof (window.Visitor) != \"undefined\" && typeof (adobe_mcoid) != \"undefined\") {\r\n                var visitor = window.Visitor.getInstance(adobe_mcoid, { overwriteCrossDomainMCIDAndAID: true });\r\n                for (var i = 0; i < adobe_domains.length; i++) {\r\n                    var domain = adobe_domains[i]\r\n                    var outboudLinks = jQuery('a[href*=\"' + domain + '\"]').not('[href*=\"adobe_mc=\"]');\r\n                    for (var j = 0; j < outboudLinks.length; j++) {\r\n                        var link = outboudLinks[j];\r\n                        var currentURL = jQuery(link).attr(\"href\")\r\n                        jQuery(link).attr(\"href\", visitor.appendVisitorIDsTo(currentURL))\r\n                    }\r\n                }\r\n            } else if (initalRun) {\r\n                setTimeout(function () { addCrossDomainTracking(false); }, 500)\r\n            }\r\n        } catch (err) {\r\n        }\r\n    }\r\n\r\n    function promotionalTracking() {\r\n        $('.js-promotional-tracking').appear();\r\n        $('.js-promotional-tracking').on('appear', function () {\r\n            dataLayer.push({\r\n                event: 'promotionViewTivoliDk',\r\n                ecommerce: {\r\n                    promoView: {\r\n                        promotions: [{\r\n                            id: $(this).data('tracking-id'),\r\n                            name: $(this).data('tracking-name'),\r\n                            creative: $(this).data('tracking-creative'),\r\n                            position: window.location.href\r\n                        }]\r\n                    }\r\n                }\r\n            });\r\n            digitalDataPromotionInview($(this).data('tracking-creative'));\r\n            $(this).off();\r\n        });\r\n        $.force_appear();\r\n    };\r\n\r\n    function promotionalClickTracking() {\r\n        $('.js-promotional-tracking-click').on('click', function () {\r\n            var $trackingElm = $(this).parents('.js-promotional-tracking');\r\n            dataLayer.push({\r\n                event: 'promotionClickTivoliDk',\r\n                ecommerce: {\r\n                    promoClick: {\r\n                        promotions: [{\r\n                            id: $trackingElm.data('tracking-id'),\r\n                            name: $trackingElm.data('tracking-name'),\r\n                            creative: $trackingElm.data('tracking-creative') + \":\" + $(this).data('tracking-clicktext'),\r\n                            position: window.location.href\r\n                        }]\r\n                    }\r\n                }\r\n            });\r\n            digitalDataPromotionClick($trackingElm.data('tracking-creative'));\r\n        });\r\n    };\r\n\r\n    function loadAllTrackingProducts() {\r\n        var gaProducts = [];\r\n        var detailViewPage = 'productoverview';\r\n\r\n\r\n        $(\".js-product-tracking:not(.js-is-product-group)\").each(function () {\r\n            var product = $(this);\r\n\r\n            var gaProduct = {\r\n                'name': product.data('ga-product-name'),\r\n                'id': product.data('ga-product-id'),\r\n                'price': product.data('ga-product-price'),\r\n                'category': product.data('ga-product-category')\r\n            }\r\n\r\n            if (product.data('ga-detail-view') === 'productpage') {\r\n                detailViewPage = 'productPage';\r\n            }\r\n\r\n            gaProducts.push(gaProduct);\r\n        });\r\n\r\n        if (gaProducts.length > 0) {\r\n            handleGoogleAnalyticsDetailViewEvent(gaProducts, detailViewPage);\r\n        }\r\n    };\r\n\r\n    function handleGoogleAnalyticsDetailViewEvent(products, detailView) {\r\n        dataLayer.push({\r\n            event: 'detailViewTivoliDk',\r\n            ecommerce: {\r\n                detail: {\r\n                    actionField: {\r\n                        list: detailView, // -> ’produktoversigt’ eller ’produktside’\r\n                        dimension4: 'Tivoli.dk' // fast værdi -> skelne mellem tivoli.dk og billetlugen etc.\r\n                    },\r\n                    'products': products\r\n                }\r\n            }\r\n        });\r\n    };\r\n\r\n    function digitalDataSearch(results, query) {\r\n        initDigitalDataArray();\r\n\r\n        digitalData.push({\r\n            \"event\": \"Onsite Search\",\r\n            \"search\": {\r\n                \"onsiteSearchTerm\": query, // i.e. \"tivolikort\" \r\n                \"onsiteSearchResults\": results // Amount of search results for given search query    \r\n            },\r\n        });\r\n    };\r\n\r\n    function digitalDataPromotionInview(name) {\r\n        initDigitalDataArray();\r\n\r\n        digitalData.push({\r\n            \"event\": \"Internal Banner Impressions\",\r\n            \"interaction\": {\r\n                \"action\": \"Impressions\",\r\n                \"label\": name, // i.e. \"Sanne - The Musical\"\r\n                \"type\": \"Internal promotions\",\r\n            },\r\n        });\r\n    };\r\n\r\n    function digitalDataPromotionClick(name) {\r\n        initDigitalDataArray();\r\n\r\n        digitalData.push({\r\n            \"event\": \"Internal Banner Click\",\r\n            \"interaction\": {\r\n                \"action\": \"Click\",\r\n                \"label\": name, // i.e. \"Sanne - The Musical\"\r\n                \"type\": \"Internal promotions\",\r\n            },\r\n        });\r\n    };\r\n\r\n    function digitalDataProgramPrint(day, date) {\r\n        initDigitalDataArray();\r\n\r\n        digitalData.push({\r\n            \"event\": \"Program\",\r\n            \"interaction\": {\r\n                \"action\": \"Print\",\r\n                \"label\": day, // i.e. \"Sanne - The Musical\"\r\n                \"component\": date, // i.e. \"October 3, 2019\"\r\n                \"type\": \"Internal promotions\",\r\n            },\r\n        });\r\n    };\r\n\r\n    function digitalDataProgramClick(name, date) {\r\n        initDigitalDataArray();\r\n\r\n        digitalData.push({\r\n            \"event\": \"Program\",\r\n            \"interaction\": {\r\n                \"action\": \"Click\",\r\n                \"label\": name, // i.e. \"Sanne - The Musical\"\r\n                \"component\": date, // i.e. \"October 3, 2019\"\r\n                \"type\": \"Internal promotions\",\r\n            },\r\n        });\r\n    };\r\n\r\n    function initDigitalDataArray() {\r\n        digitalData = digitalData ? digitalData : [];\r\n    };\r\n\r\n    function pushDigitalDataCartAdd(updates) {\r\n        initDigitalDataArray();\r\n\r\n        var addProducts = [];\r\n        for (var i = 0; i < updates.length; i++) {\r\n            var ol = updates[i]\r\n            addProducts.push({\r\n                \"quantity\": ol.quantityChange,\r\n                \"productInfo\": [{\r\n                    \"productId\": ol.productId, // The ID attached to the product \r\n                    \"productName\": ol.productName, // The product friendly name\r\n                    \"productCategory\": ol.productCategory || \"\",\r\n                    \"productType\": ol.productType || \"\", //Add-on, Upsale\r\n                    \"sku\": ol.sku || \"\", // The SKU \r\n                    \"color\": \"\", // Color might not always be set, if it isn't send it empty\r\n                    \"size\": \"\", // Size might not always be set, if it isn't send it empty\r\n                    \"variant\": ol.variant || \"\", // Variant might not always be set, if it isn't send it empty\r\n                }]\r\n            });\r\n        }\r\n        digitalData.push({\r\n            \"event\": \"scAdd\",\r\n            \"product\": addProducts\r\n        });\r\n    };\r\n\r\n    function pushDigitalDataCartRemove(updates) {\r\n        initDigitalDataArray();\r\n\r\n        var removeProducts = [];\r\n        for (var i = 0; i < updates.length; i++) {\r\n            var ol = updates[i]\r\n            removeProducts.push({\r\n                \"quantity\": ol.quantityChange,\r\n                \"productInfo\": [{\r\n                    \"productId\": ol.productId, // The ID attached to the product \r\n                    \"productName\": ol.productName, // The product friendly name\r\n                    \"productCategory\": ol.productCategory || \"\",\r\n                    \"productType\": ol.productType || \"\", //Add-on, Upsale\r\n                    \"sku\": ol.sku || \"\", // The SKU \r\n                    \"color\": \"\", // Color might not always be set, if it isn't send it empty\r\n                    \"size\": \"\", // Size might not always be set, if it isn't send it empty\r\n                    \"variant\": ol.variant || \"\", // Variant might not always be set, if it isn't send it empty\r\n                }]\r\n            })\r\n        }\r\n\r\n\r\n        digitalData.push({\r\n            \"event\": \"scRemove\",\r\n            \"product\": removeProducts\r\n        });\r\n    };\r\n\r\n    function pushDigitalDataCartQuantityUpdate(updated) {\r\n        var updatedCopy = updated == null ? [] : updatedCopy\r\n        var added = []\r\n        var removed = []\r\n\r\n        for (var i = 0; i < updatedCopy.length; i++) {\r\n            var ol = updatedCopy[i]\r\n            if (ol.quantityChange > 0) {\r\n                added.push(ol)\r\n            } else {\r\n                var rmv = ol\r\n                rmv.quantityChange = -ol.quantityChange\r\n                rmv.push(rmv)\r\n            }\r\n        }\r\n        added.length > 0 && pushDigitalDataCartAdd(added)\r\n        removed.length > 0 && pushDigitalDataCartRemove(removed)\r\n    };\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        digitalDataSearch: digitalDataSearch,\r\n        digitalDataProgramPrint: digitalDataProgramPrint,\r\n        digitalDataProgramClick: digitalDataProgramClick,\r\n        pushDigitalDataCartQuantityUpdate: pushDigitalDataCartQuantityUpdate,\r\n        addCrossDomainTracking: addCrossDomainTracking\r\n    };\r\n\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.upload = function () {\r\n    var $form;\r\n    var uploadButton;\r\n    var texts;\r\n    var progressBar;\r\n    var validator;\r\n\tvar supportFileUpload = Modernizr.file;\r\n\tvar uploadInProgress = false;\r\n\tvar uploadComplete = false;\r\n\tvar uploadError = false;\r\n    var uploader = {};\r\n\r\n\tfunction init() {\r\n\t    initializeMoxieUpload();\r\n\t    \r\n\t    $('a.share').click(function (e) {\r\n\r\n\t        //We tell our browser not to follow that link\r\n\t        e.preventDefault();\r\n\t        //We trigger a new window with the Twitter dialog, in the middle of the page\r\n\t        window.open('https://www.facebook.com/sharer/sharer.php?u=' + window.location, 'facebook', 'height=450, width=550, top=' + ($(window).height() / 2 - 225) + ', left=' + $(window).width() / 2 + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0');\r\n\t    });\r\n\r\n\t    $form = $(\".js-show-form\");\r\n\t    texts = $(\".application-texts\");\r\n\t    uploadButton = $(\".js-file-upload\");\r\n\t    \r\n\t\tif($('.js-file-upload').length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$(\"#pickfiles\").on(\"click\", function (e) { e.preventDefault(); });\r\n\t\t$('input[type=file]').change(function () {\r\n\t\t    alert($(this).val());\r\n\t\t});\r\n\r\n\t\tuploadButton.on(\"click\", function (e) {\r\n\t\t    e.preventDefault();\r\n\t\t    if ($form.valid()) {\r\n\t\t        startProgress();\r\n\t\t        uploader.start();\r\n\t\t    }\r\n\t\t});\r\n\t\t$(\"#container div\").css({ \"z-index\": 9999 });\r\n\t\t$(\"#container div input\").css({ \"z-index\": 9999 });\r\n\t}\r\n\r\n\tfunction startProgress() {\r\n\t\tif(!uploadInProgress) {\r\n\t\t\tuploadInProgress = true;\r\n            var loadingText = texts.data(\"text-uploading\");\r\n\t\t\tvar progressBarHtml = \"<div class='progressbar'></div>\"; // To get progressbar effect manipulate width of this element (to 100%)\r\n            uploadButton.append(progressBarHtml);\r\n            if (uploadButton.find(\".load-text\").length === 0) {\r\n\t\t\t    uploadButton.find(\"span\").hide().after('<span class=\"load-text\">' + loadingText + '</span>');\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n    function postForm() {\r\n\t    var request = Tivoli.validation.createFormRequest($form, \"\");\r\n\t    var action = $form.attr(\"action\");\r\n\t    var type = $form.attr(\"method\");\r\n\t    if (!action || !type) {\r\n\t        return;\r\n\t    }\r\n\r\n\t    $.ajax({\r\n\t        url: action,\r\n\t        traditional: true,\r\n\t        data: JSON.stringify(request),\r\n\t        dataType: \"json\",\r\n\t        contentType: \"application/json; charset=utf-8\",\r\n\t        error: function (err) {\r\n\t            error();\r\n\t        },\r\n\t        success: function (data) {\r\n\t            if (data && !data.Success) {\r\n\t                error();\r\n\t            } else {\r\n\t                showApplicationFormReceipt();\r\n\t            }\r\n\t        },\r\n\t        type: type\r\n\t    });\r\n\t}\r\n\r\n\tfunction reset() {\r\n\t    uploadButton.find(\"span\").show();\r\n\t    uploadButton.find(\".load-text\").remove();\r\n\t    uploadButton.find(\".error-text\").remove();\r\n\t    uploadButton.find(\".progressbar\").remove();\r\n\r\n\t\tuploadInProgress = false;\r\n\t\tuploadComplete = false;\r\n\t\tuploadError = false;\r\n\t}\r\n\r\n\tfunction error() {\r\n\t    var errorText = texts.data(\"text-error\");\r\n\r\n\t\tif(!uploadError) {\r\n\t\t    uploadButton.find(\".load-text\").remove();\r\n\t\t    uploadButton.find(\"span\").hide().after('<span class=\"error-text\">' + errorText + '</span>');\r\n            uploadError = true;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction uploadSucces() {\r\n\t\tuploadComplete = true;\r\n\t    postForm();\r\n\t}\r\n\r\n\tfunction showApplicationFormReceipt() {\r\n\t    $(document).trigger(\"uploadSucces\");\r\n\t    clearForm();\r\n\t    reset();\r\n\t}\r\n\r\n\tfunction clearForm() {\r\n\t    $(\"#selectedfile\").html(\"\");\r\n\t    $form.find(\".js-validation-input\").each(function () {\r\n\t        if ($(this).is(\"input:checkbox\")) {\r\n\t            $(this).prop('checked', false);\r\n\t        }\r\n\t        $(this).val(\"\");\r\n\t    });\r\n\t}\r\n\r\n\tfunction initializeMoxieUpload()\r\n\t{\r\n\t    uploader = new plupload.Uploader({\r\n        // General settings\r\n\t    runtimes: 'html5,flash,silverlight,html4',\r\n\t    browse_button: 'pickfiles',//'js-file-upload', // you can pass in id...\r\n\t    container: 'container',\r\n        url: '/Features/File/Upload',\r\n        chunk_size: '1mb', //100k,\r\n        unique_names: true,\r\n        multipart: true,\r\n        multi_selection: false,\r\n        dragdrop: false,  \r\n        // Resize images on client-side if we can\r\n        resize: { width: 320, height: 240, quality: 90 },\r\n        flash_swf_url: '/js/tivoli-responsive/vendor/ie9/Moxie.swf',\r\n        silverlight_xap_url: '/js/tivoli-responsive/vendor/ie9/Moxie.xap',\r\n        filters: {\r\n            max_file_size: '500mb',\r\n\r\n            // Specify what files to browse for\r\n            mime_types: [{ title: \"Video files\", extensions: \"MOV,MPEG4,MP4,AVI,WMV,MPEGPS,FLV,3GPP,WebM\" }],\r\n                      \r\n        },\r\n\r\n       \r\n\r\n        // PreInit events, bound before the internal events\r\n        preinit: {\r\n            Init: function(up, info) {\r\n                \r\n            },\r\n\r\n            UploadFile: function (up, file) {\r\n                //log('[UploadFile]', file);\r\n\r\n                // You can override settings before the file is uploaded\r\n                // up.setOption('url', 'upload.php?id=' + file.id);\r\n                // up.setOption('multipart_params', {param1 : 'value1', param2 : 'value2'});\r\n            }\r\n        },\r\n\r\n        // Post init events, bound after the internal events\r\n        init: {\r\n            PostInit: function () {},\r\n\r\n            Browse: function(up) {\r\n            },\r\n\r\n            //Refresh: function (up) {\r\n            //    // Called when the position or dimensions of the picker change\r\n            //    log('[Refresh]');\r\n            //},\r\n\r\n            StateChanged: function (up) {\r\n            },\r\n\r\n            //QueueChanged: function (up) {\r\n            //    // Called when queue is changed by adding or removing files\r\n            //    log('[QueueChanged]');\r\n            //},\r\n\r\n            //OptionChanged: function (up, name, value, oldValue) {\r\n            //    // Called when one of the configuration options is changed\r\n            //    log('[OptionChanged]', 'Option Name: ', name, 'Value: ', value, 'Old Value: ', oldValue);\r\n            //},\r\n\r\n            //BeforeUpload: function (up, file) {\r\n            //    // Called right before the upload for a given file starts, can be used to cancel it if required\r\n            //    log('[BeforeUpload]', 'File: ', file);\r\n            //},\r\n\r\n            UploadProgress: function (up, file) {\r\n                uploadButton.find(\".progressbar\").css(\"width\", up.total.percent + \"%\");\r\n                // Called while file is being uploaded\r\n                //log('[UploadProgress]', 'File:', file, \"Total:\", up.total);\r\n            },\r\n\r\n            //FileFiltered: function (up, file) {\r\n            //    // Called when file successfully files all the filters\r\n            //    log('[FileFiltered]', 'File:', file);\r\n            //},\r\n\r\n            FilesAdded: function (up, files) {\r\n                $(\"#selectedfile\").append(files[0].name);\r\n            },\r\n\r\n            //FilesRemoved: function (up, files) {\r\n            //    // Called when files are removed from queue\r\n            //    log('[FilesRemoved]');\r\n\r\n            //    plupload.each(files, function (file) {\r\n            //        log('  File:', file);\r\n            //    });\r\n            //},\r\n\r\n            FileUploaded: function (up, file, info) {\r\n                // Called when file has finished uploading\r\n                //log('[FileUploaded] File:', file, \"Info:\", info);\r\n                var response = JSON.parse(info.response);\r\n                if (response.Success) {\r\n                    var filepath = response.FilePath;\r\n                    $(\"#LocalVideoServerPath\").val(filepath);\r\n                    uploadSucces();\r\n                } else {\r\n                    error();\r\n                }\r\n               \r\n            },\r\n\r\n            //ChunkUploaded: function (up, file, info) {\r\n            //    // Called when file chunk has finished uploading\r\n            //    //log('[ChunkUploaded] File:', file, \"Info:\", info);\r\n            //},\r\n\r\n            //Is called no matter if its succeeded or not\r\n            UploadComplete: function (up, files) {\r\n                //reset(uploadButton);\r\n                //log('[UploadComplete]');\r\n            },\r\n\r\n            //Destroy: function (up) {\r\n            //    // Called when uploader is destroyed\r\n            //    log('[Destroy] ');\r\n            //},\r\n\r\n            Error: function (up, args) {\r\n                error();\r\n            }\r\n        }\r\n    });\r\n\r\n\t    uploader.init();\r\n\t  \r\n\t   \r\n\t}\r\n\r\n    $(document).ready(function () {\r\n\t    init();\r\n\t    \r\n\t});\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.Youtube = (function () {\r\n    var player = null;\r\n    var settings = {\r\n        selector: \".hero-media-container\",\r\n        height: '100%',\r\n        width: '100%',\r\n        autoplay: 1, \r\n        controls: 0, \r\n        autohide: 1, \r\n        loop: 1, \r\n        mute: 1,\r\n        rel: 0,\r\n        iv_load_policy: 3,\r\n        showinfo: 0,\r\n        cc_load_policy: 0,\r\n    };\r\n\r\n    /*\r\n        PreCondition element, that transforms into iframe :  <div id=\"yt-player\" data-videoid=\"\"></div>\r\n        Initialize youtube video iframe, to manage videoplayer controls\r\n        options are overridden from the initializer. \r\n    */\r\n    var init = function () {\r\n        var playerContainer = $(settings.selector).find(\"#yt-player\");\r\n\r\n        $.extend(settings, { mute: $(playerContainer).data(\"mute\"), loop: $(playerContainer).data(\"loop\") });\r\n\r\n        \r\n\r\n        window.onYouTubeIframeAPIReady = function () {\r\n            player = new YT.Player('yt-player', {\r\n                height: settings.height,\r\n                width: settings.width,\r\n                videoId: $(playerContainer).data(\"videoid\"),\r\n                playerVars:\r\n                    {\r\n                        controls: settings.controls,\r\n                        autohide: settings.autohide,\r\n                        loop: settings.loop,\r\n                        rel: settings.rel,\r\n                        iv_load_policy: settings.iv_load_policy,\r\n                        showinfo:settings.showinfo,\r\n                        cc_load_policy: settings.cc_load_policy\r\n                    },\r\n                events: {\r\n                    'onReady': onPlayerStateReady,\r\n                    'onStateChange': onPlayerStateChange\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    var onPlayerStateChange = function (event) {\r\n        if (!player) {\r\n            return;\r\n        }\r\n        if (event.data == YT.PlayerState.ENDED && settings.loop) {\r\n           play();\r\n        }\r\n    };\r\n\r\n    var onPlayerStateReady = function () {\r\n        if (!player) {\r\n            return;\r\n        }\r\n        play();\r\n    };\r\n\r\n    var stop = function () {\r\n        if (!player) {\r\n            return;\r\n        }\r\n        player.stopVideo();\r\n    };\r\n\r\n    var pause = function () {\r\n        if (!player) {\r\n            return;\r\n        }\r\n        player.pauseVideo();\r\n    };\r\n\r\n    var play = function () {\r\n        if (!player) {\r\n            return;\r\n        }\r\n        player.playVideo();\r\n        mute();\r\n    };\r\n\r\n    var mute = function () {\r\n        if (!player && settings.mute == 1) {\r\n            return;\r\n        }\r\n        player.mute();\r\n    };\r\n\r\n    var playerIsActive = function() {\r\n        return player != null;\r\n    }\r\n\r\n    return {\r\n        init: init,\r\n        playerIsActive: playerIsActive,\r\n        play: play,\r\n        stop: stop,\r\n        pause: pause\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.LazyLoading = {\r\n    vars: {\r\n        // Only serve images with following widths\r\n        imgMaxWidth: 1920,\r\n    },\r\n    LazyLoad: function (imgs, bgImages) {\r\n        if (Tivoli.vars.isMobileDevice) {\r\n            // Begin loading images 200 px before in view on mobile\r\n            imgs.unveil(50, false);\r\n            bgImages.unveil(50, true);\r\n        } else {\r\n            imgs.unveil(500, false);\r\n            bgImages.unveil(500, true);\r\n        }\r\n    },\r\n    CalculateImageWidth: function (elem) {\r\n        var maxWidth = elem.attr(\"max-width\") || Tivoli.vars.screenMaxWidth,\r\n            // The maximum width of the picture before taking density into account\r\n            maxWidthBeforeDensity = elem.attr(\"mwbd\") || Tivoli.vars.screenMaxWidth,\r\n            widthDesktopInPercent = elem.attr(\"wd\"),\r\n            widthTabletInPercent = elem.attr(\"wt\"),\r\n            widthMobileInPercent = elem.attr(\"wm\"),\r\n            fixedWidth = elem.attr(\"fw\"),\r\n            pixelDensity = Tivoli.vars.devicePixelRatio;\r\n\r\n        if (fixedWidth) {\r\n            return fixedWidth;\r\n        }\r\n\r\n        widthDesktopInPercent = widthDesktopInPercent || widthTabletInPercent || widthMobileInPercent;\r\n        widthTabletInPercent = widthTabletInPercent || widthDesktopInPercent;\r\n        widthMobileInPercent = widthMobileInPercent || widthTabletInPercent || widthDesktopInPercent;\r\n\r\n        var imageMaxWidth,\r\n            imageMaxHeight;\r\n        \r\n        // If desktop\r\n        if (Tivoli.vars.screenWidth > Tivoli.vars.tabletThreshold) {\r\n            imageMaxWidth = widthDesktopInPercent / 100 * Tivoli.vars.screenWidth;\r\n            // If tablet\r\n        } else if (Tivoli.vars.screenWidth > Tivoli.vars.mobileThreshold) {\r\n            imageMaxWidth = widthTabletInPercent / 100 * Tivoli.vars.screenWidth;\r\n            // If mobile\r\n        } else {\r\n            imageMaxWidth = widthMobileInPercent / 100 * Tivoli.vars.screenWidth;\r\n        }\r\n\r\n        // If desktop\r\n        if (Tivoli.vars.screenHeight > Tivoli.vars.tabletThreshold) {\r\n            imageMaxHeight = widthDesktopInPercent / 100 * Tivoli.vars.screenHeight;\r\n            // If tablet\r\n        } else if (Tivoli.vars.screenHeight > Tivoli.vars.mobileThreshold) {\r\n            imageMaxHeight = widthTabletInPercent / 100 * Tivoli.vars.screenHeight;\r\n            // If mobile\r\n        } else {\r\n            imageMaxHeight = widthMobileInPercent / 100 * Tivoli.vars.screenHeight;\r\n        }\r\n        \r\n        // Width from percent in pixels\r\n        var widthFromPercent = Math.max(imageMaxWidth, imageMaxHeight);\r\n\r\n        // The lowest of width from pixels and the max width\r\n        var bestWidth = Math.min(widthFromPercent, maxWidth);\r\n\r\n        bestWidth = Math.min(bestWidth, maxWidthBeforeDensity);\r\n\r\n        // Add pixel density to the calculation, but do not server larger than 1920 pictures\r\n        var imgWidth = Math.ceil(Math.min(maxWidth, bestWidth * pixelDensity));\r\n\r\n        // if we from the server allow larger images than the premade breakpoints, then serve that\r\n        return imgWidth > maxWidth ? maxWidth : imgWidth;\r\n    },\r\n    CalculateImageExtension: function (elem) {\r\n        if (!elem.attr(\"wm\") && !elem.attr(\"wt\") && !elem.attr(\"wd\") && !elem.attr(\"fw\")) {\r\n            return \"\";\r\n        }\r\n\r\n        var bestWidthInRightDensity = Tivoli.LazyLoading.CalculateImageWidth(elem);\r\n\r\n        var resizeParams = {};\r\n\r\n        var squared = elem.data(\"squared\"),\r\n            isSquared = !!squared && squared === 1;\r\n        \r\n        resizeParams.w = bestWidthInRightDensity;\r\n        if (isSquared) {\r\n            resizeParams.h = bestWidthInRightDensity;\r\n        }\r\n        \r\n        if (!resizeParams.c) {\r\n            delete resizeParams.c;\r\n        }\r\n        var extension = $.param(resizeParams);\r\n        elem.data(\"calculated-extension\", extension);\r\n        return extension;\r\n    }\r\n};\r\n\r\n$(document).ready(function () {\r\n    Tivoli.LazyLoading.LazyLoad($(\"img.lazy\"), $(\"[data-bg].lazy\"));\r\n});\r\n\r\n/*********************************************************************/\r\n/************************  Unveil.js  - extended *********************/\r\n/************** https://github.com/luis-almeida/unveil ***************/\r\n/*********************************************************************/\r\n; (function ($) {\r\n    $.fn.unveil = function (threshold, isBackgroundImages) {\r\n\r\n        var $w = $(window),\r\n            //$w = $('#content-container'),\r\n            th = threshold || 0,\r\n            images = this,\r\n            loaded;\r\n\r\n        if (isBackgroundImages) {\r\n            //console.log('isBackgroundImages =' + isBackgroundImages);\r\n            // Handle background images\r\n            this.one(\"unveil\", function () {\r\n                var source = this.getAttribute(\"data-bg\");\r\n                var elem = $(this),\r\n                    extension;\r\n                //console.log($(this));\r\n                if (source) {\r\n                    if (!elem.data(\"calculated-extension\")) {\r\n                        extension = Tivoli.LazyLoading.CalculateImageExtension(elem);\r\n                    } else {\r\n                        extension = elem.data(\"calculated-extension\");\r\n                    }\r\n                    // LazyIcon class styles the lazy loading icon\r\n                    if (elem.hasClass(\"lazyIcon\")) {\r\n                        elem.removeClass(\"lazyIcon\");\r\n                    }\r\n                    if (source.indexOf(\"?\") !== -1) {\r\n                        extension = \"&\" + extension;\r\n                    } else {\r\n                        extension = \"?\" + extension;\r\n                    }\r\n                    elem.css(\"backgroundImage\", \"url('\" + source + extension + \"')\").animate({ opacity: 1 }, 250);\r\n                    elem.removeClass(\"lazy\");\r\n                }\r\n            });\r\n        } else {\r\n            // Handle regular images\r\n            this.one(\"unveil\", function () {\r\n                var source = this.getAttribute(\"data-src\");\r\n                var elem = $(this),\r\n                    extension;\r\n                //console.log($(this));\r\n                if (source) {\r\n                    if (!elem.data(\"calculated-extension\")) {\r\n                        extension = Tivoli.LazyLoading.CalculateImageExtension(elem);\r\n                    } else {\r\n                        extension = elem.data(\"calculated-extension\");\r\n                    }\r\n                    // LazyIcon class styles the lazy loading icon\r\n                    if (elem.hasClass(\"lazyIcon\")) {\r\n                        elem.removeClass(\"lazyIcon\");\r\n                    }\r\n                    if (source.indexOf(\"?\") !== -1) {\r\n                        extension = \"&\" + extension;\r\n                    } else {\r\n                        extension = \"?\" + extension;\r\n                    }\r\n\r\n                    this.setAttribute(\"src\", source + extension);\r\n                    elem.removeClass(\"lazy\");\r\n                }\r\n            });\r\n        }\r\n\r\n        function unveil() {\r\n            var inview = images.filter(function () {\r\n                var $e = $(this),\r\n                    wt = $w.scrollTop(),\r\n                    wb = wt + $w.height(),\r\n                    et = $e.offset().top,\r\n                    eb = et + $e.height();\r\n\r\n                return eb >= wt - th && et <= wb + th;\r\n            });\r\n            if (inview.length > 0) {\r\n                loaded = inview.trigger(\"unveil\");\r\n                images = images.not(loaded);\r\n            }\r\n        }\r\n        $w.scroll(unveil);\r\n        $w.resize(unveil);\r\n        $w.on(\"lazyload\", unveil);\r\n\r\n        unveil();\r\n        return this;\r\n    };\r\n})(window.jQuery || window.Zepto);","var Tivoli = Tivoli || {};\r\n\r\nTivoli.accordion = (function () {\r\n    \"use strict\";\r\n\r\n\tvar mediumBreakPoint = Tivoli.settings.width.medium;\r\n\tvar windowWidth = Tivoli.vars.windowWidth;\r\n    \r\n\tfunction init() {\r\n\r\n\r\n\t    if ($('.accordion').length === 0) {\r\n\t        return;\r\n\t\t}\r\n\r\n\t\t$('.accordion').each(function() {\r\n\t\t\tif( $(this).hasClass('accordion--open-single')) {\r\n\t\t\t\tvar accordionItems = $(this).find('.accordion-item'),\r\n\t\t\t\t\thasOnlyOneItem = accordionItems.length === 1;\r\n\t\t\t\t\r\n\t\t\t\tif(hasOnlyOneItem) {\r\n\t\t\t\t\tvar firstItem = accordionItems.first(),\r\n\t\t\t\t\t\tfirstItemHead = firstItem.find('.accordion-head');\r\n\t\t\t\t\t\taccordionOpenSingle(firstItemHead)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t    trigger($('.accordion').find('li .accordion-head'));\r\n\r\n\t\t$(window).smartresize(function() {\r\n\t\t\tresizeOpenAccordion();\r\n\t\t\twindowWidth = $(window).width();\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tfunction trigger($accordionTrigger) {\r\n\t\t$accordionTrigger.unbind('click');\r\n\t\t$accordionTrigger.on('click', function (e) {\r\n\t\t\te.stopPropagation();\r\n\t\t\taccordionAnim($(this));\r\n\t\t});\r\n\t}\r\n\r\n\tfunction accordionOpenSingle(itemHead) {\r\n\t\tvar accordionBody = itemHead.siblings('.accordion-body'),\r\n\t\t\taccordionBodyInner = accordionBody.find('.accordion-body-inner'),\r\n\t\t\tbodyHeight = accordionBodyInner.outerHeight() + 10 > 70 ? accordionBodyInner.outerHeight() + 10 : 70;\r\n\r\n\t\titemHead.closest('li').addClass(\"is-active\");\r\n\t\taccordionBody.css({\r\n\t\t\theight: bodyHeight,\r\n\t\t\topacity: 1\r\n\t\t});\r\n\t}\r\n\r\n\tfunction accordionAnim(trigger) {\r\n\t\tvar thisAccordianItem =  trigger.closest('li'),\r\n\t\t\taccordionBody = trigger.siblings('.accordion-body'),\r\n\t\t\taccordionBodyInner = accordionBody.find('.accordion-body-inner'),\r\n\t\t\tbodyHeight = accordionBodyInner.outerHeight() + 10 > 70 ? accordionBodyInner.outerHeight() + 10 : 70;\r\n\r\n\r\n\t\tif(trigger.closest('.accordion--table-view').length > 0 && windowWidth >= mediumBreakPoint) {\r\n\t\t\tif(thisAccordianItem.hasClass('is-active')) {\r\n\t\t\t\ttrigger.closest('li').removeClass(\"is-active\");\r\n\t\t\t\taccordionBody.css({\r\n\t\t\t\t\theight: '75px'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttrigger.closest('li').addClass(\"is-active\");\r\n\t\t\t\taccordionBody.css({\r\n\t\t\t\t\theight: bodyHeight\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(thisAccordianItem.hasClass('is-active')) {\r\n\t\t\t\ttrigger.closest('li').removeClass(\"is-active\");\r\n\t\t\t\taccordionBody.css({\r\n\t\t\t\t\theight: '0',\r\n\t\t\t\t\topacity: 0\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttrigger.closest('li').addClass(\"is-active\");\r\n\t\t\t\taccordionBody.css({\r\n\t\t\t\t\theight: bodyHeight,\r\n\t\t\t\t\topacity: 1\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction resizeOpenAccordion() {\r\n\r\n\t\tvar openAccordions = $('.accordion').find('.is-active');\r\n\t\tvar openAccordionBody = openAccordions.find('.accordion-body');\r\n\t\tvar notOpenAccordions = $('.accordion').find('.accordion-item').not('.is-active');\r\n\r\n\t\topenAccordions.each(function() {\r\n\t\t\tvar accordionBody = openAccordions.find('.accordion-body'),\r\n\t\t\t\taccordionBodyInner = accordionBody.find('.accordion-body-inner'),\r\n\t\t\t\tbodyHeight = accordionBodyInner.outerHeight() + 10 > 75 ? accordionBodyInner.outerHeight() + 10 : 75;\r\n\r\n\t\t\taccordionBody.css({\r\n\t\t\t\theight: bodyHeight\r\n\t\t\t});\r\n\r\n\t\t\tif($(this).is('.accordion--table-view').length > 0) {\r\n\t\t\t\taccordionBody.attr('top', 'auto');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// SET OPACITY to INSURE A ACTIVE ACCORDION IS NOT HIDDEN\r\n\t\topenAccordionBody.css('opacity', 1);\r\n\t\t// CLEAR ALL NON-OPEN ACCORDIONS\r\n\t\tnotOpenAccordions.find('.accordion-body').attr('style', '');\r\n\t}\r\n\r\n\r\n\t$(document).ready(function() {\r\n\t\tinit();\r\n\t});\r\n\r\n    return {\r\n        init: init\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\n\r\n/***********************************\r\ncountUp.js\r\nAuthor: @inorganik\r\n***********************************/\r\n// target = id of html element or var of previously selected html element where counting occurs\r\n// startVal = the value you want to begin at\r\n// endVal = the value you want to arrive at\r\n// decimals = number of decimal places, default 0\r\n// duration = duration of animation in seconds, default 2\r\n// options = optional object of options (see below)\r\n\r\n\r\n// Example:\r\n// var numAnim = new countUp(\"SomeElementYouWantToAnimate\", 0, 99.99, 2, 2.5);\r\n// numAnim.start();\r\n// with optional callback:\r\n// numAnim.start(someMethodToCallOnComplete);\r\n\r\nTivoli.countUp = function (target, startVal, endVal, decimals, duration, options) {\r\n\r\n\t// make sure requestAnimationFrame and cancelAnimationFrame are defined\r\n\t// polyfill for browsers without native support\r\n\t// by Opera engineer Erik M�ller\r\n\tvar lastTime = 0;\r\n\tvar vendors = ['webkit', 'moz', 'ms', 'o'];\r\n\tfor (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n\t\twindow.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n\t\twindow.cancelAnimationFrame =\r\n\t\t  window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n\t}\r\n\tif (!window.requestAnimationFrame) {\r\n\t\twindow.requestAnimationFrame = function (callback, element) {\r\n\t\t\tvar currTime = new Date().getTime();\r\n\t\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n\t\t\tvar id = window.setTimeout(function () { callback(currTime + timeToCall); },\r\n\t\t\t  timeToCall);\r\n\t\t\tlastTime = currTime + timeToCall;\r\n\t\t\treturn id;\r\n\t\t}\r\n\t}\r\n\tif (!window.cancelAnimationFrame) {\r\n\t\twindow.cancelAnimationFrame = function (id) {\r\n\t\t\tclearTimeout(id);\r\n\t\t}\r\n\t}\r\n\r\n\t// default options\r\n\tthis.options = options || {\r\n\t\tuseEasing: true, // toggle easing\r\n\t\tuseGrouping: true, // 1,000,000 vs 1000000\r\n\t\tseparator: ',', // character to use as a separator\r\n\t\tdecimal: '.', // character to use as a decimal\r\n\t}\r\n\tif (this.options.separator == '') this.options.useGrouping = false;\r\n\tif (this.options.prefix == null) this.options.prefix = '';\r\n\tif (this.options.suffix == null) this.options.suffix = '';\r\n\r\n\tvar self = this;\r\n\r\n\tthis.d = (typeof target === 'string') ? document.getElementById(target) : target;\r\n\tthis.startVal = Number(startVal);\r\n\tthis.endVal = Number(endVal);\r\n\tthis.countDown = (this.startVal > this.endVal) ? true : false;\r\n\tthis.startTime = null;\r\n\tthis.timestamp = null;\r\n\tthis.remaining = null;\r\n\tthis.frameVal = this.startVal;\r\n\tthis.rAF = null;\r\n\tthis.decimals = Math.max(0, decimals || 0);\r\n\tthis.dec = Math.pow(10, this.decimals);\r\n\tthis.duration = duration * 1000 || 2000;\r\n\r\n\tthis.version = function () { return '1.3.2' }\r\n\r\n\t// Print value to target\r\n\tthis.printValue = function (value) {\r\n\t\tvar result = (!isNaN(value)) ? self.formatNumber(value) : '--';\r\n\t\tif (self.d.tagName == 'INPUT') {\r\n\t\t\tthis.d.value = result;\r\n\t\t}\r\n\t\telse if (self.d.tagName == 'text') {\r\n\t\t\tthis.d.textContent = result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.d.innerHTML = result;\r\n\t\t}\r\n\t}\r\n\r\n\t// Robert Penner's easeOutExpo\r\n\tthis.easeOutExpo = function (t, b, c, d) {\r\n\t\treturn c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;\r\n\t}\r\n\tthis.count = function (timestamp) {\r\n\r\n\t\tif (self.startTime === null) self.startTime = timestamp;\r\n\r\n\t\tself.timestamp = timestamp;\r\n\r\n\t\tvar progress = timestamp - self.startTime;\r\n\t\tself.remaining = self.duration - progress;\r\n\r\n\t\t// to ease or not to ease\r\n\t\tif (self.options.useEasing) {\r\n\t\t\tif (self.countDown) {\r\n\t\t\t\tvar i = self.easeOutExpo(progress, 0, self.startVal - self.endVal, self.duration);\r\n\t\t\t\tself.frameVal = self.startVal - i;\r\n\t\t\t} else {\r\n\t\t\t\tself.frameVal = self.easeOutExpo(progress, self.startVal, self.endVal - self.startVal, self.duration);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (self.countDown) {\r\n\t\t\t\tvar i = (self.startVal - self.endVal) * (progress / self.duration);\r\n\t\t\t\tself.frameVal = self.startVal - i;\r\n\t\t\t} else {\r\n\t\t\t\tself.frameVal = self.startVal + (self.endVal - self.startVal) * (progress / self.duration);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// don't go past endVal since progress can exceed duration in the last frame\r\n\t\tif (self.countDown) {\r\n\t\t\tself.frameVal = (self.frameVal < self.endVal) ? self.endVal : self.frameVal;\r\n\t\t} else {\r\n\t\t\tself.frameVal = (self.frameVal > self.endVal) ? self.endVal : self.frameVal;\r\n\t\t}\r\n\r\n\t\t// decimal\r\n\t\tself.frameVal = Math.round(self.frameVal * self.dec) / self.dec;\r\n\r\n\t\t// format and print value\r\n\t\tself.printValue(self.frameVal);\r\n\r\n\t\t// whether to continue\r\n\t\tif (progress < self.duration) {\r\n\t\t\tself.rAF = requestAnimationFrame(self.count);\r\n\t\t} else {\r\n\t\t\tif (self.callback != null) self.callback();\r\n\t\t}\r\n\t}\r\n\tthis.start = function (callback) {\r\n\t\tself.callback = callback;\r\n\t\t// make sure values are valid\r\n\t\tif (!isNaN(self.endVal) && !isNaN(self.startVal)) {\r\n\t\t\tself.rAF = requestAnimationFrame(self.count);\r\n\t\t} else {\r\n\t\t\tconsole.log('countUp error: startVal or endVal is not a number');\r\n\t\t\tself.printValue();\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\tthis.stop = function () {\r\n\t\tcancelAnimationFrame(self.rAF);\r\n\t}\r\n\tthis.reset = function () {\r\n\t\tself.startTime = null;\r\n\t\tself.startVal = startVal;\r\n\t\tcancelAnimationFrame(self.rAF);\r\n\t\tself.printValue(self.startVal);\r\n\t}\r\n\tthis.resume = function () {\r\n\t\tself.stop();\r\n\t\tself.startTime = null;\r\n\t\tself.duration = self.remaining;\r\n\t\tself.startVal = self.frameVal;\r\n\t\trequestAnimationFrame(self.count);\r\n\t}\r\n\tthis.formatNumber = function (nStr) {\r\n\t\tnStr = nStr.toFixed(self.decimals);\r\n\t\tnStr += '';\r\n\t\tvar x, x1, x2, rgx;\r\n\t\tx = nStr.split('.');\r\n\t\tx1 = x[0];\r\n\t\tx2 = x.length > 1 ? self.options.decimal + x[1] : '';\r\n\t\trgx = /(\\d+)(\\d{3})/;\r\n\t\tif (self.options.useGrouping) {\r\n\t\t\twhile (rgx.test(x1)) {\r\n\t\t\t\tx1 = x1.replace(rgx, '$1' + self.options.separator + '$2');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn self.options.prefix + x1 + x2 + self.options.suffix;\r\n\t}\r\n\r\n\t// format startVal on initialization\r\n\tself.printValue(self.startVal);\r\n\r\n};\r\n\r\n\r\n/***********************************\r\nAuthor: Lars Linde\r\n***********************************/\r\nTivoli.annualreport = (function () {\r\n\r\n\tfunction plusButton() {\r\n\t\t$(\"button.button-plus\").on(\"click\", function () {\r\n\t\t\t$(this).toggleClass(\"transform\");\r\n\t\t\tvar expanderId = $(this).data(\"expander-id\");\r\n\t\t\tvar containerToExpand = $(\"[data-expand-id=\" + expanderId + \"]\");\r\n\t\t\tcontainerToExpand.toggleClass(\"is-expanded\");\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t$(document).on(\"ready\", function () {\r\n\t    var entrance = $(\"#tivoli-entrance\");\r\n\r\n\t\t//countUp options\r\n\t\tvar options = {\r\n\t\t\tuseEasing: false,\r\n\t\t\tuseGrouping: true,\r\n\t\t\tseparator: '.',\r\n\t\t\tdecimal: '.',\r\n\t\t\tprefix: '',\r\n\t\t\tsuffix: ''\r\n\t\t}\r\n\r\n\t\tfunction countUpCallBack() {\r\n\t\t\t//console.log(\"countUp complete\");\r\n\t\t    //Har kunne vi s� animere SVG filen ovenover\r\n\t\t    entrance.attr(\"src\", entrance.attr(\"data-src\"));\r\n\t\t}\r\n\r\n\r\n\t\t$('#visitors').appear();\r\n\t\t$('#visitors').on('appear', function (event, $allAppearedElements) {\r\n\t\t\tif ($(this).hasClass(\"complete\"))\r\n\t\t\t\treturn;\r\n\r\n\t\t    var start = $(this).data(\"start\");\r\n\t\t    var end = $(this).data(\"end\");\r\n\t\t    var numAnim = new Tivoli.countUp(\"visitors\", start, end, 0, 3, options);\r\n\t\t\tnumAnim.start(countUpCallBack);\r\n\r\n\t\t\t$(this).addClass(\"complete\");\r\n\r\n\t\t});\r\n\r\n\t\t//$('#visitors').on('disappear', function (event, $allDisappearedElements) {\r\n\t\t//\tconsole.log(\"GONE!\");\r\n\t\t//});\r\n\r\n\r\n\t\t//The new SVG element\r\n\t\t$(\".quarters-container\").appear();\r\n\t\t$(\".quarters-container\").on(\"appear\", function (event, $allAppearedElements) {\r\n\t\t\tif ($(this).hasClass(\"complete\"))\r\n\t\t\t\treturn;\r\n\r\n\t\t\t//$(this).addClass(\"complete\");\r\n\t\t\t$(this).addClass(\"anim\");\r\n\t\t\t//$(this).addClass(\"start-blob-anim\");\r\n\r\n\t\t\t//var iOs = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n\t\t\t//var edge = navigator.appVersion.indexOf(\"Edge/\") > -1;\r\n\t\t\t//if ($(\"html\").hasClass(\"lt-ie11\") || $(\"html\").hasClass(\"ie-modern\") || $(\"html\").hasClass(\"safari\") || iOs || edge) {\r\n\t\t\t//\t//these browsers cause troble with the 'animation-fill-mode: farwards' property so don't run the line animation here\r\n\t\t\t//\treturn;\r\n\t\t\t//}\r\n\r\n\r\n\r\n\t\t\t//if (feature.css3Dtransform && feature.cssTransform && feature.cssTransition)\r\n\t\t\t//{\r\n\t\t\t//\tvar svg = $(this).find(\"#quarters\");\r\n\t\t\t//\tsvg.attr(\"class\", \"start-anim\"); //can't use addClass on SVG's\r\n\t\t\t//}\r\n\t\t});\r\n\r\n\r\n\r\n\t\tvar visitorCalculator = function () {\r\n\t\t\tfunction getMaxOfArray(numArray) {\r\n\t\t\t\treturn Math.max.apply(null, numArray);\r\n\t\t\t}\r\n\t\t\tvar arr = new Array();\r\n\t\t\tvar maxValue = 0;\r\n\t\t\t$(\".season\").each(function () {\r\n\t\t\t\tvar val = $(this).data(\"value\");\r\n\t\t\t\tarr.push(val);\r\n\t\t\t});\r\n\t\t\tmaxValue = getMaxOfArray(arr);\r\n\t\t\t$(\".season\").each(function () {\r\n\t\t\t\tvar val = $(this).data(\"value\");\r\n\t\t\t\tvar h = (val / maxValue) * 100;\r\n\t\t\t\t$(this).css(\"width\", h + \"%\");\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tplusButton();\r\n\t\tvisitorCalculator();\r\n\t});\r\n\r\n}());\r\n\r\n\r\nTivoli.turnover = (function() {\r\n\r\n\tvar breakpoint = 980;\r\n\tvar element = $(\".visitors-by-season\");\r\n\tvar allSeasons = $(\".season\");\r\n\r\n\tfunction setLabels() {\r\n\r\n\t\t$(\".season-label\").removeClass(\"season-label--mobile\");\r\n\t\t$(\".season-label\").removeAttr(\"style\");\r\n\t\t$(\".season.season--out-of-season .season-label\").removeClass(\"season-label--absolute\");\r\n\r\n\t\tif ($(window).width() > breakpoint) {\r\n\t\t\t$(\".season.season--out-of-season .season-label\").addClass(\"season-label--absolute\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tallSeasons.each(function(index) {\r\n\t\t\tvar label = $(this).find(\".season-label\"),\r\n\t\t\t\tw = $(this).width();\r\n\t\t\t\r\n\t\t\tif (w < 145) {\r\n\t\t\t\tlabel.addClass(\"season-label--mobile\");\r\n\t\t\t\tlabel.css(\"left\", w + 10 + \"px\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t$(window).smartresize(function () {\r\n\t\tsetLabels();\r\n\t});\r\n\r\n\t$(window).on(\"load\", function () {\r\n\t\tsetLabels();\r\n\t});\r\n\r\n\r\n}());\r\n\r\n\r\n/***********************************\r\nAuthor: Christian Normann Eiland\r\n***********************************/\r\nTivoli.ages = (function () {\r\n\tvar container;\r\n\tvar ageSections;\r\n\tvar ages = [];\r\n\tvar breakpointMobile = 980;\r\n\tvar breakpointSmallMobile = 460;\r\n\tvar isMobile = false;\r\n\tvar isSmallMobile = false;\r\n\r\n\t$(document).ready(function () {\r\n\t    container = $(\".ageSections\");\r\n\t    ageSections = $(\".ageSection\");\r\n\t    ageSections.each(function (index) {\r\n\t        var self = $(this);\r\n\t        ages.push(self.find(\".age\"));\r\n\t    });\r\n\t    setIsMobile();\r\n\t    setAges(true);\r\n\t});\r\n\r\n\t$(window).smartresize(function () {\r\n\t\tsetIsMobile();\r\n\t\tsetAges(false);\r\n\t});\r\n\r\n\tfunction setIsMobile() {\r\n\t\tisMobile = $(window).width() <= breakpointMobile;\r\n\t\tisSmallMobile = $(window).width() <= breakpointSmallMobile;\r\n\t}\r\n\r\n\tfunction setAges(setup) {\r\n\r\n\t\tvar agesData = [];\r\n\t\tvar data;\r\n\t\tvar d;\r\n\t\tvar needMobileMode = false;\r\n\t\tvar largestText = 0;\r\n\r\n\t\tfor (var i = 0; i < ages.length; i++) {\r\n\t\t\tvar ags = ages[i];\r\n\t\t\tvar outer = $(ageSections.get(i));\r\n\t\t\tvar totalWidth = outer.width() - 1;\r\n\r\n\t\t\tvar totalPadding = (ags.length - 1) * 4;\r\n\t\t\tvar totalColWidth = totalWidth - totalPadding;\r\n\r\n\t\t\tdata = [];\r\n\t\t\tagesData.push(data);\r\n\r\n\t\t\tags.each(function (index) {\r\n\t\t\t\td = {};\r\n\r\n\t\t\t\tvar age = $(this);\r\n\t\t\t\tvar col = age.find(\".ageColumn\");\r\n\t\t\t\tvar value = col.data(\"value\");\r\n\t\t\t\tvar inner = age.find(\".ageInner\");\r\n\t\t\t\tvar pointerTop = inner.find(\".agePointerTop\");\r\n\t\t\t\tvar pointerMiddle = inner.find(\".agePointerMiddle\");\r\n\t\t\t\tvar pointerBottom = inner.find(\".agePointerBottom\");\r\n\t\t\t\tvar desc = age.find(\".ageDesc\");\r\n\r\n\t\t\t\t// Measure text\r\n\t\t\t\tvar textMeasurer = outer.find(\".ageTextMeasurer\");\r\n\t\t\t\ttextMeasurer.text(desc.text());\r\n\t\t\t\tvar textW = textMeasurer.width() + 1;\r\n\r\n\t\t\t\tif (textW > largestText) {\r\n\t\t\t\t\tlargestText = textW;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar w = value * totalColWidth / 100;\r\n\r\n\t\t\t\tif (setup) {\r\n\t\t\t\t\tvar valueElem = col.find(\".ageValue\");\r\n\t\t\t\t\tvalueElem.text(value + \"%\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\td.totalColWidth = totalColWidth;\r\n\t\t\t\td.value = value;\r\n\t\t\t\td.inner = inner;\r\n\t\t\t\td.desc = desc;\r\n\t\t\t\td.w = w;\r\n\t\t\t\td.textW = textW;\r\n\t\t\t\td.pTop = pointerTop;\r\n\t\t\t\td.pMiddle = pointerMiddle;\r\n\t\t\t\td.pBottom = pointerBottom;\r\n\r\n\t\t\t\tdata.push(d);\r\n\t\t\t});\r\n\r\n\t\t\tvar pullLeft = 0;\r\n\r\n\t\t\tfor (var j = data.length - 1; j >= 0; j--) {\r\n\t\t\t\td = data[j];\r\n\r\n\t\t\t\tvar overflow = d.textW - d.w;\r\n\r\n\t\t\t\tvar toMove = pullLeft + overflow / 2;\r\n\t\t\t\tif (toMove < 0) {\r\n\t\t\t\t\ttoMove = 0;\r\n\t\t\t\t}\r\n\t\t\t\td.toMove = toMove;\r\n\r\n\t\t\t\tvar pointerMargin = 7;\r\n\t\t\t\t// Move pointer top\r\n\t\t\t\tvar moveTop = 0;\r\n\t\t\t\tif (j < data.length - 1) {\r\n\t\t\t\t\tvar last = data[j + 1];\r\n\t\t\t\t\tmoveTop = Math.floor(last.toMove - last.w / 2 - d.w / 2 + pointerMargin);\r\n\t\t\t\t\tif (moveTop < 0) {\r\n\t\t\t\t\t\tmoveTop = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\td.descLeft = d.w / 2 - d.textW / 2 - toMove;\r\n\t\t\t\td.pTopLeft = d.w / 2 - 1 - moveTop;\r\n\t\t\t\td.pMiddleLeft = d.w / 2 - 1 - toMove;\r\n\t\t\t\td.pBottomLeft = d.w / 2 - 1 - toMove;\r\n\t\t\t\td.pBottomWidth = 2 + toMove - moveTop;\r\n\r\n\t\t\t\tpullLeft += overflow + 10;\r\n\r\n\t\t\t\t// Top moved out of container\r\n\t\t\t\tif (d.pTopLeft < 5) {\r\n\t\t\t\t\tneedMobileMode = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (needMobileMode) {\r\n\t\t\tcontainer.addClass(\"mobile\");\r\n\t\t} else {\r\n\t\t\tcontainer.removeClass(\"mobile\");\r\n\t\t}\r\n\r\n\t\tvar cW = container.width();\r\n\r\n\t\tvar largestValue = 0;\r\n\t\tif (isMobile) {\r\n\t\t\t// Find largest value\r\n\t\t\tfor (var a = 0; a < agesData.length; a++) {\r\n\t\t\t\tdata = agesData[a];\r\n\t\t\t\tfor (var b = data.length - 1; b >= 0; b--) {\r\n\t\t\t\t\td = data[b];\r\n\t\t\t\t\tif (d.value > largestValue) {\r\n\t\t\t\t\t\tlargestValue = d.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Move objects\r\n\t\tfor (var c = 0; c < agesData.length; c++) {\r\n\t\t\tdata = agesData[c];\r\n\r\n\t\t\tfor (var k = data.length - 1; k >= 0; k--) {\r\n\t\t\t\td = data[k];\r\n\r\n\t\t\t\tif (needMobileMode) {\r\n\t\t\t\t\tvar marginLeft = largestText + 15;\r\n\t\t\t\t\td.inner.css(\"margin-left\", marginLeft);\r\n\t\t\t\t\td.desc.width(d.textW);\r\n\t\t\t\t\td.inner.width((cW - marginLeft) * (d.value / largestValue));\r\n\t\t\t\t} else {\r\n\t\t\t\t\td.inner.css(\"margin-left\", \"auto\");\r\n\t\t\t\t\td.inner.width(d.w);\r\n\t\t\t\t\td.desc.css(\"left\", d.descLeft);\r\n\t\t\t\t\td.desc.width(d.textW);\r\n\t\t\t\t\td.pTop.css(\"left\", d.pTopLeft);\r\n\t\t\t\t\td.pMiddle.css(\"left\", d.pMiddleLeft);\r\n\t\t\t\t\td.pBottom.css(\"left\", d.pBottomLeft);\r\n\t\t\t\t\td.pMiddle.width(d.pBottomWidth);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}());\r\n\r\n\r\n/***********************************\r\nAuthor: Christian Normann Eiland\r\n***********************************/\r\nTivoli.segments = (function () {\r\n\tvar columns;\r\n\tvar segments;\r\n\tvar numSegments;\r\n\tvar breakpointMobile = 980;\r\n\tvar breakpointSmallMobile = 460;\r\n\tvar isMobile = false;\r\n\tvar isSmallMobile = false;\r\n\r\n\t$(document).on(\"ready\", function () {\r\n\t\tcolumns = $(\".segmentColumn\");\r\n\t\tsegments = $(\".segment\");\r\n\t\tnumSegments = segments.length;\r\n\r\n\t\tsetIsMobile();\r\n\t\tsetColumn();\r\n\t\thandleIconBox();\r\n\t});\r\n\r\n\r\n\t$(window).smartresize(function () {\r\n\t\tsetIsMobile();\r\n\t\tsetColumn();\r\n\t});\r\n\r\n\tfunction setIsMobile() {\r\n\t\tisMobile = $(window).width() <= breakpointMobile;\r\n\t\tisSmallMobile = $(window).width() <= breakpointSmallMobile;\r\n\t}\r\n\r\n\tfunction setColumn() {\r\n\t\tif (!columns) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcolumns.each(function (index) {\r\n\t\t\tvar self = $(this);\r\n\t\t\tvar outer = self.parent(\".segmentType\");\r\n\t\t\tvar value = self.data(\"value\");\r\n\r\n\t\t\tvar percentPixels = isSmallMobile ? 2.6 : 5;\r\n\t\t\tvar showInnerLimit = isSmallMobile ? 12 : 5;\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\tif (isMobile) {\r\n\t\t\t\t\tself.width(value * percentPixels);\r\n\t\t\t\t\tself.height(\"\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tself.height(value * percentPixels);\r\n\t\t\t\t\tself.width(\"\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar showInner = value > showInnerLimit;\r\n\t\t\t\tvar outerValue = outer.find(\".outerValue\");\r\n\t\t\t\tvar innerValue = outer.find(\".innerValue\");\r\n\t\t\t\touterValue.text(value + \"%\");\r\n\t\t\t\tinnerValue.text(value + \"%\");\r\n\t\t\t\tif (showInner) {\r\n\t\t\t\t\touterValue.hide();\r\n\t\t\t\t\tinnerValue.show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\touterValue.show();\r\n\t\t\t\t\tinnerValue.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction handleIconBox() {\r\n\t\tif (!segments) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar isTouchDevice = $(\"html\").hasClass(\"touch\");\r\n\r\n\t\tsegments.each(function (index) {\r\n\t\t\tvar self = $(this);\r\n\t\t\tvar info = self.find(\".segmentInfo\");\r\n\t\t\tvar box = self.find(\".segmentInfoBox\");\r\n\r\n\t\t\tinfo.on(isTouchDevice ? \"click\" : \"mouseenter\", function (evt) {\r\n\t\t\t\tevt.stopPropagation();\r\n\t\t\t\t\r\n\t\t\t\tvar top = -(box.height() / 2 - info.height() / 2);\r\n\t\t\t\tvar left;\r\n\r\n\t\t\t\tif (isMobile) {\r\n\t\t\t\t\tleft = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tleft = -(box.width() / 2 - info.width() / 2);\r\n\t\t\t\t\tif (index == 0) {\r\n\t\t\t\t\t\tvar minLeft = -(self.width() / 2 - info.width() / 2);\r\n\t\t\t\t\t\tleft = Math.max(minLeft, left);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index == numSegments - 1) {\r\n\t\t\t\t\t\tvar maxLeft = self.width() / 2 + info.width() / 2 - box.width();\r\n\t\t\t\t\t\tleft = Math.min(maxLeft, left);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(\".segmentInfoBox\").hide(); //hide all boxes every time, before showing the one in focus\r\n\r\n\t\t\t\tbox.css(\"left\", left);\r\n\t\t\t\tbox.css(\"top\", top);\r\n\t\t\t\tbox.show();\r\n\t\t\t}).on(\"mouseleave\", function() {\r\n\t\t\t\tbox.hide();\r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\r\n\t\t$(document).on(\"click\", function(e) {\r\n\t\t\tif (e.target.className !== \"segmentInfo\") {\r\n\t\t\t\t$(\".segmentInfoBox\").hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n}());\r\n\r\n/************************\r\nAuthor: Mikkel Nielsen\r\n************************/\r\nTivoli.recommend = (function () {\r\n\tfunction drawCircle(elem) {\r\n\t\tvar currentElem = $(elem),\r\n            percent = currentElem.attr(\"percent\"),\r\n            counterElem = currentElem.find(\"#svgcounter\"),\r\n            i = 0,\r\n            stepSize = 3.6,\r\n            numberOfSteps = percent * 1, // Force int\r\n            circle = currentElem.find(\".arc\")[0],\r\n            angle = -90 - (4 * stepSize),\r\n            radius = 135,\r\n            outerRow = currentElem.parents(\".row\");\r\n\r\n\t\tvar interval = setInterval(\r\n            function () {\r\n            \tangle += stepSize;\r\n            \tangle %= 360;\r\n            \tvar radians = (angle / 180) * Math.PI;\r\n            \tvar x = 150 + Math.cos(radians) * radius;\r\n            \tvar y = 150 + Math.sin(radians) * radius;\r\n            \tvar e = circle.getAttribute(\"d\");\r\n            \tvar d;\r\n            \tif (i == 0) {\r\n            \t\td = e + \" M \" + x + \" \" + y;\r\n            \t} else {\r\n            \t\td = e + \" L \" + x + \" \" + y;\r\n            \t}\r\n            \tif (i >= (numberOfSteps + 8)) {\r\n            \t\touterRow.css(\"zoom\", 1); // IE fix\r\n            \t\tclearInterval(interval);\r\n            \t}\r\n            \tif (i <= numberOfSteps) {\r\n            \t\tcounterElem.text(i);\r\n            \t}\r\n\r\n            \tif (i > 120)\r\n            \t\tclearInterval(interval);\r\n\r\n            \tcircle.setAttribute(\"d\", d);\r\n            \ti++;\r\n            }\r\n        , 20);\r\n\t}\r\n\r\n\t$('.svg-recommend').appear();\r\n\t$('.svg-recommend').on('appear', function (event) {\r\n\t\tif ($(this).parent().hasClass(\"complete\"))\r\n\t\t\treturn;\r\n\r\n\t\t$(this).parent().addClass(\"complete\");\r\n\r\n\t\tdrawCircle($(this));\r\n\t});\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.boxModuleInteractions = function(){\r\n\t\"use strict\";\r\n\r\n  \tvar isAnyTouch = Tivoli.vars.isAnyTouchDevice;\r\n\t\r\n\tfunction init(){\r\n\t\tif($(\".box-full, .box-thumb, .box-product, .TeaserBoxMedium\").length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindowChange();\r\n\t\tboxInfoToggle();\r\n\t\tboxClickExtension();\r\n\r\n\t\t$('.box-product').find('.info-link').on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tif($(this).closest('.swiper').hasClass('js-boxes-open')) {\r\n\t\t\t\t$(this).closest('.swiper').removeClass('js-boxes-open');\r\n\t\t\t} else {\r\n\t\t\t\t$(this).closest('.swiper').addClass('js-boxes-open');\r\n\t\t\t}\r\n\t\t});\t\r\n\r\n\t}\r\n\r\n\t// BOX PRODUCT INIT\r\n//////\r\n\t//\r\n\r\n\t// INIT OR DESTROY HOVER\r\n\tfunction windowChange() {\r\n\t\t$(window).smartresize(function() {\r\n\t\t\tboxInit();\r\n\t\t});\r\n\r\n\t\tboxInit();\r\n\t}\r\n\r\n\r\n  \t// INIT BOX with EVENT-types\r\n\tfunction boxInit() {\r\n\t\tvar box\t\t\t= $('.box-full, .box-thumb'),\r\n\t\t\tteaserBox\t= $('.TeaserBoxMedium__wrapper'),\r\n\t\t\tinfoLink\t= $('.info-link');\r\n\r\n\t\tteaserBox.each(function() {\r\n\t\t\tvar $boxContent\t\t= $(this).find(\".TeaserBoxMedium__content\"),\r\n\t\t\t\t$boxImage\t\t= $(this).find(\".TeaserBoxMedium__backgroundImage\"),\r\n\t\t\t\tcontentHeight\t= $boxContent.outerHeight();\r\n\r\n\t\t\t$boxImage.css({\r\n\t\t\t\theight: \"calc(100% - \" + contentHeight + \"px)\"\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\tif (isAnyTouch) {\r\n\t\t    infoLink.show();\r\n\t\t\tif(teaserBox.length > 0) {\r\n\t\t\t\thideBoxTeaserInfo(teaserBox)\r\n\t\t\t} else {\r\n\t\t\t\thideBoxInfo(box);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tboxHoveringCall();\r\n\t\t}\r\n\t}\r\n\r\n\t// CLICK TOGGLE INFO BOX\r\n\tfunction boxInfoToggle() {\r\n\t    var box \t\t\t= $('.box-item').find('.box-full, .box-thumb, .box-product'),\r\n\t\t\tteaserBox\t\t= $('.TeaserBoxMedium').find('.TeaserBoxMedium__wrapper'),\r\n\t\t\tboxToggle\t\t= teaserBox.length > 0 ? teaserBox.find('.info-link') : box.find('.info-link');\r\n\t\t\r\n\t\tboxToggle.unbind('click').on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tboxInfoToggleControl($(this));\r\n\t\t});\r\n\t}\r\n\r\n\tfunction boxInfoToggleControl(toggle) {\r\n\t    var box\t\t\t= toggle.closest('.box-full, .box-thumb, .box-product'),\r\n\t\t\tteaserBox\t= toggle.closest('.TeaserBoxMedium__wrapper');\r\n\r\n\t\tif (teaserBox.length > 0) {\r\n\t\t\tif (teaserBox.hasClass('is-active')) {\r\n\t\t\t\thideBoxTeaserInfo(teaserBox);\r\n\t\t\t} else {\r\n\t\t\t\tshowBoxTeaserInfo(teaserBox);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(box.hasClass('is-active')) {\r\n\t\t\t\thideBoxInfo(box);\r\n\t\t\t} else {\r\n\t\t\t\tshowBoxInfo(box);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// HOVER TOGGLE INFO BOX\r\n\tfunction boxHoveringCall() {\r\n\t    var box = $('.box-full, .box-thumb, .box-product'),\r\n\t\t\tteaserBox = $(\".TeaserBoxMedium__content\");\r\n\r\n\r\n\t\tif (teaserBox.length > 0) {\r\n\t\t\tteaserBox.unbind('mouseenter').on('mouseenter', function(e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tshowBoxTeaserInfo($(this))\t\t\r\n\t\t\t\t\r\n\t\t\t}).on('mouseleave', function(e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\thideBoxTeaserInfo($(this))\t\t\t\t\t\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tbox.unbind('mouseenter').on('mouseenter', function(e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\r\n\t\t\t\tshowBoxInfo($(this));\r\n\t\t\t\t\r\n\t\t\t}).on('mouseleave', function(e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\r\n\t\t\t\tvar boxControls = $(this).find('.box-controls li');\r\n\t\t\r\n\t\t\t\thideBoxInfo($(this));\t\t\t\t\r\n\t\r\n\t\t\t\tif(boxControls.length > 0) {\r\n\t\t\t\t\thideBoxExtension(boxControls);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\r\n\t // WORK IN PROGRESS: calc all animHeights before hovering\r\n\t var boxAnimHeight = [];\r\n\r\n\r\n\t function calcBoxAnimHeights() {\r\n\t var box \t\t\t= $('.box-full, .box-thumb, .box-product');\r\n\r\n\t for (var i = 0; box.length > i; i++) {\r\n\t var boxHeader\t\t= box.eq(i).find('.box-content-header').outerHeight(),\r\n\t boxBody\t\t\t= box.eq(i).find('.box-content-body'),\r\n\t boxControls     = box.eq(i).find('.box-controls'),\r\n\t animHeight      = box.eq(i).outerHeight() + boxBody.outerHeight() - (boxHeader + 15 + boxControls.height());\r\n\r\n\t boxAnimHeight.push(animHeight);\r\n\t //console.log(animHeight);\r\n\t }\r\n\t }*/\r\n\r\n\t// BOX ANIMATION\r\n    // SHOW BOX\r\n\tfunction showBoxInfo(box) {\r\n\t\tvar boxBody\t\t\t= box.find('.box-content-body'),\r\n\t\t\tgradient\t\t= box.find('.gradient-effect'),\r\n\t\t\tfooter          = box.find('.box-content-footer'),\r\n\t\t    product         = box.find('.box-product'),\r\n\t\t\tboxControls     = box.find('.box-controls'),\r\n\t\t\tboxExtension \t= box.find('.js-box-control');\r\n\r\n\t\tvar boxHeader\t\t= box.find('.box-content-header').outerHeight(),\r\n\t\t\tanimHeight      = box.outerHeight() - (20 + boxHeader + boxControls.outerHeight());\r\n\r\n\r\n\t\tbox.addClass('is-active');\r\n\r\n\t\tif(box.is('.box-thumb')) {\r\n\t\t\tvar boxImg = box.find('.js-box-media-adapter');\r\n\t\t\tboxImg.css('min-height', boxImg.outerHeight());\r\n\t\t}\r\n\r\n\t\tboxBody.css({\r\n\t\t\tminHeight: animHeight,\r\n\t\t\tmaxHeight: \"auto\",\r\n\t\t\topacity: 1\r\n\t\t});\r\n\t\tgradient.css('opacity', '1');\r\n\t}\r\n\r\n\tfunction showBoxTeaserInfo(box) {\r\n\t\tvar boxBody\t\t\t= box.find('.TeaserBoxMedium__body');\r\n\t\tbox.addClass('is-active');\r\n\r\n\t\tboxBody.slideDown();\r\n\t\t\r\n\t\tboxBody.css({\r\n\t\t\topacity: 1\r\n\t\t});\r\n\t}\r\n\r\n\t// HIDE BOX\r\n\tfunction hideBoxInfo(box) {\r\n\t\tvar boxBody\t\t= box.find('.box-content-body'),\r\n\t\t\tgradient\t= box.find('.gradient-effect');\r\n\t\r\n\t\tif(box.is('.box-thumb')) {\r\n\t\t\tvar boxImg = box.find('.js-box-media-adapter');\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tboxImg.css('min-height', '');\r\n\t\t\t}, 400);\r\n\r\n\t\t}\r\n\r\n\t\t// REMOVE delay from OPACITY animation for optimal animation-feel\r\n\t\tboxBody.css({\r\n\t\t\ttransition: 'min-height 0.3s cubic-bezier(.8, 0, .2, 1), opacity 0.2s 0s linear',\r\n\t\t\topacity: '0'\r\n\t\t});\r\n\r\n\t\tgradient.removeAttr('style');\t\t\r\n\r\n\t  \tsetTimeout(function() {\r\n\t\t  boxBody.removeAttr('style');\r\n\t\t}, 250);\r\n\t}\r\n\r\n\t// HIDE BOX\r\n\tfunction hideBoxTeaserInfo(box) {\r\n\t\tvar boxBody\t\t= box.find('.TeaserBoxMedium__body');\r\n\r\n\t\tbox.removeClass('is-active');\r\n\t\tboxBody.slideUp();\r\n\t\t\r\n\t\tboxBody.css({\r\n\t\t\topacity: 0\r\n\t\t});\r\n\t\r\n\t  \tsetTimeout(function() {\r\n\t\t  boxBody.removeAttr('style');\r\n\t\t}, 250);\r\n\t}\r\n\r\n    function boxClickExtension() {\r\n\t\tvar boxLinkTrigger \t= $('.js-box-control'),\r\n\t\t\tboxLink \t\t= boxLinkTrigger.find('> a');\r\n\r\n\t\tboxLinkTrigger.unbind('mouseenter').on('mouseenter', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tshowBoxInfo($(this).closest('.box-thumb'));\r\n\t\t\tshowBoxExtension($(this).closest('li'));\r\n\t\t    return;\r\n\t\t});\r\n\r\n\t\tboxLinkTrigger.on('mouseleave', function() {\r\n\t\t\thideBoxExtension($(this).closest('li'));\r\n\r\n\t\t\t// IF MOUSE LEAVE IS ON THE BOX, OPEN IT\r\n\t\t\tif($(this).closest('.box-thumb').find(\":hover\").length > 0) {\r\n\t\t\t\tshowBoxInfo($(this).closest('.box-thumb'));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// BOX CONTROLS ANIMATIONS\r\n\tfunction showBoxExtension($this) {\r\n\t\tvar boxExtension \t\t= $this.find('.js-box-extension'),\r\n\t\t\tbody \t\t\t\t= $this.closest('.box-content-inner').find('.box-content-body'),\r\n\t\t\theader \t\t\t\t= $this.closest('.box-content-inner').find('.box-content-header'),\r\n\t\t\tlistHeight\t\t\t= ($this.find('ul li').length * $this.find('ul li.special-dropdown').height() - 9) * (-1);\r\n\r\n\t\tif($this.find('ul li.special-dropdown').height() > 60){\r\n\t\t\t$this.find('ul li.special-dropdown').addClass('special-dropdown--align-left');\r\n\t\t} else {\r\n\t\t\t$this.find('.special-dropdown--align-left').removeClass('special-dropdown--align-left');\r\n\t\t}\r\n\r\n\t\t$this.addClass('is-active');\r\n\r\n\t\tboxExtension.css({\r\n\t\t\ttop: listHeight\r\n\t\t});\r\n\t\t$this.closest('.box-content').find('.box-content-header').css('opacity', '0.2');\r\n\t}\r\n\r\n    \r\n\tfunction hideBoxExtension($this) {\r\n\t\tvar boxExtension \t= $this.find('.js-box-extension'),\r\n\t\t\tbody \t\t\t= $this.closest('.box-content-inner').find('.box-content-body'),\r\n\t\t\theader \t\t\t= $this.closest('.box-content-inner').find('.box-content-header');\r\n\r\n\t\t$this.removeClass('is-active');\r\n\r\n\t\tboxExtension.removeAttr('style');\r\n\t\t$this.closest('.box-content').find('.box-content-header').removeAttr('style');\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.boxModule = function() {\r\n\t\"use strict\";\r\n\r\n\tvar smallBreak\t\t\t=\tTivoli.settings.width.small,\r\n\t\tlittleMediumBreak\t=\tTivoli.settings.width.littlemedium,\r\n\t\tmediumBreak\t\t\t=\tTivoli.settings.width.medium,\r\n\t\tlargeBreak \t\t\t=\tTivoli.settings.width.large,\r\n\t\txLargeBreak     = Tivoli.settings.width.xlarge,\r\n\t\twindowWidth,\r\n\t\tcurrentMQSize,\r\n\t\tallFulltimeSwipers = [];\r\n\t\r\n\tfunction init() {\r\n\t\tif($(\".swiper\").length === 0) {\r\n\t\t    return;\r\n\t\t}\r\n\t\tcallSwiper();\r\n\t}\r\n\r\n\r\n\t// SWIPER SETTINGS\r\n\tfunction swiperSettings(swiper) {\r\n\t\tvar size = {\r\n\t\t\t SixBySixWide: function() {\r\n\t\t        swiper.params.slidesPerView = 6.2;\r\n\t\t        swiper.params.slidesPerGroup = 6;\r\n\t\t        swiper.params.centeredSlides = false;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t    SixBySix: function() {\r\n\t\t        swiper.params.slidesPerView = 6;\r\n\t\t        swiper.params.slidesPerGroup = 6;\r\n\t\t        swiper.params.centeredSlides = false;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t    FiveByFiveWide: function() {\r\n\t\t        swiper.params.slidesPerView = 5.555;\r\n\t\t        swiper.params.slidesPerGroup = 5;\r\n\t\t        swiper.params.centeredSlides = false;\r\n\t\t        swiper.params.offsetSlidesBefore = 0.13;\r\n\t\t        swiper.params.offsetSlidesAfter = 12;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t    FiveByFive: function() {\r\n\t\t        swiper.params.slidesPerView = 5;\r\n\t\t        swiper.params.slidesPerGroup = 5;\r\n\t\t        swiper.params.centeredSlides = false;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t\tFourByFourWide: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 4.255;\r\n\t\t\t\tswiper.params.slidesPerGroup = 4;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0.13;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0.12;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tFourByFour: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 4;\r\n\t\t\t\tswiper.params.slidesPerGroup = 4;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tThreeByThreeWide: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 3.2;\r\n\t\t\t\tswiper.params.slidesPerGroup = 3;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0.1;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0.1;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tThreeByThree: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 3;\r\n\t\t\t\tswiper.params.slidesPerGroup = 3;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tTwoByTwoWide: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 2.14;\r\n\t\t\t\tswiper.params.slidesPerGroup = 2;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0.07;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0.07;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tTwoByTwoWideNoOffset: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 2.14;\r\n\t\t\t\tswiper.params.slidesPerGroup = 2;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 1;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tTwoByTwo: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 2;\r\n\t\t\t\tswiper.params.slidesPerGroup = 2;\r\n\t\t\t\tswiper.params.centeredSlides = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\tOneByOne: function() {\r\n\t\t\t\tswiper.params.slidesPerView = 1.1;\r\n\t\t\t\tswiper.params.slidesPerGroup = 1;\r\n\t\t\t\tswiper.params.centeredSlides = true;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0.8;\r\n\t\t\t\treInitSwiper();\r\n\t\t\t},\r\n\t\t\treset: function() {\r\n\t\t\t\tvar $swiper\t\t=\t$(swiper.container).find('.swiper'),\r\n\t\t\t\t\t$swipeBox\t=\t$swiper.find('.box-item');\r\n\r\n\t\t\t\tswiper.params.autoResize = false;\r\n\t\t\t\tswiper.params.slidesPerView = 'auto';\r\n\t\t\t\tswiper.params.slidesPerViewFit = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\r\n\t\t\t\t$swiper.removeAttr('style');\r\n\t\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\tkillTouch: function() {\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction reInitSwiper() {\r\n\t\t\tvar $swiper\t\t=\t$(swiper.container).find('.swiper'),\r\n\t\t\t\t$swipeBox\t=\t$swiper.find('.box-item');\r\n\r\n\t\t\t$swiper.removeClass('kill-swiper');\r\n\t\t\t$swiper.removeAttr('style');\r\n\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\tswiper.reInit();\r\n\t\t}\r\n\t\treturn size;\r\n\t}\r\n\r\n\t//\r\n\t// Create swiper for each on page\r\n\tfunction callSwiper() {\r\n\r\n\t\tMQWidth();\r\n\t\tcurrentMQSize = getMQSize();\r\n\r\n        // Insert headers for all sliders\r\n\t\t$(\"div.swiper span.vignette\").each(function (index, value) {\r\n\t\t\t$(\"div.swiper-mobile-head\").append('<span class=\"label head-slide\">' + value.innerHTML + '</span>');\r\n\t\t});\r\n\r\n\t\t$('.swiper-container').each(function() {\r\n\t\t\ttopBoxSwiper($(this), true, currentMQSize);\r\n\t\t});\r\n\r\n\t\t$('.fulltime-swiper-container').each(function() {\r\n\t\t\tfullTimeSwiperInit($(this), true, currentMQSize);\r\n\t\t});\r\n\t\t$('.autoheight-swiper-container').each(function () {\r\n\t\t    fullTimeSwiperInit($(this), true, currentMQSize);\r\n\t\t});\r\n\r\n\t\t$('.fulltime-swiper-container--wide').each(function() {\r\n\t\t\tfullTimeSwiperInit($(this), true, currentMQSize);\r\n\t\t});\r\n\r\n\t\t$(window).smartresize(function() {\r\n\t\t\tMQWidth();\r\n\t\t});\r\n\r\n\t\t$(document).on('breakpoint', function(e) {\r\n\t\t\t$.each(allFulltimeSwipers, function() {\r\n\t\t\t\tsetSwiper(this, currentMQSize);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getMQSize() {\r\n\r\n\t\twindowWidth = $(window).width();\r\n\t\tvar newMQSize;\r\n\r\n\t\tif (xLargeBreak < windowWidth && windowWidth > largeBreak) {\r\n\t\t\tnewMQSize = 'xxlarge';\r\n\t\t}else if(largeBreak < windowWidth && windowWidth > mediumBreak) {\r\n\t\t\tnewMQSize = 'xlarge';\r\n\t\t} else if (largeBreak >= windowWidth && windowWidth > mediumBreak) {\r\n\t\t\tnewMQSize = 'large';\r\n\t\t} else if((mediumBreak >= windowWidth && littleMediumBreak < windowWidth)) {\r\n\t\t\tnewMQSize = 'medium';\r\n\t\t} else if (littleMediumBreak >= windowWidth && smallBreak < windowWidth) {\r\n\t\t\tnewMQSize = 'littlemedium';\r\n\t\t} else if ((smallBreak >= windowWidth)) {\r\n\t\t\tnewMQSize = 'small';\r\n\t\t}\r\n\t\treturn newMQSize;\r\n\t}\r\n\r\n\tfunction MQWidth() {\r\n\t\twindowWidth = $(window).width();\r\n\r\n\t\tif (currentMQSize !== getMQSize()) {\r\n\t\t\tcurrentMQSize = getMQSize();\r\n\t\t\t$(document).trigger('breakpoint', [currentMQSize]);\r\n\t\t}\r\n\t}\r\n\r\n\t//\r\n\t// Set specs for \"fulltime swiper\r\n\tfunction fullTimeSwiperInit(swiperContainer, dontCalcHeight) {\r\n\r\n\t\tvar swiperSettings = {\r\n\t\t\t\twrapperClass: 'swiper',\r\n\t\t\t\tslideClass: 'box-item',\r\n\t\t\t\treallyDontCalculateHeight: dontCalcHeight,\r\n\t\t\t\tcreatePagination: true,\r\n\t\t\t\tpaginationClickable: true,\r\n\t\t\t\tpagination: swiperContainer.find('.swiper-pagegination .pagination-inner')[0],\r\n\t\t\t\tpaginationAsRange: true,\r\n\t\t\t\troundLengths: true,\r\n\t\t\t\tonTouchEnd: swipeBegun,\r\n\t\t\t\tonSlideChangeStart: swipeBegun,\r\n\t\t\t\tonSwiperCreated: setSwiper,\r\n\t\t\t\tonInit: swipeBegun,\r\n\t\t\t\tfullTimeSwiper: true\r\n\t\t\t};\r\n\r\n\t\tvar fulltimeBoxSwiper = new Swiper(swiperContainer[0], swiperSettings);\r\n\t\tallFulltimeSwipers.push(fulltimeBoxSwiper);\r\n\t\tswiperContainer.addClass('swiper-active');\r\n\t}\r\n\r\n\tfunction setSwiper(swiper, MQWidth) {\r\n\t\tMQWidth = MQWidth !== undefined ? MQWidth : currentMQSize;\r\n\r\n\t\t// TEST IF THE CONTAINER IS FOR PRODUCTS (WIDE BOXES SWIPER)\r\n\t    var productSwiperWideContainer = $(swiper.container).is('.fulltime-swiper-container--wide');\r\n\t\tvar fiveByFiveSwiperContainer = $(swiper.container).is('.fivebyfive-swiper-container');\r\n\t\tvar sixBySixSwiperContainer = $(swiper.container).is('.sixbysix-swiper-container');\r\n\t\t\r\n\r\n\t\tif(productSwiperWideContainer) {\r\n\t\t\tproductSwiper(swiper, MQWidth);\r\n\t\t}\r\n\t\telse if (fiveByFiveSwiperContainer) {\r\n\t\t\tfiveByFiveSwiper(swiper, MQWidth); }\r\n\t\telse if (sixBySixSwiperContainer) {\r\n\t\t\tsixBySixSwiper(swiper, MQWidth);\r\n    } else {\r\n\t\t\tstandardSwiper(swiper, MQWidth);\r\n    }\r\n\t}\r\n\r\n\tfunction standardSwiper(swiper, MQWidth) {\r\n\t\tvar $swiperContainer = $(swiper.container);\r\n\t\tvar swiperItemLength = $swiperContainer.find('.box-item').length;\r\n\r\n\r\n\t\tif (MQWidth === 'xxlarge') {\r\n\t\t\tif (swiperItemLength <= 4) {\r\n\t\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).FourByFour();\r\n\t\t\t\tswiperSettings(swiper).killTouch();\r\n\t\t\t} else {\r\n\t\t\t\t$swiperContainer.addClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).FourByFourWide();\r\n\t\t\t}\r\n\t\t\tslideControl(swiper);\r\n\r\n\r\n\t\t} else if (MQWidth === 'xlarge') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FourByFour();\r\n\t\t\tslideControl(swiper);\r\n\r\n\t\t} else if (MQWidth === 'medium' || MQWidth === 'large') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).ThreeByThree();\r\n\t\t\tslideControl(swiper);\r\n\r\n\t\t} else if (MQWidth === 'littlemedium') {\r\n\t\t\tswiperSettings(swiper).TwoByTwo();\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'small') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).OneByOne();\r\n\t\t\tslideControl(swiper);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction sixBySixSwiper(swiper, MQWidth) {\r\n\t\tvar $swiperContainer = $(swiper.container);\r\n\t\tvar swiperItemLength = $swiperContainer.find('.box-item').length;\r\n\r\n\t\tif (MQWidth === 'xxlarge') {\r\n\t\t\tif (swiperItemLength <= 6) {\r\n\t\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).SixBySix();\r\n\t\t\t\tswiperSettings(swiper).killTouch();\r\n\t\t\t} else {\r\n\t\t\t\t$swiperContainer.addClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).SixBySixWide();\r\n\t\t\t}\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'xlarge') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FiveByFive();\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'large') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FourByFour();\r\n\t\t\tslideControl(swiper);\r\n\t\t}\r\n\t\t else if (MQWidth === 'medium') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FourByFour();\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'littlemedium') {\r\n\t\t\tswiperSettings(swiper).ThreeByThree();\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'small') {\r\n\t\t\t$swiperContainer.addClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).TwoByTwoWide();\r\n\t\t\tslideControl(swiper);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fiveByFiveSwiper(swiper, MQWidth) {\r\n\t\tvar $swiperContainer = $(swiper.container);\r\n\t\tvar swiperItemLength = $swiperContainer.find('.box-item').length;\r\n\r\n\t\tif (MQWidth === 'xlarge' || MQWidth === 'xxlarge') {\r\n\t\t\tif (swiperItemLength <= 5) {\r\n\t\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).FiveByFive();\r\n\t\t\t\tswiperSettings(swiper).killTouch();\r\n\t\t\t} else {\r\n\t\t\t\t$swiperContainer.addClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).FiveByFiveWide();\r\n\t\t\t}\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'large') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FiveByFive();\r\n\t\t\tslideControl(swiper);\r\n\t\t\tswiperSettings(swiper).killTouch();\r\n\t\t} else if (MQWidth === 'medium') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).FiveByFive();\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'littlemedium') {\r\n\t\t\tswiperSettings(swiper).ThreeByThree();\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if (MQWidth === 'small') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).OneByOne();\r\n\t\t\tslideControl(swiper);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction productSwiper(swiper, MQWidth) {\r\n\r\n\t\tvar $swiperContainer = $(swiper.container);\r\n\t\tvar swiperItemLength = $swiperContainer.find('.box-item').length;\r\n\r\n\t\tif(MQWidth === 'xlarge' || MQWidth === 'xxlarge') {\r\n\t\t\tif(swiperItemLength <= 2) {\r\n\t\t\t\tswiperSettings(swiper).ThreeByThree();\r\n\t\t\t\tswiperSettings(swiper).killTouch();\r\n\t\t\t} else {\r\n\t\t\t\t$swiperContainer.addClass('js-expanded-width');\r\n\t\t\t\tswiperSettings(swiper).ThreeByThreeWide();\r\n\t\t\t}\r\n\t\t\tslideControl(swiper);\r\n\t\t} else if(MQWidth === 'large') {\r\n\t\t\tswiperSettings(swiper).ThreeByThree();\r\n\t\t\tslideControl(swiper);\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t} else if(MQWidth === 'medium' || MQWidth === 'littlemedium') {\r\n\t\t\tswiperSettings(swiper).TwoByTwo();\r\n\t\t\tslideControl(swiper);\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t} else if(MQWidth === 'small') {\r\n\t\t\t$swiperContainer.removeClass('js-expanded-width');\r\n\t\t\tswiperSettings(swiper).OneByOne();\r\n\t\t}\r\n\t}\r\n\r\n\t//\r\n\t// Set specs for top swiper (only inited on small screens)\r\n\tfunction topBoxSwiper(swiperContainer, dontCalcHeight) {\r\n\r\n\t\tvar topBoxSwiperSettings = {\r\n\t\t\twrapperClass: 'swiper',\r\n\t\t\tslideClass: 'box-item',\r\n\t\t\tslidesPerView: 1.1,\r\n\t\t\tcenteredSlides: true,\r\n\t\t\treallyDontCalculateHeight: dontCalcHeight,\r\n\t\t\tcreatePagination: true,\r\n\t\t\tpaginationClickable: true,\r\n\t\t\tpagination: swiperContainer.find('.swiper-pagegination .pagination-inner')[0],\r\n\t\t\tpaginationAsRange: true,\r\n\t\t\tonTouchEnd: swiperPositionCallback,\r\n\t\t\tonSlideChangeEnd: swiperPositionCallback,\r\n\t\t\tonInit: swipeBegun,\r\n\t\t\tfullTimeSwiper: false,\r\n\t\t\tonCreated: initTopBoxSwiper\r\n\t\t};\r\n\r\n\t\tvar swiperBoxHeadSetting = {\r\n\t\t\tslidesPerView: 'auto',\r\n\t\t\twrapperClass: 'swiper-mobile-head',\r\n\t\t\tslideClass: 'head-slide',\r\n\t\t\tcalculateHeight: true,\r\n\t\t\tcreatePagination: false,\r\n\t\t\tcenteredSlides: true,\r\n\t\t\tonTouchEnd: swiperHeadPositionCallback,\r\n\t\t\tonSlideClick: swiperHeadClickPosition,\r\n\t\t    // cssWidthAndHeight: 'width'\r\n\t\t};\r\n\r\n\t\tvar $swiper\t\t\t=\tswiperContainer.find('.swiper'),\r\n\t\t\t$swipeBox\t\t=\t$swiper.find('.box-item'),\r\n\t\t\t$swiperHead\t\t=\tswiperContainer.find('.label.vignette'),\r\n\t\t\t$swiperBoxHead\t=\t$swiperHead.find('.head-slide'),\r\n\t\t\tswiperInited,\r\n\t\t\tboxSwiper,\r\n\t\t\tboxHeadSwiper;\r\n\r\n\r\n\t\t//  TRIGGER ON WINDOW RESIZE\r\n\t\t$(document).on('breakpoint', function() {\r\n\t\t\tinitTopBoxSwiper(getMQSize());\r\n\t\t});\r\n\r\n\t\t// RUN ON LOAD\r\n\t\tinitTopBoxSwiper(getMQSize());\r\n\r\n\t\t// SMALL SWIPER INIT\r\n\t\tfunction initTopBoxSwiper(MQWidth) {\r\n\r\n\t\t\tif (MQWidth === 'small') {\r\n\t\t\t\ttopBoxSwiperSettings.slidesPerView = 1.1;\r\n\t\t\t\ttopBoxSwiperSettings.centeredSlides = true;\r\n\t\t\t\tif (!swiperInited) {\r\n\t\t\t\t\tswiperInited = true;\r\n\t\t\t\t\tboxSwiper = new Swiper(swiperContainer[0], topBoxSwiperSettings);\r\n\t\t\t\t}\r\n\t\t\t} else if (MQWidth !== 'small' && MQWidth !== 'xlarge' && MQWidth !== 'xxlarge') {\r\n\t\t\t\ttopBoxSwiperSettings.slidesPerView = 1.5;\r\n\t\t\t\ttopBoxSwiperSettings.centeredSlides = false;\r\n\t\t\t\tif (!swiperInited) {\r\n\t\t\t\t\tswiperInited = true;\r\n\t\t\t\t\tboxSwiper = new Swiper(swiperContainer[0], topBoxSwiperSettings);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif($swiperHead.length > 0) {\r\n\t\t\t\t\tboxHeadSwiper = new Swiper(swiperContainer[0], swiperBoxHeadSetting);\r\n\t\t\t\t\t//Calculate width for mobile head according to number of slides / headers\r\n\t\t\t\t\tvar headSlideNum = $(\".head-slide\").length;\r\n\t\t\t\t\t$(\".swiper-mobile-head\").css(\"width\", \"calc(100% + \" + headSlideNum * 175 + \"px\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif(swiperInited) {\r\n\t\t\t\t\tdestroySlideControl(boxSwiper);\r\n\t\t\t\t\tswiperInited = false;\r\n\t\t\t\t\tboxSwiper.destroy(true);\r\n\t\t\t\t\t$swiper.removeAttr('style');\r\n\t\t\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\t\t\tboxSwiper = undefined;\r\n\r\n\t\t\t\t\tif($swiperHead.length > 0) {\r\n\t\t\t\t\t\tboxHeadSwiper.destroy();\r\n\t\t\t\t\t\t$swiperHead.removeAttr('style');\r\n\t\t\t\t\t\t$swiperBoxHead.removeAttr('style');\r\n\t\t\t\t\t\tboxHeadSwiper = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (swiperInited === true) {\r\n\t\t\t\tif($swiperHead.length > 0) {\r\n\t\t\t\t\tboxHeadSwiper = new Swiper(swiperContainer[0], swiperBoxHeadSetting);\r\n\t\t\t\t\t// Calculate width for mobile head according to number of slides / headers\r\n\t\t\t\t\tvar $headSlides = $(\".head-slide\");\r\n\t\t\t\t\tvar $slidesWidth = $(\".swipe-box\").width();\r\n\t\t\t\t\t$(\".swiper-mobile-head\").css(\"width\", \"calc(100% + \" + $headSlides.length * 175 + \"px\");\r\n\t\t\t\t}\r\n\t\t\t\tslideControl(boxSwiper);\r\n\t\t\t\tswipeBegun(boxSwiper);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction destroyWiper(swiper) {\r\n\t\t\tdestroySlideControl(boxSwiper);\r\n\t\t\tswiperInited = false;\r\n\t\t\tswiper.destroy(true);\r\n\t\t\t$swiper.removeAttr('style');\r\n\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\tswiper = undefined;\r\n\t\t}\r\n\r\n\t\t// HEAD-LABEL FUNCTIONs\r\n\t\tfunction swiperHeadClickPosition(swiperHead) {\r\n\t\t\tvar clickedSlide = swiperHead.clickedSlideIndex;\r\n\t\t\tboxSwiper.swipeTo(clickedSlide, 500);\r\n\t\t\tboxHeadSwiper.swipeTo(clickedSlide, 500);\r\n\t\t}\r\n\r\n\t\tfunction swiperHeadPositionCallback(swiperHead) {\r\n\t\t\tboxSwiper.swipeTo(swiperHead.activeIndex, 500);\r\n\t\t}\r\n\t\tfunction swiperPositionCallback(swiper) {\r\n\t\t\tswipeBegun(swiper);\r\n\t\t\tif (boxHeadSwiper) {\r\n\t\t\t\tboxHeadSwiper.swipeTo(swiper.activeIndex, 500);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Display shadow effect, if swipe begun\r\n\tfunction swipeBegun(swiper) {\r\n\t\tvar slidePerGroup\t= swiper.params.slidesPerGroup,\r\n\t\t\ttotalSlides\t\t= swiper.slides.length,\r\n\t\t\tactiveSlide\t\t= swiper.activeIndex,\r\n\t\t\t$swiperContainer = $(swiper.container);\r\n\r\n\t\tvar prev = $swiperContainer.find('.pagination-prev'),\r\n\t\t\tnext = $swiperContainer.find('.pagination-next');\r\n\r\n\t\tif (slidePerGroup !== totalSlides && slidePerGroup < totalSlides) {\r\n\r\n\t\t\t$swiperContainer.addClass('js-show-first-effect js-show-last-effect');\r\n\t\t\tif(activeSlide === 0) {\r\n\t\t\t\t$swiperContainer.removeClass('js-show-first-effect');\r\n\t\t\t} else if (activeSlide === (totalSlides - slidePerGroup)) {\r\n\t\t\t\t$swiperContainer.removeClass('js-show-last-effect');\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t$swiperContainer.removeClass('js-show-first-effect js-show-last-effect');\r\n\t\t}\r\n\r\n\t\t//\r\n\t\t// NAV ARROWS\r\n\t\tif(activeSlide === 0) {\r\n\t\t\tprev.addClass('js-hide');\r\n\t\t} else {\r\n\t\t\tprev.removeClass('js-hide');\r\n\t\t}\r\n\r\n\t\tif (activeSlide === (totalSlides - slidePerGroup)) {\r\n\t\t\tnext.addClass('js-hide');\r\n\t\t} else {\r\n\t\t\tnext.removeClass('js-hide');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// NEXT/PREV CONTROLS\r\n\tfunction slideControl(swiper) {\r\n\t\tvar $swiper = $(swiper.container),\r\n\t\t\tprev = $swiper.find('.pagination-prev'),\r\n\t\t\tnext = $swiper.find('.pagination-next');\r\n\r\n\t\tprev.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tswiper.swipePrev();\r\n\t\t});\r\n\t\tnext.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tswiper.swipeNext();\r\n\t\t});\r\n\r\n\t\thideInactivePagination(swiper);\r\n\t}\r\n\r\n\tfunction destroySlideControl(swiper) {\r\n\t\tvar $swiper = $(swiper.container),\r\n\t\t\tprev = $swiper.find('.pagination-prev'),\r\n\t\t\tnext = $swiper.find('.pagination-next');\r\n\r\n\t\tprev.unbind();\r\n\t\tnext.unbind();\r\n\t}\r\n\r\n\r\n\t// CONTROL WHAT PAGINATION-BULLETS ARE SHOWN\r\n\tfunction hideInactivePagination(swiper) {\r\n\t\tvar $swiper = $(swiper.container),\r\n\t\t\tslidePerGroup\t= swiper.params.slidesPerGroup,\r\n\t\t\ttotalSlides\t\t= swiper.slides.length,\r\n\t\t\twholeSlides \t= Math.ceil(totalSlides / slidePerGroup);\r\n\r\n\t\tvar $pagination = $swiper.find('.swiper-pagegination');\r\n\r\n\t\tif(slidePerGroup > 1) {\r\n\t\t\tvar activeCount = totalSlides - slidePerGroup + 1;\r\n\r\n\t\t\t$pagination.show();\r\n\r\n\t\t\t$swiper.find('.swiper-pagination-switch').css('display', 'none');\r\n\t\t\t$swiper.find('.swiper-pagination-switch:nth-child(' + slidePerGroup + 'n + 1)').css('display', 'inline-block');\r\n\r\n\t\t\tif (slidePerGroup/totalSlides !== 0) {\r\n\t\t\t\t$swiper.find('.pagination-inner span:nth-child(' + activeCount +')').css('display', 'inline-block');\r\n\t\t\t\tif(wholeSlides !== (totalSlides/slidePerGroup)) {\r\n\t\t\t\t\t$swiper.find('.pagination-inner span').slice(activeCount).css('display', 'none');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t$swiper.find('.pagination-inner span').css('display', 'inline-block');\r\n\t\t}\r\n\r\n\t\tif(totalSlides === slidePerGroup || totalSlides < slidePerGroup) {\r\n\t\t\t$pagination.hide();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n}();\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.FilterSorting = function() {\r\n    var allTabs,\r\n        allFilters,\r\n        contentContainer,\r\n        allContentItems,\r\n        noResultsView,\r\n        $window = $(window);\r\n    \r\n\t// GRID SIZING PATTERN\r\n\tvar largeBoxPattern = [0, 3, 4, 7, 8, 11, 12, 15, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 36, 39, 40, 43, 44, 47, 48, 51, 52, 55, 56];\r\n\tvar smallBoxPattern = [1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 49, 50, 53, 54, 57, 58, 61, 62];\r\n\tvar clearBoxPattern = [2, 6, 10, 14, 19, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90];\r\n\tvar pullBoxPattern = [3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87];\r\n    \r\n\r\n\tfunction init() {\r\n        allTabs = $(\".js-page-filter-tab-navigation .tab-filter\");\r\n        allFilters = $(\".js-tab-page\");\r\n        if (allTabs.length === 0 && allFilters.length === 0) {\r\n            return;\r\n        }\r\n\r\n        // Initializes the sliders\r\n        $('.slider').range();\r\n\r\n        // Set BOX-SIZES\r\n        Tivoli.Filter.getFilterSelection();\r\n\r\n        contentContainer = $(\".box-sorting\");\r\n\r\n        insertQuotes(contentContainer);\r\n        \r\n        allContentItems = contentContainer.find(\".box-sorting-container\");\r\n        noResultsView = contentContainer.siblings(\".filter-no-results\");\r\n\r\n        // We can have tabs without filters and filters without tabs\r\n        if (allTabs.length > 0) {\r\n            allTabs.each(function () {\r\n                var currentTab = $(this);\r\n                var currentFilterSelection = allFilters.filter(\".\" + currentTab.data(\"id\"));\r\n                var currentContentItems = allContentItems.filter(\".\" + currentTab.data(\"id\"));\r\n\t\t\t\tvar currentTabGridSetting = currentTab.data(\"grid\");\r\n                var isActive = currentTab.hasClass(\"js-selected\");\r\n                var f = new filter(currentTab, currentFilterSelection, currentContentItems, isActive, currentTabGridSetting);\r\n            });\r\n        } else {\r\n            allFilters.each(function () {\r\n                var currentFilterSelection = $(this);\r\n\t\t\t\tvar currentTabGridSetting = currentFilterSelection.data(\"grid\");\r\n                if (currentFilterSelection.hasClass(\"ajax-filter\")) {\r\n                    return;\r\n                }\r\n                \r\n                var f = new filter(null, currentFilterSelection, allContentItems, true, currentTabGridSetting);\r\n            });\r\n        }\r\n        openFilterMobile();\r\n    }\r\n\r\n    function filter(tab, filterSelection, elements, activeFilter, currentTabGridSetting) {\r\n        var $tab = tab,\r\n            $filterSection = filterSelection,\r\n            $filters = filterSelection.find(\".filter-controls\"),\r\n            $elements = elements,\r\n\t        filterGroup,\r\n\t        outputString = '',\r\n            isActive = activeFilter,\r\n\t\t\tgridType = currentTabGridSetting;\r\n\r\n        // The \"init\" method will run on document ready and cache any jQuery objects we will need.\r\n        var initFilter = function () {\r\n            if ($tab && $tab.length) {\r\n                filterGroup = {\r\n                    $buttons: $filters.find('.checkbox'),\r\n                    $range: $filters.find('.range'),\r\n                    ranges: [],\r\n                    $dropdown: $filters.find('select'),\r\n                    active: ''\r\n                };\r\n\r\n                bindHandlers();\r\n            } else if ($filters.length) {\r\n                filterGroup = {\r\n                    $buttons: $filters.find('.checkbox'),\r\n                    $range: $filters.find('.range'),\r\n                    ranges: [],\r\n                    $dropdown: $filters.find('select'),\r\n                    active: ''\r\n                };\r\n\r\n                bindHandlers();\r\n            }\r\n\r\n            if (filterGroup && isActive) {\r\n                parseFilters();\r\n            }\r\n        };\r\n\r\n        // The \"bindHandlers\" method will listen for whenever a button is clicked.\r\n        var bindHandlers = function () {\r\n            if ($tab) {\r\n                // Handle filter clicks\r\n                $tab.on('click', function(e) {\r\n                    e.preventDefault();\r\n\r\n                    // If the button is active, remove the active class, else make active and deactivate others.\r\n                    $tab.addClass('js-selected').siblings('.filter').removeClass('js-selected');\r\n\r\n                    parseFilters();\r\n                    Tivoli.Filter.saveFilterSelection($tab);\r\n                });\r\n            }\r\n\r\n            // WATCH FOR CHANGES\r\n            $filters.on('change', function (e) {\r\n                var $currentFilter = $(e.target);\r\n                synchronizeFilters($currentFilter);\r\n                \r\n                parseFilters();\r\n                Tivoli.Filter.saveFilterSelection();\r\n\r\n            });\r\n            noResultsView.find(\"a\").on(\"click\", function() {\r\n                Tivoli.Filter.clearFilters();\r\n                parseFilters();\r\n                Tivoli.Filter.saveFilterSelection();\r\n            });\r\n        };\r\n\r\n        var synchronizeFilters = function (currentFilter) {\r\n            var id = currentFilter.data(\"id\");\r\n            if (!id) {\r\n                return;\r\n            }\r\n            var identicalFilters = allFilters.find(\".\" + id);\r\n            if (identicalFilters.hasClass(\"dropdown\")) {\r\n                identicalFilters.val(currentFilter.val()).selectric('refresh');\r\n            } else if (identicalFilters.hasClass(\"slider\")) {\r\n                var dataSelectedMax = parseInt(currentFilter.attr('data-selectedmax'));\r\n                var dataSelectedMin = parseInt(currentFilter.attr('data-selectedmin'));\r\n                identicalFilters.val([dataSelectedMin, dataSelectedMax]);\r\n            } else if (identicalFilters.hasClass(\"checkbox\")) {\r\n                identicalFilters.prop(\"checked\", currentFilter.prop(\"checked\"));\r\n            }\r\n        };\r\n\r\n        // The parseFilters method checks which filters are active in each group:\r\n        var parseFilters = function () {\r\n            // loop through each filter group and grap the active filter from each one.\r\n            var dataSelectedMax,\r\n                dataSelectedMin;\r\n            \r\n            filterGroup.active = \"\";\r\n            filterGroup.ranges = [];\r\n\r\n            filterGroup.$range.each(function () {\r\n                var rangeFilter = $(this);\r\n\r\n                dataSelectedMax = parseInt(rangeFilter.attr('data-selectedmax'));\r\n                dataSelectedMin = parseInt(rangeFilter.attr('data-selectedmin'));\r\n\r\n                dataSelectedMax = dataSelectedMax >= 0 ? dataSelectedMax : 1000;\r\n                dataSelectedMin = dataSelectedMin >= 0 ? dataSelectedMin : 0;\r\n\r\n                filterGroup.ranges.push({\r\n                    searchData: rangeFilter.attr('class').match(/data-val-(\\w+)/g),\r\n                    rangeActive: [dataSelectedMin, dataSelectedMax]\r\n                });\r\n            });\r\n\r\n            filterGroup.$dropdown.each(function () {\r\n                var val = $(this).val();\r\n                if (val && val.length) {\r\n                    filterGroup.active += \".\" + val;\r\n                }\r\n            });\r\n            filterGroup.$buttons.each(function () {\r\n                var check = $(this);\r\n                if (check.prop(\"checked\")) {\r\n                    filterGroup.active += \".\" + check.data(\"filter\");\r\n                }\r\n            });\r\n\r\n            applyFilters();\r\n        };\r\n\r\n        // The \"concatenate\" method will crawl through each group, concatenating filters as desired:\r\n        var applyFilters = function () {\r\n            var boxes = $elements;\r\n\r\n            outputString = filterGroup.active; // Reset output string\r\n\r\n            allContentItems.removeClass('visible');\r\n            contentContainer.find('.quote').removeClass('visible');\r\n            \r\n            boxes = filters.rangeFilter(boxes);\r\n            boxes = filters.selectedFilter(boxes);\r\n\r\n            boxes.addClass('visible');\r\n            \r\n            insertQuotes(contentContainer);\r\n            animateIn(contentContainer);\r\n        };\r\n\r\n        var filters = {\r\n            rangeFilter: function (boxes) {\r\n                for (var i = 0; i < filterGroup.ranges.length; i++) {\r\n                    boxes = boxes.filter(function () {\r\n                        var range = filterGroup.ranges[i];\r\n                        var val = $(this).attr(range.searchData[0]);\r\n                        var min = range.rangeActive[0];\r\n                        var max = range.rangeActive[1];\r\n\r\n                        return ((val >= min) && (val <= max));\r\n                    });\r\n                }\r\n                return boxes;\r\n            },\r\n            selectedFilter: function (boxes) {\r\n                //var checkboxFilters = $(outputString);\r\n                if (outputString.length > 0 && boxes != null) {\r\n                    return boxes.filter(outputString);\r\n                } else {\r\n                    return boxes;\r\n                }\r\n            }\r\n        };\r\n\r\n        function animateIn(container) {\r\n            var quotes = container.find('.quote');\r\n            var actives = container.find('.visible');\r\n\r\n            var noResults = actives.length === 0 && $elements.length !== 0;\r\n\r\n            TweenMax.to(container, 0.3, { autoAlpha: 0, onComplete: hideAllItems });\r\n\r\n            function hideAllItems() {\r\n                setBoxSizes(actives, container, gridType);\r\n                quotes.not('.visible').remove();\r\n                TweenMax.set(container, { autoAlpha: 1 });\r\n                TweenMax.set(allContentItems, { autoAlpha: 0, display: 'none', onComplete: animateThemIn });\r\n\r\n                if (!noResults && !noResultsView.hasClass(\"hidden\")) {\r\n                    noResultsView.addClass(\"hidden\");\r\n                }\r\n                function animateThemIn() {\r\n                    if (noResults && noResultsView.hasClass(\"hidden\")) {\r\n                        noResultsView.removeClass(\"hidden\");\r\n                    }\r\n                    TweenMax.set(actives, { display: 'block' });\r\n                    //TweenMax.staggerTo(actives, 0.2, { autoAlpha: 1 }, 0.1); // Animate items in\r\n                    TweenMax.to(actives, 0.2, { autoAlpha: 1 }); // Animate items in\r\n                    $window.trigger(\"lazyload\");\r\n                }\r\n            }\r\n        }\r\n\r\n       // animateIn(container, gridType);\r\n        initFilter();\r\n    };\r\n\r\n    $.fn.range = function () {\r\n\r\n        return this.each(function () {\r\n            var maxRange = $(this).attr('data-maxval') !== 'undefined' ? parseInt($(this).attr('data-maxval')) : 0;\r\n            var minRange = $(this).attr('data-minval') !== 'undefined' ? parseInt($(this).attr('data-minval')) : 0;\r\n            var step = $(this).attr('data-step') !== 'undefined' ? parseInt($(this).attr('data-step')) : 1;\r\n\r\n            var selectedMax = $(this).attr('data-selectedmax') !== 'undefined' ? parseInt($(this).attr('data-selectedmax')) : maxRange;\r\n            var selectedMin = $(this).attr('data-selectedmin') !== 'undefined' ? parseInt($(this).attr('data-selectedmin')) : minRange;\r\n            \r\n            $(this).noUiSlider({\r\n                start: [0, 1000],\r\n                step: step,\r\n                margin: 1,\r\n                connect: true,\r\n                behaviour: 'tap-drag',\r\n                format: wNumb({\r\n                    decimals: 0\r\n                }),\r\n                range: {\r\n                    'min': minRange,\r\n                    'max': maxRange\r\n                }\r\n            });\r\n\r\n            $(this).on({\r\n                change: function () {\r\n                    selectedMin = $(this).val()[0];\r\n                    selectedMax = $(this).val()[1];\r\n                    setRangeSearch($(this));\r\n                }\r\n            });\r\n\r\n            function setRangeSearch(self) {\r\n                self.attr('data-selectedmax', selectedMax);\r\n                self.attr('data-selectedmin', selectedMin);\r\n            }\r\n\r\n            if ($(this).siblings('.sort-spec .min-val')) {\r\n                $(this).Link('upper').to($(this).siblings('.sort-title').find('.min-val'));\r\n            }\r\n            if ($(this).siblings('.sort-spec .max-val')) {\r\n                $(this).Link('lower').to($(this).siblings('.sort-title').find('.max-val'));\r\n            }\r\n            \r\n            setRangeSearch($(this));\r\n        });\r\n    };\r\n\r\n    function insertQuotes(elem) {\r\n\r\n        var quote = $('.quotes .quote').clone();\r\n\r\n        var boxSortingContainer = elem.find('.visible.box-sorting-container');\r\n        var quotePosition = [2, 5, 10, 14, 18, 22, 26, 30, 34, 38];\r\n        var quoteArray = [];\r\n\r\n        if (quote.length > 0) {\r\n\r\n            for (var i = 0; quote.length > i; i++) {\r\n                $(quote[i]).addClass(\"visible\");\r\n                quoteArray.push(i);\r\n            }\r\n\r\n            // randomize order of elements with a sort function that randomly returns -1/0/1\r\n            quoteArray.sort(function () {\r\n                return Math.floor(Math.random() * 3) - 1;\r\n            });\r\n\r\n            function getNextRandom() {\r\n                return quoteArray.shift();\r\n            };\r\n\r\n            var originalLength = quoteArray.length;\r\n\r\n            for (var j = 0; originalLength > j; j++) {\r\n                var randomQuote = quote[getNextRandom()];\r\n                boxSortingContainer.eq(quotePosition[j]).before(randomQuote);\r\n            }\r\n        }\r\n    }\r\n\r\n    function setBoxSizes(sorter, container, gridType) {\r\n\r\n        var allItems = container.find('.box-sorting-container');\r\n\r\n        allItems.removeClass('large small clear pull-top');\r\n\r\n        if (gridType === 'grid-sizing') {\r\n            for (var i in largeBoxPattern) {\r\n                var largeItems = largeBoxPattern[i];\r\n                $(sorter).eq(largeItems).addClass('large');\r\n            }\r\n            for (var j in smallBoxPattern) {\r\n                var smallItems = smallBoxPattern[j];\r\n                $(sorter).eq(smallItems).addClass('small');\r\n            }\r\n            for (var k in clearBoxPattern) {\r\n                var clearItems = clearBoxPattern[k];\r\n                $(sorter).eq(clearItems).addClass('clear');\r\n            }\r\n            for (var l in pullBoxPattern) {\r\n                var pullItems = pullBoxPattern[l];\r\n                $(sorter).eq(pullItems).addClass('pull-top');\r\n            }\r\n        }\r\n    }\r\n\r\n    function openFilterMobile() {\r\n        var $openFilter = $('.js-open-filter'),\r\n\t\t\t$hideFilter = $('.js-hide-filter');\r\n\r\n\r\n        $openFilter.on('click', function (e) {\r\n            e.preventDefault();\r\n            //$('body').redraw();\r\n            var filter = $(this).siblings('.filter-base');\r\n            //hardwareAcceleration(false);\r\n            overlayAttribute(true);\r\n            TweenMax.fromTo(filter, 0.3, {top: '100%'}, {top: 0});\r\n            filter.addClass('filter-open');\r\n        });\r\n\r\n        $hideFilter.on('click', function (e) {\r\n            e.preventDefault();\r\n\r\n            var filter = $(this).closest('.filter-base');\r\n            TweenMax.fromTo(filter, 0.3, {top: 0}, {top: '100%', onComplete: function() {\r\n                //hardwareAcceleration(true);\r\n                overlayAttribute(false);\r\n            }});\r\n            filter.removeClass('filter-open');\r\n        });\r\n\r\n        $(document).on('menuOpen', function () {\r\n            $('.filter-section').removeClass('filter-open');\r\n        });\r\n    }\r\n\r\n    function overlayAttribute(set) {\r\n        var $html = $('html');\r\n        if(set === true) {\r\n            $html.addClass('overlay-active');\r\n        } else {\r\n            $html.removeClass('overlay-active');\r\n        }\r\n    }\r\n\r\n    function hardwareAcceleration(set) {\r\n        var $html = $('html');\r\n        if(set !== true) {\r\n            $html.addClass('no-hardware-acceleration');\r\n        } else {\r\n            $html.removeClass('no-hardware-acceleration');\r\n        }\r\n    }\r\n\r\n  /*  $.fn.redraw = function() {\r\n        this.each(function() {\r\n            $(this).wrap('<div></div>');\r\n\r\n            setTimeout(function() {\r\n                $(this).unwrap('');\r\n            }, 0);\r\n        });\r\n    };*/\r\n\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n}();","Tivoli.ButtonMessage = (function () {\r\n\r\n    function showErrorMessageDefault(button, message) {\r\n        showErrorMessage(button, message, 7000);\r\n    }\r\n\r\n    function showMessageDefault(button, message) {\r\n        showMessage(button, message, 7000);\r\n    }\r\n\r\n    function showErrorMessage(button, message, milliSecondsShown) {\r\n        addMessage(button, message, true);\r\n\r\n        if (milliSecondsShown) {\r\n            setTimeout(function () {\r\n                removeMessage(button);\r\n            }, milliSecondsShown);\r\n        }\r\n    }\r\n\r\n    function showMessage(button, message, milliSecondsShown) {\r\n        addMessage(button, message, false);\r\n\r\n        if (milliSecondsShown) {\r\n            setTimeout(function () {\r\n                removeMessage(button);\r\n            }, milliSecondsShown);\r\n        }\r\n    }\r\n\r\n    function addMessage(button, message, isError) {\r\n        var errorClass = isError ? \"button__message--error\" : \"\";\r\n\r\n        if (isError && typeof message !== \"string\") {\r\n            message = Tivoli.getGeneralErrorMessage();\r\n        }\r\n\r\n        button.wrap('<div class=\"button__information-box\"></div>');\r\n        button.after('<div class=\"button__message ' + errorClass + '\">' + message + '</div>');\r\n        button.data(\"messageshown\", true);\r\n    }\r\n\r\n    function removeMessage(button) {\r\n        if (button.data(\"messageshown\")) {\r\n            button.unwrap();\r\n            button.parents().find('.button__message').remove();\r\n            button.data(\"messageshown\", false);\r\n        }\r\n    }\r\n\r\n    return {\r\n        showMessage: showMessage,\r\n        showMessageDefault: showMessageDefault,\r\n        showErrorMessage: showErrorMessage,\r\n        showErrorMessageDefault: showErrorMessageDefault,\r\n        removeMessage: removeMessage\r\n    };\r\n})();\r\n\r\nTivoli.CircleLoader = function () {\r\n\r\n    var svgCircleRadius = 8;\r\n    var svgCircleThichness = 1;\r\n    var fullCircleAnimationTime = 1000;\r\n\r\n    var loaderStates = {};\r\n\r\n    function init() {\r\n    }\r\n\r\n    function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\r\n        angleInDegrees = angleInDegrees - 90;\r\n        var angleInRadians = angleInDegrees * Math.PI / 180.0;\r\n        var x = centerX + radius * Math.cos(angleInRadians);\r\n        var y = centerY + radius * Math.sin(angleInRadians);\r\n        return [x, y];\r\n    }\r\n\r\n    function loadInitial($circleLoader, callback) {\r\n        show($circleLoader);\r\n        loadToPercent($circleLoader, 60, callback, 5000);\r\n        hideButtonTextToggle($circleLoader, true);\r\n    }\r\n\r\n    function loadFinish($circleLoader, callback) {\r\n        loadToPercent($circleLoader, 100, callback, -1);\r\n    }\r\n\r\n    function reset($circleLoader) {\r\n        var id = $circleLoader.data(\"id\");\r\n\r\n        loadToPercent($circleLoader, 0, function () {\r\n            hide($circleLoader);\r\n            if (loaderStates[id]) {\r\n                loaderStates[id].percent = 0;\r\n            }\r\n        }, 0);\r\n        hideButtonTextToggle($circleLoader, false);\r\n    }\r\n\r\n    function hideButtonTextToggle($circleLoader, hideText) {\r\n        var hideClass = $('.js-hide-text-after');\r\n        if ($circleLoader.is(hideClass)) {\r\n            if (hideText) {\r\n                $circleLoader.addClass('circle-loader--hide-text');\r\n            } else {\r\n                $circleLoader.removeClass('circle-loader--hide-text');\r\n            }\r\n        };\r\n    }\r\n\r\n    function show($circleLoader) {\r\n        $circleLoader.show();\r\n    }\r\n\r\n    function hide($circleLoader) {\r\n        $circleLoader.hide();\r\n    }\r\n\r\n    function loadToPercent($circleLoader, toPercent, callback, animationTime) {\r\n        var id = $circleLoader.data(\"id\");\r\n\r\n        var pathRight = $(\"#loader-ring-right-\" + id);\r\n        var pathLeft = $(\"#loader-ring-left-\" + id);\r\n\r\n        // Init state\r\n        if (!loaderStates[id]) {\r\n            loaderStates[id] = { percent: 0 };\r\n        }\r\n\r\n        // Stop animation if running\r\n        if (loaderStates[id].animation) {\r\n            loaderStates[id].animation.clearQueue();\r\n            loaderStates[id].animation.stop();\r\n        }\r\n\r\n        if (animationTime == -1) {\r\n            animationTime = Math.abs(loaderStates[id].percent - toPercent) / 100 * fullCircleAnimationTime;\r\n            if (loaderStates[id].percent < 50) {\r\n                // Make long animations a bit shorter\r\n                animationTime = animationTime * 0.75;\r\n            }\r\n        }\r\n\r\n        loaderStates[id].animation = $({ deg: loaderStates[id].percent }).animate({ deg: toPercent }, {\r\n            duration: animationTime,\r\n            step: function (now) {\r\n                loaderStates[id].percent = now;\r\n                paintLoadToPercent(pathRight, pathLeft, now);\r\n            },\r\n            easing: 'easeOutQuint',\r\n            complete: function () {\r\n                loaderStates[id].percent = toPercent;\r\n                if (typeof (callback) == \"function\") {\r\n                    callback();\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    function paintLoadToPercent(pathRight, pathLeft, toPercent) {\r\n        if (toPercent > 50) {\r\n            pathRight.attr(\"d\", getCircleArea(50, true));\r\n            pathLeft.attr(\"d\", getCircleArea(toPercent - 50, false));\r\n        } else {\r\n            pathRight.attr(\"d\", getCircleArea(toPercent, true));\r\n            pathLeft.attr(\"d\", getCircleArea(0, false));\r\n        }\r\n    }\r\n\r\n    function getCircleArea(toPercent, isRight) {\r\n        var innerRadius = svgCircleRadius - svgCircleThichness;\r\n\r\n        var fromDegree;\r\n        var toDegree;\r\n        if (isRight) {\r\n            fromDegree = 0;\r\n            toDegree = 360 * toPercent / 100;\r\n        } else {\r\n            fromDegree = 180;\r\n            toDegree = 360 * toPercent / 100 + 180;\r\n        }\r\n\r\n        var a1 = polarToCartesian(svgCircleRadius, svgCircleRadius, svgCircleRadius, fromDegree);\r\n        var a2 = polarToCartesian(svgCircleRadius, svgCircleRadius, svgCircleRadius, toDegree);\r\n        var a3 = polarToCartesian(svgCircleRadius, svgCircleRadius, innerRadius, toDegree);\r\n        var a4 = polarToCartesian(svgCircleRadius, svgCircleRadius, innerRadius, fromDegree);\r\n\r\n        var startPos = \"M\" + a1[0] + \",\" + a1[1];\r\n        var outerArc = \"A\" + (svgCircleRadius) + \",\" + (svgCircleRadius) + \",0,0,\" + (isRight ? 1 : 1) + \",\" + a2[0] + \",\" + a2[1];\r\n        var lineToInner = \"L\" + a3[0] + \",\" + a3[1];\r\n        var arcCrossToInner = \"A\" + (innerRadius) + \",\" + (innerRadius) + \",0,0,\" + (isRight ? 0 : 0) + \",\" + a4[0] + \",\" + a4[1];\r\n\r\n        return startPos + \" \" + outerArc + \" \" + lineToInner + \" \" + arcCrossToInner;\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        loadInitial: loadInitial,\r\n        loadFinish: loadFinish,\r\n        reset: reset\r\n    };\r\n}();","var Tivoli = $.extend(Tivoli, {\r\n    Contact: {}\r\n});\r\nTivoli.Contact = $.extend(Tivoli.Contact, {\r\n    NewsletterSignup: function (options) {\r\n        var self = this;\r\n        var service = new Service;\r\n\r\n        var cnt = null;\r\n\r\n        var defaultOptions = {\r\n\r\n        };\r\n\r\n        this.options = $.extend(defaultOptions, options);\r\n\r\n        this.init = function (container) {\r\n            cnt = container;\r\n\r\n            cnt.on(\"click\", \".subscribe\", function (event) {\r\n                event.preventDefault();\r\n                $(cnt).submit();\r\n                var newslettersignup = {\r\n                    FirstName: cnt.find(\"#FirstName\").val(),\r\n                    LastName: cnt.find(\"#LastName\").val(),\r\n                    Email: cnt.find(\"#Email\").val()\r\n                };\r\n                service.invoke(options.urls.NEWSLETTER_SUBMIT, newslettersignup, function (response) {\r\n                    if (response.Succes) {\r\n                        var result = cnt.find(\"#result\");\r\n                        result.show();\r\n                        result.fadeOut(\"10000\", function () { });\r\n                    }\r\n                    \r\n                }, false);\r\n            });\r\n\r\n            this.handleResponse = function (response) {\r\n                if (response.Success) {\r\n                    self.showSuccess(response.Message);\r\n                } else {\r\n                    self.showErrors(response.Message);\r\n                }\r\n            };\r\n            \r\n            this.showErrors = function (message) {};\r\n\r\n            this.showWarnings = function (message) {};\r\n\r\n            this.showSuccess = function (message) { };\r\n\r\n        };\r\n    },\r\n});\r\n","var Tivoli = Tivoli || {};\r\n\r\n\r\nTivoli.customForm = function() {\r\n    \"use strict\";\r\n\r\n\r\n\r\n    function init() {\r\n\t\t $.each($('.js-custom-signup-form'), function () {\r\n            handleCustomFormPost($(this));\r\n        });\r\n\t\t\r\n    }\r\n\r\n\r\n\tfunction handleCustomFormPost(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-custom-form-container\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function() {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n\t\t\t\twindow.location.href = data.RedirectUrl;\r\n            } else {\r\n\t\t\t\t Tivoli.CircleLoader.reset(loader);\r\n\t\t\t\t Tivoli.ButtonMessage.showErrorMessage(button, data.Error);\r\n            }\r\n        });\r\n        \r\n        formContainer.on(\"form-error\", function () {\r\n\t\t\t Tivoli.CircleLoader.reset(loader);\r\n\t\t\t console.log('form erorr');\r\n        });\r\n    };\r\n    \r\n     $(document).ready(function () {\r\n\t    init();\r\n\t});\r\n\r\n}();\r\n\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.dateUtil = {\r\n    parseDate: function (input) {\r\n        if (!input) {\r\n            return null;\r\n        }\r\n        var parts = input.split('-');\r\n        return new Date(parts[0], parts[1] - 1, parts[2]); // Note: months are 0-based\r\n    },\r\n    formatLocalDate: function (date) {\r\n        if (!date) {\r\n            return null;\r\n        }\r\n\r\n        var tzo = 0 //Force time zone offset to be zero, because it doesn't matter where the user is located. It will only cause us to use the wrong date.\r\n            dif = tzo >= 0 ? '+' : '-',\r\n            pad = function (num) {\r\n                var norm = Math.abs(Math.floor(num));\r\n                return (norm < 10 ? '0' : '') + norm;\r\n            };\r\n        return date.getFullYear()\r\n            + '-' + pad(date.getMonth() + 1)\r\n            + '-' + pad(date.getDate())\r\n            + 'T' + pad(date.getHours())\r\n            + ':' + pad(date.getMinutes())\r\n            + ':' + pad(date.getSeconds())\r\n            + dif + pad(tzo / 60)\r\n            + ':' + pad(tzo % 60);\r\n    },\r\n    formatLocalDateShort: function (date) {\r\n        if (!date) {\r\n            return null;\r\n        }\r\n        var pad = function (num) {\r\n            var norm = Math.abs(Math.floor(num));\r\n            return (norm < 10 ? '0' : '') + norm;\r\n        };\r\n        return pad(date.getDate())\r\n        + '-' + pad(date.getMonth() + 1)\r\n        + '-' + date.getFullYear();\r\n    },\r\n    formatLocalDateShortInverted: function (date) {\r\n        if (!date) {\r\n            return null;\r\n        }\r\n        var pad = function (num) {\r\n            var norm = Math.abs(Math.floor(num));\r\n            return (norm < 10 ? '0' : '') + norm;\r\n        };\r\n        return pad(date.getFullYear())\r\n        + '-' + pad(date.getMonth() + 1)\r\n        + '-' + pad(date.getDate());\r\n    }\r\n};\r\n\r\nTivoli.datePickerControls = (function () {\r\n\r\n    var dateFormat = \"d. M yy\";\r\n\r\n    var datePickerSettings = {\r\n        altField: \".datepicker\",\r\n        altFormat: dateFormat,\r\n        minDate: 0,\r\n        showOtherMonths: true,\r\n        selectOtherMonths: true\r\n    };\r\n\r\n    function init() {\r\n        jQuery.datepicker.regional['da'] = { closeText: 'Luk', prevText: '&#x3C;Forrige', nextText: 'Næste&#x3E;', currentText: 'Idag', monthNames: ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'], dayNames: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'], dayNamesShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'], dayNamesMin: ['S', 'M', 'T', 'O', 'T', 'F', 'L'], weekHeader: 'Uge', dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' };\r\n        jQuery.datepicker.regional['en'] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], weekHeader: 'Wk', dateFormat: 'dd/mm/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: '' };\r\n        jQuery.datepicker.setDefaults(jQuery.datepicker.regional[Tivoli.getCurrentLanguage()]);\r\n\r\n\r\n        dateRangePicker();\r\n        datePicker();\r\n        closeDatePicker();\r\n    }\r\n\r\n    function closeDatePicker() {\r\n        // IF CLICKED OUTSIDE DATEPICKER, CLOSE IT\r\n        var datePickerAreas = $('.datepicker-simple, .daterangepicker');\r\n\r\n        $(document).mouseup(function (e) {\r\n            if (!datePickerAreas.is(e.target) && datePickerAreas.has(e.target).length === 0) {\r\n                datePickerAreas.parents().find('.datepicker, .daterangepicker-triggerbutton').removeClass('datepicker-active daterangepicker-active');\r\n            }\r\n        });\r\n    }\r\n\r\n    function handleDateRestriction(input, settings) {\r\n        var noWeekends = input.data(\"no-weekends\");\r\n\r\n        var datesStr = input.data(\"restrict-dates\");\r\n        var restrictDates = null;\r\n        if (datesStr) {\r\n            restrictDates = datesStr.split(\",\");\r\n        }\r\n        var minFromStr = input.data(\"min-from\");\r\n        var maxToStr = input.data(\"max-to\");\r\n        if (minFromStr) {\r\n            settings.minDate = Tivoli.dateUtil.parseDate(minFromStr);\r\n        }\r\n        if (maxToStr) {\r\n            settings.maxDate = Tivoli.dateUtil.parseDate(maxToStr);\r\n        }\r\n\r\n\r\n        if (restrictDates != null && restrictDates.length > 0) {\r\n            settings.beforeShowDay = function noWeekendsAndRestrictedDdates(date) {\r\n                var noWeekend = $.datepicker.noWeekends(date);\r\n                if (noWeekend[0] || !noWeekends) {\r\n                    for (i = 0; i < restrictDates.length; i++) {\r\n                        var testDate = Tivoli.dateUtil.parseDate(restrictDates[i]);\r\n                        if(testDate != null) {\r\n                            if (date.getMonth() == testDate.getMonth() &&\r\n                                date.getDate() == testDate.getDate() &&\r\n                                date.getFullYear() == testDate.getFullYear()) {\r\n                                return [false];\r\n                            }\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (noWeekends) {\r\n                        return noWeekend;\r\n                    }\r\n                }\r\n\r\n                return [true];\r\n            }\r\n        } else {\r\n            if (noWeekends) {\r\n                settings.beforeShowDay = $.datepicker.noWeekends;\r\n            }\r\n        }\r\n    }\r\n\r\n    function handleEducationRanges(input, settings) {\r\n        var availableDates = OpenDates;\r\n        var originalItem = $('.js-form-rendering-id').val();\r\n        var minFromStr = input.data(\"min-from\");\r\n        var maxToStr = input.data(\"max-to\");\r\n        if (minFromStr) {\r\n            settings.minDate = Tivoli.dateUtil.parseDate(minFromStr);\r\n        }\r\n        if (maxToStr) {\r\n            settings.maxDate = Tivoli.dateUtil.parseDate(maxToStr);\r\n        }\r\n\r\n        settings.beforeShowDay = function (date) {\r\n            if (availableDates.indexOf(Tivoli.dateUtil.formatLocalDateShortInverted(date)) >= 0) {\r\n                return [true, ''];\r\n            }\r\n            return [false, ''];\r\n        };\r\n\r\n        settings.onSelect = function (date) {\r\n            Tivoli.education.getEducationTimes(date, originalItem);\r\n            \r\n\r\n            var datePickerAreas = $('.datepicker-simple, .daterangepicker');\r\n            \r\n            datePickerAreas.parents().find('.datepicker, .daterangepicker-triggerbutton').removeClass('datepicker-active daterangepicker-active');\r\n        }\r\n\r\n        Tivoli.education.getEducationTimes(minFromStr, originalItem);\r\n    }\r\n\r\n    function datePicker() {\r\n        $.each($('.datepicker'), function () {\r\n            var datePickerInput = $(this);\r\n            if (datePickerInput.hasClass(\"ios\")) {\r\n                return \r\n            } else {            \r\n                datePickerInput\r\n                    .wrap('<div class=\"datepicker-simple\"></div>')\r\n                    .after('<span class=\"ui-datepicker-trigger\"></span>')\r\n                    .after('<div class=\"datepicker-simple-inner\"></div>');\r\n\r\n                var datePickerArea = $(this).siblings('.datepicker-simple-inner');\r\n                \r\n\r\n                var settings = $.extend(true, {}, datePickerSettings);\r\n\r\n                if ($(this).hasClass('js-education-datepicker')) {\r\n                    handleEducationRanges(datePickerInput, settings);\r\n                } else {\r\n                    handleDateRestriction(datePickerInput, settings);\r\n                }\r\n\r\n                datePickerArea.datepicker(settings);\r\n\r\n                datePickerInput.on('click', function (e) {\r\n                    e.preventDefault();\r\n                    $(this).addClass('datepicker-active');\r\n                });\r\n\r\n                $(this).siblings('.ui-datepicker-trigger').on('click', function () {\r\n                    datePickerInput.addClass('datepicker-active');\r\n                });\r\n\r\n                datePickerArea.on('change', function () {\r\n                    datePickerInput.removeClass('datepicker-active');\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n\r\n    function dateRangePicker() {\r\n\r\n        $('.daterange').each(function () {\r\n\r\n            var input = $(this);\r\n\r\n            \r\n            var dateRangeOptions = {\r\n                initialText: input.data(\"text\"),                \r\n                datepickerOptions: {\r\n                    numberOfMonths: 1,\r\n                    minDate: 0,\r\n                    maxDate: 1825,\r\n                    firstDay: 1,\r\n                    dayNamesMin: this.dayNames,\r\n                    showOtherMonths: true,\r\n                    selectOtherMonths: true,\r\n                },\r\n                dateFormat: dateFormat,\r\n                presetRanges: false,\r\n                \r\n                \r\n            };\r\n\r\n            handleDateRestriction(input, dateRangeOptions.datepickerOptions);\r\n            $(this).daterangepicker(dateRangeOptions);\r\n            handleDateRangeUrlParameters($(this));\r\n        });\r\n    }\r\n\r\n    function handleDateRangeUrlParameters(dateRangePicker) {\r\n\r\n        var queryFromDate = (location.search.split(\"fromdate\" + '=')[1] || '').split('&')[0];\r\n        if(queryFromDate == '') {\r\n            return;\r\n        }\r\n\r\n        queryFromDate = queryFromDate.split('-');\r\n        var from = new Date(queryFromDate[2],queryFromDate[1]-1,queryFromDate[0]); \r\n\r\n        var queryToDate = (location.search.split(\"todate\" + '=')[1] || '').split('&')[0];\r\n        if(queryToDate != '') {\r\n            queryToDate = queryToDate.split('-');\r\n            var to = new Date(queryToDate[2],queryToDate[1]-1,queryToDate[0]); \r\n        } else {\r\n            var to = new Date(from);\r\n        }\r\n\r\n        $(dateRangePicker).daterangepicker(\"setRange\", {start: from, end: to});\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        if ($(\".daterange, .datepicker\").length === 0) {\r\n            return;\r\n        }\r\n        init();\r\n    });\r\n\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.Shop = Tivoli.Shop || {};\r\n\r\nTivoli.Shop.delivery = (function () {\r\n    var container;\r\n    var formIdPrefix = \"\";\r\n\r\n    function init() {\r\n        container = $(\".js-delivery\");\r\n\r\n        if (container.length === 0) {\r\n            return;\r\n        }\r\n\r\n        formIdPrefix = container.data(\"id-prefix\");\r\n        if (!formIdPrefix) {\r\n            formIdPrefix = \"\";\r\n        }\r\n\r\n\r\n        handleAlternativeBillingAddress();\r\n        handleBillingAddress();\r\n        handlePayment();\r\n        handleFormPost();\r\n        handleDeliveryLinkBack();\r\n        preventCopyPaste();\r\n        handleMitTivoliEditClick();\r\n        handleApiPrefetch();\r\n        \r\n    }\r\n    \r\n    function initLoad() {\r\n        if (container == null || container.length === 0) {\r\n            return;\r\n        }\r\n        handleEanRequired();\r\n        handleUserId();\r\n    }\r\n    \r\n    function handleAlternativeBillingAddress() {\r\n        var deliveryCheckbox = $(\"#\" + formIdPrefix + \"AlternativeBillingAddress\");\r\n        var deliveryAddressContainer = container.find(\".js-delivery-billing-address-container\");\r\n        if (!deliveryCheckbox || !deliveryAddressContainer) {\r\n            return;\r\n        }\r\n        deliveryCheckbox.on(\"change\", function() {\r\n            if (deliveryCheckbox.is(\":checked\")) {\r\n                setVisibilityForDeliveryInfo(true, deliveryAddressContainer);\r\n            } else {\r\n                setVisibilityForDeliveryInfo(false, deliveryAddressContainer);\r\n            }\r\n        });\r\n        var selectedValue = deliveryCheckbox.is(\":checked\");\r\n        setVisibilityForDeliveryInfo(selectedValue, deliveryAddressContainer);\r\n    }\r\n\r\n    function handleBillingAddress() {\r\n        var deliveryCheckbox = $(\"#\" + formIdPrefix + \"UseBillingAddress\");\r\n        var deliveryAddressContainer = container.find(\".js-delivery-billing-address-container\");\r\n        if (!deliveryCheckbox || !deliveryAddressContainer) {\r\n            return;\r\n        }\r\n        deliveryCheckbox.on(\"change\", function() {\r\n            if (deliveryCheckbox.is(\":checked\")) {\r\n                setVisibilityForDeliveryInfo(true, deliveryAddressContainer);\r\n            } else {\r\n                setVisibilityForDeliveryInfo(false, deliveryAddressContainer);\r\n            }\r\n        });\r\n        var selectedValue = deliveryCheckbox.is(\":checked\");\r\n        setVisibilityForDeliveryInfo(selectedValue, deliveryAddressContainer);\r\n    }\r\n    \r\n    function setVisibilityForDeliveryInfo(show, deliveryAddressContainer) {\r\n        if (show) {\r\n            deliveryAddressContainer.show();\r\n            deliveryAddressContainer.find(\".js-validation-input\").removeClass(\"ignore\");\r\n        } else {\r\n            deliveryAddressContainer.hide();\r\n            deliveryAddressContainer.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n    \r\n    function handlePayment() {\r\n        $(\".js-payment-method input[type=radio]\").change(function() {\r\n            setPaymentVisibility(this.value);\r\n        });\r\n\r\n        var selectedValue = $(\".js-payment-method input[type=radio]:checked\").val();\r\n        setPaymentVisibility(selectedValue);\r\n\r\n        // Handle show save credit card\r\n        var saveCreditCardInput = $(\".js-payment-choose-creditcard select\");\r\n        if (saveCreditCardInput.length > 0) {\r\n            saveCreditCardInput.change(function () {\r\n                toggleSaveCreditCardContainer(this.value === \"0\");\r\n            });\r\n\r\n            var saveCreditCardSelectedValue = saveCreditCardInput.val();\r\n            toggleSaveCreditCardContainer(saveCreditCardSelectedValue === \"0\");\r\n        }\r\n    }\r\n\r\n    function setPaymentVisibility(value) {\r\n        toggleCreditCardContainer(value === \"CreditCard\");\r\n        toggleInvoiceContainer(value === \"Invoice\");\r\n        toggleMobilePayContainer(value === \"MobilePay\");\r\n    }\r\n    \r\n    function toggleSaveCreditCardContainer(show) {\r\n        var saveCreditCardContainer = $(\".js-payment-save-creditcard\");\r\n\r\n        saveCreditCardContainer.find(\".js-input-container\").addClass(\"label-overflow\"); // Is not added normally if container has display: none to begin with\r\n\r\n        if (show) {\r\n            saveCreditCardContainer.show();\r\n            saveCreditCardContainer.find(\".js-validation-input\").removeClass(\"ignore\");\r\n        } else {\r\n            saveCreditCardContainer.hide();\r\n            saveCreditCardContainer.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function toggleCreditCardContainer(show) {\r\n        var creditCardContainer = $(\".js-payment-creditcards\");\r\n\r\n        if (show) {\r\n            creditCardContainer.show();\r\n            creditCardContainer.find(\".js-validation-input\").removeClass(\"ignore\");\r\n        } else {\r\n            creditCardContainer.hide();\r\n            creditCardContainer.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function toggleInvoiceContainer(show) {\r\n        var invoiceContainer = $(\".js-payment-invoice\");\r\n\r\n        if (show) {\r\n            invoiceContainer.show();\r\n            invoiceContainer.find(\".js-validation-input\").removeClass(\"ignore\");\r\n            showHideUserId();\r\n        } else {\r\n            invoiceContainer.hide();\r\n            invoiceContainer.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function toggleMobilePayContainer(show) {\r\n        var mobilePayContainer = $(\".js-payment-mobilepay\");\r\n\r\n        if (show) {\r\n            mobilePayContainer.show();\r\n            mobilePayContainer.find(\".js-validation-input\").removeClass(\"ignore\");\r\n        } else {\r\n            mobilePayContainer.hide();\r\n            mobilePayContainer.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function handleEanRequired() {\r\n        var form = $(\".js-delivery\");\r\n        var eanNumber = form.find(\".js-delivery-eannumber .js-validation-input\");\r\n        if (eanNumber.length === 0) {\r\n            return;\r\n        }\r\n\r\n        var prefix = form.data(\"id-prefix\");\r\n        if (!prefix) {\r\n            prefix = \"\";\r\n        }\r\n\r\n        var eanIsrequired = false;\r\n\r\n        form.find(\".js-delivery-companytype input[type=radio]\").change(function() {\r\n            eanIsrequired = $(this).hasClass(\"required\");\r\n            setEanNumberRequired(eanNumber, this.value, prefix, eanIsrequired, form);\r\n        });\r\n        var selectedValue = form.find(\".js-delivery-companytype input[type=radio]:checked\").val();\r\n        setEanNumberRequired(eanNumber, selectedValue, prefix, eanIsrequired, form);\r\n    }\r\n    \r\n    function setEanNumberRequired(eanNumber, value, formPrefixId, eanisRequired, form) {\r\n        var isRequired = value === \"Public\" || eanisRequired;\r\n        eanNumber.data(\"required\", isRequired ? true : false);\r\n\r\n        togglePlaceholderRequired(eanNumber, isRequired);\r\n\r\n        Tivoli.validation.calcRules(eanNumber, formPrefixId, null, form);\r\n    }\r\n\r\n    function showHideUserId() {\r\n        var form = $(\".js-delivery\");\r\n        var userId = form.find(\".js-delivery-user-id\");\r\n        var userIdValidation = userId.find(\".js-validation-input\");\r\n        if (userId.length === 0) {\r\n            return;\r\n        }\r\n\r\n        var show = form.find(\".js-delivery-companytype input[type=radio]:checked\").val() === \"Public\";\r\n        if (show) {\r\n            userId.show();\r\n            userIdValidation.removeClass(\"ignore\");\r\n        } else {\r\n            userId.hide();\r\n            userIdValidation.addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function handleUserId() {\r\n        var form = $(\".js-delivery\");\r\n        form.find(\".js-delivery-companytype input[type=radio]\").change(function () {\r\n            showHideUserId();\r\n        });\r\n        \r\n        showHideUserId();\r\n    }\r\n    \r\n    function togglePlaceholderRequired(input, isRequired) {\r\n        var placeholder = input.attr(\"placeholder\");\r\n        var hasRequirement = placeholder.endsWith(\"*\");\r\n        if (isRequired && !hasRequirement) {\r\n            input.attr(\"placeholder\", placeholder + \"*\");\r\n        }\r\n        if (!isRequired && hasRequirement) {\r\n            input.attr(\"placeholder\", placeholder.substring(0, placeholder.length - 1));\r\n        }\r\n    }\r\n\r\n    function handleFormPost() {\r\n        var button = container.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n        \r\n        container.on(\"form-request\", function () {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        container.on(\"form-success\", function (e, data) {\r\n            if (data.Success && data.RedirectUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                pushGaCheckoutTrackingEvent();\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                if(data.RedirectUrl){\r\n                    window.location.href = data.RedirectUrl;\r\n                }else if (data.PaymentError) {\r\n                    $(\".shop-notifications span\").html(data.PaymentError);\r\n                    $(\".shop-notifications\").show();\r\n                    window.location.hash = \"info\";\r\n                } else {\r\n                    // Failed with no error - should not happen\r\n                    $(\".shop-notifications span\").empty();\r\n                    $(\".shop-notifications\").hide();\r\n                }\r\n            }\r\n        });\r\n        container.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n            \r\n            // Validation error - hide general errors\r\n            $(\".shop-notifications span\").empty();\r\n            $(\".shop-notifications\").hide();\r\n        });\r\n    }\r\n    \r\n    function handleDeliveryLinkBack() {\r\n        var button = container.find(\".js-delivery-link-back a\");\r\n        button.on(\"click\", function(e) {\r\n            var basketType = $(this).data('basket-type')\r\n            // Save data when going back\r\n            container.attr(\"action\", \"/WebShop/Checkout/SaveDeliveryInformation?baskettype=\" + basketType);\r\n            container.trigger(\"form-save\");\r\n        });\r\n    }\r\n\r\n    function preventCopyPaste() {\r\n        var $emailField = container.find(\"input[type=email]\"); //\r\n        $emailField.attr(\"autocomplete\", \"off\");\r\n        $emailField.on(\"paste\", function (e) {\r\n            e.preventDefault();\r\n        });\r\n    }\r\n\r\n     function handleMitTivoliEditClick() {\r\n        $(\".js-mit-tivoli-edit\").on('click', function(e) {\r\n            e.preventDefault();\r\n            handleMitTivoliEdit();\r\n        });\r\n    }\r\n\r\n    function handleMitTivoliEdit() {\r\n        $('.js-is-mit-tivoli .js-checkout-hidden-input').show();\r\n        $('.js-pass-info-affected-cards').show();\r\n        $('.js-mit-tivoli-profile-info').hide();\r\n    }\r\n\r\n    function handleApiPrefetch() {\r\n        $('.js-delivery #deliveryformEmail').on('blur', function(e) {\r\n            if($(this).hasClass('valid')) {\r\n                var emailValue = $(this).val();\r\n                $.post( \"/MitTivoli/Account/PrefetchAccountByEmail\", { email: emailValue } );\r\n            }\r\n        });\r\n    }\r\n\r\n    function pushGaCheckoutTrackingEvent() {\r\n        var paymentMethod = $(\"input[name='PaymentMethod']:checked\").val();\r\n\r\n        dataLayer.push({\r\n            event: 'checkout2TivoliDk',\r\n            ecommerce: {\r\n                checkout: {\r\n                    actionField: {\r\n                    step: 2, \r\n                    option: paymentMethod,\r\n                    dimension4: 'Tivoli.dk',\r\n                    } \r\n               }\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    $(document).ready(function() {\r\n        init();\r\n    });\r\n\r\n    $(window).load(function() {\r\n        initLoad();\r\n    });\r\n\r\n    return {\r\n        \r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.paaskekonkurrence = (function () {\r\n    \"use strict\";\r\n\r\n    function init() {\r\n\r\n        var $easterForm = $(\".js-easter-competition-form\");\r\n        if ($easterForm.length <= 0) {\r\n            return;\r\n        }\r\n\r\n\t\tformValidationHandling($easterForm);\r\n\t\tsetupEasterInputMask();\r\n    }\r\n\r\n    function setupEasterInputMask() {\r\n\t\t$(\".js-easter-mask input\").inputmask({\r\n\t\t\tmask: [\"a{7}\"], \r\n\t\t\tplaceholder: '•'\r\n\t\t});\r\n    }\r\n\r\n    function formValidationHandling($form) {\r\n        var easterPermissionContainer = $(\".js-easter-permission\");\r\n\r\n        // Ignore required permission until form is submitted without permission - then set as required in order to request the permission from the user\r\n        easterPermissionContainer.find(\".js-validation-input\").addClass(\"not-required\");\r\n\r\n\t\t$form.on(\"form-success\", function(e, data) {\r\n            if (data.Error || !data.Success) {\r\n                return;\r\n            }\r\n\r\n\t\t\tvar $confirmTxtHasPerm = $(\".js-confirmation-with-perm\");\r\n\t\t\tvar $confirmTxtNoPerm = $(\".js-confirmation-without-perm\");\r\n\r\n\t\t\tif (data.HasPermission) {\r\n\t\t\t\t$form.find(\".form-container\").hide();\r\n\t\t\t\t$confirmTxtHasPerm.show();\r\n                $confirmTxtNoPerm.hide();\r\n                dataLayer.push({ 'event': 'newsletter-signup-easter' });\r\n\t\t\t} else {\r\n\t\t\t    easterPermissionContainer.find(\".js-validation-input\").removeClass(\"not-required\");\r\n\t\t\t\t$(\".js-hide-input-on-confirmation\").height(0);\r\n\t\t\t\t$confirmTxtNoPerm.show();\r\n\t\t\t\t$confirmTxtHasPerm.hide();\r\n\t\t\t}\r\n\t\t});\r\n\t\t$form.on(\"form-error\", function(e, data) {\r\n\t\t\tconsole.log(\"ERROR\", data);\r\n\t\t});\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        init: init\r\n    };\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.education = (function () {\r\n    function init() {\r\n        $.each($('.js-education-signup-form'), function () {\r\n            handleEducationSignup($(this));\r\n            handleNewsletterSignupGradeInterests();\r\n        });\r\n\r\n        $.each($('.js-tivoligarden-signup-form'), function () {\r\n            handleTivoliGardenSignup($(this));\r\n        });\r\n\r\n        $.each($('.js-education-newsletter-signup-form'), function () {\r\n            handleEducationNewsletterSignup($(this));\r\n        });\r\n\r\n        $(\".js-confirmation-container\").on(\"click\", \".js-education-back\", function (event) {\r\n            event.preventDefault();\r\n            $(\".js-education-signup-form\").show();\r\n\r\n            var button = $(\".js-education-signup-form\").find(\".js-custom-submit a\");\r\n            var loader = button.find(\".js-circle-loader\");\r\n            Tivoli.CircleLoader.reset(loader);\r\n\r\n            $(\".js-confirmation-container\").empty();\r\n        });\r\n\r\n        $(\".js-confirmation-container\").on(\"click\", \".js-tivoligarden-back\", function (event) {\r\n            event.preventDefault();\r\n            $(\".js-tivoligarden-signup-form\").show();\r\n\r\n            var button = $(\".js-tivoligarden-signup-form\").find(\".js-custom-submit a\");\r\n            var loader = button.find(\".js-circle-loader\");\r\n            Tivoli.CircleLoader.reset(loader);\r\n\r\n            $(\".js-confirmation-container\").empty();\r\n        });\r\n\r\n        $('.js-input-show-fields-button input').change(function () {\r\n            var showHideId = $(this).closest('.js-input-show-fields-button').data(\"show-id\");\r\n            if ($(this).prop(\"checked\")) {\r\n                $(\"[data-showhide-id=\" + showHideId + \"]\").show();\r\n            } else {\r\n                $(\"[data-showhide-id=\" + showHideId + \"]\").hide();\r\n            }\r\n        });\r\n\r\n\r\n    }\r\n\r\n    function handleEducationConfirm(lastForm, view) {\r\n        var button = $('.js-confirmation-container').find(\".button\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        $(\".js-confirmation-container\").on(\"click\", \".button\", function () {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n\r\n            $.ajax({\r\n                url: view,\r\n                traditional: true,\r\n                cache: false,\r\n                data: JSON.stringify(lastForm),\r\n                dataType: \"json\",\r\n                contentType: \"application/json; charset=utf-8\",\r\n                error: function (err) {\r\n                    Tivoli.CircleLoader.reset(loader);\r\n                    Tivoli.ButtonMessage.showMessage(button, err.ErrorMessage);\r\n                },\r\n                success: function (data) {\r\n                    if (data.Success) {\r\n                        window.location.href = data.RedirectUrl;\r\n                    } else {\r\n                        Tivoli.CircleLoader.reset(loader, null);\r\n                        Tivoli.ButtonMessage.showErrorMessage(button, data.ErrorMessage);\r\n                    }\r\n                },\r\n                type: \"POST\"\r\n            });\r\n        });\r\n    }\r\n\r\n\r\n    function handleEducationSignup(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-education-signup-form-container\");\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        var lastForm = null;\r\n\r\n        var confirmationContainer = $(\".js-confirmation-container\");\r\n\r\n\r\n        formContainer.on(\"form-request\", function (e, form) {\r\n            lastForm = form;\r\n            var mainProductDatePicker = outerContainer.find(\".js-product-date\").siblings('.datepicker-simple-inner');\r\n            if (mainProductDatePicker.length > 0) {\r\n                var mainProductDate = mainProductDatePicker.datepicker(\"getDate\");\r\n                console.log(mainProductDate);\r\n                if (mainProductDate) {\r\n                    lastForm.Form.EducationDate = Tivoli.dateUtil.formatLocalDateShort(mainProductDate);\r\n                }\r\n            }\r\n            formContainer.show();\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                $.ajax({\r\n                    url: \"/Schools/Education/EducationSignupConfirmation\",\r\n                    traditional: true,\r\n                    cache: false,\r\n                    data: JSON.stringify(lastForm),\r\n                    dataType: \"html\",\r\n                    contentType: \"application/json; charset=utf-8\",\r\n                    error: function (err) {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                    },\r\n                    success: function (data) {\r\n                        if (data) {\r\n                            if ($('#educationsignupformTime').val() != \"\") {\r\n                                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                                formContainer.hide();\r\n                                confirmationContainer.empty();\r\n                                confirmationContainer.html(data);\r\n                                confirmationContainer.data(\"form\", JSON.stringify(lastForm));\r\n                                $(\".js-confirmation-container\").off(\"click\", \".button\");\r\n                                handleEducationConfirm(lastForm, \"/Schools/Education/EducationSignupConfirmed\");\r\n\r\n                                $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n                            } else {\r\n                                $('.js-education-time-error').show();\r\n                                Tivoli.CircleLoader.reset(loader);\r\n                                Tivoli.ButtonMessage.showErrorMessage(button, $('.js-education-time-error').html(), 3000);\r\n                            }\r\n\r\n                        } else {\r\n                            Tivoli.CircleLoader.reset(loader);\r\n                        }\r\n                    },\r\n                    type: \"POST\"\r\n                });\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function (err) {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n\r\n    };\r\n\r\n    function handleNewsletterSignupGradeInterests() {\r\n        $('#educationsignupformEducationNewsletterTermsAndConditions').on('change', function(e) {\r\n            if($(this).is(':checked')) {\r\n                $('.js-school-newsletter-grades').show();\r\n                $('.js-school-newsletter-grades').removeClass('js-ignore-validation')\r\n            } else {\r\n                $('.js-school-newsletter-grades').hide();\r\n                $('.js-school-newsletter-grades').addClass('js-ignore-validation')\r\n            }\r\n        });\r\n    }\r\n    \r\n\r\n    function handleTivoliGardenSignup(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-tivoligarden-signup-form-container\");\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        var lastForm = null;\r\n\r\n        var confirmationContainer = $(\".js-confirmation-container\");\r\n\r\n        formContainer.on(\"form-request\", function (e, form) {\r\n            lastForm = form;\r\n            formContainer.show();\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                $.ajax({\r\n                    url: \"/Schools/Education/TivoliGardenSignupConfirmation\",\r\n                    traditional: true,\r\n                    data: JSON.stringify(lastForm),\r\n                    dataType: \"html\",\r\n                    contentType: \"application/json; charset=utf-8\",\r\n                    error: function (err) {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                    },\r\n                    success: function (data) {\r\n                        if (data) {\r\n                            Tivoli.CircleLoader.loadFinish(loader, null);\r\n                            formContainer.hide();\r\n                            confirmationContainer.empty();\r\n                            confirmationContainer.html(data);\r\n                            confirmationContainer.data(\"form\", JSON.stringify(lastForm));\r\n                            $(\".js-confirmation-container\").off(\"click\", \".button\");\r\n                            handleEducationConfirm(lastForm, \"/Schools/Education/TivoliGardenSignupConfirmed\");\r\n\r\n                            $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n\r\n                        } else {\r\n                            Tivoli.CircleLoader.reset(loader);\r\n                        }\r\n                    },\r\n                    type: \"POST\"\r\n                });\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n\r\n\r\n    };\r\n\r\n    function handleEducationDateSelected(times, originalItem) {\r\n        $('.js-education-no-available-times').hide();\r\n        $('.js-education-time-loader').hide();\r\n        $('.js-education-time').show();\r\n        var $select = $('#educationsignupformTime');\r\n\r\n        $select.find('option').not(':first').remove();\r\n        $.each(times, function (key, value) {\r\n            $select.append($('<option>', { value: value.CrmId + \"|\" + value.StartTime })\r\n                    .text(value.StartTime));\r\n        });\r\n\r\n        $select.selectric({\r\n            arrowButtonMarkup: '<b class=\"selectric-button\"></b>',\r\n            disableOnMobile: true,\r\n            onInit: false\r\n        });\r\n        $select.on(\"change\", function () {\r\n            setSelect(this);\r\n            $(this).trigger('blur'); // Make sure JQUERY VALIDATE sees the updated value (and validates it)\r\n            $('.js-education-time-error').hide();\r\n        });\r\n\r\n        if (times.length == 0) {\r\n            $('.js-education-no-available-times').show();\r\n        }\r\n\r\n    }\r\n\r\n    function setSelect(ele) {\r\n        var select = $(ele);\r\n        var selectricButton = select.closest('.selectricWrapper').find('.selectric');\r\n        var selectedOption = select.find(':selected');\r\n        var selectedImage = selectedOption.data('imagesrc') !== undefined ? selectedOption.data('imagesrc') : '';\r\n\r\n        if (selectedImage !== '') {\r\n            selectricButton.addClass('selectric-has-icon');\r\n            selectricButton.attr('style', 'background-image: url(\"' + selectedImage + '\");');\r\n        } else {\r\n            selectricButton.removeClass('selectric-has-icon');\r\n            selectricButton.attr('style', '');\r\n        }\r\n    }\r\n\r\n    function getEducationOpenTimes(date, originalItem) {\r\n        $('.js-education-time').hide();\r\n        $('.js-education-time-loader').show();\r\n\r\n        $.ajax({\r\n            url: \"/Schools/Education/EducationSignupGetTimes\",\r\n            cache: false,\r\n            traditional: true,\r\n            data: { dateInput: date, item: originalItem },\r\n            contentType: \"application/json; charset=utf-8\",\r\n            error: function (err) {\r\n            },\r\n            success: function (dates) {\r\n                handleEducationDateSelected(dates, originalItem);\r\n            },\r\n            type: \"GET\"\r\n        });\r\n    }\r\n\r\n    function handleEducationNewsletterSignup(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-education-newsletter-signup-container\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function() {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                 Tivoli.CircleLoader.reset(loader);\r\n                 if(!data.GradeGroupChecked) {\r\n                     $('.js-multicheckbox-error').css('display', 'inline-block');\r\n                 }\r\n                \r\n            }\r\n        });\r\n        \r\n        formContainer.on(\"form-error\", function () {\r\n             Tivoli.CircleLoader.reset(loader);\r\n        });\r\n    };\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n        getEducationTimes: getEducationOpenTimes\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.ErrorPopup = (function () {\r\n   \r\n    function show(title, description, buttonText, buttonAction){\r\n        removeAlert();\r\n        $(\"body\").append(\"\"\r\n        +\"<div class=\\\"reactmodal-section\\\" id=\\\"jErrorPopup\\\">\"\r\n        +\"    <div>\"\r\n        +\"        <div class=\\\"Modal\\\" >\"\r\n        +\"           <div class=\\\"ErrorPopup\\\">\"\r\n        +\"              <div class=\\\"ErrorPopup__clickarea\\\">\"\r\n        +\"              </div>\"\r\n        +\"          </div>\"\r\n        +\"          <div class=\\\"ErrorPopupContent\\\">\"\r\n        +\"              <div class=\\\"ErrorPopupContent_frame\\\">\"\r\n        +\"                  <div class=\\\"ErrorPopupStd\\\">\"\r\n        +\"                      <button class=\\\"ErrorPopupCloser ErrorPopupStd__close\\\" onclick='Tivoli.ErrorPopup.remove()'><i class=\\\"icon-close\\\"></i></button>\"\r\n        +\"                      <div class=\\\"ErrorPopupStd__inner\\\">\"\r\n        +\"                          <h1>\"+title+\"</h1>\"\r\n        +\"                          <p>\"+description+\"</p>\"\r\n        +\"                          <form class=\\\"ErrorPopupStd__form\\\" id=\\\"jErrorPopupForm\\\">\"\r\n        +\"                          <button class=\\\"UIButton ErrorPopupStd__btn UIButton--theme-rounded ErrorPopupStd__btn\\\">\"\r\n        +\"                              <span class=\\\"UIButton__content-container\\\">\"\r\n        +\"                                  <span class=\\\"UIButton__content\\\">\"+buttonText+\"</span>\"\r\n        +\"                                  </span>\"\r\n        +\"                              </span>\"\r\n        +\"                          </button>\"\r\n        +\"                          </form>\"\r\n        +\"                      </div>\"\r\n        +\"                  </div>\"\r\n        +\"              </div>\"\r\n        +\"          </div>\"\r\n        +\"      </div>\"\r\n        +\"  </div>\"\r\n        +\"</div>\"\r\n        )\r\n        $(\"#jErrorPopupForm\").submit(buttonAction)\r\n    }\r\n\r\n    function removeAlert(){\r\n        $(\"#jErrorPopup\").remove()\r\n    }\r\n    return {\r\n        show: show,\r\n        remove: removeAlert\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.expandableList = (function () {\r\n    var expandableLists = $(\".expandable-list\");\r\n    expandableLists.each(function() {\r\n        var expandableList = $(this);\r\n        var rows = expandableList.find(\".table-module__row.hide\");\r\n        var expandBtn = expandableList.find(\".extended-search\");\r\n        var rowContainer = expandBtn.closest('.extend-search-results');\r\n\r\n        expandBtn.on(\"click\", function () {\r\n            showNext10();\r\n        });\r\n\r\n        var showNext10 = function() {\r\n            var indexCount = rows.length;\r\n            if (indexCount > 9) {\r\n                indexCount = 9;\r\n            } else {\r\n                rowContainer.hide();\r\n            }\r\n\r\n            for (var i = 0; i < indexCount; i++) {\r\n                var row = $(rows[i]);\r\n                row.removeClass(\"hide\");\r\n            }\r\n            \r\n            rows = expandableList.find(\".table-module__row.hide\");\r\n        };\r\n    });\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.formBase = (function () {\r\n    function handleLoader(formContainer) {\r\n        var errorText = formContainer.data(\"error-text\");\r\n        var successText = formContainer.data(\"success-text\");\r\n        if (!errorText) {\r\n            errorText = \"\";\r\n        }\r\n        if (!successText) {\r\n            successText = \"\";\r\n        }\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function (e, request) {\r\n            Tivoli.ButtonMessage.removeMessage(button);\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                if (successText) {\r\n                    Tivoli.ButtonMessage.showMessageDefault(button, successText);\r\n                }\r\n                if (formContainer.hasClass(\"js-success-reload\")) {\r\n                    location.reload();\r\n                    Tivoli.CircleLoader.loadFinish(loader);\r\n                } else {\r\n                    if (formContainer.hasClass(\"js-loader-no-reset\")) {\r\n                        Tivoli.CircleLoader.loadFinish(loader);\r\n                    } else {\r\n                        Tivoli.CircleLoader.loadFinish(loader, function () {\r\n                            Tivoli.CircleLoader.reset(loader);\r\n                        });\r\n                    }\r\n                }\r\n            } else {\r\n                var error = errorText;\r\n                if (data.Error) {\r\n                    error = data.Error;\r\n                }\r\n                Tivoli.CircleLoader.reset(loader);\r\n                Tivoli.ButtonMessage.showErrorMessageDefault(button, error);\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n\r\n            if (errorText) {\r\n                Tivoli.ButtonMessage.showErrorMessageDefault(button, errorText);\r\n            }\r\n        });\r\n    }\r\n\r\n    function pureRedirect() {\r\n        $('form.js-success-redirect-no-messages').each(function () {\r\n            var formContainer = $(this);\r\n            formContainer.on(\"form-success\", function(e, data) {\r\n                if (data.Success) {\r\n                    if (data.RedirectUrl) {\r\n                        window.location.href = data.RedirectUrl;\r\n                    } else {\r\n                        location.reload();\r\n                    }\r\n                }\r\n            });\r\n            \r\n        });\r\n    }\r\n\r\n    function handleInputRegexWarnings() {\r\n        $('.js-regex-warning').on('blur', function() {\r\n            if($(this).valid()) {\r\n                var re = new RegExp($(this).data('custom-warning'));\r\n                var warningMessage = $(this).data('custom-warning-message');\r\n                if(!re.test($(this).val().toLowerCase(), \"g\")) {\r\n                    $(this).siblings('.js-regex-warning-label').remove();\r\n                    $(this).after('<span class=\"js-regex-warning-label error error-text\">' + warningMessage + '</span>');\r\n                } else {\r\n                    $(this).siblings('.js-regex-warning-label').remove();\r\n                }\r\n            } else {\r\n                $(this).siblings('.js-regex-warning-label').remove();\r\n            }\r\n        });\r\n    }\r\n\r\n    function init() {\r\n        $('form.js-use-loader').each(function() {\r\n            handleLoader($(this));\r\n        });\r\n        pureRedirect();\r\n        handleInputRegexWarnings();\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n\r\n    };\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.imageComparison = (function () {\r\n    var imageComparisonTitle = $('.image-comparison-title'),\r\n        imageComparisonManchet = $('.image-comparison-manchet'),\r\n        imageComparisonAfter = $('.image-comparison img'),\r\n        imageComparisonBefore= $('.image-comparison .resize img');\r\n\r\n\r\n    function init() {\r\n        if ($('.image-comparison').length === 0) {\r\n            return;\r\n        }\r\n\r\n         $('.image-comparison').each(function(){\r\n            var cur = $(this);\r\n            var width = cur.width()+'px';\r\n            cur.find('.resize img').css('width', width);\r\n            drags(cur.find('.handle'), cur.find('.resize'), cur);\r\n        });\r\n\r\n        $('.image-comparison-thumbnail').on('click', function(e) {\r\n            switchCompareImage($(this));\r\n        });\r\n    }\r\n\r\n    $(window).resize(function(){\r\n        $('.image-comparison').each(function(){\r\n            var cur = $(this);\r\n            var width = cur.width()+'px';\r\n            cur.find('.resize img').css('width', width);\r\n        });\r\n    });\r\n\r\n    function switchCompareImage(compareImage) {\r\n        var title = compareImage.attr('data-title'),\r\n            manchet = compareImage.attr('data-manchet'),\r\n            beforeImg = compareImage.attr('data-img-before'),\r\n            afterImg = compareImage.attr('data-img-after');\r\n\r\n        imageComparisonTitle.text(title);\r\n        imageComparisonManchet.text(manchet);\r\n        \r\n        imageComparisonAfter.attr('src', afterImg);\r\n        imageComparisonBefore.attr('src', beforeImg);\r\n\r\n        $('.image-comparison-thumbnail--selected').removeClass('image-comparison-thumbnail--selected');\r\n        compareImage.addClass('image-comparison-thumbnail--selected');\r\n    }\r\n\r\n    function drags(dragElement, resizeElement, container) {\r\n        dragElement.on('mousedown touchstart', function(e) {\r\n            \r\n            dragElement.addClass('draggable');\r\n            resizeElement.addClass('resizable');\r\n            \r\n            var startX = (e.pageX) ? e.pageX : e.originalEvent.touches[0].pageX;\r\n            \r\n            var dragWidth = dragElement.outerWidth(),\r\n                posX = dragElement.offset().left + dragWidth - startX,\r\n                containerOffset = container.offset().left,\r\n                containerWidth = container.outerWidth();\r\n        \r\n            if(Tivoli.vars.isAnyTouchDevice) {\r\n                minLeft = containerOffset + 26;\r\n                maxLeft = containerOffset + containerWidth - dragWidth - 25;\r\n            } else {\r\n                 minLeft = containerOffset + 28;\r\n                maxLeft = containerOffset + containerWidth - dragWidth - 30;\r\n            }\r\n            \r\n            dragElement.parents().on(\"mousemove touchmove\", function(e) {\r\n                \r\n            var moveX = (e.pageX) ? e.pageX : e.originalEvent.touches[0].pageX;\r\n            \r\n            leftValue = moveX + posX - dragWidth;\r\n            \r\n            if ( leftValue < minLeft) {\r\n                leftValue = minLeft;\r\n            } else if (leftValue > maxLeft) {\r\n                leftValue = maxLeft;\r\n            }\r\n            \r\n            widthValue = (leftValue + dragWidth/2 - containerOffset)*100/containerWidth+'%';\r\n                    \r\n            $('.draggable').css('left', widthValue).on('mouseup touchend touchcancel', function () {\r\n                $(this).removeClass('draggable');\r\n                resizeElement.removeClass('resizable');\r\n            });\r\n            $('.resizable').css('width', widthValue);\r\n            }).on('mouseup touchend touchcancel', function(){\r\n            dragElement.removeClass('draggable');\r\n            resizeElement.removeClass('resizable');\r\n            });\r\n            e.preventDefault();\r\n        }).on('mouseup touchend touchcancel', function(e){\r\n            dragElement.removeClass('draggable');\r\n            resizeElement.removeClass('resizable');\r\n        });\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n    };\r\n})();","\"use strict\";\r\n\r\nvar Tivoli = Tivoli || {};\r\n\r\n/*Tivoli.map = function () {\r\n\r\n\tvar mapSection = $('.map-section');\r\n\r\n\t$.fn.setupmap = function () {\r\n\t\treturn this.each(function () {\r\n\t\t    var map = mapSection.find('.map');\r\n\t\t    if (map.length <= 0) {\r\n\t\t        return;\r\n\t\t    }\r\n\r\n\t\t\tvar mapY = map.data('y-coordinate');\r\n\t\t\tvar mapX = map.data('x-coordinate');\r\n\t\t\tvar imgWidth = map.data('img-width');\r\n\t\t\tvar imgHeight = map.data('img-height');\r\n\r\n\t\t\tvar yPosCorrection = 7;\r\n            var newPosX = (((mapX / imgWidth)) * 100);\r\n            var newPosY = (((mapY / imgHeight)) * 100) + (yPosCorrection);\r\n\r\n\t\t\tmap.css({\r\n\t\t\t\ttransform: 'translateX(' + -newPosX + '%) translateY(' + -newPosY + '%)'\r\n\t\t\t});\r\n\t\t});\r\n    };\r\n\r\n\r\n\tfunction init() {\r\n\t    if (mapSection.length > 0) {\r\n\t        mapSection.setupmap();\r\n\t    }\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n}();*/\r\n\r\nTivoli.fullmap = (function () {\r\n\r\n    var scrollOverflowContainer,\r\n        scrollContainer,\r\n        scrollContainerOverflow = \"hidden\",\r\n        container,\r\n        innerContainer,\r\n        innerContainerHeight,\r\n        loaderContainer,\r\n        mapFooter,\r\n        map,\r\n        center,\r\n        defaultZoomLevel = 17,\r\n        maxZoomLevel = 20,\r\n        minZoomLevel = 6,\r\n        iconHeight = 84, // In px\r\n\r\n        infoboxes = [],\r\n        currentInfoBox,\r\n\r\n        markers = [],\r\n        currentMarker,\r\n        markerUrlPostfix = \"\",\r\n        largestUsedZIndex = 1,\r\n        currentPosition = null,\r\n\r\n        tabsContainer,\r\n        contentContainer,\r\n\r\n        fullScreenAnimationTimePerPx = 1.5;\r\n\r\n    function loadMap() {\r\n        $('.js-map-full-screen-toggle').on('click', function () {\r\n            TweenMax.to($('.map-full-screen-toggle__icon-container'), 0.1, { opacity: 0 });\r\n            $('.map-full-screen-toggle__label').hide();\r\n            $('.map-full-screen-toggle__icon-loader').show();\r\n            $('.js-map-full-screen-toggle').unbind();\r\n            \r\n            dataLayer.push({ 'event': 'google-maps-activated' });\r\n\r\n            var cultureInfo = $('.js-google-map').attr('data-langauge');\r\n            $.getScript(\"https://maps.googleapis.com/maps/api/js?sensor=true&language=\" + cultureInfo + \"&key=AIzaSyBn75ej1X8aMftfKn0KzThIFC74BUt9fM8\", function () {\r\n                $.when(\r\n                    $.getScript(\"/dist/js/geo.js\"),\r\n                    $.Deferred(function (deferred) {\r\n                        $(deferred.resolve);\r\n                    })\r\n                ).done(function () {\r\n\r\n                    var fullMapContainer = $(\".map-section-full\");\r\n                    if (fullMapContainer.length !== 0) {\r\n                        setupFullMap();\r\n                        if (!Tivoli.vars.isAnyTouchDevice) {\r\n                            TweenMax.to($('.js-map-full-screen-toggle'), 0.5, \r\n                                { opacity: 0,  \r\n                                  onComplete: function(){$('.js-map-full-screen-toggle').hide();}\r\n                                }\r\n                            );\r\n                        }\r\n                    }\r\n\r\n                    var simpleMapContainer = $(\".map-section\");\r\n                    if (simpleMapContainer.length !== 0) {\r\n                        setupSimpleMap();\r\n                        map.addListener('tilesloaded', function () {\r\n                            TweenMax.to($('.js-map-full-screen-toggle'), 0.5, \r\n                                {   opacity: 0,  \r\n                                    onComplete: function(){$('.js-map-full-screen-toggle').hide();}\r\n                                }\r\n                            );\r\n                        })\r\n                    }\r\n\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    function setupSimpleMap() {\r\n        var c = $(\".map-section\");\r\n        if (c.length === 0) {\r\n            // No simple location map\r\n            return;\r\n        }\r\n        container = c;\r\n\r\n        center = new google.maps.LatLng(55.673467, 12.568524);\r\n        currentPosition = center;\r\n\r\n        getBaseContainers();\r\n\r\n        createSimpleMap();\r\n        styleMap(map);\r\n\r\n        getLocations(container);\r\n\r\n        if (Tivoli.settings.width.small >= $(window).width()) {\r\n            map.setOptions({ minZoom: 17, maxZoom: 17, zoom: 17 });\r\n        }\r\n        $(window).resize(function () {\r\n            google.maps.event.trigger(map, \"resize\");\r\n            map.setCenter(center);\r\n        });\r\n    }\r\n\r\n    function setupFullMap() {\r\n        var c = $(\".map-section-full\");\r\n        if (c.length === 0) {\r\n            // No full location map\r\n            return;\r\n        }\r\n\r\n        container = c;\r\n\r\n        center = new google.maps.LatLng(55.673467, 12.568524);\r\n        currentPosition = center;\r\n\r\n        getBaseContainers();\r\n\r\n        tabsContainer = container.find(\".js-page-filter-tab-navigation\");\r\n        contentContainer = $(\".map-section-full__content-container .ajax-content\");\r\n        loaderContainer = $('.map-section-full__content-container .loader-container');\r\n        mapFooter = container.find(\".map-footer\");\r\n\r\n        createMap();\r\n        styleMap(map);\r\n        handleTabs();\r\n        handleShowMoreButton();\r\n\r\n        if (Tivoli.vars.isAnyTouchDevice) {\r\n            handleFullScreen();\r\n        } else {\r\n            handleZooming();\r\n        }\r\n\r\n        getPosition();\r\n\r\n        $(window).resize(function () {\r\n            google.maps.event.trigger(map, \"resize\");\r\n        });\r\n    }\r\n\r\n    function getBaseContainers() {\r\n        scrollOverflowContainer = $(\"html\");\r\n        scrollContainer = $(\"#content-container\");\r\n        innerContainer = $(\".map-section__inner-container\");\r\n    }\r\n\r\n    function createMap() {\r\n        var myOptions = {\r\n            center: center,\r\n            zoomControl: false,\r\n            panControl: false,\r\n            zoom: defaultZoomLevel,\r\n            draggable: true,\r\n            minZoom: minZoomLevel,\r\n            maxZoom: maxZoomLevel,\r\n            mapTypeControl: google.maps.MapTypeId.ROADMAP,\r\n            streetViewControl: false,\r\n            disableDoubleClickZoom: false,\r\n            scrollwheel: false,\r\n        };\r\n\r\n        map = new google.maps.Map(document.getElementById(\"map_canvas\"), myOptions);\r\n    }\r\n\r\n    function createSimpleMap() {\r\n        var myOptions = {\r\n            center: center,\r\n            zoomControl: false,\r\n            panControl: false,\r\n            zoom: 18,\r\n            draggable: false,\r\n            disableDefaultUI: true,\r\n            scrollwheel: false,\r\n            minZoom: 18,\r\n            maxZoom: 18,\r\n            mapTypeControl: google.maps.MapTypeId.ROADMAP,\r\n            streetViewControl: false,\r\n            disableDoubleClickZoom: true\r\n        };\r\n\r\n        map = new google.maps.Map(document.getElementById(\"map_canvas\"), myOptions);\r\n    }\r\n\r\n    function styleMap(m) {\r\n        m.set('styles', [{ \"featureType\": \"poi\", \"elementType\": \"geometry.fill\", \"stylers\": [{ \"color\": \"#b4c194\" }, { \"visibility\": \"on\" }] }, { \"featureType\": \"poi\", \"elementType\": \"labels\", \"stylers\": [{ \"visibility\": \"off\" }] }, { \"featureType\": \"road.local\", \"elementType\": \"geometry.fill\", \"stylers\": [{ \"color\": \"#ffffff\" }] }, { \"featureType\": \"road.local\", \"elementType\": \"geometry.stroke\", \"stylers\": [{ \"color\": \"#839061\" }] }]);\r\n    }\r\n\r\n    function handleTabs() {\r\n        var tabs = $(\".full-map-filter-controls .tab-filter\");\r\n        var button = $(\".map-extended-search-container\");\r\n\r\n        var startTab = Tivoli.getUrlParameterByName(\"tab\");\r\n        if (startTab) {\r\n            $.each(tabs, function () {\r\n                if ($(this).data(\"id\") === startTab) {\r\n                    // Start tab found\r\n                    getTab($(this), false, true);\r\n                    button.hide();\r\n                }\r\n            });\r\n        } else {\r\n            // Default to first\r\n            if (tabs.length > 0) {\r\n                getTab($(tabs.get(0)), false, false);\r\n            }\r\n        }\r\n\r\n        tabs.on(\"click\", function () {\r\n            getTab($(this), true, false);\r\n            button.show();\r\n        });\r\n    }\r\n\r\n    function handleShowMoreButton() {\r\n        var buttonContainer = $(\".map-extended-search-container\");\r\n        var button = $(\".map-extended-search\");\r\n\r\n        button.on(\"click\", function () {\r\n            var tab = $(\".full-map-filter-controls .tab-filter.js-selected\");\r\n            getTab(tab, true, true);\r\n            buttonContainer.hide();\r\n        });\r\n    }\r\n\r\n    function getLocations(dataContainer) {\r\n        var itemIds = dataContainer.data(\"ids\");\r\n        if (!itemIds) {\r\n            return;\r\n        }\r\n\r\n        itemIds = itemIds.split(\"|\");\r\n\r\n        $.ajax({\r\n            url: \"/Features/Map/GetMarkers\",\r\n            traditional: true,\r\n            data: $.param({ itemIds: itemIds }, true),\r\n            error: function (err) {\r\n                console.log(err);\r\n            },\r\n            success: function (data) {\r\n                common.clearMap(false, false);\r\n                for (var i = 0; i < data.length; i++) {\r\n                    var loc = data[i];\r\n                    createMarker(loc, false, true);\r\n                }\r\n                if (data.length > 0) {\r\n                    center = new window.google.maps.LatLng(data[0].Latitude, data[0].Longitude);\r\n                    map.setCenter(center);\r\n                }\r\n            },\r\n            type: 'GET'\r\n        });\r\n    }\r\n\r\n    function getTab(tab, renderContent, showAll) {\r\n        var itemId = tab.data(\"itemid\");\r\n\r\n        if (!itemId) {\r\n            return;\r\n        }\r\n\r\n        searchStart();\r\n\r\n        $.ajax({\r\n            url: \"/Features/Map/GetLocationsWithType\",\r\n            traditional: true,\r\n            data: $.param({ itemId: itemId, showAll: showAll }, true),\r\n            error: function (err) {\r\n                searchEnd();\r\n                console.log(err);\r\n            },\r\n            success: function (data) {\r\n                searchEnd();\r\n                common.clearMap(renderContent, true);\r\n                for (var i = 0; i < data.length; i++) {\r\n                    var loc = data[i];\r\n                    createMarker(loc, true, false);\r\n                    if (renderContent) {\r\n                        addContentRow(loc);\r\n                    }\r\n                }\r\n                map.setCenter(center);\r\n                map.setZoom(defaultZoomLevel);\r\n            },\r\n            type: 'GET'\r\n        });\r\n    }\r\n\r\n    function searchStart() {\r\n        var anyContent = contentContainer.html().trim().length > 0;\r\n        if (anyContent) {\r\n            loaderContainer.removeAttr(\"style\");\r\n        } else {\r\n            // Make sure loader is shown when no content\r\n            loaderContainer.height(\"80px\");\r\n        }\r\n\r\n        contentContainer.addClass('loader-running');\r\n        loaderContainer.addClass('js-loader-active');\r\n    }\r\n\r\n    function searchEnd() {\r\n        contentContainer.removeClass('loader-running');\r\n        loaderContainer.removeClass('js-loader-active');\r\n    }\r\n\r\n    function createMarker(data, includeInfobox, simpleMarker) {\r\n        var location = new window.google.maps.LatLng(data.Latitude, data.Longitude);\r\n        var marker = new window.google.maps.Marker({\r\n            position: location,\r\n            clickable: !simpleMarker,\r\n            map: map\r\n        });\r\n        marker.locationData = data;\r\n        marker.setZIndex(1);\r\n        common.setMarkerIcon(marker, false);\r\n\r\n        markers.push(marker);\r\n\r\n        if (includeInfobox) {\r\n            var hasLink = !!data.Url;\r\n            var linkTagType = hasLink ? \"a\" : \"span\";\r\n            var href = hasLink ? \"href='\" + data.Url + \"'\" : \"\";\r\n            // Subtracting 0.4 seems to remove all rounding bugs -> 0.3 and 0.5 is too less and too much for certain markers in certain zoom levels\r\n            var pixelOffset = new google.maps.Size(26, -iconHeight - 0.4);\r\n            var boxOptions = {\r\n                content: \"<div class='map-marker-infobox' style='height:\" + (iconHeight - 2) + \"px;'><\" + linkTagType + \" class='map-box-label' \" + href + \">\" + data.Title + \"</\" + linkTagType + \">\" + (hasLink ? \"<span class='map-box-divider'></span><a class='map-box-arrow' \" + href + \"><i class='icon-arrow-right' /></a>\" : \"\") + \"</div>\",\r\n                disableAutoPan: false,\r\n                pixelOffset: pixelOffset,\r\n                isHidden: false,\r\n                boxStyle: {\r\n                    opacity: 1\r\n                },\r\n                closeBoxURL: \"\",\r\n                pane: \"floatPane\",\r\n                enableEventPropagation: false\r\n            };\r\n\r\n            var infobox = new InfoBox(boxOptions);\r\n            infoboxes.push(infobox);\r\n        }\r\n\r\n        if (simpleMarker) {\r\n            return;\r\n        }\r\n\r\n        window.google.maps.event.addListener(marker, 'click', function () {\r\n            if (currentMarker == marker) {\r\n                if (infobox) {\r\n                    common.closeInfoBox(infobox);\r\n                    currentInfoBox = null;\r\n                }\r\n\r\n                common.setMarkerIcon(currentMarker, false);\r\n                currentMarker = null;\r\n            } else {\r\n                if (infobox) {\r\n                    common.closeInfoBox(currentInfoBox);\r\n                    infobox.open(map, marker);\r\n                    currentInfoBox = infobox;\r\n                }\r\n\r\n                common.setMarkerIcon(currentMarker, false);\r\n                common.setMarkerIcon(marker, true);\r\n                marker.setZIndex(largestUsedZIndex + 1);\r\n                currentMarker = marker;\r\n                largestUsedZIndex++;\r\n            }\r\n        });\r\n    }\r\n\r\n    function addContentRow(data) {\r\n        contentContainer.append(data.ListItem);\r\n    }\r\n\r\n    /************************* POSITION *****************************/\r\n\r\n    function getPosition() {\r\n        var geoMarker = new GeolocationMarker();\r\n        geoMarker.setCircleOptions({ fillColor: '#000000', fillOpacity: 0.05 });\r\n        //geoMarker.setMarkerOptions({ icon:  });\r\n\r\n        google.maps.event.addListener(geoMarker, 'position_changed', function () {\r\n            currentPosition = this.getPosition();\r\n        });\r\n\r\n        geoMarker.setMap(map);\r\n\r\n        /*navigator.geolocation.watchPosition(function() {\r\n            alert(\"Found\");\r\n        }, function (error) {\r\n            alert(JSON.stringify(error));\r\n        }, {\r\n            enableHighAccuracy: false,\r\n            timeout: 5000,\r\n            maximumAge: 0\r\n        });*/\r\n    }\r\n\r\n    /******************************************************************/\r\n\r\n    var common =\r\n    {\r\n        clearMap: function (clearContent, includeInfoboxes) {\r\n            if (includeInfoboxes) {\r\n                for (var i = infoboxes.length - 1; i >= 0; i--) {\r\n                    var ib = infoboxes[i];\r\n                    ib.setMap(null);\r\n                    infoboxes.splice(i, 1);\r\n                }\r\n                currentInfoBox = null;\r\n            }\r\n\r\n            for (var j = markers.length - 1; j >= 0; j--) {\r\n                var m = markers[j];\r\n                m.setMap(null);\r\n                markers.splice(j, 1);\r\n            }\r\n            currentMarker = null;\r\n\r\n\r\n            if (clearContent) {\r\n                contentContainer.empty();\r\n            }\r\n        },\r\n        closeAllInfoBoxes: function () {\r\n            for (var i = 0; i < infoboxes.length; i++) {\r\n                common.closeInfoBox(infoboxes[i]);\r\n            }\r\n        },\r\n        closeInfoBox: function (infobox) {\r\n            if (infobox != null && infobox.getMap()) {\r\n                infobox.close();\r\n            }\r\n        },\r\n        makeMarkersInactive: function () {\r\n            for (var i = 0; i < markers.length; i++) {\r\n                var m = markers[i];\r\n                common.setMarkerIcon(m, false);\r\n            }\r\n        },\r\n        setMarkerIcon: function (marker, active) {\r\n            if (!marker) {\r\n                return;\r\n            }\r\n            if (active) {\r\n                marker.setIcon(marker.locationData.ActiveMarker + markerUrlPostfix);\r\n            } else {\r\n                marker.setIcon(marker.locationData.InactiveMarker + markerUrlPostfix);\r\n            }\r\n        }\r\n    };\r\n\r\n    function handleZooming() {\r\n        var controls = container.find(\".map-controls\");\r\n        controls.show();\r\n\r\n        var myposBtn = controls.find(\".js-map-mypos\");\r\n        var zoomInBtn = controls.find(\".js-map-zoom-in\");\r\n        var zoomOutBtn = controls.find(\".js-map-zoom-out\");\r\n\r\n        myposBtn.on(\"click\", function () {\r\n            if (currentPosition) {\r\n                map.setCenter(currentPosition);\r\n            }\r\n        });\r\n        zoomInBtn.on(\"click\", function () {\r\n            map.setZoom(map.getZoom() + 1);\r\n        });\r\n        zoomOutBtn.on(\"click\", function () {\r\n            map.setZoom(map.getZoom() - 1);\r\n        });\r\n    }\r\n\r\n    function handleFullScreen() {\r\n        var fullScreenToggle = innerContainer.find(\".js-map-full-screen-toggle\");\r\n        var fullScreenClose = innerContainer.find(\".js-map-full-screen-close\");\r\n        //        fullScreenToggle.show();\r\n\r\n        //       fullScreenToggle.on(\"click\", function () {\r\n        innerContainerHeight = innerContainer.height();\r\n\r\n        var menuHeight = $(\"#head-section\").outerHeight();\r\n        var tabsHeight = tabsContainer.outerHeight();\r\n        var mapFooterHeight = mapFooter.outerHeight();\r\n\r\n        var currentPos = scrollContainer.scrollTop();\r\n        var neededPos = container.offset().top - menuHeight;\r\n        var animateTimePos = Math.max(Math.min(Math.abs(currentPos - neededPos) * fullScreenAnimationTimePerPx, 1000), 500);\r\n\r\n        var currentHeight = container.outerHeight();\r\n        var neededHeight = $(window).outerHeight() - menuHeight;\r\n        var animateTimeHeight = Math.max(Math.min(Math.abs(currentHeight - neededHeight) * fullScreenAnimationTimePerPx, 1000), 500);\r\n\r\n        var animateTime = Math.max(animateTimePos, animateTimeHeight);\r\n\r\n        var refreshMap = setInterval(function () {\r\n            google.maps.event.trigger(map, \"resize\");\r\n        }, 5);\r\n\r\n        innerContainer.animate({\r\n            height: neededHeight - tabsHeight - mapFooterHeight\r\n        }, animateTime, function () {\r\n            innerContainer.removeAttr(\"style\");\r\n\r\n            clearInterval(refreshMap);\r\n\r\n            container.addClass(\"fullscreen\");\r\n            container.css(\"padding-top\", menuHeight);\r\n            innerContainer.css(\"padding-top\", tabsHeight);\r\n            innerContainer.css(\"padding-bottom\", mapFooterHeight);\r\n\r\n            google.maps.event.trigger(map, \"resize\");\r\n            scrollContainerOverflow = scrollOverflowContainer.css(\"overflow\");\r\n            scrollOverflowContainer.css(\"overflow\", \"hidden\");\r\n        });\r\n\r\n        $('body').animate({\r\n            scrollTop: neededPos\r\n\r\n        }, animateTime);\r\n\r\n\r\n        fullScreenToggle.animate({\r\n            opacity: 0\r\n        }, animateTime, function () {\r\n            fullScreenToggle.hide();\r\n        });\r\n\r\n        setTimeout(function () {\r\n            fullScreenClose.show();\r\n            fullScreenClose.css(\"bottom\", mapFooterHeight);\r\n            fullScreenClose.css(\"opacity\", 0);\r\n            fullScreenClose.animate({\r\n                opacity: 1\r\n            }, 200);\r\n        }, animateTime);\r\n    }\r\n\r\n\r\n    function fullMapClose() {\r\n        var innerStartHeight = innerContainer.height();\r\n        var innerNeededHeight = innerContainerHeight;\r\n        var animateTimeHeight = Math.max(Math.min(Math.abs(innerStartHeight - innerNeededHeight) * fullScreenAnimationTimePerPx, 1000), 500);\r\n\r\n        container.removeClass(\"fullscreen\");\r\n        container.removeAttr(\"style\");\r\n        innerContainer.removeAttr(\"style\");\r\n\r\n        innerContainer.height(innerStartHeight);\r\n\r\n        innerContainer.animate({\r\n            height: innerNeededHeight\r\n        }, animateTimeHeight, function () {\r\n            innerContainer.removeAttr(\"style\");\r\n\r\n            google.maps.event.trigger(map, \"resize\");\r\n            scrollOverflowContainer.css(\"overflow\", scrollContainerOverflow);\r\n        });\r\n\r\n        fullScreenToggle.show();\r\n        fullScreenToggle.animate({\r\n            opacity: 1\r\n        }, animateTimeHeight);\r\n\r\n        fullScreenClose.hide();\r\n        //}\r\n\r\n        fullScreenClose.on(\"click\", fullMapClose);\r\n\r\n        $(document).on('menuOpen', fullMapClose);\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        if ($(\".js-map-full-filtering\").length > 0) {\r\n            $('html').addClass('no-hardware-acceleration'); // Remove hardware-performance, to allow animations, positioning and map\r\n        }\r\n\r\n        loadMap();\r\n        //setupFullMap();\r\n        //setupSimpleMap();\r\n    });\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.marquee = function () {\r\n\r\n\tvar navWidth = 238;\r\n\tvar pagePadding = 20;\r\n\tvar delay = 3;\r\n\tvar $menuTitleAnimArea;\r\n\r\n\r\n\r\n\t// SPECIFIC FOR MENU HEADLINES\r\n\tfunction marqueeInit() {\r\n\t\t$menuTitleAnimArea = $('.js-menu-overflow-anim');\r\n\t\tif ($menuTitleAnimArea.length <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t$menuTitleAnimArea.initNavigationMarquee();\r\n\t}\r\n\r\n\t$.fn.initNavigationMarquee = function() {\r\n\r\n\t\tthis.each(function() {\r\n\r\n\t\t\tvar $menuTitleAnimArea = $(this);\r\n\t\t\tvar menuTitleAnimWidth;\r\n\t\t\tvar\tlengthOfAnimation;\r\n\t\t\tvar animationTiming;\r\n\r\n\t\t\tupdateVars($menuTitleAnimArea);\r\n\t\t\tTestMenuForMarquee($menuTitleAnimArea);\r\n\r\n\t\t\tfunction updateVars($titleItem) {\r\n\t\t\t\tmenuTitleAnimWidth \t= menuTitleWidth($titleItem); // + padding\r\n\t\t\t\tlengthOfAnimation \t= -((menuTitleAnimWidth - navWidth));\r\n\t\t\t\tanimationTiming \t= Math.ceil((menuTitleAnimWidth - navWidth)/100 * 5) <= 2 ? 2 : Math.ceil((menuTitleAnimWidth - navWidth)/100 * 5); // min 2 sec.\r\n\t\t\t}\r\n\r\n\t\t\tfunction menuTitleWidth($item) {\r\n\t\t\t\treturn $item.outerWidth() + pagePadding;\r\n\t\t\t}\r\n\r\n\t\t\tfunction animateFrom() {\r\n\t\t\t\tTweenMax.to($menuTitleAnimArea, animationTiming, {x: lengthOfAnimation, delay: delay, ease: Power1.easeOut, onComplete: animateBack});\r\n\t\t\t}\r\n\r\n\t\t\tfunction animateBack() {\r\n\t\t\t\tTweenMax.to($menuTitleAnimArea, animationTiming, {x: pagePadding, delay: delay/2, ease: Power1.easeOut, onComplete: animateFrom});\r\n\t\t\t}\r\n\r\n\t\t\tfunction TestMenuForMarquee($itemToAnimate) {\r\n\t\t\t\tif(menuTitleWidth($itemToAnimate) >= navWidth) {\r\n\t\t\t\t\t$itemToAnimate.addClass('animation');\r\n\t\t\t\t\tanimateFrom($itemToAnimate);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$itemToAnimate.addClass('no-animation');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t};\r\n\r\n\t$.fn.destroyNavigationMarquee = function() {\r\n\t\tthis.each(function() {\r\n\t\t\tvar $menuTitleAnimArea = $(this);\r\n\t\t\tTweenMax.killTweensOf($menuTitleAnimArea);\r\n\t\t\tTweenMax.set($menuTitleAnimArea, {clearProps: \"all\", delay: delay/2});\r\n\t\t})\r\n\t};\r\n\r\n\tfunction resetMarquee() {\r\n\t\t$menuTitleAnimArea = $('.js-menu-overflow-anim');\r\n\t\tif ($menuTitleAnimArea.length <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t$menuTitleAnimArea.destroyNavigationMarquee();\r\n\t}\r\n\r\n\treturn {\r\n\t\tmarqueeInit: marqueeInit,\r\n\t\tresetMarquee: resetMarquee\r\n\t};\r\n}();","Tivoli = Tivoli || {};\r\n\r\nTivoli.newsletterSticky = (function () {\r\n    var stickyContainer = $('.newsletter-sticky'),\r\n        stickyButton = $('.newsletter-sticky__button'),\r\n        stickyClose = $('.js-newsletter-sticky-close'),\r\n        overlay = $('.newsletter-sticky-overlay'),\r\n        scrollWrapper = $('.newsletter-sticky .scroll-wrapper'),\r\n        scrollArea = $('.newsletter-sticky .scroll-area'),\r\n        html = $('html'),\r\n        stickyClassOpen = \"newsletter-sticky--open\",\r\n        stickyClassActive = \"newsletter-sticky-is-active\",\r\n        stickyClassOverlayActive = \"newsletter-sticky-overlay--active\",\r\n        stickyClassButtonMinified = \"newsletter-sticky__button--minified\";\r\n\r\n    var vars = {\r\n        cookie: Tivoli.Cookies\r\n    };\r\n\r\n    var newsletterStickyCookie = vars.cookie.get(\"newsletterSticky\");\r\n\r\n    function init() {\r\n        var stickyLength = $('.js-newsletter-sticky').length;\r\n        if (stickyLength === 0 || newsletterStickyCookie === \"true\") {\r\n           return;\r\n        }\r\n\r\n        initStickyButton();\r\n        setNewsletterCookie();\r\n    }\r\n\r\n    function initStickyButton() {\r\n        stickyButton.show();\r\n        stickyContainer.css('max-height', scrollArea.outerHeight());\r\n        scrollWrapper.css('max-height', scrollArea.outerHeight());\r\n\r\n\r\n        stickyButton.on('click', function () {\r\n            openOverlay();\r\n        });\r\n\r\n        overlay.on('click', function() {\r\n            closeOverlay();\r\n        });\r\n\r\n        stickyClose.on('click', function () {\r\n            closeOverlay();\r\n        });\r\n\r\n        $(window).one('scroll', function () {\r\n            stickyButton.addClass(stickyClassButtonMinified);\r\n        });\r\n    }\r\n\r\n\r\n    function openOverlay() {\r\n        stickyContainer.toggleClass(stickyClassOpen);\r\n        overlay.addClass(stickyClassOverlayActive);\r\n        html.addClass(stickyClassActive);\r\n    }\r\n\r\n    function closeOverlay() {\r\n        stickyContainer.toggleClass(stickyClassOpen);\r\n        html.removeClass(stickyClassActive);\r\n        overlay.removeClass(stickyClassOverlayActive);\r\n        stickyButton.addClass(stickyClassButtonMinified);\r\n    }\r\n\r\n    function setNewsletterCookie() {\r\n        vars.cookie.set(\"newsletterSticky\", \"true\", 24 * 365);\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n\r\n    };\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.newsletter = (function() {\r\n    function init() {\r\n        $.each($('.js-newsletter-signup-form'), function() {\r\n            handleNewsletterSignup($(this));\r\n        });\r\n        $.each($('.js-newsletter-edit-form'), function () {\r\n            handleNewsletterEdit($(this));\r\n            setupInterests(function () {});\r\n        });\r\n        handleNewsletterResubscribe($(\".js-newsletter-resubscribe-form\"));\r\n\r\n        newsletterInterestInfoToggle();\r\n\r\n        mitTivoliInterests();\r\n\r\n        unSubscripteEditInterestsButtonSetup();\r\n    }\r\n    \r\n    function newsletterInterestInfoToggle() {\r\n        $('.js-newsletter-interest-info-toggle').on('click', function() {\r\n            var parentInterest = $(this).closest('.js-newsletter-interest-container');\r\n\r\n            if(parentInterest.hasClass('info-is-active')) {\r\n                parentInterest.removeClass('info-is-active');\r\n            } else {\r\n                parentInterest.addClass('info-is-active');\r\n            }\r\n        });\r\n    }\r\n\r\n    function handleNewsletterSignup(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-newsletter-form-container\");\r\n        var successDiv = outerContainer.find(\".form-submit-success\");\r\n        var errorDiv = outerContainer.find(\".form-submit-failed\");\r\n        var alreadyCreatedDiv = outerContainer.find(\".form-submit-already-created\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function() {\r\n            successDiv.hide();\r\n            errorDiv.hide();\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.AlreadySignedUp) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                $(\".newsletter-signup-editbutton\").attr(\"href\", \"\");\r\n                successDiv.hide();\r\n                errorDiv.hide();\r\n                alreadyCreatedDiv.show(); \r\n                formContainer.hide(); \r\n            } else if (data.ChangeSettingsUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                $(\".newsletter-signup-editbutton\").attr(\"href\", data.ChangeSettingsUrl);\r\n                if (outerContainer.hasClass('js-newsletter-form-container-sticky')) {\r\n                    dataLayer.push({ 'event': 'newsletter-signup-sticky' });\r\n                } else {\r\n                    dataLayer.push({ 'event': 'newsletter-signup' });\r\n                }\r\n                \r\n                successDiv.show();\r\n                errorDiv.hide();\r\n                alreadyCreatedDiv.hide();\r\n                formContainer.hide();\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                successDiv.hide();\r\n                errorDiv.show();\r\n                alreadyCreatedDiv.hide();\r\n            }\r\n        });\r\n        \r\n        formContainer.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n    };\r\n    \r\n    function handleNewsletterEdit(formContainer) {\r\n        var outerContainer = formContainer.parents(\".js-newsletter-form-container\");\r\n        var successText = formContainer.data(\"success-text\");\r\n        var errorText = formContainer.data(\"error-text\");\r\n\r\n        var buttons = outerContainer.find(\".js-custom-submit a\");\r\n        buttons.on(\"click\", function(e) {\r\n            e.preventDefault();\r\n            if (formContainer.valid()) {\r\n                formContainer.submit();\r\n            }\r\n        });\r\n\r\n        var loaders = buttons.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function (e, request) {\r\n            request.ExternalId = Tivoli.getUrlParameterByNameInsensitive(\"externalid\");\r\n            request.ContactId = Tivoli.getUrlParameterByNameInsensitive(\"contactid\");\r\n            request.VisualId = Tivoli.getUrlParameterByNameInsensitive(\"visualid\");\r\n            request.Value = Tivoli.getUrlParameterByNameInsensitive(\"value\");\r\n\r\n            var interests = outerContainer.find(\".js-newsletter-interest\");\r\n            var interestsIsSelected = [];\r\n            $.each(interests, function () {\r\n                if ($(this).is(\":checked\")) {\r\n                    interestsIsSelected.push($(this).data(\"id\"));\r\n                }\r\n            });\r\n            request.Form.Topics = interestsIsSelected;\r\n\r\n            $.each(buttons, function () { Tivoli.ButtonMessage.removeMessage($(this)); });\r\n            $.each(loaders, function () { Tivoli.CircleLoader.loadInitial($(this), null); });\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                $.each(loaders, function () {\r\n                    var loader = $(this);\r\n                    Tivoli.CircleLoader.loadFinish(loader, function () {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                    });\r\n                });\r\n                $.each(buttons, function () { Tivoli.ButtonMessage.showMessageDefault($(this), successText); });\r\n               \r\n            } else {\r\n                $.each(loaders, function () { Tivoli.CircleLoader.reset($(this)); });\r\n                \r\n                $.each(buttons, function () { Tivoli.ButtonMessage.showErrorMessageDefault($(this), errorText); });\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function () {\r\n            $.each(loaders, function () { Tivoli.CircleLoader.reset($(this)); });\r\n        });\r\n    }\r\n\r\n    function setupInterests(onChange) {\r\n        $.each($(\".js-newsletter-interest-container\"), function () {\r\n            var container = $(this);\r\n            var isSelected = container.hasClass(\"selected\");\r\n            var checkbox = container.find(\"input\");\r\n            container.find(\".newsletter-interest-action\").on(\"click\", function () {\r\n                checkbox.attr('checked', !isSelected);\r\n                $(this).attr('aria-checked', !isSelected);\r\n                isSelected = !isSelected;\r\n                if (isSelected) {\r\n                    container.addClass(\"selected\");\r\n                } else {\r\n                    container.removeClass(\"selected\");\r\n                }\r\n                onChange(checkbox.data(\"id\"), isSelected, container);\r\n            });\r\n        });\r\n\r\n        $(\".js-unsubscribe-all\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            $.each($(\".js-newsletter-interest-container\"), function () {\r\n                var container = $(this);\r\n                container.find(\"input\").attr('checked', false);\r\n                container.removeClass(\"selected\");\r\n            });\r\n\r\n            return;\r\n        });\r\n    }\r\n\r\n    function mitTivoliInterests() {\r\n        function setSelected(container, isSelected) {\r\n            container.find(\"input\").attr('checked', isSelected);\r\n            if (isSelected) {\r\n                container.addClass(\"selected\");\r\n            } else {\r\n                container.removeClass(\"selected\");\r\n            }\r\n        }\r\n\r\n        $.each($('.js-mit-tivoli-interests'), function () {\r\n            var definitionId = $(this).data(\"definition-id\");\r\n            var profileId = $(this).data(\"profile-id\");\r\n            var endpoint = \"/MitTivoli/Account/ChangeInterest\";\r\n            if (profileId) {\r\n                endpoint = endpoint + \"?profileid=\" + profileId;\r\n            }\r\n            setupInterests(function (id, isSelected, container) {\r\n                $.ajax({\r\n                    url: endpoint,\r\n                    traditional: true,\r\n                    data: JSON.stringify({ id: id, isSelected: isSelected, definitionId: definitionId }),\r\n                    dataType: \"json\",\r\n                    contentType: \"application/json; charset=utf-8\",\r\n                    error: function (err) {\r\n                        setSelected(container, !isSelected);\r\n                        console.error(\"Error: \" + err);\r\n                    },\r\n                    success: function (data) {\r\n                        if (!data.Succeeded) {\r\n                            setSelected(container, !isSelected);\r\n                        }\r\n                        console.log(\"Interest save\", data);\r\n                    },\r\n                    type: \"post\"\r\n                });\r\n            });\r\n        });\r\n    }\r\n    \r\n    function handleNewsletterResubscribe(formContainer) {\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function (e, request) {\r\n            request.ExternalId = Tivoli.getUrlParameterByNameInsensitive(\"externalid\");\r\n            request.ContactId = Tivoli.getUrlParameterByNameInsensitive(\"contactid\");\r\n            request.VisualId = Tivoli.getUrlParameterByNameInsensitive(\"visualid\");\r\n            request.Value = Tivoli.getUrlParameterByNameInsensitive(\"value\");\r\n            request.Interest = Tivoli.getUrlParameterByNameInsensitive(\"interest\");\r\n\r\n            Tivoli.ButtonMessage.removeMessage(button);\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                window.location.href = formContainer.data(\"url\") + location.search;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                Tivoli.ButtonMessage.showErrorMessageDefault(button, null);\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n            Tivoli.ButtonMessage.showErrorMessageDefault(button, null);\r\n        });\r\n    }\r\n\r\n    function unSubscripteEditInterestsButtonSetup() {\r\n        var editButton = $('.js-unsubscribe-edit-interests');\r\n        if (editButton.length === 0) {\r\n            return;\r\n        }\r\n\r\n        var editButtonUrl = $(editButton).attr('href');\r\n        editButton.attr('href', editButtonUrl + location.search.toLowerCase());\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n        \r\n    };\r\n})();\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.pageTabs = function () {\r\n\r\n\tvar pageTabNav \t\t\t\t\t= $('.js-page-filter-tab-navigation'),\r\n\t\ttabPages \t\t\t\t\t= $('.js-tab-page'),\r\n\t\tselectedTabPage \t\t\t= $('.js-tab-page-selected'),\r\n\t\ttabPageElements\t\t\t\t= tabPages.children('section'),\r\n\t\tactivePageIndex,\r\n\t\tprevPageIndex;\r\n\r\n\tfunction initTabFiltering() {\r\n\r\n\t    var pageTab = pageTabNav.find('.tab-filter');\r\n\t\tactivePageIndex = pageTabNav.find('li.js-tab-selected').index();\r\n        \r\n\t\tpageTab.on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar tabSection = $(this).closest('.page-filter');\r\n\r\n\t\t\tactivePageIndex = $(this).index();\r\n\r\n\t\t\tif (typeof (history.pushState) !== \"undefined\") {\r\n\t\t\t    var obj = { Page: $(this).data(\"id\"), Url: \"?tab=\" + $(this).data(\"id\") };\r\n\t\t\t    history.pushState(obj, obj.Page, obj.Url);\r\n\t\t\t}\r\n\r\n\t\t\tif(prevPageIndex !== activePageIndex) {\r\n\t\t\t\ttabSection.find('.js-selected').removeClass('js-selected');\r\n\t\t\t\t$(this).addClass('js-selected');\r\n\r\n\t\t\t\tprevPageIndex = activePageIndex;\r\n\t\t\t    var newPageId = $(this).data(\"id\");\r\n\r\n\t\t\t    changePage(newPageId, tabSection);\r\n\t\t\t    Tivoli.Filter.changeTab(newPageId);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initTabs() {\r\n\t\tvar tabs = pageTabNav.find('.filter');\r\n\r\n\t\t// SET ON LOAD\r\n\t\tpageTabNav.each(function() {\r\n\t\t\tvar initialId = $(this).find('.js-selected').data('id');\r\n\t\t\tvar tabSection = $(this).closest('.page-filter');\r\n\r\n\t\t\tchangePage(initialId, tabSection);\r\n\t\t});\r\n\r\n\r\n\t\t// SET ON CLICK\r\n\t\ttabs.on('click', function(e) {\r\n\r\n\t\t\tif($(this).hasClass('tab-filter')) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\tvar tabSection = $(this).closest('.page-filter');\r\n\r\n\t\t\ttabSection.find('.js-selected').removeClass('js-selected');\r\n\t\t\t$(this).addClass('js-selected');\r\n\r\n\t\t\tvar newPageId = $(this).data(\"id\");\r\n\t\t\tvar tabSection = $(this).closest('.page-filter');\r\n\t\t\tchangePage(newPageId, tabSection);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction hideInactivePages() {\r\n\t\tvar inActivePages = tabPages.not(selectedTabPage);\r\n\t\tTweenMax.to(inActivePages.children('section'), {autoAlpha: 0});\r\n\t}\r\n\r\n\tfunction initTabSelection(filterTab) {\r\n\t    //var tab = Tivoli.getUrlParameterByName(\"tab\");\r\n\t    //if (tab !== '') {\r\n\t    //    filterTab.siblings(\".tab-filter\").removeClass(\"js-selected\").removeClass(\".js-tab-page-selected\");\r\n\t    //    filterTab.addClass(\"js-selected\").addClass(\"js-tab-page-selected\");\r\n\t    //}\r\n\t};\r\n\r\n\tfunction changePage(filterClass, tabSection) {\r\n\t    var currentElement = tabSection.find('.js-tab-page').filter(\".\" + filterClass),\r\n\t\t\tcurrentPageElements = currentElement.children('section'),\r\n\t\t\tallTabPages = tabSection.find('.js-tab-page'),\r\n\t\t\tallTabPagesContent = tabSection.children('section');\r\n\r\n\t\tTweenMax.to(allTabPagesContent, 0.3, {autoAlpha: 0, onComplete:\r\n\t\t\tfunction() {\r\n\t\t\t\tallTabPages.removeClass('js-tab-page-selected');\r\n\t\t\t\tcurrentElement.addClass('js-tab-page-selected');\r\n\t\t\t\tTweenMax.staggerTo(currentPageElements, 0.3, {autoAlpha: 1}, 0.1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction initTabInteractionBase(pageTabBaseFilter) {\r\n\r\n\t\tvar fields;\r\n\r\n\t\tvar tabBase = pageTabBaseFilter;\r\n\t\tvar tabNavBase = pageTabBaseFilter;\r\n\r\n\t\t(function initFields() {\r\n\t\t\tvar tabItems = tabNavBase.find(\"li\"),\r\n\t\t\t\ttabContainer = tabNavBase.find(\"ul\");\r\n\r\n\t\t\tfields = {\r\n\t\t\t\ttabItems: tabItems,\r\n\t\t\t\ttabContainer: tabContainer,\r\n\t\t\t\tmenuOffset: tabContainer.position().left,\r\n\t\t\t\ttotalWidth: getSize(tabContainer, tabItems),\r\n\t\t\t\tleft: tabNavBase.find(\".tab-left\"),\r\n\t\t\t\tright: tabNavBase.find(\".tab-right\"),\r\n\t\t\t\tcurrentIndex: 0,\r\n\t\t\t\tcurrentOffset: 0\r\n\t\t\t};\r\n\r\n\r\n\t\t\tsetMenuSize();\r\n\t\t\tinitEvents();\r\n\r\n\t\t})();\r\n\r\n\t\tfunction setMenuSize() {\r\n\t\t\tfields.tabContainer.width(fields.totalWidth);\r\n\t\t\tcheckArrows(fields.currentIndex);\r\n\t\t}\r\n\r\n\t\tfunction getSize(tabContainer, tabItems) {\r\n\t\t\tvar total = 0;\r\n\t\t\ttabItems.each(function () {\r\n\t\t\t\tthis.menuStartOffset = total;\r\n\t\t\t\ttotal += Math.ceil(this.offsetWidth);\r\n\t\t\t});\r\n\t\t\treturn total + 5 + 2 * parseInt(tabContainer.css('padding-left'));\r\n\t\t}\r\n\r\n\t\tfunction initEvents() {\r\n\t\t\tfields.left.on(\"click\", function () {\r\n\t\t\t\tif (canMoveLeft(fields.currentIndex)) {\r\n\t\t\t\t\tslide(fields.currentIndex - 1);\r\n\t\t\t\t\tcheckArrows(fields.currentIndex);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tfields.right.on(\"click\", function () {\r\n\t\t\t\tif (canMoveRight(fields.currentIndex)) {\r\n\t\t\t\t\tslide(fields.currentIndex + 1);\r\n\t\t\t\t\tcheckArrows(fields.currentIndex);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t$(window).smartresize(function () {\r\n\t\t\t\tfields.totalWidth = getSize(fields.tabContainer, fields.tabItems);\r\n\t\t\t\tslide(fields.currentIndex);\r\n\t\t\t\tfields.menuOffset = fields.tabContainer.position().left - fields.currentOffset;\r\n\t\t\t\twhile (!canMoveRight(fields.currentIndex - 1)) {\r\n\t\t\t\t\tslide(fields.currentIndex - 1);\r\n\t\t\t\t}\r\n\t\t\t\tcheckArrows(fields.currentIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction canMoveRight(index) {\r\n\t\t\tif (index < 0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (fields.tabItems.length < index + 1) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar menuVisibleWidth = pageTabNav.width(),\r\n\t\t\t\tmenuWidth = fields.tabContainer[0].clientWidth,\r\n\t\t\t\toffset = fields.tabItems[index].menuStartOffset;\r\n\r\n\t\t\t// If the last tab is visible, then stop\r\n\t\t\tif (menuVisibleWidth >= menuWidth - offset) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfunction canMoveLeft(index) {\r\n\t\t\tif (index <= 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfunction slide(index) {\r\n\t\t\tfields.currentOffset = fields.tabItems[index].menuStartOffset;\r\n\t\t\tfields.tabContainer.css('transform', 'translateX(-' + fields.currentOffset + 'px)');\r\n\t\t\tfields.currentIndex = index;\r\n\t\t}\r\n\r\n\t\tfunction checkArrows(index) {\r\n\t\t\tcheckLeftArrow(index);\r\n\t\t\tcheckRightArrow(index);\r\n\t\t}\r\n\r\n\t\tfunction checkLeftArrow(index) {\r\n\t\t\tif (canMoveLeft(index)) {\r\n\t\t\t\tfields.left.removeClass(\"hide\");\r\n\t\t\t} else {\r\n\t\t\t\tif (!fields.left.hasClass(\"hide\")) {\r\n\t\t\t\t\tfields.left.addClass(\"hide\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction checkRightArrow(index) {\r\n\t\t\tif (canMoveRight(index)) {\r\n\t\t\t\tfields.right.removeClass(\"hide\");\r\n\t\t\t} else {\r\n\t\t\t\tif (!fields.right.hasClass(\"hide\")) {\r\n\t\t\t\t\tfields.right.addClass(\"hide\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\tfunction init() {\r\n\t    if (pageTabNav.length === 0) {\r\n\t        return;\r\n\t    }\r\n\r\n\t\tvar pageFilerParentTarget = $('.page-filter-tab-navigation');\r\n\r\n\t\tpageFilerParentTarget.each(function() {\r\n\t\t\tinitTabInteractionBase($(this));\r\n\t\t});\r\n\r\n\t    \r\n\t\tinitTabFiltering();\r\n\t\tinitTabs();\r\n\t\thideInactivePages();\r\n    }\r\n\r\n    $(document).on('allFontsLoaded', function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n        initTabSelection: initTabSelection\r\n    };\r\n}();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.parallaxtop = function () {\r\n\r\n\tvar settings = {\r\n\t\t$wrapper    \t:   '.js-parallax',\r\n\t\t$content    \t:   '.hero-media',\r\n\t\t$pattern\t \t:\t'.hero-pattern',\r\n\t\t$background \t:   '.itemlist-section',\r\n\t\t$promotion\t\t:\t'.promotion-section',\r\n\t\t$contentSibling : \t'.hero-section + section'\r\n\t};\r\n\r\n\tvar $html =\t\t\t\t$('html'),\r\n\t\t$wrapper =\t\t\t$(settings.$wrapper),\r\n\t\t$content =\t\t\t$wrapper.find(settings.$content),\r\n\t\t$pattern =\t\t\t$wrapper.find(settings.$pattern),\r\n\t\t$teasers = \t\t\t$wrapper.siblings(settings.$background),\r\n\t\t$promotion =\t\t$wrapper.siblings(settings.$promotion),\r\n\t\t$window =\t\t\t$(window),\r\n\t\toldScrollPos = \t\t0,\r\n\t\tmenuHeight = \t\t0,\r\n\t\twindowHeight =\t\t0,\r\n\t\twindowPosition =\t0,\r\n\t\tscrollTop = \t\t0,\r\n\t\tprevScrollTop;\r\n\r\n\t\r\n\r\n\tfunction init() {\r\n\r\n\t\tif($promotion.length !== 0 && $teasers.length !== 0) {\r\n\t\t\tsetBackgroundColors();\r\n\t\t}\r\n\r\n\t\t// NO PARALLAX FOR BROWSERS NOT SUPPORTING ANIMATION FRAME (performance issue)\r\n\t\tif($wrapper.length === 0 || !Modernizr.prefixed('requestAnimationFrame', window)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t    if (!Tivoli.vars.isAnyTouchDevice) {\r\n\t\t\tanimateElements();\r\n\t\t}\r\n\r\n\t\t$window.on('scroll', function() {\r\n\t\t    if ($wrapper.length !== 0 && Modernizr.prefixed('requestAnimationFrame', window) && !$html.hasClass('IOS7')) {\r\n\t            setupValues();\r\n\t            updatePage();\r\n\t        }\r\n\t    });\r\n\t}\r\n\r\n\t/*function mediaPlay(play) {\r\n\t    if ($content.find('video').length) {\r\n\t        var video = $content.find('video');\r\n\t        if (video.length > 0) {\r\n\t            if (!play) {\r\n\t                video.get(0).pause();\r\n\t            } else {\r\n\t                video.get(0).play();\r\n\t            }\r\n\t        }\r\n\t    } else if ($content.find('#yt-player').length) {\r\n            if (!play) {\r\n\t            Tivoli.Youtube.pause();\r\n            } else if (!Tivoli.Youtube.playerIsActive()) {\r\n                 Tivoli.Youtube.init();\r\n            } else {\r\n\t            Tivoli.Youtube.play();\r\n            }\r\n\t    }\r\n\t}*/\r\n\r\n\tfunction setupValues() {\r\n\t\tscrollTop = $window.scrollTop();\r\n\t\twindowHeight = $wrapper.height();\r\n\t\twindowPosition = $wrapper.offset().top;\r\n\t}\r\n\r\n\tfunction updatePage() {\r\n\r\n\t\t//if(Modernizr.prefixed('requestAnimationFrame', window)) {\r\n\t\t\twindow.requestAnimationFrame(function () {\r\n\t\t\t\tsetAllElements();\r\n\t\t\t});\r\n\t\t/*} else {\r\n\t\t\tsetAllElements();\r\n\t\t}*/\r\n\t}\r\n\r\n\tfunction setBackgroundColors() {\r\n\t\tvar promotionBgColor = $promotion.css('backgroundColor');\r\n\t\t$teasers.css('background', promotionBgColor);\r\n\t}\r\n\r\n\tfunction setAllElements() {\r\n\t\tif(setScrollTops() !== prevScrollTop) {\r\n\t\t\tsetScrollTops();\r\n\t\t\tanimateElements();\r\n\r\n\t\t\tprevScrollTop = $window.scrollTop();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setScrollTops() {\r\n\t\tscrollTop = $window.scrollTop();\r\n\t\treturn scrollTop;\r\n\t}\r\n\r\n\tfunction animateElements() {\r\n\r\n\t\tif(scrollTop <= (windowHeight)) {\r\n\r\n\t\t\tvar scrollAnim =+ (scrollTop/1.5);\r\n\t\t\toldScrollPos = scrollAnim;\r\n\r\n\t\t\t$content.css({\r\n\t\t\t  position: 'absolute',\r\n\t\t\t  //transform: 'translate3d(0,' + (menuHeight + -(scrollAnim/4).toFixed(2)) + 'px ,0)'\r\n\t\t\t\ttransform: 'translateY(' + (menuHeight + -(scrollAnim/4).toFixed(2)) + 'px)'\r\n\t\t\t});\r\n\t\t\tif($pattern.length > 0) {\r\n\t\t\t  $pattern.css({\r\n\t\t\t\tposition: 'absolute',\r\n\t\t\t\t  ///transform: 'translate3d(0,' + (menuHeight + -scrollAnim) + 'px ,0)'\r\n\t\t\t\t  transform: 'translateY(' + (menuHeight + -scrollAnim) + 'px)'\r\n\t\t\t  });\r\n\t\t\t}\r\n\r\n\t\t  } else {\r\n\t\t\t  /*if(!Tivoli.isBrowser.IE()) {\r\n\t\t\t\t$pattern.css({\r\n\t\t\t\t  position: 'relative'\r\n\t\t\t\t});\r\n\t\t\t  }*/\r\n\t\t\t  $content.css({\r\n\t\t\t\tposition: 'absolute'\r\n\t\t\t  });\r\n\t\t  }\r\n\r\n\t\tif (scrollTop < 0) {\r\n\t\t\tvar scaleRatio = (1 + ($window.scrollTop()/600) * (-1)).toFixed(3);\r\n\t\t\t// SCALE EFFECT FOR \"< 0\"-scrolling\r\n\t\t\t$content.css({\r\n\t\t\t  transform: 'scale( ' + scaleRatio + ')',\r\n\t\t\t});\r\n\t\t\t$pattern.css({\r\n\t\t\t  transform: 'translateY( ' + $window.scrollTop()*2 + 'px)'\r\n\t\t\t});\r\n\t\t\t// TOP GRADIENT EFFECT\r\n\t\t\t$('.gradient-hero-element').height(-(scrollAnim*1) + 'px');\r\n\t\t}\r\n\t}\r\n    \r\n\t$(document).ready(function () {\r\n\t    init();\r\n\t});\r\n}();","var Tivoli = Tivoli || {};\r\nTivoli.Pass = (function () {\r\n    var containerLookup;\r\n    var containerForm;\r\n    var containerPopupForm;\r\n    var renewPassChangedValues = false;\r\n\r\n    function init() {\r\n        initPassLookup();\r\n        initPassForm();\r\n        initPassPopupForm();\r\n        initPassRenewForm();\r\n        toogleMitTivoli();\r\n        initPassActiveEmptyForm();\r\n        initServicePermissionForm();\r\n        \r\n    }\r\n\r\n    function initPassLookup() {\r\n        containerLookup = $(\".js-pass-validation\");\r\n\r\n        if (containerLookup.length === 0) {\r\n            return;\r\n        }\r\n\r\n        var additionalVerificationContainer = $(\".js-pass-additional-verification\");\r\n        if (additionalVerificationContainer.length > 0) {\r\n            var additionalVerificationEnabledAtStartup = additionalVerificationContainer.data(\"enabled-at-startup\");\r\n            toggleAdditionalVerificationFirstName(additionalVerificationEnabledAtStartup);\r\n        }\r\n\r\n        handleLookupPost();\r\n    }\r\n\r\n    function toggleAdditionalVerificationFirstName(enable) {\r\n        var additionalVerificationFirstName = $(\".js-pass-additional-verification-first-name\");\r\n        if (additionalVerificationFirstName.length == 0) {\r\n            return;\r\n        }\r\n        if (enable) {\r\n            additionalVerificationFirstName.find(\".js-validation-input\").removeClass(\"ignore\");\r\n        } else {\r\n            additionalVerificationFirstName.find(\".js-validation-input\").addClass(\"ignore\");\r\n        }\r\n    }\r\n\r\n    function initPassForm() {\r\n        containerForm = $(\".js-pass-form\");\r\n\r\n        if (containerForm.length === 0) {\r\n            return;\r\n        }\r\n\r\n       \r\n        handlePassRenewInputs();\r\n\r\n        $.each(containerForm, function() {\r\n             handlePassFormPost($(this));\r\n             handlePassImage($(this)); \r\n        });\r\n    }\r\n\r\n     function initPassRenewForm() {\r\n        containerForm = $(\".js-pass-renew-form\");\r\n\r\n        if (containerForm.length === 0) {\r\n            return;\r\n        }\r\n\r\n        // handlePassRenewInputs();\r\n    }\r\n\r\n    function initPassPopupForm() {\r\n        containerPopupForm = $(\".js-pass-popup-form\");\r\n\r\n        if (containerForm.length === 0) {\r\n            return;\r\n        }\r\n\r\n        handlePassPopupFormPost();\r\n    }\r\n\r\n    function initFormWithQueryString() {\r\n        var id = Tivoli.getUrlParameterByName(\"visualId\");\r\n        var message = Tivoli.getUrlParameterByName(\"message\");\r\n        if (id) {\r\n            Tivoli.validation.getValidator(containerLookup).showErrors({ VisualId: message });\r\n            containerLookup.find(\"#LookupPassVisualId\").val(id);\r\n        }\r\n    }\r\n\r\n    function initLoad() {\r\n        if (containerLookup == null || containerLookup.length === 0) {\r\n            return;\r\n        }\r\n\r\n        initFormWithQueryString();\r\n    }\r\n    \r\n    function handleLookupPost() {\r\n        var button = containerLookup.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        containerLookup.on(\"form-request\", function (e, request) {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n            if (!request.Form.VisualId) {\r\n                request.Form.VisualId = $(\".js-visualid-static\").data(\"value\");\r\n            }\r\n\r\n            $('.js-pass-error-message').hide();\r\n        });\r\n\r\n        containerLookup.on(\"form-success\", function (e, data) {\r\n            if (data.RedirectUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n            }\r\n        });\r\n        containerLookup.on(\"form-error\", function (e, data) {\r\n            \r\n            Tivoli.CircleLoader.reset(loader);\r\n            if (data.FormErrors && data.FormErrors.FirstName) {\r\n                // First is required - show it\r\n                var additionalVerificationContainer = $(\".js-pass-additional-verification\");\r\n                if (!additionalVerificationContainer.data(\"usedFirstTry\") && !additionalVerificationContainer.data(\"enabled-at-startup\")) {\r\n                    // First time errors shows - show input first and remove error message\r\n                    additionalVerificationContainer.data(\"usedFirstTry\", true);\r\n                    delete data.FormErrors.FirstName;\r\n                    additionalVerificationContainer.show();\r\n                    toggleAdditionalVerificationFirstName(true);\r\n                }\r\n            }else if(data.FormErrors && data.AlertMessage){\r\n                var alert = data.AlertMessage\r\n                Tivoli.ErrorPopup.show(alert.Title, alert.Body, alert.ButtonText,\r\n                 function alertRedirect(){\r\n                    window.location.href = alert.ButtonHref\r\n                    return false;\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n    function handlePassImage(container) {\r\n        var fileInput = container.find(\"input[type=file]\");\r\n        fileInput.on(\"file-data-changed\", function (e, data) {\r\n            container.find(\".js-pass-image\").get(0).src = data;\r\n        });\r\n    }\r\n    \r\n    function handlePassFormPost(container) {\r\n        var button = container.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n        var popUp = $(\".pass-renew-permission-popup\");\r\n        var isMitTivoli = container.hasClass('js-is-mitTivoli');\r\n\r\n        container.on('form-failed', function(e, eventInfo) { \r\n            openPassRenewFormFields();\r\n        });\r\n        \r\n        \r\n\r\n        \r\n        var formError = container.find(\".js-submit-form-error\");\r\n        formError.hide();\r\n\r\n        container.on(\"form-request\", function (e, request) {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n\r\n            // Append visual id to form\r\n            request[\"VisualId\"] = Tivoli.getUrlParameterByNameInsensitive(\"visualid\");\r\n            \r\n            // Append kind to form if any\r\n            var kind = Tivoli.getUrlParameterByNameInsensitive(\"kind\");\r\n            if (kind) {\r\n                request[\"Kind\"] = kind;\r\n            }\r\n\r\n            request[\"IsMitTivoli\"] = isMitTivoli;\r\n\r\n            request[\"ValuesChanged\"] = renewPassChangedValues;\r\n        });\r\n\r\n        container.on(\"form-success\", function (e, data) {\r\n            if (data.Success && data.RedirectUrl && data.ShowPermissionPopup && popUp.length >= 1) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                $(\".delivery-information__inner\").hide();\r\n                $(\".pass-renew-permission-popup\").show();\r\n                $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n                $(\".permission-no-thanks\").on(\"click\", function () {\r\n                    e.preventDefault();\r\n                    window.location.href = data.RedirectUrl;\r\n                });\r\n            }\r\n            else if (data.Success && data.RedirectUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                \r\n                if (data.Error) {\r\n                    formError.empty();\r\n                    formError.html(data.Error);\r\n                    formError.show();\r\n                    openPassRenewFormFields();\r\n                    \r\n                }\r\n            }\r\n        });\r\n        \r\n        container.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n            openPassRenewFormFields();\r\n        });\r\n    }\r\n    function handlePassPopupFormPost() {\r\n        var button = containerPopupForm.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n        var popUp = $(\".pass-renew-permission-popup\");\r\n\r\n\r\n        var formError = containerPopupForm.find(\".js-submit-form-error\");\r\n        formError.hide();\r\n\r\n        containerPopupForm.on(\"form-request\", function (e, request) {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n\r\n            // Append visual id to form\r\n            request[\"VisualId\"] = Tivoli.getUrlParameterByNameInsensitive(\"visualid\");\r\n\r\n            // Append kind to form if any\r\n            var kind = Tivoli.getUrlParameterByNameInsensitive(\"kind\");\r\n            if (kind) {\r\n                request[\"Kind\"] = kind;\r\n            }\r\n        });\r\n\r\n        containerPopupForm.on(\"form-success\", function (e, data) {\r\n            if (data.Success && data.RedirectUrl && data.ShowPermissionPopup && popUp.length >= 1) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                $(\".delivery-information__inner\").hide();\r\n                $(\".pass-renew-permission-popup\").show();\r\n                $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n                $(\".permission-no-thanks\").on(\"click\", function () {\r\n                    e.preventDefault();\r\n                    window.location.href = data.RedirectUrl;\r\n                });\r\n            }\r\n            else if (data.Success && data.RedirectUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                if (data.Error) {\r\n                    formError.empty();\r\n                    formError.html(data.Error);\r\n                    formError.show();\r\n                }\r\n            }\r\n        });\r\n\r\n        containerForm.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n    }\r\n\r\n    function handlePassRenewInputs() {\r\n        $('.js-pass-form-edit').on('click', function(e) {\r\n            e.preventDefault();\r\n           openPassRenewFormFields();\r\n        });\r\n    }\r\n\r\n    function toogleMitTivoli() {\r\n        var mitTivoliPassword = $('.mit-tivoli-signup-password');\r\n        $('.mit-tivoli-signup .custom-checkbox').on('change', function() {\r\n            if(this.checked) {\r\n                mitTivoliPassword.show();\r\n            }\r\n            else {\r\n                mitTivoliPassword.hide();\r\n            }\r\n        });\r\n    }\r\n\r\n    function openPassRenewFormFields(){\r\n        var passFormInfo = $('.js-pass-info');\r\n        var passFormInput = $('.js-pass-hidden-input');\r\n        var passFormAffectedCards = $('.js-pass-info-affected-cards');\r\n        var passFormInfoLabel = $('.js-pass-form-info-label');\r\n\r\n        passFormInfo.hide();\r\n        passFormAffectedCards.show();\r\n        passFormInput.show();\r\n        renewPassChangedValues = true;\r\n        passFormInfoLabel.hide();\r\n    }\r\n\r\n    function initPassActiveEmptyForm() {\r\n        var passFormHidden = false;\r\n        $('.js-activate-toogle-empty-form').on('click', function(e) {\r\n            e.preventDefault();\r\n\r\n            var passForm = $('.js-pass-form');\r\n            var emptyPassForm =  $('.js-activate-empty-form');\r\n            \r\n            if(!passFormHidden) {\r\n                passForm.hide();\r\n                emptyPassForm.show();\r\n                passFormHidden = true;\r\n            }\r\n            else {\r\n                passForm.show();\r\n                emptyPassForm.hide();\r\n                passFormHidden = false;\r\n            }\r\n            \r\n            $(window).scrollTop(0);\r\n            \r\n        });\r\n    }\r\n\r\n    function initServicePermissionForm() {\r\n        var containerForm = $(\".js-pass-service-permission-form\");\r\n\r\n        if (containerForm.length === 0) {\r\n            return;\r\n        }\r\n\r\n\r\n        $.each(containerForm, function() {\r\n             handleServicePermissionFormPost($(this));\r\n        });\r\n    }\r\n\r\n    function handleServicePermissionFormPost(container) {\r\n        var button = container.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        var formError = container.find(\".js-submit-form-error\");\r\n        formError.hide();\r\n\r\n        container.on(\"form-request\", function (e, request) {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n\r\n            // Append visual id to form\r\n            request[\"VisualId\"] = Tivoli.getUrlParameterByNameInsensitive(\"visualid\");\r\n        });\r\n\r\n        container.on(\"form-success\", function (e, data) {\r\n            if (data.Success && data.RedirectUrl) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                window.location.href = data.RedirectUrl;\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n            }\r\n        });\r\n        \r\n        container.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n    }\r\n\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    $(window).load(function () {\r\n        initLoad();\r\n    });\r\n\r\n    return {\r\n\r\n    };\r\n})();","\"use strict\";\r\n\r\nvar Tivoli = Tivoli || {};\r\n\r\nTivoli.paymentReceiver = (function () {\r\n\r\n    var url = \"/webshop/checkout/endpayment\";\r\n    var timer;\r\n\r\n    function getstatus() {\r\n        var c = $(\".payment-receiver-section\");\r\n        if (c.length === 0) {\r\n            return;\r\n        }\r\n\r\n        $.ajax({\r\n            type: \"POST\",\r\n            url: url + \"?\" + c.attr(\"data-params\"),\r\n            data: {},\r\n            timeout: 300000, //5 min\r\n            success: function (response) {\r\n                if (response != 'inprogress' && response != '') {\r\n                    clearInterval(timer);\r\n                    window.location.href = response;\r\n                } else {\r\n                    timer = setTimeout(getstatus, 1000);\r\n                }\r\n            },\r\n            error: function(err) {\r\n                console.log(\"Err\", err);\r\n            },\r\n            dataType: \"json\"\r\n        });\r\n    };\r\n\r\n    function setupPaymentReceiver() {\r\n        timer = setTimeout(getstatus, 1000);\r\n    }\r\n\r\n    $(document).ready(function () {\r\n        setupPaymentReceiver();\r\n    });\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.press = (function() {\r\n    function init() {\r\n        $.each($('.js-press-signup-form'), function() {\r\n            handleNewsletterSignup($(this));\r\n        });\r\n    }\r\n\r\n    function handleNewsletterSignup(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-press-signup-form-container\");\r\n        var successDiv = outerContainer.find(\".form-submit-success\");\r\n        var errorDiv = outerContainer.find(\".form-submit-failed\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function() {\r\n            successDiv.hide();\r\n            errorDiv.hide();\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                successDiv.show();\r\n                errorDiv.hide();\r\n                formContainer.hide();\r\n            } else {\r\n                Tivoli.CircleLoader.reset(loader);\r\n                successDiv.hide();\r\n                errorDiv.show();\r\n            }\r\n        });\r\n        \r\n        formContainer.on(\"form-error\", function () {\r\n            Tivoli.CircleLoader.reset(loader);\r\n        });\r\n    };\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n        \r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\nTivoli.promotion = (function () {\r\n    \"use strict\";\r\n    \r\n\tfunction init() {\r\n\t\t$(\".promotion-section .buttons\").has('a[href*=\"apps.apple.com\"]').has('a[href*=\"play.google.com\"]').each(function(_, x){\r\n\t\t\t\t$(x).find('a').each(function(_, a){  \r\n\t\t\t\t\t\t$(a).click(function(){\r\n\t\t\t\t\t\t\tpush($(a).find('span').text())\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\tfunction push(label) {\r\n\t\t\twindow.digitalData = window.digitalData || []\r\n\r\n\t\t\twindow.digitalData.push({\r\n\t\t\t\t\"event\": \"Download app click\",\r\n\t\t\t\t\"interaction\": {\r\n\t\t\t\t  \"action\": \"Click\", \r\n\t\t\t\t  \"label\": label,\r\n\t\t\t\t  \"component\": \"Download item\",\r\n\t\t\t\t  \"location\": \"body\",\r\n\t\t\t\t  \"type\": \"Download interaction\"\r\n\t\t\t  \t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).ready(function() {\r\n\t\tinit()\r\n\t})\r\n\r\n    return {\r\n        init: init\r\n    }\r\n})()\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.promotion = (function () {\r\n    \"use strict\";\r\n    \r\n\tfunction init() {\r\n\t\t$(\"a[data-book-restaurant-name]\").click(function() {\r\n\t\t\tpush($(this).find('span').text(), $(this).attr('data-book-restaurant-name'))\r\n\t\t})\r\n\r\n\t\tfunction push(label, restaurantName) {\r\n\t\t\twindow.digitalData = window.digitalData || []\r\n\r\n\t\t\twindow.digitalData.push({\r\n\t\t\t\t\"event\": \"Book table click\",\r\n\t\t\t\t\"interaction\": {\r\n\t\t\t\t  \"action\": \"Click\", \r\n\t\t\t\t  \"label\": label || \"\" ,\r\n\t\t\t\t  \"restaurantName\": restaurantName || \"\" ,\r\n\t\t\t\t  \"component\": \"Book table item\",\r\n\t\t\t\t  \"type\": \"Book table interaction\"\r\n\t\t\t  \t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).ready(function() {\r\n\t\tinit()\r\n\t})\r\n\r\n    return {\r\n        init: init\r\n    }\r\n})()\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.ShareFacebook = (function () {\r\n\r\n    function init() {\r\n        var shareFacebookButton = $(\".js-share-facebook\");\r\n\r\n        if (shareFacebookButton.length === 0) {\r\n            return;\r\n        }\r\n\r\n        shareFacebookButton.on(\"click\", function (e) {\r\n            e.preventDefault();\r\n\r\n            var subject = $(this).data(\"share-subject\");\r\n            var message = $(this).data(\"share-message\");\r\n            var link = $(this).data(\"share-link\");\r\n            var image = $(this).data(\"share-image\");\r\n            var fbAppId = $(this).data(\"share-id\");\r\n\r\n            if (typeof FB === 'undefined')\r\n            {\r\n                FB.init({\r\n                    appId: fbAppId,\r\n                    cookie: true,\r\n                    xfbml: true,\r\n                    version: 'v2.9'\r\n                });\r\n            }\r\n            \r\n            FB.ui({\r\n                method: 'feed',\r\n                link: link,\r\n                name: subject,\r\n                description: message,\r\n                picture: image\r\n\r\n            }, function (response) { });\r\n            \r\n        });\r\n    }\r\n\r\n    $(document).on(\"ready\", function () {\r\n        init();\r\n    });\r\n})();","var Tivoli = Tivoli || {};\r\n\r\n\r\n/***********************************\r\nAuthor: Lars Sørensen - Tivoli\r\n***********************************/\r\nTivoli.sharePage = (function () {\r\n\r\n    function init() {\r\n        var sharePageButton = $(\".js-share-page\");\r\n\r\n        if (sharePageButton.length === 0) {\r\n            return;\r\n        }\r\n\r\n        sharePageButton.each(function () {\r\n\r\n            var sharePage = $(this);\r\n\r\n            sharePage.on(\"click\", function () {\r\n                var shareId = $(this).data(\"share-id\");\r\n                var containerToExpand = $(\"[data-shared-id=\" + shareId + \"]\");\r\n                var openHeight = containerToExpand.children(\".text-fade-container\").height();\r\n\r\n                if (!containerToExpand.is(\":visible\")) {\r\n                    containerToExpand.show(\"medium\");\r\n                } else {\r\n                    containerToExpand.hide(\"medium\");\r\n                }\r\n\r\n            });\r\n        });\r\n\r\n        $(\"#share-link\").on(\"click\", function () {\r\n            $(this).select();\r\n        });\r\n\r\n    }\r\n\r\n    $(document).on(\"ready\", function () {\r\n        init();\r\n    });\r\n\r\n}());\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.ShareTwitter = (function () {\r\n\r\n    function init() {\r\n        var shareTwitterButton = $(\".js-share-twitter\");\r\n\r\n        if (shareTwitterButton.length === 0) {\r\n            return;\r\n        }\r\n\r\n        shareTwitterButton.on(\"click\", function (e) {\r\n            e.preventDefault();\r\n\r\n            var message = $(this).data(\"share-message\");\r\n            var link = $(this).data(\"share-link\");\r\n            \r\n            window.open('https://twitter.com/share?url=' + escape(link) + '&text=' + escape(message), 'twitter', 'height=450, width=550, top=' + ($(window).height() / 2 - 225) + ', left=' + $(window).width() / 2 + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0');\r\n        });\r\n    }\r\n\r\n    $(document).on(\"ready\", function () {\r\n        init();\r\n    });\r\n})();","var Tivoli = Tivoli || {};\r\n\r\n\r\nTivoli.showFeedback = function() {\r\n    \"use strict\";\r\n\r\n    var smallBreak\t\t\t=\tTivoli.settings.width.small,\r\n\t\tlittleMediumBreak\t=\tTivoli.settings.width.littlemedium,\r\n\t\tmediumBreak\t\t\t=\tTivoli.settings.width.medium,\r\n\t\tlargeBreak \t\t\t=\tTivoli.settings.width.large,\r\n\t\txLargeBreak     = Tivoli.settings.width.xlarge,\r\n\t\twindowWidth,\r\n\t\tcurrentMQSize,\r\n\t\tallfeedBackSwipers = [];\r\n\r\n    function init() {\r\n        if($(\".show-feedback__swiper\").length === 0) {\r\n\t\t    return;\r\n        }\r\n\r\n\t\tcallFeedbackSwiper();\r\n\t\t\r\n\t\t$('.radio-section').on('click', function(e) {\r\n\t\t\t$(this).parents('.show-feedback__question--error').removeClass('.show-feedback__question--error');\r\n\t\t});\r\n\r\n\t\t $.each($('.js-feedback-form'), function () {\r\n\t\t\thandleFeedbackPost($(this));\r\n\t\t\thandleFeedbackDropdownComment();\r\n        });\r\n\t\t\r\n    }\r\n\r\n    function feedbackSwiperSettings(swiper) {\r\n\t\tvar size = {\r\n\t\t\t XLarge: function() {\r\n\t\t        swiper.params.slidesPerView = 3.2;\r\n\t\t        swiper.params.centeredSlides = true;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t\t},\r\n\t\t\tLarge: function() {\r\n\t\t        swiper.params.slidesPerView = 2.7;\r\n\t\t        swiper.params.centeredSlides = true;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t\tMedium: function() {\r\n\t\t        swiper.params.slidesPerView = 1.7;\r\n\t\t        swiper.params.centeredSlides = true;\r\n\t\t        swiper.params.offsetSlidesBefore = 0;\r\n\t\t        swiper.params.offsetSlidesAfter = 0;\r\n\t\t        swiper.params.touchRatio = 0.8;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t    Small: function() {\r\n                swiper.params.slidesPerView = 1;\r\n                swiper.params.centeredSlides = false;\r\n                swiper.params.offsetSlidesBefore = 0;\r\n                swiper.params.offsetSlidesAfter = 0;\r\n\t\t        reInitSwiper();\r\n\t\t    },\r\n\t\t\treset: function() {\r\n\t\t\t\tvar $swiper\t\t=\t$(swiper.container).find('.swiper'),\r\n\t\t\t\t\t$swipeBox\t=\t$swiper.find('.box-item');\r\n\r\n\t\t\t\tswiper.params.autoResize = false;\r\n\t\t\t\tswiper.params.slidesPerView = 'auto';\r\n\t\t\t\tswiper.params.slidesPerViewFit = false;\r\n\t\t\t\tswiper.params.offsetSlidesBefore = 0;\r\n\t\t\t\tswiper.params.offsetSlidesAfter = 0;\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\r\n\t\t\t\t$swiper.removeAttr('style');\r\n\t\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\tkillTouch: function() {\r\n\t\t\t\tswiper.params.touchRatio = 0;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction reInitSwiper() {\r\n\t\t\tvar $swiper\t\t=\t$(swiper.container).find('.swiper'),\r\n\t\t\t\t$swipeBox\t=\t$swiper.find('.box-item');\r\n\r\n\t\t\t$swiper.removeClass('kill-swiper');\r\n\t\t\t$swiper.removeAttr('style');\r\n\t\t\t$swipeBox.removeAttr('style');\r\n\t\t\tswiper.reInit();\r\n\t\t}\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n    function callFeedbackSwiper(){\r\n        MQWidth();\r\n        currentMQSize = getMQSize();\r\n        \r\n        feedBackSwiperInit($('.show-feedback__swiper'));      \r\n\r\n        $(window).smartresize(function() {\r\n\t\t\tMQWidth();\r\n\t\t});\r\n\r\n\t\t$(document).on('breakpoint', function(e) {\r\n\t\t\t$.each(allfeedBackSwipers, function() {\r\n\t\t\t\tsetfeedBackSwiper(this, currentMQSize);\r\n\t\t\t});\r\n        });\r\n    }\r\n\r\n    function getMQSize() {\r\n\r\n\t\twindowWidth = $(window).width();\r\n\t\tvar newMQSize;\r\n\r\n\t\tif (xLargeBreak < windowWidth && windowWidth > largeBreak) {\r\n\t\t\tnewMQSize = 'xxlarge';\r\n\t\t}else if(largeBreak < windowWidth && windowWidth > mediumBreak) {\r\n\t\t\tnewMQSize = 'xlarge';\r\n\t\t} else if (largeBreak >= windowWidth && windowWidth > mediumBreak) {\r\n\t\t\tnewMQSize = 'large';\r\n\t\t} else if((mediumBreak >= windowWidth && littleMediumBreak < windowWidth)) {\r\n\t\t\tnewMQSize = 'medium';\r\n\t\t} else if (littleMediumBreak >= windowWidth && smallBreak < windowWidth) {\r\n\t\t\tnewMQSize = 'littlemedium';\r\n\t\t} else if ((smallBreak >= windowWidth)) {\r\n\t\t\tnewMQSize = 'small';\r\n\t\t}\r\n\t\treturn newMQSize;\r\n\t}\r\n\r\n\tfunction MQWidth() {\r\n\t\twindowWidth = $(window).width();\r\n\r\n\t\tif (currentMQSize !== getMQSize()) {\r\n\t\t\tcurrentMQSize = getMQSize();\r\n\t\t\t$(document).trigger('breakpoint', [currentMQSize]);\r\n\t\t}\r\n\t}\r\n\r\n    function feedBackSwiperInit(swiperContainer){\r\n        //  var feedbackSwiper = new Swiper('.show-feedback__swiper', {\r\n        //     speed: 400,\r\n        //     slidesPerView: 3.1,\r\n        //     centeredSlides: true\r\n        // });\r\n\r\n       \r\n        \r\n\t\tvar swiperSettings = {\r\n\t\t\tspeed: 400,\r\n\t\t\t slidesPerView: 3.1,\r\n\t\t\t autoHeight: true,\r\n             onSwiperCreated: setfeedBackSwiper,\r\n             onSlideChangeStart: swiperPositionCallback\r\n\t\t};\r\n\r\n\t\tvar feedbackSwiper = new Swiper(swiperContainer[0], swiperSettings);\r\n\t\tallfeedBackSwipers.push(feedbackSwiper);\r\n    }\r\n\r\n    function swiperPositionCallback(swiper) {\r\n        var $swiperContainer = $(swiper.container);\r\n        var swiperItemLength = $swiperContainer.find('.swiper-slide').length - 1;\r\n        \r\n        if(swiper.activeIndex == 0) {\r\n            $('.js-show-feedback__button').show();\r\n            $('.js-show-feedback__button__progress-start').show();\r\n            $('.js-show-feedback__button__progress-index').hide();\r\n\t\t\t$('.js-show-feedback__button__progress-label').hide();\r\n\t\t\t$('.show_feedback__button-container .js-custom-submit').hide();\r\n        } else if(swiper.activeIndex == swiperItemLength) {\r\n\t\t\t$('.js-show-feedback__button').hide();\r\n\t\t\t$('.show_feedback__button-container .js-custom-submit').show();\r\n        } else {\r\n            $('.js-show-feedback__button__progress-start').hide();\r\n            $('.js-show-feedback__button').show();\r\n            $('.js-show-feedback__button__progress-index').show();\r\n            $('.js-show-feedback__button__progress-index').html(swiper.activeIndex + ' / ' + swiperItemLength);\r\n\t\t\t$('.js-show-feedback__button__progress-label').show();\r\n\t\t\t$('.show_feedback__button-container .js-custom-submit').hide();\r\n        }\r\n    }\r\n\r\n    function setfeedBackSwiper(swiper, MQWidth) {\r\n\t\tMQWidth = MQWidth !== undefined ? MQWidth : currentMQSize;\r\n\r\n\t\tvar $swiperContainer = $(swiper.container);\r\n\t\tvar swiperItemLength = $swiperContainer.find('.box-item').length;\r\n\r\n\r\n\t\tif (MQWidth === 'xxlarge') {\r\n            feedbackSwiperSettings(swiper).XLarge();\r\n\t\t\tfeedbackControl(swiper, true);\r\n\t\t} else if (MQWidth === 'xlarge') {\r\n            feedbackSwiperSettings(swiper).XLarge();\r\n\t\t\tfeedbackControl(swiper, true);\r\n\r\n\t\t} else if (MQWidth === 'large') {\r\n            feedbackSwiperSettings(swiper).Large();\r\n\t\t\tfeedbackControl(swiper, true);\r\n\r\n\t\t} else if (MQWidth === 'littlemedium' || MQWidth === 'medium' ) {\r\n\t\t\tfeedbackSwiperSettings(swiper).Medium();\r\n\t\t\tfeedbackControl(swiper, true);\r\n\t\t} else if (MQWidth === 'small') {\r\n            feedbackSwiperSettings(swiper).Small();            \r\n\t\t\tfeedbackControl(swiper, false);\r\n\t\t}\r\n    }\r\n\r\n    function feedbackControl(swiper, setButtonWidth) {\r\n        var boxItemWidth = $(\".show-feedback__swiper\").find('.show-feedback__question').width();\r\n        \r\n        if(setButtonWidth) {\r\n\t\t\t$('.js-show-feedback__button').width(boxItemWidth + 10);\r\n\t\t\t$('.show_feedback__button-container .js-custom-submit a').width(boxItemWidth + 10);\r\n        } else {\r\n\t\t\t$('.js-show-feedback__button').css('width', 'calc(100% - 10px)');\r\n\t\t\t$('.show_feedback__button-container .js-custom-submit a').css('width', 'calc(100% - 10px)');\r\n        }\r\n\r\n        $('.js-show-feedback__button').on('click', function(e) {\r\n\t\t\te.preventDefault();\r\n            swiper.swipeNext();\r\n\t\t});\r\n\t\t\r\n\t\thandleErrors(swiper);\r\n\t}\r\n\t\r\n\tfunction handleErrors(swiper) {\r\n\t\t$('.js-custom-submit').on('click', function() {\r\n\t\t\tvar questionIndex = 0;\r\n\t\t\tvar errorIndex = 0;\r\n\t\t\t$.each($('.show-feedback__question'), function() {\r\n\t\t\t\tvar error = $(this).find('.error-text');\r\n\t\t\t\tif(error.length != 0 && error.css('display') != 'none') {\r\n\t\t\t\t\t$(this).addClass('show-feedback__question--error');\r\n\t\t\t\t\tif(errorIndex == 0) {\r\n\t\t\t\t\t\terrorIndex = questionIndex;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).removeClass('show-feedback__question--error');\r\n\t\t\t\t}\r\n\t\t\t\tquestionIndex++;\r\n\t\t\t});\r\n\t\t\tif(errorIndex != 0) {\r\n\t\t\t\tswiper.swipeTo(errorIndex);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$('.js-validation-input').change(function(){\r\n\t\t\t$(this).parents('.show-feedback__question--error').removeClass('show-feedback__question--error');\r\n\t\t});\r\n\t}\r\n\r\n\tfunction handleFeedbackDropdownComment() {\r\n\t\t$.each($('.js-feedback-comment .js-validation-input'), function() {\r\n\t\t\tvar $commentInput = $(this).parents('.js-feedback-comment');\r\n\t\t\tvar numberOfOptions = $(this).children('option').length - 1;\r\n\t\t\t$(this).on(\"change\", function() {\r\n\t\t\t\tif($(this).find(\"option:selected\").index() == numberOfOptions) {\r\n\t\t\t\t\t$commentInput.addClass('js-feedback-comment--enabled');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$commentInput.removeClass('js-feedback-comment--enabled');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction handleFeedbackPost(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".show-feedback\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function() {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n        \r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n\t\t\t\touterContainer.hide();\r\n\t\t\t\t$('.show-feedback-promotions').show();\r\n            } else {\r\n\t\t\t\t Tivoli.CircleLoader.reset(loader);\r\n\t\t\t\t Tivoli.ButtonMessage.showErrorMessage(button, data.ErrorMessage);\r\n            }\r\n        });\r\n        \r\n        formContainer.on(\"form-error\", function () {\r\n             Tivoli.CircleLoader.reset(loader);\r\n        });\r\n\t};\r\n\t\r\n\t\r\n    \r\n    \r\n\r\n    \r\n     $(document).ready(function () {\r\n\t    init();\r\n\t});\r\n\r\n}();\r\n\r\n","var Tivoli = Tivoli || {};\r\n\r\n\r\n/***********************************\r\nAuthor: Lars Sørensen - Tivoli\r\n***********************************/\r\nTivoli.shows = (function () {\r\n\r\n    function init() {\r\n        $.each($('.js-rating-form'), function () {\r\n            userReviewRate($(this));\r\n        });\r\n\r\n        if ($('.spamalot--stupid-button').length != 0) {\r\n            stupidOverlay();\r\n        }\r\n    }\r\n\r\n    function fadeButton() {\r\n        $(\"button.button-fade\").on(\"click\", function () {\r\n            var expanderId = $(this).data(\"fader-id\");\r\n            var containerToExpand = $(\"[data-fade-id=\" + expanderId + \"]\");\r\n            var buttonToHide = $(this);\r\n            var openHeight = containerToExpand.children(\".text-fade-container\").height();\r\n            \r\n            buttonToHide.fadeOut(\"fast\");\r\n            containerToExpand.animate({\r\n                \"min-height\": openHeight\r\n            }, \"slow\", function() {\r\n                containerToExpand.css(\"height\", \"auto\");\r\n                containerToExpand.css(\"min-height\", \"0\");\r\n                \r\n            });\r\n\r\n            containerToExpand.css(\"-webkit-mask-image\", \"-webkit-gradient(linear, 0% 0%, 0% 100%, from(black), to(rgba(0, 0, 0, 1)))\");\r\n        });\r\n    }\r\n\r\n    function castOverlay() {\r\n        $(\".cast-overlay-button\").on(\"click\", function () {\r\n\r\n            $(\".popup\").hide();\r\n            var expanderId = $(this).data(\"expander-id\");\r\n            var offset = $(this).position();\r\n            var containerToExpand = $(\"[data-expand-id=\" + expanderId + \"]\");\r\n\r\n            containerToExpand.show();\r\n            containerToExpand.css(\"top\", offset.top);\r\n        });\r\n\r\n        $(\".popup__exit\").on(\"click\", function () {\r\n            $(this).parent().hide();\r\n        });\r\n    }\r\n\r\n    function stupidOverlay() {\r\n        $(\".spamalot--stupid-button a\").click(function (e) {\r\n            e.preventDefault();\r\n            var containerToExpand = $(\".spamalot--stupid-button .stupid-popup\");\r\n\r\n            containerToExpand.show();\r\n        });\r\n\r\n        $(\".exit-popup\").on(\"click\", function () {\r\n            $(this).parent().hide();\r\n        });\r\n    }\r\n\r\n    function userReviewStarWidth() {\r\n        $(\".star-container .star\").each(function () {\r\n            var width = $(this).data(\"width\");\r\n            $(this).css(\"width\", width + \"%\");\r\n        });\r\n    }\r\n\r\n    function GetURLParameter(sParam) {\r\n        var sPageURL = window.location.search.substring(1);\r\n        var sURLVariables = sPageURL.split('&');\r\n        for (var i = 0; i < sURLVariables.length; i++) {\r\n            var sParameterName = sURLVariables[i].split('=');\r\n            if (sParameterName[0] == sParam) {\r\n                return sParameterName[1];\r\n            }\r\n        }\r\n    }\r\n\r\n    function userReviewRate(formContainer) {\r\n        $(\".user-reviews--rate .star-container\").on(\"click\", function () {\r\n            var starNum = $(this).children(\".star\").data(\"star-num\");\r\n            userReviewSetStars(starNum);\r\n        });\r\n\r\n        $(\".user-reviews--rate .star-container\").mouseenter(function () {\r\n            var starNum = $(this).children(\".star\").data(\"star-num\");\r\n            $(\".user-reviews--rate .star\").each(function (index, value) {\r\n                if ((index + 1) <= starNum) {\r\n                    $(this).css(\"width\", \"100%\");\r\n                } else {\r\n                    $(this).css(\"width\", \"0%\");\r\n                }\r\n            });\r\n        }).mouseleave(\r\n            function() {\r\n                var starNum = $('input#RatingValue').val();\r\n                $(\".user-reviews--rate .star\").each(function(index, value) {\r\n                    if ((index + 1) <= starNum) {\r\n                        $(this).css(\"width\", \"100%\");\r\n                    } else {\r\n                        $(this).css(\"width\", \"0%\");\r\n                    }\r\n                });\r\n            });\r\n    \r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        formContainer.on(\"form-request\", function () {\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n        });\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                Tivoli.CircleLoader.loadFinish(loader, null);\r\n                button.hide();\r\n                $('.js-message-box').html($(\".js-message-box--success\").html());\r\n            } else {\r\n                button.hide();\r\n                $('.js-message-box').html(data.Error);\r\n                $('.js-message-box').addClass(\"error error--no-border\");\r\n            }\r\n        });\r\n\r\n        formContainer.on(\"form-error\", function (e) {\r\n            button.hide();\r\n            $('.js-message-box').html(data.Error);\r\n        });\r\n    }\r\n\r\n    function userReviewSetStars(star)\r\n    {\r\n        $(\".user-reviews--rate .star\").each(function (index, value) {\r\n            if ((index + 1) <= star) {\r\n                $(this).css(\"width\", \"100%\");\r\n            } else {\r\n                $(this).css(\"width\", \"0%\");\r\n            }\r\n        });\r\n\r\n        $('input#RatingValue').val(star);\r\n    }\r\n\r\n\r\n    $(document).on(\"ready\", function () {\r\n        var sliderHeight = \"200px\";\r\n        $(\".text-fade\").css(\"height\", sliderHeight);\r\n        $(\".text-fade\").css(\"position\", \"relative\");\r\n\r\n        fadeButton();\r\n\r\n        castOverlay();\r\n\r\n        userReviewStarWidth();\r\n\r\n        init();\r\n\r\n        if (GetURLParameter('stars') != null) {\r\n            userReviewSetStars(GetURLParameter('stars'));\r\n\r\n            $('.rate').addClass('rate--open');\r\n            $('.rate-dimmed').addClass('rate-dimmed--open');\r\n\r\n            $('.rate-close').on(\"click\", function() {\r\n                $('.rate').removeClass('rate--open');\r\n                $('.rate-dimmed').removeClass('rate-dimmed--open');\r\n            });\r\n\r\n            $('.rate-dimmed').on(\"click\", function () {\r\n                $('.rate').removeClass('rate--open');\r\n                $('.rate-dimmed').removeClass('rate-dimmed--open');\r\n            });\r\n        }\r\n    });\r\n\r\n}());\r\n","var Tivoli = Tivoli || {};\r\n\r\nTivoli.simpletabs = (function () {\r\n    \"use strict\";\r\n\r\n\r\n    \r\n\tfunction init() {\r\n\r\n\t    //trigger($('.tab-special'));\r\n\t  \r\n\t}\r\n\r\n\tfunction trigger($tabTrigger) {\r\n\t    $tabTrigger.on('click', function (e) {\r\n\t        $('.tab-special.js-selected').removeClass('js-selected');\r\n\t        $(this).addClass('js-selected');\r\n\r\n\t        $('.promotion--renewpass').hide();\r\n\r\n\t        var dataId = $(this).data('id');\r\n\r\n\t        $('[data-id=\"'+ dataId +'\"]').show();\r\n\t    });\r\n\t}\r\n\r\n\r\n\t$(document).ready(function() {\r\n\t\tinit();\r\n\t});\r\n\r\n    return {\r\n        init: init\r\n    };\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.tekForm = (function () {\r\n\r\n    function handleEnter(formContainer) {\r\n        formContainer.find(\"input\").keypress(function (e) {\r\n            if (e.which === 13) {\r\n                e.preventDefault();\r\n                if (formContainer.valid()) {\r\n                    formContainer.submit();\r\n                }\r\n                return false;\r\n            }\r\n        });\r\n    }\r\n\r\n    function handleBtbLogin(formContainer) {\r\n        if (formContainer.length === 0) {\r\n            return;\r\n        }\r\n\r\n        handleEnter(formContainer);\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                if (data.RedirectUrl) {\r\n                    window.location.href = data.RedirectUrl;\r\n                } else {\r\n                    location.reload();\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    function handleTekLogin(formContainer) {\r\n        if (formContainer.length === 0) {\r\n            return;\r\n        }\r\n\r\n        handleEnter(formContainer);\r\n\r\n        formContainer.on(\"form-success\", function (e, data) {\r\n            if (data.Success) {\r\n                if (data.RedirectUrl) {\r\n                    window.location.href = data.RedirectUrl;\r\n                } else {\r\n                    location.reload();\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    function init() {\r\n        handleBtbLogin($('.js-btb-login-form'));\r\n        handleTekLogin($('.js-tek-login-form'));\r\n        handlePassImage();\r\n        handleDeleteImage();\r\n\r\n    }\r\n\r\n    function handlePassImage() {\r\n        var button = $('.js-tek-image-form').find('.js-custom-submit');\r\n        $(button).addClass(\"disabled\");\r\n        var fileInput = $('.js-tek-image-form').find(\"input[type=file]\");\r\n        fileInput.on(\"file-data-changed\", function (e, data) {\r\n            $('.js-tek-image-form').find(\".js-tek-member-image\").get(0).src = data;\r\n            $(button).removeClass(\"disabled\");\r\n            $('.js-tek-delete-image').show();\r\n        });\r\n    }\r\n    function handleDeleteImage() {\r\n        var button = $('.js-tek-image-form').find('.js-custom-submit');\r\n\r\n        $('.js-tek-delete-image').on('click', function(e) {\r\n            e.preventDefault();\r\n            \r\n            $(button).removeClass(\"disabled\");\r\n            var dummySrc = $(this).attr('data-dummy-image');\r\n            $('.js-tek-image-form').find(\".js-tek-member-image\").get(0).src = dummySrc;\r\n            $(this).hide();\r\n        });\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n\r\n    };\r\n})();","Tivoli = Tivoli || {};\r\n\r\nTivoli.tekEventSignUp = (function () {\r\n\r\n    var submitPressed = false;\r\n\r\n    function addVipRequiredCheck() {\r\n        jQuery.validator.addMethod(\"viprequired\", function (value, element) {\r\n            var input = $(element);\r\n            var parent = input.parents(\".js-tek-members\");\r\n            var anySelected = false;\r\n            parent.find(\".js-tek-member\").each(function() {\r\n                if ($(this).prop(\"checked\")) {\r\n                    anySelected = true;\r\n                }\r\n            });\r\n\r\n            return anySelected;\r\n        });\r\n    }\r\n\r\n    function handleSignUpForm(formContainer) {\r\n        if (formContainer == null) {\r\n            return;\r\n        }\r\n\r\n        var maxParticipants = parseInt(formContainer.data(\"max-participants\"));\r\n        if (!maxParticipants) {\r\n            maxParticipants = 0;\r\n        }\r\n\r\n        var warningBox = $(\".js-tek-sign-up-warning\");\r\n        var warning = warningBox.find(\".js-tek-sign-up-warning-text\");\r\n\r\n        var guestContainers = formContainer.find(\".js-guest-input-container\");\r\n        guestContainers.find(\"input\").addClass(\"ignore\");\r\n\r\n        var guestQuantityDdl = formContainer.find(\".js-guest-quantity\");\r\n        var tekMemberCheckboxes = formContainer.find(\".js-tek-member\");\r\n\r\n        function getParticipantsQuantity() {\r\n            var participants = parseInt(guestQuantityDdl.val());\r\n            if (!participants) {\r\n                participants = 0;\r\n            }\r\n            tekMemberCheckboxes.each(function () {\r\n                if ($(this).prop(\"checked\")) {\r\n                    participants++;\r\n                }\r\n            });\r\n            return participants;\r\n        }\r\n\r\n        function checkMaxParticipants() {\r\n            var participants = getParticipantsQuantity();\r\n            if (participants > maxParticipants) {\r\n                var message = warning.data(\"message\");\r\n                message = message.replace(\"{placeholder.participants}\", participants);\r\n                message = message.replace(\"{placeholder.allowedparticipants}\", maxParticipants);\r\n                warning.html(message);\r\n                warningBox.show();\r\n            } else {\r\n                warningBox.hide();\r\n            }\r\n        }\r\n\r\n        tekMemberCheckboxes.on(\"change\", function () {\r\n            checkMaxParticipants();\r\n        });\r\n        \r\n        function onChange() {\r\n            var guestQuantity = parseInt(guestQuantityDdl.val());\r\n            guestContainers.each(function() {\r\n                var guestContainer = $(this);\r\n                var input = guestContainer.find(\"input\");\r\n                var id = parseInt(guestContainer.data(\"index\"));\r\n                if (id < guestQuantity) {\r\n                    guestContainer.show();\r\n                    input.removeClass(\"ignore\");\r\n                } else {\r\n                    guestContainer.hide();\r\n                    input.addClass(\"ignore\");\r\n                }\r\n            });\r\n            checkMaxParticipants();\r\n        }\r\n        \r\n        guestQuantityDdl.on('change', onChange);\r\n        guestQuantityDdl.selectric({\r\n            onChange: onChange\r\n        });\r\n\r\n        onChange();\r\n\r\n        addVipRequiredCheck();\r\n\r\n        var requireVip = !!formContainer.data(\"requirevip\");\r\n        if (requireVip) {\r\n            formContainer.on(\"add-custom-rules\", function (e, data) {\r\n                var rules = data.rules;\r\n                var input = data.input;\r\n                // Only put rules on first input to only get 1 error message\r\n                if (input.hasClass(\"js-tek-member\")) {\r\n                    rules.viprequired = true;\r\n                    rules.messages.viprequired = formContainer.data(\"requirevip-error\");\r\n                }\r\n            });\r\n\r\n            var memberInputs = formContainer.find(\".js-tek-members\");\r\n            memberInputs.on(\"change\", function () {\r\n                if (submitPressed) {\r\n                    formContainer.validate();\r\n                    formContainer.valid();\r\n                }\r\n            });\r\n        }\r\n\r\n        formContainer.find(\".js-custom-submit a\").on(\"click\", function() {\r\n            submitPressed = true;\r\n        });\r\n\r\n        formContainer.on(\"form-request\", function (e, request) {\r\n            // Add guest names to a list in the form\r\n            var guestNames = [];\r\n            var tekMembers = [];\r\n            for (var key in request.Form) {\r\n                if (request.Form.hasOwnProperty(key)) {\r\n                    if (key.indexOf(\"TekGuest\") === 0) {\r\n                        guestNames.push(request.Form[key]);\r\n                        delete request.Form[key];\r\n                    }\r\n                }\r\n            }\r\n            tekMemberCheckboxes.each(function () {\r\n                if ($(this).prop(\"checked\")) {\r\n                    tekMembers.push($(this).parent().attr('data-id'));\r\n                }\r\n            });\r\n            request.Form[\"TekMembers\"] = tekMembers;\r\n            request.Form[\"GuestNames\"] = guestNames;\r\n            request.Form[\"GuestQuantity\"] = $('.js-guest-quantity').val();\r\n        });\r\n    }\r\n\r\n    function handleEdit() {\r\n        $(\".js-tek-signup-edit\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            $(\".js-tek-event-signup-info\").hide();\r\n            $(\".js-tek-event-signup-edit\").show();\r\n        });\r\n    }\r\n\r\n    function init() {\r\n        handleSignUpForm($('.js-event-sign-up-form'));\r\n        handleEdit();\r\n    }\r\n\r\n    $(document).ready(init);\r\n\r\n    return {\r\n\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\n\r\n// Like jQuery serialize array, but checkboxes are included even when not checked, and instead of using the checkbox values on/off use true/false\r\n$.fn.customSerializeArray = function (options) {\r\n    var settings = {\r\n        on: 'true',\r\n        off: 'false'\r\n    };\r\n    if (options) {\r\n        settings = $.extend(settings, options);\r\n    }\r\n    \r\n    function getCheckBoxes(containerOrSelf) {\r\n        return containerOrSelf.find(\"input[type='checkbox']\").andSelf().filter(\"input[type='checkbox']\");\r\n    }\r\n\r\n    getCheckBoxes($(this)).each(function () {\r\n        $(this).attr('value', this.checked ? settings.on : settings.off).attr('checked', true);\r\n    });\r\n\r\n    var s = ($(this).serializeArray());\r\n    \r\n    getCheckBoxes($(this)).each(function() {\r\n        var $this = $(this);\r\n        $this.attr('checked', $this.val() == settings.on ? true : false);\r\n    });\r\n    return s;\r\n};\r\n\r\nTivoli.validation = (function () {\r\n\r\n    // Key = input[type=file]'s id\r\n    var fileData = {};\r\n    var validators = {};\r\n\r\n    function setupValidation(forms) {\r\n        forms.on(\"setup-validation\", function() {\r\n            var validationForm = $(this);\r\n\r\n            var prefix = validationForm.data(\"id-prefix\");\r\n            if (!prefix) {\r\n                prefix = \"\";\r\n            }\r\n\r\n            var button = validationForm.find(\".js-custom-submit a\");\r\n            if (button.length > 0) {\r\n                button.on(\"click\", function (e) {\r\n                    e.preventDefault();\r\n                    if (validationForm.valid()) {\r\n                        validationForm.submit();\r\n                    }\r\n                });\r\n            }\r\n\r\n            var currentItemPath = Tivoli.getCurrentItemPath();\r\n\r\n            var validator = validate(validationForm, prefix, currentItemPath);\r\n            validators[prefix] = validator;\r\n\r\n            addMultiCheckboxRule();\r\n            addEanNumberRule();\r\n            addValidDate3DdlRule();\r\n            addRegExRule(\"regex\");\r\n            addRegExRule(\"customRegex1\");\r\n            addRegExRule(\"customRegex2\");\r\n            addRegExRule(\"customRegex3\");\r\n\r\n            $.each(validationForm.find(\".js-validation-input\"), function () {\r\n                calcRules($(this), prefix, validator, validationForm);\r\n            });\r\n\r\n            // Make it possible to trigger a form save without validation\r\n            validationForm.on(\"form-save\", function() {\r\n                var action = validationForm.attr(\"action\");\r\n                var type = validationForm.attr(\"method\");\r\n                if (!action || !type) {\r\n                    return;\r\n                }\r\n\r\n                var request = createFormRequest(validationForm, currentItemPath);\r\n                \r\n                $.ajax({\r\n                    url: action,\r\n                    traditional: true,\r\n                    data: JSON.stringify(request),\r\n                    dataType: \"json\",\r\n                    contentType: \"application/json; charset=utf-8\",\r\n                    error: function (err) {\r\n                    },\r\n                    success: function (data) {\r\n                    },\r\n                    type: type\r\n                });\r\n            });\r\n        });\r\n    }\r\n    \r\n    function createFormRequest(form, currentItemPath) {\r\n        var request = {};\r\n        var serializedForm = nameValueToObject($(form).find(\".js-validation-input\").not(\".ignore\").customSerializeArray());\r\n        modifyFormCollapsingDatePicker3Ddls(form, serializedForm);\r\n        modifyFormAddFileData(form, serializedForm);\r\n\r\n        request.Form = serializedForm;\r\n        request.CurrentItemUrl = currentItemPath;\r\n\r\n        var formRenderingId = form.find(\".js-form-rendering-id\").val();\r\n        if (formRenderingId) {\r\n            request.FormRenderingId = formRenderingId;\r\n        }\r\n        return request;\r\n    }\r\n    \r\n    function validate(validationForm, prefix, currentItemPath) {\r\n        var validator = validationForm.validate({\r\n            submitHandler: function (form) {\r\n                if (!onForceValidation(validationForm)) {\r\n                    // First time forced - retrigger validation\r\n                    return;\r\n                }\r\n\r\n                var action = validationForm.attr(\"action\");\r\n                var type = validationForm.attr(\"method\");\r\n                if (!action || !type) {\r\n                    return;\r\n                }\r\n\r\n                var request = createFormRequest(validationForm, currentItemPath);\r\n\r\n                if ($(form).data(\"custom-post\")) {\r\n                    $(form).trigger(\"custom-post\");\r\n                } else {\r\n                    $(validationForm).trigger(\"form-request\", [request]);\r\n\r\n                    var timeout = $(form).data(\"timeout\");\r\n                    if (!timeout) {\r\n                        timeout = 60000;\r\n                    }\r\n\r\n                    $.ajax({\r\n                        url: action,\r\n                        traditional: true,\r\n                        timeout: timeout,\r\n                        data: JSON.stringify(request),\r\n                        dataType: \"json\",\r\n                        contentType: \"application/json; charset=utf-8\",\r\n                        error: function (err) {\r\n                            $(validationForm).trigger(\"form-response\", [err]);\r\n                            $(validationForm).trigger(\"form-error\", [err]);\r\n                        },\r\n                        success: function (data) {\r\n                            // Show errors if any\r\n                            var anyErrors = false;\r\n                            for (var errorKey in data.FormErrors) {\r\n                                if (data.FormErrors.hasOwnProperty(errorKey)) {\r\n                                    anyErrors = true;\r\n                                }\r\n                            }\r\n                            modifyFormUncollapseDatePicker3Ddls(validationForm, data.FormErrors);\r\n\r\n                            $(validationForm).trigger(\"form-response\", [data]);\r\n                            if (anyErrors) {\r\n                                $.when($(validationForm).trigger(\"form-error\", [data])).done(function () {\r\n                                    validator.showErrors(data.FormErrors);\r\n                                });\r\n                                $(validationForm).trigger(\"form-error\", [data]);\r\n                            } else {\r\n                                $(validationForm).trigger(\"form-success\", [data]);\r\n                            }\r\n                        },\r\n                        type: type\r\n                    });\r\n                }\r\n            },\r\n            showErrors: function (errorMap, errorList) {\r\n                for (var j = errorList.length - 1; j >= 0; j--) {\r\n                    var errorObj = errorList[j];\r\n                    if (typeof errorObj.element === \"undefined\") {\r\n                        errorList.splice(j, 1);\r\n                    }\r\n                }\r\n\r\n                this.defaultShowErrors();\r\n                for (var i = errorList.length - 1; i >= 0; i--) {\r\n                    var error = errorList[i];\r\n                    var $elem = $(error.element);\r\n\r\n                    // Hide error label when error text is empty\r\n                    if (error.message.length < 1) {\r\n                        $elem.parent().find(\"label.error\").hide();\r\n                    }\r\n\r\n                    showFirstDatePicker3DdlError($elem);\r\n                }\r\n            },\r\n            errorPlacement: function (error, element) {\r\n                error.addClass(\"error-text\");\r\n                element.parents(\".js-input-container\").append(error);\r\n            },\r\n            ignore: \".ignore, .not-required, :hidden:not(.js-validation-input), .js-form-rendering-id\",\r\n            focusInvalid: false,\r\n            invalidHandler: function (form, theValidator) {\r\n                if (!onForceValidation(validationForm)) {\r\n                    // First time forced - retrigger validation\r\n                    return;\r\n                }\r\n\r\n                if (!theValidator.numberOfInvalids())\r\n                    return;\r\n\r\n                // Default = 60\r\n                var headerHeight = 60;\r\n                var header = $(\"#head-section\");\r\n                if (header.length > 0) {\r\n                    headerHeight = header.outerHeight();\r\n                }\r\n\r\n                var errorElem = $(validator.errorList[0].element);\r\n                var selectWrapper = errorElem.parents(\".selectric-js-validation-input\");\r\n                if (selectWrapper.length > 0) {\r\n                    // Error input is a selectric wrapped drop down list. Use wrapper\r\n                    errorElem = selectWrapper;\r\n                }\r\n\r\n                var pos = errorElem.offset().top;\r\n                pos = Math.max(0, pos - headerHeight);\r\n                \r\n                if(!$(validationForm).attr('data-disable-auto-scroll')) {\r\n                    $('html, body').animate({\r\n                        scrollTop: pos\r\n                    }, 100);\r\n                }\r\n\r\n                errorElem.focus();\r\n                $(validationForm).trigger('form-failed');\r\n            }\r\n        });\r\n        return validator;\r\n    }\r\n    \r\n    function onForceValidation(validationForm) {\r\n        // First time retrigger validation, so custom validation methods knows they should show error messages\r\n        var validated = validationForm.data(\"validated\");\r\n        validationForm.data(\"validated\", true);\r\n        if (!validated) {\r\n            setTimeout(function() {\r\n                if (validationForm.valid()) {\r\n                    validationForm.submit();\r\n                }\r\n            }, 1);\r\n        }\r\n\r\n        return validated;\r\n    }\r\n\r\n    function getValidator($form) {\r\n        return validators[$form.data(\"id-prefix\")];\r\n    }\r\n    \r\n    function calcRules($input, formIdPrefix, validator, validationForm) {\r\n        $input.rules(\"remove\");\r\n\r\n        if (!validator) {\r\n            validator = getValidator(validationForm);\r\n        }\r\n\r\n        var rules = {\r\n            messages: {}\r\n        };\r\n\r\n        var isRequired = $input.data(\"required\");\r\n        var requiredMessage = $input.data(\"required-error\");\r\n\r\n        rules.required = isRequired;\r\n        if (!requiredMessage || requiredMessage.trim().length < 1) {\r\n            requiredMessage = \"\";\r\n        }\r\n        rules.messages.required = requiredMessage;\r\n\r\n        var dependsOn = $input.data('depends-on');\r\n        if(dependsOn){\r\n            rules.required = function() {\r\n                    return $(\"#\" + formIdPrefix + dependsOn +\":checked\").length > 0;\r\n            }\r\n        }\r\n\r\n        var error = $input.data(\"error\");\r\n        if (!error) {\r\n            error = \"\";\r\n        }\r\n\r\n        var sameAs = $input.data(\"same-as\");\r\n        if (sameAs) {\r\n            rules.equalTo = \"#\" + formIdPrefix + sameAs;\r\n            var sameAsError = $input.data(\"same-as-error\");\r\n            if (sameAsError) {\r\n                rules.messages.equalTo = sameAsError;\r\n            }\r\n        }\r\n\r\n        var isEmail = $input.data(\"is-email\");\r\n        if (isEmail) {\r\n            rules.email = true;\r\n            rules.messages.email = error;\r\n        }\r\n        \r\n        var isEanNumber = $input.data(\"is-eannumber\");\r\n        if (isEanNumber) {\r\n            rules.eannumber = true;\r\n            rules.messages.eannumber = error;\r\n        }\r\n\r\n        var isMultiCheckBox = $input.data(\"is-multicheckbox\");\r\n        if(isMultiCheckBox) {\r\n            rules.multiCheckbox = true;\r\n            rules.messages.multiCheckbox = \"\";\r\n            $input.change(function(){\r\n                $input.valid();\r\n            });\r\n        }\r\n\r\n        var maxLength = $input.data(\"max-length\");\r\n        if (maxLength) {\r\n            rules.maxlength = maxLength;\r\n            var maxLengthError = $input.data(\"max-length-error\");\r\n            if (maxLengthError) {\r\n                rules.messages.maxlength = maxLengthError;\r\n            }\r\n        }\r\n        \r\n        var minLength = $input.data(\"min-length\");\r\n        if (minLength) {\r\n            rules.minlength = minLength;\r\n            var minLengthError = $input.data(\"min-length-error\");\r\n            if (minLengthError) {\r\n                rules.messages.minlength = minLengthError;\r\n            }\r\n        }\r\n\r\n        //Three custom regex\r\n        var customContains = $input.data(\"custom-validation\")\r\n        if(customContains)\r\n        {\r\n            rules.customRegex1 = customContains;\r\n            rules.messages.customRegex1 = $input.data(\"custom-validation-error\")\r\n        }\r\n        \r\n        var customContains3 = $input.data(\"custom-validation2\");\r\n        if(customContains3)\r\n        {\r\n            rules.customRegex2 = customContains3;\r\n            rules.messages.customRegex2 = $input.data(\"custom-validation2-error\")\r\n        }\r\n        \r\n        var customContains3 = $input.data(\"custom-validation3\");\r\n        if(customContains3)\r\n        {\r\n            rules.customRegex3 = customContains3;\r\n            rules.messages.customRegex3 = $input.data(\"custom-validation3-error\")\r\n        }\r\n        \r\n\r\n        // Handling of date picker in 3 drop down lists\r\n        var regexStr = $input.data(\"regex\");\r\n        if (regexStr) {\r\n            rules.regex = regexStr;\r\n            rules.messages.regex = $input.data(\"regex-error\");\r\n        }\r\n\r\n        // Handling of date picker in 3 drop down lists\r\n        if ($input.data(\"is-date-threeddl\")) {\r\n            $input.on(\"change\", function () {\r\n                showFirstDatePicker3DdlError($(this));\r\n            });\r\n            rules.date3ddl = true;\r\n            rules.messages.date3ddl = error;\r\n        }\r\n\r\n        if ($input.attr(\"type\") === \"file\") {\r\n            if ($input.data(\"fallback-enabled\")) {\r\n                window.mOxie.Env.swf_url = \"/js/tivoli-responsive/vendor/ie9/Moxie.swf\";\r\n                window.FileReader = mOxie.FileReader;\r\n                var ip = new mOxie.FileInput({\r\n                    browse_button: \"fallback\" + $input.attr(\"id\")\r\n                });\r\n                ip.onchange = function (e) {\r\n                    var file = e.target.files[0];\r\n\r\n                    handleFileChange($input, file, function(reader, ev) {\r\n                        return ev.target.result;\r\n                    }, error, validator);\r\n                };\r\n                ip.init();\r\n            } else {\r\n                $input.on(\"change\", function () {\r\n                    var file = $input.get(0).files[0];\r\n\r\n                    handleFileChange($input, file, function (reader, ev) {\r\n                        return reader.result;\r\n                    }, error, validator);\r\n                });\r\n            }\r\n        }\r\n\r\n        validationForm.trigger(\"add-custom-rules\", {\r\n            rules: rules,\r\n            input: $input\r\n        });\r\n\r\n        $input.rules(\"add\", rules);\r\n    }\r\n\r\n    function nameValueToObject(nameValueArray) {\r\n        var obj = {};\r\n        for (var i = 0; i < nameValueArray.length; i++) {\r\n            var nv = nameValueArray[i];\r\n            obj[nv.name] = nv.value;\r\n        }\r\n        return obj;\r\n    }\r\n\r\n    function handleMultiCheckBoxErrorMessage(success) {\r\n        var errorMsg = $(\".js-multicheckbox-error\");\r\n        if(success) {\r\n            errorMsg.hide();\r\n            $('[data-is-multicheckbox=\"true\"]').removeClass('error');\r\n        } else {\r\n            errorMsg.css('display', 'inline-block');\r\n            $('[data-is-multicheckbox=\"true\"]').addClass('error');\r\n        }\r\n\r\n    }\r\n\r\n    /*********************** FILE INPUT ****************************************************/\r\n    function modifyFormAddFileData($form, form) {\r\n        var fileInputs = $form.find(\".js-validation-input[type=file]\");\r\n        $.each(fileInputs, function() {\r\n            var id = $(this).attr(\"id\");\r\n            var name = $(this).attr(\"name\");\r\n            if (fileData[id]) {\r\n                form[name] = fileData[id];\r\n            }\r\n        });\r\n    }\r\n\r\n    \r\n\r\n    function handleFileChange($input, file, getResult, sizeError, validator) {\r\n        if (!file) {\r\n            return;\r\n        }\r\n\r\n        var legalFileExtension = true;\r\n        var accept = $input.attr(\"accept\");\r\n        if (accept) {\r\n            var extension = file.name.split('.').pop().toLowerCase();\r\n            accept = accept.replace(/\\./g, \"\").toLowerCase();\r\n            var types = accept.split(\",\");\r\n            legalFileExtension = types.indexOf(extension) > -1;\r\n        }\r\n\r\n        if (legalFileExtension) {\r\n            if (!$input.data(\"max-file-size\") || parseInt($input.data(\"max-file-size\"), 10) >= Math.round(file.size)) {\r\n                var reader = new FileReader();\r\n                reader.onloadend = function (e) {\r\n                    var result = getResult(reader, e);\r\n                    $input.trigger(\"file-data-changed\", [result, file]);\r\n                    fileData[$input.attr(\"id\")] = result;\r\n                };\r\n                reader.readAsDataURL(file);\r\n                hideErrorMessage($input);\r\n            } else {\r\n                // File too large\r\n                var sizeErr = {};\r\n                sizeErr[$input.attr(\"name\")] = sizeError;\r\n                validator.showErrors(sizeErr);\r\n            }\r\n        } else {\r\n            // Wrong type\r\n            var wrongFileTypeError = $input.data(\"file-type-error\");\r\n            if (!wrongFileTypeError) {\r\n                wrongFileTypeError = \"\";\r\n            }\r\n            var err = {};\r\n            err[$input.attr(\"name\")] = wrongFileTypeError;\r\n            validator.showErrors(err);\r\n        }\r\n    }\r\n    \r\n    function hideErrorMessage($input) {\r\n        $input.parents(\".js-input-container\").find(\"label.error\").hide();\r\n    }\r\n\r\n    /*********************** DATE PICKER 3DDL***********************************************/\r\n    function modifyFormCollapsingDatePicker3Ddls($form, form) {\r\n        $.each($form.find(\".js-date-3ddl\"), function() {\r\n            var $elem = $(this);\r\n            var id = $elem.data(\"id\");\r\n            var month = form[$elem.data(\"id-month\")];\r\n            var day = form[$elem.data(\"id-day\")];\r\n            var year = form[$elem.data(\"id-year\")];\r\n\r\n            delete form[$elem.data(\"id-month\")];\r\n            delete form[$elem.data(\"id-day\")];\r\n            delete form[$elem.data(\"id-year\")];\r\n\r\n            if (month && day && year) {\r\n                var date = getDate(month, day, year);\r\n                if (date) {\r\n                    form[id] = Tivoli.dateUtil.formatLocalDate(date);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    \r\n    function modifyFormUncollapseDatePicker3Ddls($form, form) {\r\n        $.each($form.find(\".js-date-3ddl\"), function () {\r\n            var $elem = $(this);\r\n            var id = $elem.data(\"id\");\r\n            var error = form[id];\r\n\r\n            if (error) {\r\n                delete form[id];\r\n\r\n                form[$elem.data(\"id-month\")] = error;\r\n            }\r\n        });\r\n    }\r\n\r\n    function showFirstDatePicker3DdlError($elem) {\r\n        var date3DdlContainer = $elem.parents(\".js-date-3ddl\");\r\n        if (date3DdlContainer.length > 0) {\r\n            var labels = date3DdlContainer.find(\"label.error\");\r\n            \r\n            // Only show first error in date 3ddl\r\n            var firstAlreadyFound = false;\r\n            for (var j = 0; j < labels.length; j++) {\r\n                var label = $(labels.get(j));\r\n                \r\n                if ($(\"#\" + label.attr(\"for\")).hasClass(\"valid\")) {\r\n                    continue;\r\n                }\r\n\r\n                if (!firstAlreadyFound) {\r\n                    label.show();\r\n                    firstAlreadyFound = true;\r\n                } else {\r\n                    label.hide();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function addValidDate3DdlRule() {\r\n        jQuery.validator.addMethod(\"date3ddl\", function (value, element) {\r\n            var form = $(element).parents(\"form\");\r\n            if (form.length > 0 && !form.data(\"validated\")) {\r\n                // Do not show values before being validated\r\n                return true;\r\n            }\r\n\r\n            var $elem = $(element);\r\n            var container = $elem.parents(\".js-date-3ddl\");\r\n            var month = container.find(\".js-date-month\").val();\r\n            var day = container.find(\".js-date-day\").val();\r\n            var year = container.find(\".js-date-year\").val();\r\n            if ($elem.data(\"required\")) {\r\n                if (!month || !day || !year) {\r\n                    // Required error takes precedence\r\n                    return true;\r\n                }\r\n            } else {\r\n                if (!month && !day && !year) {\r\n                    // If not required and no input, do not check for format valid\r\n                    return true;\r\n                }\r\n            }\r\n            return getDate(month, day, year) != null;\r\n        });\r\n    }\r\n    \r\n    function getDate(month, day, year) {\r\n        var date = new Date(year, month - 1, day, 0, 0, 0, 0);\r\n        if (Object.prototype.toString.call(date) === \"[object Date]\" && !isNaN(date.getTime())) {\r\n            // Make sure date is same\r\n            if (date.getFullYear() == year && (date.getMonth() + 1) == month && date.getDate() == day) {\r\n                return date;\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n    /**************************************************************************/\r\n    \r\n    function addEanNumberRule() {\r\n        jQuery.validator.addMethod(\"eannumber\", function (value, element) {\r\n            var v = value;\r\n            if (v.length < 1) {\r\n                return true;\r\n            }\r\n            var values = v.split(' ');\r\n            if (values.length != 1) {\r\n                return false;\r\n            }\r\n            var valueAsInteger = parseInt(values[0]);\r\n            if (valueAsInteger == \"NaN\") {\r\n                return false;\r\n            }\r\n\r\n            if (v.length != 13) {\r\n                return false;\r\n            }\r\n\r\n            var cs = 0;\r\n            for (var i = 0; i < 12; i++) {\r\n                var digit = v.charAt(i);\r\n                if (digit < '0' || digit > '9') {\r\n                    return false;\r\n                }\r\n\r\n                digit = parseInt(digit);\r\n\r\n                if ((i % 2) != 0)\r\n                    cs = cs + digit * 3;\r\n                else\r\n                    cs = cs + digit * 1;\r\n            }\r\n\r\n            cs = (10 - (cs % 10)) % 10;\r\n            return v.charAt(12) == cs;\r\n        });\r\n    }\r\n\r\n     function addMultiCheckboxRule() {\r\n        jQuery.validator.addMethod(\"multiCheckbox\", function (value, element) {\r\n            if($(element).parents('.js-ignore-validation').length > 0) {\r\n                return true;\r\n            }\r\n\r\n            var checked = $('[data-is-multicheckbox=\"true\"]:checked').length != 0;\r\n            handleMultiCheckBoxErrorMessage(checked);\r\n            return checked;\r\n        });\r\n    }\r\n\r\n    function addRegExRule(ruleName) {\r\n        jQuery.validator.addMethod(\r\n            ruleName,\r\n            function (value, element, regexp) {\r\n                var re = new RegExp(regexp, \"i\");\r\n                return this.optional(element) || re.test(value, \"g\");\r\n            },\r\n            \"Wrong input format\"\r\n        );\r\n    }\r\n    \r\n    function forceInit(forms) {\r\n        if(!forms) {\r\n            forms = $(\".js-validation\"); \r\n        }\r\n        \r\n        setupValidation(forms);\r\n        setTimeout(function () {\r\n            forms.trigger(\"pre-setup-validation\");\r\n            forms.trigger(\"setup-validation\");\r\n        }, 1);\r\n    }\r\n\r\n    $(document).ready(function() {\r\n        forceInit();\r\n    });\r\n\r\n    return {\r\n        calcRules: calcRules,\r\n        getValidator: getValidator,\r\n        validate: validate,\r\n        createFormRequest: createFormRequest,\r\n        forceInit: forceInit\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.VertigoGifCollect = (function () {\r\n    var vertigoGifContainer = $(\".js-vertigo-gif-collect-form\");\r\n\r\n\r\n    var smallBreak = Tivoli.settings.width.small;\r\n\r\n    function init() {\r\n        if (vertigoGifContainer.length === 0) {\r\n            return;\r\n        }\r\n\r\n        $.each($('.js-vertigo-gif-collect-form'), function () {\r\n            getImageByCode($(this));\r\n        });       \r\n\r\n        $('.js-vertigo-share').on('click', function() {\r\n            var imgCode = $('.js-vertigo-image img').attr('data-gif-id');\r\n            keepImage(imgCode);\r\n\r\n        });\r\n    }\r\n\r\n    function keepImage (imgCode) {\r\n         $.ajax({\r\n                url: '/Features/UserMedia/ShareMediaFile?externalCode='+imgCode,\r\n                type: 'GET',\r\n                contentType: 'application/json; charset=utf-8',\r\n                error: function () {\r\n                },\r\n                success: function (data) {\r\n                }\r\n            });\r\n    }\r\n\r\n    function loadImage(imgSource, imgCode, videoSource) {\r\n        var img = $(\"<img />\").attr('src', imgSource).attr('data-gif-id', imgCode)\r\n            .on('load', function () {\r\n                if (!this.complete || typeof this.naturalWidth == \"undefined\" || this.naturalWidth == 0) {\r\n                } else {\r\n                    $('.js-vertigo-gif-image-container').show();\r\n                    $(\".js-vertigo-image\").append(img);\r\n                    $(\".js-vertigo-gif-collect-image-container\").hide();\r\n                    $('.js-vertigo-gif-download').attr('href', imgSource);\r\n                    $('.js-share-facebook').attr('data-share-link', imgSource);\r\n                    $('.js-share-twitter').attr('data-share-link', imgSource);\r\n                }\r\n            });\r\n    }\r\n\r\n    function getImageByCode(formContainer) {\r\n\r\n        var outerContainer = formContainer.parents(\".js-vertigo-gif-collect-image-container\");\r\n\r\n        var button = formContainer.find(\".js-custom-submit a\");\r\n        var loader = button.find(\".js-circle-loader\");\r\n\r\n        $('.js-vertigo-gif-collect-form').on('submit', function (e) {\r\n            e.preventDefault();\r\n            e.stopImmediatePropagation();\r\n            var imageCode = $('#vertigoGifCollectFormImageCode').val();\r\n            var errorCode = $('#vertigoGifCollectFormImageCode').data('error');\r\n            var imageUrl = '/Features/UserMedia/GetMediaUrl?id=' + imageCode;\r\n            Tivoli.CircleLoader.loadInitial(loader, null);\r\n            $.ajax({\r\n                url: imageUrl,\r\n                type: 'GET',\r\n                contentType: 'application/json; charset=utf-8',\r\n                error: function () {\r\n                    Tivoli.CircleLoader.reset(loader);\r\n                    Tivoli.ButtonMessage.removeMessage(button);\r\n                    Tivoli.ButtonMessage.showErrorMessage(button, errorCode);\r\n                },\r\n                success: function (data) {\r\n                    var imgSource = \"\";\r\n                    var videoSource = \"\";\r\n                    var externalCode = \"\";\r\n\r\n                    if (data[0].Url && data[1].Url) {\r\n                        externalCode = data[0].ExternalCode;\r\n\r\n                        for (var key in data) {\r\n                            if(data[key].ContentType == \"image/gif\")\r\n                            {\r\n                                imgSource = data[key].Url;\r\n                            }\r\n\r\n                            if(data[key].ContentType == \"video/mp4\")\r\n                            {\r\n                                videoSource = data[key].Url;\r\n                            }\r\n                        }\r\n                        loadImage(data[0].Url, externalCode, data[1].Url);\r\n                    }\r\n                    else {\r\n                        Tivoli.CircleLoader.reset(loader);\r\n                        Tivoli.ButtonMessage.removeMessage(button);\r\n                        Tivoli.ButtonMessage.showErrorMessage(button, errorCode);\r\n                    }\r\n\r\n                },\r\n\r\n            });\r\n        });\r\n    };\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.VertigoGif = (function () {\r\n    var images = $(\".vertigo-gif-image-stack img\"),\r\n        vertigoGifContainer = $(\".vertigo-gif-image-stack\"),\r\n        startImage = \"\";\r\n\r\n\r\n    var smallBreak = Tivoli.settings.width.small;\r\n\r\n    function init() {\r\n\r\n        if (vertigoGifContainer.length === 0) {\r\n            return;\r\n        }\r\n\r\n        initStack();\r\n        getLatesImages();\r\n    }\r\n\r\n    function getLatesImages() {\r\n        $.ajax({\r\n            url: '/Features/UserMedia/GetLatestMediaFiles?campaignId=vertigo&contentType=image/gif&count=5',\r\n            type: 'GET',\r\n            contentType: 'application/json; charset=utf-8',\r\n            error: function () {\r\n                enableErorrMsg();\r\n            },\r\n            success: function (data) {\r\n                if(data == null || data.length == 0) {\r\n                    enableErorrMsg();\r\n                }\r\n                loadNewImages(data);\r\n            },\r\n        });\r\n    }\r\n\r\n    function loadNewImages(data) {\r\n        for (var key in data) {\r\n            if (data.hasOwnProperty(key)) {\r\n                var img = $(\"<img />\").attr('src', data[key].Url)\r\n                $(\".vertigo-gif-image-stack\").append(img);\r\n            }\r\n        }\r\n    }\r\n\r\n    function initStack() {\r\n        $(\".vertigo-gif-image-stack__next--js\").on(\"click\", function () {\r\n            if (!TweenMax.isTweening($('.vertigo-gif-image-stack img:nth-child(4)'))) {\r\n                swipeStack(true);\r\n            }\r\n        });\r\n\r\n        $(\".vertigo-gif-image-stack__prev--js\").on(\"click\", function () {\r\n            if (!TweenMax.isTweening($('.vertigo-gif-image-stack img:nth-child(4)'))) {\r\n                swipeStack(false);\r\n            }\r\n        });\r\n\r\n        var ts;\r\n        $(\".vertigo-gif-image-stack\").on(\"touchstart\", function (e) {\r\n            ts = e.originalEvent.touches[0].clientX;\r\n        });\r\n\r\n        $(\".vertigo-gif-image-stack\").on(\"touchend\", function (e) {\r\n            var te = e.originalEvent.changedTouches[0].clientX;\r\n            if (ts > te + 5) {\r\n                swipeStack(true);\r\n            } else if (ts < te - 5) {\r\n                swipeStack(false);\r\n            }\r\n        });\r\n    }\r\n\r\n    function swipeStack(swipeRight) {\r\n\r\n        if (Tivoli.vars.windowWidth < Tivoli.settings.width.small) {\r\n            var tl = new TimelineLite();\r\n            var imageWidth = $('.vertigo-gif-image-stack img:first-child').width();\r\n\r\n            var direction = 2000;\r\n            if (swipeRight) {\r\n                direction = -2000;\r\n            }\r\n\r\n            TweenMax.to($('.vertigo-gif-image-stack img:first-child'), 0.5, {\r\n                x: direction, ease: Quad.easeInOut, onComplete: function () {\r\n                    TweenMax.to($('.vertigo-gif-image-stack img:nth-child(2)'), 1, { y: 0, scale: 1, ease: Quad.easeInOut });\r\n\r\n                    TweenMax.to($('.vertigo-gif-image-stack img:nth-child(3)'), 1, { y: -40, scale: 0.9, ease: Quad.easeInOut });\r\n                    TweenMax.to($('.vertigo-gif-image-stack img:nth-child(4)'), 1, {\r\n                        y: -80, scale: 0.8, ease: Quad.easeInOut, onComplete: function () {\r\n\r\n                            var element = $('.vertigo-gif-image-stack img:first-child');\r\n                            var imgSource = $(element).attr('src');\r\n                            element.remove();\r\n                            TweenMax.set($('.vertigo-gif-image-stack img:first-child'), { x: 0, y: 0 });\r\n                            $(\".vertigo-gif-image-stack img\").last().after(\"<img src='\" + imgSource + \"' />\");\r\n                            TweenMax.to($('.vertigo-gif-image-stack img:nth-child(4)'), 1, { ease: Quad.easeInOut });\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            if (startImage == \"\") {\r\n                startImage = $('.vertigo-gif-image-stack img:nth-child(1)');\r\n            }\r\n            var image1 = startImage,\r\n                image2 = getNextImage(image1),\r\n                image3 = getNextImage(image2),\r\n                image4 = getNextImage(image3),\r\n                image5 = getNextImage(image4);\r\n\r\n            if (swipeRight) {\r\n                TweenMax.to($(image1), 1, { x: -350, scale: 0.7, zIndex: 6, ease: Quad.easeInOut });\r\n                TweenMax.to($(image2), 1, { x: -50, scale: 0.7, zIndex: 8, ease: Quad.easeInOut });\r\n                TweenMax.to($(image3), 1, { x: -100, scale: 0.8, zIndex: 9, ease: Quad.easeInOut });\r\n\r\n                TweenMax.to($(image4), 0.3, {\r\n                    x: -800, scale: 1, zIndex: 10, ease: Quad.easeInOut, onComplete: function () {\r\n                        TweenMax.to($(image4), 0.5, { x: -200, scale: 1, ease: Quad.easeInOut });\r\n                    }\r\n                });\r\n                TweenMax.to($(image5), 1, { x: -300, scale: 0.8, zIndex: 7, ease: Quad.easeInOut });\r\n                startImage = image2;\r\n\r\n            } else {\r\n                TweenMax.to($(image5), 1, { x: -50, scale: 0.7, zIndex: 6, ease: Quad.easeInOut });\r\n                TweenMax.to($(image4), 1, { x: -350, scale: 0.7, zIndex: 8, ease: Quad.easeInOut });\r\n                TweenMax.to($(image3), 1, { x: -300, scale: 0.8, zIndex: 9, ease: Quad.easeInOut });\r\n\r\n                TweenMax.to($(image2), 0.3, {\r\n                    x: 800, scale: 1, zIndex: 10, ease: Quad.easeInOut, onComplete: function () {\r\n                        TweenMax.to($(image2), 0.5, { x: -200, scale: 1, ease: Quad.easeInOut });\r\n                    }\r\n                });\r\n                TweenMax.to($(image1), 1, { x: -100, scale: 0.8, zIndex: 7, ease: Quad.easeInOut });\r\n                startImage = image5;\r\n            }\r\n        }\r\n    }\r\n\r\n    function getNextImage(image) {\r\n        if ($(image).next('img').length > 0) {\r\n            return $(image).next();\r\n        }\r\n        return $('.vertigo-gif-image-stack img:first-child');\r\n    }\r\n\r\n    function enableErorrMsg() {\r\n        $('.vertigo-gif-image-section').hide();\r\n        $('.vertigo-gif-image-error').addClass('vertigo-gif-image-error--enabled')\r\n    }\r\n\r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.VertigoKiosk = (function () {\r\n    var vertigoKioskGifContainer = $(\".js-vertigo-gif-kiosk-images\");\r\n\r\n\r\n    function init() {\r\n        if (vertigoKioskGifContainer.length === 0) {\r\n            return;\r\n        }\r\n\r\n      getLatesImages();\r\n    }\r\n\r\n   function getLatesImages() {\r\n       $(\".js-vertigo-gif-kiosk-images\").html('');\r\n        $.ajax({\r\n            url: '/Features/UserMedia/GetLatestMediaFiles?campaignId=vertigo&contentType=image/gif&count=4',\r\n            type: 'GET',\r\n            contentType: 'application/json; charset=utf-8',\r\n            error: function () {\r\n                 enableErrorMsg();\r\n            },\r\n            success: function (data) {\r\n                if(data == null || data.length == 0)\r\n                {\r\n                    enableErrorMsg();\r\n                } else {\r\n                    removeErrorMsg();\r\n                    console.log(data);\r\n                    loadNewImages(data);\r\n                }\r\n                \r\n            },\r\n        });\r\n\r\n         setTimeout(function () {\r\n            getLatesImages();\r\n        }, 15000);\r\n    }\r\n\r\n    function loadNewImages(data) {\r\n        for (var key in data) {\r\n            if (data.hasOwnProperty(key)) {\r\n                var imgContainer = \"<div class='vertigo-gif-kiosk-images__image'><img src=\"+ data[key].Url +\" /><h1>\" + data[key].ExternalCode + \"</h1></div>\";\r\n                $(\".js-vertigo-gif-kiosk-images\").append(imgContainer);\r\n            }\r\n        }\r\n    }\r\n\r\n    function enableErrorMsg() {\r\n        $('.vertigo-gif-kiosk').addClass('vertigo-gif-kiosk--error');\r\n    }\r\n\r\n    function removeErrorMsg() {\r\n        $('.vertigo-gif-kiosk').removeClass('vertigo-gif-kiosk--error');\r\n    }\r\n    \r\n\r\n    $(document).ready(function () {\r\n        init();\r\n    });\r\n\r\n    return {\r\n\r\n    };\r\n})();","var Tivoli = Tivoli || {};\r\nTivoli.Campiagn = Tivoli.Campiagn || {};\r\n\r\nTivoli.Campiagn.Halloween17 = function () {\r\n\r\n\tvar $video;\r\n\tvar inTheHauntedLoop = true;\r\n\tvar $stopButton;\r\n\tvar hauntedLoopTime = 20;\r\n\tvar endLoopTime = 28;\r\n\tvar startOfTheEnd = 22;\r\n\r\n\tfunction init() {\r\n\t\t$video = $(\"#halloween17-video\");\r\n\t\t$stopButton = $(\"[data-stop-haunting-me]\");\r\n\r\n\t\tif ($video.length <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvideoPreload($video, $stopButton);\r\n\t\tstopHauntingMe($stopButton);\r\n\t}\r\n\r\n\tfunction videoPreload($video) {\r\n\r\n\t\thandleHorrorVideo($video);\r\n\t\t$stopButton.removeClass(\"hidden\");\r\n\r\n\t\t// $video.on(\"canplaythrough\", function() {\r\n\t\t// \thandleHorrorVideo($video);\r\n\t\t// \t$stopButton.removeClass(\"hidden\");\r\n\t\t// \treturn;\r\n\t\t// }, false);\r\n\t\t//\r\n\t\t// if ($video[0].readyState > 3) {\r\n\t\t// \thandleHorrorVideo($video);\r\n\t\t// \t$stopButton.removeClass(\"hidden\");\r\n\t\t// }\r\n\t}\r\n\r\n\tfunction stopHauntingMe($button) {\r\n\t\t$button.on(\"click\", function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tinTheHauntedLoop = false;\r\n\t\t\trestartVideoTo($video, startOfTheEnd);\r\n\t\t\t$(this).addClass(\"button--halloween17--active\").attr(\"disabled\");\r\n\t\t\thandleContentEffect($button);\r\n\r\n\t\t\t// END RE-TARGETING THING\r\n\t\t\tif (window.adf) {\r\n\t\t\t\twindow.adf.ClickTrack('', 669367, 'Unfollow knap - Børnehjemmet', {})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction handleContentEffect($button) {\r\n\t\tsetTimeout(function() {\r\n\t\t\t$button.addClass(\"button--halloween17--done\");\r\n\t\t\t$button.closest(\"div\").css({\"opacity\": 0.3});\r\n\r\n\t\t\t$video[0].ontimeupdate = function() {\r\n\t\t\t\tvar currentVideoTime = $video[0].currentTime;\r\n\t\t\t\tif (currentVideoTime >= $video[0].duration - 3) {\r\n\t\t\t\t\t$button.closest(\"div\").addClass(\"inverted\").css({\"opacity\": 1});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, 3000)\r\n\t}\r\n\r\n\tfunction handleHorrorVideo($video) {\r\n\r\n\t\t$video.removeClass(\"video-not-ready\");\r\n\t\t$video[0].play();\r\n\r\n\t\t$video[0].ontimeupdate = function () {\r\n\t\t\tvar currentVideoTime = $video[0].currentTime;\r\n\r\n\t\t\tif (inTheHauntedLoop) {\r\n\t\t\t\tif (currentVideoTime >= hauntedLoopTime) {\r\n\t\t\t\t\trestartVideoTo($video, 0);\r\n\t\t\t\t}\r\n\t\t\t} else if (currentVideoTime >= $video[0].duration) {\r\n\t\t\t\t\trestartVideoTo($video, endLoopTime);\r\n\t\t\t\t\t$video[0].play();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restartVideoTo($video, time) {\r\n\t\t$video[0].currentTime = time;\r\n\t}\r\n\r\n\tfunction checkCurrentTime($video) {\r\n\t\t\treturn $video[0].currentTime;\r\n\t}\r\n\r\n\t$(document).ready(function () {\r\n\t\tinit();\r\n\t});\r\n\r\n}();"],"sourceRoot":"/source/"}