{"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","posC","lastIndexOf","charAt","substr","selectorPrefix","isDesktop","addToCartLiveContent","urlAnalytics","dataType","minicartAnalytics","redirectUrl","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","locale","curLangs","isDefault","localID","countryCode","displayLanguage","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","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","wishlistAria","removeFromWishlist","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","basket","items","toBeDeletedUUIDs","hasBonusProduct","discountsHtml","checkoutSummaryHtml","grandTotalHtml","errorMessage","itemQuantity","minQuantity","maxQuantity","newQuantity","lineItem","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","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","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 if (! generalPid) {\n var posC = totPid.lastIndexOf('C');\n if (totPid.charAt(posC - 1) === 'C') {\n posC = posC - 1;\n }\n if (posC !== -1) {\n generalPid = totPid.substr(0, posC);\n } else {\n generalPid = totPid;\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 var product = $(selectorPrefix + generalPid);\n if ($('.page').data('action') && $('.page').data('action').indexOf('Wishlist') !== -1) {\n if (product.length > 1) {\n product = $($(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]')[0]);\n }\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid);\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + generalPid + 'C'); // pid concatenazione\n }\n\n if (product.length > 1) {\n if (window.isDesktop) {\n product = $(product[0]);\n } else product = $(product[1]);\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 var urlAnalytics = $('.add-to-minicart-analytics').val();\n var urlParams = {\n pid: pid\n };\n urlAnalytics = appendToUrl(urlAnalytics, urlParams);\n $.spinner().start();\n $.ajax({\n url: urlAnalytics,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.js-minicart-analytics').append(data.minicartAnalytics);\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n $.spinner().stop();\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(window.wishlistAria.removeFromWishlist.label);\n\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(window.wishlistAria.removeFromWishlist.label);\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-minicart-analytics .js-analytics-click-product-info-' + productID;\n } else {\n prodQuantity = $('.js-remove-quantity-analytics-cart-' + uuid).text();\n selector = '.js-cart-analytics .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.basket.items.length === 0) {\n window.location.reload();\n } else {\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\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-minicart-analytics .js-analytics-click-product-info-' + productID;;\n } else {\n prodQuantity = $('.js-remove-quantity-analytics-cart-' + uuid).text();\n selector = '.js-cart-analytics .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 $('.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":""}