{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bc/cartridge/client/default/js/accessibilityFocus.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/tencentCaptcha.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/helper.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/api.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/scrollAnimate.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/base.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/loader.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/main.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/footer.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/collapsibleItem.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/search.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/accessibility.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/menuNav.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/countdown.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/locale.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/analytics.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/analyticsBase.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/wishlist/wishlist.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/miniCartSide.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/cart/paypal/initMinicartButton.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/datepicker.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/common.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/CSRFUtil.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/modalUtilities.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/bannerSlider.js","webpack:///(webpack)/buildin/global.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/cart/common.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/formValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/urlUtil.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","FOCUSABLE","focuseOnModal","selector","focusOnClose","selectorfadeOut","$","on","event","focusableNodes","find","toArray","filter","offsetParent","which","focusedItemIndex","indexOf","document","activeElement","shiftKey","length","focus","preventDefault","body","is","removeAttr","addClass","setTimeout","hasClass","removeClass","iterateFocusOnPage","focusOnFirstElement","each","this","trapFocus","element","trigger","disableBackgroundElements","attr","firstError","scrollAnimate","require","validateForm","config","arguments","undefined","valid","checkValidity","shouldValidate","stopPropagation","stopImmediatePropagation","errorFields","validity","parent","siblings","children","text","invalidateForm","formSubmit","currentError","concat","split","splice","join","push","$form","target","message","additionalData","type","category","country","val","validateFields","closest","clearForm","form","remove","e","setCustomValidity","validationMessage","patternMismatch","data","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","typeMismatch","parents","eq","skipFocus","center","scrollableParent","invalid","submit","focusOut","validateContactUsPDPform","validateRequesSizePDPform","errorText","validateFindInStorePDPform","validatecontactOrderform","validateHelpWithSizeform","validateLoginOfCanvas","validateRepairFormMyAccount","validateGenericCusForm","validateRegistration","validateOverlayNewsletter","$scrollableParent","$lines","areLinesSelected","privacyGranted","$privacyField","isPrivacyConsentGranted","$errorMsg","fields","buttonClick","noOrientalCheck","validationMsg","test","validateRequestAppointmentform","currentTarget","validateAppointmentformUser","functions","validateContactUsform","el","_successCallback","_failCallback","_captchaID","tencetCaptchaCallback","res","ret","randstr","ticket","errorCode","showCaptcha","captchaID","success","fail","captchaAppID","TencentCaptcha","show","error","querySelector","script","setAttribute","getAttribute","verify","ajax","url","isAlreadyLoaded","initialize","$tencentCaptchaEl","promise","$captchaInput","resolve","reject","invalidateCaptcha","defaultStyle","color","shape","layout","label","tagline","getPaypalButtonStyle","button","JSON","parse","style","getUrlWithCsrfToken","$element","urlInstance","URL","searchParams","append","toString","loader","loaderInstance","showCartErrorHtml","window","scrollTo","createCartBillingFormData","fieldsData","$paypalButton","cartBillingFormData","FormData","cartBillingFields","entries","forEach","entry","_entry","_slicedToArray","field","_typeof","updateOrderData","paypalUrls","hide","location","href","placeOrderStage","err","responseText","errorMsg","transactionExpired","reload","getPurchaseUnits","getPurchaseUnit","then","_ref","purchase_units","getBillingAgreementToken","isCartFlow","createBillingAgreementToken","createBillingAgreementCall","billingToken","createBillingAgreement","contentType","stringify","getOrderDetailsCall","orderId","getOrderDetails","returnFromCart","processData","showCheckoutErrorHtml","textContent","display","finishLpmOrder","details","lpmName","paypalMethodId","getPaypalOrderId","helper","async","responseJSON","id","elementOrPosition","options","position","disableScroll","duration","delay","innerHeight","animate","scrollTop","complete","scrollToPosition","parseInt","jQuery","offset","top","scrollToElement","appendToUrl","getPidValue","getQuantitySelected","updateAttrs","attrs","$productContainer","msgs","attrsWithSwatches","values","attrValue","$attrValue","selected","assistiveSelectedText","images","swatch","resizedUrls","map","idx","$colorText","empty","sizeStartIndex","sizeEndIndex","partOne","substring","partTwo","eIndex","partTwoMod","finalUrl","selectable","processSwatchValues","attributeSelector","prop","numberofsizes","first","size","isOnlyOneLeft","online","hideNotifyMeProduct","processNonSwatchValues","updateVideo","htmlVideo","$videoContainerVertical","$videoContainerHorizontalDesktop","$videoContainerHorizontalMobile","ImageandVideoContainer","replaceWith","desktopVideo","mobileVideo","insertAfter","prepend","handleVariantResponse","response","imagesCanChange","product","variationAttributes","resources","imgs","buildSrcSet","imageSet","prevArrStartIndex","$imageContainer","getElementById","innerHTML","$imagesDivs","singleImage","$ResizedUrlsFirstSource","$ResizedUrlsSecondSource","$image","$picture","$sources","alt","cloneImage","clone","appendTo","imgLength","$imagesOld","j","oldimg","updateImages","large","hasHorizontalVideo","videoH","CLDvideoHURL","videoCloudinaryPdpHtml","hasVerticalVideo","videoV","CLDvideoVURL","price","html","availabilityValue","availabilityMessages","availability","messages","readyToOrder","info_selectforstock","updateAvailability","attributeSelect","selectedValueUrl","container","method","imgVal","enableDisclaimerShipment","pfas","Tag","toUpperCase","spinner","stop","getAddToCartUrl","miniCartReportingUrl","performAddToCartCall","addToCartUrl","pid","pidsObj","childProducts","quantity","onSuccess","onError","customFrom","masterPid","start","generalPid","totPid","skuMaster","productColor","selectorPrefix","addToCartLiveContent","colorAttribute","dat","sku","stickyBar","attributeSelectLook","colorSelect","productPid","action","SKU","toLowerCase","colorAttributeLook","selectAttribute","available","sizeCode","_idx","$el","performAddToCart","newStickyAddToCartButton","isMobile","isStickyTop","isMicroSticky","resData","reportingURL","performAddToCartLook","addToCart","containerElement","Constructor","containerEl","processInclude","ready","ApplePaySession","canMakePayments","lastPage","cookieArray","cookie","cookieItem","$phoneHeader","$phoneHeaderMobile","enableInThisCountry","dataAccessibilityValue","cartItemNumberUrl","loginObject","visitorObject","cartItemObject","isLogged","userUUID","cartItemNumber","$deliveryTime","urlDelivery","minDays","maxDays","post","geolocationountry","eventCategory","eventAction","eventLabel","cntrlIsPressed","keydown","metaKey","keyup","targetBlank","classList","click","dataLayer","year","Date","getFullYear","email","source","toggleClass","iterator","constructor","searchedWord","debounce","endpoint","getSuggestionsWrapper","isMobileSearch","scope","handleMoreContentBelowIcon","scrollHeight","fadeOut","fadeIn","processResponse","outerHeight","$scope","$suggestions","$suggestionsWrapper","css","scroll","applyModals","suggestionsList","getSuggestions","searchWord","validChar","toCheck","errorFieldDesktop","errorFieldMobile","jsSearchControlSelector","isValid","updateErrorField","$errorField","specialCharChecker","context","encodeURIComponent","handleArrow","direction","index","removeProp","closeSearch","layer_action","debounceSuggestions","firstLink","searchSection","wasOpen","visibility","isTabletPortrait","$target","showMoreUrl","notPushed","keyCode","products","containerClass","prod","completeUrl","tempDiv","createElement","add","returningPid","addEventListener","documentElement","contains","Array","isArray","_arrayWithHoles","u","a","f","next","done","_iterableToArrayLimit","_arrayLikeToArray","slice","from","_unsupportedIterableToArray","TypeError","_nonIterableRest","closeMenuDesktop","openSection","cgid","navbarHeight","megamenuHeight","openSectionDelayed","checkAfterDelay","getAnalyticsTemplale","menuType","templateName","getAnalyticsReference","navItem","mainMenu","isTouchMode","_this","arrowUp","arrowDown","mobileRef","tabletRef","analyticsTemplate","menu_hierarchy","menu_template","_getAnalyticsReferenc2","_getAnalyticsReferenc4","_getAnalyticsReferenc6","_getAnalyticsReferenc8","initInterval","$this","countDownDate","now","getTime","distance","days","Math","floor","hours","minutes","seconds","date","x","setInterval","clearInterval","localeCode","urlPopUp","imgPath","popUpTemplate","labels","innerText","selectpicker","imgPopUp","_data","some","namespace","querystring","query","geoloc","dataType","locale","curLangs","isDefault","localID","countryCode","displayLanguage","redirectUrl","cookieSave","datatype","base","_","dataLayerPush","promo","checkPromo","pageYOffset","checkCollisionNotImpressed","pushAddToCart","pushRemoveFromCart","oncomplete","pushChangeQuantity","paymentType","ecommerce","checkout_option","actionField","step","option","prodAnalytics","loadAnalyticsProduct","obj","other","interestList","analyticsPushPage","analyticsPushUserData","initializeCheckoutProducts","pushCheckoutObject","step_type","pushPurchaseObject","$promo","analyticsPushPromoClick","analyticsPushChangeVariation","alreadySend","inToRemove","previousElement","$parent","analyticsPushProductClick","$analytics","originalEvent","buttonType","accessType","removeData","analyticsOwn","subcategory","pushObject","pagesubCategory","pageDetail","advisorID","client_advisor_id","isExlusiveServiceApponintment","analyticsCheckImpressionAndPromo","getPositions","box","$box","pos","width","height","left","comparePositions","p1","p2","TYPE","determineType","prodFrom","getContainerFrom","$container","getContainerTemplate","template","getProductTemplate","$product","prodTemplate","containerTemplate","getProductFrom","containerFrom","getProductTag","getProduct3d","prodTag","getProductList","prodList","replace","getProductPosition","prodPosition","getAnalyticsImage","prodImage","login","visitorId","deferred","Deferred","item","$item","positionScroll","positionValue","promoToCheck","posPromo","isCtaAnchorate","notToPrint","promoView","promotions","creative","checkContainerCollisionNotImpressed","esclusionSelector","posBlock","prodCurrency","pageAction","analyticsFrom","prodPid","prodName","prodPrice","prodPromotions","prodColor","prodGender","prodAnalyticsColor","prodUrl","prodAvailable","prodVideo","productIsSet","sizeImg","prod3d","productDiv","posBomb","horizontalMatch","verticalMatch","match","matchEditorial","currencyCode","dimension27","detail","variant","gender","dimension14","dimension26","callout","dimension25","impressions","tileType","list","checkCollisionsProducts","containers","pageCategory","baseObject","visitorShipping","visitorCurrency","pageLanguage","pageStatus","listingType","contentButtons","clickableElements","promoClick","promo_text","wrapper","newColor","prodSizeCode","prodSticky","isPDPLook","selectedElement","productVariationGroup","prodSize","dimension21","dimension22","prodQuantity","fromWhere","fromEventName","sizeAnalytics","not","isDesktop","checkPromoScrollHorizontal","containerSelector","checkout","footerElement","getElementsByTagName","viewportHeight","clientHeight","accessFocus","Modal","updateWishlistQuantity","badgeText","itemsCount","updateWishlistQuantityTrigger","self","openShareWishlistIteam","$shareContainer","closeShareWishlistIteam","$overlay","copyLink","openWeChatOverlay","closeWeChatOverlay","removeWishlistElement","iteams","pageSize","renderedTemplate","wishlistCountLabel","removeWishlistElementGuest","$header","$button","$body","link","defaultValue","openProductOverlayWishlist","dispatchEvent","Event","closeProductOverlayWishlist","selectAvailableSizeWishlistProduct","chooseSizeWishlistItem","prodID","sizeIndex","addToCardWishlistProduct","sizevariantselected","_self","removeUrl","appairWishlist","scrollTimer","isPDP","clearTimeout","bottom","right","$sticky","getBoundingClientRect","stikyHeight","addToCartWishlistProducts","modalTarget","modal","productToAdd","createItemsArray","producs","sendAnalyticsAddAllToCart","itemsToRemove","moveAllProducts","open","one","close","_open","_previouslyFocussedElement","addAnyProduct","showMoreProduct","isShared","listID","$more","moreProducts","wishlistLabel","morelabel","shareWishlistLink","found","headerHeight","heightPage","heightSocialListLink","closeWishlistshareOverlay","closeQROverlay","copyWishlistLink","copyText","navigator","clipboard","writeText","copiedLink","copyProductLink","initPaypalButton","_require2","validateBasket","updateCartTotals","updateProductsTotalAndSubtotal","liveChatEnable","createErrorNotification","errorHtml","updateApproachingDiscounts","approachingDiscounts","discountMsg","liveChatDisableAndFixScrolling","heightFooter","initPaypal","paypal","head","onload","src","cartSdkUrl","partnerAttributionId","appendChild","temporized","dataset","onShow","onClose","widthContent","isCart","numItems","minicartNumberOfItems","totals","grandTotal","miniCartSide","productID","uuid","currentProductUUID","srProdRemovedMessage","toBeDeletedUUIDs","basket","hasBonusProduct","discountsHtml","checkoutSummaryHtml","grandTotalHtml","errorMessage","itemQuantity","minQuantity","maxQuantity","newQuantity","lineItem","items","UUID","inStockDate","productName","apiHelper","onClick","createOrder","onApprove","$defer","getCartPurchaseUnit","parsedPurchaseUnit","amount","validateShipping","countryMatchError","billingStep","continueUrl","urlParams","ID","orderID","token","orderToken","keys","cartPage","onCancel","Buttons","render","exportDatepicker","datepicker","disableTouchKeyboard","autoclose","language","trim","isTablet","isTabletLandscape","navigationCountry","formValidation","_throttle","CSRFUtil","responsiveResize","matchMedia","matches","isSlider","banner","heightBanner","tot","initializeBannerHeader","updateFooter","openSizeColorModal","plus","minus","$selector","checkSize","$input","$inputMobile","$label","updateSizeList","maxWidthConsideringArrows","numberOfColors","maxWidth","slick","infinite","slidesToScroll","slidesToShow","dots","arrow","prevArrow","nextArrow","disabled","nodes","$sizes","changeBackground","$window","windowHeight","scrollOffset","$section","scrollStart","scrollEnd","colorName","sectionStart","sectionEnd","persisted","performance","getEntriesByType","heightDevice","productBase","isSafari","vendor","userAgent","setButtonScrollDownPosition","heightHeader","heightContainerScrollDownArrow","innerWidth","videoURL","updateHeaderHeightVariables","resize","resizeMiniCartModal","fn","BootstrapVersion","targets","ceil","topHeaderHeight","MutationObserver","mutations","observe","attributes","_len","productIds","_key","priceHTML","$updatedPrice","productId","$pricesToUpdate","replaceAll","select","title","slideToggle","menuItems","scrollItems","fromTop","cur","end","configAutoplay","sliderTimer","$slidesContainer","progressBar","autoplay","swipe","focusOnSelect","pauseOnHover","pauseOnFocus","centerMode","autoplaySpeed","speed","variableWidth","$sliderModule","slideCount","currentSlideIndex","$progressbar","$promos","isPaused","iterations","pauseInterval","resumeInterval","nextSlideIndex","slideId","slideIndex","slide","currentSlide","history","scrollRestoration","fade","cssEase","scrollingDown","moduleHeight","canChangeSlide","scrollBlocked","intersection","lastIntersection","scrollSlides","observer","disconnect","deltaY","move","touches","clientY","extraspace","max","threshold","min","rootMargin","IntersectionObserver","intersectionRatio","boundingClientRect","y","clientTop","offsetTop","responsive","breakpoint","settings","accessibility","dotsClass","appendDots","incompleteSelection","iteamWidth","$sizeContainer","isSwatch","$clickedElement","bigTileRequired","sizeTemplate","imageVideoTemplateTileHtml","horizontalImage","horizontalImageUrl","$hResizedUrlsFirstSource","$hResizedUrlsSecondSource","absURL","horizontalContainer","$swatchResizedUrlsFirstSource","$swatchResizedUrlsSecondSource","$largeResizedUrlsFirstSource","$largeResizedUrlsSecondSource","$size","microcolor","pdpUrl","ariaLabel","displayValue","every","sales","formatted","colorText","sizeText","$modalContainer","$boxTile","elementId","selectedCategory","firstChild","$loginForm","$resetPwdForm","accountPageUrl","LoginRegistrationPageUrl","serialize","ariaExpanded","urlreset","receivedMsgHeading","receivedMsgBody","$btn","HTMLImageElement","querySelectorAll","video","endPoint","img","urls1","urls2","imgUrl","returnUrl","btnText","loginEmail","moduleEnd","analiticsSubCategory","$moduleWrp","$module","$videoContainer","controlsEnabled","moduleTop","moduleBottom","scrollpx","bottomMonitor","$text","textHeight","$titleImage","difference","chars","cleanClonedSlideAnalytics","initializeSlider","slidesContainer","isGhostCarousel","centerPadding","commonAria","prevSlideProducts","nextSlideProducts","updatePrices","priceAlreayUpdated","moduleID","groupID","$containerModule","$existingGroup","cid","URLSearchParams","$genderPage","isGenderPage","_creative","_groupID","$html","initializeRelativesSlider","elem","dataTarget","classes","parentNode","ctaText","arrowImg","anchorHeadHeight","headerBannerHeight","currentValue","headerHeightDiff","pageAnchorHeight","$progressBar","header","anchorItems","progress","_step","offsetHeight","_iterator","_createForOfIteratorHelper","whatsappIntegration","$whatsApp","overrideLink","dataCsCverrideId","dataAnalyticsLabel","analyticsLabel","$preferences","countCheckedPreferences","privacyContainer","isFirstCheckedPreferences","buttonElement","selectElement","$modal","modalSource","readyToSubmit","$tencentCaptcha","beforeSend","isCustomer","filledData","surname","consent","interest","interestlist","chatAlreadyHidden","simpleType","randomId","popUp","successPopup","refreshToken","autoRefreshID","startAutoRefresh","custom","stopAutoRefresh","off","$grecaptcha","CustomEvent","cookieName","decodeURIComponent","charAt","getCookie","nameBanner","tagStyle","filterButtonHeigt","expireDate","cookieExpiresDate","addDays","setDate","getDate","String","toUTCString","setCookie","bannerId","analytics","include","getToken","updateToken","newToken","$inputs","getAsQueryParam","param","csrf_token","getAsObject","addTokenToFormData","formData","assign","csrf_value","csrf","intervalId","freeGlobal","freeSelf","root","Function","_defineProperties","configurable","writable","_toPropertyKey","toPrimitive","Number","_toPrimitive","_classCallCheck","_onKeyDown","_onKeyDownFn","_config","_trapFocus","_registerEvents","apply","_this2","removeEventListener","isObject","toNumber","nativeMax","nativeMin","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","global","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","valueOf","isBinary","trimmedEndIndex","reTrimStart","string","reWhitespace","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","isOwn","tag","unmasked","getBannerHeigth","timeToShift","prevSlide","nextSlide","unobserveTimeout","resizeObserver","ResizeObserver","h","unobserve","g","productCardsUpdateHtml","updatedItem","priceTotal","nonAdjustedPrice","cartAria","totalAmount","totalQuantity","emptyCartMsg","numberOfItems","orderDiscount","productDiscount","couponDiscount","couponId","subTotal","formElement","payload","clearFormErrors","feedbackElement","includes","replaceOrAddQueryParam","parameter","regex","RegExp","getQueryParams","qs","params","newUrl"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 262);\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),a[href],input,[tabindex=\"0\"]';\n\nfunction focuseOnModal (selector, focusOnClose, selectorfadeOut) {\n $(selector).on('keydown', function(event) {\n let focusableNodes = $(selector).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n if (key === 27) { // close popUp on ESC\n // re-activate background elements if previously disabled\n if ($(document.body).is('[aria-hidden=\"true\"][aria-disabled=\"true\"]')) {\n $(document.body).removeAttr('aria-hidden aria-disabled');\n }\n\n // $(selectorfadeOut).fadeOut();\n $(selectorfadeOut).addClass('d-none');\n setTimeout(function() {\n $(focusOnClose).focus();\n }, 0);\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n if ($('body').hasClass('veiled')) $('body').removeClass('veiled');\n }\n });\n};\n\nfunction trapFocus(element) {\n $(element).trigger('keydown');\n}\n\nfunction iterateFocusOnPage() {\n $('body').on('keydown', function(event) {\n let focusableNodes = $('body').find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n });\n};\n\nfunction focusOnFirstElement(selector) {\n $(selector).find(FOCUSABLE).each(function() {\n if ($(this).hasClass('d-none')) {\n return true;\n } else {\n $(this).focus();\n return false;\n }\n });\n};\n\nfunction disableBackgroundElements(selector) {\n // accessibility: disable everything on page except the modal content\n $(document.body).attr({\n 'aria-hidden': 'true',\n 'aria-disabled': 'true'\n });\n\n $(selector).attr({\n 'aria-hidden': 'false',\n 'aria-disabled': 'false'\n });\n};\n\nmodule.exports = {\n focuseOnModal: focuseOnModal,\n iterateFocusOnPage: iterateFocusOnPage,\n focusOnFirstElement: focusOnFirstElement,\n trapFocus: trapFocus,\n disableBackgroundElements: disableBackgroundElements\n};\n","'use strict';\nvar firstError = true;\n\nvar scrollAnimate = require('../components/scrollAnimate');\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n* shouldValidate: function,\n* formSubmit: boolean\n* }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event, config = {}) {\n var valid = true;\n\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n if (! config.shouldValidate) valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).find('input, select, textarea:not(.g-recaptcha-response)').each(function () {\n if (config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n\n invalidateForm(this, event, config);\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n }\n }\n }\n\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n\n if (errorFields.length) {\n var $form = $(event.target);\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n }\n return valid;\n}\n\n/**\n * Validate form fields\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n * shouldValidate: function,\n * formSubmit: boolean\n * }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateFields(event, config) {\n var valid = true;\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).each(function () {\n if (config && config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n // invalidation also for captcha field\n $(this).trigger('invalid', {validity: this.validity, config: config});\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n break;\n }\n }\n }\n $(this).closest('.cc-content-input').attr('data-validation-result', 'invalid');\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n\n $(this).closest('.cc-content-input').attr('data-validation-result', 'valid');\n }\n });\n\n if (errorFields.length) {\n var $form = $(this).closest('form');\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-select.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $('.alert', form).remove();\n}\nfunction invalidateForm (object, e, config={}) {\n if (e) e.preventDefault();\n if (!$(object).attr('data-no-oriental') === 'false') {\n object.setCustomValidity('');\n }\n if (!object.validity.valid) {\n var validationMessage = object.validationMessage;\n $(object).addClass('cc-error');\n if ($(object).hasClass('cc-select')) {\n $(object).parent().addClass('cc-error');\n }\n if (object.validity.patternMismatch && $(object).data('pattern-mismatch')) {\n validationMessage = $(object).data('pattern-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n if ((object.validity.rangeOverflow || object.validity.rangeUnderflow)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if ((object.validity.tooLong || object.validity.tooShort)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if (object.validity.valueMissing && $(object).data('missing-error')) {\n validationMessage = $(object).data('missing-error');\n }\n if (object.validity.typeMismatch && $(object).data('type-mismatch')) {\n validationMessage = $(object).data('type-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n $(object).parents('.cc-form-group').find('.cc-feedback-message').children('.cc-text-message')\n .eq(0).text(validationMessage);\n\n $(this).closest('.cc-content-input').attr('data-validation-result', '');\n \n if (firstError) {\n if (!config.skipFocus) {\n scrollAnimate($(object), {center: true, scrollableParent: config.scrollableParent});\n ($(object) || $('.logo-home')).focus();\n }\n firstError = false;\n }\n }\n}\nmodule.exports = {\n invalid: function () {\n $(document).on('invalid', 'form input, form select', function (e, data) {\n invalidateForm(this, e, data ? data.config : null);\n });\n $('.cc-next-step-button').on('click', function() {\n firstError = true;\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e, {formSubmit: true});\n });\n },\n\n focusOut: function () {\n $('form input:not(.js-datepicker)').on('focusout', function (event) {\n if ($(this).hasClass('js-prevent-validation')) {\n return;\n } else if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n $(document).on('changed.bs.select', 'select', function (event) {\n if (! $(this).val()) return;\n\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n $(this).removeClass('cc-error');\n }\n }\n var found = $(this).parent().parent().children('.cc-feedback-message').children('.cc-text-message').text('').length;\n if (! found) {\n $(this).closest('.cc-form-group').find('.cc-feedback-message .cc-text-message').text('');\n }\n }\n });\n $('input[type=\"radio\"]').on('click change', function (event) {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n $(this).closest('.d-flex').siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n });\n },\n\n validateContactUsPDPform: function() {\n $(document).on('click', '#submitContactUs', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRequesSizePDPform: function() {\n $(document).on('click', '.js-requestsize-button', function(e) {\n if ($(this.form).find('select#requestSize-size').val() === '') {\n $(this.form).find('select#requestSize-size').each(function () {\n var errorText = $(this).data('noitems');\n this.setCustomValidity(errorText);\n });\n }\n return validateForm.call(this.form, e);\n });\n },\n validateFindInStorePDPform: function() {\n $(document).on('click', '.js-submit-findInStore', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validatecontactOrderform: function() {\n $(document).on('click', '.js-submit-orderInfo', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateHelpWithSizeform: function() {\n $(document).on('click', '#helpWithSize-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateLoginOfCanvas: function() {\n $(document).on('click', 'form#loginOfCanvas .js-login-offcanvas', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRepairFormMyAccount: function() {\n $(document).on('click', 'form#repairForm-MyAccount .js-submit-repairForm', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateGenericCusForm: function() {\n $(document).on('click', '.js-genericCus-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRegistration: function() {\n $(document).on('click', 'form.registration button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n\n $(document).on('click', 'form.registrationemail button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateOverlayNewsletter: function() {\n // clear privacy consent error message when needed\n $(document).on('click', '.js-form-overlay-newsletter .js-privacyShopping[value=\"true\"]', function() {\n var $form = $(this.form);\n $('.js-privacy-error', $form).addClass('cc-invisible');\n });\n\n const isPrivacyConsentGranted = function($form) {\n var $privacyField = $('.js-privacyShopping[value=\"true\"]', $form);\n return !! ($privacyField.length && $privacyField.is(':checked'));\n }\n\n const areLinesSelected = function($form) {\n var $lines = $('.cc-newsletter-form-preferences', $form);\n return !! ($lines.length && $('.cc-checkbox:checked', $lines).length);\n }\n\n\n $(document).on('click', '.js-form-overlay-newsletter button[type=\"submit\"]', function(e){\n var $form = $(this.form);\n var $scrollableParent = $form.closest('.cc-overlay-info');\n\n // clear backend error messages\n $('.js-backend-errors .cc-text-message', $form).addClass('cc-invisible');\n var isFirstStep = $form.hasClass('js-form-overlay-newsletter-step1'); // this class is added only to image-two-steps modal\n\n // check privacy consent only if lines are selected ( only on second step with image-two-steps modal )\n if (!isFirstStep && areLinesSelected()) {\n var privacyGranted = isPrivacyConsentGranted($form);\n if (! privacyGranted) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n var $errorMsg = $('.js-privacy-error', $form);\n $errorMsg.removeClass('cc-invisible');\n scrollAnimate($errorMsg, {scrollableParent: $scrollableParent});\n validateForm.call(this.form, e, {scrollableParent: $scrollableParent})\n return false;\n }\n }\n\n return validateForm.call(this.form, e, {scrollableParent: $scrollableParent});\n });\n },\n validateFields: function (fields, config) {\n if (fields) {\n return validateFields.call(fields, null, config);\n }\n },\n // validateResetPwdOfCanvas: function() {\n // $(document).on('click', 'form.cc-resetpwd-form-offCanvas .js-resetPwd-request', function(e) {\n // return validateForm.call(this.form, e);\n // });\n // },\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n noOrientalCheck: function () {\n $(document).on('focusout', '.js-no-oriental', function () {\n if ($(this).data('oriental-error') != undefined) {\n var validationMsg = $(this).data('oriental-error');\n var regex = /^[a-zA-Z0-9 -_\\/(){}|\"!? ’'‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]+$/;\n var value = $(this).val();\n var valid = regex.test(value);\n if (value && value !== '') {\n if (!valid) {\n $(this)\n .addClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text(validationMsg);\n this.setCustomValidity(validationMsg);\n $(this).attr('data-no-oriental', false);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this)\n .removeClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text('');\n this.setCustomValidity(\"\");\n $(this).attr('data-no-oriental', true);\n }\n }\n }\n }\n });\n },\n validateRequestAppointmentform: function() {\n $(document).on('click', 'form #js-submit-Appointment', function(e) {\n e.currentTarget = $(this).closest('form#appointment');\n return validateForm.call(this.form, e);\n });\n },\n\n validateAppointmentformUser: function() {\n $(document).on('click', '.js-update-customerForm form .js-validate-form', function(e) {\n e.currentTarget = $(this).closest('form');\n return validateForm.call(this.form, e);\n });\n },\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n validateContactUsform: function() {\n var hasClassVisible = function (el) {\n return $(el).parents('.cc-no-visible').length === 0;\n }\n \n return validateForm.call($('form#contactUs').get(0), /* event = */ null, {shouldValidate: hasClassVisible});\n },\n clearForm: clearForm\n }\n};\n","'use strict';\n\nvar _successCallback;\nvar _failCallback;\nvar _captchaID;\n\n(function(){\n var scriptToBeLoaded = document.querySelector('#tencentCaptchaScript[src]');\n if (! scriptToBeLoaded) {\n var script = document.querySelector('#tencentCaptchaScript:not([src])');\n if (script) {\n script.setAttribute('src', script.getAttribute('data-src'));\n }\n }\n})();\n\nfunction tencetCaptchaCallback(res) {\n if (res.ret === 0) {\n // successful verification\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(res.randstr);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(res.ticket);\n \n if (! res.errorCode) {\n if (_successCallback) {\n _successCallback({\n randstr: res.randstr,\n ticket: res.ticket\n });\n }\n \n } else { // error\n if (_failCallback) _failCallback();\n }\n } else {\n if (_failCallback) _failCallback();\n // console.log('errorCode:', res.errorCode, 'errorMessage:', res.errorMessage);\n }\n}\n\nfunction tencetCaptchaLoadingErrCallback(error) {\n if (_failCallback) _failCallback();\n}\n\nfunction showCaptcha (config = {}) {\n _captchaID = config.captchaID;\n _successCallback = config.success;\n _failCallback = config.fail;\n\n try {\n var captchaAppID = $('.js-tencentCaptchaAppID').val();\n var captcha = new TencentCaptcha(captchaAppID, tencetCaptchaCallback, {});\n captcha.show();\n } catch (error) {\n tencetCaptchaLoadingErrCallback(error);\n }\n}\n\nmodule.exports = {\n verify: function() {\n $.ajax({\n type: 'POST',\n url: $('input[name=\"tencent-captcha-verify-url\"]').val(),\n data: {\n randstr: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(),\n ticket: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(),\n },\n success: function(data) {\n if (data.success) {\n if (_successCallback) _successCallback(data);\n } else {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n },\n error: function(data) {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n });\n },\n\n /**\n * Check if the Tencent captcha script has already been loaded into the HTML.\n */\n isAlreadyLoaded: function() {\n return $('#tencentCaptchaScript').length;\n },\n\n /**\n * Show the Tencent captcha popup\n * @param {JQuery} $tencentCaptchaEl \n * @param {Promise} promise \n */\n initialize: function($tencentCaptchaEl, promise) {\n var $captchaInput = $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl);\n if ($captchaInput.length && ! $captchaInput.val()) {\n showCaptcha({\n captchaID: $tencentCaptchaEl.attr('data-id'),\n success: (data) => promise.resolve(data),\n fail: () => promise.reject()\n });\n } else {\n promise.resolve();\n }\n },\n\n /**\n * Invalidate the captcha element\n * @param {JQuery} $tencentCaptchaEl \n */\n invalidateCaptcha: function($tencentCaptchaEl) {\n $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl).val('');\n }\n}\n","const defaultStyle = {\n color: 'gold',\n shape: 'rect',\n layout: 'vertical',\n label: 'paypal',\n tagline: false\n};\n\n/**\n * Gets paypal button styles\n * @param {Element} button - button element\n * @returns {Object} with button styles or if error appears with default styles\n */\nfunction getPaypalButtonStyle(button) {\n try {\n const config = button.getAttribute('data-paypal-button-config');\n if (config) {\n const buttonConfigs = JSON.parse(config);\n return buttonConfigs.style;\n }\n } catch (error) {\n return {\n style: defaultStyle\n };\n }\n}\n\n/**\n * Get CSRF Token\n * @returns {string} - csrf token value\n */\nfunction getCsrfToken() {\n let $element = document.querySelector('[name=\"csrf_token\"]');\n\n if ($element && $element.value !== '') {\n return $element.value;\n }\n\n $element = document.querySelector('[data-tokenname=\"csrf_token\"]');\n\n if ($element && $element.getAttribute('data-token') !== '') {\n return $element.getAttribute('data-token');\n }\n\n return '';\n}\n\n/**\n * Add csrf token param to url\n * @param {string} url - source url\n * @returns {string} - url with csrf_token param\n */\nfunction getUrlWithCsrfToken(url) {\n const urlInstance = new URL(url);\n\n urlInstance.searchParams.append('csrf_token', getCsrfToken());\n\n return urlInstance.toString();\n}\n\nexport {\n getPaypalButtonStyle,\n getUrlWithCsrfToken\n};\n","var loaderInstance = require('./loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\n/**\n * Appends error message on cart page\n *\n * @param {string} message error message\n */\nfunction showCartErrorHtml(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
\n \n ${message}\n
`\n );\n window.scrollTo(0, 0);\n}\n\n/**\n * Appends error message on billing checkout page\n *\n * @param {string} message error message\n */\nfunction showCheckoutErrorHtml(message) {\n document.querySelector('.error-message-text').textContent = '';\n document.querySelector('.error-message').style.display = 'block';\n document.querySelector('.error-message-text').append(message);\n window.scrollTo(0, 0);\n}\n\n/**\n * Updates information about an order\n *\n * @returns {Object} Call handling result\n */\nfunction updateOrderData() {\n loader.show();\n return $.ajax({\n url: window.paypalUrls.updateOrderData + '?isCartFlow=true',\n type: 'PATCH',\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: (err) => {\n loader.hide();\n var error = JSON.parse(err.responseText);\n showCartErrorHtml(error.errorMsg);\n if (error.transactionExpired) {\n location.reload();\n }\n }\n });\n}\n\n/**\n * Gets purchase units\n *\n * @returns {Object} with purchase units data\n */\nfunction getPurchaseUnits() {\n return $.get(window.paypalUrls.getPurchaseUnit)\n .then(({ purchase_units }) => purchase_units);\n}\n\n/**\n * Gets Billing Agreement Token\n *\n * @param {boolean} isCartFlow - billing agreement flow from cart\n * @returns {string} billingToken - returns a JSON response that includes token, an approval URL\n */\nfunction getBillingAgreementToken(isCartFlow = false) {\n return $.get(window.paypalUrls.createBillingAgreementToken + `?isCartFlow=${isCartFlow}`)\n .then((data) => data);\n}\n\n/**\n * Gets Billing Agreement\n * After buyer approval, you use a billing agreement token to create the agreement.\n *\n * @param {string} billingToken - billing agreement token\n * @returns {Object} JSON response body that includes the billing agreement ID,\n * the state of the agreement, which is ACTIVE, and information about the payer\n */\nfunction createBillingAgreementCall(billingToken) {\n return $.ajax({\n url: window.paypalUrls.createBillingAgreement,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({ billingToken })\n });\n}\n\n/**\n * Gets Order Details\n *\n * @param {string} orderId - billing agreement token\n * @returns {Object} JSON response body that includes payer email\n */\nfunction getOrderDetailsCall(orderId) {\n return $.get(window.paypalUrls.getOrderDetails + `?orderId=${orderId}`)\n .then((data) => data);\n}\n\n/**\n * Create billing formData from fields data\n *\n * @param {Object} fieldsData - fields data values\n * @param {Elemtn} $paypalButton - paypal button selector\n * @returns {Object} cart billing form data\n */\nfunction createCartBillingFormData(fieldsData, $paypalButton) {\n var cartBillingFormData = new FormData();\n if (!$paypalButton) {\n $paypalButton = document.querySelector('#paypal_pdp_image') || document.querySelector('#paypal_image');\n }\n var cartBillingFields = $paypalButton && JSON.parse($paypalButton.getAttribute('data-paypal-billing-form-fields'));\n\n Object.entries(cartBillingFields).forEach(entry => {\n const [key, field] = entry;\n if (typeof field === 'object') {\n cartBillingFormData.append(field.name, fieldsData && fieldsData[key] ? fieldsData[key] : field.value);\n }\n });\n\n return cartBillingFormData;\n}\n\n/**\n * Calls to returnFromCart endpoint, redirects to place order stage or shows error if it exists\n *\n * @returns {Object} Call handling result\n */\nfunction returnFromCart() {\n loader.show();\n let cartBillingFormData = createCartBillingFormData();\n\n return $.ajax({\n url: window.paypalUrls.returnFromCart,\n type: 'POST',\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: function (err) {\n loader.hide();\n showCartErrorHtml(err.responseText);\n }\n });\n}\n\n/**\n * Call finishLpmOrder endpoint\n * @param {Object} details billing address details\n * @returns {Promise} ajax call\n */\nfunction finishLpmOrder(details) {\n const lpmName = document.querySelector('#usedPaymentMethod').value;\n const paypalMethodId = document.querySelector('#paypalMethodId').value;\n return $.ajax({\n url: window.paypalUrls.finishLpmOrder,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n details,\n lpmName,\n paypalMethodId\n })\n });\n}\n\n/**\n * @returns {string} paypal order id\n */\nfunction getPaypalOrderId() {\n const helper = require('./helper');\n\n var orderId = $.ajax({\n url: helper.getUrlWithCsrfToken(window.paypalUrls.getPaypalOrderId),\n type: 'GET',\n contentType: 'application/json',\n async: false\n }).responseJSON.id;\n\n return orderId;\n}\n\nmodule.exports = {\n updateOrderData,\n getPurchaseUnits,\n getBillingAgreementToken,\n createBillingAgreementCall,\n getOrderDetailsCall,\n returnFromCart,\n showCartErrorHtml,\n showCheckoutErrorHtml,\n finishLpmOrder,\n createCartBillingFormData,\n getPaypalOrderId\n};\n","'use strict';\n\nfunction scrollToElement(element, options = {}) {\n var {center, offset, focus, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (element && element.length) {\n if (element.length > 1) {\n element = element.eq(0);\n }\n var position = element.offset().top || 0;\n if (! position) {\n position = element.parent().length ? element.parent().offset().top : 0\n }\n\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (offset) {\n position = position * offset;\n }\n \n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position },\n {\n duration: duration || 500,\n complete: () => {\n setTimeout(() => {\n if (focus) {\n element.focus();\n }\n if (disableScroll) {\n $('body').removeClass('prevent-user-scroll');\n }\n }, 500);\n }\n }\n );\n } else {\n $('.logo-home, .cc-logo-link').eq(0).focus();\n }\n }, delay || 0);\n}\n\n\nfunction scrollToPosition(position, options = {}) {\n var {center, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position || 0 },\n {\n duration: duration || 500,\n complete: () => {\n if (disableScroll) {\n setTimeout(() => {\n $('body').removeClass('prevent-user-scroll'); \n }, 500);\n }\n }\n }\n );\n }, delay || 0);\n}\n\n/**\n * Scrolls smoothly to an element or a position\n * @param {JQuery | number} elementOrPosition jquery element or position\n * @param {{\n* center: boolean,\n* offset: number,\n* focus: boolean,\n* disableScroll: boolean,\n* duration: number,\n* delay: number,\n* scrollableParent: JQuery\n* }} options\n*/\nfunction scroll(elementOrPosition, options = {}) {\n if (typeof elementOrPosition === 'number') {\n var position = parseInt(elementOrPosition);\n scrollToPosition(position, options);\n } else {\n var element = elementOrPosition;\n if (! element instanceof jQuery) {\n element = $(element);\n }\n scrollToElement(element, options);\n }\n}\n\nmodule.exports = scroll;","'use strict';\nvar { appendToUrl } = require('../common/urlUtil');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n let pid = $('.product-detail').data('pid');\n return pid;\n}\n\n/**\n * Retrieves the quantity that should be added to the cart. As per design, it is always 1\n * @return {string} - 1\n */\nfunction getQuantitySelected() {\n return '1';\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {boolean} attr.values.selected - Flag as to whether the attribute is currently selected\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n\n if (attrValue.selected) {\n $attrValue.addClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n const buildSrcSet = (imageSet) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1) * 100) + 'w';\n }).join(',');\n };\n $('.js-selected-color')\n .attr('src', attrValue.images.swatch[0].url)\n .attr('srcset', buildSrcSet(attrValue.images.swatch[0].resizedUrls));\n\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.removeClass('hidden');\n }\n } else {\n $attrValue.removeClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').empty();\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.addClass('hidden');\n }\n }\n\n if (attrValue.url) {\n // Gets the part of the size for remove it (inbetween the 'size=' and the next '&'\n var url = attrValue.url;\n var sizeStartIndex = url.indexOf('_size=');\n if (sizeStartIndex > 0) {\n var sizeEndIndex = sizeStartIndex + 6;\n var partOne = url.substring(0, sizeEndIndex);\n var partTwo = url.substring(sizeEndIndex);\n var eIndex = partTwo && partTwo.length > 0 ? partTwo.indexOf('&') : -1;\n var partTwoMod = '';\n if (eIndex > 0) {\n partTwoMod = partTwo.substring(eIndex);\n }\n var finalUrl = partOne + partTwoMod;\n $attrValue.attr('data-url', finalUrl);\n } else {\n $attrValue.attr('data-url', attrValue.url);\n }\n } else {\n $attrValue.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n // $attrValue.prop('disabled', !attrValue.selectable);\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selected - Flag as to whether an attribute is currently selected\n * @param {boolean} attr.values.isOnlyOneLeft - Flag as to whether an attribute has limited availability\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n let attributeSelector = '[data-attr=\"' + attr.id + '\"]';\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find(attributeSelector + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue\n .prop('disabled', false)\n .removeClass('cc-active')\n .removeClass('cc-request-size');\n\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $attrValue.addClass('cc-request-size');\n }\n if (attrValue.selected) {\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1 && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n $attrValue.data('value', attrValue.url);\n $attrValue.addClass('cc-active');\n let size = $('.cc-prod-functional-info').length > 0\n ? $('.cc-prod-functional-info').find('.js-size-value').text()\n : $('.cc-pdp__content-attributes').find('.js-size-value').text();\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n } else {\n $attrValue.addClass('cc-active');\n }\n } else {\n $attrValue.data('value', attrValue.url);\n }\n $attrValue.find('.js-limited-availability').addClass('hidden');\n $attrValue.removeClass('col-6 col-md-8');\n $attrValue.addClass('col-12');\n $attrValue.parent().find('.js-check-availability').addClass('hidden');\n\n if (attrValue.isOnlyOneLeft) {\n $attrValue.find('.js-limited-availability').removeClass('hidden');\n }\n if (attrValue.online) {\n $attrValue.parent('.cc-size-container').removeClass('hidden');\n } else {\n $attrValue.parent('.cc-size-container').addClass('hidden');\n }\n\n if (!attrValue.selectable) {\n $attrValue.removeClass('col-12');\n $attrValue.addClass('col-6 col-md-8');\n $attrValue.parent().find('.js-check-availability').removeClass('hidden');\n $attrValue.parent().find('.js-check-availability').parent().removeClass('hidden');\n }\n\n if (attrValue.hideNotifyMeProduct) {\n $attrValue.parent().find('.js-check-availability').parent().addClass('hidden');\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object[]} attrs - Attribute\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n // TODO: rivedere il comportamento\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the images shown in page from response containing images.\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateImages(imgs, $productContainer) {\n const buildSrcSet = (imageSet, prevArrStartIndex) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1 + prevArrStartIndex) * 200) + 'w';\n }).join(',');\n };\n let $imageContainer = $productContainer.find('.js-image-list');\n\n // Read the template for the images shown in the list\n const imgTemplate = document.getElementById('image-template').innerHTML;\n for (var i = 0; i < imgs.length; i++) {\n var $imagesDivs = $imageContainer.find('.cc-content-image');\n var singleImage = $imagesDivs.get(i);\n var $ResizedUrlsFirstSource = (imgs[i].resizedUrls).splice(0, 3);\n var $ResizedUrlsSecondSource = (imgs[i].resizedUrls);\n if (singleImage) {\n var $picture = $(singleImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n } else {\n var cloneImage = $imagesDivs.get(i - 1);\n $(cloneImage).clone().appendTo($imageContainer);\n $imagesDivs = $imageContainer.find('.cc-content-image');\n cloneImage = $imagesDivs.get(i);\n var $picture = $(cloneImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n }\n }\n var imgLength = $imageContainer.find('.cc-content-image').length;\n if (imgs.length < imgLength) {\n var $imagesOld = $imageContainer.find('.cc-content-image');\n for (var j = (imgLength - 1); j > (imgs.length - 1); j--) {\n var oldimg = $imagesOld.get(j);\n $(oldimg).remove();\n }\n }\n}\n\nfunction updateVideo($productContainer, htmlVideo, position) {\n let $videoContainerVertical = $productContainer.find('.js-image-list').find('.cc-content-video:not(\".cc-only-mobile\")');\n let $videoContainerHorizontalDesktop = $productContainer.find('.cc-pdp__video-horizontal-desktop');\n let $videoContainerHorizontalMobile = $productContainer.find('.cc-content-video.cc-only-mobile');\n var ImageandVideoContainer = $productContainer.find('.js-image-list');\n if ($videoContainerVertical.length > 0) {\n if (position === 'vertical') {\n $videoContainerVertical.replaceWith(htmlVideo);\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n } else if ($videoContainerHorizontalDesktop.length > 0 || $videoContainerHorizontalMobile.length > 0) {\n if (position === 'vertical') {\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $videoContainerHorizontalDesktop.replaceWith(desktopVideo);\n $videoContainerHorizontalMobile.replaceWith(mobileVideo);\n }\n } else {\n if (position === 'vertical') {\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n }\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {Object} response.product.price - Price object related to the product\n * @param {Object} response.product.price.html - HTML rendering of the price object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object} response.product.images - Product images\n * @param {Object[]} response.product.images.large - Product images in large format\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {Object} response.resources - Translation object\n * @param {boolean} imagesCanChange - if the images can change\n * @param {jQuery} $productContainer - DOM element for a given product.\n **/\nfunction handleVariantResponse(response, $productContainer, imagesCanChange) {\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n }\n\n if (imagesCanChange) {\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n updateImages(primaryImageUrls, $productContainer);\n if (response.product.hasHorizontalVideo) {\n if (response.product.videoH.CLDvideoHURL !== $('.cc-pdp__video-horizontal-desktop .cc-video-hotizontal source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'horizontal');\n }\n } else if (response.product.hasVerticalVideo) {\n if (response.product.videoV.CLDvideoVURL !== $('.js-image-list .cc-content-video source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'vertical');\n }\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n }\n }\n\n // Update pricing\n var $priceSelector = $('.js-prices .js-price', $productContainer).length\n ? $('.js-prices .js-price', $productContainer)\n : $('.js-prices .js-price');\n $priceSelector.replaceWith(response.product.price.html);\n\n updateAvailability(response, $productContainer);\n\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n if (imagesCanChange) {\n var imgVal = $('#js-pv-image').val();\n let $imageContainer = $productContainer.find('.js-image-list');\n $imageContainer.find('.cc-content-image').find('picture source').attr('srcset', imgVal);\n }\n\n // cites on variation group, checking cites value on color selection\n if (data.product.enableDisclaimerShipment && $('.js-disclaimer-shipment').length) {\n $('.js-disclaimer-shipment').removeClass('d-none');\n } else if (!$('.js-disclaimer-shipment').hasClass('d-none')) {\n $('.js-disclaimer-shipment').addClass('d-none');\n }\n\n // pfas on variation group/variant\n if (data.product.pfas && $('.js-banner-pfas').length) {\n $('.js-banner-pfas').removeClass('d-none');\n } else if (!$('.js-banner-pfas').hasClass('d-none')) {\n $('.js-banner-pfas').addClass('d-none');\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n handleVariantResponse(data, $productContainer, imagesCanChange);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectSizeLook(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n $('.js-product-detail-look').data('pid', data.product.id);\n $('button.add-to-cart').data('disabled', (!data.product.readyToOrder || !data.product.available));\n\n $.spinner().stop();\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectLook(selectedValueUrl) {\n if (selectedValueUrl) {\n var url = $('.js-select-single-tile-look').data('href');\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n var pid = data.product.sku;\n var dat = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: dat,\n method: 'GET',\n success: function (response) {\n if (response.stickyBar) {\n $('.js-sticky-look-container').html(response.stickyBar);\n }\n },\n error: function(err) {\n }\n });\n // handleVariantResponse(data, $productContainer, imagesCanChange);\n // $('body').trigger('product:afterAttributeSelect',\n // { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nfunction performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, onSuccess, onError, customFrom) {\n var data = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var masterPid = $('.js-master-pid').val();\n if (addToCartUrl) {\n $.spinner().start();\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: data,\n success: function (data) {\n // handlePostCartAdd(data);\n $.spinner().stop();\n if (onSuccess != null) {\n // analytics\n\n // get product by pid\n var totPid = pid;\n var generalPid;\n if (data.skuMaster) {\n generalPid = data.skuMaster;\n } else if (masterPid) {\n generalPid = masterPid;\n } else if (data.productColor) {\n var split = totPid.split(data.productColor);\n if (split) {\n generalPid = split[0];\n }\n }\n\n // get product -> js-analytics-impressions-product-initialized prevent minicart elements to be selected\n var selectorPrefix = '.js-analytics-impressions-product-initialized.js-analytics-click-product-info-';\n // after categorization by var group, multiple product wish same generalPid exist and previous could be taken sending wrong color to analytics\n var product = $(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]');\n\n if (product.length <= 0) {\n // if generalPid and product Color combination not exist trying to extract from pid - size TODO: pid concatenation\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n } else if (product.length > 1) {\n // it should happen when slick slider active due to multiple slide existence\n product = $(product[0]);\n }\n\n if (customFrom) {\n product.attr('data-sticky', customFrom);\n }\n\n $('body').trigger('analytics:pushAddToCart', product);\n\n // END\n // update live content\n $('.js-mini-cart-update').text(data.addToCartLiveContent);\n\n onSuccess(data);\n }\n },\n error: function () {\n $.spinner().stop();\n if (onError != null) {\n onError();\n }\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice', function (e) {\n // When the user clicks on one color inside the stickybar selection, change the aria-label of the selected color.\n $('.cc-content-thumb-color-sticky').attr(\"aria-label\", $(this).attr(\"data-accessibility-change\"));\n\n if ($(this).hasClass('js-color-choiche-sticky-look')) {\n attributeSelectLook($(this).attr('data-url'));\n } else {\n e.preventDefault();\n $(document).find('.js-image-list .cc-image').removeClass('lazyload');\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n colorAttributeLook: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice.js-color-choiche-sticky-look', function (e) {\n window.scrollTo(0, 0);\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n });\n },\n\n selectAttribute: function () {\n $(document).on('click', '.js-select-size', function (e) {\n e.preventDefault();\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n if ($(this).closest('.cc-content-size-choice-sticky').hasClass('js-select-size-sticky-look')) {\n attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n $('.js-upload-size').find('.js-size-container').removeClass('cc-active');\n $('.js-upload-size').find('.js-select-size').removeClass('cc-active');\n $(this).addClass('cc-active');\n $(this).parent().addClass('cc-active');\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n $('.js-sticky-choice-look').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // $productContainer = $(e.currentTarget).closest('.js-sticky-look-container');\n // attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n } else {\n attributeSelect($(e.currentTarget).data('value'), $productContainer, false);\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n // 4Gift action url after size select\n var colorSelect = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n performAddToCart: function (target) {\n var addToCartUrl;\n var pid;\n var pidsObj;\n\n $('body').trigger('product:beforeAddToCart', target);\n\n pid = getPidValue($(target));\n if (!pid) {\n pid = $(target).data('pid');\n };\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = getQuantitySelected($(target));\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var newStickyAddToCartButton = '';\n if (window.isMobile && $(target).closest('.cc-pdp__info').length) {\n var isStickyTop = $(target).closest('.cc-pdp__info').hasClass('cc-pdp__info--top');\n if (isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_top_macro';\n }\n var isMicroSticky = $(target).hasClass('js-went-micro-button');\n if (isMicroSticky) {\n newStickyAddToCartButton = 'sticky_bar_top_micro';\n $(target).removeClass('js-went-micro-button');\n }\n if (!isMicroSticky && !isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_bottom';\n }\n } else {\n newStickyAddToCartButton = $(target).attr('data-sticky');\n }\n\n $(target).trigger('updateAddToCartFormData', form);\n\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, newStickyAddToCartButton);\n },\n\n performAddToCartLook: function(target) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n },\n\n addToCart: function () {\n var t = this;\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n if ($(this).hasClass('js-add-to-cart-sticky-look')) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n } else {\n t.performAddToCart(this);\n }\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl,\n performAddToCartCall: performAddToCartCall\n};\n","/* eslint-disable require-jsdoc */\nmodule.exports = function (containerElement) {\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n this.containerEl.style.display = 'block';\n };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\n };\n return new Constructor();\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var processInclude = require('./util');\n\n$(document).ready(function () {\n if (!window.ApplePaySession || !window.ApplePaySession.canMakePayments()) {\n $('.js-apple-pay-container').remove();\n }\n var name = 'lastPage=';\n var lastPage = '';\n var cookieArray = document.cookie.split(';');\n for (var i = 0; i < cookieArray.length; i++) {\n var cookieItem = cookieArray[i];\n if (cookieItem.indexOf(name) !== -1) {\n lastPage = cookieItem.substring(name.length + 1, cookieItem.length);\n }\n }\n if (lastPage === '' || document.URL !== lastPage) {\n document.cookie = 'orderID' + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n document.cookie = 'orderEmail' + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n document.cookie = 'lastPage' + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n }\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./components/footer'));\n processInclude(require('./components/collapsibleItem'));\n processInclude(require('./components/search'));\n processInclude(require('./components/accessibility'));\n processInclude(require('./components/menuNav'));\n processInclude(require('./components/countdown'));\n processInclude(require('./components/locale'));\n processInclude(require('./components/analytics'));\n processInclude(require('./wishlist/wishlist'));\n var $phoneHeader = $('.js-phone-header');\n var $phoneHeaderMobile = $('.js-phone-header-tab-mob');\n var url = $phoneHeader.data('url');\n $.ajax({\n url: url,\n type: 'get',\n success: function (data) {\n if (data.enableInThisCountry) {\n $phoneHeader.removeClass('d-none');\n $phoneHeaderMobile.removeClass('d-none');\n $phoneHeader.find('.cc-text').text(data.label);\n $phoneHeaderMobile.find('.cc-text').text(data.label);\n\n var phoneHeaderElement = $('.js-phone-header');\n var dataAccessibilityValue = phoneHeaderElement.attr('data-accessibility');\n\n $phoneHeader.find('.cc-icon').attr('aria-label', dataAccessibilityValue+ \" \" + data.label);\n $phoneHeaderMobile.find('.cc-icon').attr('aria-label', dataAccessibilityValue+ \" \" + data.label);\n \n $('.js-phone-header-tab-mob').attr('href', 'tel:' + data.value);\n } else {\n $phoneHeader.hide();\n $phoneHeaderMobile.hide();\n $('.js-phone-row').remove();\n }\n },\n error: function () {\n $phoneHeader.hide();\n $phoneHeaderMobile.hide();\n $('.js-phone-row').remove();\n }\n });\n if ($(document).find('.js-update-cartItemNumber').length) {\n var cartItemNumberUrl = $(document).find('.js-update-cartItemNumber').val();\n $.ajax({\n url: cartItemNumberUrl,\n type: 'get',\n success: function (data) {\n if (data) {\n var loginObject = $('.login.lazyload');\n var visitorObject = $('.visitorId.lazyload');\n var cartItemObject = $('.cartItemNumber.lazyload');\n loginObject.text(data.isLogged);\n visitorObject.text(data.userUUID);\n cartItemObject.text(data.cartItemNumber);\n loginObject.removeClass('lazyload');\n visitorObject.removeClass('lazyload');\n cartItemObject.removeClass('lazyload');\n $('body').trigger('analytics:pushuserdatachange');\n }\n },\n error: function () {\n\n }\n });\n }\n var $deliveryTime = $('.js-delivery-time');\n if ($deliveryTime.length > 0) {\n var urlDelivery = $deliveryTime.data('url');\n $.ajax({\n url: urlDelivery,\n type: 'get',\n success: function (data) {\n if (data.minDays && data.maxDays) {\n $('.js-delivery-min-days').text(data.minDays);\n $('.js-delivery-max-days').text(data.maxDays);\n }\n },\n error: function () { }\n });\n }\n\n // Full page cache: load minicart quantity ajax\n if ($('.minicart[data-minicartajax-url]').length > 0) {\n $.post($('.minicart[data-minicartajax-url]').eq(0).data('minicartajax-url'), {}, function(data) {\n $('.minicart', '.cc-section-right').each(function() {\n $(this).html(data);\n });\n });\n }\n // Full page cache: load minicart content ajax and init Paypal\n if ($('#cart-placeholder').length) {\n $.post($('#cart-placeholder').eq(0).data('cartajax-url'), {}, function(data) {\n $('#cart-placeholder').each(function() {\n $(data).insertAfter(this);\n $(this).remove();\n processInclude(require('./components/miniCartSide'));\n });\n });\n }\n\n // Full page cache: load shipping banner content via ajax\n if ($('#banner-placeholder').length) {\n $.post($('#banner-placeholder').eq(0).data('bannerajax-url'), {}, function(data) {\n $('#banner-placeholder').each(function() {\n $(data).insertAfter(this);\n $(this).remove();\n\n var isVisible = $('.js-locale-switch-popup').attr('data-isvisible');\n if (isVisible === 'true'){\n var geolocationountry = $('.js-locale-switch-popup').attr('data-whereami');\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'checklocale', eventAction: 'start', eventLabel: geolocationountry});\n }\n });\n });\n }\n});\n\nif ($(document).find('.cc-full-page-dashboard').length > 0 || $(document).find('.js-ContactUs-Page').length > 0 || $(document).find('.js-Return-page').length > 0 || $(document).find('.js-appointment').length > 0) {\n processInclude(require('./common/datepicker'));\n}\n\n// common should be processed first to enable window settings\nrequire('./common/common');\n\nvar cntrlIsPressed = false;\n\n$(document).keydown(function(event) {\n if (event.which == '17') {\n cntrlIsPressed = true;\n }\n if (event.metaKey) {\n cntrlIsPressed = true;\n }\n});\n\n$(document).keyup(function() {\n cntrlIsPressed = false;\n});\n\n$('body').on('click', '*[href]', function(e) {\n var targetBlank = false;\n targetBlank = $(this).attr('target') ? $(this).attr('target') === '_blank' : false;\n if ($(this)[0].classList.value.indexOf('cc-social') === -1 && $(this)[0].classList.value.indexOf('js') === -1 && $(this).attr('href').indexOf('#') === -1 && !cntrlIsPressed && !targetBlank && $(this).attr('href').indexOf('javascript:void(0)') === -1) {\n $.spinner().start();\n }\n});\n","'use strict';\n\nvar scrollAnimate = require('./scrollAnimate');\n\nmodule.exports = function () {\n $('.back-to-top').click(function () {\n scrollAnimate(0);\n });\n\n $(document).on('click', '.js-open-size-chart-footer', function (e) {\n // analytics\n dataLayer.push({\n event: 'sizeChart',\n eventCategory: 'Size Chart Footer',\n eventAction: 'open'\n });\n // END\n });\n\n if ($('.js-copyright-year').length) {\n var d = new Date();\n var year = d.getFullYear();\n var value = parseInt($('.js-copyright-year').html());\n if (value !== year) {\n $('.js-copyright-year').html(year);\n }\n }\n\n $(document).on('click', '.js-footer-newsletter-button', function(){\n var target = $(this).attr('data-target');\n var email = $(this).closest('.cc-footer-newsletter').find('.js-email-footer:visible').val();\n if (target) {\n $(document).trigger('overlaynewsletter:showmodal', {\n target: target,\n source: 'footer',\n email: email,\n });\n }\n });\n};\n","'use strict';\nmodule.exports = function () {\n var sizes = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n sizes.forEach(function (size) {\n var selector = '.collapsible-' + size + ' .title';\n $('body').on('click', selector, function (e) {\n e.preventDefault();\n $(this).parents('.collapsible-' + size).toggleClass('active');\n\n if ($(this).parents('.collapsible-' + size).hasClass('active')) {\n $(this).attr('aria-expanded', true);\n } else {\n $(this).attr('aria-expanded', false);\n }\n });\n });\n};\n","'use strict';\n\nvar debounce = require('lodash/debounce');\n\nvar endpoint = $('.suggestions-wrapper').data('url');\nvar minChars = 3;\nvar searchedWord;\nvar UP_KEY = 38;\nvar DOWN_KEY = 40;\nvar DIRECTION_DOWN = 1;\nvar DIRECTION_UP = -1;\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),a[href],input';\n/**\n * Retrieves Suggestions element relative to scope\n *\n * @param {Object} scope - Search input field DOM element\n * @return {JQuery} - .suggestions-wrapper element\n */\nfunction getSuggestionsWrapper(scope) {\n return $('.suggestions-wrapper');\n}\n\n/**\n * Determines whether DOM element is inside the .search-mobile class\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n * @return {boolean} - Whether DOM element is inside div.search-mobile\n */\nfunction isMobileSearch(scope) {\n return !!$(scope).closest('.search-mobile').length;\n}\n\n/**\n * Remove modal classes needed for mobile suggestions\n *\n */\nfunction clearModals() {\n $('body').removeClass('modal-open');\n $('header').siblings().attr('aria-hidden', 'false');\n $('.js-suggestions').removeClass('modal');\n}\n\n/**\n * Apply modal classes needed for mobile suggestions\n *\n * @param {Object} scope - Search input field DOM element\n */\nfunction applyModals(scope) {\n if (isMobileSearch(scope)) {\n $('body').addClass('modal-open');\n $('header').siblings().attr('aria-hidden', 'true');\n getSuggestionsWrapper(scope).find('.js-suggestions').addClass('modal');\n }\n}\n\n/**\n * Tear down Suggestions panel\n */\nfunction tearDownSuggestions() {\n $('input.search-field').val('');\n clearModals();\n $('.search-mobile .js-suggestions').unbind('scroll');\n $('.suggestions-wrapper').empty();\n}\n\n/**\n * Toggle search field icon from search to close and vice-versa\n *\n * @param {string} action - Action to toggle to\n */\n/*\nfunction toggleSuggestionsIcon(action) {\n var mobileSearchIcon = '.search-mobile button.';\n var iconSearch = 'fa-search';\n var iconSearchClose = 'fa-close';\n\n if (action === 'close') {\n $(mobileSearchIcon + iconSearch).removeClass(iconSearch).addClass(iconSearchClose).attr('type', 'button');\n } else {\n $(mobileSearchIcon + iconSearchClose).removeClass(iconSearchClose).addClass(iconSearch).attr('type', 'submit');\n }\n} */\n\n/**\n * Determines whether the \"More Content Below\" icon should be displayed\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction handleMoreContentBelowIcon(scope) {\n if (($(scope).scrollTop() + $(scope).innerHeight()) >= $(scope)[0].scrollHeight) {\n $('.more-below').fadeOut();\n } else {\n $('.more-below').fadeIn();\n }\n}\n\n/**\n * Positions Suggestions panel on page\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction positionSuggestions(scope) {\n var outerHeight;\n var $scope;\n var $suggestions;\n var top;\n\n if (isMobileSearch(scope)) {\n $scope = $(scope);\n top = $scope.offset().top;\n outerHeight = $scope.outerHeight();\n $suggestions = getSuggestionsWrapper(scope).find('.js-suggestions');\n $suggestions.css('top', top + outerHeight);\n\n handleMoreContentBelowIcon(scope);\n\n // Unfortunately, we have to bind this dynamically, as the live scroll event was not\n // properly detecting dynamic suggestions element's scroll event\n $suggestions.scroll(function () {\n handleMoreContentBelowIcon(this);\n });\n }\n}\n\n/**\n * Process Ajax response for SearchServices-GetSuggestions\n *\n * @param {Object|string} response - Empty object literal if null response or string with rendered\n * suggestions template contents\n */\nfunction processResponse(response) {\n var $suggestionsWrapper = getSuggestionsWrapper(this).empty();\n $('.js-no-suggestions').hide();\n $('.js-suggestions').show();\n // $.spinner().stop();\n\n if (!(typeof (response) === 'object')) {\n $suggestionsWrapper.append(response).show();\n $(this).siblings('.reset-button').addClass('d-sm-block');\n positionSuggestions(this);\n\n if (isMobileSearch(this)) {\n // toggleSuggestionsIcon('close');\n applyModals(this);\n }\n\n // Trigger screen reader by setting aria-describedby with the new suggestion message.\n var suggestionsList = $('.js-suggestions .item');\n $('#sr-search-suggestions-ready-desktop').text($('#js-sr-searchsuggestionsready-desktop').val());\n $('#sr-search-suggestions-ready-mobile').text($('#js-sr-searchsuggestionsready-mobile').val());\n if ($(suggestionsList).length) {\n $('input.search-field').attr('aria-describedby', 'search-result-count');\n } else {\n $('input.search-field').removeAttr('aria-describedby');\n }\n } else {\n $suggestionsWrapper.hide();\n $('#sr-search-suggestions-ready-desktop').empty();\n $('#sr-search-suggestions-ready-mobile').empty();\n }\n $('body').trigger('suggestion:productAnalytics');\n}\n\nfunction specialCharChecker(toCheck) {\n const forbiddenChar = ['<', '>', '&', '%', '(', ')', '|', '!', '$', '^', '`', '?'];\n const errorFieldDesktop = $('#search-assistive-text-desktop .cc-error-message');\n const errorFieldMobile = $('#search-assistive-text-mobile .cc-error-message');\n const jsSearchControlSelector = $('.js-search-control');\n\n var isValid = true;\n\n forbiddenChar.forEach(element => {\n if (toCheck.indexOf(element) !== -1) {\n isValid = false;\n return true;\n }\n });\n\n function updateErrorField($errorField) {\n if (!isValid && toCheck.length > 0) {\n if ($errorField.hasClass('d-none')) $errorField.removeClass('d-none');\n jsSearchControlSelector.attr('data-isvalid', 'false');\n } else {\n if (!$errorField.hasClass('d-none')) $errorField.addClass('d-none');\n jsSearchControlSelector.attr('data-isvalid', 'true');\n }\n }\n\n updateErrorField(errorFieldDesktop);\n updateErrorField(errorFieldMobile);\n \n return isValid;\n}\n\n/**\n * Retrieve suggestions\n *\n * @param {Object} scope - Search field DOM element\n */\nfunction getSuggestions(scope) {\n var searchWord = $(scope).val();\n // NEC-3045 add control to special char\n var validChar = specialCharChecker(searchWord);\n if (searchWord.length >= minChars && searchWord !== searchedWord && validChar) {\n searchedWord = searchWord;\n // $.spinner().start();\n $.ajax({\n context: scope,\n url: endpoint + encodeURIComponent(searchWord),\n method: 'GET',\n success: processResponse,\n error: function () {\n // $.spinner().stop();\n }\n });\n } else {\n // $('.js-no-suggestions').show();\n // // toggleSuggestionsIcon('search');\n // $(scope).siblings('.reset-button').removeClass('d-sm-block');\n // clearModals();\n // getSuggestionsWrapper(scope).empty();\n }\n}\n\n/**\n * Handle Search Suggestion Keyboard Arrow Keys\n *\n * @param {Integer} direction takes positive or negative number constant, DIRECTION_UP (-1) or DIRECTION_DOWN (+1)\n */\nfunction handleArrow(direction) {\n // get all li elements in the suggestions list\n var suggestionsList = $('.js-suggestions .item');\n if (suggestionsList.filter('.selected').length === 0) {\n suggestionsList.first().addClass('selected');\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);\n });\n } else {\n suggestionsList.each(function (index) {\n var idx = index + direction;\n if ($(this).hasClass('selected')) {\n $(this).removeClass('selected');\n $(this).removeAttr('aria-selected');\n if (suggestionsList.eq(idx).length !== 0) {\n suggestionsList.eq(idx).addClass('selected');\n suggestionsList.eq(idx).attr('aria-selected', true);\n $(this).removeProp('aria-selected');\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.eq(idx)[0].id);\n });\n } else {\n suggestionsList.first().addClass('selected');\n suggestionsList.first().attr('aria-selected', true);\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);\n });\n }\n return false;\n }\n return true;\n });\n }\n}\n\n/**\n * This function retrieves another page of content to display in the content search grid\n * @param {JQuery} $element - the jquery element that has the click event attached\n * @param {JQuery} $target - the jquery element that will receive the response\n * @return {undefined}\n */\nfunction getContent($element, $target) {\n var showMoreUrl = $element.data('url');\n if (showMoreUrl) {\n // $.spinner().start();\n $.ajax({\n url: showMoreUrl,\n method: 'GET',\n success: function (response) {\n $target.append(response);\n // $.spinner().stop();\n },\n error: function () {\n // $.spinner().stop();\n }\n });\n }\n}\n\nfunction closeSearch() {\n\n $('#sr-search-suggestions-ready-desktop').empty();\n $('#sr-search-suggestions-ready-mobile').empty();\n $('.cc-search-section').hide();\n $('.js-site-search').hide();\n $('.js-no-suggestions').hide();\n $('.js-suggestions').hide();\n\n $('body').removeClass('cc-megamenu-open');\n $('.id-js-searchIcon').data('open', false).removeClass('cc-search-open');\n var $searchButton = $('.id-js-searchIcon button');\n $searchButton.attr('aria-expanded', 'false');\n\n // Analytics\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'search_layer',\n layer_action: 'close'\n });\n}\n\nfunction openSearch() {\n const searchSection = $('.cc-search-section');\n searchSection.show();\n $('.js-site-search').show();\n var isFill = ($(document).find('input.search-field').val() !== '');\n if (isFill) {\n $('.js-suggestions').show();\n } else {\n $('.js-no-suggestions').show();\n searchedWord = '';\n }\n $('body').addClass('cc-megamenu-open');\n $('.id-js-searchIcon').data('open', true).addClass('cc-search-open');\n var $searchButton = $('.id-js-searchIcon button');\n $searchButton.attr('aria-expanded', 'true');\n\n searchSection.find('input').focus();\n\n searchSection.on('keydown', function(event) {\n let focusableNodes = searchSection.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key === 9) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n if (key === 27) { // close search overlay and focus on serch icon\n closeSearch();\n $('.id-js-searchIcon button').focus();\n }\n });\n\n // Analytics\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'search_layer',\n layer_action: 'open'\n });\n}\n\nmodule.exports = function () {\n $('form[name=\"simpleSearch\"]').submit(function (e) {\n if ($(document).find('.js-search-control').data('isvalid') === 'false') {\n e.stopPropagation();\n e.preventDefault();\n }\n var suggestionsList = $('.js-suggestions .item');\n if (suggestionsList.filter('.selected').length !== 0) {\n e.preventDefault();\n suggestionsList.filter('.selected').find('a')[0].click();\n }\n });\n\n $('input.search-field').each(function () {\n /**\n * Use debounce to avoid making an Ajax call on every single key press by waiting a few\n * hundred milliseconds before making the request. Without debounce, the user sees the\n * browser blink with every key press.\n */\n var debounceSuggestions = debounce(getSuggestions, 600);\n $(this).on('keyup focus', function (e) {\n // Capture Down/Up Arrow Key Events\n switch (e.which) {\n case DOWN_KEY:\n handleArrow(DIRECTION_DOWN);\n e.preventDefault(); // prevent moving the cursor\n break;\n case UP_KEY:\n handleArrow(DIRECTION_UP);\n e.preventDefault(); // prevent moving the cursor\n break;\n default:\n debounceSuggestions(this, e);\n }\n });\n });\n\n // $('body').on('click', function (e) {\n // if (!$('.js-suggestions').has(e.target).length && !$(e.target).hasClass('search-field')) {\n // $('.js-suggestions').hide();\n // }\n // });\n\n /*\n $('body').on('click touchend', '.search-mobile button.fa-close', function (e) {\n e.preventDefault();\n $('.js-suggestions').hide();\n toggleSuggestionsIcon('search');\n tearDownSuggestions();\n closeSearch();\n });\n */\n\n $('#product-tab').on('keypress click', function (e) {\n if (e.type === 'click' || (e.type === 'keypress' && e.key === 'Enter')) {\n setTimeout(function() {\n $('.show-filter-text').focus(); // Adding focus for accessibility\n }, 100); // Delay of 100ms to allow the element to appear\n }\n });\n\n $('#articles-tab').on('keypress click', function (e) {\n if (e.type === 'click' || (e.type === 'keypress' && e.key === 'Enter')) {\n var firstLink = $('#content-search-results a:first');\n setTimeout(function() {\n $(firstLink).focus(); // Adding focus for accessibility\n }, 100); // Delay of 100ms to allow the element to appear\n }\n });\n\n\n $('.js-site-search .reset-button').on('click', function () {\n $(this).removeClass('d-sm-block');\n });\n\n $('body').on('click', '.id-js-searchIcon', function(e) {\n var wasOpen = false;\n if ($('.id-js-searchIcon').data('open')) {\n wasOpen = true;\n }\n\n if (wasOpen) {\n closeSearch();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n }\n } else {\n openSearch();\n if (window.isMobile || window.isTabletPortrait) {\n if ($('.cc-navbar').hasClass('cc-open')) {\n $('.cc-navbar').removeClass('cc-open');\n $('.cc-mobile .cc-navbar').css('display', 'none');\n $('.cc-tablet-portrait .cc-navbar').css('display', 'none');\n $('.cc-button-menu-mobile').removeClass('cc-open').attr('aria-label', $('#js-openmenu-label').val());\n }\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n } else $('.js-menu-overlay').addClass('d-none');\n }\n\n // close share section if is open\n if ($('.cc-mobile .cc-product-detail .cc-share-button-share').is(':visible') || $('.cc-tablet-portrait .cc-product-detail .cc-share-button-share').is(':visible')) {\n $('.cc-mobile-content-share').css('display', 'none');\n $('.cc-sticky-add-to-cart').css('display', 'unset');\n $('.cc-share-button-share').removeClass('cc-share-background-overlay');\n $('body').css('overflow', 'auto');\n }\n });\n\n $('body').on('click', '.id-js-searchClose', function(e) {\n closeSearch();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n }\n });\n\n $('body').on('click', function (event) {\n var $target = $(event.target);\n if (!$target.closest('.id-js-search-container').length && $('.id-js-searchIcon').data('open')) {\n closeSearch();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n }\n }\n });\n\n // Display content results from the search\n $('body').on('click', '.container .content-search', function () {\n if ($('#content-search-results').html() === '') {\n getContent($(this), $('#content-search-results'));\n }\n });\n\n // go to selected suggested page\n $('body').on('click', '.js-content-terms', function (e) {\n e.preventDefault();\n var href = $(this).attr('href');\n window.location.href = href;\n });\n\n // Display the next page of content results from the search\n /*\n $('body').on('click', '.container .show-more-content button', function () {\n getContent($(this), $('#content-search-results'));\n $('.show-more-content').remove();\n });\n */\n var notPushed = true;\n // search-analytics\n $(document).on('click', '.js-search-analytics-ideas', function (e) {\n\n var val = $(this).find('a').text();\n\n // analytics\n if (notPushed) {\n dataLayer.push({\n event: 'internalSearch',\n eventCategory: 'Internal Search',\n eventAction: 'Ideas',\n eventLabel: val\n });\n notPushed = false;\n }\n // END\n });\n\n $(document).on('click', '.js-search-analytics-tips', function (e) {\n\n var val = $(this).attr('aria-label');\n\n if (val === 'undefined') {\n val = $(this).text();\n }\n\n // analytics\n dataLayer.push({\n event: 'internalSearch',\n eventCategory: 'Internal Search',\n eventAction: 'Tips',\n eventLabel: val\n });\n // END\n });\n\n $(document).on('keyup', '.search-field', function (e) {\n e.preventDefault();\n\n if (e.keyCode === 13) {\n var val = $('.search-field').val();\n\n // analytics\n dataLayer.push({\n event: 'internalSearch',\n eventCategory: 'Internal Search',\n eventAction: 'Tips',\n eventLabel: val\n });\n }\n // END\n });\n\n $(document).on('click', '.id-js-searchIcon', function(e) {\n // caricamento contenuto asset\n var url = $('.id-urlSuggestion').val();\n if (window.isMobile || window.isTabletPortrait) {\n var products = $('.cc-only-mobile .js-products-suggested');\n var containerClass = '.cc-only-mobile ';\n } else {\n var products = $('.cc-no-mobile .js-products-suggested');\n var containerClass = '.cc-no-mobile ';\n }\n\n for (var i = 0; i < products.length; i++) {\n var prod = products[i];\n var pid = $(prod).val();\n var urlTile = 'pid=' + pid;\n var completeUrl = url + '?' + urlTile;\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n var tempDiv = document.createElement('div');\n tempDiv.classList.add('cc-item');\n tempDiv.innerHTML = data;\n var returningPid = $(data).data('id');\n var finalClass = containerClass + '.js-item-append-' + returningPid;\n $(finalClass).replaceWith(tempDiv);\n $('body').trigger('suggestion:productAnalytics');\n }\n },\n error: function(err) {\n console.log('ERROR');\n }\n });\n }\n });\n\n $(document).find('.js-contant-suggested-noResult .js-products-suggested').each(function (index) {\n var url = $('.id-urlSuggestion').val();\n\n var products = $(this);\n var prod = $(this);\n var pid = $(prod).val();\n var urlTile = 'pid=' + pid;\n var completeUrl = url + '?' + urlTile;\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n var containerClass = '.js-contant-suggested-noResult ';\n var tempDiv = document.createElement('div');\n tempDiv.classList.add('cc-item');\n tempDiv.innerHTML = data;\n var returningPid = $(data).data('id');\n var finalClass = containerClass + '.js-item-append-' + returningPid;\n $(finalClass).replaceWith(tempDiv);\n $('body').trigger('suggestion:productAnalytics', {\n container: containerClass\n });\n }\n },\n error: function(err) {\n console.log('ERROR');\n }\n });\n });\n};\n","'use strict';\n\nmodule.exports = function () {\n\n document.body.addEventListener('keyup', function(e) {\n if (e.which === 9 && document.documentElement.classList.contains('no-focus-outline')) { // TAB\n document.documentElement.classList.remove('no-focus-outline');\n }\n });\n\n document.body.addEventListener('mousedown', function() {\n if (!document.documentElement.classList.contains('no-focus-outline')) {\n document.documentElement.classList.add('no-focus-outline');\n }\n });\n\n};\n","'use strict';\n\nconst closeMenuDesktop = () => {\n $('body').removeClass('cc-megamenu-open');\n $('.js-menu-overlay').addClass('d-none');\n $('.js-menu-close').addClass('d-none');\n $('.js-navbar-link').attr('aria-expanded', 'false');\n $('.js-header-banner').removeClass('cc-header-banner-hide');\n $('.js-header-banner').addClass('cc-header-banner-show');\n $('.cc-header').css('border-bottom', '');\n};\n\n/* const calcMaxHeight = () => {\n let headerHeight = $('.js-header').height();\n return `calc(100vh - ${headerHeight}px)`;\n}; */\n\nconst openSection = (cgid, navbarHeight, megamenuHeight) => {\n $('.js-menu-overlay').addClass('d-none');\n $('.js-navbar-link').attr('aria-expanded', 'false');\n $('#menu-overlay-' + cgid).removeClass('d-none');\n\n $('body').addClass('cc-megamenu-open');\n $('.cc-navbar-list').css('content-visibility', 'visible');\n $('.js-menu-close').removeClass('d-none');\n if ($('#' + cgid).length) {\n $('#' + cgid).attr('aria-expanded', 'true');\n } else {\n $('.js-navbar-link[data-cs-override-id=\"' + cgid + '\"]').attr('aria-expanded', 'true');\n }\n if ($('body').hasClass('cc-desktop') || $('body').hasClass('cc-tablet-landscape')) {\n $('.cc-navbar-list').css('min-height', navbarHeight + megamenuHeight);\n }\n $('.cc-header').css('border-bottom', 'none');\n $('.js-header-banner').addClass('cc-header-banner-hide');\n $('.js-header-banner').removeClass('cc-header-banner-show');\n $('body').trigger('analytics:openMenuSection');\n};\n\nconst openSectionDelayed = (cgid, delay, navbarHeight, megamenuHeight, checkAfterDelay) => {\n setTimeout(() => {\n if (checkAfterDelay && !checkAfterDelay()) {\n return;\n }\n openSection(cgid, navbarHeight, megamenuHeight);\n }, delay);\n};\n\nconst getAnalyticsTemplale = (menuType) => {\n var templateName = '';\n switch (menuType) {\n case 'catalog':\n templateName = 'catalog-standard';\n break;\n case 'editorial':\n templateName = 'four-image';\n break;\n case 'editorialtextcol':\n templateName = 'three-image-advanced';\n break;\n case 'editorialtwoc':\n templateName = 'two-image';\n break;\n case 'editorialthreec':\n templateName = 'three-image';\n break;\n case 'editorialfivec':\n templateName = 'five-image';\n break;\n case 'lifestyle':\n templateName = 'catalog-image';\n break;\n }\n return templateName;\n};\n\nfunction getAnalyticsReference(element) {\n var navItem = element.parents('.js-navbar-item');\n var mainMenu = navItem.data('analyticsmainmenu');\n var type = navItem.data('analyticmenutype');\n var analyticsTemplate = getAnalyticsTemplale(type);\n return [mainMenu, analyticsTemplate];\n}\n\nmodule.exports = function () {\n var megamenuHeight = 0;\n var navbarHeight = 59;\n\n $(document).on('headerSticky:true', function() {\n navbarHeight = 35;\n megamenuHeight = $('.cc-menu-overlay:not(.d-none) .cc-menu-overlay-content').outerHeight();\n $('.cc-navbar-list').css('min-height', navbarHeight + megamenuHeight);\n // $('.cc-header').css('border-bottom', 'none');\n });\n $(document).on('headerSticky:false', function() {\n navbarHeight = 56;\n megamenuHeight = $('.cc-menu-overlay:not(.d-none) .cc-menu-overlay-content').outerHeight();\n $('.cc-navbar-list').css('min-height', navbarHeight + megamenuHeight);\n // $('.cc-header').css('border-bottom', 'none');\n });\n\n let isTouchMode = false;\n\n // Detect touchstart (user is using touchscreen)\n $(document).on('touchstart', function () {\n isTouchMode = true;\n if ($('.cc-desktop').length > 0) {\n $('.cc-desktop').addClass('cc-big-tablet');\n }\n });\n\n // Detect mousemove (user is using a real mouse)\n $(document).on('mousemove', function () {\n isTouchMode = false;\n });\n\n // click event to prevent default navigation on ipad\n $(document).on('click', '.cc-big-tablet .js-navbar-item .js-navbar-link', function (e) {\n e.preventDefault();\n });\n\n // Hover event (only runs if not in touch mode)\n $(document).on('mouseenter', '.cc-desktop .js-navbar-item, .cc-tablet-landscape .js-navbar-item', function (e) {\n if (isTouchMode) return; // Skip hover logic if user is in touch mode\n\n let isSearchOpen = $('.id-js-searchIcon').data('open');\n if (isSearchOpen) {\n return;\n }\n e.preventDefault();\n\n if ($('.cc-search-section').is(':visible')) {\n return false;\n }\n\n const cgid = $(this).data('cgid');\n var delayMenuHover = 300;\n\n if ($('.js-menu-close').hasClass('d-none')) {\n megamenuHeight = $('#menu-overlay-' + cgid + ' .cc-menu-overlay-content').outerHeight();\n openSectionDelayed(cgid, delayMenuHover, navbarHeight, megamenuHeight, () => {\n return $(this).is(':hover');\n });\n } else {\n megamenuHeight = $('#menu-overlay-' + cgid + ' .cc-menu-overlay-content').outerHeight();\n openSectionDelayed(cgid, delayMenuHover, navbarHeight, megamenuHeight, () => {\n if ($(this).is(':hover')) {\n closeMenuDesktop();\n return true;\n }\n return false;\n });\n }\n });\n\n // Touch event (always runs for touch devices)\n $(document).on('touchstart', '.cc-desktop .js-navbar-item, .cc-tablet-landscape .js-navbar-item', function (e) {\n isTouchMode = true; // Switch to touch mode\n let isSearchOpen = $('.id-js-searchIcon').data('open');\n if (isSearchOpen) {\n return;\n }\n e.preventDefault();\n\n if ($('.cc-search-section').is(':visible')) {\n return false;\n }\n\n const cgid = $(this).data('cgid');\n megamenuHeight = $('#menu-overlay-' + cgid + ' .cc-menu-overlay-content').outerHeight();\n\n openSectionDelayed(cgid, 300, navbarHeight, megamenuHeight, () => {\n return true; // Always open on touch\n });\n });\n\n $('.js-navbar-item').on('keydown', function(e) {\n const key = e.which;\n var arrowUp = $('.js-opencontent-header-menu-svg').data('arrowup');\n var arrowDown = $('.js-opencontent-header-menu-svg').data('arrowdown');\n const cgid = $(this).data('cgid');\n\n if (key === 40 || (key === 13 && e.target.classList.contains('js-opencontent-header-menu-svg') && $(this).find('#menu-overlay-' + cgid).hasClass('d-none'))) {\n $('.js-opencontent-header-menu-svg use').attr('xlink:href', arrowDown);\n $(this).find('.js-opencontent-header-menu-svg').css('opacity', 1);\n $(this).find('.js-opencontent-header-menu-svg use').attr('xlink:href', arrowUp);\n megamenuHeight = $('#menu-overlay-' + cgid + ' .cc-menu-overlay-content').outerHeight();\n openSection(cgid, navbarHeight, megamenuHeight);\n } else if (key === 38 || key === 27 || (key === 13 && e.target.classList.contains('js-opencontent-header-menu-svg') && !$(this).find('#menu-overlay-' + cgid).hasClass('d-none'))) {\n $(this).find('.js-opencontent-header-menu-svg').css('opacity', 1);\n $(this).find('.js-opencontent-header-menu-svg use').attr('xlink:href', arrowDown);\n $('.cc-navbar-list').css('min-height', '');\n $('.cc-header').css('border-bottom', '');\n closeMenuDesktop();\n } else if (key === 13) {\n $(this).find('a.js-navbar-link').length > 0 ? $(this).find('a.js-navbar-link')[0].click() : $(this).find('span.js-navbar-link')[0].click();\n }\n });\n\n $(document).on('keyup', '.js-navbar-item', function(e) {\n const key = e.which;\n if ((key === 9 || key === 16 || key === 13) && e.target.classList.contains('js-opencontent-header-menu-svg')) {\n $('body:not(.cc-megamenu-open) .cc-page-header-fixed .cc-header:not(.cc-header-sticky)').length > 0 ? $(this).find('.js-opencontent-header-menu-svg svg').css('fill', 'white') : $(this).find('.js-opencontent-header-menu-svg svg').css('fill', 'inherit');\n $(this).find('.js-opencontent-header-menu-svg').css('opacity', 1);\n } else {\n $('.js-opencontent-header-menu-svg').css('opacity', 0);\n }\n });\n\n $(document).on('click', function(e) {\n if (!e.target.classList.contains('js-opencontent-header-menu-svg')) {\n $('.js-opencontent-header-menu-svg').css('opacity', 0);\n }\n });\n\n $(document).on('touchstart', '.js-menu-close', function(e) {\n e.preventDefault();\n $('.cc-navbar-list').css('min-height', '');\n $('.js-opencontent-header-menu-svg').css('opacity', 0);\n closeMenuDesktop();\n });\n\n $(document).on('mouseleave', '.cc-desktop .js-navbar-list', function (e) {\n let isSearchOpen = $('.id-js-searchIcon').data('open');\n if (isSearchOpen) {\n return;\n }\n e.preventDefault();\n $('.cc-navbar-list').css('min-height', '');\n $('.cc-header').css('border-bottom', '');\n closeMenuDesktop();\n });\n\n // Mobile + Tablet\n $(document).on('click', '.cc-mobile .js-navbar-item .js-navbar-link, .cc-tablet-portrait .js-navbar-item .js-navbar-link', function (e) {\n e.preventDefault();\n\n if ($('.cc-search-section').is(':visible')) {\n return false;\n }\n\n var cgid = $(this).closest('.js-navbar-item').data('cgid');\n\n $('#menu-overlay-' + cgid).removeClass('cc-hide-mobile').removeClass('d-none').addClass('cc-show-mobile');\n $('.js-menu-container-' + cgid)\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n $('.js-navbar-mobile-submenu').addClass('cc-hide-mobile');\n\n // accessibility: toggle aria-expanded attribute\n if ($('#' + cgid).length) {\n $('#' + cgid).attr('aria-expanded', 'true');\n } else {\n $('.js-navbar-link[data-cs-override-id=\"' + cgid + '\"]').attr('aria-expanded', 'true');\n }\n $('body').trigger('analytics:openMenuSection');\n $(this).closest('.cc-navbar').addClass('cc-blocked');\n return false;\n });\n\n $(document).on('click', '.cc-mobile .js-menu-subcategory-name-container .js-menu-subcategory-name, .cc-tablet-portrait .js-menu-subcategory-name-container .js-menu-subcategory-name', function (e) {\n e.preventDefault();\n\n var cgid = $(this).closest('.js-menu-subcategory-name-container').data('cgid');\n\n if ($(this).closest('.js-menu-subcategory-name-container').hasClass('hasSub')) {\n $('.js-menu-subcategory-dis').each(function() {\n if (!$(this).hasClass('js-menu-subcategory-dis-' + cgid)) {\n $(this).addClass('cc-hide-mobile');\n }\n });\n\n $('.js-menu-subcategory-link-container-' + cgid).addClass('cc-open');\n $('.js-menu-mobile-back-item').addClass('cc-hide-mobile');\n $('.js-menu-images-container').addClass('cc-hide-mobile');\n $(this).closest('.js-menu-subcategory-name-container').addClass('cc-hide-mobile');\n $(this).closest('.cc-navbar').addClass('cc-blocked');\n\n return false;\n } else {\n window.location.href = $(this).attr('href');\n }\n });\n // Mobile\n $(document).on('click', '.cc-mobile .js-menu-overlay-container .js-back-text, .cc-tablet-portrait .js-menu-overlay-container .js-back-text', function (e) {\n e.preventDefault();\n\n var cgid = $(this).data('cgid');\n\n $('#menu-overlay-' + cgid).addClass('cc-hide-mobile').removeClass('d-none');\n\n $('.js-menu-container-' + cgid).addClass('cc-hide-mobile');\n $('.js-navbar-mobile-submenu')\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n\n // accessibility: toggle aria-expanded attribute\n if ($('#' + cgid).length) {\n $('#' + cgid).attr('aria-expanded', 'false');\n } else {\n $('.js-navbar-link[data-cs-override-id=\"' + cgid + '\"]').attr('aria-expanded', 'false');\n }\n $(this).closest('.cc-navbar').removeClass('cc-blocked');\n return false;\n });\n\n $(document).on('click', '.cc-mobile .js-menu-subcategory-dis .js-back-text-subcategory, .cc-tablet-portrait .js-menu-subcategory-dis .js-back-text-subcategory', function (e) {\n e.preventDefault();\n\n var cgid = $(this).data('cgid');\n\n $('.js-menu-subcategory-dis')\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n\n $('.js-menu-subcategory-link-container-' + cgid).removeClass('cc-open');\n $('.js-menu-mobile-back-item')\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n $('.js-menu-images-container')\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n $('.js-menu-subcategory-name-container')\n .removeClass('cc-hide-mobile')\n .addClass('cc-show-mobile');\n\n $(this).closest('.cc-navbar').removeClass('cc-blocked');\n return false;\n });\n\n $(document).on('click', '.cc-mobile .cc-header .cc-button-menu-mobile, .cc-tablet-portrait .cc-header .cc-button-menu-mobile', function (e) {\n $(this).toggleClass('cc-open');\n const mobileRef = $('.cc-mobile .cc-navbar');\n const tabletRef = $('.cc-tablet-portrait .cc-navbar');\n\n mobileRef.toggleClass('cc-open');\n tabletRef.toggleClass('cc-open');\n $('.cc-navbar-list').css('content-visibility', 'visible');\n // $('body').toggleClass('cc-blocked');\n e.preventDefault();\n if ($('.cc-mobile .cc-product-detail .cc-share-button-share').is(':visible') || $('.cc-tablet-portrait .cc-product-detail .cc-share-button-share').is(':visible')) {\n $('.cc-mobile-content-share').css('display', 'none');\n $('.cc-sticky-add-to-cart').css('display', 'unset');\n $('.cc-share-button-share').removeClass('cc-share-background-overlay');\n $('body').css('overflow', 'auto');\n }\n if ($(this).hasClass('cc-open')) {\n mobileRef.css('display', 'flex');\n tabletRef.css('display', 'flex');\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n $('body').addClass('cc-blocked');\n $('body').addClass('cc-megamenu-open');\n $('.cc-button-menu-mobile').attr('aria-label', $('#js-closemenu-label').val());\n } else {\n mobileRef.css('display', 'none');\n tabletRef.css('display', 'none');\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n $('body').removeClass('cc-blocked');\n $('body').removeClass('cc-megamenu-open');\n $('.cc-button-menu-mobile').attr('aria-label', $('#js-openmenu-label').val());\n }\n });\n\n $(document).on('mousedown', '.js-navbar-analytics', function (e) {\n var navItem = $(this).parent('.js-navbar-item');\n var mainMenu = navItem.data('analyticsmainmenu');\n var type = navItem.data('analyticmenutype');\n var analyticsTemplate = getAnalyticsTemplale(type);\n var position = +navItem.data('analyticposition');\n position += 1;\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Menu Click',\n eventAction: mainMenu,\n eventLabel: position, // a primo livello solo la position\n menu_hierarchy: mainMenu + '|' + position, // a primo livello non esistono secondo e terzo liv\n menu_template: analyticsTemplate\n });\n });\n\n $(document).on('mousedown', '.js-editorial-analytics', function (e) {\n var [mainMenu, analyticsTemplate] = getAnalyticsReference($(this));\n var position = +$(this).data('analyticposition');\n position += 1;\n var imageText = $(this).data('analyticsimagetitle');\n var eventLabel = position + '|' + imageText;\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Menu Click',\n eventAction: mainMenu,\n eventLabel: eventLabel,\n menu_hierarchy: mainMenu + '|' + eventLabel,\n menu_template: analyticsTemplate\n });\n });\n\n $(document).on('mousedown', '.js-footer-analytics', function (e) {\n var [mainMenu, analyticsTemplate] = getAnalyticsReference($(this));\n var position = 'footer';\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Menu Click',\n eventAction: mainMenu,\n eventLabel: position,\n menu_hierarchy: mainMenu + '|' + position,\n menu_template: analyticsTemplate\n });\n });\n\n $(document).on('mousedown', '.js-main-analytics-second', function (e) {\n var [mainMenu, analyticsTemplate] = getAnalyticsReference($(this));\n var position = $(this).data('analyticposition');\n var menuItem = $(this).data('analyticscgid');\n var eventLabel = position + '|' + menuItem;\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Menu Click',\n eventAction: mainMenu,\n eventLabel: eventLabel,\n menu_hierarchy: mainMenu + '|' + eventLabel,\n menu_template: analyticsTemplate\n });\n });\n\n $(document).on('mousedown', '.js-main-analytics-third', function (e) {\n var [mainMenu, analyticsTemplate] = getAnalyticsReference($(this));\n var position = 'main';\n var secondLevelMenu = $(this).data('analyticssecondcgid');\n var thirdLevelMenu = $(this).data('analyticscgid');\n var eventLabel = position + '|' + secondLevelMenu + '|' + thirdLevelMenu;\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Menu Click',\n eventAction: mainMenu,\n eventLabel: eventLabel,\n menu_hierarchy: mainMenu + '|' + eventLabel,\n menu_template: analyticsTemplate\n });\n });\n};\n","module.exports = function () {\n\n function initInterval ($this, countDownDate, element) {\n // Get today's date and time\n var now = new Date().getTime();\n $this.addClass('cc-active');\n\n // Find the distance between now and the count down date\n var distance = countDownDate - now;\n\n // Time calculations for days, hours, minutes and seconds\n var days = ('0' + Math.floor(distance / (1000 * 60 * 60 * 24))).slice(-2);\n var hours = ('0' + Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))).slice(-2);\n var minutes = ('0' + Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))).slice(-2);\n var seconds = ('0' + Math.floor((distance % (1000 * 60)) / 1000)).slice(-2);\n\n // Output the result in an element with id=\"demo\"\n element.html('' + days + ':' + hours + ':' + minutes + ':' + seconds + '');\n };\n\n $(document).ready(function () {\n $('.js-date-countdown').each(function() {\n var date = $(this).data('date-countdown');\n var countDownDate = new Date(date).getTime();\n var element = $(this);\n var $this = $(this);\n var now = new Date().getTime();\n var distance = countDownDate - now;\n\n if (distance < 0) {\n element.hide();\n } else {\n initInterval($this, countDownDate, element);\n }\n\n // Update the count down every 1 second\n var x = setInterval(function() {\n initInterval($this, countDownDate, element);\n\n var now = new Date().getTime();\n var distance = countDownDate - now;\n\n // If the count down is over, write some text\n if (distance < 0) {\n clearInterval(x);\n element.html('00:00:00:00');\n }\n }, 1000);\n });\n });\n};\n","'use strict';\nconst { appendToUrl } = require('../common/urlUtil');\n\nfunction addDropdownFix() {\n // add code to fix dropdown only if not present already.\n var fixAlreadyPresent = $._data(document, \"events\").keydown.some(e => e.namespace === 'fixdropdown');\n if (!fixAlreadyPresent){\n $(document).on('keydown.fixdropdown', (e)=>{\n if (e.key === 'Tab'){\n $('.dropdown-toggle').attr('tabindex', '0');\n }\n });\n\n $(document).on('keydown.fixdropdown', '.dropdown:not(.show) .dropdown-toggle', function(e){\n if (e.key === 'Enter' || e.key === ' ') {\n // trigger click and move focus to dropdown items\n $(this)[0].click();\n var $menu = $(this).siblings('.dropdown-menu');\n $menu.find('.dropdown-item')[0].focus();\n }\n });\n\n $(document).on('keydown.fixdropdown', '.dropdown-item', function(e){\n if (e.key === 'Enter' || e.key === ' ') {\n $(this)[0].click();\n }\n });\n }\n}\n\nmodule.exports = function () {\n // open pop-up\n $(document).on('click', '.js-locale-show', function (e) {\n e.preventDefault();\n var url = $(this).data('url');\n if (!$(this).hasClass('js-complete-upload')) {\n $(this).addClass('js-complete-upload');\n $.spinner().start();\n var urlPopUp = $(document).find('.js-lazyload-popUp').data('action-url');\n $.ajax({\n url: urlPopUp,\n success: function(data) {\n $(document).find('.js-lazyload-popUp').html(data.popUpTemplate);\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n $button.attr('aria-label', label);\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').removeAttr('role');\n });\n $('.js-update-PopUp-selectLanguages').html(data.imgPopUp);\n var imgPath;\n if (($('body').hasClass('cc-desktop')) && ($('#js-img-desktop').length > 0)) {\n imgPath = $('#js-img-desktop').val();\n $('.js-select-language-img').attr('src', imgPath);\n } else if (($('body').hasClass('cc-tablet')) && ($('#js-img-tablet').length > 0)) {\n imgPath = $('#js-img-tablet').val();\n $('.js-select-language-img').attr('src', imgPath);\n } else if (($('body').hasClass('cc-mobile')) && ($('#js-img-mobile').length > 0)) {\n imgPath = $('#js-img-mobile').val();\n $('.js-select-language-img').attr('src', imgPath);\n }\n $('.js-locale-popup').show();\n $('body').addClass('cc-blocked');\n addDropdownFix();\n $.spinner().stop();\n $('.cc-locale-popup-content-form')[0].focus();\n var localeCode = $('.js-changelocale-popup-content').attr('data-currentlocale');\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'changelocale', eventAction: 'start', eventLabel: localeCode});\n }\n });\n } else {\n $('.js-locale-popup').show();\n $('body').addClass('cc-blocked');\n $('.cc-locale-popup-content-form')[0].focus();\n var localeCode = $('.js-changelocale-popup-content').attr('data-currentlocale');\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'changelocale', eventAction: 'start', eventLabel: localeCode});\n }\n return false;\n });\n\n $(document).on('click', '.js-locale-overlay, .js-locale-popup-close', function (e) {\n e.preventDefault();\n\n $('.js-locale-popup').hide();\n $('.js-locale-switch-popup').hide();\n $('body').removeClass('cc-blocked');\n\n var url = $(this).data('action');\n var localeCode = $('.js-locale-mylocale').data('mylocale');\n var type = 'no';\n var action = $('.page').data('action') !== null ? $('.page').data('action') : '';\n var querystring = $('.page').data('querystring') !== null ? $('.page').data('querystring') : '';\n\n var urlParams = {\n localeCode: localeCode,\n action: action,\n query: querystring,\n type: type,\n geoloc: true\n };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (response) {\n },\n error: function (_err) {\n }\n });\n\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'checklocale', eventAction: 'close', eventLabel: localeCode});\n });\n\n $(document).on('click', '.js-changelocale-overlay, .js-changelocale-popup-close', function (e) {\n e.preventDefault();\n\n $('.js-locale-popup').hide();\n $('.js-locale-switch-popup').hide();\n $('body').removeClass('cc-blocked');\n var localeCode = $('.js-changelocale-popup-content').attr('data-currentlocale');\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'changelocale', eventAction: 'close', eventLabel: localeCode});\n });\n\n $(document).on('change', '.js-locale-popup-form-country-select', function (e) {\n e.preventDefault();\n\n // var action = $('.page').data('action');\n var localeCode = $(this).find(':selected').data('locale');\n // var localeCurrencyCode = $(this).data('currencycode');\n // var queryString = $('.page').data('querystring');\n var url = $('.js-changelocale-popup-content').data('url');\n var urlParams = {\n localeCode: localeCode\n };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (response) {\n $('#js-locale-popup-form-language-select').selectpicker().find('option').remove().selectpicker('refresh');\n for (var i = 0; i < response.locale.curLangs.length; i++) {\n $('#js-locale-popup-form-language-select').append('').selectpicker('refresh');\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n });\n\n $(document).on('click', '.js-locale-popup-form-button-link', function (e) {\n e.preventDefault();\n\n var url = $(this).data('action');\n var localeCode = $('#js-locale-popup-form-language-select').find(':selected').data('locale');\n var countryCode = $('#js-locale-popup-form-language-select').find(':selected').data('countrycode');\n var type = $(this).data('type');\n var action = $('.page').data('action') !== null ? $('.page').data('action') : '';\n var querystring = $('.page').data('querystring') !== null ? $('.page').data('querystring') : '';\n\n var urlParams = {\n localeCode: localeCode,\n countryCode: countryCode,\n type: type,\n action: action,\n query: querystring,\n geoloc: false,\n cookieSave: true\n };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (response) {\n if (response && response.redirectUrl) {\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'changelocale', eventAction: 'confirm', eventLabel: localeCode });\n window.location.href = response.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n });\n\n $(document).on('click', '.js-locale-international-form-button-link', function (e) {\n e.preventDefault();\n\n var url = $(this).data('action');\n var localeCode = $('#js-locale-popup-form-language-select').find(':selected').data('locale');\n var countryCode = $('#js-locale-popup-form-language-select').find(':selected').data('countrycode');\n var type = $(this).data('type');\n var action = 'Home-Show';\n var querystring = $('.page').data('querystring') !== null ? $('.page').data('querystring') : '';\n\n var urlParams = {\n localeCode: localeCode,\n countryCode: countryCode,\n type: type,\n action: action,\n query: querystring,\n geoloc: false,\n cookieSave: true\n };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (response) {\n if (response && response.redirectUrl) {\n window.location.href = response.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n });\n\n $(document).on('change', '.js-switch-locale-popup-form-country-select', function(e) {\n e.preventDefault();\n var country = $('.js-switch-locale-popup-form-country-select').find(':selected').data('country');\n $('.js-locale-popup-form-title-countryname').text(country);\n });\n\n $(document).on('click', '.js-switch-locale-popup-form-button-link', function (e) {\n e.preventDefault();\n\n var localeCode = $('.js-switch-locale-popup-form-country-select').find(':selected').data('locale');\n var country = $('.js-switch-locale-popup-form-country-select').find(':selected').data('country');\n var countryCode = $('.js-switch-locale-popup-form-country-select').find(':selected').data('countrycode');\n\n $('.js-locale-popup-form-title-countryname-yesno').text(country);\n\n var url = $(this).data('action');\n var action = $('.page').data('action') !== null ? $('.page').data('action') : '';\n\n var data = {\n localeCode: localeCode,\n country: country,\n countryCode: countryCode,\n action: action\n };\n\n url = appendToUrl(url, data);\n\n $.ajax({\n url: url,\n type: 'get',\n datatype: 'json',\n success: function (response) {\n if (response && response.redirectUrl) {\n $('body').trigger('analytics:pushgeolocationbanner',\n {eventCategory: 'checklocale', eventAction: 'confirmchange',\n eventLabel: localeCode.indexOf('_') > 0 ? localeCode.substring(localeCode.indexOf('_') + 1) : localeCode });\n window.location.href = response.redirectUrl;\n }\n },\n error: function (err) {\n }\n\n });\n });\n\n $(document).on('click', '.js-locale-popup-backtoconfirm', function(e) {\n e.preventDefault();\n\n $('.js-locale-popup-content-yesno').hide();\n $('.js-locale-popup-content').show();\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'checklocale', eventAction: 'change', eventLabel: ''});\n });\n\n $(document).on('click', '.js-switch-locale-popup-form-button-link-yesno', function (e) {\n e.preventDefault();\n\n var url = $(this).data('action');\n var localeCode = $('.js-locale-popup-form-title-countryname-yesno').data('locale');\n var type = $(this).data('type');\n var action = $('.page').data('action') !== null ? $('.page').data('action') : '';\n var querystring = $('.page').data('querystring') !== null ? $('.page').data('querystring') : '';\n\n if (type === 'no') {\n localeCode = $('.js-locale-mylocale').data('mylocale');\n }\n\n var urlParams = {\n localeCode: localeCode,\n action: action,\n query: querystring,\n type: type,\n geoloc: true\n };\n\n url = appendToUrl(url, urlParams);\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (response) {\n if (response && response.redirectUrl && response.redirectUrl !== 'no') {\n $('body').trigger('analytics:pushgeolocationbanner',\n {eventCategory: 'checklocale', eventAction: 'confirm',\n eventLabel: localeCode.indexOf('_') > 0 ? localeCode.substring(localeCode.indexOf('_') + 1) : localeCode });\n window.location.href = response.redirectUrl;\n } else {\n $('.js-locale-popup').hide();\n $('.js-locale-switch-popup').hide();\n $('body').removeClass('cc-blocked');\n $('body').trigger('analytics:pushgeolocationbanner', {eventCategory: 'checklocale', eventAction: 'close', eventLabel: localeCode});\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n });\n\n $(document).ready(function () {\n if ($('.js-locale-switch-popup').data('isvisible') == true) {\n $('body').addClass('cc-blocked');\n }\n });\n};\n","'use strict';\n\nvar base = require('./../common/analyticsBase');\n\nvar cntrlIsPressed = false;\n$(document).keydown(function(event) {\n if (event.which == '17') {\n cntrlIsPressed = true;\n }\n});\n\n$(document).keyup(function() {\n cntrlIsPressed = false;\n});\n\n$(document).on('analytics:dataLayerPushObj', function(_, object) {\n base.dataLayerPush(object);\n});\n\n$(document).on('analytics:promoViewAutoSlider', function(_, promo, position) {\n base.checkPromo($(promo), window.pageYOffset, position);\n});\n\n$('body').on('analytics:changeTemplateProduct', function(e) {\n base.checkCollisionNotImpressed($('.js-analytics-impressions-block-load'));\n});\n\n$('body').on('analytics:openMenuSection', function(e) {\n base.checkCollisionNotImpressed($('.js-analytics-impression-header'));\n});\n\n$(document).on('afterChange', '.slick-slider', function(e) {\n base.checkCollisionNotImpressed($(this).parents('.js-analytics-impressions-relatives-load'));\n});\n\n$('body').on('analytics:pushAddToCart', function(e, product) {\n base.pushAddToCart(product);\n});\n\n$('body').on('analytics:pushRemoveFromCart', function(e, data) {\n base.pushRemoveFromCart(data.selector, data.quantity, data.from, data.oncomplete);\n});\n\n$('body').on('analytics:pushChangeQuantity', function(e, data) {\n base.pushChangeQuantity(data.selector, data.type, data.from);\n});\n\n$('body').on('analytics:pushgeolocationbanner', function(e, data) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: data.eventCategory,\n eventAction: data.eventAction,\n eventLabel: data.eventLabel\n });\n});\n\n$(document).on('analytics:video', function(e, data) {\n base.dataLayerPush({\n event: 'video',\n eventCategory: 'Video',\n eventAction: data.eventAction,\n eventLabel: data.eventLabel\n });\n});\n\n$('body').on('analytics:clickpayment', function(e, data) {\n var paymentType = $(data).attr('id');\n if (paymentType === 'rb_scheme' || paymentType.indexOf('rb_storedCard') > -1) {\n paymentType = 'radio-CREDIT_CARD';\n }\n\n base.dataLayerPush({\n event: 'checkoutOption',\n ecommerce: {\n checkout_option: {\n actionField: { step: 4, option: paymentType }\n }\n }\n });\n});\n\n$('body').on('analytics:clickpaymentnewcheckout', function(e, data) {\n var paymentType = $(data).attr('id');\n if (paymentType === 'rb_scheme' || paymentType.indexOf('rb_storedCard') > -1) {\n paymentType = 'radio-CREDIT_CARD';\n }\n\n base.dataLayerPush({\n event: 'checkoutOption',\n ecommerce: {\n checkout_option: {\n actionField: { step: 5, option: paymentType }\n }\n }\n });\n});\n\n$(document).on('shop-the-image:modal-open', function(e){\n base.checkCollisionNotImpressed($('.js-analytics-impressions-relatives-load'));\n});\n\n$('body').on('wishlist:productAnalytics', function(e) {\n var prodAnalytics = $('.js-analytics-wishlist');\n base.loadAnalyticsProduct(prodAnalytics).done(function() {\n base.checkCollisionNotImpressed($('.js-analytics-impressions-block-load'));\n });\n});\n\n$('body').on('suggestion:productAnalytics', function(e, data) {\n var container = $(data && data.container ? data.container : (window.isMobile || window.isTabletPortrait ? '.cc-only-mobile .js-analytics-impression-search' : '.cc-no-mobile .js-analytics-impression-search'));\n var prodAnalytics = container.find('.js-analytics-suggestion');\n base.loadAnalyticsProduct(prodAnalytics).done(function() {\n base.checkCollisionNotImpressed(container);\n });\n});\n\n$(document).on('analytics:newsletter', function(e, data) {\n var obj = {\n event: 'newsletter',\n eventCategory: 'Newsletter',\n eventAction: data.eventAction,\n eventLabel: data.eventLabel\n }\n\n if (data.other) {\n obj.interestList = data.other;\n }\n\n base.dataLayerPush(obj);\n});\n\n$('body').on('analytics:pushpagechange', base.analyticsPushPage);\n\n$('body').on('analytics:pushuserdatachange', base.analyticsPushUserData);\n\n$('body').on('analytics:pushCheckoutStep', function(e, data) {\n var products = base.initializeCheckoutProducts(data.selector);\n base.pushCheckoutObject(products, data.step, data.step_type);\n});\n\n$('body').on('analytics:pushPurchase', function(e, data) {\n var products = base.initializeCheckoutProducts(data.selector);\n base.pushPurchaseObject(products);\n});\n\n// ------------------------------------------------- page events -------------------------------------------------\n$(document).on('click', '.js-promo-click', function(e) {\n var $promo = $(this).closest('.js-promo');\n base.analyticsPushPromoClick(e.currentTarget, $promo);\n});\n\n$(document).on('click', '.js-analytics-product-swatch', function(e) {\n e.preventDefault();\n base.analyticsPushChangeVariation(e.currentTarget);\n});\n\nvar alreadySend = false;\n$(document).on('mousedown', '.js-analytics-click-product', function(e) {\n // e.preventDefault();\n if ((!alreadySend && window.isMobile) || !window.isMobile) {\n var el = $(this);\n if (!el.attr('data-pid')) {\n el = $(this).siblings('.js-analytics-click-product');\n }\n var pos = 0;\n var inToRemove = 0;\n var previousElement = '';\n $('.js-analytics-click-product').each(function (index, element) {\n if (!$(element).attr('data-pid')) {\n inToRemove++;\n }\n if ($(element).attr('data-pid') && previousElement !== '' && $(element).attr('data-pid') === $(previousElement).attr('data-pid')) {\n inToRemove++;\n } else if ($(element).attr('data-pid')) {\n previousElement = element;\n }\n if (el.attr('data-pid') === $(element).attr('data-pid')) {\n pos = index - inToRemove;\n return false;\n }\n });\n pos++;\n var pid = $(this).attr('data-pid') || $(this).attr('data-id');\n\n if (!pid) {\n pid = $(e.currentTarget).closest('.product').attr('data-pid');\n }\n\n var product = $('.js-analytics-impressions-product-initialized.js-analytics-click-product-info-' + pid);\n\n if (product.length > 1) {\n let $parent = $(this).closest('.product').find('.js-analytics-click-product-info-' + pid);\n if ($parent.length) product = $parent;\n if (product.closest('.slick-slide.slick-cloned').length) {\n product = product.closest('.slick-track').find('.slick-slide:not(.slick-cloned) .js-analytics-click-product-info-' + pid);\n }\n }\n base.analyticsPushProductClick(product);\n\n if (window.isMobile && !cntrlIsPressed) {\n alreadySend = true;\n }\n }\n});\n\n$(document).on('click', '.js-add-size-product-analytics', function(e) {\n var $analytics = $(this).parents('.product').find('.new-analytics');\n var sizeCode = $(this).attr('data-value');\n\n if (e.originalEvent !== undefined) { // check if event is triggered or is a click of the user\n var masterPid = $analytics.attr('data-pid');\n var color = $analytics.attr('data-color');\n var sku = masterPid + color; // pid concatenation tiles\n \n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'size select',\n eventLabel: `${sku} - ${sizeCode}`,\n buttonType: 'Quick Cart Add',\n accessType: 'tile'\n });\n $('#size-overlay').removeData('analyticsowner');\n }\n\n // set current size\n $analytics.attr({\n 'data-size': sizeCode\n });\n});\n\n$(document).on('click', '.js-add-size-product-page-analytics', function(e) {\n var $analytics = $('.product-detail .new-analytics');\n var masterPid = $analytics.attr('data-pid');\n var color = $analytics.attr('data-color');\n var sizeCode = $(this).data('attr-value');\n\n if (e.originalEvent !== undefined) {\n var analyticsOwn = $('#size-overlay').data('analyticsowner') || $('#size-modal-sticky').data('analyticsowner');\n var accessType = $('#size-overlay').data('accessType') || $('#size-modal-sticky').data('accessType');\n var sku = masterPid + color; // pid concatenation tiles\n\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'size select',\n eventLabel: sku + ' - ' + sizeCode,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-overlay').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n }\n\n // set current size\n $analytics.attr({\n 'data-size': sizeCode\n });\n});\n\n$(document).on('click', '.js-add-color-variation-analytics', function(e) {\n var pid = $(this).data('pid');\n var color = $(this).data('value');\n var product = $('.js-analytics-click-product-info-' + pid);\n // product.attr('data-color', color);\n product.data('color', color)\n});\n\n$(document).on('click', '.js-contact-open-analytics', function(e) {\n var type = $(this).data('type');\n base.dataLayerPush({\n event: 'contactUs',\n eventCategory: 'Contact Us - Other',\n eventAction: ' submit_ok',\n eventLabel: type\n });\n});\n\n$(document).on('click', '.js-contact-checkout-analytics', function(e) {\n var type = $(this).data('type');\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'checkout',\n eventAction: ' help request',\n eventLabel: type\n });\n});\n\n$(document).on('click', '.helpButton', function(e) {\n base.dataLayerPush({\n event: 'chat',\n eventCategory: 'Chat',\n eventAction: 'chat_open'\n });\n});\n\n$(document).on('click', '.dialogButton', function(e) {\n base.dataLayerPush({\n event: 'chat',\n eventCategory: 'Chat',\n eventAction: 'chat_end'\n });\n});\n\n$(document).on('click', '.js-analytics-subcategory-mypage', function(e) {\n var subcategory = $(this).data('subcategory');\n var pushObject = {\n pagesubCategory: subcategory\n };\n\n if (subcategory === 'MyRequests') {\n pushObject.pageDetail = $('.js-myRequest-analyticsDetail').val();\n }\n\n var advisorID = $('#advisorID').val();\n if (advisorID) {\n pushObject.client_advisor_id = advisorID;\n }\n base.analyticsPushPage(e, pushObject);\n});\n\n$(document).on('click', '.cc-cta', function(e) {\n var isExlusiveServiceApponintment = $('.pagesubCategory').text() === 'exclusive-service-appointment';\n if ($(this).closest('.js-promo').length > 0) {\n if ($(this).closest('.js-promo').hasClass('js-book-appointment')) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: isExlusiveServiceApponintment ? 'appointment-page' : 'service-page',\n eventLabel: 'boutique-appointment'\n });\n }\n }\n\n if ($(this).closest('.js-promo').length > 0) {\n if ($(this).closest('.js-promo').hasClass('js-style-advisor')) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: isExlusiveServiceApponintment ? 'appointment-page' : 'service-page',\n eventLabel: 'virtual-appointment'\n });\n }\n }\n});\n\n$(document).on('click', '.js-exclusive-service-header', function(e) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'header',\n eventLabel: document.location.href\n });\n});\n\n$(document).on('click', '.js-exclusive-service-menu', function(e) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'menu',\n eventLabel: document.location.href\n });\n});\n\n$(document).on('click', '.cc-button', function(e) {\n var isExclusiveServiceBanner = $(this).closest('.js-promo') ? $(this).closest('.js-promo').hasClass('js-exclusive-service-banner') : false;\n\n if (isExclusiveServiceBanner) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'banner',\n eventLabel: document.location.href\n });\n }\n});\n\n$(document).on('click', '.js-exclusive-service-footer', function(e) {\n base.dataLayerPush({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'footer',\n eventLabel: document.location.href\n });\n});\n\n// ------------------------------------------------- page events -------------------------------------------------\n$(window).on('load', base.analyticsCheckImpressionAndPromo);\n\n$(window).scroll(base.analyticsCheckImpressionAndPromo);\n\n// ------------------------------------------------- module 31 Shop The Image -------------------------------------------------\n$('.cc-pd-shop-the-image .cc-pd__modal').on('scroll', base.analyticsCheckImpressionAndPromo);\n","\nfunction getPositions(box) {\n var $box = $(box);\n var pos = $box.offset();\n var width = $box.width();\n var height = $box.height();\n if (pos) {\n return [[pos.left, pos.left + width], [pos.top, pos.top + height]];\n } else return [];\n}\n\nfunction comparePositions(p1, p2) {\n if (p1[1] > p2[0] || p1[0] === p2[0]) {\n return true;\n } else return false;\n}\n\nconst TYPE = {\n PLP: 1,\n RELATIVE: 2,\n MAIN: 4,\n SBL: 5,\n SEARCH: 6,\n MENU: 7,\n UNDEF: 8\n};\n\n/**\n @param {jQuery} $product\n @return {TYPE}\n */\nfunction determineType(prodFrom) {\n switch (prodFrom) {\n case 'plp':\n return TYPE.PLP;\n case 'search':\n return TYPE.SEARCH;\n case 'menu':\n return TYPE.MENU;\n case 'recommendation':\n return TYPE.RELATIVE;\n case 'pdp':\n return TYPE.MAIN;\n case 'sbl':\n return TYPE.SBL;\n default:\n return TYPE.UNDEF;\n }\n}\n\n\nfunction getContainerFrom($container) {\n return $container.data('analyticsfrom');\n}\n\nfunction getContainerTemplate($container) {\n var template = $container.data('analyticstemplate');\n if (!template) {\n // plp fallback to avoid duplicate params and manage for switch\n template = $container.find('.js-plp-current-template').attr('data-currenttemplate');\n }\n return template;\n}\n\nfunction getProductTemplate($product, $container) {\n var prodTemplate = $product.attr('data-template');\n if (prodTemplate === 'retrieve' && $container) {\n var containerFrom = getContainerFrom($container);\n if (containerFrom === 'editorial') {\n prodTemplate = $product.closest('.js-promo').attr('data-creative');\n } else {\n var containerTemplate = getContainerTemplate($container);\n switch (containerTemplate) {\n case 'search/grid3Template':\n case 'search/plpLayout/grid3/searchResultNoDecorator':\n case '/search/plpLayout/grid3/productGrid':\n prodTemplate = 'grid3';\n break;\n case 'search/wallTemplate':\n case 'search/plpLayout/wall/searchResultNoDecorator':\n case '/search/plpLayout/wall/productGrid':\n prodTemplate = 'wall';\n break;\n case 'search/grid2Template':\n case 'search/plpLayout/grid2/searchResultNoDecorator':\n case '/search/plpLayout/grid2/productGrid':\n prodTemplate = 'grid2';\n break;\n case 'search/gridShopByLookTemplate':\n prodTemplate = 'gridShopByLook';\n break;\n case 'search/wallShopByLookTemplate':\n prodTemplate = 'wallShopByLook';\n break;\n default:\n prodTemplate = containerTemplate;\n break;\n }\n }\n $product.attr('data-template', prodTemplate);\n }\n return prodTemplate;\n}\n\nfunction getProductFrom($product, $container) {\n var prodFrom = $product.attr('data-from');\n if (prodFrom === 'retrieve' && $container) {\n var containerFrom = getContainerFrom($container);\n var containerTemplate = getContainerTemplate($container); // può essere diverso da quello di prodotto\n prodFrom = containerFrom;\n if (((containerFrom === 'pdp' || containerFrom === 'pdpLook') && containerTemplate === 'recommendation') || containerFrom === 'cart' || containerFrom === 'thankyou'){\n prodFrom = $container.find('.js-einstein-slick').length ? 'einstein' : 'recommendation';\n }\n $product.attr('data-from', prodFrom);\n }\n return prodFrom;\n}\n\nfunction getProductTag($product, $container) {\n if ($container) { // shows only tag within container anabled\n var containerEnabled = $container.attr('data-analyticstags') === \"true\";\n if (containerEnabled) {\n return $product.attr('data-tag-' + $product.data('color'));\n }\n }\n return '';\n}\n\nfunction getProduct3d($product, $container) {\n var prodTag = $product.attr('data-3d');\n if (prodTag && $container) { // shows only tag within container anabled\n var containerEnabled = $container.attr('data-analytics3d') === \"true\";\n if (!containerEnabled) {\n prodTag = ''; // if container doesn't enable tagging, i'll remove the value\n $product.attr('data-3d', prodTag);\n }\n }\n return prodTag;\n}\n\nfunction getCategoryGender(categoryId, sblList) {\n if (categoryId) {\n if (categoryId.indexOf('girl') !== -1) {\n return sblList ? 'kids_girl' : 'girls';\n } else if (categoryId.indexOf('boy') !== -1) {\n return sblList ? 'kids_boy' : 'boys';\n } else if (categoryId.indexOf('woman') !== -1) {\n return sblList ? 'woman' : 'female';\n } else if (categoryId.indexOf('man') !== -1) {\n return sblList ? 'man' : 'male';\n } else if (categoryId.indexOf('fragrances') !== -1) {\n return categoryId.indexOf('-m') !== -1 ? 'man' : 'woman';\n } else if (categoryId.indexOf('eyewear') !== -1) {\n return 'unisex';\n }\n }\n return '';\n}\n\nfunction getSBLGender(categoryId) {\n return getCategoryGender(categoryId, true);\n}\n\nfunction getProductList($product, prodFrom, prodTemplate) {\n var prodList = $product.attr('data-list');\n if (prodList === 'retrieve') {\n if (prodFrom === 'recommendation') {\n prodList = $('#searchList').val().replace('category-', 'relatives-');\n } else if (prodFrom === 'pdpLook') {\n if ('recommendation' === prodTemplate) {\n prodList = 'relatives-product-look';\n } else if ('pdp' === prodTemplate) {\n prodList = $('#searchList').val();\n } else {\n prodList = 'product-look';\n }\n } else if (prodFrom === 'editorial-relatives') {\n prodList = 'relatives-editorial-' + $('.storepage').attr('id');\n } else if (prodFrom === 'einstein') { // TODO: refactoring pending definire container\n prodList = $('#searchList').val().replace('category-', 'einstein-');\n } else if (prodFrom === 'editorial' || prodFrom === 'editorial-shoptheimage') {\n prodList = 'editorial-' + $('.storepage').attr('id')\n if (prodFrom === 'editorial-shoptheimage') {\n prodList += '-shop-the-image';\n }\n } else if (prodFrom === 'search') {\n prodList = 'search-suggested';\n } else if (prodFrom === 'menu') {\n var analyticsMenu = $product.parents('.js-navbar-item') ? $product.parents('.js-navbar-item').attr('data-analyticsmainmenu') : '';\n prodList = 'menu-' + analyticsMenu;\n } else if (prodFrom === 'sbl') {\n // prodList = 'shop-by-look-' + getSBLGender($product.attr('data-categoryid'));\n prodList = $('#searchList').val().replace('category-', 'pdp-');\n } else if (prodFrom === 'pdp') {\n prodList = '';\n } else {\n prodList = $('#searchList').val();\n }\n $product.attr('data-list', prodList);\n }\n return prodList;\n}\n\nfunction getProductPosition($product, $container) {\n var prodPosition = $product.attr('data-position');\n if (prodPosition === 'retrieve' && $container) {\n prodPosition = $container.find('.js-analytics-impressions-product-initialized').length + 1;\n $product.attr('data-position', prodPosition);\n }\n return prodPosition;\n}\n\nfunction getAnalyticsImage($product, $container) {\n var prodImage = $product.attr('data-img');\n if (prodImage === 'retrieve' && $container) {\n var containerFrom = getContainerFrom($container);\n if (containerFrom === 'editorial') {\n var parent = $product.closest('.js-analytics-impressions-image');\n var type = parent.attr('data-analyticsimage');\n prodImage = (parent.find('.cc-content-video').length > 0 ? 'video_' : 'img_' ) + type;\n } else if ($product.closest('.cc-product-tile')) {\n var parent = $product.closest('.cc-product-tile');\n if (parent.find('.js-analytics-impressions-image-vv').length) {\n prodImage = 'video_standard';\n } else if (parent.find('.js-analytics-impressions-image-vh').length) {\n prodImage = 'video_double';\n } else if (parent.find('.js-analytics-impressions-image-idh').length) {\n prodImage = 'img_double-hover';\n } else if (parent.find('.js-analytics-impressions-image-ifh').length) {\n prodImage = 'img_full-hover';\n } else if (parent.find('.js-analytics-impressions-image-ih').length) {\n prodImage = 'img_standard-hover';\n } else if (parent.find('.js-analytics-impressions-image-id').length) {\n prodImage = 'img_double';\n } else if (parent.find('.js-analytics-impressions-image-if').length) {\n prodImage = 'img_full';\n } else {\n prodImage = 'img_standard';\n }\n }\n $product.attr('data-img', prodImage);\n }\n return prodImage;\n}\n\n// dataLayerPush\nfunction dataLayerPush(object) {\n setTimeout(function() { // setTimeout moves this function off the main thread to break long task\n dataLayer.push(object);\n }, 0);\n};\n\n/**\n * push user_data event to datalayer to update customer data\n * @param {*} e\n */\nfunction analyticsPushUserData (e) {\n var login = $('.login').text();\n var visitorId = $('.visitorId').text();\n var cartItemNumber = $('.cartItemNumber').text();\n // var optin_sf = $('.optin_sf').text();\n\n dataLayerPush({\n // optin_sf: optin_sf,\n event: 'user_data',\n login: login,\n visitorId: visitorId,\n cartItemNumber: cartItemNumber\n });\n};\n\n/**\n * push content grouping event to datalayer to update page informartion\n * @param {*} e \n * @param {*} data overring values for pageCategory, pagesubCategory, pageDetail\n * listingType or client_advisor_id only if should be pushed\n */\nfunction analyticsPushPage (e, data) {\n // init fields if doesn't exist overriding value\n var pageCategory = (data && data.pageCategory) ? data.pageCategory : $('.pageCategory').text();\n var pagesubCategory = (data && data.pagesubCategory) ? data.pagesubCategory : $('.pagesubCategory').text();\n var pageDetail = (data && data.pageDetail) ? data.pageDetail : $('.pageDetail').text();\n\n // field common in all pages where override is useless\n var visitorShipping = $('.visitorShipping').text();\n var visitorCurrency = $('.visitorCurrency').text();\n var pageLanguage = $('.pageLanguage').text();\n var pageStatus = $('.pageStatus').text();\n\n var baseObject = {\n visitorShipping: visitorShipping,\n visitorCurrency: visitorCurrency,\n pageCategory: pageCategory,\n pagesubCategory: pagesubCategory,\n pageDetail: pageDetail,\n pageLanguage: pageLanguage,\n pageStatus: pageStatus\n };\n\n // field that should be pushed only if request by trigger\n if (data.listingType) {\n baseObject.listingType = data.listingType;\n }\n\n if (data.client_advisor_id) {\n baseObject.client_advisor_id = data.client_advisor_id;\n }\n\n dataLayerPush(baseObject);\n\n // trigger user_data on all page changes\n analyticsPushUserData(e);\n};\n\nfunction loadAnalyticsProduct(prodAnalytics) {\n var deferred = new $.Deferred();\n prodAnalytics.each(function (i, item) {\n var $item = $(item);\n if ($item.is(':empty')){\n var href = $item.attr('href');\n $.ajax({\n url: href,\n async: false\n }).done(function (data) {\n $item.append(data);\n }).fail(function(data) {\n deferred.reject(response);\n });\n }\n });\n deferred.resolve();\n return deferred.promise();\n};\n\nfunction checkPromo (promo, positionScroll, positionValue) {\n for (var i = 0; i < promo.length; i++) {\n var promoToCheck = $(promo[i]);\n var posPromo = promoToCheck.offset().top - $('.cc-content-header').height() * 1.1;\n var name;\n var position = i + 1;\n var isCtaAnchorate = promoToCheck.hasClass('cc-pd-cta-anchored');\n if ($('.storepage').length > 0) {\n name = $('.storepage').attr('id');\n } else {\n name = promoToCheck.attr('data-name');\n }\n var notToPrint = false;\n if (promoToCheck.attr('data-animated-slide')) {\n notToPrint = true;\n }\n if (isCtaAnchorate) {\n position = -1;\n posPromo = -1;\n }\n if (!notToPrint && (posPromo <= positionScroll) && !promoToCheck.hasClass('alreadyPrint')) {\n dataLayerPush({\n event: 'promoView',\n ecommerce: {\n promoView: {\n promotions: [{\n id: promoToCheck.attr('data-id'),\n name: name,\n creative: promoToCheck.attr('data-creative'),\n position: positionValue || i + 1\n }]\n }\n }\n });\n promoToCheck.addClass('alreadyPrint');\n }\n promoToCheck.attr('data-position', position);\n }\n};\n\nfunction checkPromoScrollHorizontal (promo, positionScroll) {\n for (var i = 0; i < promo.length; i++) {\n var promoToCheck = $(promo[i]);\n var posPromo = promoToCheck.width() * i - promoToCheck.width() * 0.5;\n var name;\n if ($('.storepage').length > 0) {\n name = $('.storepage').attr('id');\n } else {\n name = promoToCheck.data('name');\n }\n var notToPrint = false;\n if (promoToCheck.data('animated-slide')) {\n notToPrint = true;\n }\n if (!notToPrint && (posPromo <= positionScroll || i === 0) && !promoToCheck.hasClass('alreadyPrint')) {\n dataLayerPush({\n event: 'promoView',\n ecommerce: {\n promoView: {\n promotions: [{\n id: promoToCheck.data('id'),\n name: name,\n creative: promoToCheck.data('creative'),\n position: i + 1\n }]\n }\n }\n });\n promoToCheck.addClass('alreadyPrint');\n }\n promoToCheck.data('position', i + 1);\n }\n};\n\nfunction checkCollisionsProducts(products, posBlock, container) {\n if (products) {\n var prodCurrency = $('.visitorCurrency').text(); // taken from analytics-generate controller\n var pageAction = $('.page').data('action');\n var analyticsFrom = getContainerFrom(container);\n\n for (var i = 0; i < products.length; i++) {\n // retrieve product info\n var product = $(products[i]);\n var prodPid = product.attr('data-pid'); // skuMaster\n var prodName = product.attr('data-name');\n var prodPrice = product.attr('data-price');\n var prodPromotions = product.attr('data-promotions');\n var prodColor = product.attr('data-color');\n var prodGender = product.attr('data-gender');\n var prodAnalyticsColor = product.attr('data-color-' + prodColor);\n var prodUrl = product.attr('data-url');\n var prodAvailable = product.attr('data-available');\n var prodVideo = product.attr('data-video');\n var productIsSet = product.attr('data-isset') || false;\n var prodTemplate = getProductTemplate(product, container);\n var prodFrom = getProductFrom(product, container);\n var prodList = getProductList(product, prodFrom);\n var type = determineType(prodFrom);\n var prodPosition = getProductPosition(product, container);\n var sizeImg = getAnalyticsImage(product, container);\n var prod3d = getProduct3d(product, container);\n var prodTag = getProductTag(product, container);\n // used in product position to complete product initialization before the impression push\n product.addClass('js-analytics-impressions-product-initialized');\n\n if (pageAction !== 'Search-Show' || prodTemplate === 'wallTemplate') {\n if (prodList.indexOf('shop-by-look') !== -1 && pageAction === 'Product-Show') {\n var productDiv = product.closest('.cc-list-col').length > 0 ? product.closest('.cc-list-col') : products[i];\n } else {\n if (product.closest('.js-singleItem-plp').length > 0) {\n productDiv = product.closest('.js-singleItem-plp');\n } else if (prodFrom === 'editorial-shoptheimage') {\n productDiv = products[i];\n } else {\n productDiv = product.closest('.row').length > 0 ? product.closest('.row') : products[i];\n }\n }\n } else productDiv = products[i];\n if ((pageAction === 'Account-Show' || pageAction === 'Wishlist-ShowWishlist') && product.closest('.cc-wishlist-item').length > 0) {\n productDiv = product.closest('.cc-wishlist-item');\n }\n var posBomb = getPositions(productDiv);\n\n var horizontalMatch = comparePositions(posBlock[0], posBomb[0]);\n var verticalMatch = comparePositions(posBlock[1], posBomb[1]);\n var match = horizontalMatch && verticalMatch;\n\n if (prodFrom === 'recommendation' && (analyticsFrom === 'cart' || analyticsFrom === 'thankyou') && $(window).width() > 767) {\n var posProduct = product.parent().offset().top;\n var actPos = $('.js-analytics-impressions-block-scroll').offset().top;\n match = posProduct <= actPos;\n } else if (prodFrom === 'recommendation' || prodFrom === 'einstein' || prodFrom === 'editorial-relatives') {\n // prevent impression push before slick is loaded in pdp, or editorial pages\n if (!product.closest('.slick-slide').hasClass('slick-active')) {\n match = false;\n }\n }\n\n if (prodFrom === 'search') {\n if (!$('.id-js-searchIcon').data('open') && product.closest('.no-search-results-suggestions').length < 1) {\n match = false;\n }\n if (product.closest('.cc-item').offset().top === 0) {\n match = false;\n }\n }\n\n if (prodFrom === 'menu') {\n // prevent impression to be pushed before opening the menu section containing target products\n if (product.closest('.js-menu-overlay').hasClass('d-none')) {\n match = false;\n }\n }\n\n if (prodFrom === 'editorial-shoptheimage') {\n // prevent impression to be sended before opening the shop the image modal\n if (!product.parents('.cc-pd-shop-the-image').hasClass('cc-open')) {\n match = false;\n }\n }\n\n if (prodList === 'editorial') {\n var positionScroll = window.pageYOffset;\n var posProduct = product.offset().top;\n if (posProduct <= positionScroll) {\n var matchEditorial = true;\n }\n }\n\n if (match || matchEditorial) {\n if (prodFrom === 'pdp' && type === TYPE.MAIN) {\n dataLayerPush({\n event: 'productDetail',\n ecommerce: {\n currencyCode: prodCurrency,\n dimension27: prodVideo,\n detail: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension14: prodAvailable,\n dimension26: prodPromotions,\n callout: prodTag,\n '3dEnabled': prod3d\n }]\n }\n }\n });\n\n $(document).trigger('pdp:productDetailEventPushed');\n } else {\n dataLayerPush({\n event: 'productImpression',\n ecommerce: {\n currencyCode: prodCurrency,\n dimension25: prodFrom === 'plp' ? prodTemplate : '',\n impressions: [\n {\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n tileType: sizeImg,\n color: prodAnalyticsColor,\n gender: prodGender,\n list: prodList,\n position: prodPosition,\n dimension14: productIsSet ? '' : prodAvailable,\n dimension26: prodPromotions,\n callout: prodTag,\n '3dEnabled': prod3d\n }\n ]\n }\n });\n }\n\n product.removeClass('js-analytics-impressions-product-not-impressed').addClass('js-analytics-impressions-product-impressed');\n }\n }\n }\n};\n\nfunction checkContainerCollisionNotImpressed(container, esclusionSelector){\n var products = container.find('.js-analytics-impressions-product-not-impressed');\n if (esclusionSelector) {\n products = products.filter(function(i) {\n var product = $(this);\n return product.closest(esclusionSelector).length === 0;\n });\n }\n if (products.length > 0) {\n var posBlock = getPositions($('.js-analytics-impressions-block-scroll'));\n checkCollisionsProducts(products, posBlock, container);\n }\n}\n\nfunction checkCollisionNotImpressed(containers, esclusionSelector) {\n containers.each(function(index) {\n var container = $(this);\n if (container.attr('data-analyticsfrom') && container.attr('data-analyticsfrom') === 'wishlist'){\n // wishlist loading is async, product analytics should be loaded before sending impression \n var prodAnalytics = $('.js-analytics-wishlist');\n loadAnalyticsProduct(prodAnalytics).done(function() {\n checkContainerCollisionNotImpressed(container, esclusionSelector);\n });\n } else {\n checkContainerCollisionNotImpressed(container, esclusionSelector);\n }\n });\n};\n\nfunction analyticsCheckImpressionAndPromo(e) {\n // product impressions in the current page\n checkCollisionNotImpressed($('.js-analytics-impressions-block-load'), '.js-analytics-impressions-relatives-load');\n // product impressions contained in carousel / shop the images / etc - that have diff from attribute\n checkCollisionNotImpressed($('.js-analytics-impressions-relatives-load'));\n var promo = $('.js-promo').not('.cc-pd-slider-progression .js-promo');\n var positionScroll = window.pageYOffset;\n if ($('.cc-horizontal-scroll-item').length > 0 && window.isDesktop) {\n checkPromoScrollHorizontal(promo, positionScroll);\n } else checkPromo(promo, positionScroll);\n};\n\nfunction pushAddToCart (product) {\n var $product = $(product);\n var prodPid = $product.attr('data-pid');\n var prodName = $product.attr('data-name');\n var prodCurrency = $('.visitorCurrency').text();\n var prodPrice = $product.attr('data-price');\n var prodPromotions = $product.attr('data-promotions');\n var prodColor = $product.attr('data-color');\n var prodGender = $product.attr('data-gender');\n var prodAnalyticsColor = $product.attr('data-color-' + prodColor);\n var prodUrl = $product.attr('data-url');\n var sizeImg = getAnalyticsImage($product);\n var prodFrom = getProductFrom($product);\n var prodList = getProductList($product, prodFrom);\n var prod3d = $product.attr('data-3d');\n var prodTag = $product.attr('data-tag');\n var prodSizeCode = $product.attr('data-size');\n var prodSticky = $product.attr('data-sticky');\n var prodVideo = $product.attr('data-video');\n\n var isPDPLook = false;\n if ($('.add-to-cart').hasClass('js-add-to-cart-sticky-look')) {\n isPDPLook = true;\n var selectedElement = $('.js-color-choiche-sticky-look.cc-active');\n var productVariationGroup = selectedElement.attr('data-id');\n prodColor = selectedElement.attr('data-attr-value');\n prodAnalyticsColor = $('.js-pdp-variation-look[data-pid=\"' + productVariationGroup + '\"]').find('.new-analytics').attr('data-color-' + prodColor);\n prodSizeCode = $('.js-select-size.cc-active').attr('data-attr-value');\n }\n\n var prodSize = $product.attr('data-size-' + prodSizeCode);\n\n if (isPDPLook) {\n dataLayerPush({\n event: 'addToCart',\n ecommerce: {\n currencyCode: prodCurrency,\n add: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n dimension21: prodSize,\n dimension22: 'product-look',\n dimension26: prodPromotions,\n dimension27: false,\n quantity: 1,\n color: prodAnalyticsColor,\n gender: prodGender\n }]\n }\n }\n });\n } else {\n dataLayerPush({\n event: 'addToCart',\n ecommerce: {\n currencyCode: prodCurrency,\n add: {\n actionField: { list: prodList },\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension21: prodSize,\n dimension22: prodSticky || prodFrom,\n dimension26: prodPromotions,\n dimension27: prodVideo,\n quantity: 1,\n tileType: prodFrom === 'pdp' ? '' : sizeImg,\n callout: prodTag,\n '3dEnabled': prod3d\n }]\n }\n }\n });\n }\n};\n\nfunction pushRemoveFromCart (selector, prodQuantity, fromWhere, oncomplete) {\n var product = $(selector);\n // all product info\n var prodPid = product.data('pid');\n var prodName = product.data('name');\n var prodCurrency = $('.visitorCurrency').text();\n var prodPrice = product.data('price');\n var prodPromotions = product.data('promotions');\n var prodColor = product.data('color');\n var prodGender = product.data('gender');\n var prodAnalyticsColor = product.attr('data-color-' + prodColor);\n var prodUrl = product.data('url');\n var sizeAnalytics = product.attr('data-size-' + product.data('size'));\n var fromEventName = fromWhere === 'minicart' ? 'FromMinicart' : 'FromCart';\n\n dataLayerPush({\n event: 'remove' + fromEventName,\n ecommerce: {\n currencyCode: prodCurrency,\n remove: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension21: sizeAnalytics,\n dimension26: prodPromotions,\n quantity: prodQuantity\n }]\n }\n }\n });\n if (oncomplete) {\n oncomplete(selector);\n }\n};\n\nfunction pushChangeQuantity (selector, type, fromWhere) {\n\n var product = $(selector);\n\n // all product info\n var prodPid = product.data('pid');\n var prodName = product.data('name');\n var prodCurrency = $('.visitorCurrency').text();\n var prodPrice = product.data('price');\n var prodPromotions = product.data('promotions');\n var prodColor = product.data('color');\n var prodGender = product.data('gender');\n var prodAnalyticsColor = product.attr('data-color-' + prodColor);\n var prodUrl = product.data('url');\n var fromEventName = fromWhere === 'minicart' ? 'FromMinicart' : 'FromCart';\n var sizeAnalytics = product.attr('data-size-' + product.data('size'));\n\n if (type === 'up') {\n dataLayerPush({\n event: 'addToCart' + fromEventName,\n ecommerce: {\n currencyCode: prodCurrency,\n add: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension21: sizeAnalytics,\n dimension22: fromWhere ? fromWhere : 'cart',\n dimension26: prodPromotions,\n quantity: 1\n }]\n }\n }\n });\n } else if (type === 'down') {\n dataLayerPush({\n event: 'remove' + fromEventName,\n ecommerce: {\n currencyCode: prodCurrency,\n remove: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension21: sizeAnalytics,\n dimension26: prodPromotions,\n quantity: 1\n }]\n }\n }\n });\n }\n}\n\nfunction analyticsPushPromoClick(currentTarget, $promo) {\n var position = $promo.attr('data-position');\n var contentButtons = $(currentTarget).parents('.cc-content-buttons');\n if (contentButtons.length > 0) {\n var clickableElements = contentButtons.find('.js-promo-click');\n if (clickableElements.length > 1) {\n var subPosition = clickableElements[0] === currentTarget ? '1' : '2';\n position += '-' + subPosition;\n }\n }\n let object = {\n promoClick: {\n promotions: [{\n id: $promo.attr('data-id'),\n name: $('.storepage').length > 0 ? $('.storepage').attr('id') : $promo.attr('data-name'),\n creative: $promo.attr('data-creative'),\n position: position\n }]\n },\n promo_text: currentTarget.innerText\n }\n let data = {event: \"promoClick\", ecommerce: object}\n\n dataLayerPush(data);\n};\n\n\nfunction analyticsPushChangeVariation(currentTarget) {\n var product;\n var $this = $(currentTarget);\n\n if ($this.hasClass('js-color-choiche-sticky-look')) {\n var productName = $('.js-analytics-look-product').attr('data-name');\n dataLayerPush({\n event: 'custom_event',\n eventCategory: 'Product Look Detail Page',\n eventAction: 'color select',\n eventLabel: productName\n });\n } else {\n // get product\n if (!$('.product-detail.cc-pdp').length) {\n product = $this.closest('.cc-info-section').parent().children('.cc-image-section').children('.js-analytics-impressions-product-impressed');\n } else {\n var wrapper = $this.closest('.cc-pdp__wrp');\n if ($this.parents('.js-sticky-add-to-cart').length) {\n wrapper = $this.closest('.product-detail').find('.cc-pdp__wrp');\n }\n product = wrapper.children('.cc-pdp__images').children('.js-analytics-impressions-product-impressed');\n }\n\n // execute switch\n var newColor = $this.data('attr-value');\n product.attr('data-color', newColor);\n\n // all product info\n var prodPid = product.attr('data-pid');\n var prodName = product.attr('data-name');\n var prodCurrency = $('.visitorCurrency').text();\n var prodPrice = product.attr('data-price');\n var prodPromotions = product.attr('data-promotions');\n var prodGender = product.attr('data-gender');\n var prodUrl = product.attr('data-url');\n var prodAvailable = product.attr('data-available');\n var prodVideo = product.attr('data-video');\n var prod3d = product.attr('data-3d');\n var prodAnalyticsColor = product.attr('data-color-' + newColor);\n var prodAnalyticsTag = product.attr('data-tag-' + newColor);\n\n dataLayerPush({\n event: 'productDetail',\n ecommerce: {\n currencyCode: prodCurrency,\n dimension27: prodVideo,\n detail: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: newColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension14: prodAvailable,\n dimension26: prodPromotions,\n callout: prodAnalyticsTag,\n '3dEnabled': prod3d\n }]\n }\n }\n });\n }\n};\n\nfunction analyticsPushProductClick (product) {\n // all product info processed on page load, should be evaluated\n var prodPid = product.attr('data-pid');\n var prodName = product.attr('data-name');\n var prodCurrency = $('.visitorCurrency').text();\n var prodPrice = product.attr('data-price');\n var prodGender = product.attr('data-gender');\n var prodPromotions = product.attr('data-promotions');\n var prodColor = product.attr('data-color');\n var prodAnalyticsColor = product.attr('data-color-' + prodColor);\n var prodUrl = product.attr('data-url');\n var prodAvailable = product.attr('data-available');\n var prodTemplate = getProductTemplate(product);\n var prodFrom = getProductFrom(product);\n var prodList = getProductList(product, prodFrom);\n var prodPosition = getProductPosition(product);\n var sizeImg = getAnalyticsImage(product);\n var productIsSet = product.attr('data-isset') || false;\n var prod3d = product.attr('data-3d');\n var prodTag = product.attr('data-tag');\n\n if (prodTemplate && prodTemplate === 'pdpLook') {\n dataLayerPush({\n event: 'productClick',\n ecommerce: {\n currencyCode: prodCurrency,\n impressions: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n list: prodList,\n position: prodPosition,\n dimension14: prodAvailable,\n dimension26: prodPromotions,\n tileType: sizeImg,\n color: prodAnalyticsColor,\n gender: prodGender\n }]\n }\n });\n dataLayerPush({\n event: 'productDetail',\n ecommerce: {\n currencyCode: prodCurrency,\n dimension27: false,\n detail: {\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n dimension14: prodAvailable,\n dimension26: prodPromotions,\n quantity: 1,\n color: prodAnalyticsColor,\n gender: prodGender,\n callout: prodTag,\n '3dEnabled': prod3d\n }]\n }\n }\n });\n } else {\n dataLayerPush({\n event: 'productClick',\n ecommerce: {\n currencyCode: prodCurrency,\n dimension25: prodFrom === 'plp' ? prodTemplate : '',\n click: {\n actionField: { list: prodList },\n products: [{\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n position: prodPosition,\n dimension14: productIsSet ? '' : prodAvailable,\n dimension26: prodPromotions,\n tileType: sizeImg,\n callout: prodTag,\n '3dEnabled': prod3d\n }]\n }\n }\n });\n }\n};\n\nfunction initializeProducts (containerSelector) {\n var products = [];\n $(containerSelector + ' .js-analytics-impressions-product-not-impressed').each(function (index) {\n // get product by pid\n var product = $(this);\n // all product info\n var prodPid = product.data('pid');\n var prodName = product.data('name');\n var prodPrice = product.data('price');\n var prodPromotions = product.data('promotions');\n var prodColor = product.data('color');\n var prodGender = product.data('gender');\n var prodAnalyticsColor = product.attr('data-color-' + prodColor);\n var prodUrl = product.data('url');\n var prodSize = product.attr('data-size-' + product.data('size'));\n var prodQuantity = product.data('quantity');\n\n products.push({\n name: prodName,\n id: prodPid,\n price: prodPrice,\n category: prodUrl,\n variant: prodColor,\n color: prodAnalyticsColor,\n gender: prodGender,\n dimension21: prodSize,\n dimension26: prodPromotions,\n quantity: prodQuantity\n });\n });\n return products;\n};\n\nfunction pushCheckoutObject (products, step, step_type){\n var prodCurrency = $('.visitorCurrency').text();\n var obj = {\n event: 'checkout',\n ecommerce: {\n currencyCode: prodCurrency,\n checkout: {\n actionField: { step: step },\n products: products\n }\n }\n };\n if (step_type) {\n obj['step_type'] = step_type;\n }\n\n dataLayerPush(obj);\n}\n\nfunction pushPurchaseObject (products) {\n var prodCurrency = $('.visitorCurrency').text();\n dataLayerPush({\n 'event': 'purchase',\n 'shipping_method': $('#js-analytics-type-shipping').val(),\n 'boutiqueName': $('#js-analytics-boutique').val(),\n 'typ_type': $('#js-thankyoupage-type').val(),\n 'ecommerce': {\n 'currencyCode': prodCurrency,\n 'purchase': {\n 'actionField': {\n 'id': $('#js-analytics-id').val(),\n 'revenue': $('#js-analytics-revenue-datalayer').val(),\n 'tax': $('#js-analytics-tax-datalayer').val(),\n 'shipping': $('#js-analytics-shipping-datalayer').val(),\n 'coupon': $('#js-analytics-coupon').val(),\n 'dimension8': $('#js-analytics-dimension').val()\n },\n 'products': products\n }\n }\n });\n}\n\nmodule.exports = {\n dataLayerPush: dataLayerPush,\n analyticsPushPage: analyticsPushPage,\n analyticsPushUserData: analyticsPushUserData,\n analyticsPushPromoClick: analyticsPushPromoClick,\n analyticsPushChangeVariation: analyticsPushChangeVariation,\n analyticsPushProductClick: analyticsPushProductClick,\n pushAddToCart: pushAddToCart,\n pushRemoveFromCart: pushRemoveFromCart,\n pushChangeQuantity: pushChangeQuantity,\n loadAnalyticsProduct: loadAnalyticsProduct,\n checkPromo: checkPromo,\n checkCollisionNotImpressed: checkCollisionNotImpressed,\n analyticsCheckImpressionAndPromo: analyticsCheckImpressionAndPromo,\n initializeCheckoutProducts: initializeProducts,\n pushCheckoutObject: pushCheckoutObject,\n pushPurchaseObject: pushPurchaseObject\n};\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),a[href],input';\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\nvar base = require('../product/base');\nvar accessFocus = require('../accessibilityFocus');\nconst Modal = require('../modalUtilities');\nconst scrollAnimate = require('../components/scrollAnimate');\n\nfunction liveChatPositionStikyUp() {\n var stikyHeight = $('.js-wishlist-stiky-onMobile').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight,\n right: '16px'\n });\n }\n}\nfunction liveChatPositionStikyDown() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '16px',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px'\n });\n }\n};\nfunction createItemsArray () {\n var products = [];\n $(document).find('.js-add-to-cart-wishlist').each(function() {\n var prodID = $(this).data('pid');\n var sizevariantselected = $(this).data('sizevariantselected');\n var size = null;\n var obj = {\n pid: prodID,\n size: size\n };\n if (!sizevariantselected) {\n $('.js-available-size-list-' + prodID).children('.cc-size-list-container').find('label').each(function () {\n if ($(this).hasClass('js-selected-size')) {\n size = $(this).attr('size');\n }\n });\n if (size !== null) {\n obj.size = size;\n products.push(obj);\n }\n }\n });\n\n return products;\n}\n\nfunction sendAnalyticsAddAllToCart (producs) {\n for (var i = 0; i < producs.length; i++) {\n var pid = producs[i];\n var product = $('.js-analytics-impressions-product-initialized.js-analytics-click-product-info-' + pid);\n if (product.length <= 0) {\n product = $('.js-analytics-impressions-product-initialized.js-analytics-click-product-info-' + pid.substring(0, pid.length - 2));\n }\n $('body').trigger('analytics:pushAddToCart', product);\n }\n}\n\nmodule.exports = {\n updateWishlistQuantity: function () {\n if ($('#wishlistItemsCountURL').length > 0) {\n $.ajax({\n url: $('#wishlistItemsCountURL').val(),\n type: 'GET',\n dataType: 'json',\n success: function(res) {\n if (! res.error) {\n var badgeText = res.itemsCount;\n if (res.itemsCount === 0) badgeText = '';\n else if (res.itemsCount > 99) badgeText = '99+';\n $('.js-wishlist-quantity').text(badgeText);\n }\n }\n });\n }\n },\n\n updateWishlistQuantityTrigger: function () {\n var self = this;\n $('body').on('wishlist:updateQuantity', function(e) {\n self.updateWishlistQuantity();\n });\n },\n\n // wishlist tile Share button\n openShareWishlistIteam: function () {\n $(document).on('click', '.js-open-share', function (e) {\n if ($('body').hasClass('cc-mobile')) {\n $('.js-whatsapp-link').attr('href', function() { this.href = this.href.replace('https://wa.me/?text=', 'whatsapp://send?text='); });\n }\n var $shareContainer = $(this).closest('.cc-share');\n $shareContainer.find('.cc-share-overlay-product').fadeIn();\n $shareContainer.find('.cc-share-content').fadeIn();\n accessFocus.focusOnFirstElement($shareContainer.find('.cc-share-content'));\n $($shareContainer.find('.cc-share-content')).on('keydown', function(event) {\n let focusableNodes = $($shareContainer.find('.cc-share-content')).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n if (key === 27) { // close popUp on ESC from tile overlay\n $shareContainer.find('.cc-share-overlay-product').fadeOut();\n $shareContainer.find('.cc-share-content').fadeOut();\n setTimeout(function() {\n $(this).focus();\n }, 0);\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n if ($('body').hasClass('veiled')) $('body').removeClass('veiled');\n }\n });\n if ($('body').hasClass('cc-mobile')) {\n $('body').addClass('cc-blocked');\n }\n e.stopPropagation();\n });\n },\n closeShareWishlistIteam: function () {\n $(document).on('click', '.js-close-share', function (e) {\n var $overlay = $('.cc-share');\n $overlay.find('.cc-share-overlay-product').fadeOut();\n $overlay.find('.cc-share-content').fadeOut();\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n setTimeout(function() {\n $overlay.find('.js-open-share').focus();\n }, 0);\n if ($('body').hasClass('cc-mobile')) {\n $('body').removeClass('cc-blocked');\n }\n e.stopPropagation();\n });\n },\n // wechat overlay\n openWeChatOverlay: function () {\n $(document).on('click', '.cc-mobile .wechatShareMobile', function (e) {\n $('.cc-wechat-container .cc-qrcode-overlay').addClass('cc-block');\n });\n },\n closeWeChatOverlay: function () {\n $(document).on('click', '.cc-mobile .cc-wechat-container .cc-qrcode-overlay, .cc-mobile .cc-share-overlay', function (e) {\n $('.cc-wechat-container .cc-qrcode-overlay').removeClass('cc-block');\n });\n },\n\n removeWishlistElement: function() {\n $(document).on('click', '.js-remove-from-wishlist', function (e) {\n var iteams = $('.wishlistItemCards .cc-wishlist-item').length;\n e.preventDefault();\n $.spinner().start();\n var url = $(this).data('url');\n var pid = $(this).data('pid');\n $.ajax({\n url: url,\n type: 'get',\n data: {\n pageSize: iteams\n },\n success: function(data) {\n $('.cc-dashboard-left-container').children('.tab-content').children('#wishlist').empty().html(data.renderedTemplate);\n $('.js-main-subtitle-dashboard').text(data.wishlistCountLabel);\n $('.js-go-to-wishlist-page').attr('data-count', data.wishlistCountLabel);\n $('body').trigger('wishlist:productAnalytics');\n $('body').trigger('wishlist:updateQuantity');\n\n $('.js-wishlist-status').text($('#wishlistAriaRemoveFromWishlist').val());\n // analytics\n dataLayer.push({\n event: 'wishlist',\n eventCategory: 'Wish List',\n eventAction: 'remove',\n eventLabel: pid\n });\n // END\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $.spinner().stop();\n $('body').trigger('wishlist:updateQuantity');\n }\n });\n return false;\n });\n },\n\n removeWishlistElementGuest: function() {\n $(document).on('click', '.js-remove-from-wishlist-guest', function (e) {\n e.preventDefault();\n $.spinner().start();\n var iteams = $('.wishlistItemCards .cc-wishlist-item').length;\n var url = $(this).data('url');\n var pid = $(this).data('pid');\n $.ajax({\n url: url,\n type: 'get',\n data: {\n pageSize: iteams\n },\n success: function(data) {\n var $header = $(data.renderedTemplate).find('.cc-counter-result');\n $('.cc-counter-result').empty().html($header.html());\n\n // empty salva wishlist\n var $button = $(data.renderedTemplate).find('.cc-save-wishlist-container');\n $('.cc-save-wishlist-container').empty().html($button.html());\n\n var $body = $(data.renderedTemplate).find('.js-guest-wishlist-container');\n $('.js-guest-wishlist-container').empty().html($body.html());\n\n // analytics\n dataLayer.push({\n event: 'wishlist',\n eventCategory: 'Wish List',\n eventAction: 'remove',\n eventLabel: pid\n });\n // END\n \n $('.js-wishlist-status').text($('#wishlistAriaRemoveFromWishlist').val());\n \n $('body').trigger('wishlist:productAnalytics');\n $('body').trigger('wishlist:updateQuantity');\n $('#js-link-input').val(data.link);\n $('#js-link-input')[0].defaultValue = data.link;\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $.spinner().stop();\n $('body').trigger('wishlist:updateQuantity');\n }\n });\n return false;\n });\n },\n\n openProductOverlayWishlist: function() {\n $(document).on('click', '.js-open-product-overlay', function(e) {\n e.stopImmediatePropagation();\n var pid = $(this).data('pid');\n\n // Change aria-expanded only on the selected item (with pid)\n $('.openTab-' + pid).attr(\"aria-expanded\", \"true\");\n $('.closeTab-' + pid).attr(\"aria-expanded\", \"false\");\n $('.js-general-overlay-wishlist').attr(\"aria-expanded\",\"true\"); //fix accessibility issues\n this.dispatchEvent(new Event('statechange')); //notify Screen readers \n\n $('.js-general-overlay-wishlist').each(function() {\n $(this).fadeOut();\n });\n $('.js-open-product-overlay').each(function() {\n $(this).removeClass('d-none');\n });\n $('.js-close-product-overlay').each(function() {\n $(this).addClass('d-none');\n });\n $(this).addClass('d-none');\n $(this).siblings('button').removeClass('d-none');\n $('.js-overlay-container-' + pid).fadeIn();\n accessFocus.focusOnFirstElement('.js-overlay-container-' + pid);\n accessFocus.focuseOnModal('.js-overlay-container-' + pid, '.openTab-' + pid, '.js-overlay-container-' + pid);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: pid,\n buttonType: 'Quick Cart Add'\n });\n });\n },\n closeProductOverlayWishlist: function() {\n $(document).on('click', '.js-close-product-overlay', function() {\n var pid = $(this).data('pid');\n\n // Change aria-expanded only on the selected item (with pid)\n $('.openTab-' + pid).attr(\"aria-expanded\", \"false\");\n $('.closeTab-' + pid).attr(\"aria-expanded\", \"true\"); \n $('.js-general-overlay-wishlist').attr(\"aria-expanded\",\"false\"); //fix accessibility issues\n this.dispatchEvent(new Event('statechange')); //notify Screen readers \n\n $(this).addClass('d-none');\n $(this).siblings('button').removeClass('d-none');\n $('.js-overlay-container-' + pid).fadeOut();\n setTimeout(function() {\n $('.openTab-' + pid).focus();\n }, 0);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: pid,\n buttonType: 'Quick Cart Add'\n });\n });\n },\n\n selectAvailableSizeWishlistProduct: function() {\n $(document).on('click', '.js-select-other-size', function() {\n var pid = $(this).data('pid');\n $(this).addClass('d-none');\n $('.js-unavailable-size-list-' + pid).addClass('d-none');\n $('.js-available-size-list-' + pid).removeClass('d-none');\n $('.js-buy-button-wishlist-' + pid).removeClass('d-none');\n });\n },\n\n chooseSizeWishlistItem: function() {\n $(document).on('keydown', '.js-size-element-radio', (e) => {\n if (e.keyCode === 13) {\n e.preventDefault(); // Ensure it is only this code that runs\n $(e.currentTarget).siblings('.js-size-element').trigger('click');\n }\n });\n\n $(document).on('click', '.js-size-element', (e) => {\n if ($(e.currentTarget).hasClass('cc-unavailable-size-text')) {\n return;\n }\n var prodID = $($(e.currentTarget)).data('pid');\n $('.js-size-' + prodID).each(function() {\n $(this).removeClass('cc-size-text-selected');\n $(this).removeClass('js-selected-size');\n });\n $(e.currentTarget).addClass('js-selected-size').addClass('cc-size-text-selected');\n $('.js-available-size-title-' + prodID).css('color', '#262626');\n $('.js-error-select-size-' + prodID).addClass('d-none');\n $(e.currentTarget).closest('.wishlistItemCards').find('.js-analytics-impressions-product-impressed').data('size', $(this).attr('size'));\n if (e.originalEvent !== undefined) {\n var sizeIndex = $(e.currentTarget).attr('size');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'size select',\n eventLabel: prodID + ' - ' + sizeIndex,\n buttonType: 'Quick Cart Add'\n });\n }\n });\n },\n\n addToCardWishlistProduct: function () {\n $(document).on('click', '.js-add-to-cart-wishlist', function (e) {\n e.stopImmediatePropagation();\n var prodID = $(this).data('pid');\n var sizevariantselected = $(this).data('sizevariantselected');\n var iteams = $('.wishlistItemCards .cc-wishlist-item').length;\n var pid;\n var size = null;\n\n $('.js-available-size-list-' + prodID).children('.cc-size-list-container').find('label').each(function () {\n if ($(this).hasClass('js-selected-size')) {\n size = $(this).attr('size');\n }\n });\n if (size == null) {\n $('.js-available-size-title-' + prodID).css('color', '#922222');\n $('.js-error-select-size-' + prodID).removeClass('d-none');\n } else {\n if (sizevariantselected == true) {\n pid = prodID;\n } else {\n pid = prodID + size;\n }\n var addToCartUrl = $('.add-to-cart-url').val();\n $(this).closest('.cc-wishlist-item').find('.new-analytics').attr('data-size', size);\n $('body').trigger('product:beforeAddToCart', this);\n var _self = this;\n //call add to Cart function\n base.performAddToCartCall(addToCartUrl, pid, null, [], 1, function (resData) {\n $('body').trigger('product:afterAddToCart', resData);\n if (!$('.js-guest-wishlist-container').hasClass('js-shared-wishlist')) {\n // remove product\n var removeUrl = $(_self).data('removeurl');\n $.ajax({\n url: removeUrl,\n type: 'get',\n data: {\n pageSize: iteams\n },\n success: function(data) {\n $('.cc-dashboard-left-container').children('.tab-content').children('#wishlist').empty().html(data.renderedTemplate);\n // $('.cc-dashboard-left-container').children('.tab-content').children('#wishlist').children('div').replaceWith(data.renderedTemplate);\n $('.js-main-subtitle-dashboard').text(data.wishlistCountLabel);\n $('.js-go-to-wishlist-page').attr('data-count', data.wishlistCountLabel);\n\n // guest\n var $header = $(data.renderedTemplate).find('.cc-counter-result');\n $('.cc-counter-result').empty().html($header.html());\n\n // empty salva wishlist\n var $button = $(data.renderedTemplate).find('.cc-save-wishlist-container');\n $('.cc-save-wishlist-container').empty().html($button.html());\n\n var $body = $(data.renderedTemplate).find('.js-guest-wishlist-container');\n $('.js-guest-wishlist-container').empty().html($body.html());\n $('#js-link-input').val(data.link);\n $('#js-link-input')[0].defaultValue = data.link;\n $('body').trigger('wishlist:productAnalytics');\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n }\n });\n }\n }, function() {\n //\n });\n }\n });\n },\n // button stycky logged\n appairWishlist: function() {\n let scrollTimer;\n let isPDP = true;\n $(document).on('scroll', function () {\n isPDP = $('.product-detail').length > 0;\n if (window.isMobile && !isPDP) {\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n liveChatPositionStikyDown();\n }\n let $sticky = $('.js-wishlist-stiky-onMobile');\n let $liveAgentButton = $('.embeddedServiceHelpButton .helpButton');\n $liveAgentButton.addClass('cc-liveChat-button');\n $sticky.addClass('d-none');\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let stickyCanAppear = !isFooterVisible;\n if (stickyCanAppear && !isPDP) {\n scrollTimer = setTimeout(() => {\n $sticky.removeClass('d-none');\n liveChatPositionStikyUp();\n }, 250);\n }\n }\n });\n },\n\n // add to cart all product with selected size\n addToCartWishlistProducts: function () {\n $(document).on('click', '.js-add-all-toCart', function () {\n let modalTarget = $(this).data('target');\n let modal = new Modal(modalTarget);\n var url = $(this).data('action');\n var productToAdd = createItemsArray();\n var products = JSON.stringify(productToAdd);\n var iteams = $('.wishlistItemCards .cc-wishlist-item').length;\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n pageSize: iteams,\n products: products\n },\n success: function(data) {\n // first sending analytics, before the page content will be removed\n sendAnalyticsAddAllToCart(data.itemsToRemove);\n if (data.isLogged) {\n $('.cc-dashboard-left-container').children('.tab-content').children('#wishlist').empty().html(data.renderedTemplate);\n $('.js-main-subtitle-dashboard').text(data.wishlistCountLabel);\n $('.js-go-to-wishlist-page').attr('data-count', data.wishlistCountLabel);\n $('body').trigger('wishlist:productAnalytics');\n } else {\n var $header = $(data.renderedTemplate).find('.cc-counter-result');\n $('.cc-counter-result').empty().html($header.html());\n var $button = $(data.renderedTemplate).find('.cc-save-wishlist-container');\n $('.cc-save-wishlist-container').empty().html($button.html());\n var $body = $(data.renderedTemplate).find('.js-guest-wishlist-container');\n $('.js-guest-wishlist-container').empty().html($body.html());\n $('body').trigger('wishlist:productAnalytics');\n $('#js-link-input').val(data.link);\n $('#js-link-input')[0].defaultValue = data.link;\n }\n $.spinner().stop();\n if (data.moveAllProducts) {\n modal.open();\n $('.cc-addAll-products-close.js-cl-pU-addTocart-byOverlay').removeClass('hidden');\n $('.js-close-popUp-addToCart').one('click', () => {\n modal.close();\n $(modal.modal).addClass('hidden').attr('aria-hidden', 'true');\n modal._open = false;\n modal._previouslyFocussedElement.focus();\n $('.cc-addAll-products-close.js-cl-pU-addTocart-byOverlay').addClass('hidden');\n if (data.addAnyProduct) {\n $('body').trigger('product:afterAddToCart');\n }\n });\n $('.js-confirm-close-popUp').one('click', () => {\n modal.close();\n $('.cc-addAll-products-close.js-cl-pU-addTocart-byOverlay').addClass('hidden');\n if (data.addAnyProduct) {\n $('body').trigger('product:afterAddToCart');\n }\n });\n $('.js-cl-pU-addTocart-byOverlay').one('click', () => {\n modal.close();\n $(modal.modal).addClass('hidden').attr('aria-hidden', 'true');\n modal._open = false;\n modal._previouslyFocussedElement.focus();\n $('.cc-addAll-products-close.js-cl-pU-addTocart-byOverlay').addClass('hidden');\n if (data.addAnyProduct) {\n $('body').trigger('product:afterAddToCart');\n }\n });\n } else {\n $('body').trigger('product:afterAddToCart');\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n $.spinner().stop();\n }\n });\n });\n },\n // close popUp\n // ClosePopUpAddAllProducts: function() {\n // $(document).on('click', '.js-close-popUp-addToCart', function() {\n // let modalTarget = $('.js-add-all-toCart').data('target');\n // let modal = new Modal(modalTarget);\n // modal.close();\n // $('body').trigger('product:afterAddToCart');\n // });\n // },\n // show more products\n showMoreProduct: function() {\n $(document).on('click', '.js-loadMore-wishlist', function(e) {\n // avoid multiple calls\n e.stopImmediatePropagation();\n var url = $(this).data('action');\n var isShared = false;\n var listID = '';\n var iteams = $('.wishlistItemCards .cc-wishlist-item').length;\n if ($('.js-guest-wishlist-container').hasClass('js-shared-wishlist')) {\n isShared = true;\n listID = $('#js-list-id').val();\n }\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n data: {\n pageSize: iteams,\n isShared: isShared,\n listID: listID\n },\n success: function(data) {\n $('.wishlistItemCards').append(data);\n var $more = $(document).find('.js-attribute-afterLoad:last');\n var moreProducts = $more.data('moreproducts');\n var wishlistLabel = $more.data('wishlistlabel');\n var morelabel = $more.data('morelabel');\n $('.js-counter-wishlistProduct').empty().html(wishlistLabel);\n if (moreProducts) {\n $('.js-loadMore-wishlist').empty().html(morelabel);\n } else {\n $('.js-loadMore-wishlist').remove();\n }\n $('body').trigger('wishlist:productAnalytics');\n $.spinner().stop();\n }\n });\n });\n },\n\n shareWishlistLink: function () {\n $(document).on('click', '.cc-desktop .js-share-wishlist, .cc-tablet .js-share-wishlist', function (e) {\n if ($('.js-open-product-overlay').length > 0) {\n var length = $('.js-open-product-overlay').length\n for (var i=0; i 0) {\n var length = $('.js-open-product-overlay').length\n for (var i=0; i' +\n '' + message + '';\n\n $('.cart-error').append(errorHtml);\n}\n\n/**\n * re-renders the approaching discount messages\n * @param {Object} approachingDiscounts - updated approaching discounts for the cart\n */\nfunction updateApproachingDiscounts(approachingDiscounts) {\n var html = '';\n $('.approaching-discounts').empty();\n if (approachingDiscounts.length > 0) {\n approachingDiscounts.forEach(function (item) {\n html += '
    '\n + item.discountMsg + '
    ';\n });\n }\n $('.approaching-discounts').append(html);\n}\n\n/**\n * Updates the availability of a product line item\n * @param {Object} data - AJAX response from the server\n * @param {string} uuid - The uuid of the product line item to update\n */\nfunction updateAvailability(data, uuid) {\n var lineItem;\n var messages = '';\n\n for (var i = 0; i < data.items.length; i++) {\n if (data.items[i].UUID === uuid) {\n lineItem = data.items[i];\n break;\n }\n }\n\n $('.js-availability-' + lineItem.UUID).empty();\n\n if (lineItem.availability) {\n if (lineItem.availability.messages) {\n lineItem.availability.messages.forEach(function (message) {\n messages += '

    ' + message + '

    ';\n });\n }\n\n if (lineItem.availability.inStockDate) {\n messages += '

    '\n + lineItem.availability.inStockDate\n + '

    ';\n }\n }\n\n $('.js-availability-' + lineItem.UUID).html(messages);\n}\n\nfunction liveChatDisableAndFixScrolling() {\n liveChatDiseble();\n var heightFooter = $('.cc-minicart-footer').height();\n $('.cc-minicart-content').css({ 'padding-bottom': heightFooter });\n}\n\nfunction injectPaypalSDK() {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.async = true;\n script.type = 'text/javascript';\n script.onload = function () {\n initPaypalButton.initPaypalButton();\n };\n script.src = window.paypalUrls.cartSdkUrl;\n script.setAttribute('data-partner-attribution-id', window.paypalUrls.partnerAttributionId);\n head.appendChild(script);\n}\n\nfunction initPaypal() {\n if ($('#js-paypal-minicart-enabled').val() === 'true') {\n const paypalUrls = document.querySelector('.js_paypal-content').getAttribute('data-paypal-urls');\n window.paypalUrls = JSON.parse(paypalUrls);\n window.paypal ? initPaypalButton.initPaypalButton() : injectPaypalSDK();\n done = true;\n }\n}\n\nmodule.exports = function () {\n var temporized;\n\n // open modal on click to minicart\n $('body').on('click', '.js-minicart-button', function (e) {\n e.preventDefault();\n let modalTarget = e.currentTarget.dataset.target;\n let modal = new Modal(modalTarget, { onShow: liveChatDisableAndFixScrolling, onClose: liveChatEnable });\n $(document).find('.js-minicartside-overlay-container').css('content-visibility', 'visible');\n $(modalTarget).attr('aria-hidden', 'false');\n modal.open();\n if (!done) {\n initPaypal();\n }\n clearTimeout(temporized);\n\n var heightFooter = $('.cc-minicart-footer').height();\n var widthContent = $('.cc-minicart-pcard').width();\n $('.cc-minicart-content').css({ 'padding-bottom': heightFooter });\n $('.cc-minicart-footer').css({ width: widthContent });\n });\n\n // open modal after on addToCart\n $('body').on('product:afterAddToCart', function (e) {\n e.preventDefault();\n\n clearTimeout(temporized);\n\n var url = $('.add-to-minicart-url').val();\n var isCart = $(document).find('.cc-cart');\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.js-minicart-quantity').empty().append(data.numItems);\n $('.js-minicart-numofitems').empty().append(data.resources.minicartNumberOfItems);\n $('.js-grand-total').empty().append(data.totals.grandTotal);\n $('.js-minicart-pcard').empty().append(data.miniCartSide);\n if (isCart.length === 0) {\n let modalTarget = $('.js-minicart-button').data('target');\n let modal = new Modal(modalTarget, { onShow: liveChatDisableAndFixScrolling, onClose: liveChatEnable });\n $(document).find('.js-minicartside-overlay-container').css('content-visibility', 'visible');\n modal.open();\n temporized = setTimeout(function () {\n modal.close();\n }, 5000);\n if (!done) {\n initPaypal();\n }\n }\n $('#minicart-overlay').attr('aria-hidden', 'false');\n $.spinner().stop();\n var widthContent = $('.cc-minicart-pcard').width();\n if (!$('body').hasClass('cc-desktop')) {\n widthContent += 15;\n }\n $('.cc-minicart-footer').css({ width: widthContent });\n var heightFooter = $('.cc-minicart-footer').height();\n $('.cc-minicart-content').css({ 'padding-bottom': heightFooter });\n if (isCart.length > 0) {\n $.spinner().start();\n }\n },\n error: function (err) {\n if (err.responseJSON) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n } else {\n $.spinner().stop();\n }\n }\n });\n });\n\n // temporize minicart side\n $('body').on('mouseleave', '.js-minicartside-overlay-container', function(e) {\n e.preventDefault();\n\n let modalTarget = $('.js-minicart-button').data('target');\n let modal = new Modal(modalTarget, { onShow: liveChatDisableAndFixScrolling, onClose: liveChatEnable });\n if ($(modalTarget).hasClass('cc-open')) {\n modal._open = true;\n }\n temporized = setTimeout(function () {\n modal.close();\n }, 5000);\n });\n\n // clear temporized minicart side\n $('body').on('mouseenter', '.js-minicartside-overlay-container', function(e) {\n e.preventDefault();\n clearTimeout(temporized);\n });\n\n // close modal onclick\n $('body').on('click', '.js-close', function(e) {\n e.preventDefault();\n clearTimeout(temporized);\n let modalTarget = $('.js-minicart-button').data('target');\n let modal = new Modal(modalTarget, { onShow: liveChatDisableAndFixScrolling, onClose: liveChatEnable });\n modal.close();\n });\n\n // goes to cart page\n $('body').on('click', '.js-gotocart, .js-go-to-cart-mobile', function (e) {\n e.preventDefault();\n var action = $(this).data('action');\n window.location.href = action;\n $.spinner().start();\n });\n\n $('body').on('click', '.js-remove-btn-minicart', function (e) {\n e.preventDefault();\n\n var productID = $(this).data('pid');\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n var fromWhere = $(this).data('from');\n var currentProductUUID = $(this).data('uuid');\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n url = appendToUrl(url, urlParams);\n\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n // analytics\n var prodQuantity;\n var selector;\n if (fromWhere === 'minicart') {\n prodQuantity = $('.js-remove-quantity-analytics-minicart-' + uuid).text();\n selector = '.js-pcard .js-analytics-click-product-info-' + productID;\n } else {\n prodQuantity = $('.js-remove-quantity-analytics-cart-' + uuid).text();\n selector = '.js-item .js-analytics-click-product-info-' + productID;\n }\n\n $('body').trigger('analytics:pushRemoveFromCart', {selector: selector, quantity: prodQuantity, from: fromWhere, oncomplete: function(selector){\n $(selector).remove();\n } });\n\n // Accessibility: announce that the product has been removed\n var srProdRemovedMessage = $('input[name=\"sr-minicart-product-removed-' + currentProductUUID + '\"]').val();\n $('#sr-minicart-product-removed').text(srProdRemovedMessage);\n\n if (data.toBeDeletedUUIDs && data.toBeDeletedUUIDs.length > 0) {\n for (var i = 0; i < data.toBeDeletedUUIDs.length; i++) {\n $('.js-uuid-' + data.toBeDeletedUUIDs[i]).remove();\n }\n }\n\n $('.js-uuid-' + uuid).remove();\n\n if (!data.basket.hasBonusProduct) {\n $('.bonus-product').remove();\n }\n\n $('.js-coupon-err-container').empty().append(data.basket.totals.discountsHtml);\n updateCartTotals(data.basket);\n updateApproachingDiscounts(data.basket.approachingDiscounts);\n validateBasket(data.basket);\n\n $('body').trigger('cart:update');\n\n // update checkout summary\n if (data.checkoutSummaryHtml.length) {\n $('.cc-checkout-summary').replaceWith(data.checkoutSummaryHtml);\n }\n\n // update sticky summary\n if (data.grandTotalHtml) {\n $('.js-sticky-totalSummary').replaceWith(data.grandTotalHtml);\n }\n\n\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n $(document).on('click', '.js-change-quantity', function (e) {\n e.stopImmediatePropagation();\n var productID = $(this).data('pid');\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n var fromWhere = $(this).data('from');\n\n var itemQuantity = $('.js-item-quantity-' + uuid);\n var quantity = itemQuantity.data('quantity');\n var minQuantity = itemQuantity.data('min');\n var maxQuantity = itemQuantity.data('max');\n var type = $(this).data('type');\n var disabled = $(this).hasClass('disabled');\n\n if (!disabled) {\n var urlParams = {\n pid: productID,\n quantity: quantity,\n uuid: uuid,\n type: type\n };\n url = appendToUrl(url, urlParams);\n\n $.spinner().start();\n\n $.ajax({\n url: url,\n type: 'get',\n context: this,\n dataType: 'json',\n success: function (data) {\n var newQuantity = 0;\n\n var selector;\n if (fromWhere === 'minicart') {\n prodQuantity = $('.js-remove-quantity-analytics-minicart-' + uuid).text();\n selector = '.js-pcard .js-analytics-click-product-info-' + productID;;\n } else {\n prodQuantity = $('.js-remove-quantity-analytics-cart-' + uuid).text();\n selector = '.js-item .js-analytics-click-product-info-' + productID;\n }\n\n if (type === 'up') {\n newQuantity = quantity + 1;\n if ($('.js-down-quantity-' + uuid).hasClass('disabled')) {\n $('.js-down-quantity-' + uuid).each(function() {\n $(this).removeClass('disabled').prop('disabled', false);\n });\n }\n\n if (newQuantity === maxQuantity) {\n $('.js-up-quantity-' + uuid).each(function() {\n $(this).addClass('disabled').prop('disabled', true);\n });\n }\n } else if (type === 'down') {\n newQuantity = quantity - 1;\n if ($('.js-up-quantity-' + uuid).hasClass('disabled')) {\n $('.js-up-quantity-' + uuid).each(function() {\n $(this).removeClass('disabled').prop('disabled', false);\n });\n }\n\n if (newQuantity === minQuantity) {\n $('.js-down-quantity-' + uuid).each(function() {\n $(this).addClass('disabled').prop('disabled', true);\n });\n }\n }\n\n $('body').trigger('analytics:pushChangeQuantity', {selector: selector, type: type, from: fromWhere});\n\n itemQuantity.empty().append(newQuantity);\n itemQuantity.data('quantity', newQuantity);\n $('.js-coupon-err-container').empty().append(data.totals.discountsHtml);\n data.uuid = uuid;\n updateCartTotals(data);\n updateProductsTotalAndSubtotal(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n updateAvailability(data, uuid);\n validateBasket(data);\n\n $('body').trigger('cart:update');\n\n let $container = $('.js-quantity-update-accessibility-container');\n let text = $container.data('label');\n let items = data.items;\n let productName = items.filter((e) => { return e.UUID === uuid; })[0].productName;\n $container.html(text.replace('{0}', productName).replace('{1}', newQuantity)).show();\n\n // update checkout summary\n if (data.checkoutSummaryHtml.length) {\n $('.cc-checkout-summary').replaceWith(data.checkoutSummaryHtml);\n }\n // update sticky summary\n if (data.grandTotalHtml) {\n $('.js-sticky-totalSummary').replaceWith(data.grandTotalHtml);\n }\n\n $.spinner().stop();\n /* if ($(this).parents('.product-info').hasClass('bonus-product-line-item') && $('.cart-page').length) {\n location.reload();\n } */\n },\n error: function (err) {\n if (err.responseJSON) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $(this).val(parseInt(quantity, 10));\n $.spinner().stop();\n }\n }\n });\n }\n });\n\n base.selectAttribute();\n base.colorAttribute();\n};\n","var apiHelper = require('../../api');\nvar helper = require('../../helper');\nvar loaderInstance = require('../../loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\n\n/**\n * Appends error message on cart page\n *\n * @param {string} message error message\n */\nfunction showCartErrorHtml(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
    \n \n ${message}\n
    `\n );\n window.scrollTo(0, 0);\n}\n\nfunction onClick() {\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'checkout',\n eventAction: 'fast',\n eventLabel: 'Paypal Express',\n accessType: 'minicart'\n });\n}\n\n/**\n * Gets order id as string\n *\n * @returns {string} order id\n */\nfunction createOrder() {\n return apiHelper.getPaypalOrderId();\n}\n\n/**\n * Makes post call and transfers order ID to returnFromCart endpoint, goes to ty page, if an error occurs, the user is redirect to Checkout-Begin \n *\n * @param {Object} orderID - order id\n */\nfunction onApprove(fieldsData) {\n // make sure that amount > 0\n var $defer = $.Deferred();\n $.get(window.paypalUrls.getCartPurchaseUnit)\n .then(function ({ purchase_units }) {\n let parsedPurchaseUnit = purchase_units[0];\n if (JSON.parse(parsedPurchaseUnit.amount.value) === 0) {\n showCartErrorHtml('Order total 0 is not allowed for PayPal');\n $defer.reject();\n } else {\n $defer.resolve();\n }\n })\n .fail(function(){\n $defer.reject();\n });\n \n \n let cartBillingFormData = apiHelper.createCartBillingFormData(fieldsData,\n document.querySelector('.js_paypal_button_on_minicart_page'));\n\n $defer.done(function(){\n $.ajax({\n type: 'POST',\n url: window.paypalUrls.returnFromCart,\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n $.spinner().start();\n \n // validate shipping\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.validateShipping,\n success: (data) => {\n if (data.error && data.countryMatchError) {\n // redirect to Checkout-Begin shipping stage\n window.location.href = data.redirectUrl;\n } else {\n // validate billing\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.billingStep,\n success: (data) => {\n var continueUrl = data.continueUrl;\n var urlParams = {\n ID: data.orderID,\n token: data.orderToken\n };\n \n continueUrl += (continueUrl.indexOf('?') !== -1 ? '&' : '?') +\n Object.keys(urlParams).map(function (key) {\n return key + '=' + encodeURIComponent(urlParams[key]);\n }).join('&');\n \n // redirect to TYP\n window.location.href = continueUrl;\n },\n error: (data) => {\n $.spinner().stop();\n // todo paypal: show billing error message\n }\n });\n }\n },\n error: function(data) {\n $.spinner().stop();\n // todo paypal: show shipping error message\n }\n });\n },\n error: function () {\n loader.hide();\n if (window.location.href !== window.paypalUrls.cartPage) {\n window.location.href = window.paypalUrls.cartPage;\n }\n if (!document.querySelector('.cartError')) {\n // todo paypal: translate error message\n apiHelper.showCartErrorHtml('An internal server error has occurred. \\r\\nRetry the request later.');\n }\n }\n });\n });\n}\n\n/**\n * Hides loader on paypal widget closing without errors\n */\nfunction onCancel() {\n loader.hide();\n}\n\n/**\n * Shows errors if paypal widget was closed with errors\n */\nfunction onError() {\n loader.hide();\n if (window.location.href !== window.paypalUrls.cartPage) {\n window.location.href = window.paypalUrls.cartPage;\n }\n if (!document.querySelector('.cartError')) {\n showCartErrorHtml('An internal server error has occurred. \\r\\nRetry the request later.');\n }\n}\n\n/**\n *Inits paypal button on cart page\n */\nfunction initPaypalButton() {\n loader.show();\n window.paypal.Buttons({\n onClick,\n createOrder,\n onApprove,\n onCancel,\n onError,\n style: helper.getPaypalButtonStyle(document.querySelector('.js_paypal_button_on_minicart_page'))\n }).render('.paypal-minicart-button')\n .then(() => {\n loader.hide();\n });\n}\n\nmodule.exports = {\n initPaypalButton: initPaypalButton\n}\n","'use strict';\nmodule.exports = {\n exportDatepicker: function () {\n $(document).ready(function () {\n $('.js-datepicker').datepicker(\n {\n disableTouchKeyboard: true,\n autoclose: true,\n language: $('html').attr('lang') && $('html').attr('lang').trim().length > 0 ? $('html').attr('lang') : 'en'\n }\n );\n });\n }\n};\n","/* Variabili globali */\nwindow.isMobile = false;\nwindow.isTablet = false;\nwindow.isTabletPortrait = false;\nwindow.isTabletLandscape = false;\nwindow.isDesktop = false;\nvar formValidation = require('../components/formValidation');\nvar accessFocus = require('../accessibilityFocus');\nconst Modal = require('../modalUtilities');\nvar navigationCountry;\nconst _throttle = require('lodash/throttle');\nconst scrollAnimate = require('../components/scrollAnimate');\nconst CSRFUtil = require('../common/CSRFUtil');\n\n/* Funzioni Globali */\nvar responsiveResize = function () {\n if (window.matchMedia('(max-width: 767.98px)').matches) {\n $('body')\n .addClass('cc-mobile')\n .removeClass('cc-tablet')\n .removeClass('cc-tablet-portrait')\n .removeClass('cc-tablet-landscape')\n .removeClass('cc-desktop');\n window.isMobile = true;\n window.isTablet = false;\n window.isTabletPortrait = false;\n window.isTabletLandscape = false;\n window.isDesktop = false;\n } else if (window.matchMedia('(max-width: 1023.98px)').matches) {\n $('body')\n .removeClass('cc-mobile')\n .addClass('cc-tablet')\n .addClass('cc-tablet-portrait')\n .removeClass('cc-tablet-landscape')\n .removeClass('cc-desktop');\n window.isMobile = false;\n window.isTablet = true;\n window.isTabletPortrait = true;\n window.isTabletLandscape = false;\n window.isDesktop = false;\n } else if (window.matchMedia('(max-width: 1199.98px)').matches) {\n $('body')\n .removeClass('cc-mobile')\n .addClass('cc-tablet')\n .addClass('cc-tablet-landscape')\n .removeClass('cc-tablet-portrait')\n .removeClass('cc-desktop');\n window.isMobile = false;\n window.isTablet = true;\n window.isTabletPortrait = false;\n window.isTabletLandscape = true;\n window.isDesktop = false;\n } else {\n $('body')\n .removeClass('cc-mobile')\n .removeClass('cc-tablet')\n .removeClass('cc-tablet-portrait')\n .removeClass('cc-tablet-landscape')\n .addClass('cc-desktop');\n window.isMobile = false;\n window.isTablet = false;\n window.isTabletPortrait = false;\n window.isTabletLandscape = false;\n window.isDesktop = true;\n }\n $('.js-touched').removeAttr('style');\n $('.js-touched').removeClass('js-touched');\n\n if ($('.js-header-banner').find('.cc-shipment-banner').length > 0) {\n var isSlider = $(document).find('.js-header-banner .js-banner-slider').length > 0 || $(document).find('.js-header-banner .js-banner-slider-fade').length > 0;\n if ($('.js-header-banner').hasClass('preload-gap') || isSlider) {\n var height = 0;\n if ($('body').hasClass('cc-mobile') || $('body').hasClass('cc-tablet-portrait')) {\n height = 81;\n } else {\n height = 139;\n }\n\n if (isSlider) {\n var banner = require('./bannerSlider');\n $('.js-header-banner').find('.js-banner-slider, .js-banner-slider-fade')\n .on('init', function() {\n $('.js-header').removeClass('sticky-for-a-while');\n $('.js-header-banner').removeClass('preload-gap');\n var heightBanner = $('.js-header-banner').height();\n var tot = parseInt(height + heightBanner);\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': tot });\n });\n banner.initializeBannerHeader();\n } else {\n $('.js-header').removeClass('sticky-for-a-while');\n $('.js-header-banner').removeClass('preload-gap');\n var heightBanner = $('.js-header-banner').height();\n var tot = parseInt(height + heightBanner);\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': tot });\n // $(document).find('.cc-shipment-banner').css('display', 'block');\n }\n }\n } else {\n $('.js-header').removeClass('sticky-for-a-while');\n }\n\n if (window.isMobile) {\n $('.js-summary-button').attr('aria-disabled', false);\n $('.js-summary-button').attr('aria-expanded', false);\n } else {\n $('.js-summary-button').attr('aria-disabled', true);\n $('.js-summary-button').attr('aria-expanded', true);\n }\n\n // heightDevice();\n};\n\nvar updateFooter = function () {\n if ($('body').hasClass('cc-mobile')) {\n $('.cc-col-title-button').attr('aria-disabled', false);\n $('.cc-col-title-button').attr('aria-expanded', false);\n } else {\n $('.cc-col-title-button').attr('aria-disabled', true);\n $('.cc-col-title-button').attr('aria-expanded', true);\n }\n};\n\nvar updateNavMenu = function () {\n if (!$('.cc-header').hasClass('cc-header-checkout')) {\n $('.cc-mobile .cc-header .cc-button-menu-mobile, .cc-tablet-portrait .cc-header .cc-button-menu-mobile').removeClass('cc-open');\n $('.cc-mobile .cc-navbar, .cc-tablet-portrait .cc-navbar').removeClass('cc-open');\n $('.cc-mobile .cc-navbar').css('display', 'none');\n $('.cc-tablet-portrait .cc-navbar').css('display', 'none');\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n $('body').removeClass('cc-blocked');\n $('body').removeClass('cc-megamenu-open');\n $('.js-header-banner').removeClass('cc-header-banner-hide');\n $('.cc-menu-overlay.js-menu-overlay').removeClass('cc-show-mobile, cc-hide-mobile');\n $('.cc-menu-overlay.js-menu-overlay').addClass('d-none');\n $('.cc-navbar-list').css('min-height', 0);\n $('.cc-button-menu-mobile').attr('aria-label', $('#js-openmenu-label').val());\n }\n};\n\nvar resizeMiniCartModal = function () {\n var widthContent = $('.cc-minicart-pcard').width();\n if (!$('body').hasClass('cc-desktop')) {\n widthContent += 15;\n }\n $('.cc-minicart-footer').css({ width: widthContent });\n var heightFooter = $('.cc-minicart-footer').height();\n $('.cc-minicart-content').css({ 'padding-bottom': heightFooter });\n};\n\nfunction updateSizeList ($selector) {\n var url = $selector.data('url');\n var sku = $selector.data('id');\n var color = $selector.attr('data-color'); // data('color') retrieve old value\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n sku: sku,\n color: color\n },\n success: function (data) {\n for (var i = 0; i < data.checkSize.length; i++) {\n var el = data.checkSize[i];\n var $input = $(document).find('#input-modalTile-size-' + sku + ' .js-checkavalability-' + sku + '-' + el.value);\n var $inputMobile = $(document).find('.size-list-mobile-tile-' + sku + ' .js-checkavalability-' + sku + '-' + el.value);\n var $label = $input.siblings('.js-select-size-tile');\n if (el.selectable) {\n $input.removeAttr('disabled');\n $label.removeClass('cc-size-no-available');\n $inputMobile.removeClass('cc-size-list-text-mobile-no-available cc-size-no-available disabled');\n $inputMobile.siblings('.cc-no-available-size-mobile').addClass('d-none');\n if (el.isOnlyOneLeft) {\n $inputMobile.siblings('.cc-only-one-left').removeClass('d-none');\n } else {\n $inputMobile.siblings('.cc-only-one-left').addClass('d-none');\n }\n } else {\n $input.attr('disabled');\n $label.addClass('cc-size-no-available');\n $inputMobile.addClass('cc-size-list-text-mobile-no-available cc-size-no-available disabled');\n $inputMobile.siblings('.cc-no-available-size-mobile').removeClass('d-none');\n $inputMobile.siblings('.cc-only-one-left').addClass('d-none');\n }\n }\n $.spinner().stop();\n }\n });\n}\n\nfunction openSizeColorModal() {\n $(document).on('click', '.js-open-size-color', function (event) {\n var $product = $(this).closest('.cc-product-tile');\n var $analytics = $('.new-analytics', $product);\n var masterPid = $analytics.attr('data-pid');\n var color = $analytics.attr('data-color');\n var id = $(this).data('id');\n var plus = $(this).data('plus');\n var minus = $(this).data('minus');\n updateSizeList($(this));\n $('.cc-size-color-modal').removeClass('cc-open');\n $('.js-change-icon').each(function() {\n $(this).children().attr('xlink:href', plus);\n });\n $('.js-close-size-color').removeClass('js-close-size-color').addClass('js-open-size-color');\n $(this).removeClass('js-open-size-color').addClass('js-close-size-color');\n if ($(document.body).hasClass('cc-mobile')) {\n $product.find($('.sizecolorTab-' + id)).addClass('js-mobileOverlay');\n $product.find($('.js-imageContainerWall-' + id)).attr('rel', $('.js-imageContainerWall-' + id).attr('href'));\n $product.find($('.js-imageContainerWall-' + id)).attr('href', 'javascript:;');\n\n $product.find($('.swatch-list-mobile-tile-' + id)).addClass('d-none');\n $product.find($('.open-swatch-list-' + id)).addClass('d-none');\n $product.find($('.close-swatch-list-' + id)).removeClass('d-none');\n $product.find($('.size-list-mobile-container-' + id)).removeClass('d-none');\n $product.find($('.open-size-list-' + id)).addClass('d-none');\n $product.find($('.close-size-list-' + id)).removeClass('d-none');\n }\n\n $(this).find('.js-size-color').attr('aria-expanded', true);\n\n $product.find($('.openTab-' + id)).find('use').attr('xlink:href', minus);\n\n $product.find($('.sizecolorTab-' + id)).addClass('cc-open');\n let parent = '.js-desktop-variant.sizecolorTab-' + id;\n setTimeout(() => {\n let maxWidthConsideringArrows = $product.find($(`${parent} .js-color-carousel-container:visible`)).width() - (35 * 2);\n let numberOfColors = parseInt(maxWidthConsideringArrows / 67);\n let numberOfAvailableColors = $product.find($(`${parent} .js-color-carousel-container:visible`)).data('numberOfColors');\n if (numberOfAvailableColors > numberOfColors && numberOfColors > 0) {\n if (!$(parent + ' .cc-swatch-container').hasClass('slick-initialized')) {\n $(parent + ' .js-arrow-sx-color').removeClass('d-none');\n $(parent + ' .js-arrow-dx-color').removeClass('d-none');\n $(parent + ' .cc-swatch-container').css({ maxWidth: (maxWidthConsideringArrows - 10) + 'px', display: 'inline-block' });\n $(parent + ' .cc-swatch-container').slick({\n infinite: false,\n slidesToScroll: 1,\n slidesToShow: numberOfColors,\n dots: false,\n arrow: true,\n prevArrow: parent + ' .js-arrow-sx-color',\n nextArrow: parent + ' .js-arrow-dx-color'\n });\n }\n } else {\n $product.find($(parent + ' .js-arrow-sx-color')).addClass('d-none');\n $product.find($(parent + ' .js-arrow-dx-color')).addClass('d-none');\n }\n }, 100);\n // focus on modal when open\n var selector;\n if (window.isMobile) {\n selector = '.hide-mobile-up.sizecolorTab-' + id;\n } else {\n selector = '.hide-mobile.sizecolorTab-' + id;\n }\n const FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),[id*=\"input-modalTile-size-\"] input,.input-modalTile-color ul button';\n $product.find($('.sizecolorTab-' + id)).attr('tabindex', '-1');\n $product.find($(selector)).find(FOCUSABLE).each(function() {\n if (!this.disabled && !$(this).hasClass('d-none') && !$(this).hasClass('js-arrow-sx-color') && !$(this).hasClass('js-arrow-dx-color')) {\n this.focus();\n return false;\n }\n });\n $product.find($(selector)).on('keydown', function(event) {\n let nodes = $(selector).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n var focusableNodes = [];\n $.each(nodes, function(i, val) {\n if (!this.disabled) {\n focusableNodes.push(val);\n }\n });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n // move focus out of the size modal, leaving it open\n $product.find($('.js-close-size-color[data-id=\"' + id + '\"] .js-size-color')[0]).focus();\n event.preventDefault();\n }\n if (key === 27) { // close popUp on ESC\n $product.find($('.sizecolorTab-' + id)).removeClass('cc-open');\n $product.find($('.openTab-' + id)).find('.js-change-icon').children().attr('xlink:href', plus);\n $product.find($('.openTab-' + id)).removeClass('js-close-size-color').addClass('js-open-size-color');\n $product.find($('.openTab-' + id)).find('.js-size-color').attr('aria-expanded', false);\n setTimeout(function() {\n $product.find($('.openTab-' + id + ' button')).focus();\n }, 0);\n }\n });\n event.stopPropagation();\n \n // auto select size if product has one size\n var $sizes = $('.cc-size-list:visible .js-add-size-product-analytics', $product);\n if ($sizes.length == 1) {\n $sizes.trigger('click');\n }\n\n $(document).trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: masterPid + color, // pid concatenation tiles\n buttonType: 'Quick Cart Add',\n accessType: 'tile'\n });\n });\n}\n\n/**\n * experience module common to all\n */\nvar changeBackground = function (e) {\n if ($('body').find('.change-background').length > 0) {\n $(window).scroll(function() {\n var $window = $(window);\n var $body = $('body');\n var windowHeight = $window.height();\n var scrollOffset = windowHeight / 5;\n\n var $section = $('.change-background');\n\n var scrollStart = $window.scrollTop() + scrollOffset;\n var scrollEnd = $window.scrollTop() + windowHeight - scrollOffset;\n\n $body.css('background', '#fff');\n\n $section.each(function () {\n var $this = $(this);\n var className = $this.attr('class');\n var colorName = ('' + className).match(/.*change\\-background\\-(.*?)\\s.*$/)[1];\n\n var sectionStart = $this.position().top;\n var sectionEnd = $this.position().top + $this.height();\n\n if ((sectionStart < scrollEnd) && (sectionEnd > scrollStart)) {\n $body.css('background', '#' + colorName);\n }\n });\n }).scroll();\n };\n};\n\n/* 22 Slider */\nvar pdSlider = function () {\n if ($('.cc-pd-slider').length > 0) {\n if ($('.cc-pd-slider .cc-slider .slick-slide').length === 0) {\n $('.cc-pd-slider .cc-slider').each(function () {\n var configAutoplay = $(this).closest('.cc-pd-slider').data('config-autoplay');\n var sliderTimer = $(this).closest('.cc-pd-slider').data('config-speed');\n var $slidesContainer = $(this);\n\n $slidesContainer.slick({\n infinite: true,\n autoplay: true,\n swipe: false,\n focusOnSelect: false,\n pauseOnHover: false,\n pauseOnFocus: false,\n centerMode: false,\n autoplaySpeed: sliderTimer,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: ''\n });\n\n // $slidesContainer.on('touchstart', e => {\n // touched = true;\n // $(this).slick('slickPlay');\n // });\n\n function progressBar() {\n $('.cc-pd-slider').find('.cc-pd-slider-progress .cc-progress').removeAttr('style');\n $('.cc-pd-slider').find('.cc-pd-slider-progress .cc-progress').removeClass('cc-active');\n setTimeout(function() {\n $('.cc-pd-slider').find('.cc-pd-slider-progress .cc-progress').css('transition-duration', ((sliderTimer + 400) / 1000) + 's');\n $('.cc-pd-slider').find('.cc-pd-slider-progress .cc-progress').addClass('cc-active');\n }, 100);\n }\n\n if (($(this).closest('.cc-pd-slider').find('.cc-pd-slider-progress .cc-progress').length > 0) && (configAutoplay === true)) {\n progressBar();\n\n $slidesContainer.on('beforeChange', function(e, slick) {\n progressBar();\n });\n }\n });\n }\n }\n};\n\n/* 35 Slider Progression */\nvar pdSliderProgression = function () {\n if ($('.cc-pd-slider-progression').length > 0) {\n if ($('.cc-pd-slider-progression .cc-slider .slick-slide').length === 0) {\n $('.cc-pd-slider-progression .cc-slider').each(function () {\n var $sliderModule = $(this).closest('.cc-pd-slider-progression');\n var sliderTimer = $sliderModule.data('config-speed');\n var $slidesContainer = $(this);\n\n $slidesContainer.slick({\n infinite: true,\n autoplay: false,\n swipe: false,\n focusOnSelect: false,\n pauseOnHover: false,\n pauseOnFocus: false,\n centerMode: false,\n autoplaySpeed: sliderTimer,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: false,\n prevArrow: '',\n nextArrow: ''\n });\n\n var slideCount = $slidesContainer.find('.slick-slide:not(.slick-cloned)').length;\n\n var currentSlideIndex = $slidesContainer.slick('slickCurrentSlide');\n var $progressbar = $sliderModule.find('.cc-progressbar-active').eq(currentSlideIndex);\n var $promos = $slidesContainer.find('.slick-slide:not(.slick-cloned) .js-promo');\n var isPaused = false;\n var iterations = 0;\n var time = 150;\n\n const pauseInterval = function () {\n isPaused = true;\n };\n\n const resumeInterval = function () {\n iterations = 0;\n isPaused = false;\n };\n\n var interval = setInterval(() => {\n if (isPaused) return;\n\n var width = (time / sliderTimer) * iterations * 100;\n if (width <= 100) {\n $progressbar.css('width', width + '%');\n iterations++;\n } else {\n pauseInterval();\n\n // change slide\n currentSlideIndex = $slidesContainer.slick('slickCurrentSlide');\n var nextSlideIndex = (currentSlideIndex + 1) % slideCount;\n $slidesContainer.slick('slickGoTo', nextSlideIndex);\n\n // clear progress for current progressbar\n $progressbar.css('width', '');\n\n // update progressbar to match next slide\n $progressbar = $sliderModule.find('.cc-progressbar-active').eq(nextSlideIndex);\n\n // resume interval\n resumeInterval();\n }\n }, time);\n\n // handle click events\n $sliderModule.on('click', '.cc-progression-item', function(e) {\n var $cta = $(this).find('button.cc-item-label');\n // if cta is visible and click is not on the cta or on the progresss bar, ignore click\n if ($cta.is(':visible') && ! $(e.target).is('button.cc-item-label, .cc-progressbar')) return;\n pauseInterval();\n // get clicked slide index\n var slideId = $(this).find('.cc-progressbar-active').data('progression-id');\n var slideIndex = $slidesContainer.find('[data-slide-id='+ slideId +']').closest('.slick-slide').data('slick-index');\n\n // remove progress from other progress bars\n $sliderModule.find('.cc-progressbar-active').css('width', '');\n\n // update slide and progressbar\n $slidesContainer.slick('slickGoTo', slideIndex);\n $progressbar = $sliderModule.find('.cc-progressbar-active').eq(slideIndex);\n resumeInterval();\n });\n\n // handle click on arrows\n $sliderModule.on('click', '.slick-arrow', function() {\n pauseInterval();\n $sliderModule.one('afterChange', function(_, slide) {\n // clear progress for current progressbar\n $progressbar.css('width', '');\n\n // update progressbar to match next slide\n $progressbar = $sliderModule.find('.cc-progressbar-active').eq(slide.currentSlide);\n resumeInterval();\n });\n });\n\n // analytics\n $slidesContainer.on('afterChange', function(_, slick){\n var position = slick.currentSlide;\n var $promo = $promos.eq(position);\n if ($promo.length && ! $promo.hasClass('alreadyPrint')) {\n $(document).trigger('analytics:promoViewAutoSlider', [$promo, position+1]);\n }\n });\n $(document).trigger('analytics:promoViewAutoSlider', [$promos.eq(0), 1]);\n });\n }\n }\n};\n\n/* 36 Slider Immersive */\nvar pdSliderImmersive = function () {\n if ($('.cc-pd-slider-immersive').length > 0) {\n window.history.scrollRestoration = 'manual';\n window.addEventListener('beforeunload', () => window.scrollTo(0, 0));\n\n if ($('.cc-pd-slider-immersive .cc-slider .slick-slide').length === 0) {\n $('.cc-pd-slider-immersive .cc-slider').each(function () {\n let $sliderModule = $(this).closest('.cc-pd-slider-immersive');\n let $slidesContainer = $(this);\n\n $slidesContainer.slick({\n infinite: false,\n autoplay: false,\n swipe: true,\n focusOnSelect: false,\n pauseOnHover: false,\n pauseOnFocus: false,\n centerMode: false,\n fade: true,\n cssEase: 'linear',\n autoplaySpeed: 0,\n speed: 1300,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: ''\n });\n\n let moduleHeight = $sliderModule.height();\n let slideCount = $slidesContainer.find('.slick-slide:not(.slick-cloned)').length;\n let canChangeSlide = true;\n let $header = $('header.js-header');\n let scrollingDown;\n let scrollBlocked = false;\n let intersection = null\n let lastIntersection = null;\n\n // update numbers on slide change\n $sliderModule.find('.cc-numbers .cc-number--total').text(slideCount);\n $sliderModule.on('afterChange', function(_, slide) {\n $sliderModule.find('.cc-numbers .cc-number--active').text(slide.currentSlide+1);\n });\n\n if (! window.isTablet) {\n const scrollSlides = function (scrollingDown) {\n if (! canChangeSlide) return;\n let currSlideIndex = $slidesContainer.slick('slickCurrentSlide');\n let nextSlideIndex = currSlideIndex + (scrollingDown ? 1: -1);\n if (nextSlideIndex > -1 && nextSlideIndex < slideCount) {\n // scroll slides\n canChangeSlide = false;\n $slidesContainer.slick('slickGoTo', nextSlideIndex);\n setTimeout(() => canChangeSlide = true, 500);\n } else {\n // first or last slide reached. unlock scroll\n $('body').removeClass('cc-blocked');\n scrollBlocked = false;\n if (scrollingDown) {\n observer.disconnect();\n lastIntersection = null;\n $sliderModule.one('scroll-up', function(){\n observer.observe($sliderModule[0]);\n });\n } else {\n observer.disconnect();\n lastIntersection = null;\n $sliderModule.one('scroll-down', function(){\n observer.observe($sliderModule[0]);\n });\n }\n }\n };\n\n // scroll event listeners\n $(document).on('wheel', function(e) {\n scrollingDown = e.originalEvent.deltaY > 0;\n if (scrollBlocked) {\n scrollSlides(scrollingDown);\n } else if (! scrollingDown) {\n $sliderModule.trigger('scroll-up');\n } else {\n $sliderModule.trigger('scroll-down');\n }\n });\n\n $(document).on('touchstart', function(start){\n $(document).one('touchmove', function(move) {\n scrollingDown = move.touches[0].clientY < start.touches[0].clientY;\n\n if (scrollBlocked) {\n scrollSlides(scrollingDown);\n } else if (! scrollingDown) {\n $sliderModule.trigger('scroll-up');\n } else {\n $sliderModule.trigger('scroll-down');\n }\n });\n });\n\n const onIntersect = function (entries) {\n intersection = entries[0];\n if (intersection.intersectionRatio < threshold) return;\n if (! lastIntersection) lastIntersection = intersection;\n\n // do not block scroll if scrolling past the module\n if (lastIntersection.boundingClientRect.y > intersection.boundingClientRect.y && scrollingDown) return;\n else if (lastIntersection.boundingClientRect.y < intersection.boundingClientRect.y && !scrollingDown) return;\n\n $('body').addClass('cc-blocked');\n\n // temporary block scroll on slides\n canChangeSlide = false;\n setTimeout(() => canChangeSlide = true, 750);\n\n // document.body.classList.add('cc-blocked');\n if (! scrollBlocked) lastIntersection = intersection;\n scrollBlocked = true;\n // center the slide\n let headerHeight = $header.height();\n $('body').css('touch-action', 'none');\n setTimeout(() => {\n let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n let clientTop = document.documentElement.clientTop || document.body.clientTop || 0;\n let sliderTop = $sliderModule[0].getBoundingClientRect().top;\n let offsetTop = sliderTop + scrollTop - clientTop;\n $(document).scrollTop(offsetTop + moduleHeight/2 - window.innerHeight/2 -headerHeight/2);\n setTimeout(() => {\n $('body').css('touch-action', '');\n }, 500);\n }, 250);\n };\n let extraspace = (window.innerHeight - $sliderModule.height()) / 2;\n extraspace = Math.max(extraspace - 1, 0);\n\n let threshold = (window.innerHeight - $header.height()) / $sliderModule.height() - 0.005;\n threshold = Math.min(threshold/1.5, 1);\n let options = {\n // threshold: [Math.min(threshold/1.5 -0.1, 0.9), Math.min(threshold/1.5, 1)],\n threshold: threshold,\n rootMargin: -$header.height() + 'px 0px 0px 0px'\n };\n\n let observer = new IntersectionObserver(onIntersect, options);\n observer.observe($sliderModule[0]);\n }\n });\n }\n }\n};\n\n/* Checkout select address */\nvar lookRelativesSlider = function () {\n if ($('.cc-look-relatives-slider').length > 0) {\n if ($('.cc-look-relatives-slider .cc-slider .slick-slide').length === 0) {\n $('.cc-look-relatives-slider .cc-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: true,\n autoplay: false,\n focusOnSelect: false,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 3,\n slidesToShow: 3,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 3\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 2\n }\n }\n ]\n });\n });\n }\n }\n};\n\nvar sliderVariation = function () {\n // var arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev');\n // var arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext');\n // var arrowNext = $('.cc-product-list.cc-slider').data('arrowdx');\n // var arrowPrev = $('.cc-product-list.cc-slider').data('arrowsx');\n if ($('.cc-product-list.cc-product-list-slider').length > 0) {\n if ($('.cc-product-list.cc-product-list-slider.slick-slide').length === 0) {\n $('.cc-product-list.cc-product-list-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n accessibility: false,\n infinite: false,\n autoplay: false,\n focusOnSelect: false,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 3,\n variableWidth: false,\n dots: true,\n dotsClass: 'slick-dots-line',\n appendDots: $('.js-product-list-slick-dots'),\n arrow: false,\n prevArrow: null,\n nextArrow: null,\n responsive: [\n {\n breakpoint: 10000,\n settings: 'unslick'\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToScroll: 1,\n slidesToShow: 3,\n dots: false,\n arrow: true,\n infinite: false\n }\n }\n ]\n });\n });\n }\n }\n};\n\nwindow.addEventListener('pageshow', (event) => {\n if (event.persisted || (window.performance.getEntriesByType('navigation').length && window.performance.getEntriesByType('navigation')[0].type === 'back_forward')) {\n if ($('.veil').length > 0 && !$('.veil').hasClass('hidden')) {\n $.spinner().stop();\n }\n }\n});\n\n/* Height device */\nvar initViewportHeight = function () {\n if ($('.cj-height-device').length > 0) {\n var height = $(window).innerHeight() - $('.cc-content-header').height();\n height = parseInt(height) + 'px';\n $('.cj-height-device').css('height', height);\n }\n if ($('.cc-page-designer-heder-fixed .cj-height-device').length > 0 && !$('body').hasClass('cc-mobile') && !$('body').hasClass('cc-tablet')) {\n var height = $(window).innerHeight();\n height = parseInt(height) + 'px';\n $('.cj-height-device').css('height', height);\n }\n};\nwindow.heightDevice = initViewportHeight;\n\nvar productBase = require('./../product/base');\n\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\nfunction getCookie(cookieName) {\n var name = cookieName + '=';\n var decodedCookie = decodeURIComponent(document.cookie);\n var cookieArray = decodedCookie.split(';');\n for (var i = 0; i < cookieArray.length; i++) {\n var cookieItem = cookieArray[i];\n while (cookieItem.charAt(0) === ' ') {\n cookieItem = cookieItem.substring(1);\n }\n if (cookieItem.indexOf(name) === 0) {\n return cookieItem.substring(name.length, cookieItem.length);\n }\n }\n return '';\n}\n\nfunction setCookie (cookieName, value, expireDate) {\n var cookieExpiresDate = new Date();\n var addDays = parseInt(expireDate);\n cookieExpiresDate.setDate(cookieExpiresDate.getDate() + addDays);\n document.cookie = cookieName + '=' + String(value) + '; expires=' + cookieExpiresDate.toUTCString() + '; path=/';\n}\n\nfunction isSafari() {\n return navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&\n navigator.userAgent &&\n navigator.userAgent.indexOf('CriOS') == -1 &&\n navigator.userAgent.indexOf('FxiOS') == -1;\n}\n\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\n\nfunction setButtonScrollDownPosition () {\n var heightHeader = $('.js-header').outerHeight();\n var heightContainerScrollDownArrow = $('.js-button-scroll-down').parent().outerHeight();\n if ($('.cc-page-header-fixed').length > 0 && window.innerWidth >= 1200) {\n if (heightContainerScrollDownArrow - window.innerHeight >= 0) {\n $('.js-button-scroll-down').css('bottom', (heightContainerScrollDownArrow) - window.innerHeight + 30 + 'px');\n } else {\n $('.js-button-scroll-down').css('bottom', '2rem');\n }\n } else if ((heightContainerScrollDownArrow + heightHeader) - window.innerHeight > 0) {\n $('.js-button-scroll-down').css('bottom', (heightContainerScrollDownArrow + heightHeader) - window.innerHeight + 30 + 'px');\n }\n}\n\n$(document).on('lazybeforeunveil', function(e) {\n let $element = $(e.target);\n let ajax = $element.data('video-url');\n if (!ajax) {\n return;\n }\n if ($element.hasClass('cloudinary')) {\n $element.setAttribute('src', ajax);\n } else {\n $.ajax({\n url: ajax,\n success: function(data) {\n $element.attr('src', data.videoURL);\n }\n });\n }\n});\n$(document).ready(function () {\n navigationCountry = $('.page').attr('data-navigation-country');\n if (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\n }\n if ($('.js-button-scroll-down').length > 0) {\n setButtonScrollDownPosition();\n }\n\n // Resize Window\n responsiveResize();\n updateFooter();\n updateHeaderHeightVariables();\n\n if (isSafari()) {\n $('body').addClass('cc-safari');\n }\n\n $(window).resize(function () {\n if ($('.js-button-scroll-down').length > 0) {\n setButtonScrollDownPosition();\n }\n responsiveResize();\n updateFooter();\n updateNavMenu();\n setTimeout(function() {\n resizeMiniCartModal();\n }, 200);\n });\n accessFocus.iterateFocusOnPage();\n // Selectpicker\n $.fn.selectpicker.Constructor.BootstrapVersion = '4';\n $('.selectpicker').selectpicker();\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n // var selectID = $(this).attr('id') + '_btn';\n // var labelID = $(this).attr('id') + '_lbl';\n // $(this).attr('aria-hidden', 'true');\n // $button.attr('id', selectID);\n var $dropdown = $button.siblings('.dropdown-menu').children('.inner');\n $dropdown.attr('aria-label', label);\n $button.attr('aria-label', label);\n $button.attr('role', 'combobox').attr('aria-activedescendant', '');\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').attr('tabindex', '0');\n });\n $('.dropdown-menu .inner').removeAttr('aria-activedescendant');\n\n var targets = $('button.dropdown-toggle').siblings('.dropdown-menu').children('.inner').removeAttr('aria-activedescendant').get();\n if (targets) {\n // create an observer instance\n targets.forEach(function(target) {\n var observer = new MutationObserver(function(mutations) {\n if (mutations.length) {\n $(target).removeAttr('aria-activedescendant');\n // disconnect `observer`\n // this.disconnect();\n }\n });\n var config = {\n attributes: true\n };\n\n // pass in the target node, as well as the observer options\n observer.observe(target, config);\n });\n };\n // $.fn.selectpicker.Constructor.DEFAULTS.template.caret = '
    ';\n // cambio colore title dropdown\n $(document).on('change', '.cc-content-select-color .cc-select', function () {\n $(this).closest('.cc-content-select-color').removeClass('cc-content-select-color');\n });\n\n function updateHeaderHeightVariables() {\n var headerHeight = Math.ceil($('header').outerHeight());\n var bannerHeigth = Math.ceil($('header .js-header-banner').outerHeight() || 0);\n var topHeaderHeight = headerHeight - bannerHeigth;\n $('body').css('--header-height', `${headerHeight}px`).css('--header-top-height', `${topHeaderHeight}px`);\n }\n\n $(document).on('product:updatePrices', function(_, ...productIds){\n var url = $('.getProductPriceURL').val();\n productIds.forEach(function(pid) {\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n pid: pid\n },\n success: function(data) {\n if (data.priceHTML) {\n var $updatedPrice = $(data.priceHTML);\n $updatedPrice.attr('data-price-updated', true);\n var productId = $updatedPrice.attr('data-pid');\n var $pricesToUpdate = $(`.cc-price.js-price[data-pid=\"${productId}\"]`);\n $updatedPrice.replaceAll($pricesToUpdate);\n }\n }\n });\n });\n });\n\n // Sticky Header\n $(document).on('scroll', _throttle(function() {\n var $phoneHeader = $('.js-phone-header');\n if ($(window).scrollTop() > 86) {\n if (!$('body.cc-desktop').hasClass('body-horizontal-scroll')) {\n $('.cc-content-header .cc-header:not(.js-header-newpdp)').addClass('cc-header-sticky');\n $('body').trigger('headerSticky:true');\n $('.cc-navbar-list').css('content-visibility', 'visible');\n $('.js-button-scroll-down').hide();\n if ($('.cc-navbar-item').length > 6) {\n $phoneHeader.find('.cc-text').attr('style', 'display:none !important');\n } else $phoneHeader.find('.cc-text').attr('style', '');\n }\n } else {\n $('.cc-content-header .cc-header:not(.js-header-newpdp)').removeClass('cc-header-sticky');\n $('body').trigger('headerSticky:false');\n $('.js-button-scroll-down').show();\n $phoneHeader.find('.cc-text').attr('style', '');\n }\n updateHeaderHeightVariables();\n }, 150));\n // PDP Share button\n $(document).on('click', '.cc-desktop .cc-product-detail .cc-share-button-share, .cc-tablet .cc-product-detail .cc-share-button-share', function (e) {\n $(this).find('.cc-share-overlay').fadeIn();\n $(this).addClass('cc-share-background-overlay');\n accessFocus.focusOnFirstElement('.cc-share-overlay');\n accessFocus.focuseOnModal('.cc-share-overlay', '.cc-share-button-share', '.cc-share-overlay');\n e.stopPropagation();\n });\n\n $(document).on('click', '.cc-mobile .cc-product-detail .cc-share-button-share', function (e) {\n $('.js-whatsapp-link').attr('href', function() { this.href = this.href.replace('https://wa.me/?text=', 'whatsapp://send?text='); });\n $('body').css('overflow', 'hidden');\n $('.cc-mobile-content-share').css('display', 'block');\n $('.cc-sticky-add-to-cart').css('display', 'none');\n\n var heightSocialHead = 75;\n var top;\n var headerHeight = $('header').height();\n var heightPage = $(window).height();\n if (heightPage < 550) {\n top = headerHeight + heightSocialHead;\n } else {\n var heightSocialListLink = $('div.cc-social-list').height();\n var heightSocialListUl = $('.cc-social-list-ul').height();\n var heightSocialList = heightSocialListUl + heightSocialListLink;\n top = heightPage - heightSocialList - heightSocialHead;\n }\n $('.cc-mobile-content-share').css('top', top);\n $(this).addClass('cc-share-background-overlay');\n e.stopPropagation();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n });\n $(document).on('click', '.cc-mobile .cc-product-detail .cc-qrcode-overlay', function (e) {\n $('.qrcode').removeClass('qrcode-active');\n $('.cc-qrcode-overlay').removeClass('cc-overlay-active');\n });\n $(document).on('click', '.cc-mobile .wechatShareMobile', function (e) {\n e.preventDefault();\n $('.qrcode').addClass('qrcode-active');\n $('.cc-qrcode-overlay').addClass('cc-overlay-active');\n });\n $(document).on('click', '.cc-product-detail .cc-mobile-content-share .cc-mobile-close-share-button', function (e) {\n $('.cc-mobile-content-share').css('display', 'none');\n $('.cc-sticky-add-to-cart').css('display', 'unset');\n $('.cc-share-button-share').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n $('body').css('overflow', 'unset');\n e.stopPropagation();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n });\n\n $(document).on('click', '.cc-product-detail .cc-share-button-share .cc-close-overlay-share-button', function (e) {\n $(this).closest('.cc-share-overlay').fadeOut();\n $(this).closest('.cc-share-button-share').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n e.stopPropagation();\n });\n\n // valorizza aria-label in selectpicker\n\n // var select = $(document).find('.dropdown .dropdown-toggle');\n // select.each(function() {\n // var title = $(this).attr('title');\n // $(this).attr('aria-label', title);\n // });\n $(document).on('change', 'select', function() {\n var select = $(this).closest('.dropdown').find('.dropdown-toggle');\n var title = select.attr('title');\n select.attr('aria-label', title);\n });\n\n // Collapsable section\n $(document).on('click', '.cc-collapsable .cc-collapsable-button', function (e) {\n if ($(this).data('id-collapsable')) {\n var id = $(this).data('id-collapsable');\n $(this).toggleClass('cc-collapsable-close');\n $(this).closest('.cc-collapsable').find('.cc-collapsable-section').filter(function () {\n return ($(this).data('id-collapsable') && $(this).data('id-collapsable') === id);\n }).slideToggle();\n if (($(this).find('.js-expand-button').length > 0)) {\n if (!$(this).hasClass('cc-collapsable-close')) {\n $(this).find('.js-expand-button').attr('aria-expanded', true);\n } else {\n $(this).find('.js-expand-button').attr('aria-expanded', false);\n }\n }\n }\n e.stopPropagation();\n });\n\n // Collapsable section Summary\n $(document).on('click', '.cc-mobile .cj-summary-mobile-collapsable .cc-summary-header', function (e) {\n $(this).toggleClass('cc-open');\n if ($('.cc-summary-total-mobile').css('display') === 'block') {\n $('.cc-summary-total-mobile').css('display', 'none');\n } else {\n $('.cc-summary-total-mobile').css('display', 'block');\n }\n if ($(this).hasClass('cc-open')) {\n $('.cc-icon-down').addClass('d-none');\n $('.cc-icon-up').removeClass('d-none');\n $('.js-summary-button').attr('aria-expanded', true);\n } else {\n $('.cc-icon-up').addClass('d-none');\n $('.cc-icon-down').removeClass('d-none');\n $('.js-summary-button').attr('aria-expanded', false);\n }\n $(this).closest('.cj-summary-mobile-collapsable').find('.cc-summary-body').slideToggle();\n e.stopPropagation();\n });\n\n // Size Guide Info\n $(document).on('click', '.cc-size-guide .cc-content-size-columns .cc-content-table .cc-size-table .cc-size-info .cc-icon', function (e) {\n $(this).closest('.cc-content-size-columns').find('.cc-img-section').addClass('cc-open');\n e.stopPropagation();\n });\n $(document).on('click', '.cc-size-guide .cc-content-size-columns .cc-img-section', function (e) {\n $(this).removeClass('cc-open');\n e.stopPropagation();\n });\n\n // Size Guide accordion\n $(document).on('click', '.cc-size-guide-standard .cc-size-table .cc-row .cc-col.cc-col-1', function (e) {\n $(this).closest('.cc-row').toggleClass('cc-section-open');\n e.stopPropagation();\n });\n\n // Cart accordion\n $(document).on('click', '.cc-tax-accordion .cc-accordion-button', function (e) {\n $(this).toggleClass('cc-open');\n $(this).closest('.cc-tax-accordion').find('.cc-accordion-section').slideToggle();\n e.stopPropagation();\n });\n\n // Footer page Collapsable menu mobile\n $(document).on('click', '.cc-mobile .cc-footer-page .cc-content-lateral-menu .cc-button-lateral-menu', function (e) {\n $(this).toggleClass('cc-open');\n $(this).closest('.cc-content-lateral-menu').find('.cc-lateral-menu').slideToggle();\n e.stopPropagation();\n });\n\n // Footer page Active item link on onepage scroll\n if ($('.cc-footer-page .cc-lateral-menu-onepage').length > 0) {\n var lateralMenu = $('.cc-footer-page .cc-lateral-menu-onepage');\n var menuItems = lateralMenu.find('a');\n var scrollItems = menuItems.map(function() {\n var item = $($(this).attr('href'));\n if (item.length) { return item; }\n });\n }\n\n // experience: trigger definition to process background from an external ajax request after onload\n $('body').on('experience:changebackground', changeBackground);\n\n $(document).on('scroll', function () {\n if ($('.cc-footer-page .cc-lateral-menu-onepage').length > 0) {\n var fromTop = $(window).scrollTop() + 20;\n\n // Get id of current scroll item\n var cur = scrollItems.map(function() {\n if ($(this).offset().top < fromTop) { return this; }\n });\n // Get the id of the current element\n cur = cur[cur.length - 1];\n var id = cur && cur.length ? cur[0].id : '';\n // Set/remove active class\n menuItems\n .parent().removeClass('cc-active')\n .end().filter(\"[href='#\" + id + \"']\").parent().addClass('cc-active');\n }\n });\n\n // Footer page Collapsable section\n $(document).on('click', '.cc-footer-page .cc-section .cc-collapsable-button', function (e) {\n $(this).toggleClass('cc-open');\n $(this).closest('.cc-collapsable-section').find('.cc-collapsable-main').slideToggle();\n e.stopPropagation();\n });\n\n // Footer Accordion Mobile\n $(document).on('click', '.cc-mobile .cc-footer .cc-footer-items .cc-col-title', function (e) {\n if ($(this).data('id-footer-menu-item')) {\n var id = $(this).data('id-footer-menu-item');\n $(this).toggleClass('cc-link-open');\n $(this).closest('.cc-footer-col').find('.cc-footer-links').filter(function () {\n return ($(this).data('id-footer-menu-item') && $(this).data('id-footer-menu-item') === id);\n }).slideToggle();\n\n if ($(this).hasClass('cc-link-open')) {\n $(this).children('.cc-col-title-button').attr('aria-expanded', true);\n } else {\n $(this).children('.cc-col-title-button').attr('aria-expanded', false);\n }\n }\n e.stopPropagation();\n });\n\n // Return Sidebar Collapsable section\n $(document).on('click', '.cc-return-sidebar .cc-collapsable-button', function (e) {\n $(this).toggleClass('cc-open');\n $(this).closest('.cc-collapsable-section').find('.cc-collapsable-main').slideToggle();\n\n if ($(this).hasClass('cc-open')) {\n $(this).find('.js-return-accordion').attr('aria-expanded', true);\n } else {\n $(this).find('.js-return-accordion').attr('aria-expanded', false);\n }\n e.stopPropagation();\n });\n\n // heightDevice();\n // prodColorSliderSticky();\n // addressSlider();\n pdSlider();\n pdSliderProgression();\n pdSliderImmersive();\n lookRelativesSlider();\n sliderVariation();\n\n openSizeColorModal();\n\n // closeSizeColorModal\n $(document).on('click', '.js-close-size-color', function () {\n var $product = $(this).closest('.cc-product-tile');\n var $analytics = $('.new-analytics', $product);\n var masterPid = $analytics.attr('data-pid');\n var color = $analytics.attr('data-color');\n var id = $(this).data('id');\n $(this).removeClass('js-close-size-color').addClass('js-open-size-color');\n $('.sizecolorTab-' + id).removeClass('cc-open');\n $(this).find('.js-size-color').attr('aria-expanded', false);\n\n var plus = $(this).data('plus');\n $('.openTab-' + id).find('.js-change-icon').children().attr('xlink:href', plus);\n $(document).trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: masterPid + color, // pid concatenation tiles\n buttonType: 'Quick Cart Add',\n accessType: 'tile'\n });\n });\n\n // quickAddPLP\n $(document).on('click', '.js-buy-button-plp', function (e) {\n var prodID = $(this).attr('data-pid');\n var incompleteSelection = $(this).data('disabled');\n var isCart = $(document).find('.cc-cart');\n var addToCartUrl;\n var reupload = $('.js-goToCart-recommendad').val();\n if (incompleteSelection) {\n $('.js-available-size-title-' + prodID).css('color', '#922222');\n $('.error-select-size-' + prodID).removeClass('d-none');\n // accessibility: announce to select a size\n $('.error-select-size-' + prodID).append(' ');\n } else {\n if (isCart.length > 0) {\n addToCartUrl = getAddToCartUrl();\n productBase.performAddToCartCall(addToCartUrl, prodID, null, [], 1,\n function (resData) {\n $('body').trigger('product:afterAddToCart', resData);\n window.location.reload();\n },\n function() {window.location.reload();}\n );\n e.preventDefault();\n } else {\n addToCartUrl = getAddToCartUrl();\n $('body').trigger('product:beforeAddToCart', this);\n $(document).find('.js-minicartside-overlay-container').css('content-visibility', 'visible');\n // call add to Cart function\n let $container = $(this).closest('.product');\n productBase.performAddToCartCall(addToCartUrl, prodID, null, [], 1, function (resData) {\n $('.js-size-color-modal', $container).removeClass('cc-open');\n let $element = $container.find('.js-close-size-color').removeClass('js-close-size-color').addClass('js-open-size-color');\n let plus = $element.data('plus');\n $element.find('use').attr('xlink:href', plus);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n });\n }\n }\n });\n\n // openSwatchListMobile: function () {\n $(document).on('click', '.mobile-swatch-list', function () {\n var productID = $(this).data('pid');\n var container = $(this).closest($('.cc-size-color-modal'));\n if ($('.swatch-list-mobile-tile-' + productID, container).hasClass('d-none')) {\n // open swatch color\n $('.swatch-list-mobile-tile-' + productID, container).removeClass('d-none');\n $('.open-swatch-list-' + productID, container).removeClass('d-none');\n $('.close-swatch-list-' + productID, container).addClass('d-none');\n // if is open close sizeList\n if (!$('.size-list-mobile-container-' + productID, container).hasClass('d-none')) {\n $('.size-list-mobile-container-' + productID, container).addClass('d-none');\n $('.open-size-list-' + productID, container).removeClass('d-none');\n $('.close-size-list-' + productID, container).addClass('d-none');\n }\n\n let parent = `.sizecolorTab-${productID}.js-mobile-variant`;\n setTimeout(() => {\n let numberOfColors = parseInt(($(`.js-mobile-variant.sizecolorTab-${productID} .js-color-carousel-container`).width() - (16 * 2)) / 67);\n let numberOfAvailableColors = $(`.js-desktop-variant.sizecolorTab-${productID} .js-color-carousel-container`).data('numberOfColors');\n if (numberOfAvailableColors > numberOfColors && numberOfColors > 0) {\n $(parent + ' .js-arrow-sx-color').removeClass('d-none');\n $(parent + ' .js-arrow-dx-color').removeClass('d-none');\n if (!$(parent + ' .cc-swatch-container').hasClass('slick-initialized')) {\n var iteamWidth = $(parent + ' .cc-rectangle-color').width();\n $(parent + ' .cc-swatch-container').css({ maxWidth: ((numberOfColors * iteamWidth) - 32) + 'px', display: 'inline-block' });\n $(parent + ' .cc-swatch-container').slick({\n infinite: false,\n slidesToScroll: 1,\n slidesToShow: numberOfColors,\n dots: false,\n arrow: true,\n prevArrow: parent + ' .js-arrow-sx-color',\n nextArrow: parent + ' .js-arrow-dx-color'\n });\n }\n } else {\n $(parent + ' .js-arrow-sx-color').addClass('d-none');\n $(parent + ' .js-arrow-dx-color').addClass('d-none');\n }\n }, 100);\n } else {\n // closing swatch color\n $('.swatch-list-mobile-tile-' + productID).addClass('d-none');\n $('.open-swatch-list-' + productID).addClass('d-none');\n $('.close-swatch-list-' + productID).removeClass('d-none');\n }\n });\n // },\n\n $(document).on('click', '.cc-mobile-size-list', function () {\n var productID = $(this).data('pid');\n var $sizeContainer = $(`.size-list-mobile-tile-${productID} .cc-size-list-mobile`);\n if ($sizeContainer.hasClass('d-none')) {\n // open size list\n $sizeContainer.removeClass('d-none');\n $('.open-size-list-' + productID).addClass('d-none');\n $('.close-size-list-' + productID).removeClass('d-none');\n\n // close swatch color\n $('.swatch-list-mobile-tile-' + productID).addClass('d-none');\n $('.open-swatch-list-' + productID).addClass('d-none');\n $('.close-swatch-list-' + productID).removeClass('d-none');\n } else {\n // closing size list\n $sizeContainer.addClass('d-none');\n $('.open-size-list-' + productID).removeClass('d-none');\n $('.close-size-list-' + productID).addClass('d-none');\n }\n });\n\n const buildSrcSet = (imageSet, prevArrStartIndex, isSwatch) => {\n return imageSet.map((url, idx) => {\n if (isSwatch) {\n return url + ' ' + ((idx + prevArrStartIndex === 0) ? 100 : (idx + prevArrStartIndex) * 200) + 'w';\n } else {\n return url + ' ' + ((idx + prevArrStartIndex) * 200) + 'w';\n }\n }).join(',');\n };\n\n // request size from plp\n $(document).on('click', '.js-open-requestsize-pdp', function () {\n var redirectUrl = $(this).data('urlredirect');\n window.location.href = redirectUrl;\n });\n\n $(document).on('keydown', '.js-select-size-tile-radio, .js-select-size-tile-mobile', (e) => {\n if (e.keyCode === 13) {\n e.preventDefault(); // Ensure it is only this code that runs\n $(e.currentTarget).trigger('click');\n }\n });\n\n $(document).on('click', '.js-select-size-tile-radio, .js-select-size-tile-mobile, .js-select-color-tile', (e) => {\n var $clickedElement = $(e.currentTarget);\n if (!e.currentTarget.classList.contains('disabled')) {\n if (e.currentTarget.classList.contains('js-add-color-variation-analytics')) {\n var newColor = $(e.currentTarget).data('value');\n }\n $.spinner().start();\n let $productContainer = $(e.currentTarget).closest('.product');\n var bigTileRequired = false;\n if ($productContainer.parents('.grid2-central-tile-margin').length > 0) {\n bigTileRequired = true;\n }\n if ($clickedElement.hasClass('js-select-size-tile-radio')) {\n var sizeCode = $clickedElement.attr('data-value');\n }\n $.ajax({\n url: $(e.currentTarget).data('select'),\n method: 'GET',\n data: {\n bigTileRequired: bigTileRequired\n },\n success: function (data) {\n $.spinner().stop();\n $('.js-available-size-title', $productContainer).css('color', '#262626');\n $('.error-select-size', $productContainer).addClass('d-none');\n var $sizeContainer = $clickedElement.closest('.cc-size-color-modal').find('.cc-select-size-tile');\n var sizeTemplate = window.isMobile ? 'availableSizesMobileHtml' : 'availableSizesHtml';\n $sizeContainer.replaceWith($(data.product[sizeTemplate]).filter('.cc-select-size-tile'));\n $('.js-add-to-wishlist', $productContainer).data('pid', data.product.sku);\n $('.js-microcolor', $productContainer).addClass('d-none');\n $('.js-selected-color', $productContainer).addClass('d-none');\n if (data.product.hasVerticalVideo && $productContainer.parents('.grid2-central-tile-margin').length === 0) {\n $('.js-image-container .js-analytics-click-product, .js-image-container .justify-content-center', $productContainer).remove();\n $('.js-image-container .cc-vertical-video', $productContainer).remove();\n $('.js-image-container .js-pdp-variant-link', $productContainer).append(data.product.imageVideoTemplateTileHtml);\n $('.js-image-container .js-pdp-variant-link .js-analytics-click-product', $productContainer).attr('data-pid', $('.js-image-container', $productContainer).data('id'));\n } else if (data.product.hasHorizontalVideo && $productContainer.parents('.grid2-central-tile-margin').length > 0) {\n $('.js-image-container .js-analytics-click-product, .js-image-container .justify-content-center', $productContainer).remove();\n $('.js-image-container .cc-vertical-video, .js-image-container .cc-horizontal-video', $productContainer).remove();\n $('.js-image-container .js-pdp-variant-link', $productContainer).append(data.product.imageVideoTemplateTileHtml);\n $('.js-image-container .js-pdp-variant-link .js-analytics-click-product', $productContainer).attr('data-pid', $('.js-image-container', $productContainer).data('id'));\n $productContainer.removeClass('grid2BigTile');\n } else if (data.product.horizontalImage.horizontalImageUrl && $productContainer.parents('.grid2-central-tile-margin').length > 0) {\n if ($('.js-image-container .cc-vertical-video, .js-image-container .cc-horizontal-video', $productContainer).length > 0) {\n $('.js-image-container .js-analytics-click-product', $productContainer).remove();\n }\n $productContainer.removeClass('grid2BigTile');\n if ($('.js-image-container .js-tile-image', $productContainer).length === 0) {\n $('.js-image-container .js-pdp-variant-link', $productContainer).append(data.product.imageVideoTemplateTileHtml);\n $('.js-image-container .js-analytics-click-product', $productContainer).attr('data-pid', $('.js-image-container', $productContainer).data('id'));\n } else {\n if ($('.js-image-container .js-analytics-click-product', $productContainer).hasClass('cc-padding-preload-img')) {\n $('.js-image-container .js-analytics-click-product', $productContainer).removeClass('cc-padding-preload-img');\n $('.js-image-container .js-analytics-click-product', $productContainer).addClass('cc-padding-preload-img-horizontal');\n }\n var $hResizedUrlsFirstSource = (data.product.horizontalImage.horizontalImageUrl[0].resizedUrls).splice(0, 3);\n var $hResizedUrlsSecondSource = (data.product.horizontalImage.horizontalImageUrl[0].resizedUrls);\n $('.js-tile-image', $productContainer).siblings('source').eq(0).attr('srcset', buildSrcSet($hResizedUrlsFirstSource, 0));\n\n $('.js-tile-image', $productContainer).siblings('source').eq(1).attr('srcset', buildSrcSet($hResizedUrlsSecondSource, 3));\n\n $('.js-tile-image', $productContainer).attr('src', data.product.horizontalImage.horizontalImageUrl[0].absURL);\n }\n } else if (data.product.images.swatch.length > 0) {\n if ($('.js-image-container .cc-horizontal-video, .cc-padding-preload-img-horizontal', $productContainer).length > 0) {\n $productContainer.addClass('grid2BigTile');\n var horizontalContainer = $('.cc-padding-preload-img-horizontal', $productContainer);\n horizontalContainer.removeClass('cc-padding-preload-img-horizontal');\n horizontalContainer.addClass('cc-padding-preload-img');\n }\n if ($('.js-image-container .cc-vertical-video, .js-image-container .cc-horizontal-video', $productContainer).length > 0) {\n $('.js-image-container .js-analytics-click-product', $productContainer).remove();\n }\n if ($('.js-image-container .js-tile-image', $productContainer).length === 0) {\n $('.js-image-container .js-pdp-variant-link', $productContainer).append(data.product.imageVideoTemplateTileHtml);\n $('.js-image-container .js-analytics-click-product', $productContainer).attr('data-pid', $('.js-image-container', $productContainer).data('id'));\n } else {\n var $swatchResizedUrlsFirstSource = (data.product.images.swatch[0].resizedUrls).splice(0, 4);\n var $swatchResizedUrlsSecondSource = (data.product.images.swatch[0].resizedUrls);\n $('.js-tile-image', $productContainer).siblings('source').eq(0).attr('srcset', buildSrcSet($swatchResizedUrlsFirstSource, 0, true));\n\n $('.js-tile-image', $productContainer).siblings('source').eq(1).attr('srcset', buildSrcSet($swatchResizedUrlsSecondSource, 4, true));\n\n $('.js-tile-image', $productContainer).attr('src', data.product.images.swatch[0].absURL);\n }\n } else if (data.product.images.large.length > 0) {\n if ($('.js-image-container .cc-horizontal-video, .cc-padding-preload-img-horizontal', $productContainer).length > 0) {\n $productContainer.addClass('grid2BigTile');\n var horizontalContainer = $('.cc-padding-preload-img-horizontal');\n horizontalContainer.removeClass('cc-padding-preload-img-horizontal');\n horizontalContainer.addClass('cc-padding-preload-img');\n }\n if ($('.js-image-container .cc-vertical-video, .js-image-container .cc-horizontal-video', $productContainer).length > 0) {\n $('.js-image-container .js-analytics-click-product', $productContainer).remove();\n }\n if ($('.js-image-container .js-tile-image', $productContainer).length === 0) {\n $('.js-image-container .js-pdp-variant-link', $productContainer).append(data.product.imageVideoTemplateTileHtml);\n $('.js-image-container .js-analytics-click-product', $productContainer).attr('data-pid', $('.js-image-container', $productContainer).data('id'));\n } else {\n var $largeResizedUrlsFirstSource = (data.product.images.large[0].resizedUrls).splice(0, 3);\n var $largeResizedUrlsSecondSource = (data.product.images.large[0].resizedUrls);\n $('.js-tile-image', $productContainer).siblings('source').eq(0).attr('srcset', buildSrcSet($largeResizedUrlsFirstSource, 0));\n\n $('.js-tile-image', $productContainer).siblings('source').eq(1).attr('srcset', buildSrcSet($largeResizedUrlsSecondSource, 3));\n\n $('.js-tile-image', $productContainer).attr('src', data.product.images.large[0].absURL);\n }\n }\n $('.js-only-one-left', $productContainer).addClass('d-none');\n $('.js-open-requestsize-pdp', $productContainer).addClass('d-none');\n\n let $size = $('.js-selected-size', $productContainer);\n $size.text($size.data('resettext'));\n\n data.product.variationAttributes[0].values.forEach(function (attrValue) {\n let $attrValue = $(`.js-select-color-tile[data-value=\"${attrValue.value}\"]`, $productContainer);\n $attrValue.removeClass('cc-swatch-rectangle-selected cc-size-no-available');\n\n if (!attrValue.selectable) {\n $attrValue.addClass('cc-size-no-available');\n }\n if (attrValue.selected) {\n $attrValue.addClass('cc-swatch-rectangle-selected');\n $(`.js-microcolor[data-value=\"${attrValue.value}\"]`, $productContainer)\n .removeClass('d-none')\n .text(attrValue.microcolor);\n $(`.js-selected-color[data-value=\"${attrValue.value}\"]`, $productContainer).removeClass('d-none');\n if (attrValue.pdpUrl) {\n $('.js-pdp-variant-link', $productContainer).attr('href', attrValue.pdpUrl);\n if ($('.js-pdp-variant-link', $productContainer).attr('rel')) {\n $('.js-pdp-variant-link', $productContainer).attr('rel', attrValue.pdpUrl);\n }\n }\n $('.js-add-to-wishlist', $productContainer).attr('data-color', attrValue.value);\n $('.js-close-size-color', $productContainer).attr('data-color', attrValue.value);\n\n var ariaLabel = $attrValue.attr('data-selected-color');\n $attrValue.attr('aria-label', ariaLabel);\n } else {\n $attrValue.addClass('cc-swatch-rectangle');\n $attrValue.attr('aria-label', attrValue.microcolor);\n }\n });\n data.product.variationAttributes[1].values.forEach(function (attrValue) {\n let $attrValue = $(`[data-value=\"${attrValue.value}\"]`, $productContainer);\n $attrValue.data('select', attrValue.url).prop('disabled', false);\n\n $($attrValue).siblings('.js-select-size-tile').removeClass('cc-size-no-available cc-size-element-selected');\n $($attrValue).siblings('.js-only-one-left').removeClass('cc-size-element-selected');\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $($attrValue).siblings('.js-select-size-tile').addClass('cc-size-no-available');\n $(`.js-open-requestsize-pdp[data-value=\"${attrValue.value}\"]`, $productContainer).removeClass('d-none');\n $(`.js-open-requestsize-pdp[data-value=\"${attrValue.value}\"]`).prop('disabled', false);\n }\n if (attrValue.selected) {\n $attrValue.addClass('cc-size-element-selected');\n $('.js-selected-size', $productContainer).text(attrValue.displayValue);\n $('.cc-size-element').removeClass('cc-size-element-selected');\n $($attrValue).siblings('.cc-size-element').addClass('cc-size-element-selected');\n }\n if (attrValue.isOnlyOneLeft) {\n $(`.js-only-one-left[data-value=\"${attrValue.value}\"]`, $productContainer).removeClass('d-none');\n }\n });\n\n var noSizeSelected = data.product.variationAttributes[1].values.every(size => size.selected == false);\n if (noSizeSelected) {\n $('.new-analytics', $productContainer).attr({\n 'data-size': '' // reset current size\n });\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n\n // Set the data on the button\n $('.js-buy-button-plp', $productContainer).data('disabled',\n (!data.product.readyToOrder || !data.product.available));\n $('.js-buy-button-plp', $productContainer).attr('data-pid', data.product.id);\n\n // Update the price (only if the price was \"range\")\n var hasRangePrice = $('.js-product-info', $productContainer).data('has-range-price');\n if (hasRangePrice && data.product.readyToOrder && data.product.available && data.product.price) {\n $('.js-price-container', $productContainer).text(data.product.price.sales.formatted);\n $('.js-price-container', $productContainer).removeClass('d-none');\n } else {\n var $priceSelector = $('.cc-price.js-price', $productContainer).length\n ? $('.cc-price.js-price', $productContainer)\n : $('.cc-price.js-price');\n $priceSelector.replaceWith(data.product.price.html);\n }\n var skuMaster = data.product.skuMaster;\n $productContainer.attr('data-skumaster', skuMaster);\n if (newColor) {\n $productContainer.find('.js-analytics-click-product-info-' + skuMaster).attr('data-color', newColor);\n }\n \n // accessibility: update size and color for selected variant in PLP\n if ($clickedElement.is('.js-select-color-tile')) {\n var colorText = $clickedElement.find('.js-microcolor').text();\n $('#sr-' + skuMaster + '-color').text(colorText);\n // clear the selected size\n $('#sr-' + skuMaster + '-size').empty();\n } else {\n var sizeText = $clickedElement.attr('data-size');\n $('#sr-' + skuMaster + '-size').text(sizeText);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(() => {\n $('body').trigger('wishlist:productVariationChange', [{$element: $productContainer}]);\n\n // close size selector\n // if (e.currentTarget.classList.contains('js-select-size-tile-mobile')) {\n // var id = $(e.currentTarget).closest('.cc-size-color-modal').attr('data-productid');\n // $(`.footer-tile-${id} .cc-mobile-size-list`).trigger('click');\n // }\n });\n }\n });\n\n // goToPDPLink\n $(document).on('click', '.js-pdp-variant-link', function(e) {\n var $productContainer = $(e.currentTarget).closest('.product');\n var $modalContainer = $productContainer.find('.js-size-color-modal');\n var $boxTile = $productContainer.find('.js-open-size-color');\n if (!$boxTile.length) {\n $boxTile = $productContainer.find('.js-close-size-color');\n }\n\n var plus = $boxTile.data('plus');\n // close overlay when it's open and tap in img\n if ($modalContainer.hasClass('cc-open')) {\n $modalContainer.removeClass('cc-open');\n $boxTile.removeClass('js-close-size-color').addClass('js-open-size-color');\n $boxTile.parent().find('.js-change-icon').children().attr('xlink:href', plus);\n e.preventDefault();\n }\n });\n\n // Inspirations Image Animation Desktop\n $(document).on('mouseenter', '.cc-desktop .cc-inspirations .cc-inspirations-items .cc-content-item .cc-item', function (e) {\n var elementId = $(this).data('inspirations');\n $(this).closest('.cc-content-item').siblings().find('.cc-item').removeClass('cc-active');\n $(this).addClass('cc-active');\n\n $('.cc-inspirations .cc-content-images .cc-content-image').each(function() {\n $(this).removeClass('cc-past');\n if ($(this).data('inspirations') == elementId) {\n $(this).addClass('cc-active');\n } else {\n if ($(this).hasClass('cc-active')) {\n $(this).removeClass('cc-active');\n $(this).addClass('cc-past');\n }\n }\n });\n });\n\n // When the Stories page loads, I need to set the tabindex=-1 to all the elements that do not have any data-category associated\n $('.cc-inspirations .cc-inspirations-elements .cc-inspirations-head .cc-inspirations-filters .cc-filter').each(function() {\n var category = $(this).data('category');\n var items = $('.cc-inspirations-items .cc-content-item[data-category=\"' + category + '\"]');\n var count = items.length;\n if (count === 0) {$(this).addClass('unclickable').attr('tabindex', '-1');}\n });\n\n // Inspirations Filters\n $(document).on('click keydown focus', '.cc-inspirations .cc-inspirations-head .cc-inspirations-filters .cc-filter', function(e) {\n if (e.type === 'click' || (e.type === 'keydown' && e.key === 'Enter')) {\n if (!$(this).hasClass('cc-active')) {\n var selectedCategory = $(this).data('category');\n var firstChild = false;\n \n $(this).siblings().removeClass('cc-active').attr({\n 'aria-selected': 'false'\n });\n $(this).addClass('cc-active').attr({\n 'aria-selected': 'true'\n });\n \n $('.cc-inspirations .cc-content-images .cc-content-image').each(function () {\n var element = $(this);\n if (selectedCategory == '0') {\n element.show();\n } else {\n if (element.data('category') == selectedCategory) {\n element.show();\n } else {\n element.hide();\n }\n }\n });\n \n $('.cc-inspirations .cc-inspirations-items .cc-content-item').each(function () {\n var element = $(this);\n if (selectedCategory == '0') {\n element.show();\n \n if (firstChild == false) {\n firstChild = true;\n var elementId = $(this).find('.cc-item').data('inspirations');\n \n $(this).siblings().find('.cc-item').removeClass('cc-active');\n $(this).find('.cc-item').addClass('cc-active');\n \n $('.cc-inspirations .cc-content-images .cc-content-image').each(function() {\n $(this).removeClass('cc-past');\n if ($(this).data('inspirations') == elementId) {\n $(this).addClass('cc-active');\n } else {\n if ($(this).hasClass('cc-active')) {\n $(this).removeClass('cc-active');\n $(this).addClass('cc-past');\n }\n }\n });\n }\n } else {\n if (element.data('category') == selectedCategory) {\n element.show();\n \n if (firstChild == false) {\n firstChild = true;\n var elementId = $(this).find('.cc-item').data('inspirations');\n \n $(this).siblings().find('.cc-item').removeClass('cc-active');\n $(this).find('.cc-item').addClass('cc-active');\n \n $('.cc-inspirations .cc-content-images .cc-content-image').each(function() {\n $(this).removeClass('cc-past');\n if ($(this).data('inspirations') == elementId) {\n $(this).addClass('cc-active');\n } else {\n if ($(this).hasClass('cc-active')) {\n $(this).removeClass('cc-active');\n $(this).addClass('cc-past');\n }\n }\n });\n }\n } else {\n element.hide();\n }\n }\n });\n }\n } \n });\n\n // 23-Module-Mouseover Image Animation Desktop\n $(document).on('mouseenter', '.cc-desktop .cc-pd-mouseover .cc-content-items .cc-content-item .cc-item', function (e) {\n var elementId = $(this).data('item');\n\n $(this).closest('.cc-pd-mouseover').find('.cc-content-images .cc-content-image').each(function() {\n $(this).removeClass('cc-past');\n if ($(this).data('item') == elementId) {\n $(this).addClass('cc-active');\n } else {\n if ($(this).hasClass('cc-active')) {\n $(this).removeClass('cc-active');\n $(this).addClass('cc-past');\n }\n }\n });\n });\n\n // 23-Module-Mouseover Image Animation Desktop On EXIT\n $(document).on('mouseleave', '.cc-desktop .cc-pd-mouseover .cc-content-items', function (e) {\n var elementId = 0;\n\n $(this).closest('.cc-pd-mouseover').find('.cc-content-images .cc-content-image').each(function() {\n $(this).removeClass('cc-past');\n if ($(this).data('item') == elementId) {\n $(this).addClass('cc-active');\n } else {\n if ($(this).hasClass('cc-active')) {\n $(this).removeClass('cc-active');\n $(this).addClass('cc-past');\n }\n }\n });\n });\n\n $(document).on('click', '.js-open-registration-modal', function() {\n if ($('body').hasClass('cc-desktop')) {\n $('.js-title-offcanvas').html($('.js-title-offcanvas').data('loginform'));\n var url = $(this).data('action');\n var $loginForm = $('.js-login-form');\n var $resetPwdForm = $('.js-resetpwd-form');\n $.ajax({\n url: url,\n type: 'post',\n success: function (data) {\n if (data.success) {\n $('body').addClass('cc-blocked');\n $loginForm.html(data.renderedTemplate);\n $(document).find('.cc-loginregistration-overlay').css('content-visibility', 'visible');\n $('#js-login-registration-modal').fadeIn();\n accessFocus.focusOnFirstElement('#js-loginregistration-overlay');\n accessFocus.focuseOnModal('#js-loginregistration-overlay', '.js-open-registration-modal', '#js-login-registration-modal');\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n if ($resetPwdForm.hasClass('cc-hide-form')) {\n $resetPwdForm.addClass('cc-hide-form');\n }\n } else {\n window.location.href = data.accountPageUrl;\n }\n },\n error: function () {\n $('#js-login-registration-modal').fadeOut();\n }\n });\n } else {\n var LoginRegistrationPageUrl = $(this).data('pageurl');\n window.location.href = LoginRegistrationPageUrl;\n }\n });\n\n $(document).on('submit', 'form.cc-login-form-offCanvas', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.cc-login-form-offCanvas').trigger('login:submit', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n $('form.login').trigger('login:error', data);\n } else {\n $('form.login').trigger('login:success', data);\n location.href = data.redirectUrl;\n }\n },\n error: function (data) {\n if (data.responseJSON.redirectUrl) {\n window.location.href = data.responseJSON.redirectUrl;\n } else {\n $('form.login').trigger('login:error', data);\n form.spinner().stop();\n }\n }\n });\n return false;\n });\n\n\n $(document).on('click', '.cc-col-title', function(event) {\n var button = $(this).find('button[id^=\"accordion-\"]');\n if (button.length) {\n var ariaExpanded = button.attr('aria-expanded');\n button.attr('aria-expanded', ariaExpanded === 'true' ? 'false' : 'true');\n }\n });\n\n // reset password offCanvas\n $(document).on('click', '.js-reset-pwd-btn', function() {\n var url = this.dataset.urlreset;\n var $loginForm = $('.js-login-form');\n var $resetPwdForm = $('.js-resetpwd-form');\n $.spinner().start();\n $.ajax({\n url: url,\n type: 'GET',\n success: function (data) {\n $loginForm.addClass('cc-hide-form');\n $resetPwdForm.removeClass('cc-hide-form');\n $('#js-loginregistration-overlay .cc-request-reset-OfCanvas-header').removeClass('cc-hide-form');\n $resetPwdForm.html(data);\n $('.js-title-offcanvas').html($('.js-title-offcanvas').data('resetpwdform'));\n $.spinner().stop();\n }\n });\n });\n // return to login offCanvas\n $(document).on('click', '.js-return-toLogin', function() {\n $('.js-login-form').removeClass('cc-hide-form');\n $('.js-resetpwd-form').addClass('cc-hide-form');\n $('.js-title-offcanvas').html($('.js-title-offcanvas').data('loginform'));\n $('.cc-request-reset-OfCanvas-header').addClass('cc-hide-form');\n });\n $(document).on('click', '.js-goto-login-button', function() {\n if ($('body').hasClass('cc-desktop') || $('body').hasClass('cc-tablet')) {\n $('.js-login-form').removeClass('cc-hide-form');\n $('.js-resetpwd-form').addClass('cc-hide-form');\n $('.js-title-offcanvas').html($('.js-title-offcanvas').data('loginform'));\n $('.cc-request-reset-OfCanvas-header').addClass('cc-hide-form');\n } else {\n $.spinner().start();\n window.location.href = $(this).data('url');\n }\n });\n\n $(document).on('submit', 'form.cc-resetPwd', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.cc-resetPwd').trigger('resetpwd:submit', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (data.success) {\n $('form.cc-resetPwd').empty().html(\n '
    ' +\n '

    ' + data.receivedMsgHeading + '

    ' +\n '

    ' + data.receivedMsgBody + '

    '\n );\n } else {\n }\n },\n error: function (data) {\n }\n });\n return false;\n });\n\n $(document).on('click', '.js-close-loginRegistration-offCanvas', function() {\n var $loginForm = $('.cc-login-box-container form.cc-login-form-offCanvas');\n var $resetPwdForm = $('.cc-login-box-container form.cc-resetpwd-form-offCanvas');\n if ($loginForm.hasClass('cc-hide-form')) $loginForm.removeClass('cc-hide-form');\n if (!$resetPwdForm.hasClass('cc-hide-form')) $resetPwdForm.addClass('cc-hide-form');\n $('.cc-request-reset-OfCanvas-header').addClass('cc-hide-form');\n $('body').removeClass('cc-blocked');\n $('#js-login-registration-modal').fadeOut();\n setTimeout(function() {\n $('.js-open-registration-modal').focus();\n }, 0);\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n $('form.cc-login-form-offCanvas').trigger('reset');\n formValidation($('form.cc-login-form-offCanvas'), null);\n });\n\n $(document).on('click', '.js-loginregistration-closeBy-overlay', function() {\n var $loginForm = $('.cc-login-box-container form.cc-login-form-offCanvas');\n var $resetPwdForm = $('.cc-login-box-container form.cc-resetpwd-form-offCanvas');\n if ($loginForm.hasClass('cc-hide-form')) $loginForm.removeClass('cc-hide-form');\n if (!$resetPwdForm.hasClass('cc-hide-form')) $resetPwdForm.addClass('cc-hide-form');\n $('.cc-request-reset-OfCanvas-header').addClass('cc-hide-form');\n $('body').removeClass('cc-blocked');\n $('#js-login-registration-modal').fadeOut();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n $('form.cc-login-form-offCanvas').trigger('reset');\n formValidation($('form.cc-login-form-offCanvas'), null);\n });\n\n $(document).on('click', '.js-icon-eye, .cc-icon-eye', function (e) {\n e.preventDefault();\n $(this).siblings('input').attr('type') === 'password' ? $(this).siblings('input').attr('type', 'text') : $(this).siblings('input').attr('type', 'password');\n $btn = $(this).find('a.cc-icon-eye-link');\n $btn.attr('aria-pressed', $btn.attr('aria-pressed') === 'true' ? 'false' : 'true');\n });\n\n if (!('loading' in HTMLImageElement.prototype)) {\n const images = document.querySelectorAll('img[loading=\"lazy\"]');\n images.forEach(img => {\n const urls1 = $(img).siblings().eq(0).attr('srcset');\n const urls2 = $(img).siblings().eq(1).attr('srcset');\n const imgUrl = $(img).attr('srcset');\n if (urls1 && urls2) {\n $(img).siblings().eq(0).removeAttr('srcset').attr('data-srcset', urls1);\n $(img).siblings().eq(1).removeAttr('srcset').attr('data-srcset', urls2);\n }\n if (imgUrl) {\n $(img).removeAttr('srcset').attr('data-srcset', imgUrl);\n }\n });\n } else {\n // handle iframes and imgs with no lazysizes library\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n success: function(data) {\n video.setAttribute('src', data.videoURL);\n }\n });\n }\n });\n }\n\n changeBackground();\n\n $(document).on('click', '.js-resetPwd-request', function (e) {\n var form = $(this).closest('form');\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.resetPwd').trigger('resetpwd:submit', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (data.success) {\n $('form.cc-resetPwd').empty().html(\n '
    ' +\n '

    ' + data.receivedMsgHeading + '

    ' +\n '

    ' + data.receivedMsgBody + '

    ' +\n '
    ' +\n '' +\n '
    '\n\n );\n $(document).find('.js-request-text').addClass('d-none');\n } else {\n $('form.cc-resetPwd').find('#forgotPasswordemail').addClass('cc-error');\n $('form.cc-resetPwd').find('.cc-feedback-message .cc-text-message-error').empty().html(data.loginEmail);\n $('#forgotPasswordemail').focus();\n }\n },\n error: function (data) {\n $(document).find('.js-request-text').removeClass('d-none');\n }\n });\n return false;\n });\n\n // apple pay analytics\n $(document).on('click', '.js-analytics-fastCheckout', function() {\n var method = $(this).data('method');\n var accessType = $(this).parents('.js-analytics-position').data('position');\n if ($('.product-detail.cc-pdp').length && !(accessType && accessType.indexOf('pdp') !== 0)) {\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n accessType = 'pdp-sticky-bottom';\n } else {\n accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n if ($('.cc-pdp__resume-mobile--fixed').length) {\n accessType = 'pdp-sticky-top-micro';\n } else {\n accessType = 'pdp-sticky-top-macro';\n }\n } else {\n accessType = 'pdp-sticky-bottom';\n }\n } else {\n accessType = $(this).parents('.js-analytics-position').data('position');\n }\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'checkout',\n eventAction: 'fast',\n eventLabel: method,\n accessType: accessType\n });\n });\n\n $(document).on('click', '.js-button-scroll-down', function (e) {\n var moduleEnd = $(this).closest('.cc-pd').position().top + $(this).closest('.cc-pd').height() - 53;\n $(window).scrollTop(moduleEnd);\n });\n // Analytics search suggestion click link\n $(document).on('click', '.js-analytics-searchLink', function (e) {\n var analiticsSubCategory = $(this).data('analyticscategory');\n var eventAction;\n if ($(this).hasClass('cc-link')) {\n eventAction = $(this).closest('.cc-col-half').find('span a.js-analytics-searchLink').data('analyticscategory');\n } else {\n eventAction = analiticsSubCategory;\n }\n dataLayer.push({\n event: 'internalSearch',\n eventCategory: 'Internal Search',\n eventAction: eventAction,\n eventLabel: analiticsSubCategory\n });\n });\n // Analytics search suggestion did you mean\n $(document).on('click', '.js-analytics-didYouMean', function(e) {\n var label = $(this).data('searchkeyword');\n e.preventDefault();\n $.spinner().start();\n dataLayer.push({\n event: 'internalSearch',\n eventCategory: 'Internal Search',\n eventAction: 'Suggestion',\n eventLabel: label\n });\n window.location.href = $(this).attr('href');\n });\n\n // 27 - Animated Slide\n if ($('.editmode').length === 0) {\n if ($('.cc-pd-animated-slide').length > 0) {\n window.onload = function() {\n var windowHeight = $(window).height();\n\n // Set module height\n $('.cc-pd-animated-slide').each(function() {\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n if ($(this).find('video').length > 0) {\n $(this).find('video').on('loadstart', function() {\n var $videoContainer = $moduleWrp.find('.cc-content-video-mobile');\n var videoConf = $videoContainer.children().data('videoconf');\n var controlsEnabled = videoConf.indexOf('\\\\\"controls\\\\\":true');\n if ($videoContainer && controlsEnabled >= 0) {\n $videoContainer.addClass('video-controls-active');\n }\n var moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n });\n }\n if ($(this).find('.cc-pd-accordion').length > 0) {\n $moduleWrp.css('height', 'fit-content');\n } else {\n $(window).scroll(function() {\n moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n });\n }\n });\n\n // Animation for attached module on scroll\n if ($('.cc-pd-animated-slide.cc-module-attached').length > 0) {\n $('.cc-pd-animated-slide.cc-module-attached').each(function() {\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n\n var moduleTop = $moduleWrp.offset().top;\n var moduleBottom = $moduleWrp.offset().top + moduleHeight;\n\n $(window).scroll(function() {\n var scrollpx = $(window).scrollTop();\n var bottomMonitor = scrollpx + windowHeight;\n moduleHeight = $module.outerHeight();\n moduleTop = $moduleWrp.offset().top;\n moduleBottom = $moduleWrp.offset().top + moduleHeight;\n\n if (moduleHeight >= windowHeight) {\n if (bottomMonitor >= moduleBottom) {\n $module.addClass('cc-module-fixed');\n } else {\n $module.removeClass('cc-module-fixed');\n }\n } else {\n if (scrollpx >= moduleTop) {\n $module.addClass('cc-module-fixed-top');\n } else {\n $module.removeClass('cc-module-fixed-top');\n }\n }\n });\n });\n }\n\n // Animation for title\n if ($('.cc-pd-animated-slide.cc-animation-title--animated').length > 0) {\n $('.cc-pd-animated-slide.cc-animation-title--animated').each(function() {\n var $this = $(this);\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n var moduleTop = $moduleWrp.offset().top;\n var moduleBottom = moduleTop + moduleHeight;\n var $text = $(this).find('.cc-as-text-wrp > .cc-as-content-text');\n var textHeight = $text.outerHeight();\n var scrollpx = $(window).scrollTop();\n\n if ($this.hasClass('cc-animation-title--fixed-center')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n } else if ($this.hasClass('cc-animation-title--fade')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n $text.removeClass('cc-as-content-text--transparent');\n }\n }\n } else {\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--bottom');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--fixed-center');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--top');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--fixed-center');\n $text.removeClass('cc-as-content-text--bottom');\n } else {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--bottom');\n }\n }\n }\n\n $(window).scroll(function() {\n scrollpx = $(window).scrollTop();\n moduleHeight = $module.outerHeight();\n moduleTop = $moduleWrp.offset().top;\n moduleBottom = moduleTop + moduleHeight;\n\n if ($this.hasClass('cc-animation-title--size') && $this.find('.cc-content-title-image').length > 0) {\n var $titleImage = $this.find('.cc-content-title-image');\n var difference = moduleBottom - (windowHeight / 2) - (textHeight / 2);\n var differenceScroll = difference - scrollpx;\n var res = (1 + (differenceScroll / difference) * 2);\n if (res < 1) {\n res = 1;\n } else if (res > 3) {\n res = 3;\n }\n $titleImage.css('transform', 'scale(' + res + ')');\n }\n\n if ($this.hasClass('cc-animation-title--fixed-center')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n } else if ($this.hasClass('cc-animation-title--fade')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n $text.removeClass('cc-as-content-text--transparent');\n }\n }\n } else {\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--bottom');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--fixed-center');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--top');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--fixed-center');\n $text.removeClass('cc-as-content-text--bottom');\n } else {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--bottom');\n }\n }\n }\n });\n });\n }\n };\n\n // Resize\n $(window).resize(function () {\n var windowHeight = $(window).height();\n\n // Set module height\n $('.cc-pd-animated-slide').each(function() {\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n if ($(this).find('video').length > 0) {\n $(this).find('video').on('loadstart', function() {\n var $videoContainer = $moduleWrp.find('.cc-content-video-mobile');\n var videoConf = $videoContainer.children().data('videoconf');\n var controlsEnabled = videoConf.indexOf('\\\\\"controls\\\\\":true');\n if ($videoContainer && controlsEnabled >= 0) {\n $videoContainer.addClass('video-controls-active');\n }\n var moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n });\n }\n $(window).scroll(function() {\n moduleHeight = $module.outerHeight();\n $moduleWrp.css('height', moduleHeight + 'px');\n });\n });\n\n // Animation for attached module on scroll\n if ($('.cc-pd-animated-slide.cc-module-attached').length > 0) {\n $('.cc-pd-animated-slide.cc-module-attached').each(function() {\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n\n var moduleTop = $moduleWrp.offset().top;\n var moduleBottom = $moduleWrp.offset().top + moduleHeight;\n\n $(window).scroll(function() {\n var scrollpx = $(window).scrollTop();\n var bottomMonitor = scrollpx + windowHeight;\n moduleHeight = $module.outerHeight();\n moduleTop = $moduleWrp.offset().top;\n moduleBottom = $moduleWrp.offset().top + moduleHeight;\n\n if (moduleHeight >= windowHeight) {\n if (bottomMonitor >= moduleBottom) {\n $module.addClass('cc-module-fixed');\n } else {\n $module.removeClass('cc-module-fixed');\n }\n } else {\n if (scrollpx >= moduleTop) {\n $module.addClass('cc-module-fixed-top');\n } else {\n $module.removeClass('cc-module-fixed-top');\n }\n }\n });\n });\n }\n\n // Animation for title\n if ($('.cc-pd-animated-slide.cc-animation-title--animated').length > 0) {\n $('.cc-pd-animated-slide.cc-animation-title--animated').each(function() {\n var $this = $(this);\n var $moduleWrp = $(this).find('.cc-pd-animated-slide-wrp');\n var $module = $(this).find('.cc-pd-animated-slide-item');\n var moduleHeight = $module.outerHeight();\n var moduleTop = $moduleWrp.offset().top;\n var moduleBottom = moduleTop + moduleHeight;\n var $text = $(this).find('.cc-as-text-wrp > .cc-as-content-text');\n var textHeight = $text.outerHeight();\n var scrollpx = $(window).scrollTop();\n\n if ($this.hasClass('cc-animation-title--fixed-center')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n } else if ($this.hasClass('cc-animation-title--fade')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n $text.removeClass('cc-as-content-text--transparent');\n }\n }\n } else {\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--bottom');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--fixed-center');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--top');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--fixed-center');\n $text.removeClass('cc-as-content-text--bottom');\n } else {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--bottom');\n }\n }\n }\n\n $(window).scroll(function() {\n scrollpx = $(window).scrollTop();\n moduleHeight = $module.outerHeight();\n moduleTop = $moduleWrp.offset().top;\n moduleBottom = moduleTop + moduleHeight;\n\n if ($this.hasClass('cc-animation-title--size') && $this.find('.cc-content-title-image').length > 0) {\n var $titleImage = $this.find('.cc-content-title-image');\n var difference = moduleBottom - (windowHeight / 2) - (textHeight / 2);\n var differenceScroll = difference - scrollpx;\n var res = (1 + (differenceScroll / difference) * 2);\n if (res < 1) {\n res = 1;\n } else if (res > 3) {\n res = 3;\n }\n $titleImage.css('transform', 'scale(' + res + ')');\n }\n\n if ($this.hasClass('cc-animation-title--fixed-center')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n } else if ($this.hasClass('cc-animation-title--fade')) {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--transparent');\n } else {\n $text.removeClass('cc-as-content-text--transparent');\n }\n }\n } else {\n if ((moduleBottom - scrollpx) <= ((windowHeight / 2) + (textHeight / 2))) {\n $text.addClass('cc-as-content-text--bottom');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--fixed-center');\n } else {\n if ((moduleTop - scrollpx) > ((windowHeight / 2) - (textHeight / 2))) {\n $text.addClass('cc-as-content-text--top');\n $text.removeAttr('style');\n $text.removeClass('cc-as-content-text--fixed-center');\n $text.removeClass('cc-as-content-text--bottom');\n } else {\n $text.addClass('cc-as-content-text--fixed-center');\n $text.css({ top: windowHeight / 2, position: 'fixed' });\n $text.removeClass('cc-as-content-text--top');\n $text.removeClass('cc-as-content-text--bottom');\n }\n }\n }\n });\n });\n }\n });\n };\n }\n\n // Animation text (lateral entry)\n if ($('.cc-animated-text').length > 0) {\n if ($('.cc-animated-text .cc-title').length > 0) {\n $('.cc-animated-text .cc-title').html(function () {\n var chars = $(this).text().split('');\n for (var j = 0; j < chars.length; j) {\n if (chars[j] === ' ') {\n chars[j] = ' ';\n } else {\n chars[j] = chars[j] + '';\n }\n }\n return '' + chars.join('') + '';\n });\n }\n }\n\n // 30 Relatives Slider and 39 Ghost Carousel\n {\n const cleanClonedSlideAnalytics = function(selector) {\n $(selector).on('init', function (event, slick, direction) {\n $(this).find('.slick-slide.slick-cloned .new-analytics.js-analytics-impressions-product-not-impressed').removeClass('js-analytics-impressions-product-not-impressed');\n });\n }\n\n const initializeSlider = function(selector) {\n $(selector).each(function () {\n var slidesContainer = $(this);\n var isGhostCarousel = $(this).find('.cc-ghostCarousel-item').length > 0;\n\n // remove empty childrens\n $(this).children(':empty').remove();\n\n // hide ghost carousel if has less than 3 child elements\n if (isGhostCarousel && $(this).children().length < 3) {\n $(this).closest('.cc-pd-ghostCarousel').addClass('d-none');\n }\n\n slidesContainer.slick({\n infinite: true,\n autoplay: false,\n focusOnSelect: false,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 4,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 2\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 2\n }\n },\n {\n breakpoint: 599.98,\n settings: {\n slidesToShow: 1,\n centerMode: isGhostCarousel,\n centerPadding: isGhostCarousel ? '30px' : '0px'\n }\n }\n ]\n });\n const iframe = document.querySelectorAll('.slick-slide.slick-cloned iframe.lazyload');\n iframe.forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n success: function(data) {\n video.setAttribute('src', data.videoURL);\n }\n });\n }\n });\n });\n\n $('.cc-slider-prev').attr('aria-label', window.commonAria.prevSlideProducts.label);\n $('.cc-slider-next').attr('aria-label', window.commonAria.nextSlideProducts.label);\n }\n\n const updatePrices = function() {\n var productIds = [];\n \n $('.cc-pd-relatives-item .product').each(function(){\n let $product = $(this);\n let pid = $product.attr('data-pid');\n let priceAlreayUpdated = $('.cc-price.js-price', $product).is('[data-price-updated]');\n if (productIds.indexOf(pid) == -1 && ! priceAlreayUpdated) {\n productIds.push(pid);\n }\n });\n\n if (productIds.length) {\n $(document).trigger('product:updatePrices', productIds);\n }\n }\n\n $(document).on('click', '.js-relatives-group-switch', function(event) {\n let creative = $(this).closest('.cc-pd-relatives-groups').attr('data-creative');\n let moduleID = $(this).closest('.cc-pd-relatives-groups').attr('data-id');\n let groupID = $(this).attr('data-groupid');\n\n let $containerModule = $(this).closest('.cc-pd-relatives-groups');\n let $existingGroup = $(`[defaultgroupid=\"${groupID}\"]:not(:empty)`, $containerModule);\n\n if ($existingGroup.length) {\n $('.experience-relativesGroups > div', $containerModule).addClass('d-none');\n $existingGroup.removeClass('d-none');\n\n // update active group CTA\n $(this).addClass('cc-active').siblings().removeClass('cc-active');\n } else {\n let querystring = $('div.page').attr('data-querystring');\n let cid = new URLSearchParams(querystring).get('cid') || $('.storepage').attr('id');\n let $genderPage = $(this).parents('#mainContentContainer[data-page-id]');\n if ($genderPage.length) {\n var isGenderPage = true;\n cid = $genderPage.attr('data-page-id');\n }\n $.spinner().start();\n $.ajax({\n url: $(this).attr('data-url'),\n type: 'post',\n data: {\n cid,\n _creative: creative,\n _groupID: groupID\n },\n success: function (data) {\n let $html = $(data).filter(isGenderPage ? 'div.gender-page' :'div.page')\n .find(`.cc-pd-relatives-groups[data-id=${moduleID}] .experience-relativesGroups > div:not(:empty)`);\n\n $('.experience-relativesGroups', $containerModule).append($html);\n cleanClonedSlideAnalytics('.cc-pd-relatives .cc-slider');\n initializeSlider($(`[defaultgroupid=\"${groupID}\"] .cc-pd-relatives .cc-slider`, $containerModule));\n\n $('.experience-relativesGroups > div', $containerModule).addClass('d-none');\n $(`[defaultgroupid=\"${groupID}\"]:not(:empty)`, $containerModule).removeClass('d-none');\n\n // update active group CTA\n $(event.target).addClass('cc-active').siblings().removeClass('cc-active');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'relatives switch',\n eventAction: groupID\n });\n });\n\n const initializeRelativesSlider = function(parent='') {\n if ($(`${parent} .cc-slider .slick-slide`).length === 0) {\n cleanClonedSlideAnalytics(`${parent} .cc-slider`);\n initializeSlider(`${parent} .cc-slider`);\n // Adding tabindex -1 to all images inside the carousel.\n // This is needed because \"slick\" method automatically set the tabindex 0 but this causes accessibility issues\n $(`${parent} .cc-slider .js-pdp-variant-link.cc-standard-image`).attr('tabindex', -1);\n }\n }\n\n if ($('.cc-pd-relatives').length > 0) {\n initializeRelativesSlider('.cc-pd-relatives');\n updatePrices();\n }\n\n if ($('.cc-pd-ghostCarousel').length > 0) {\n initializeRelativesSlider('.cc-pd-ghostCarousel');\n }\n\n $(document).on('experience:init-30-relatives', function(_, parent){\n initializeRelativesSlider(`${parent} .cc-pd-relatives`);\n updatePrices();\n });\n }\n\n if ($('.cc-pd-slider-double-same.js-sliderContainer .cc-slider').length > 0) {\n \n if ($('.cc-pd-slider-double-same.js-sliderContainer .cc-slider .slick-slide').length === 0) {\n $('.cc-pd-slider-double-same.js-sliderContainer .cc-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: false,\n autoplay: false,\n focusOnSelect: true,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: ''\n });\n });\n }\n };\n\n // 31 Shop the image\n if ($(document).find('.cc-pd-shop-the-image').length > 0) {\n // handle open in new tab cta shop the image, replace\n var hrefsToReplace = $(document).find('a[href^=\"shop-the-image\"]');\n hrefsToReplace.each(function (index, elem) {\n var dataTarget = elem.attributes.href.value;\n var classes = elem.attributes.class ? elem.attributes.class.value : null;\n var value = elem.innerHTML;\n var ariaLabel = $('input[class=\"btn-aria-label-open-mobal\"]').val();\n var button = document.createElement('button');\n $(button).attr('data-target', dataTarget);\n $(button).attr('class', classes);\n $(button).attr('id', 'btn-' + dataTarget);\n $(button).attr('aria-label', ariaLabel);\n button.innerHTML = value;\n $(elem.parentNode).append(button);\n $(elem).remove();\n });\n $(document).on('click', 'button[data-target^=\"shop-the-image\"]', function(e) {\n e.preventDefault();\n var target = `#${$(this).attr('data-target')}`;\n if ($(target).length) {\n var m = new Modal(target, {\n onShow: ()=> {\n $(document).trigger('shop-the-image:modal-open');\n $('body:not(.cc-desktop)').addClass('cc-blocked');\n },\n onClose: () => $('body:not(.cc-desktop)').removeClass('cc-blocked')\n });\n m.open();\n\n $('.js-shop-the-image-close').one('click', function() {\n m.close();\n });\n $('body').on('product:afterAddToCart', function () {\n m.close();\n });\n }\n });\n\n // refresh product prices\n var productIds = [];\n $('.cc-pd-shop-the-image .product').each(function(){\n let $product = $(this);\n let pid = $product.attr('data-pid');\n let priceAlreayUpdated = $('.cc-price.js-price', $product).is('[data-price-updated]');\n if (productIds.indexOf(pid) == -1 && ! priceAlreayUpdated) {\n productIds.push(pid);\n }\n });\n\n if (productIds.length) {\n $(document).trigger('product:updatePrices', productIds);\n }\n }\n\n // 32 Accordion\n if ($(document).find('.cc-pd-accordion').length > 0) {\n $('.cc-pd a.cc-cta, .cc-pd a.cc-button').each(function() {\n if ($(this).attr('href').indexOf('accordion') !== -1) {\n $(this).attr('data-toggle', 'collapse');\n $(this).addClass('collapsed');\n $(this).attr('role', 'button');\n $(this).attr('aria-expanded', 'false');\n $(this).attr('aria-controls', $(this).attr('href'));\n $(this).attr('href', '#' + $(this).attr('href'));\n var ctaText = $(this).text();\n var arrowImg = $(document).find('.cc-pd-accordion')[0].dataset.arrow;\n $(this).html(ctaText + '');\n }\n });\n }\n\n // 34 Page Anchor\n if ($(document).find('.cc-pd-page-anchor').length > 0) {\n $(document).on('click', '.cc-pd-page-anchor .js-page-anchor-menu', function (e) {\n e.preventDefault();\n $(this).closest('.cc-content-buttons').toggleClass('cc-open');\n });\n\n var headerHeight = $('.cc-header').outerHeight();\n var anchorHeadHeight = $('.cc-pd-page-anchor .cc-page-anchor-head').outerHeight();\n var anchorOffset = headerHeight + anchorHeadHeight;\n\n $('.cc-pd-page-anchor .cc-page-anchor-head').addClass('cc-page-anchor-head-fixed');\n $('.cc-pd-page-anchor .cc-page-anchor-head').css('top', headerHeight + 'px');\n // $('.cc-pd-page-anchor .cc-anchor-point').css('top', '-' + anchorOffset + 'px');\n\n $(document).on('headerSticky:true', function() {\n headerHeight = $('.cc-header').outerHeight();\n anchorOffset = headerHeight + anchorHeadHeight;\n $('.cc-pd-page-anchor .cc-page-anchor-head').css('top', headerHeight + 'px');\n // $('.cc-pd-page-anchor .cc-anchor-point').css('top', '-' + anchorOffset + 'px');\n });\n $(document).on('headerSticky:false', function() {\n headerHeight = $('.cc-header').outerHeight();\n anchorOffset = headerHeight + anchorHeadHeight;\n $('.cc-pd-page-anchor .cc-page-anchor-head').css('top', headerHeight + 'px');\n // $('.cc-pd-page-anchor .cc-anchor-point').css('top', '-86px');\n });\n\n // close anchor selection dropdown after selecting one\n $(document).on('click', '.cc-page-anchor-head-item', function() {\n if (window.isDesktop) return;\n $(this).parents('.cc-content-buttons').removeClass('cc-open');\n });\n\n // scroll to the top of the page\n $(document).on('click', '.cc-page-anchor-gototop', function() {\n $(document).scrollTop(0);\n });\n\n // adjust anchor positioning\n var headerBannerHeight = $('.js-header-banner').innerHeight() || 0;\n if (headerBannerHeight) {\n $('.cc-anchor-point').each(function() {\n var currentValue = parseInt($(this).css('top'));\n $(this).css('top', currentValue - headerBannerHeight + 'px');\n });\n }\n\n var pageAnchorHeight = $('.cc-page-anchor-main-wrp').height();\n var $progressBar = $('.cc-page-anchor-head .cc-progressbar-active');\n var header = $('.js-header')[0];\n var anchorItems = $('.cc-page-anchor-main-wrp > .cc-page-anchor-main-item').toArray();\n var headerHeightDiff;\n if (window.isDesktop) headerHeightDiff = 141 - 55;\n else if (window.isTablet) headerHeightDiff = 141 - 87;\n else headerHeightDiff = 83 - 55;\n\n $(document).on('scroll', _throttle(function(e) {\n // calculate progress\n var currentScroll = $(document).scrollTop();\n var progress = currentScroll / (pageAnchorHeight + headerHeightDiff + headerBannerHeight) * 100;\n $progressBar.css('width', progress + '%');\n\n // activate current section\n var target = header.offsetHeight + anchorHeadHeight;\n for (var item of anchorItems) {\n var pos = item.getBoundingClientRect();\n if (pos.top <= target && pos.bottom > target) {\n $('.cc-page-anchor-head-item > .cc-item-button.active').removeClass('active');\n var id = $(item).find('.cc-anchor-point').attr('id');\n $('.cc-item-button[href$=' + id + ']').addClass('active');\n break;\n }\n }\n }, 150));\n }\n\n // 38 Newsletter overlay\n var hrefsToReplaceNewsletter = $(document).find('a[href^=\"overlay-newsletter\"]');\n hrefsToReplaceNewsletter.each(function (index, elem) {\n var dataTarget = elem.attributes.href.value;\n var classes = elem.attributes.class ? elem.attributes.class.value : '';\n var dataCsCverrideId = elem.attributes['data-cs-override-id'] ? elem.attributes['data-cs-override-id'].value : null;\n var value = elem.innerHTML;\n var ariaLabel = $('input[name=\"aria-label-nl-openmodal\"]').val();\n var dataAnalyticsLabel = elem.attributes['data-analyticslabel'] ? elem.attributes['data-analyticslabel'].value : null;\n var button = document.createElement('button');\n $(button).attr('data-target', dataTarget);\n $(button).attr('class', classes);\n $(button).attr('aria-label', ariaLabel);\n $(button).attr('data-cs-override-id', dataCsCverrideId);\n $(button).attr('data-analyticslabel', dataAnalyticsLabel);\n button.innerHTML = value;\n $(elem.parentNode).append(button);\n $(elem).remove();\n });\n\n $(document).on('click', 'button[data-target^=\"overlay-newsletter\"]:not(.js-footer-newsletter-button)', function(e) {\n e.preventDefault();\n var target = $(this).attr('data-target');\n var analyticsLabel = $(this).data('analyticslabel') || 'banner_editoriale';\n // var source = $(this).attr('data-source');\n $(document).trigger('overlaynewsletter:showmodal', {\n target: target,\n source: analyticsLabel\n });\n });\n // Select newsletter preferences click event\n $(document).on('click', '.js-newsletter .cc-newsletter-form-preferences .cc-checkbox', function(e) {\n var $preferences = $(this).closest('.cc-newsletter-form-preferences');\n var countCheckedPreferences = $('.cc-checkbox:checked', $preferences).length;\n var privacyContainer = $preferences.siblings('.js-newsletter-privacy');\n var isFirstCheckedPreferences = countCheckedPreferences === 1 && privacyContainer.hasClass('d-none');\n var $privacyField = privacyContainer.find('.js-privacyShopping[value=\"true\"]');\n if (countCheckedPreferences > 0) {\n privacyContainer.removeClass('d-none');\n } else if (!$privacyField.length || !$privacyField.is(':checked')) { // preventing hiding consent section if customer select consent\n privacyContainer.addClass('d-none');\n }\n if (isFirstCheckedPreferences) {\n scrollAnimate($preferences.siblings('.js-newsletter-privacy'), { scrollableParent: $preferences.closest('.cc-overlay-info') });\n }\n });\n\n // Accessibility on new Newsletter Modal Instance ID: 2194494626\n $(document).ready(function() {\n if ($(document).find('.js-form-overlay-newsletter button[role=\"combobox\"]').length > 0) {\n var buttonElement = $('.js-form-overlay-newsletter button[role=\"combobox\"]')[0];\n var selectElement = $('.js-form-overlay-newsletter select')[0];\n buttonElement.setAttribute('aria-controls', selectElement.getAttribute(\"id\"));\n }\n });\n\n $(document).on('click', '.js-form-overlay-newsletter-step1 button[type=\"submit\"]', function(e) {\n var $form = $(this.form);\n var $modal = $form.closest('.cc-overlay-info');\n var url = $form.attr('data-action');\n var modalSource = $(this).closest('.cc-pd-overlay-newsletter.cc-open').data('analyticslabel');\n const readyToSubmit = $.Deferred();\n\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptcha = $('.js-tencent-captcha-container', $form);\n TencentCaptcha.initialize($tencentCaptcha, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function(){\n $.ajax({\n url: url,\n type: 'POST',\n dataType: 'json',\n data: $form.serialize(),\n beforeSend: function() {\n $.spinner().start();\n },\n complete: function() {\n $.spinner().stop();\n },\n success: function(data) {\n if (data.success) {\n // switch to step 2\n $('.js-overlay-title-top--step-1', $modal).addClass('d-none');\n $('.js-overlay-title-top--step-2', $modal).removeClass('d-none');\n $('.cc-overlay-info__titles--step1', $modal).addClass('d-none');\n $('.cc-overlay-form--step1', $modal).addClass('d-none');\n $('.cc-overlay-info__titles--step2', $modal).removeClass('d-none');\n $('.cc-overlay-form--step2', $modal).removeClass('d-none');\n $('.js-nwl-email-step2', $modal).val(data.email);\n\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_ok', eventLabel: modalSource });\n $(document).trigger('analytics:newsletter', { eventAction: 'step2', eventLabel: modalSource });\n } else {\n if (data.isCustomer) {\n $('.js-overlaynewsletter-customer-exist', $form).removeClass('cc-invisible');\n } else {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n }\n },\n error: function() {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n });\n });\n return false;\n });\n\n $(document).on('click', '.js-form-overlay-newsletter-step2 button[type=\"submit\"]', function(e) {\n var $form = $(this.form);\n var $modal = $form.closest('.cc-overlay-info');\n var url = $form.attr('data-action');\n var modalSource = $(this).closest('.cc-pd-overlay-newsletter.cc-open').data('analyticslabel');\n var randomId = $form.attr('data-id');\n\n $.ajax({\n url: url,\n type: 'POST',\n dataType: 'json',\n data: $form.serialize(),\n beforeSend: function() {\n $.spinner().start();\n },\n complete: function() {\n $.spinner().stop();\n },\n success: function(data) {\n if (data.success) {\n // switch to thank you page\n $('.cc-overlay-info__titles--step2', $modal).addClass('d-none');\n $('.cc-overlay-form--step2', $modal).addClass('d-none');\n $('.cc-overlay-typ', $modal).removeClass('d-none');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_ok_step2', eventLabel: modalSource });\n if (data.filledData) {\n var filledData = data.filledData;\n $(document).trigger('analytics:newsletter',\n { eventAction: 'save_preferences',\n eventLabel: `${filledData.name}|${filledData.surname}|${filledData.consent}|${filledData.interest}`,\n other: filledData.interestlist.replaceAll(';', '|')\n }\n );\n }\n\n $('.cc-pd-overlay-newsletter.cc-open .js-pd-overlay-close').on('click', function() {\n if (!$('.cc-overlay-typ', $modal).hasClass('d-none')) {\n $('.cc-pd-overlay-newsletter.cc-open').addClass('prevent-analytics-close');\n $(document).trigger('analytics:newsletter', { eventAction: 'confirmation_close', eventLabel: modalSource });\n $('.cc-overlay-info__titles--step1', $modal).removeClass('d-none');\n $('.cc-overlay-form--step1', $modal).removeClass('d-none');\n $('.cc-overlay-typ', $modal).addClass('d-none');\n }\n });\n } else {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n },\n error: function() {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n });\n return false;\n });\n\n $(document).on('click', '.js-form-overlay-newsletter-full button[type=\"submit\"]', function(e) {\n var $form = $(this).closest('.js-form-overlay-newsletter');\n var $modal = $form.closest('.cc-overlay-info');\n var modalSource = $(this).closest('.cc-pd-overlay-newsletter.cc-open').data('analyticslabel');\n var chatAlreadyHidden = $form.closest('.cc-pd-overlay-newsletter').data('chatAlreadyHidden');\n var simpleType = $modal.closest('.js-newsletter').attr('data-type') === 'simple';\n\n if ($form.attr('data-target')) {\n $('.cc-pd-overlay-newsletter.cc-open').addClass('prevent-analytics-close');\n $(document).trigger('overlaynewsletter:showmodal', {\n target: $form.attr('data-target'),\n source: modalSource,\n email: $('input[type=\"email\"]', $form).val(),\n chatAlreadyHidden: chatAlreadyHidden\n });\n return false;\n }\n\n var url = $form.attr('data-action');\n var randomId = $form.attr('data-id');\n const readyToSubmit = $.Deferred();\n\n if (simpleType) {\n readyToSubmit.resolve();\n } else {\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptcha = $('.js-tencent-captcha-container', $form);\n TencentCaptcha.initialize($tencentCaptcha, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n }\n\n readyToSubmit.done(function(){\n $.ajax({\n url: url,\n method: 'post',\n dataType: 'json',\n data: $form.serialize(),\n beforeSend: function() {\n $.spinner().start();\n },\n complete: function() {\n $.spinner().stop();\n },\n success: function (data) {\n if (data.success) {\n if (simpleType) {\n $(document).trigger('overlaynewsletter:close', {\n submit: true\n });\n $('.js-popUp-newsletter-upload').html(data.popUp);\n var successPopup = new Modal('.cc-overlay-success-popup[data-id=\"' + randomId + '\"]', { onClose: liveChatEnable });\n successPopup.open();\n $('.js-close-popup-overlay', successPopup.modal).one('click', function() {\n successPopup.close();\n $(document).trigger('analytics:newsletter', { eventAction: 'confirmation_close', eventLabel: modalSource });\n });\n } else {\n // switch to thank you page\n $('.cc-overlay-form', $modal).addClass('d-none');\n $('.cc-overlay-info__titles', $modal).addClass('d-none');\n $('.cc-overlay-typ', $modal).removeClass('d-none');\n\n $('.cc-pd-overlay-newsletter.cc-open .js-pd-overlay-close').on('click', function() {\n if (!$('.cc-overlay-typ', $modal).hasClass('d-none')) {\n $('.cc-pd-overlay-newsletter.cc-open').addClass('prevent-analytics-close');\n $(document).trigger('analytics:newsletter', { eventAction: 'confirmation_close', eventLabel: modalSource });\n $('.cc-overlay-info__titles', $modal).removeClass('d-none');\n $('.cc-overlay-form', $modal).removeClass('d-none');\n $('.cc-overlay-typ', $modal).addClass('d-none');\n }\n });\n }\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_ok', eventLabel: modalSource });\n if (data.filledData) {\n var filledData = data.filledData;\n $(document).trigger('analytics:newsletter',\n { eventAction: 'save_preferences',\n eventLabel: `${filledData.name}|${filledData.surname}|${filledData.consent}|${filledData.interest}`,\n other: filledData.interestlist.replaceAll(';', '|')\n }\n );\n }\n } else {\n if (data.isCustomer) {\n $('.js-overlaynewsletter-customer-exist', $form).removeClass('cc-invisible');\n } else {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n }\n },\n error: function (data) {\n $('.js-overlaynewsletter-technical-error', $form).removeClass('cc-invisible');\n $(document).trigger('analytics:newsletter', { eventAction: 'submit_fail', eventLabel: modalSource });\n }\n });\n });\n\n return false;\n });\n\n $(document).on('click', '.js-analytics-nwl-registration', function(e) {\n var modalSource = $(this).closest('.cc-pd-overlay-newsletter.cc-open').data('analyticslabel');\n $(document).trigger('analytics:newsletter', { eventAction: 'go_to_registration', eventLabel: modalSource });\n });\n\n $(document).on('click', '.js-analytics-nwl-notnow', function(e) {\n var modalSource = $(this).closest('.cc-pd-overlay-newsletter.cc-open').data('analyticslabel');\n $(document).trigger('analytics:newsletter', { eventAction: 'not_now', eventLabel: modalSource });\n\n $(document).trigger('overlaynewsletter:close', {\n submit: true\n });\n });\n\n $(document).on('overlaynewsletter:showmodal', function(e, data) {\n var modal;\n var modalTarget = data.target;\n var source = data.source;\n var email = data.email;\n\n CSRFUtil.refreshToken();\n\n // close current modal (usefull for mini popup)\n $('.cc-pd-overlay-newsletter.cc-open .js-pd-overlay-close').trigger('click', {submit: true});\n\n var $target = $(`.${modalTarget}`);\n if ($target.length) {\n $target.data('analyticslabel', source);\n var autoRefreshID;\n modal = new Modal($target, {\n onShow: () => {\n // auto refresh CSRF token every 45 minutes\n autoRefreshID = CSRFUtil.startAutoRefresh(45);\n if (data.chatAlreadyHidden !== undefined) {\n var chatAlreadyHidden = chatAlreadyHidden;\n } else {\n var chatAlreadyHidden = $('.helpButton, #embeddedMessagingConversationButton').eq(0).is(':hidden');\n }\n modal.custom.chatAlreadyHidden = chatAlreadyHidden;\n modal.modal.data('chatAlreadyHidden', chatAlreadyHidden);\n if (! chatAlreadyHidden) liveChatDisable();\n },\n onClose: () => {\n CSRFUtil.stopAutoRefresh(autoRefreshID);\n if (! modal.custom.submit && ! modal.custom.chatAlreadyHidden) {\n liveChatEnable();\n // remove event listeners\n $target.off();\n }\n }\n });\n\n var $grecaptcha = $('.js-captcha-form.lazyloading', $target);\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n\n if (email) {\n $('input[type=\"email\"]', $target).val(email);\n }\n \n modal.open();\n\n \n $target.on('click', '.js-pd-overlay-close', function(e, data) {\n e.stopImmediatePropagation();\n var object = $('.cc-pd-overlay-newsletter.cc-open');\n if (data && data.submit) {\n modal.custom.submit = true;\n }\n modal.close();\n if (!object.hasClass('prevent-analytics-close')) {\n var label = object.data('analyticslabel');\n $(document).trigger('analytics:newsletter', { eventAction: 'dismiss', eventLabel: label });\n } else {\n object.removeClass('prevent-analytics-close');\n }\n });\n\n $target.on('click', '.js-overlaynewsletter-customer-exist .cc-link', function(e) {\n e.stopImmediatePropagation();\n $('.js-pd-overlay-close', $target).trigger('click');\n if (window.isDesktop) {\n scrollAnimate(0, {duration: 200});\n $('.js-open-registration-modal').eq(0).trigger('click');\n } else {\n document.location = $(this).closest('#js-take-to-login').data('url');\n }\n });\n // analytics modal open\n var action = $target.hasClass('cc-pd-overlay-newsletter--small') ? 'mini_popup_open' : 'start';\n $(document).trigger('analytics:newsletter', { eventAction: action, eventLabel: source });\n }\n });\n\n // utilizzato dalla submit della form per dismettere la modale\n $(document).on('overlaynewsletter:close', function(e, data) {\n // analytics modal close\n if (data && data.submit) {\n $('.cc-pd-overlay-newsletter.cc-open').addClass('prevent-analytics-close');\n }\n $('.cc-pd-overlay-newsletter.cc-open .js-pd-overlay-close').trigger('click', data);\n });\n\n // set cookies\n if ($('.cc-pd-sticky-banner').length > 0) {\n $('.cc-pd-sticky-banner').each(function() {\n var cookieName = $(this).data('cookiename');\n var cookie = getCookie(cookieName);\n if (!cookie) {\n $(this).removeClass('d-none');\n var nameBanner;\n var bannerHeigth = $(document).find('.js-banner-cookie').height() + 3;\n var tagStyle = '';\n $('body').append(tagStyle);\n if ($('.storepage').length > 0) {\n nameBanner = $('.storepage').attr('id');\n } else {\n nameBanner = $(document).find('#searchList').val();\n }\n if ($('body').hasClass('cc-mobile') && ($(document).find('.sticky-bar-mobile').length > 0) && !$(this).hasClass('custom-margin')) {\n var filterButtonHeigt = $(document).find('.sticky-bar-mobile').height() + 'px';\n $(this).css('bottom', filterButtonHeigt);\n }\n\n dataLayer.push({\n event: 'promoView',\n ecommerce: {\n promoView: {\n promotions: [{\n id: $(this).data('id'),\n name: nameBanner,\n creative: $(this).data('creative'),\n position: 0\n }]\n }\n }\n });\n }\n });\n }\n $(document).on('click', '.js-close-stickybanner', function () {\n var cookieName = $(this).closest('.js-banner-cookie').data('cookiename');\n var cookieExpire = $(this).closest('.js-banner-cookie').data('savingtime');\n setCookie(cookieName, true, cookieExpire);\n $(this).closest('.js-banner-cookie').addClass('d-none');\n $(document).find('#button-banner-style').remove();\n var bannerId = $(this).closest('.cc-pd-sticky-banner').data('id');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Ecommerce',\n eventAction: 'Promotion Close',\n eventLabel: bannerId\n });\n });\n\n if ($('.js-button-scroll-down').length) {\n if (isSafari()) {\n $('.js-button-scroll-down, .cc-pd-hero-xl-full .cc-scroll-down.cc-valign-bottom').addClass('cc-safari');\n }\n }\n\n // whatsapp integration logic\n function whatsappIntegration (){\n var $whatsApp = $('.js-whatsapp-integration');\n if ($whatsApp.length) {\n var url = $whatsApp.data('url');\n if (url) {\n $.ajax({\n url: url,\n type: 'get',\n success: function (data) {\n if (data.enableInThisCountry) {\n $whatsApp.fadeIn();\n $whatsApp.attr('href', data.overrideLink);\n } else {\n $whatsApp.remove();\n }\n },\n error: function () {\n $whatsApp.remove();\n }\n });\n } else {\n $whatsApp.remove();\n }\n }\n }\n whatsappIntegration();\n $(document).on('whatsappIntegration', whatsappIntegration);\n});\n\n$(document).on('click', '.js-open-product-3d', function (e) {\n e.preventDefault();\n var link = $(this).parent().find('a.js-pdp-variant-link');\n var analytics = $(this).parent().find('.js-analytics-click-product');\n if (analytics.length > 0) {\n analytics.trigger('mousedown');\n }\n if (link.length > 0) {\n link.trigger('click');\n }\n window.location.href = $(this).data('href');\n});\n\n\nmodule.exports = {\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nconst CSRFUtil = {\n getToken: function() {\n return $('input[name=\"csrf_token\"]').val();\n },\n\n /**\n * Updates the tokens elements on the page.\n * Creates a new token element if there aren't any.\n * @param {string} newToken \n */\n updateToken: function(newToken) {\n var $inputs = $('input[name=\"csrf_token\"]');\n if ($inputs.length) {\n $inputs.val(newToken);\n } else {\n $('').attr({\n type: 'hidden',\n name: 'csrf_token',\n value: newToken\n }).appendTo('body');\n }\n },\n\n /**\n * Gets the token as a string \"csrf_token=\"\n */\n getAsQueryParam: function() {\n return $.param({csrf_token: this.getToken()});\n },\n\n /**\n * Gets the token as an object with \"name\" and \"value\" properties\n */\n getAsObject: function() {\n return {\n name: 'csrf_token',\n value: this.getToken()\n };\n },\n\n /**\n * Adds the token to serialized forms data\n * @param {Array|string|Object} formData serialized form data\n * @returns {Array} serialized form data array with CSRF token\n */\n addTokenToFormData: function(formData) {\n if (formData instanceof Array) {\n formData.push(this.getAsObject());\n } else if (typeof formData === 'string') {\n formData += `&${this.getAsQueryParam()}`\n } else { // object\n Object.assign(formData, {'csrf_token': this.getToken()});\n }\n return formData;\n },\n\n /**\n * Refresh the token and updates the existing ones\n */\n refreshToken: function() {\n var endpoint = $('#csrf-refresh-url').val();\n if (! endpoint) return false;\n\n $.ajax({\n url: endpoint,\n dataType: 'json',\n type: 'POST',\n success: function(data) {\n var csrf_value = data.csrf.token;\n module.exports.updateToken(csrf_value);\n }\n });\n },\n\n /**\n * Starts automatically refresh the token\n * @param {Number} minutes\n * @returns {Number} the ID of the interval\n */\n startAutoRefresh: function(minutes) {\n return setInterval(function() {\n module.exports.refreshToken();\n }, minutes * 60 * 1000);\n },\n\n /**\n * Stops automatically refresh the token\n * @param {Number} intervalId the ID of the interval to be stopped\n */\n stopAutoRefresh: function(intervalId) {\n clearInterval(intervalId);\n }\n}\n\nmodule.exports = CSRFUtil;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden=\"true\"]),a[href]';\n\nmodule.exports = class Modal {\n constructor (element, config, custom={}) {\n this.modal = element;\n this._onKeyDown = this._onKeyDownFn.bind(this);\n this._open = false;\n this._previouslyFocussedElement = null;\n this._config = Object.assign({ onShow: null, onClose: null }, config);\n this.custom = custom;\n }\n\n _trapFocus (event) {\n let focusableNodes = $(this.modal).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n };\n\n _onKeyDownFn(event) {\n if (event.keyCode === 27) { // ESC\n this.close();\n } else if (event.keyCode === 9) { // TAB\n this._trapFocus(event);\n }\n };\n\n _registerEvents() {\n const closeEvt = (e) => {\n e.stopPropagation();\n this.close();\n };\n $(this.modal).one('click', '.js-close', closeEvt.bind(this));\n document.addEventListener('keydown', this._onKeyDown);\n }\n\n open() {\n this._previouslyFocussedElement = document.activeElement;\n let $modal = $(this.modal);\n $('body').addClass('cc-blocked');\n $modal.removeClass('hidden').attr('aria-hidden', 'false');\n const focusFirstElementInModal = () => {\n let focusableNodes = $modal.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n focusableNodes[0].focus();\n };\n\n this._registerEvents();\n // We add the class in another frame in order to have the animation\n let t = this;\n setTimeout(function() {\n $modal.addClass('cc-open');\n focusFirstElementInModal();\n if (t._config.onShow) {\n t._config.onShow.apply(null, t.arguments);\n }\n }, 0);\n\n this._open = true;\n }\n\n close() {\n if (!this._open) {\n return;\n }\n if (this._previouslyFocussedElement) {\n let $modal = $(this.modal);\n $modal.removeClass('cc-open');\n $modal.one('transitionend', () => {\n if (! $modal.hasClass('cc-open')) {\n $modal.addClass('hidden').attr('aria-hidden', 'true');\n this._open = false;\n if (! $(this._previouslyFocussedElement).is('iframe')) {\n this._previouslyFocussedElement.focus();\n }\n }\n });\n if (this._config.onClose) {\n this._config.onClose.apply(null, arguments);\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n }\n }\n\n isOpen() {\n return this._open;\n }\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\nfunction getBannerHeigth() {\n $(document).find('.js-header-banner').removeClass('d-none');\n var h = $(document).find('.js-header-banner .cc-item').height();\n // $(document).find('.js-header-banner').addClass('d-none');\n return h;\n};\n\nfunction initializeBannerHeader () {\n var height, heightBanner, tot, timeToShift;\n if ($(document).find('.js-banner-slider').length > 0) {\n timeToShift = $(document).find('.js-banner-slider').data('timetoshift') != undefined ? $(document).find('.js-banner-slider-fade').data('timetoshift') : 10000;\n heightBanner = getBannerHeigth();\n $('.js-banner-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: true,\n autoplay: true,\n focusOnSelect: false,\n centerMode: true,\n autoplaySpeed: timeToShift,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n fade: false,\n prevArrow: '',\n nextArrow: ''\n });\n\n $('.cc-slider-prev').attr('aria-label', window.commonAria.prevSlide.label);\n $('.cc-slider-next').attr('aria-label', window.commonAria.nextSlide.label);\n });\n // $('.js-banner-slider').slick('refresh');\n height = 0;\n if ($('body').hasClass('cc-mobile') || $('body').hasClass('cc-tablet-portrait')) {\n height = 81;\n } else {\n height = 139;\n }\n tot = parseInt(height + heightBanner);\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': tot });\n } else if ($(document).find('.js-banner-slider-fade').length > 0) {\n timeToShift = $(document).find('.js-banner-slider-fade').data('timetoshift') != undefined ? $(document).find('.js-banner-slider-fade').data('timetoshift') : 10000;\n heightBanner = getBannerHeigth();\n $('.js-banner-slider-fade').each(function () {\n var slidesContainer = $(this);\n if (!$(this).hasClass('slick-initialized')) {\n slidesContainer.slick({\n infinite: true,\n autoplay: true,\n focusOnSelect: false,\n centerMode: true,\n autoplaySpeed: timeToShift,\n speed: 1000,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n fade: true,\n // cssEase: 'cubic-bezier(0,.42,1,.7) 1s',\n // cssEase: 'ease-in-out',\n prevArrow: '',\n nextArrow: ''\n });\n }\n $('.cc-slider-prev').attr('aria-label', window.commonAria.prevSlide.label);\n $('.cc-slider-next').attr('aria-label', window.commonAria.nextSlide.label);\n\n });\n // $('.js-banner-slider-fade').slick('refresh');\n $('.js-banner-slider-fade').on('beforeChange', function() {\n $(document).find('.js-banner-slider-fade .cc-item').removeClass('animated fadeInLeft').css({'opacity': '0', 'transition': 'opacity 0.5s'});\n });\n $('.js-banner-slider-fade').on('afterChange', function() {\n setTimeout(() => {\n $(document).find('.js-banner-slider-fade .cc-item').addClass('animated fadeInLeft').css({'opacity': '1', 'transition': 'opacity 0.5s'});\n }, 50);\n });\n\n // fix share and heart buttons showing behind header banner\n if ($('body').hasClass('cc-mobile') || $('body').hasClass('cc-tablet')) {\n var unobserveTimeout;\n const resizeObserver = new ResizeObserver(element => {\n var h = $('.js-header').height();\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': h });\n\n // stop the observer after 30 secs from the last size change.\n if (unobserveTimeout){\n window.clearTimeout(unobserveTimeout);\n }\n unobserveTimeout = setTimeout(() => {\n resizeObserver.unobserve($('.js-header-banner')[0]);\n }, 30 * 1000);\n });\n resizeObserver.observe($('.js-header-banner')[0]);\n }\n }\n}\nmodule.exports = {\n initializeBannerHeader: initializeBannerHeader\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Updates the subtotal and totals of all items on cart\n * @param {Object} data - AJAX response from the server\n */\nfunction updateProductsTotalAndSubtotal(data) {\n if (data.productCardsUpdateHtml) {\n if ($('.cc-cart__productItemsContainer').length > 0) {\n if (data.uuid) {\n // manually updating of price, template complete update when they contains isinclude tags is not available due to res.json\n $('.js-item.js-uuid-' + data.uuid + ' .js-ptotal-' + data.uuid).text(data.updatedItem.priceTotal.price);\n if (data.updatedItem.priceTotal.nonAdjustedPrice) {\n $('.js-item.js-uuid-' + data.uuid + ' .js-ptotal-' + data.uuid + '.js-uptade-ptotal-sales').text(data.updatedItem.priceTotal.nonAdjustedPrice);\n }\n $('.js-item.js-uuid-' + data.uuid + ' .js-item-quantity-' + data.uuid).attr('data-quantity', data.updatedItem.quantity);\n\n // Update aria-labels for accessibility\n $('.js-item.js-uuid-' + data.uuid + ' .js-accessibility-total-amount-' + data.uuid).attr('aria-label', window.cartAria.totalAmount.label + \" \" + data.updatedItem.priceTotal.price);\n $('.js-item.js-uuid-' + data.uuid + ' .js-accessibility-total-quantity-' + data.uuid).attr('aria-label', window.cartAria.totalQuantity.label + \" \" + data.updatedItem.quantity);\n\n $('.js-item.js-uuid-' + data.uuid + ' .js-analytics-click-product-info-' + data.updatedItem.id).attr('data-quantity', data.updatedItem.quantity);\n } else {\n $('.cc-cart__productItemsContainer').empty().append(data.productCardsUpdateHtml);\n }\n } else {\n $('.cc-product-items-container').empty().append(data.productCardsUpdateHtml);\n }\n }\n}\n/**\n * Checks whether the basket is valid. if invalid displays error message and disables\n * checkout button\n * @param {Object} data - AJAX response from the server\n */\nfunction validateBasket(data) {\n if (data.valid.error) {\n if (data.valid.message) {\n var errorHtml = '
    ' +\n '' + data.valid.message + '
    ';\n\n $('.cart-error').append(errorHtml);\n } else {\n $('.cart').empty().append('
    ' +\n '
    ' +\n '

    ' + data.resources.emptyCartMsg + '

    ' +\n '
    ' +\n '
    '\n );\n if ($('.js-numofitems').length > 0) {\n $('.js-numofitems').empty().append(data.resources.numberOfItems);\n }\n $('.js-numofitemsv2').empty().append(data.numItems);\n $('.js-numofitems-label').removeClass('d-none');\n if (data.numItems == 1) {\n $('.js-numofitems-label-p').addClass('d-none');\n } else {\n $('.js-numofitems-label-s').addClass('d-none');\n }\n $('.js-minicart-numofitems').empty().append(data.resources.minicartNumberOfItems);\n if (data.numItems > 0) {\n $('.js-minicart-quantity').empty().append(data.numItems);\n } else {\n $('.js-minicart-quantity').empty();\n }\n }\n\n $('.js-checkout-btn').addClass('disabled');\n // $('.js-checkout-btn').prop('disabled', true);\n $('.js-cart-error').removeClass('d-none');\n } else {\n $('.js-checkout-btn').removeClass('disabled');\n // $('.js-checkout-btn').prop('disabled', false);\n $('.js-cart-error').addClass('d-none');\n }\n}\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} data - AJAX response from the server\n */\nfunction updateCartTotals(data) {\n $('.js-numofitems').empty().append(data.resources.numberOfItems);\n $('.js-numofitemsv2').empty().append(data.numItems);\n $('.js-numofitems-label').removeClass('d-none');\n if (data.numItems == 1) {\n $('.js-numofitems-label-p').addClass('d-none');\n } else {\n $('.js-numofitems-label-s').addClass('d-none');\n }\n $('.js-grand-total').empty().append(data.totals.grandTotal);\n if (!data.approachingDiscounts.orderDiscount.hasOwnProperty('formatted')) {\n if (!$('.js-order-discount-container').hasClass('d-none')) {\n $('.js-order-discount-container').addClass('d-none');\n }\n } else {\n $('.js-order-discount-container').removeClass('d-none');\n }\n $('.js-order-discount-total').empty().append(data.approachingDiscounts.orderDiscount.formatted);\n if (!data.approachingDiscounts.productDiscount.hasOwnProperty('formatted')) {\n if (!$('.js-product-discount-container').hasClass('d-none')) {\n $('.js-product-discount-container').addClass('d-none');\n }\n } else {\n $('.js-product-discount-container').removeClass('d-none');\n }\n $('.js-product-discount-total').empty().append(data.approachingDiscounts.productDiscount.formatted);\n if (!data.approachingDiscounts.couponDiscount.hasOwnProperty('formatted')) {\n if (!$('.js-coupon-discount-container').hasClass('d-none')) {\n $('.js-coupon-discount-container').addClass('d-none');\n }\n } else {\n $('.js-coupon-discount-container').removeClass('d-none');\n }\n $('.js-coupon-discount-total').empty().append(data.approachingDiscounts.couponDiscount.formatted);\n $('.js-coupon-discount-id').empty().append(data.approachingDiscounts.couponDiscount.couponId);\n $('.js-sub-total').empty().append(data.totals.subTotal);\n\n if (data.numItems > 0) {\n $('.js-minicart-quantity').empty().append(data.numItems);\n } else {\n $('.js-minicart-quantity').empty();\n }\n $('.js-minicart-numofitems').empty().append(data.resources.minicartNumberOfItems);\n if (data.miniCartSide.length > 0) {\n $('.js-minicart-pcard').empty().append(data.miniCartSide);\n }\n}\n\nmodule.exports = {\n updateProductsTotalAndSubtotal: updateProductsTotalAndSubtotal,\n validateBasket: validateBasket,\n updateCartTotals: updateCartTotals\n};\n","'use strict';\n\nvar scrollAnimate = require('../components/scrollAnimate');\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearFormErrors(form) {\n $(form).find('.cc-form-group.cc-error').removeClass('cc-error');\n}\n\nmodule.exports = function (formElement, payload) {\n // clear form validation first\n clearFormErrors(formElement);\n $('.alert', formElement).remove();\n\n if (typeof payload === 'object' && payload.fields) {\n Object.keys(payload.fields).forEach(function (key) {\n if (payload.fields[key]) {\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\n .parent()\n .children('.cc-feedback-message').children('.cc-text-message');\n\n if (feedbackElement.length > 0) {\n if (Array.isArray(payload[key])) {\n feedbackElement.html(payload.fields[key].join('
    '));\n } else {\n if (key.includes('postalCode')) {\n var tempMsg = $(formElement).find('[name=\"' + key + '\"]').data('format-error');\n var validationMsg = tempMsg + payload.fields[key];\n feedbackElement.html(validationMsg);\n } else {\n feedbackElement.html(payload.fields[key]);\n }\n }\n feedbackElement.siblings('.cc-form-control').addClass('cc-error');\n scrollAnimate(feedbackElement, {center: true});\n }\n }\n });\n }\n if (payload && payload.error) {\n var form = $(formElement).prop('tagName') === 'FORM'\n ? $(formElement)\n : $(formElement).parents('form');\n\n form.prepend('
    '\n + payload.error.join('
    ') + '
    ');\n }\n};\n","'use strict';\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n}\n\nfunction replaceOrAddQueryParam (url, parameter, value) {\n var regex = new RegExp(parameter + '=[^&]+');\n var split = url.split(regex);\n if (split.length > 1) {\n return split[0] + (url.indexOf('?') > -1 ? '' : '?') + parameter + '=' + value + split[1];\n } else {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + parameter + '=' + value;\n }\n};\n\nfunction getQueryParams() {\n var url = document.location.href;\n var qs = url.substring(url.indexOf('?') + 1).split('&');\n for (var i = 0, result = {}; i < qs.length; i++) {\n qs[i] = qs[i].split('=');\n result[qs[i][0]] = decodeURIComponent(qs[i][1]);\n }\n return result;\n};\n\nmodule.exports = {\n replaceOrAddQueryParam: replaceOrAddQueryParam,\n getQueryParams: getQueryParams,\n appendToUrl: appendToUrl\n};\n"],"sourceRoot":""}