{"version":3,"sources":["mshop-core-desktop.js"],"names":["XmxCountdown","$countdownElement","_deadline","_intervalHandle","$_countdown","$_days","$_hours","$_minutes","$_seconds","tick","daysRemaining","hoursRemaining","minutesRemaining","currentUnixTimestamp","XmxApp","getCurrentTimestamp","secondsRemaining","clearInterval","removeClass","addClass","Math","floor","html","jQuery","data","Date","setHours","getTime","setInterval","destroy","XmxNewsletterForm","$element","$_form","$_submitButton","$_emailInput","$_hashInput","$_errorMessage","_isSubmitting","onFormSubmit","event","email","validationMessage","val","toLowerCase","trim","validateEmailAddress","generateHashCode","stopPropagation","preventDefault","on","prop","XmxToaster","$_toastArea","$_toast","$_toastCountdownDigit","$_toastCircleCountdown","$_powerstep","_sessionPageviews","_sessionStartAt","_lastToastDisplayedAt","_pageLoadedAt","_toasts","_tickTimerHandle","_toastCountdownTimerHandle","_hasActiveToast","_activeToastSecondsLeft","_isActiveToastExpiring","_isActiveToastAlerting","_activeToastIndex","startTicking","isBrowserTabFocused","XmxMobileHeader","isOpen","XmxMobileSearch","XmxDesktopSearch","XmxCategory","isFilterDrawedOpen","hasClass","toastIndex","canShowToastNow","showToast","now","clearTimeout","session","displays","lastDisplayedAt","saveToastSessionData","setSessionStorageString","ga","id","name","eventCategory","eventAction","eventLabel","nonInteraction","toast","attr","link","onActiveToastClick","image","$toastImageFrame","appendTo","$toastImage","$toastContent","$toastTitle","title","$toastDescription","description","$toastCountdown","$toastCountdownLeft","$toastCountdownRight","badge","$badge","offset","renderActiveToast","onActiveToastTimerTick","clicked","setTimeout","remove","actionExecuted","eventTrackTimeoutHandle","window","location","hitCallback","maximumDisplayCount","splice","length","getToastSessionData","toastId","sessionData","getSessionStorageJSON","setSessionStorageJSON","canEverShowToast","minimumPageviews","toTime","isDesktop","showOnDesktop","showOnMobile","includedAttributeSetIds","findAttributeSetIdInShoppingCart","excludedAttributeSetIds","attributeSetIds","foundAnyAttributeSetId","attributeSetIndex","attributeSetId","itemIndex","naeShoppingCart","items","currentTimestamp","minimumSessionTime","minimumTimeOnPage","fromTime","displayDelay","initialize","supportsSessionStorage","getSessionStorageString","naeAppConfig","toasts","push","boot","scrollOffsetY","scrollEventObservers","isDesktopDevice","isPhoneDevice","scope","this","determineScope","registerSessionStats","onPageLoaded","pageviews","googleClickId","extractHttpGetParameter","isComingFromGoogleAdwords","me","hookScrolling","each","bootVideo","initializeSwiper","runKlaviyoEmailCatcher","runPartnerAdsCatcher","runAdrecordCookieCatcher","$placeholder","videoSource","$container","parent","videoClass","videoType","isPhone","$video","$source","video","addEventListener","muted","play","affiliateId","clickId","ajax","url","dataType","type","paid","pacid","parameter","setCookie","atob","JSON","parse","kl_email","clerkVisitorId","getLocalStorageString","substr","clerkApiKey","postData","key","visitor","countCharacter","string","character","count","i","input","checksum","charCodeAt","value","parts","i18n","enterEmail","indexOf","enterAtSymbol","enterOnlyOneAt","split","enterBeforeAt","enterAfterAt","enterValidDomain","test","enterValidEmail","cookieValue","getCookie","setScope","scopeName","registerScrollEventObserver","callback","unregisterScrollEventObserver","emitScrollEvent","scrollY","pageYOffset","document","documentElement","scrollTop","waiting","hasChangedScrollPosition","self","requestAnimationFrame","formatUnit","amount","unit","integer","parseInt","toFixed","toString","decimals","decimalSeparator","formatAmount","currencySymbol","formatPrice","decimalSeparatorPrice","parameterName","parameterParts","parameters","search","substring","decodeURIComponent","sendGoogleAnalyticsEvent","category","action","label","sendGoogleAnalyticsEventWithCallback","callbackFired","callbackTimeoutHandle","fireCallback","elementId","Swiper","containerModifierClass","wrapperClass","slideClass","slideActiveClass","slideVisibleClass","slidePrevClass","slideNextClass","slidesPerView","spaceBetween","simulateTouch","threshold","grabCursor","pagination","el","clickable","bulletClass","bulletActiveClass","navigation","nextEl","prevEl","disabledClass","replaceYImageSource","removeAttr","initializeClerkLastViewedProducts","$carouselContainer","target","$section","show","initializeClerkSwiper","$swiperWrapper","swiperId","supportsMediaQueries","matchMediaQuery","screen","width","visibilityState","hidden","downloadImage","uri","Image","src","matchMedia","supportsHistoryApi","history","replaceState","query","matches","isSupported","error","supportsLocalStorage","supportsClerk","sessionStorage","setItem","getItem","clearSessionStorage","removeItem","stringify","result","setLocalStorageString","localStorage","setLocalStorageJSON","getLocalStorageJSON","cookieParts","cookie","cookieIndex","cookiePart","charAt","removeCookie","lifetime","cookieDomain","expirationDate","setTime","expires","toUTCString","renderRating","rating","$parent","$rating","star","$star","$count","XmxSearch","searchQuery","popularSearchQueries","trendingProducts","suggestedSearchQueries","products","categories","didRestore","categoryAjaxHandle","peekStoredSearchQuery","restoreState","popularData","timestamp","queries","trendingData","fetchSuggestedSearchQueries","Clerk","call","language","clerkLanguage","limit","response","status","fetchCategories","abort","cache","xhr","XMLHttpRequest","success","complete","fetchProducts","attributes","product_data","fetchPopularSearchQueries","fetchTrendingProducts","saveSearchQuery","renderCategories","$list","$category","$categoryText","categoryHtml","empty","categoryIndex","highlightQuery","hide","renderQueries","highlight","icon","$query","$queryText","$queryIcon","queryIndex","encodeURIComponent","phrase","regex","RegExp","replace","str","createProductHtml","productData","$badges","$brand","$desktopSource","$discount","$image","$imageContainer","$imageWrapper","$mobileSource","$name","$newPrice","$oldPrice","$picture","$price","$product","$regularPrice","$shortDescription","$tag","$tags","$text","saving","tagIndex","$basePrice","thumbnail_type","thumbnail_cache_buster","url_key","mshop_primary_badge","mshop_secondary_badge","manufacturer","mshop_subtitle","mshop_type","mshop_card_tags","is_on_sale","price","special_price","round","base_price_string","addClickTracking","renderProducts","addViewAllButton","productIndex","$buttonContainer","$button","$buttonLabel","XmxDesktopHeader","$_headerElement","_lastScrollOffset","_state","handleScroll","scrollPosition","construct","$_body","$_results","$_clearButton","$_queryInput","$_suggestionArea","$_suggestionResults","$_categoryArea","$_categoryResults","$_productArea","$_productResults","$_popularQueryArea","$_popularQueryResults","$_trendingProductArea","$_trendingProductResults","$_desktopHeader","_isSearchOpen","_isChangingState","_query","_lastSubmittedQuery","_selectedSuggestionIndex","onSkrimClick","closeSearch","onClearButtonClick","updateSearchQuery","focus","onQueryInputFocus","retoreState","openSearch","onQueryInputChange","onQueryInputKeyDown","which","keyCode","onQueryInputKeyUp","changeSuggestionSelection","direction","$results","$selectedResult","$","pluginName","defaultOptions","Plugin","element","options","extend","submitButtonElement","popupIsVisible","powerstep","popupBackground","closePopupButton","popup","body","itemImage","itemName","itemPrice","crossSelling","crossSellingItems","cartButton","init","prototype","closePopup","goToShoppingCart","addItemToCart","serialize","hasError","$error","errorMessage","replaceWith","cartSidebar","$regularMobileHeader","cartQuantity","$stickyMobileHeader","google","summary","finalPrice","exclude","clerkExclude","naeProductConfiguration","productConfig","complementaryProducts","productId","clerkProducts","clerkFilter","renderBlocks","redirectTimeoutHandle","fn","naeAddToCart"],"mappings":"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","file":"mshop-core-desktop-4.0.6.min.js","sourcesContent":["/* exported XmxCountdown */\r\nvar XmxCountdown = function($countdownElement)\r\n{\r\n\t/**\r\n\t * Properties\r\n\t */\r\n\tvar _deadline; // Unix Timestamp\r\n var _intervalHandle;\r\n\r\n\t/**\r\n\t * Elements\r\n\t */\r\n var $_countdown;\r\n var $_days;\r\n var $_hours;\r\n var $_minutes;\r\n var $_seconds;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tfunction boot($element)\r\n\t{\r\n // Hook all elements\r\n $_countdown = $element;\r\n $_days = jQuery('.xmx-countdown--days', $_countdown);\r\n $_hours = jQuery('.xmx-countdown--hours', $_countdown);\r\n $_minutes = jQuery('.xmx-countdown--minutes', $_countdown);\r\n $_seconds = jQuery('.xmx-countdown--seconds', $_countdown);\r\n\r\n // Extract the deadline\r\n _deadline = $_countdown.data('deadline');\r\n\r\n // If the deadline is 0, count down until midnight in local timezone\r\n if (_deadline == 0)\r\n {\r\n _deadline = new Date();\r\n _deadline.setHours(23, 59, 59);\r\n _deadline = Math.floor(_deadline.getTime() / 1000); // s\r\n }\r\n\r\n // Figure out whether to start/show the countdown\r\n var totalSecondsRemaining = _deadline - XmxApp.getCurrentTimestamp();\r\n\r\n if (totalSecondsRemaining > 0)\r\n {\r\n start();\r\n }\r\n\t}\r\n\r\n /**\r\n * Starts the countdown\r\n */\r\n function start()\r\n {\r\n // Update it once\r\n tick();\r\n\r\n _intervalHandle = setInterval(tick, 1000);\r\n\r\n $_countdown.addClass('xmx-countdown--started');\r\n }\r\n\r\n /**\r\n * Stops the countdown\r\n */\r\n function stop()\r\n {\r\n clearInterval(_intervalHandle);\r\n\r\n $_countdown.removeClass('xmx-countdown--started');\r\n $_countdown.addClass('xmx-countdown--expired');\r\n }\r\n\r\n /**\r\n * Updates things\r\n */\r\n function tick()\r\n {\r\n var currentUnixTimestamp = XmxApp.getCurrentTimestamp();\r\n var secondsRemaining = _deadline - currentUnixTimestamp;\r\n var daysRemaining;\r\n var hoursRemaining;\r\n var minutesRemaining;\r\n\r\n if (secondsRemaining <= 0)\r\n {\r\n stop();\r\n }\r\n else \r\n {\r\n // Update Days\r\n if (secondsRemaining > 24 * 60 * 60)\r\n {\r\n daysRemaining = Math.floor(secondsRemaining / (24 * 60 * 60));\r\n secondsRemaining -= daysRemaining * (24 * 60 * 60);\r\n\r\n $_countdown.addClass('xmx-countdown--has-days');\r\n }\r\n else \r\n {\r\n daysRemaining = 0;\r\n\r\n $_countdown.removeClass('xmx-countdown--has-days');\r\n }\r\n\r\n // Update Hours\r\n hoursRemaining = Math.floor(secondsRemaining / (60 * 60));\r\n secondsRemaining -= hoursRemaining * (60 * 60);\r\n\r\n // Update Minutes\r\n minutesRemaining = Math.floor(secondsRemaining / 60);\r\n secondsRemaining -= minutesRemaining * 60;\r\n\r\n // Update countdown\r\n $_days.html(daysRemaining < 10 ? '0' + daysRemaining : daysRemaining);\r\n $_hours.html(hoursRemaining < 10 ? '0' + hoursRemaining : hoursRemaining);\r\n $_minutes.html(minutesRemaining < 10 ? '0' + minutesRemaining : minutesRemaining);\r\n $_seconds.html(secondsRemaining < 10 ? '0' + secondsRemaining : secondsRemaining);\r\n }\r\n }\r\n\r\n // Call constructor\r\n boot($countdownElement);\r\n\r\n // Public Interface\r\n return {\r\n destroy: function()\r\n {\r\n clearInterval(_intervalHandle);\r\n }\r\n };\r\n}\n/* exported XmxNewsletterForm */\r\nvar XmxNewsletterForm = function($element) \r\n{\r\n /**\r\n * Properties\r\n */\r\n var _isSubmitting = false;\r\n\r\n /**\r\n * Elements\r\n */\r\n var $_form;\r\n var $_submitButton;\r\n var $_emailInput;\r\n var $_hashInput;\r\n var $_errorMessage;\r\n\r\n /**\r\n * Constructor\r\n */\r\n function boot($form) \r\n {\r\n $_form = $form;\r\n $_form.on('submit', onFormSubmit);\r\n\r\n // Hook UI\r\n $_submitButton = jQuery('button[type=\"submit\"]', $_form);\r\n $_emailInput = jQuery('input[name=\"email\"]', $_form);\r\n $_hashInput = jQuery('input[name=\"date\"]', $_form);\r\n $_errorMessage = jQuery('.xmx-form-field-message', $_form); \r\n\r\n // Enable the form\r\n $_submitButton.prop('disabled', false);\r\n $_emailInput.prop('disabled', false);\r\n }\r\n\r\n /**\r\n * User wants to submit the form\r\n */\r\n function onFormSubmit(event)\r\n {\r\n var email;\r\n var validationMessage;\r\n var cancelSubmission;\r\n\r\n // Do not submit twice\r\n if (_isSubmitting)\r\n {\r\n cancelSubmission = true;\r\n }\r\n else \r\n {\r\n // Check that the email address is not empty\r\n email = $_emailInput.val().toLowerCase().trim();\r\n validationMessage = XmxApp.validateEmailAddress(email);\r\n\r\n if (validationMessage != '')\r\n {\r\n // Validation failed\r\n $_errorMessage.html(validationMessage);\r\n $_errorMessage.addClass('xmx-form-field-message--visible');\r\n\r\n // Do not submit\r\n cancelSubmission = true;\r\n }\r\n else \r\n {\r\n // Fill in the hash\r\n $_hashInput.val(XmxApp.generateHashCode(email));\r\n\r\n // Block clicking twice\r\n _isSubmitting = true;\r\n\r\n // Validation passed\r\n $_errorMessage.removeClass('xmx-form-field-message--visible');\r\n $_errorMessage.html('');\r\n\r\n // Show the ajax loader\r\n $_submitButton.addClass('xmx-button--loading');\r\n\r\n // Fire\r\n cancelSubmission = false;\r\n }\r\n }\r\n\r\n // If required, cancel the event\r\n if (cancelSubmission)\r\n {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n return false;\r\n }\r\n else \r\n {\r\n return true;\r\n }\r\n }\r\n\r\n // Call constructor\r\n boot($element);\r\n\r\n // Public Interface\r\n return {};\r\n}\r\n\n/* global XmxMobileHeader */\r\n/* global XmxMobileSearch */\r\n/* global XmxDesktopSearch */\r\n/* global XmxCategory */\r\n\r\n/* exported XmxToaster */\r\nvar XmxToaster = (function () \r\n{\r\n /**\r\n * Properties\r\n */\r\n var _sessionPageviews = 1;\r\n var _sessionStartAt = 0;\r\n var _lastToastDisplayedAt = 0;\r\n var _pageLoadedAt = 0;\r\n var _toasts = [];\r\n var _tickTimerHandle = null;\r\n var _toastCountdownTimerHandle = null;\r\n var _hasActiveToast = false;\r\n var _activeToastSecondsLeft = 0;\r\n var _isActiveToastExpiring = false;\r\n var _isActiveToastAlerting = false;\r\n var _activeToastIndex = null;\r\n\r\n\t /**\r\n\t * Elements\r\n\t */\r\n var $_toastArea;\r\n var $_toast;\r\n var $_toastCountdownDigit; \r\n var $_toastCircleCountdown;\r\n var $_powerstep;\r\n\r\n /**\r\n * \r\n */\r\n\tfunction boot()\r\n\t{\r\n // If the device does not support session storage, the toaster cannot be used.\r\n // So lets get out of here.\r\n if (!XmxApp.supportsSessionStorage())\r\n {\r\n return;\r\n }\r\n\r\n // Figure out how many pageviews we have had in this session\r\n _sessionPageviews = XmxApp.getSessionStorageString('xmx-session-pageviews');\r\n _sessionStartAt = XmxApp.getSessionStorageString('xmx-session-start');\r\n _lastToastDisplayedAt = XmxApp.getSessionStorageString('xmx-session-toast-displayed-at');\r\n\r\n // Without proper session info, this cannot be used\r\n if (_sessionPageviews === null || _sessionStartAt === null)\r\n {\r\n //console.log('Failed to load session info - toaster wont work');\r\n return;\r\n }\r\n\r\n if (_lastToastDisplayedAt === null)\r\n {\r\n _lastToastDisplayedAt = 0;\r\n }\r\n\r\n // Remember when we have loaded the page (more or less)\r\n _pageLoadedAt = XmxApp.getCurrentTimestamp();\r\n\r\n // Go through all toasts and find the ones, that could potentially be displayed\r\n for (var toastIndex in window.naeAppConfig.toasts)\r\n {\r\n var toast = window.naeAppConfig.toasts[toastIndex];\r\n\r\n // Load session data\r\n toast.session = getToastSessionData(toast.id);\r\n\r\n // Can we show it? If not, we dont need to consider it while ticking\r\n if (canEverShowToast(toast))\r\n {\r\n _toasts.push(toast);\r\n }\r\n else \r\n {\r\n //console.log('Can never show toast, so it is being ignored: ' + toast.title);\r\n }\r\n }\r\n\r\n // If there are no toasts at all, get out of here\r\n if (_toasts.length == 0)\r\n {\r\n //console.log('There are no toasts to show - nothing to do on this page.');\r\n return;\r\n }\r\n\r\n //console.log('Possible toasts:');\r\n //console.log(_toasts);\r\n\r\n // Hook things\r\n $_toastArea = jQuery('#xmx-toast-area');\r\n $_powerstep = jQuery('#powerstep');\r\n\r\n // Tickety tock\r\n startTicking();\r\n }\r\n\r\n /**\r\n * Start the internal ticking\r\n */\r\n function startTicking()\r\n {\r\n //console.log('Starting to tick');\r\n\r\n // We could make this more clever and calculate\r\n // when the next toast is going to be shown and wait\r\n // that time, instead of checking every second. \r\n // But meh\r\n _tickTimerHandle = setInterval(tick, 1000);\r\n }\r\n\r\n /**\r\n * Executed every second\r\n */\r\n function tick()\r\n {\r\n // If we already have an active toast, no need to do anything here\r\n if (_hasActiveToast)\r\n {\r\n return;\r\n }\r\n\r\n //console.log('Ticking...');\r\n\r\n if (!XmxApp.isBrowserTabFocused())\r\n {\r\n //console.log('Browser tab is not visible. Not showing toasts.');\r\n return;\r\n }\r\n\r\n // If the mobile menu is open, dont show toasts\r\n if (typeof XmxMobileHeader !== 'undefined')\r\n {\r\n if (XmxMobileHeader.isOpen())\r\n {\r\n //console.log('Mobile menu is open. Not showing toasts.');\r\n return;\r\n }\r\n }\r\n\r\n // If the mobile search is open, dont show toasts\r\n if (typeof XmxMobileSearch !== 'undefined')\r\n {\r\n if (XmxMobileSearch.isOpen())\r\n {\r\n //console.log('Mobile search is open. Not showing toasts.');\r\n return;\r\n }\r\n }\r\n\r\n // If the desktop search is open, dont show toasts\r\n if (typeof XmxDesktopSearch !== 'undefined')\r\n {\r\n if (XmxDesktopSearch.isOpen())\r\n {\r\n //console.log('Desktop search is open. Not showing toasts.');\r\n return;\r\n }\r\n }\r\n\r\n // If the category filter drawer is open, dont show toasts\r\n if (typeof XmxCategory !== 'undefined')\r\n {\r\n if (XmxCategory.isFilterDrawedOpen())\r\n {\r\n //console.log('Filter drawer is open. Not showing toasts.');\r\n return;\r\n }\r\n }\r\n\r\n if ($_powerstep.hasClass('xmx-powerstep--visible'))\r\n {\r\n //console.log('Powerstep is open. Not showin toasts.');\r\n return;\r\n }\r\n\r\n // Go through all toasts and show the first one possible\r\n for (var toastIndex in _toasts)\r\n {\r\n if (canShowToastNow(toastIndex))\r\n {\r\n showToast(toastIndex);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows a tast\r\n * \r\n * @param {int} toastIndex\r\n */\r\n function showToast(toastIndex)\r\n {\r\n var now = XmxApp.getCurrentTimestamp();\r\n\r\n //console.log('Showing toast ' + _toasts[toastIndex].title); \r\n\r\n // Stop ticking every second checking all toasts\r\n clearTimeout(_tickTimerHandle);\r\n\r\n // Remember this index is active\r\n _activeToastIndex = toastIndex;\r\n _hasActiveToast = true;\r\n _activeToastSecondsLeft = 20;\r\n _isActiveToastExpiring = false;\r\n _isActiveToastAlerting = false;\r\n _lastToastDisplayedAt = now;\r\n\r\n // Remember in session that it was displayed\r\n _toasts[_activeToastIndex].session.displays++;\r\n _toasts[_activeToastIndex].session.lastDisplayedAt = now;\r\n\r\n // Save display in session storage\r\n saveToastSessionData(_activeToastIndex);\r\n\r\n // Save the time we have seen a toast the last time\r\n XmxApp.setSessionStorageString('xmx-session-toast-displayed-at', now);\r\n\r\n // Send Internal Promotion impression to Google Analytics\r\n if (typeof ga != 'undefined')\r\n {\r\n // Tell Google about the impression\r\n ga('ec:addPromo',\r\n {\r\n 'id': 'toast-' + _toasts[_activeToastIndex].id,\r\n 'name': 'Toast: ' + _toasts[_activeToastIndex].name\r\n });\r\n\r\n ga('send', 'event',\r\n {\r\n 'eventCategory': 'Toast',\r\n 'eventAction': 'Displayed Toast',\r\n 'eventLabel': _toasts[_activeToastIndex].name,\r\n 'nonInteraction': true // do not affect bounce rate\r\n });\r\n }\r\n\r\n // Render Toast\r\n renderActiveToast();\r\n\r\n // Start the toast countdown\r\n _toastCountdownTimerHandle = setInterval(onActiveToastTimerTick, 1000);\r\n }\r\n\r\n /**\r\n * The active toast was clicked\r\n * \r\n * @param {event} event \r\n */\r\n function onActiveToastClick(event)\r\n {\r\n //console.log('Active Toast was clicked! Yay!');\r\n\r\n // Stop the toast timer\r\n clearTimeout(_toastCountdownTimerHandle);\r\n\r\n // Remember in session that this toast was clicked\r\n _toasts[_activeToastIndex].session.clicked = true;\r\n\r\n saveToastSessionData(_activeToastIndex);\r\n\r\n // Hide the toast\r\n $_toast.removeClass('xmx-toast--visible');\r\n\r\n // Wait for the toast to move away, then forget about it\r\n setTimeout(function()\r\n {\r\n //console.log('Toast removed');\r\n\r\n $_toast.remove();\r\n }, 500);\r\n\r\n // Send Internal Promotion impression to Google Analytics\r\n if (typeof ga != 'undefined')\r\n {\r\n // If Google Tracking fucks up, still submit it\r\n var actionExecuted = false;\r\n var link = _toasts[_activeToastIndex].link;\r\n\r\n // Make the browser open the link in max. 1 second, if the hit callback of Google analytics is not there\r\n var eventTrackTimeoutHandle = setTimeout\r\n (\r\n function ()\r\n {\r\n if (!actionExecuted)\r\n {\r\n // Prevent executing the action twice\r\n actionExecuted = true;\r\n\r\n // Forward the user\r\n window.location = link;\r\n }\r\n },\r\n 1000\r\n );\r\n\r\n // Tell Google about the click\r\n ga('ec:addPromo',\r\n {\r\n 'id': 'toast-' + _toasts[_activeToastIndex].id,\r\n 'name': 'Toast: ' + _toasts[_activeToastIndex].name\r\n });\r\n\r\n ga('ec:setAction', 'promo_click');\r\n\r\n ga('send', 'event',\r\n {\r\n 'eventCategory': 'Toast',\r\n 'eventAction': 'Clicked Toast',\r\n 'eventLabel': _toasts[_activeToastIndex].name,\r\n 'nonInteraction': false,\r\n 'hitCallback': function()\r\n {\r\n if (!actionExecuted)\r\n {\r\n // Do not execute twice\r\n actionExecuted = true;\r\n\r\n // Cancel timeout\r\n clearTimeout(eventTrackTimeoutHandle);\r\n\r\n // Forward the user\r\n window.location = link;\r\n }\r\n }\r\n });\r\n\r\n // Cancel the event\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Renders the HTML of the active toast\r\n */\r\n function renderActiveToast()\r\n {\r\n var toast = _toasts[_activeToastIndex];\r\n\r\n // Create the toast\r\n $_toast = jQuery('');\r\n $_toast.addClass('xmx-toast');\r\n $_toast.attr('href', toast.link);\r\n $_toast.on('click', onActiveToastClick);\r\n\r\n if (toast.image != '')\r\n {\r\n var $toastImageFrame = jQuery('
');\r\n $toastImageFrame.addClass('xmx-toast-image-frame');\r\n $toastImageFrame.appendTo($_toast);\r\n\r\n var $toastImage = jQuery('');\r\n $toastImage.addClass('xmx-toast-image');\r\n $toastImage.attr('width', 48);\r\n $toastImage.attr('height', 48);\r\n $toastImage.attr('src', toast.image);\r\n $toastImage.appendTo($toastImageFrame);\r\n }\r\n\r\n var $toastContent = jQuery('
');\r\n $toastContent.addClass('xmx-toast-content');\r\n $toastContent.appendTo($_toast);\r\n\r\n var $toastTitle = jQuery('
');\r\n $toastTitle.addClass('xmx-toast-title');\r\n $toastTitle.html(toast.title);\r\n $toastTitle.appendTo($toastContent);\r\n\r\n var $toastDescription = jQuery('
');\r\n $toastDescription.addClass('xmx-toast-description');\r\n $toastDescription.html(toast.description);\r\n $toastDescription.appendTo($toastContent);\r\n\r\n var $toastCountdown = jQuery('
');\r\n $toastCountdown.addClass('xmx-toast-countdown');\r\n $toastCountdown.appendTo($_toast);\r\n\r\n $_toastCircleCountdown = jQuery('
');\r\n $_toastCircleCountdown.addClass('xmx-circle-countdown');\r\n $_toastCircleCountdown.appendTo($toastCountdown);\r\n\r\n var $toastCountdownLeft = jQuery('
');\r\n $toastCountdownLeft.addClass('xmx-circle-countdown-half');\r\n $toastCountdownLeft.addClass('xmx-circle-countdown-half--left');\r\n $toastCountdownLeft.appendTo($_toastCircleCountdown);\r\n\r\n var $toastCountdownRight = jQuery('
');\r\n $toastCountdownRight.addClass('xmx-circle-countdown-half');\r\n $toastCountdownRight.addClass('xmx-circle-countdown-half--right');\r\n $toastCountdownRight.appendTo($_toastCircleCountdown);\r\n\r\n $_toastCountdownDigit = jQuery('
');\r\n $_toastCountdownDigit.addClass('xmx-circle-countdown-digit');\r\n $_toastCountdownDigit.appendTo($_toastCircleCountdown);\r\n\r\n if (toast.image != '')\r\n {\r\n if (toast.badge != '')\r\n {\r\n var $badge = jQuery('
');\r\n $badge.addClass('xmx-badge');\r\n $badge.addClass('xmx-badge--special');\r\n $badge.html(toast.badge);\r\n $badge.appendTo($_toast);\r\n }\r\n }\r\n\r\n //console.log('Toast:');\r\n //console.log($_toast);\r\n\r\n //console.log('Area:');\r\n //console.log($_toastArea);\r\n\r\n // Show the toast\r\n $_toast.appendTo($_toastArea);\r\n $_toast.offset(); // Flush css\r\n\r\n // Move it in\r\n $_toast.addClass('xmx-toast--visible');\r\n\r\n // Start circle countdown\r\n $_toastCircleCountdown.addClass('xmx-circle-countdown--running');\r\n }\r\n\r\n /**\r\n * Invoked every second when a toast is shown\r\n */\r\n function onActiveToastTimerTick()\r\n {\r\n //console.log('Toast Timer ticking...');\r\n\r\n if (!XmxApp.isBrowserTabFocused())\r\n {\r\n //console.log('Browser tab is not visible. Pausing toast countdown.');\r\n return;\r\n }\r\n\r\n _activeToastSecondsLeft--;\r\n\r\n if (_activeToastSecondsLeft < 10)\r\n {\r\n if (!_isActiveToastExpiring)\r\n {\r\n $_toastCircleCountdown.addClass('xmx-circle-countdown--expiring');\r\n _isActiveToastExpiring = true;\r\n\r\n //console.log('Toast expiring soon...');\r\n }\r\n\r\n if (_activeToastSecondsLeft == 5)\r\n {\r\n if (!_isActiveToastAlerting)\r\n {\r\n $_toastCircleCountdown.addClass('xmx-circle-countdown--alert');\r\n _isActiveToastAlerting = true;\r\n\r\n //console.log('Toast is alerting now...');\r\n }\r\n }\r\n\r\n $_toastCountdownDigit.html(_activeToastSecondsLeft);\r\n\r\n if (_activeToastSecondsLeft == 0)\r\n {\r\n onActiveToastTimerExpired();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Invoked when the toast was not clicked within 20 seconds\r\n */\r\n function onActiveToastTimerExpired()\r\n {\r\n //console.log('Toast expired');\r\n \r\n // Stop the countdown\r\n clearInterval(_toastCountdownTimerHandle);\r\n\r\n // Remember when we have had a toast on screen\r\n _lastToastDisplayedAt = XmxApp.getCurrentTimestamp();\r\n\r\n XmxApp.setSessionStorageString('xmx-session-toast-displayed-at', _lastToastDisplayedAt);\r\n\r\n // Hide the toast\r\n $_toast.removeClass('xmx-toast--visible');\r\n\r\n // Wait for the toast to move away, then forget about it\r\n setTimeout(function()\r\n {\r\n //console.log('Toast removed');\r\n\r\n $_toast.remove();\r\n\r\n $_toast = null;\r\n $_toastCircleCountdown = null;\r\n $_toastCountdownDigit = null;\r\n\r\n if (_toasts[_activeToastIndex].session.displays >= _toasts[_activeToastIndex].maximumDisplayCount)\r\n {\r\n //console.log('Remoing toast from stack, as it wont show up anymore.');\r\n _toasts.splice(_activeToastIndex, 1);\r\n }\r\n\r\n _hasActiveToast = false;\r\n _activeToastIndex = null;\r\n \r\n // Start ticking again, if there are toasts\r\n if (_toasts.length > 0)\r\n {\r\n startTicking();\r\n }\r\n //else \r\n //{\r\n // //console.log('Stopped ticking forever, as there are no toasts anymore.');\r\n //}\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Returns the toast session data loaded from session storage\r\n * \r\n * @param {int} toastId\r\n * @return {object}\r\n */\r\n function getToastSessionData(toastId)\r\n {\r\n var sessionData = XmxApp.getSessionStorageJSON('xmx-session-toast-' + toastId);\r\n\r\n if (sessionData === null)\r\n {\r\n sessionData = \r\n {\r\n 'clicked': false,\r\n 'displays': 0,\r\n 'lastDisplayedAt': 0\r\n };\r\n }\r\n\r\n return sessionData;\r\n }\r\n\r\n /**\r\n * Saves the session data of a toast in the session storage of the browser\r\n * \r\n * @param {int} toastIndex\r\n */\r\n function saveToastSessionData(toastIndex)\r\n {\r\n XmxApp.setSessionStorageJSON('xmx-session-toast-' + _toasts[toastIndex].id, _toasts[toastIndex].session);\r\n }\r\n\r\n /**\r\n * Returns true if a toast can ever be displayed\r\n * \r\n * @param {object} toast \r\n * @return {bool}\r\n */\r\n function canEverShowToast(toast)\r\n { \r\n //console.log('Checking toast: ' + toast.title);\r\n\r\n // If the toast was clicked already, never show it again\r\n if (toast.session.clicked)\r\n {\r\n //console.log('Toast was already clicked');\r\n return false;\r\n }\r\n\r\n // If the toast was ignored too many times, never show it again\r\n if (toast.session.displays >= toast.maximumDisplayCount)\r\n {\r\n //console.log('Toast was already displayed ' + toast.session.displays + ' out of ' + toast.maximumDisplayCount + ' times');\r\n return false;\r\n }\r\n\r\n // Must have had a certain number of pageviews to display this toast\r\n if (_sessionPageviews < toast.minimumPageviews)\r\n {\r\n //console.log('Session did not have ' + toast.minimumPageviews + ' pageviews yet');\r\n\r\n return false;\r\n }\r\n\r\n // If the toast only shows until 20:00 and it is 20:15 already,\r\n // this toast will never be displayed\r\n if (toast.toTime > 0)\r\n {\r\n if (_pageLoadedAt > toast.toTime)\r\n {\r\n //console.log('It is too late to display this toast');\r\n\r\n return false;\r\n }\r\n }\r\n\r\n // Should only show on given devices\r\n if (XmxApp.isDesktop())\r\n {\r\n if (!toast.showOnDesktop)\r\n {\r\n //console.log('Toast should not display on desktops');\r\n return false;\r\n }\r\n }\r\n else \r\n {\r\n if (!toast.showOnMobile)\r\n {\r\n //console.log('Toast should not display on mobiles');\r\n return false;\r\n }\r\n }\r\n\r\n // If the shopping cart does not contain any item of an included attribute set,\r\n // get out of here\r\n if (toast.includedAttributeSetIds.length > 0)\r\n {\r\n if (!findAttributeSetIdInShoppingCart(toast.includedAttributeSetIds))\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // If the shopping cart contains any item of an excluded attribute set,\r\n // get out of here\r\n if (toast.excludedAttributeSetIds.length > 0)\r\n {\r\n if (findAttributeSetIdInShoppingCart(toast.excludedAttributeSetIds))\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns true if the shopping cart contains any of a list of attribute set ids\r\n * \r\n * @param {array} attributeSetIds \r\n * @return bool\r\n */\r\n function findAttributeSetIdInShoppingCart(attributeSetIds)\r\n {\r\n var foundAnyAttributeSetId = false;\r\n\r\n for (var attributeSetIndex in attributeSetIds)\r\n {\r\n var attributeSetId = attributeSetIds[attributeSetIndex];\r\n\r\n for (var itemIndex in window.naeShoppingCart.items)\r\n {\r\n var item = window.naeShoppingCart.items[itemIndex];\r\n\r\n if (item.attributeSetId == attributeSetId)\r\n {\r\n foundAnyAttributeSetId = true;\r\n break;\r\n }\r\n }\r\n\r\n if (foundAnyAttributeSetId)\r\n {\r\n break;\r\n }\r\n }\r\n\r\n return foundAnyAttributeSetId;\r\n }\r\n\r\n /**\r\n * Returns true if a toast could be shown\r\n * \r\n * @param {int} toastIndex\r\n * @return bool\r\n */\r\n function canShowToastNow(toastIndex)\r\n {\r\n var toast = _toasts[toastIndex];\r\n var currentTimestamp = XmxApp.getCurrentTimestamp();\r\n\r\n // 30 seconds must pass between Toasts displays\r\n if (currentTimestamp - _lastToastDisplayedAt < 30)\r\n {\r\n return false;\r\n }\r\n\r\n // If the toast was clicked already, never show it again\r\n if (toast.session.clicked)\r\n {\r\n return false;\r\n }\r\n\r\n // Session Time\r\n if (toast.minimumSessionTime > 0)\r\n {\r\n if (currentTimestamp - _sessionStartAt < toast.minimumSessionTime)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // Time on Page\r\n if (toast.minimumTimeOnPage > 0)\r\n {\r\n if (currentTimestamp - _pageLoadedAt < toast.minimumTimeOnPage)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // Start Time\r\n if (toast.fromTime > 0)\r\n {\r\n // If it is too early to show the toast, dont show it\r\n if (currentTimestamp < toast.fromTime)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // End Time\r\n if (toast.toTime > 0)\r\n {\r\n // If it is too late to show the toast, dont show it.\r\n // TODO: Could potentially remove the toast from the internal\r\n // list, because it will never be shown anymore and we \r\n // dont have to check it ever again.\r\n if (currentTimestamp > toast.toTime)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // If the toast was ignored too many times, never show it again\r\n if (toast.session.displays >= toast.session.maximumDisplayCount)\r\n {\r\n return false;\r\n }\r\n\r\n // Display Delay. If it was displayed already, wait some time before\r\n // showing it again\r\n if (toast.session.lastDisplayedAt > 0)\r\n {\r\n if (currentTimestamp < toast.session.lastDisplayedAt + toast.displayDelay)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Public interface\r\n */\r\n return { // line break is not allowed here\r\n\r\n /**\r\n * Constructor, boots the checkout\r\n */\r\n initialize: function() \r\n {\r\n \t\tboot();\r\n }\r\n };\r\n})();\r\n\r\n\nvar XmxApp = \r\n{\r\n // Props\r\n scrollOffsetY: 0,\r\n scrollEventObservers: {},\r\n isDesktopDevice: null,\r\n isPhoneDevice: null,\r\n scope: null,\r\n\r\n /**\r\n * Initializes the app. How fancy that sounds.. :)\r\n */\r\n initialize: function()\r\n {\r\n this.determineScope();\r\n this.registerSessionStats();\r\n this.onPageLoaded();\r\n },\r\n\r\n /**\r\n * Keeps Session stats in the session storage\r\n */\r\n registerSessionStats: function()\r\n {\r\n if (this.supportsSessionStorage())\r\n {\r\n // Remember session start time\r\n var startTime = this.getSessionStorageString('xmx-session-start');\r\n\r\n if (startTime === null)\r\n {\r\n this.setSessionStorageString('xmx-session-start', this.getCurrentTimestamp());\r\n }\r\n\r\n // Remember pageview count\r\n var pageviews = this.getSessionStorageString('xmx-session-pageviews');\r\n\r\n if (pageviews === null)\r\n {\r\n pageviews = 1;\r\n }\r\n else \r\n {\r\n pageviews++;\r\n }\r\n\r\n this.setSessionStorageString('xmx-session-pageviews', pageviews);\r\n\r\n // If this visitor is coming from Adwords, remember that\r\n var googleClickId = this.extractHttpGetParameter('gclid');\r\n\r\n if (googleClickId != '')\r\n {\r\n this.setSessionStorageString('xmx-gclid', googleClickId);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Returns true if the visitor is coming from Google Adwords\r\n * @returns bool\r\n */\r\n isComingFromGoogleAdwords: function()\r\n {\r\n if (this.supportsSessionStorage())\r\n {\r\n return this.getSessionStorageString('xmx-gclid') !== null;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Fired after the page has loaded\r\n */\r\n onPageLoaded: function()\r\n {\r\n var me = this;\r\n\r\n // Hok scrolling (causes reflow)\r\n this.hookScrolling();\r\n\r\n // Boot all videos\r\n jQuery('[data-video=\"true\"]').each(function()\r\n {\r\n me.bootVideo(jQuery(this));\r\n });\r\n\r\n // Boot all carousels, if on desktop\r\n if (this.isDesktop())\r\n {\r\n jQuery('[data-carousel=\"true\"]').each(function()\r\n {\r\n me.initializeSwiper(this.id);\r\n });\r\n }\r\n\r\n // Boot all countdowns\r\n jQuery('[data-countdown=\"true\"]').each(function()\r\n {\r\n /*global XmxCountdown*/\r\n new XmxCountdown(jQuery(this));\r\n });\r\n\r\n // Boot all newsletter forms\r\n jQuery('form[data-newsletter-form=\"true\"]').each(function()\r\n {\r\n /*global XmxNewsletterForm*/\r\n new XmxNewsletterForm(jQuery(this));\r\n });\r\n\r\n // Start the toaster\r\n /*global XmxToaster*/\r\n XmxToaster.initialize();\r\n\r\n // Run Klaviyo and Partner Ad catchers to set cookies\r\n this.runKlaviyoEmailCatcher();\r\n this.runPartnerAdsCatcher();\r\n this.runAdrecordCookieCatcher();\r\n },\r\n\r\n /**\r\n * Boots a video\r\n * \r\n * @param {} $video \r\n */\r\n bootVideo: function($placeholder)\r\n {\r\n var videoSource = '';\r\n var $container = $placeholder.parent();\r\n var videoClass = $placeholder.data('class');\r\n var videoType = $placeholder.data('type');\r\n\r\n if (this.isPhone())\r\n {\r\n videoSource = $placeholder.data('portrait');\r\n }\r\n else \r\n {\r\n videoSource = $placeholder.data('landscape');\r\n }\r\n\r\n var $video = jQuery('