{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/tencentCaptcha.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/app_bc/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/setDetails.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/socialList.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/modalUtilities.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/bannerSlider.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/contactPdp.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/search/search.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/listingPage/listingPage.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/wishlistHeart.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","firstError","scrollAnimate","require","validateForm","event","config","arguments","length","undefined","valid","this","checkValidity","shouldValidate","preventDefault","stopPropagation","stopImmediatePropagation","errorFields","$","find","each","validity","hasClass","removeClass","parent","is","siblings","addClass","children","text","invalidateForm","formSubmit","currentError","concat","split","splice","join","indexOf","push","$form","target","document","trigger","message","additionalData","type","category","attr","country","val","validateFields","closest","clearForm","form","remove","e","setCustomValidity","validationMessage","patternMismatch","data","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","typeMismatch","parents","eq","skipFocus","center","scrollableParent","focus","invalid","on","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","elementOrPosition","options","position","disableScroll","duration","delay","setTimeout","window","innerHeight","animate","scrollTop","complete","scrollToPosition","parseInt","element","jQuery","offset","top","scrollToElement","appendToUrl","getPidValue","getQuantitySelected","updateAttrs","attrs","$productContainer","msgs","attrsWithSwatches","forEach","id","values","attrValue","$attrValue","selected","assistiveSelectedText","images","swatch","resizedUrls","map","idx","$colorText","empty","sizeStartIndex","sizeEndIndex","partOne","substring","partTwo","eIndex","partTwoMod","finalUrl","removeAttr","selectable","processSwatchValues","attributeSelector","prop","numberofsizes","first","size","isOnlyOneLeft","online","hideNotifyMeProduct","processNonSwatchValues","updateVideo","htmlVideo","$videoContainerVertical","$videoContainerHorizontalDesktop","$videoContainerHorizontalMobile","ImageandVideoContainer","replaceWith","desktopVideo","filter","mobileVideo","append","insertAfter","prepend","handleVariantResponse","response","imagesCanChange","product","variationAttributes","resources","imgs","buildSrcSet","imageSet","prevArrStartIndex","$imageContainer","getElementById","innerHTML","$imagesDivs","singleImage","$ResizedUrlsFirstSource","$ResizedUrlsSecondSource","$image","$picture","$sources","alt","cloneImage","clone","appendTo","imgLength","$imagesOld","j","oldimg","updateImages","large","hasHorizontalVideo","videoH","CLDvideoHURL","videoCloudinaryPdpHtml","hasVerticalVideo","videoV","CLDvideoVURL","price","html","availabilityValue","availabilityMessages","availability","messages","readyToOrder","info_selectforstock","updateAvailability","attributeSelect","selectedValueUrl","container","method","imgVal","enableDisclaimerShipment","pfas","Tag","toUpperCase","spinner","stop","getAddToCartUrl","miniCartReportingUrl","performAddToCartCall","addToCartUrl","pid","pidsObj","childProducts","quantity","onSuccess","onError","customFrom","masterPid","start","generalPid","totPid","skuMaster","productColor","selectorPrefix","addToCartLiveContent","colorAttribute","dat","sku","stickyBar","attributeSelectLook","colorSelect","productPid","action","SKU","toLowerCase","colorAttributeLook","scrollTo","selectAttribute","available","sizeCode","_idx","$el","performAddToCart","newStickyAddToCartButton","isMobile","isStickyTop","isMicroSticky","resData","reportingURL","performAddToCartLook","addToCart","_typeof","iterator","constructor","include","keys","processInclude","ready","MutationObserver","WebKitMutationObserver","mutations","className","toString","includes","stikyHeight","height","css","bottom","right","isTablet","isDesktop","display","visibility","observe","subtree","attributes","socialNetwork","socialAction","socialBaseLink","socialTarget","dataLayer","observer","attributeFilter","_defineProperties","configurable","writable","_toPropertyKey","toPrimitive","TypeError","String","Number","_toPrimitive","FOCUSABLE","Modal","custom","a","_classCallCheck","modal","_onKeyDown","_onKeyDownFn","_open","_previouslyFocussedElement","_config","assign","onShow","onClose","focusableNodes","toArray","offsetParent","focusedItemIndex","activeElement","shiftKey","keyCode","close","_trapFocus","_this","one","addEventListener","$modal","_registerEvents","apply","_this2","removeEventListener","getBannerHeigth","initializeBannerHeader","heightBanner","tot","timeToShift","slick","infinite","autoplay","focusOnSelect","centerMode","autoplaySpeed","speed","slidesToScroll","slidesToShow","variableWidth","dots","arrow","fade","prevArrow","nextArrow","commonAria","prevSlide","label","nextSlide","slidesContainer","unobserveTimeout","resizeObserver","ResizeObserver","h","clearTimeout","unobserve","navigationCountry","updateSuccessPage","$selector","succesPageHtml","liveChatEnable","setButtonAttribute","selectpicker","labels","innerText","$button","targets","$select","$dropdown","fixLayoutForModalOpen","fixLayoutForModalClose","fixLayoutForModalBoutiqueOverlayClose","openContactUsModal","ajaxData","page","$grecaptcha","body","dispatchEvent","CustomEvent","detail","open","submitContactUsModal","productID","information","readyToSubmit","Deferred","done","serialize","eventCategory","eventAction","eventLabel","dimension23","dimension24","responseJSON","openFindInStoreModal","color","sizeText","preselectSize","selectedSize","sizes","dataset","parentElement","classList","add","click","selectSizeFindInStore","searchFindInStore","modalClose","selectedCountry","countryCode","analyticsCallStore","productId","filterSize","boutiqueId","boutique","boutiqueName","analyticsBookAppointment","location","href","updateListOfStores","listOfStoresHtml","fadeIn","filterListOfStores","submitFindInStoreModal","selectedNation","selectedBoutique","replace","openHelpWithSizeModal","sticky","submitHelpWithSizeModal","base","openFromBuyButton","closeModal","modalTarget","off","closeSizeChartModal","toggleClass","loggedCustomerEmail","uploadFormRequestSize","openSizeChartModal","mod","totHeigth","footerElement","getElementsByTagName","viewportHeight","documentElement","clientHeight","uploadSuccesPage","fadeOut","liveChatDisable","liveChatPositionStikyUp","fixLayoutForModalOpenSize","updateSizeList","checkSize","$size","$RequestSize","updateSizeListLook","recommendationSlider","arialabelPrev","arialabelNext","arrowNext","arrowPrev","accessibility","dotsClass","appendDots","responsive","breakpoint","settings","removeWishlistinRecommendation","updatePrice","productIds","loadVideo","$videoContainer","videoURL","discoverMore","productName","fourGift","changeProductLook","imageToChange","microCategoryAcme","mainColor","productLink","isInSticky","analyticsOwn","accessType","buttonType","fixStickybarHidingOnClick","now","Date","visibleCheckElement","getElementsByClassName","isAddToCartVisible","getBoundingClientRect","stickyCanAppear","isFooterVisible","heightHeader","canStickybarAppear","not","openStickySelector","isCurrentModalOpen","isSizeBtn","removeData","originalEvent","openStickySelectorLook","zoomElement","zoomCounter","imageToZoom","fullResolution","src","sixeClass","width","fullResolutionSrcSet","srcset","$zoomedImage","outerContent","innerContent","scrollLeft","positionStickyElement","scrollTimer","closeAllOpenSubwindow","$sticky","$stickyOverlay","$stickyColor","has","openRequestSizeFromPlp","openSizeSelector","performOpenSizeSelector","contains","openSizeSelectorFromRequestSize","openRequestSize","overlay","urlGetParameter","strokeClose","ecomSize","sizehtml","$stickyModal","_this3","submitRequestSize","trim","updateAttributesAndDetails","attributesHtml","requestSizeHtml","shortDescription","longDescription","showSpinner","updateAttribute","skuWColor","colorAttr","queryString","search","queryPid","completeUrl","querySelectorAll","video","endPoint","updateAddToCart","applePayButton","manageApplePayButtonApperance","sizeChart","$prodSizeChart","buttonPressed","buttonID","dataType","updateLinksWithTemplate","urlParams","URLSearchParams","template","parameter","regex","currentLink","updatedLink","RegExp","closeSizeChart","sizeOverlay","mobile","sizeChartMeasure","measureSelected","tableSelectedId","oldSelected","oldTableID","hide","setNumberPageCarouselReccomandation","slideTosho","currentSlide","totalSlide","slideCount","shippingPackaging","$menu","myScrollPos","left","outerWidth","initializeSize","autoSelectForOneSize","setIdForModalDialogattributes","ariaDescribedBy","ariaLabelledby","$wishListMessage","newAriaDescribedByWish","newAriaLabelledbyWish","copyProductLink","copyText","navigator","clipboard","writeText","copiedLink","loadRecommendations","addToCartAutomatic","fixSelectDropdowns","closeRefinements","resize","sort","currTemplate","selectedUrl","updateDom","$results","selector","$updates","handleRefinements","activeDiv","parseResults","specialHandlers","changeWallLayout","replaceOrAddQueryParam","sizePage","sizeToAdd","liveChatDiseble","closeMobileSortingWindow","zIndex","getQueryParams","qs","result","decodeURIComponent","applyAccessibilityFix","$selectElement","$buttonElement","next","selectId","ariaControls","handleBtnAccessibilityFunction","handleBtnAccessibility","fixAccessibilitySelectpicker","sortDesktop","kindSort","optionSelect","urlWithNewTemplate","actualQueryParam","queryTemplate","isSwitch","link","decodeURI","history","replaceState","urlPath","newUrlPath","urlSwitch","filerType","filterValue","sortMobile","showMore","showMoreUrl","actionType","isPageDesignerLook","startIndex","option","updateSortOptions","positionTemplate","substr","pageSize","applyFilter","refinment","refinmentValue","srule","srulePresent","filters","filteModalOpen","hover","blur","keydown","plus","currentID","filteModalClose","widthSortingDiv","sortingOptionList","toggle","closeSortingOptionList","onclick","matches","dropdowns","openDropdown","changeTemplateViewContainer","templateData","currenSorting","isSearch","urlPathLook","sizeOfPage","analyticsTemplate","templateName","listingType","pageCategory","pagesubCategory","pageDetail","HTMLImageElement","img","urls1","urls2","imgUrl","newUrl","openSortingDivMobile","closeSortingDivMobile","openFilterDivMobile","closeFilterDivMobile","showOverlayWallHover","mouseenter","mouseleave","closeMobileOverlayClickOnBody","showStickyBarPLP","liveChatPositionStikyDown","$plpBanner","filterButtonHeigt","changeWallLayoutOnLoad","startpositionLiveChatButton","accessibilityWall","setHistoryStatus","pushState","scrollY","reloadIframes","currentPage","displayMessageAndChangeIcon","status","messageModalDiv","statusSuccessClass","statusErrorClass","colorId","backgroundProduct","msg","background","updateHeartIcon","fill","$product","$heart","getSelectedVariantPid","$analytics","checkProductInWishlist","$plpProduct","initWishlistScrollCheck","rootMargin","threshold","IntersectionObserver","entries","entry","isIntersecting","$element","_","productTile","addToWishlist","optionId","optionVal","err","checkProductsInWishlist","intersectionObserver","disconnect","slice","params","encodeURIComponent"],"mappings":"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","file":"setDetails.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 = 306);\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","'use strict';\n\nfunction scrollToElement(element, options = {}) {\n var {center, offset, focus, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (element && element.length) {\n if (element.length > 1) {\n element = element.eq(0);\n }\n var position = element.offset().top || 0;\n if (! position) {\n position = element.parent().length ? element.parent().offset().top : 0\n }\n\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (offset) {\n position = position * offset;\n }\n \n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position },\n {\n duration: duration || 500,\n complete: () => {\n setTimeout(() => {\n if (focus) {\n element.focus();\n }\n if (disableScroll) {\n $('body').removeClass('prevent-user-scroll');\n }\n }, 500);\n }\n }\n );\n } else {\n $('.logo-home, .cc-logo-link').eq(0).focus();\n }\n }, delay || 0);\n}\n\n\nfunction scrollToPosition(position, options = {}) {\n var {center, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position || 0 },\n {\n duration: duration || 500,\n complete: () => {\n if (disableScroll) {\n setTimeout(() => {\n $('body').removeClass('prevent-user-scroll'); \n }, 500);\n }\n }\n }\n );\n }, delay || 0);\n}\n\n/**\n * Scrolls smoothly to an element or a position\n * @param {JQuery | number} elementOrPosition jquery element or position\n * @param {{\n* center: boolean,\n* offset: number,\n* focus: boolean,\n* disableScroll: boolean,\n* duration: number,\n* delay: number,\n* scrollableParent: JQuery\n* }} options\n*/\nfunction scroll(elementOrPosition, options = {}) {\n if (typeof elementOrPosition === 'number') {\n var position = parseInt(elementOrPosition);\n scrollToPosition(position, options);\n } else {\n var element = elementOrPosition;\n if (! element instanceof jQuery) {\n element = $(element);\n }\n scrollToElement(element, options);\n }\n}\n\nmodule.exports = scroll;","'use strict';\nvar { appendToUrl } = require('../common/urlUtil');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n let pid = $('.product-detail').data('pid');\n return pid;\n}\n\n/**\n * Retrieves the quantity that should be added to the cart. As per design, it is always 1\n * @return {string} - 1\n */\nfunction getQuantitySelected() {\n return '1';\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {boolean} attr.values.selected - Flag as to whether the attribute is currently selected\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n\n if (attrValue.selected) {\n $attrValue.addClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n const buildSrcSet = (imageSet) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1) * 100) + 'w';\n }).join(',');\n };\n $('.js-selected-color')\n .attr('src', attrValue.images.swatch[0].url)\n .attr('srcset', buildSrcSet(attrValue.images.swatch[0].resizedUrls));\n\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.removeClass('hidden');\n }\n } else {\n $attrValue.removeClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').empty();\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.addClass('hidden');\n }\n }\n\n if (attrValue.url) {\n // Gets the part of the size for remove it (inbetween the 'size=' and the next '&'\n var url = attrValue.url;\n var sizeStartIndex = url.indexOf('_size=');\n if (sizeStartIndex > 0) {\n var sizeEndIndex = sizeStartIndex + 6;\n var partOne = url.substring(0, sizeEndIndex);\n var partTwo = url.substring(sizeEndIndex);\n var eIndex = partTwo && partTwo.length > 0 ? partTwo.indexOf('&') : -1;\n var partTwoMod = '';\n if (eIndex > 0) {\n partTwoMod = partTwo.substring(eIndex);\n }\n var finalUrl = partOne + partTwoMod;\n $attrValue.attr('data-url', finalUrl);\n } else {\n $attrValue.attr('data-url', attrValue.url);\n }\n } else {\n $attrValue.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n // $attrValue.prop('disabled', !attrValue.selectable);\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selected - Flag as to whether an attribute is currently selected\n * @param {boolean} attr.values.isOnlyOneLeft - Flag as to whether an attribute has limited availability\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n let attributeSelector = '[data-attr=\"' + attr.id + '\"]';\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find(attributeSelector + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue\n .prop('disabled', false)\n .removeClass('cc-active')\n .removeClass('cc-request-size');\n\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $attrValue.addClass('cc-request-size');\n }\n if (attrValue.selected) {\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1 && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n $attrValue.data('value', attrValue.url);\n $attrValue.addClass('cc-active');\n let size = $('.cc-prod-functional-info').length > 0\n ? $('.cc-prod-functional-info').find('.js-size-value').text()\n : $('.cc-pdp__content-attributes').find('.js-size-value').text();\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n } else {\n $attrValue.addClass('cc-active');\n }\n } else {\n $attrValue.data('value', attrValue.url);\n }\n $attrValue.find('.js-limited-availability').addClass('hidden');\n $attrValue.removeClass('col-6 col-md-8');\n $attrValue.addClass('col-12');\n $attrValue.parent().find('.js-check-availability').addClass('hidden');\n\n if (attrValue.isOnlyOneLeft) {\n $attrValue.find('.js-limited-availability').removeClass('hidden');\n }\n if (attrValue.online) {\n $attrValue.parent('.cc-size-container').removeClass('hidden');\n } else {\n $attrValue.parent('.cc-size-container').addClass('hidden');\n }\n\n if (!attrValue.selectable) {\n $attrValue.removeClass('col-12');\n $attrValue.addClass('col-6 col-md-8');\n $attrValue.parent().find('.js-check-availability').removeClass('hidden');\n $attrValue.parent().find('.js-check-availability').parent().removeClass('hidden');\n }\n\n if (attrValue.hideNotifyMeProduct) {\n $attrValue.parent().find('.js-check-availability').parent().addClass('hidden');\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object[]} attrs - Attribute\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n // TODO: rivedere il comportamento\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the images shown in page from response containing images.\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateImages(imgs, $productContainer) {\n const buildSrcSet = (imageSet, prevArrStartIndex) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1 + prevArrStartIndex) * 200) + 'w';\n }).join(',');\n };\n let $imageContainer = $productContainer.find('.js-image-list');\n\n // Read the template for the images shown in the list\n const imgTemplate = document.getElementById('image-template').innerHTML;\n for (var i = 0; i < imgs.length; i++) {\n var $imagesDivs = $imageContainer.find('.cc-content-image');\n var singleImage = $imagesDivs.get(i);\n var $ResizedUrlsFirstSource = (imgs[i].resizedUrls).splice(0, 3);\n var $ResizedUrlsSecondSource = (imgs[i].resizedUrls);\n if (singleImage) {\n var $picture = $(singleImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n } else {\n var cloneImage = $imagesDivs.get(i - 1);\n $(cloneImage).clone().appendTo($imageContainer);\n $imagesDivs = $imageContainer.find('.cc-content-image');\n cloneImage = $imagesDivs.get(i);\n var $picture = $(cloneImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n }\n }\n var imgLength = $imageContainer.find('.cc-content-image').length;\n if (imgs.length < imgLength) {\n var $imagesOld = $imageContainer.find('.cc-content-image');\n for (var j = (imgLength - 1); j > (imgs.length - 1); j--) {\n var oldimg = $imagesOld.get(j);\n $(oldimg).remove();\n }\n }\n}\n\nfunction updateVideo($productContainer, htmlVideo, position) {\n let $videoContainerVertical = $productContainer.find('.js-image-list').find('.cc-content-video:not(\".cc-only-mobile\")');\n let $videoContainerHorizontalDesktop = $productContainer.find('.cc-pdp__video-horizontal-desktop');\n let $videoContainerHorizontalMobile = $productContainer.find('.cc-content-video.cc-only-mobile');\n var ImageandVideoContainer = $productContainer.find('.js-image-list');\n if ($videoContainerVertical.length > 0) {\n if (position === 'vertical') {\n $videoContainerVertical.replaceWith(htmlVideo);\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n } else if ($videoContainerHorizontalDesktop.length > 0 || $videoContainerHorizontalMobile.length > 0) {\n if (position === 'vertical') {\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $videoContainerHorizontalDesktop.replaceWith(desktopVideo);\n $videoContainerHorizontalMobile.replaceWith(mobileVideo);\n }\n } else {\n if (position === 'vertical') {\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n }\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {Object} response.product.price - Price object related to the product\n * @param {Object} response.product.price.html - HTML rendering of the price object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object} response.product.images - Product images\n * @param {Object[]} response.product.images.large - Product images in large format\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {Object} response.resources - Translation object\n * @param {boolean} imagesCanChange - if the images can change\n * @param {jQuery} $productContainer - DOM element for a given product.\n **/\nfunction handleVariantResponse(response, $productContainer, imagesCanChange) {\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n }\n\n if (imagesCanChange) {\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n updateImages(primaryImageUrls, $productContainer);\n if (response.product.hasHorizontalVideo) {\n if (response.product.videoH.CLDvideoHURL !== $('.cc-pdp__video-horizontal-desktop .cc-video-hotizontal source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'horizontal');\n }\n } else if (response.product.hasVerticalVideo) {\n if (response.product.videoV.CLDvideoVURL !== $('.js-image-list .cc-content-video source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'vertical');\n }\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n }\n }\n\n // Update pricing\n var $priceSelector = $('.js-prices .js-price', $productContainer).length\n ? $('.js-prices .js-price', $productContainer)\n : $('.js-prices .js-price');\n $priceSelector.replaceWith(response.product.price.html);\n\n updateAvailability(response, $productContainer);\n\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n if (imagesCanChange) {\n var imgVal = $('#js-pv-image').val();\n let $imageContainer = $productContainer.find('.js-image-list');\n $imageContainer.find('.cc-content-image').find('picture source').attr('srcset', imgVal);\n }\n\n // cites on variation group, checking cites value on color selection\n if (data.product.enableDisclaimerShipment && $('.js-disclaimer-shipment').length) {\n $('.js-disclaimer-shipment').removeClass('d-none');\n } else if (!$('.js-disclaimer-shipment').hasClass('d-none')) {\n $('.js-disclaimer-shipment').addClass('d-none');\n }\n\n // pfas on variation group/variant\n if (data.product.pfas && $('.js-banner-pfas').length) {\n $('.js-banner-pfas').removeClass('d-none');\n } else if (!$('.js-banner-pfas').hasClass('d-none')) {\n $('.js-banner-pfas').addClass('d-none');\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n handleVariantResponse(data, $productContainer, imagesCanChange);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectSizeLook(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n $('.js-product-detail-look').data('pid', data.product.id);\n $('button.add-to-cart').data('disabled', (!data.product.readyToOrder || !data.product.available));\n\n $.spinner().stop();\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectLook(selectedValueUrl) {\n if (selectedValueUrl) {\n var url = $('.js-select-single-tile-look').data('href');\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n var pid = data.product.sku;\n var dat = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: dat,\n method: 'GET',\n success: function (response) {\n if (response.stickyBar) {\n $('.js-sticky-look-container').html(response.stickyBar);\n }\n },\n error: function(err) {\n }\n });\n // handleVariantResponse(data, $productContainer, imagesCanChange);\n // $('body').trigger('product:afterAttributeSelect',\n // { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nfunction performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, onSuccess, onError, customFrom) {\n var data = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var masterPid = $('.js-master-pid').val();\n if (addToCartUrl) {\n $.spinner().start();\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: data,\n success: function (data) {\n // handlePostCartAdd(data);\n $.spinner().stop();\n if (onSuccess != null) {\n // analytics\n\n // get product by pid\n var totPid = pid;\n var generalPid;\n if (data.skuMaster) {\n generalPid = data.skuMaster;\n } else if (masterPid) {\n generalPid = masterPid;\n } else if (data.productColor) {\n var split = totPid.split(data.productColor);\n if (split) {\n generalPid = split[0];\n }\n }\n\n // get product -> js-analytics-impressions-product-initialized prevent minicart elements to be selected\n var selectorPrefix = '.js-analytics-impressions-product-initialized.js-analytics-click-product-info-';\n // after categorization by var group, multiple product wish same generalPid exist and previous could be taken sending wrong color to analytics\n var product = $(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]');\n\n if (product.length <= 0) {\n // if generalPid and product Color combination not exist trying to extract from pid - size TODO: pid concatenation\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n } else if (product.length > 1) {\n // it should happen when slick slider active due to multiple slide existence\n product = $(product[0]);\n }\n\n if (customFrom) {\n product.attr('data-sticky', customFrom);\n }\n\n $('body').trigger('analytics:pushAddToCart', product);\n\n // END\n // update live content\n $('.js-mini-cart-update').text(data.addToCartLiveContent);\n\n onSuccess(data);\n }\n },\n error: function () {\n $.spinner().stop();\n if (onError != null) {\n onError();\n }\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice', function (e) {\n // When the user clicks on one color inside the stickybar selection, change the aria-label of the selected color.\n $('.cc-content-thumb-color-sticky').attr(\"aria-label\", $(this).attr(\"data-accessibility-change\"));\n\n if ($(this).hasClass('js-color-choiche-sticky-look')) {\n attributeSelectLook($(this).attr('data-url'));\n } else {\n e.preventDefault();\n $(document).find('.js-image-list .cc-image').removeClass('lazyload');\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n colorAttributeLook: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice.js-color-choiche-sticky-look', function (e) {\n window.scrollTo(0, 0);\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n });\n },\n\n selectAttribute: function () {\n $(document).on('click', '.js-select-size', function (e) {\n e.preventDefault();\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n if ($(this).closest('.cc-content-size-choice-sticky').hasClass('js-select-size-sticky-look')) {\n attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n $('.js-upload-size').find('.js-size-container').removeClass('cc-active');\n $('.js-upload-size').find('.js-select-size').removeClass('cc-active');\n $(this).addClass('cc-active');\n $(this).parent().addClass('cc-active');\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n $('.js-sticky-choice-look').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // $productContainer = $(e.currentTarget).closest('.js-sticky-look-container');\n // attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n } else {\n attributeSelect($(e.currentTarget).data('value'), $productContainer, false);\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n // 4Gift action url after size select\n var colorSelect = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n performAddToCart: function (target) {\n var addToCartUrl;\n var pid;\n var pidsObj;\n\n $('body').trigger('product:beforeAddToCart', target);\n\n pid = getPidValue($(target));\n if (!pid) {\n pid = $(target).data('pid');\n };\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = getQuantitySelected($(target));\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var newStickyAddToCartButton = '';\n if (window.isMobile && $(target).closest('.cc-pdp__info').length) {\n var isStickyTop = $(target).closest('.cc-pdp__info').hasClass('cc-pdp__info--top');\n if (isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_top_macro';\n }\n var isMicroSticky = $(target).hasClass('js-went-micro-button');\n if (isMicroSticky) {\n newStickyAddToCartButton = 'sticky_bar_top_micro';\n $(target).removeClass('js-went-micro-button');\n }\n if (!isMicroSticky && !isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_bottom';\n }\n } else {\n newStickyAddToCartButton = $(target).attr('data-sticky');\n }\n\n $(target).trigger('updateAddToCartFormData', form);\n\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, newStickyAddToCartButton);\n },\n\n performAddToCartLook: function(target) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n },\n\n addToCart: function () {\n var t = this;\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n if ($(this).hasClass('js-add-to-cart-sticky-look')) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n } else {\n t.performAddToCart(this);\n }\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl,\n performAddToCartCall: performAddToCartCall\n};\n","'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\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./product/detail'));\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./product/contactPdp'));\n processInclude(require('./components/socialList'));\n processInclude(require('./search/search'));\n // processInclude(require('./product/quickView'));\n processInclude(require('./listingPage/listingPage'));\n // processInclude(require('./product/wishlistHeart'));\n processInclude(require('./product/wishlistHeart'));\n});\n\nvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n\nvar observer = new MutationObserver(function(mutations, observer) {\n for (var i = 0; i < mutations.length; i++) {\n if (mutations[i].target.className.toString().includes('helpButtonEnabled')) {\n var stikyHeight = $('.cc-sticky-add-to-cart').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 24,\n right: '16px'\n });\n if ($('.cc-requestsize-only-mobile').is(':visible')) {\n $('.helpButton, #embeddedMessagingConversationButton').css('display', 'none');\n }\n } else if (window.isTablet && $('.cc-sticky-add-to-cart').hasClass('cc-open')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n } else if (window.isDesktop && $('.cc-sticky-add-to-cart').hasClass('cc-open')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n }\n }\n }\n\n for (var i = 0; i < mutations.length; i++) {\n if (mutations[i].target.className.toString().includes('helpButtonEnabled')) {\n var stikyHeight = $('.sticky-bar-mobile').height();\n if ($('.js-sticky-look-container').length > 0) {\n stikyHeight = $('js-sticky-add-to-cart-look').height();\n }\n if (window.isMobile) {\n \n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight,\n right: '16px'\n });\n if (!$('#mobileSortingWindow').hasClass('d-none')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n }\n if (!$('#mobileFilterWindow').hasClass('d-none')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n }\n }\n }\n }\n});\nobserver.observe(document, {\n subtree: true,\n attributes: true\n});\n","'use strict';\n\nmodule.exports = function () {\n\n \n$(document).on('click', '.js-social-analytics-link, .js-social-analytics a', function (e) {\n e.preventDefault();\n\n var socialNetwork = $(this).data('id');\n var socialAction = '';\n var socialBaseLink = $(this).data('analytics');\n\n switch (socialNetwork) {\n case 'email':\n socialAction = 'mail';\n break;\n\n case 'pinterest':\n socialAction = 'pin';\n break;\n\n default:\n socialAction = 'share';\n break;\n }\n\n var socialTarget = socialBaseLink.substring((socialBaseLink.substring(8, socialBaseLink.length).indexOf('/') + 8), socialBaseLink.length);\n\n if($(this).parents('.js-general-overlay-wishlist').length) {\n // analytics\n dataLayer.push({\n 'event': 'custom_event',\n 'eventCategory': 'Wish List',\n 'eventAction': 'share',\n 'eventLabel': socialNetwork\n });\n } else {\n // analytics\n dataLayer.push({\n 'event': 'social',\n 'socialNetwork': socialNetwork,\n 'socialAction': socialAction,\n 'socialTarget': socialTarget\n });\n }\n});\n\n$(document).ready(function () {\n if ($('.js-social-share-lazyloading').length){\n\n const observer = new MutationObserver(() => {\n // first time cc-share-overlay will be opened, zxing plugin will be added to the img\n if (!$('.js-social-share-lazyloaded').length){\n var container = $('.js-social-share-lazyloading');\n var url = container.data('url');\n var target = container.children('img');\n target.attr(\"src\", url);\n container.addClass('js-social-share-lazyloaded');\n container.removeClass('js-social-share-lazyloading');\n }\n });\n\n observer.observe(document.querySelector('.cc-share-overlay'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-mobile-content-share'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-share-content'), {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n});\n\n};\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","'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","'use strict';\nconst Modal = require('../modalUtilities');\nconst navigationCountry = $('.page').attr('data-navigation-country');\n\nif (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\n}\n\nfunction updateSuccessPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\nfunction updateListOfStores(data) {\n $('#findStoreStoreSelect').empty().html(data.listOfStoresHtml);\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 setButtonAttribute() {\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 \n // accessibility: fix focus issues with the dropdown select\n $(document).on('keydown', '#js-helpWithSize-modal', (e)=>{\n if (e.key !== 'Tab') return;\n var $select = $('.selectpicker');\n var $dropdown = $('.dropdown-toggle');\n if ($select.attr('tabindex') === $dropdown.attr('tabindex')) {\n $select.attr('tabindex', '0');\n }\n });\n}\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '3');\n liveChatEnable();\n}\n\nfunction fixLayoutForModalBoutiqueOverlayClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nmodule.exports = {\n openContactUsModal: function() {\n $(document).on('click', '.js-open-contact', function() {\n var m = new Modal('#js-contact-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var url = $('.js-open-contact').data('urlcontact');\n\n let ajaxData = { page: 'PDP-requestInfo' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $('#js-contactUs-product-overlay').html(data);\n setButtonAttribute();\n $('#genderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#genderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#contactSku').val($('.js-open-contact').data('sku'));\n var $grecaptcha = $('#js-contact-modal .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n }\n });\n });\n },\n\n submitContactUsModal: function() {\n $(document).on('click', '#submitContactUs', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#infoProduct');\n var productID = $('#contactSku').val();\n var information = $('#infocategory').val();\n const readyToSubmit = $.Deferred();\n\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data);\n // END\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data.responseJSON);\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n // END\n }\n });\n });\n });\n },\n openFindInStoreModal: function() {\n let modalTarget = '#size-boutique-overlay';\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n $(document).on('click', '.js-open-findInBoutique', function() {\n var skuMaster = $(this).data('skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#js-size-text-selected').hasClass('hidden') ? null : $('#js-size-text-selected').text();\n var label = sizeText !== null ? skuMaster + color + ' - ' + sizeText : skuMaster + color; // pid concatenation PDP\n if (sizeText !== null) {\n var preselectSize = $(document).find('#size-overlay .cc-size-list .js-select-size.cc-active').data('attr-value');\n $('#js-selected-size-to-find').val(preselectSize);\n }\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize !== '') {\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n var sizes = $('.js-select-size-to-find');\n for (var i = 0; i < sizes.length; i++) {\n if (sizes[i].dataset.attrValue === selectedSize) {\n sizes[i].parentElement.classList.add('cc-active');\n }\n }\n $('.js-find-in-store-button').click();\n } else {\n modal.open();\n }\n if (!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Open Layer',\n eventLabel: label\n });\n });\n\n $(document).on('click', '.js-close-boutique-size', function() {\n modal.close();\n\n });\n },\n\n selectSizeFindInStore: function() {\n $(document).on('click', '.js-select-size-to-find', function() {\n var selectedSize = $(this).data('attr-value');\n $('#js-selected-size-to-find').val(selectedSize);\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n $(this).parent('.js-size-container').addClass('cc-active');\n if(!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('.js-find-in-store-button').click();\n });\n },\n\n searchFindInStore: function() {\n let modalTarget = '#show-boutiques-overlay';\n $(document).on('click', '.js-find-in-store-button', function() {\n if (!$('#size-boutique-overlay').hasClass('cc-open')) {\n var modalClose = fixLayoutForModalClose;\n } else {\n modalClose = fixLayoutForModalBoutiqueOverlayClose;\n }\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: modalClose });\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize == '') {\n $('.js-size-not-selected').removeClass('d-none');\n } else {\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var selectedCountry = false;\n if ($('#js-selected-country-for-search').val() != '') {\n selectedCountry = $('#js-selected-country-for-search').val();\n }\n var sku = skuMaster + color + selectedSize; // pid concatenation PDP\n var label = skuMaster + color + ' - ' + sizeText;\n var url = $(this).data('url');\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: selectedCountry\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n modal.open();\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Size Selected',\n eventLabel: label\n });\n }\n $('body').on('click', '.js-close-show-boutiques', function(e) {\n e.preventDefault();\n modal.close();\n });\n });\n\n $(document).on('change', '#js-boutique-country', function() {\n $.spinner().start();\n var countryCode = $('#js-boutique-country').val();\n $('#js-selected-country-for-search').val(countryCode);\n // var url = $('#js-boutique-country').data('url');\n // var sku = $('.js-find-in-store-button').attr('data-sku');\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sku = skuMaster + color; // pid concatenation PDP\n var selectedSize = $('#js-selected-size-to-find').val();\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var label = sku + ' - ' + sizeText;\n sku = sku + selectedSize;\n var url = $(this).data('url');\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: countryCode\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#js-boutique-country').selectpicker('refresh');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Change Country',\n eventLabel: label\n });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n },\n\n analyticsCallStore: function () {\n $(document).on('click', '.js-analytics-callStore', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Call',\n eventLabel: label,\n boutiqueName: boutique\n });\n });\n },\n\n analyticsBookAppointment: function () {\n $(document).on('click', '.js-analytics-bookAppointment-PDP', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Boutique Appointment',\n eventLabel: label,\n boutiqueName: boutique\n });\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'find-in-boutique',\n eventLabel: document.location.href,\n boutiqueName: boutique\n });\n });\n },\n\n updateListOfStores: function() {\n $(document).on('change', '#findStoreCountrySelect', function() {\n var url = $('#findStoreStoreSelect').data('liststores');\n var countryCode = $('#findStoreCountrySelect').val();\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n countryCode: countryCode,\n page: 'PDP-FindInStore'\n },\n success: function (data) {\n $.spinner().stop();\n updateListOfStores(data);\n setButtonAttribute();\n $('.js-select-listOfStores').fadeIn();\n }\n });\n });\n },\n filterListOfStores: function() {\n $(document).on('change', '#filterBoutiqueFind', function() {\n if ($('#filterBoutiqueFind').prop('checked')) {\n $('.js-boutique-no-availability').attr(\"style\", \"display: none !important\");\n } else $('.js-boutique-no-availability').attr(\"style\", \"display: block\");\n });\n },\n submitFindInStoreModal: function() {\n $(document).on('click', '#submitFindInStore', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#findInStore');\n var productID = $('#findStoreSku').val();\n var selectedNation = $('#findStoreCountrySelect :selected').text();\n var selectedBoutique = $('#findStoreStoreSelect').val();\n selectedBoutique = selectedNation + '-' + selectedBoutique.replace(/ /g, '-');\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#findInStore'), data);\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n // END\n }\n });\n });\n },\n openHelpWithSizeModal: function() {\n $(document).on('click', '.js-open-helpWhitSize', function() {\n var url = $(this).data('action');\n var sticky = false;\n if (this.id === 'size-help-sticky') {\n sticky = true;\n }\n \n let m;\n if (sticky) {\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n } else {\n // In this case, in the onClose callback we do not remove the z-index, as the\n // modal was opened from inside another modal\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: liveChatEnable });\n }\n\n let ajaxData = { page: 'PDP-HelpWithSize' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $.spinner().stop();\n $('#js-helpWithSize-product-overlay').html(data);\n $('#helpWithSizeContactSku').val($('.js-open-contact').data('sku'));\n setButtonAttribute();\n $('#helpWithSizeGenderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#helpWithSizeGenderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('button[data-id=\"helpWithSizeGenderSelect\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selectgender-error'\n });\n var $grecaptcha = $('#js-helpWithSize-product-overlay .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n },\n error: function(){\n $.spinner().stop();\n }\n });\n });\n },\n\n submitHelpWithSizeModal: function() {\n $(document).on('click', '#helpWithSize-submit', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#helpWithSize-form');\n var productID = $('#helpWithSizeContactSku').val();\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0 ? true : false;\n if (!isSpam) {\n const readyToSubmit = $.Deferred();\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data);\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data.responseJSON);\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n });\n });\n }\n });\n }\n};\n","'use strict';\nvar base = require('./base');\nconst Modal = require('../modalUtilities');\nvar banner = require('../common/bannerSlider');\nlet openFromBuyButton = false;\n\nlet 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\nconst manageApplePayButtonApperance = (response) => {\n if (response.product.readyToOrder) {\n var applePayButton = $('.js-apple-pay-btn', response.$productContainer);\n if (applePayButton.length !== 0) {\n applePayButton.attr('sku', response.product.id);\n }\n $('.js-fake-apple-pay').addClass('hidden');\n $('.js-apple-pay').removeClass('hidden');\n } else {\n $('.js-fake-apple-pay').removeClass('hidden');\n $('.js-apple-pay').addClass('hidden');\n }\n};\n\nconst closeModal = (element) => {\n const modalTarget = element.dataset.target;\n $(modalTarget).removeClass('cc-open').off('click');\n $(element).removeClass('cc-pdp-background-overlay').removeClass('cc-open');\n liveChatEnable();\n};\n\nconst closeSizeChartModal = () => {\n // $('#size-chart-overlay').fadeOut();\n if (window.isMobile) {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n liveChatEnable();\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n } else {\n $('body').addClass('cc-blocked');\n }\n }\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n};\nconst openSizeChartModal = () => {\n // $('#size-chart-overlay').show();\n if (window.isMobile) {\n var mod = $('#size-chart-overlay-mobile').find('.cc-size-guide-standard.cc-size-guide-component');\n var headerHeigth = 81;\n var totHeigth = headerHeigth;\n if ($('.cc-shipment-banner').length > 0) {\n var bannerParent = $('.cc-shipment-banner').parent('div');\n var bannerHeigth = bannerParent.height();\n totHeigth += bannerHeigth;\n }\n mod.css('padding-top', totHeigth + 'px');\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n }\n }\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n};\n\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\n\nfunction uploadSuccesPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\n\nfunction uploadFormRequestSize() {\n $('.js-form-control-requestsize').fadeIn();\n $('.js-success-page-requestSize').fadeOut();\n}\n\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $(form).find('.cc-input.js-requestsize-firstName').val('');\n $(form).find('.cc-input.js-requestsize-lastName').val('');\n $(form).find('.cc-input.js-requestsize-email').val('');\n $('.js-requestsize-title').selectpicker('val', '');\n\n $('.alert', form).remove();\n};\nfunction setButtonAttribute() {\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 $button.attr('aria-label', label);\n // $button.attr('aria-labelledby', selectID + ' ' + labelID);\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').removeAttr('role');\n });\n}\n/*\nfunction allFildeRequestSize() {\n var size, title, name, lastName, email;\n if (!window.isMobile) {\n size = $('.js-requestsize-size').find(':selected').val();\n title = $('.js-requestsize-title').find(':selected').val();\n name = $('.js-requestsize-firstName').val();\n lastName = $('.js-requestsize-lastName').val();\n email = $('.js-requestsize-email').val();\n } else {\n size = $('.cc-requestsize-only-mobile .js-requestsize-size').find(':selected').val();\n title = $('.cc-requestsize-only-mobile .js-requestsize-title').find(':selected').val();\n name = $('.cc-requestsize-only-mobile .js-requestsize-firstName').val();\n lastName = $('.cc-requestsize-only-mobile .js-requestsize-lastName').val();\n email = $('.cc-requestsize-only-mobile .js-requestsize-email').val();\n }\n};\n*/\nfunction liveChatEnable() {\n $('.helpButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\nfunction liveChatPositionStikyUp() {\n var stikyHeight = $('.cc-sticky-add-to-cart').height();\n if (window.isMobile) {\n $('.helpButton').css({\n bottom: stikyHeight + 24,\n right: '16px'\n });\n } else if (window.isTablet) {\n $('.helpButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n } else {\n $('.helpButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n }\n};\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n}\n\nfunction fixLayoutForModalOpenSize() {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n liveChatEnable();\n}\n\nfunction liveChatPositionStikyDown() {\n $('.helpButton').css({\n bottom: '16px',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton').css({\n bottom: '60px'\n });\n }\n};\n\nfunction autoSelectForOneSize() {\n // automatically preselect size if product has only one size\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1\n && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n if ($('.js-size-container').children().first().is(':disabled')) {\n var sizeCode = $('.js-size-container').children().first().data('attr-value');\n $('#js-selected-size-to-find').val(sizeCode);\n } else {\n $('.js-size-container').children().first().trigger('click');\n }\n }\n};\n\nfunction updateSizeList () {\n var sku = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\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 $size = $(document).find('.js-checkSize-' + el.value);\n var $RequestSize = $(document).find('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $(document).find('.cc-size-list .cc-size-container').removeClass('cc-active');\n $(document).find('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\nfunction updateSizeListLook () {\n var sku = $(document).find('.js-product-single-look').data('sku');\n var color = $(document).find('.js-product-single-look').data('color');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\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 $size = $(document).find('.js-checkSize-' + el.value);\n var $RequestSize = $(document).find('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $(document).find('.cc-size-list .cc-size-container').removeClass('cc-active');\n $(document).find('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\n/* PDP Reccomendations Slider */\nfunction recommendationSlider () {\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-slider').length > 0) {\n if ($('.cc-product-list.cc-slider.slick-slide').length === 0) {\n $('.cc-product-list.cc-slider').each(function () {\n var slidesContainer = $(this);\n var slidesToShow = slidesContainer.data('items-row');\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: slidesToShow,\n variableWidth: false,\n dots: false,\n dotsClass: 'slick-dots-line',\n appendDots: $('.js-product-list-slick-dots'),\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1439.98,\n settings: {\n slidesToShow: 3,\n dots: true,\n arrow: false\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 1,\n dots: false,\n arrow: true\n }\n }\n ]\n });\n });\n }\n }\n};\n\n// da chiamare dopo il caricamento\nfunction removeWishlistinRecommendation () {\n $(document).find('.cc-product-recommendations .cc-product-tile button.js-add-to-wishlist').remove();\n}\n\nfunction canStickybarAppear(){\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let isReccomendationsVisible;\n let stickyCanAppear;\n if (document.getElementsByClassName('cc-product-recommendations')\n && document.getElementsByClassName('cc-product-recommendations').length > 0\n && document.getElementsByClassName('cc-product-recommendations')[0] != null) {\n var height = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().height;\n var bottom = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().bottom;\n var top = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().top;\n var heightHeader = document.getElementsByClassName('cc-header')[0].getBoundingClientRect().height;\n var visibleUp = top > height;\n var visibleDown = bottom - heightHeader < 0;\n isReccomendationsVisible = !(visibleDown || visibleUp);\n // Check if in the current position, the sticky could appear as soon as the scroll ends || (bottom - heightHeader < 0)\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible && !isReccomendationsVisible;\n } else {\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n }\n return stickyCanAppear;\n}\n\nmodule.exports = {\n availability: base.availability,\n\n updatePrice: function () {\n // shop by look: update price for each product\n $(function(){\n var productIds = $('.cc-product-list .product').map(function(){\n return $(this).attr('data-pid');\n }).get();\n\n $(document).trigger('product:updatePrices', productIds);\n });\n },\n\n loadVideo: function () {\n let $videoContainer = $('.js-video-container');\n if ($videoContainer.length === 0) {\n return;\n }\n\n let url = $videoContainer.data('video-url');\n $.ajax({\n url: url,\n success: function (data) {\n $('.js-video-iframe').attr('src', data.videoURL);\n }\n });\n },\n\n discoverMore: function () {\n $(document).on('click', '.js-discover-more-analytics', function(e) {\n var productName = $('.js-analytics-look-product').attr('data-name');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Product Look Detail Page',\n eventAction: 'discover more',\n eventLabel: productName\n });\n });\n },\n\n fourGift: function () {\n $('body').on('4gift:openSizeSticky', function(e) {\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n liveChatDisable();\n });\n\n $('body').on('4gift:openSizeModal', function(e) {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n });\n },\n\n changeProductLook: function() {\n $('body').on('click', '.js-select-single-tile-look', function(e) {\n e.preventDefault();\n var url = $(this).data('href');\n var pid = $(this).data('pid');\n var data = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: data,\n method: 'GET',\n success: function (data) {\n if (data.stickyBar) {\n $('.js-sticky-look-container').html(data.stickyBar);\n }\n if (data.imageToChange) {\n $('.js-image-main-look').html(data.imageToChange);\n }\n if (data.product) {\n $('.js-product-name').text(data.product.microCategoryAcme);\n $('.js-product-color').text(data.product.mainColor);\n }\n if (data.productLink) {\n $('.js-link-product').attr('href', data.productLink);\n }\n var productName = $('.js-analytics-look-product').attr('data-name');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Product Look Detail Page',\n eventAction: 'variant select',\n eventLabel: productName\n });\n },\n error: function(err) {\n }\n });\n });\n },\n\n addToCart: function () {\n $('body').on('click', 'button.add-to-cart', function (e) {\n e.stopPropagation();\n if ($(this).data('sticky')) {\n $('.js-analytics-click-product-info-' + $(this).data('pid')).attr('data-from', $(this).data('sticky'));\n } else $('.js-analytics-click-product-info-' + $(this).data('pid')).attr('data-from', 'pdp');\n if ($('.add-to-cart').data('disabled')) {\n let isInSticky = $(e.currentTarget).closest('.js-sticky').length;\n openFromBuyButton = true;\n if (isInSticky) {\n // Close all other modals opened sticky\n $('.js-sticky-choice').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n liveChatDisable();\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = 'add to cart';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n\n // new analytics parameter: accessType\n if ($('body.cc-mobile').length || $(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n } else {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n if (!$(document).find('.js-upload-size .cc-active .js-select-size').hasClass('cc-request-size')) {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n base.performAddToCartLook(this);\n } else base.performAddToCart(this);\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n }\n });\n },\n\n fixStickybarHidingOnClick: function () {\n // fix stickybar hiding when clicking on color or size selector\n $('.js-sticky-add-to-cart').on('click', function (e) {\n var now = Date.now().toString();\n $(this).attr('data-recent-click', now);\n setTimeout(() => {\n if ($(this).attr('data-recent-click') === now) {\n $(this).attr('data-recent-click', '');\n // check if the stickybar's position is still valid\n if (! canStickybarAppear()) {\n // close all open subwindows\n let $modals = $('.cc-sticky-add-to-cart').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n });\n // hide stickybar\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n $sticky.removeClass('cc-open').addClass('cc-close');\n }\n }\n }, 1000);\n });\n },\n\n openStickySelector: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice', function (e) {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n updateSizeList();\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n $('.js-sticky-choice').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner') || $('#size-overlay').data('analyticsowner');\n var accessType = $('#size-modal-sticky').data('accessType') || $('#size-overlay').data('accessType');\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n if (isSizeBtn) {\n if (!analyticsOwn || e.originalEvent !== undefined) {\n analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n }\n if (!accessType || e.originalEvent !== undefined) {\n accessType = 'pdp-sticky-bottom';\n $('#size-modal-sticky').data('accessType', accessType);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n } else if (isSizeBtn) {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n $('#size-overlay').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n $('#size-overlay').removeData('accessType');\n }\n });\n },\n\n openStickySelectorLook: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice-look', function (e) {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n updateSizeListLook();\n var scrollTimer = setTimeout(() => {\n liveChatPositionStikyUp();\n }, 250);\n if ($('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider').each(function () {\n var slidesContainer = $(this);\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: 5,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 12\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 5\n }\n }\n ]\n });\n });\n }\n };\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n $('.js-sticky-choice-look').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.js-product-single-look').attr('data-sku');\n var color = $(e.currentTarget).closest('.js-product-single-look').attr('data-color');\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n if (isSizeBtn) {\n var analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n var accessType = 'pdp-sticky-bottom-look';\n $('#size-modal-sticky').data('accessType', accessType);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n } else if (isSizeBtn) {\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner');\n var accessType = $('#size-modal-sticky').data('accessType');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n }\n });\n },\n\n zoomElement: function () {\n var zoomCounter = 0;\n $('body').on('click keypress', '.js-zoom', function (e) {\n let imageToZoom = e.currentTarget;\n let fullResolution = imageToZoom.src;\n var sixeClass = window.width < 768 ? 'js-max' : 'js-min';\n let fullResolutionSrcSet = $(imageToZoom).closest('.cc-content-image').find('picture source.' + sixeClass)[0].srcset;\n let $zoomedImage = $('.js-zoom-modal img');\n var stickyOverlay = !$('.cc-size-choice-overlay-sticky').hasClass('cc-open') && !$('.cc-color-choice-overlay-sticky').hasClass('cc-open');\n if (stickyOverlay) {\n $.spinner().start();\n $('.js-zoom-modal').removeClass('hidden').removeClass('cc-loaded');\n $zoomedImage.addClass('hidden');\n $zoomedImage.attr('src', fullResolution);\n $zoomedImage.attr('srcset', fullResolutionSrcSet);\n\n if (zoomCounter > 0) {\n $('.js-zoom-modal').removeClass('cc-loading').addClass('cc-loaded');\n $zoomedImage.removeClass('hidden');\n $('body').addClass('cc-blocked');\n } else {\n zoomCounter++;\n $zoomedImage.on('load', (e) => {\n $('.js-zoom-modal').addClass('cc-loaded');\n $.spinner().stop();\n $zoomedImage.removeClass('hidden');\n var outerContent = $('.js-zoom-modal');\n var innerContent = $('.js-zoom-modal img');\n $('body').addClass('cc-blocked');\n outerContent.scrollLeft((innerContent.width() - outerContent.width()) / 2);\n outerContent.scrollTop((innerContent.height() - outerContent.height()) / 2);\n });\n }\n }\n });\n\n $('body').on('click', '.js-zoom-modal img', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n\n $('body').on('focusout', '.js-zoom', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n },\n\n positionStickyElement: function () {\n const closeAllOpenSubwindow = () => {\n let $modals = $('.cc-sticky-add-to-cart').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n });\n };\n let scrollTimer;\n $(document).on('scroll', function () {\n // Manage the fact that scroll events are extremely common: if another scroll event was registered less than 250\n // milliseconds before, we do not consider it\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n liveChatPositionStikyDown();\n }\n if ($('.js-sticky-add-to-cart').attr('data-recent-click')) {\n // prevent stickybar from instantly hiding when clicking on size or color buttons.\n return;\n }\n closeAllOpenSubwindow();\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n // When we scroll, the sticky should be always hidden\n $sticky.removeClass('cc-open').addClass('cc-close');\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let isReccomendationsVisible;\n let stickyCanAppear;\n if (document.getElementsByClassName('cc-product-recommendations')\n && document.getElementsByClassName('cc-product-recommendations').length > 0\n && document.getElementsByClassName('cc-product-recommendations')[0] != null) {\n var height = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().height;\n var bottom = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().bottom;\n var top = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().top;\n var heightHeader = document.getElementsByClassName('cc-header')[0].getBoundingClientRect().height;\n var visibleUp = top > height;\n var visibleDown = bottom - heightHeader < 0;\n isReccomendationsVisible = !(visibleDown || visibleUp);\n // Check if in the current position, the sticky could appear as soon as the scroll ends || (bottom - heightHeader < 0)\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible && !isReccomendationsVisible;\n } else {\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n }\n\n if (stickyCanAppear) {\n scrollTimer = setTimeout(() => {\n $sticky.addClass('cc-open').removeClass('cc-close');\n liveChatPositionStikyUp();\n }, 250);\n }\n });\n\n const $stickyOverlay = $('.cc-size-choice-overlay-sticky');\n const $stickyColor = $('.cc-content-colors-choice-sticky');\n\n $(document).click(e => {\n if (!$stickyOverlay.is(e.target)\n && $stickyOverlay.has(e.target).length === 0\n && !$stickyColor.is(e.target) &&\n $stickyColor.has(e.target).length === 0) {\n if ($('.js-sticky-choice').hasClass('cc-open')) {\n liveChatEnable();\n }\n closeAllOpenSubwindow();\n }\n });\n },\n\n openRequestSizeFromPlp: function () {\n $(document).ready(function () {\n var size = $('.js-open-requestsize-from-plp').data('requestsize');\n if (size !== null && (size !== undefined) && (size !== 'undefined')) {\n $('.cc-size-choice-overlay-sticky').find('.js-check-availability').each(function() {\n if ($(this).data('size') === size) {\n $(this).click();\n return false;\n }\n });\n }\n });\n },\n\n openSizeSelector: function () {\n const performOpenSizeSelector = (e) => {\n e.stopPropagation();\n let modalTarget = e.currentTarget.dataset.target;\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n\n updateSizeList();\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n };\n // Open the size modal in PDP\n $('body').on('click', '.js-open-choice', (e) => {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n performOpenSizeSelector(e);\n\n var colorModal = e.currentTarget.classList.contains('js-open-color-choice');\n\n if (!colorModal) {\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n // new analytics parameter: accessType\n var accessType = $('#size-overlay').data('accessType');\n if (!accessType) {\n if ($('body.cc-mobile').length || $(this).parents('.js-sticky-add-to-cart').length) {\n accessType = 'pdp-sticky-bottom';\n } else {\n accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n }\n\n var analyticsOwn = $('#size-overlay').data('analyticsowner'); // paypal insert value before open modal\n if (!analyticsOwn) {\n analyticsOwn = 'select size';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n });\n $('body').on('click', '.js-fake-apple-pay.js-desktop', (e) => {\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n // new analytics parameter: accessType\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n var analyticsOwn = 'applepay';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n performOpenSizeSelector(e);\n });\n $('body').on('click', '.js-fake-apple-pay.js-mobile', (e) => {\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = 'applepay';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n // new analytics parameter: accessType\n var accessType = 'pdp-sticky-bottom';\n $('#size-overlay').data('accessType', accessType);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n e.stopPropagation();\n });\n $('.js-analytics-close-selectsize').on('click', function(e) {\n var id = $(document).find('.cc-product-detail').data('skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-overlay').data('analyticsowner');\n var accessType = $('#size-overlay').data('accessType');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-overlay').removeData('analyticsowner');\n $('#size-overlay').removeData('accessType');\n });\n },\n\n openSizeSelectorFromRequestSize: function () {\n let modalTarget = $('.js-open-choice').data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n $('body').on('click', '.js-back-selectsize', function (e) {\n if (!window.isMobile && !$('#size-modal-sticky').hasClass('js-close-requestSize')) {\n e.stopPropagation();\n modal.open();\n $('body').one('product:afterAttributeSelect', () => { modal.close(); });\n $('.js-check-availability').one('click', () => { modal.close(); });\n }\n $('#size-modal-sticky').removeClass('js-close-requestSize');\n });\n },\n\n openRequestSize: function () {\n $(document).on('click', '.js-check-availability', function (e) {\n var urlGetParameter = $(this).data('parameter');\n var strokeClose = $(e.currentTarget).data('strokeclose');\n var arrow = $(e.currentTarget).data('arrowback');\n var size = $(e.currentTarget).data('size');\n var ecomSize = this.dataset.sizehtml;\n var sku = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var target = this.dataset.target;\n var overlay;\n if (window.isMobile) {\n target = target + '-mob';\n overlay = '#js-requestSize-product-overlay-mob';\n } else {\n target = target + '-desk';\n overlay = '#js-requestSize-product-overlay-desk';\n }\n let m = new Modal(target, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var $stickyModal = $(this).closest('.cc-size-choice-overlay-sticky');\n if ($stickyModal.length > 0) {\n $stickyModal.removeClass('cc-open');\n $stickyModal.siblings('.cc-size-choice-button-sticky.js-size-sticky.js-sticky-choice').removeClass('cc-open');\n }\n $.spinner().start();\n $.ajax({\n url: urlGetParameter,\n method: 'POST',\n data: {\n size: size,\n ecomSize: ecomSize,\n sku: sku,\n color: color\n },\n success: function (data) {\n $(overlay).html(data);\n $.spinner().stop();\n setButtonAttribute();\n m.open();\n if (window.isMobile) {\n $('.cc-requestsize-only-mobile .js-change-icon').attr('xlink:href', strokeClose);\n }\n $('#request-size-overlay-desk .js-back-selectsize').one('click', () => {\n m.close();\n $('.js-back-selectsize').children().attr('xlink:href', arrow);\n });\n $('#request-size-overlay-mob .js-back-selectsize').one('click', () => {\n $(m.modal).removeClass('cc-open');\n $(m.modal).addClass('hidden').attr('aria-hidden', 'true');\n m._open = false;\n m._previouslyFocussedElement.focus();\n if (m._config.onClose) {\n m._config.onClose();\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n });\n $('button[data-id=\"request-size-title\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selecttitle-error'\n });\n }\n });\n });\n },\n\n submitRequestSize: function () {\n $(document).on('click', '.js-requestsize-button', function () {\n var url = $('.js-requestsize-button').data('action');\n var form = $($('.js-form-control-requestsize')[0]);\n var size = form.find('.js-requestsize-size :selected').text().trim();\n var productID = $('.js-product-id').val().trim() + $('.js-color-selected').val().trim();\n var label = productID + ' - ' + size;\n form.find('[name=ecomSize]').val(size);\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0;\n if (!isSpam) {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data);\n // analytics\n if (data.response.success === true) {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_ok',\n eventLabel: label\n });\n } else {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n }\n // END\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n // END\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data);\n }\n });\n }\n });\n },\n /*\n allFildFullrequestsizeForm: function () {\n $(document).ready(function () {\n allFildeRequestSize();\n });\n $(document).on('change', '.js-form-control-requestsize', function () {\n allFildeRequestSize();\n });\n },\n */\n // closeRequestSize: function () {\n // $(document).on('click', '.cc-mobile .js-back-selectsize', function (e) {\n // $('.js-requestSize').fadeOut();\n // $('body').removeClass('cc-blocked').removeClass('cc-blocked');\n // liveChatEnable();\n // var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n // var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n // if (!islogged) {\n // clearForm($('.js-form-control-requestsize'));\n // }\n // uploadFormRequestSize();\n // });\n // },\n\n updateAttributesAndDetails: function () {\n $('body').on('product:statusUpdate', function (e, data) {\n var $productContainer = $('.product-detail[data-pid=\"' + data.id + '\"]');\n if ($productContainer.length === 0) {\n $productContainer = $('.product-detail[data-pid=\"' + $('#idNumberSizeSelectedUrl').val() + '\"]');\n }\n $productContainer.find('.description-and-detail .product-attributes')\n .empty()\n .html(data.attributesHtml);\n // update request size modal after select product variation\n $productContainer.find('.js-productVariation-update')\n .empty()\n .html(data.requestSizeHtml);\n $('.cc-select.js-requestsize-size').selectpicker();\n $('.cc-select.js-requestsize-title').selectpicker();\n\n if (data.shortDescription) {\n $productContainer.find('.description-and-detail .description')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .description .content')\n .empty()\n .html(data.shortDescription);\n } else {\n $productContainer.find('.description-and-detail .description')\n .addClass('hidden-xl-down');\n }\n\n if (data.longDescription) {\n $productContainer.find('.description-and-detail .details')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .details .content')\n .empty()\n .html(data.longDescription);\n } else {\n $productContainer.find('.description-and-detail .details')\n .addClass('hidden-xl-down');\n }\n });\n },\n\n showSpinner: function () {\n $('body').on('product:beforeAddToCart product:beforeAttributeSelect', function () {\n $.spinner().start();\n });\n },\n\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n $('.product-detail').data('pid', response.data.product.id);\n $('.js-open-contact').data('sku', response.data.product.sku);\n var skuWColor = response.data.product.skuMaster;\n var colorAttr = response.data.product.variationAttributes[0].values;\n for (var i = 0; i < colorAttr.length; i++) {\n if (colorAttr[i].selected) {\n skuWColor += colorAttr[i].id;\n }\n }\n $('.js-find-in-store-button').attr('data-sku', skuWColor);\n $('.js-open-choice').toArray().forEach(closeModal);\n $('.js-sticky-choice').toArray().forEach(closeModal);\n // Close open modals\n if (openFromBuyButton) {\n base.performAddToCart(this);\n }\n if ($('#4giftButtonSizeNotSelected').val() === 'true') {\n $('body').trigger('product:afterAttributeSelect4gift');\n }\n\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n\n if ($('.js-recommendationTemplate:not(.js-do-not-load)').length) {\n var url = $('#urlRecommendations').val();\n var queryString = window.location.search;\n var queryPid = '&pid=';\n if (queryString == '') {\n queryPid = '?pid=';\n }\n var completeUrl = url + queryString + queryPid + skuWColor;\n\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-recommendationTemplate').html(data);\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n },\n error: function (err) {\n console.log(err);\n }\n });\n });\n }\n },\n error: function(err) {\n }\n });\n }\n });\n },\n\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n $('button.add-to-cart', response.$productContainer).data('disabled',\n (!response.product.readyToOrder || !response.product.available));\n manageApplePayButtonApperance(response);\n });\n },\n\n sizeChart: function () {\n $('body').on('click', '.js-open-size-chart', function (e) {\n e.preventDefault();\n var buttonPressed = $(this);\n var url = buttonPressed.data('href');\n var buttonID = this.id;\n $(document).find('.cc-size-chart-overlay-container').css('content-visibility', 'visible');\n if (buttonID === 'size-chart-stiky' && !window.isMobile) {\n $('#js-open-from-sticky').val(true);\n } else {\n $('#js-open-from-sticky').val(false);\n }\n var $prodSizeChart;\n var modalTarget;\n if (window.isMobile) {\n $prodSizeChart = $('#js-size-chart-content-mobile');\n modalTarget = buttonPressed.data('target-mobile');\n } else {\n $prodSizeChart = $('#js-size-chart-content');\n modalTarget = buttonPressed.data('target');\n }\n if ($prodSizeChart.is(':empty')) {\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'text',\n success: function (data) {\n // analytics\n dataLayer.push({\n event: 'sizeChart',\n eventCategory: 'Size Chart',\n eventAction: 'open'\n });\n // END\n $prodSizeChart.html(data);\n if (window.isMobile) {\n $('.js-open-choice').toArray().forEach(closeModal);\n }\n e.stopPropagation();\n\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n } else {\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n },\n\n updateLinksWithTemplate: function () {\n var urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('template')) {\n var template = urlParams.get('template');\n $('.js-update-with-template').each((_idx, el) => {\n var currentLink = $(el).attr('href');\n let updatedLink = replaceOrAddQueryParam(currentLink, 'template', template);\n $(el).attr('href', updatedLink);\n });\n }\n },\n\n closeSizeChart: function () {\n $(document).on('click', '.js-close-size-chart', function () {\n var sizeChartOverlayId;\n var sizeOverlay;\n var openedFromSticky = $('#js-open-from-sticky').val();\n if (window.isMobile) {\n sizeChartOverlayId = '#size-chart-overlay-mobile';\n sizeOverlay = '#size-modal-sticky';\n } else {\n sizeChartOverlayId = '#size-chart-overlay';\n sizeOverlay = '#size-overlay';\n }\n\n if (!window.mobile) {\n var modal = new Modal(sizeOverlay, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.close();\n } else {\n var modal = new Modal(sizeOverlay, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('.cc-product-detail .cc-info-section').removeAttr('style');\n }\n });\n },\n\n sizeChartMeasure: function () {\n $('body').on('click', '.js-size-measure-selector', function (e) {\n e.preventDefault();\n var measureSelected = $(this);\n var tableSelectedId = measureSelected.data('table-id');\n\n var oldSelected = measureSelected.parent('.js-cc-udm').siblings();\n oldSelected.removeClass('cc-active');\n var oldTableID = oldSelected.find('.js-size-measure-selector').data('table-id');\n $('#' + oldTableID).hide();\n measureSelected.parent('.js-cc-udm').addClass('cc-active');\n $('#' + tableSelectedId).show();\n });\n },\n\n setNumberPageCarouselReccomandation: function() {\n $('.cc-product-recommendations .cc-slider').on('setPosition', function(event, slick) {\n var slideTosho = $('.cc-product-recommendations .cc-slider').data('items-row');\n if ($(window).width() < 1439.98) slideTosho = 3;\n if ($(window).width() < 767.98) slideTosho = 1;\n var currentSlide = slick.currentSlide + 1;\n var totalSlide = slick.slideCount - (slideTosho - 1);\n var arialabelPrev;\n if (currentSlide <= totalSlide && (currentSlide - 1) > 0) {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide - 1).replace('{1}', totalSlide);\n } else {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n var arialabelNext;\n if ((currentSlide + 1) <= totalSlide) {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide + 1).replace('{1}', totalSlide);\n } else {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n $('.cc-product-recommendations .cc-slider-prev').attr('aria-label', arialabelPrev);\n $('.cc-product-recommendations .cc-slider-next').attr('aria-label', arialabelNext);\n // set tabindex -1 if product isn't show, and 0 if is show\n $('.slick-slide').each(function() {\n $(this).attr('aria-hidden') === 'true' ? $(this).attr('tabindex', '-1') : $(this).attr('tabindex', '0');\n });\n });\n },\n\n shippingPackaging: function () {\n $(document).on('click', '.js-packaging-iteam', function () {\n if ($(this).hasClass('active')) {\n $(this).find('span').removeClass('cc-noActive');\n $(this).parent().siblings().children().find('span').addClass('cc-noActive');\n }\n var $menu = $(this).closest('.cc-packaging-shipping-list');\n if ($('body').hasClass('cc-mobile') || ($('body').hasClass('cc-tablet') && $(this).closest('.cc-content-packaging-shipping-list-four').length > 0)) {\n var myScrollPos = $(this).offset().left + ($(this).outerWidth(true) / 2) + $menu.scrollLeft() - $menu.width() / 2;\n $menu.scrollLeft(myScrollPos);\n }\n });\n },\n\n initializeSize: function() {\n $(document).ready(function() {\n autoSelectForOneSize();\n });\n },\n\n setIdForModalDialogattributes: function() {\n $(document).ready(function() {\n // set dialog id selectsticky\n var ariaDescribedBy = $(document).find('.cc-size-choice-overlay-sticky').attr('aria-describedby');\n var ariaLabelledby = $(document).find('.cc-size-choice-overlay-sticky').attr('aria-labelledby');\n $(document).find('.cc-size-choice-overlay-sticky .cc-head-title').attr('id', ariaLabelledby);\n $(document).find('.cc-size-choice-overlay-sticky .js-change-for-stiky').attr('id', ariaDescribedBy);\n // set dialog id whishlistMesage\n var $wishListMessage = $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message');\n var ariaDescribedByWish = $wishListMessage.attr('aria-describedby');\n var newAriaDescribedByWish = ariaDescribedByWish + '-Mobile';\n var ariaLabelledbyWish = $wishListMessage.attr('aria-labelledby');\n var newAriaLabelledbyWish = ariaLabelledbyWish + '-Mobile';\n $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message .cc-prod-title').attr('id', newAriaLabelledbyWish);\n $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message .js-wish-changeId-forMobile').attr('id', newAriaDescribedByWish);\n $wishListMessage.attr('aria-describedby', newAriaDescribedByWish);\n $wishListMessage.attr('aria-labelledby', newAriaLabelledbyWish);\n // set id for butto selectsize stiky\n $(document).find('.cc-size-choice-overlay-sticky .js-open-size-chart').attr('id', 'size-chart-stiky');\n $(document).find('.cc-size-choice-overlay-sticky .js-open-helpWhitSize').attr('id', 'size-help-sticky');\n });\n },\n\n copyProductLink: function (e) {\n $(document).on('click keydown', '.js-share-product-link', function (event) {\n if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') return;\n var copyText = $(this).data('url');\n navigator.clipboard.writeText(copyText);\n var copiedLink = $(this).find('.js-link-label').data('copied');\n $(this).find('.js-link-label').find('.js-social-text').text(copiedLink);\n });\n },\n\n loadRecommendations: function () {\n $(document).ready(function () {\n if ($('.js-recommendationTemplate:not(.js-do-not-load)').length) {\n if ($('.cc-product-detail--shop-look').length === 0) {\n var url = $('#urlRecommendations').val();\n var pid = $('.product-detail').data('pid');\n var queryString = window.location.search;\n var queryPid = '&pid=';\n if (queryString == '') {\n queryPid = '?pid=';\n }\n var completeUrl = url + queryString + queryPid + pid;\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-recommendationTemplate').html(data);\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n },\n error: function (err) {\n }\n });\n });\n }\n },\n error: function(err) {\n }\n });\n }\n }\n });\n },\n\n addToCartAutomatic: function() {\n $(document).ready(function () {\n var addToCartAutomatic = $('#addToCartAutomatic').val();\n if (addToCartAutomatic === 'true') {\n if (window.isMobile) {\n if (!$($('button.add-to-cart')[1]).data('disabled')) {\n $($('button.add-to-cart')[1]).click();\n }\n } else {\n if (!$($('button.add-to-cart')[0]).data('disabled')) {\n $($('button.add-to-cart')[0]).click();\n }\n }\n }\n });\n },\n\n fixSelectDropdowns: function() {\n // accessibility: fix dropdowns select focus issues\n $(document).ready(function() {\n // fix dropdowns not focusable\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};\n","'use strict';\n\nmodule.exports = {\n filter: function () {\n // Display refinements bar when Menu icon clicked\n $('.container').on('click', 'button.filter-results', function () {\n $('.refinement-bar, .modal-background').show();\n $('.refinement-bar').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', true);\n $('.refinement-bar .close').focus();\n });\n },\n\n closeRefinements: function () {\n // Refinements close button\n $('.container').on('click', '.refinement-bar button.close, .modal-background', function () {\n $('.refinement-bar, .modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n $('.btn.filter-results').focus();\n });\n },\n\n resize: function () {\n // Close refinement bar and hide modal background if user resizes browser\n $(window).resize(function () {\n $('.refinement-bar, .modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n });\n },\n\n sort: function () {\n // Handle sort order menu selection\n $('.container').on('change', '[name=sort-order]', function (e) {\n e.preventDefault();\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n\n $.spinner().start();\n $(this).trigger('search:sort', this.value);\n $.ajax({\n url: this.value,\n data: {\n selectedUrl: this.value,\n template: currTemplate\n },\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n }\n};\n","'use strict';\n\n/**\n * Update DOM elements with Ajax results\n *\n * @param {Object} $results - jQuery DOM element\n * @param {string} selector - DOM element to look up in the $results\n * @return {undefined}\n */\nfunction updateDom($results, selector) {\n var $updates = $results.find(selector);\n $(selector).empty().html($updates.html());\n}\n\n/**\n * Keep refinement panes expanded/collapsed after Ajax refresh\n *\n * @param {Object} $results - jQuery DOM element\n * @return {undefined}\n */\nfunction handleRefinements($results) {\n $('.refinement.active').each(function () {\n $(this).removeClass('active');\n var activeDiv = $results.find('.' + $(this)[0].className.replace(/ /g, '.'));\n activeDiv.addClass('active');\n activeDiv.find('button.title').attr('aria-expanded', 'true');\n });\n\n updateDom($results, '.refinements');\n}\n\n/**\n * Parse Ajax results and updated select DOM elements\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction parseResults(response) {\n var $results = $(response);\n var specialHandlers = {\n '.refinements': handleRefinements\n };\n\n // Update DOM elements that do not require special handling\n [\n '.grid-header',\n '.header-bar',\n '.header.page-title',\n '.product-grid',\n '.show-more',\n '.filter-bar',\n '.plpHeaderTemplate',\n '.filter-result-bar-container',\n '.search-result-number-mobile-container'\n ].forEach(function (selector) {\n updateDom($results, selector);\n });\n\n Object.keys(specialHandlers).forEach(function (selector) {\n specialHandlers[selector]($results);\n });\n}\nfunction updateNumberOfFilters() {\n var filters = $('.filter-bar.active-filter-mobile').find('li');\n if (filters.length > 0) {\n $('.js-filter-counter').css('display', 'none');\n $('.js-updateNumberFilters').css('display', 'block');\n $('.js-plp-showFilters').addClass('d-none');\n $('.js-plp-activeFilters').removeClass('d-none');\n $('.js-updateNumberFilters').empty().html('( ' + filters.length + ' )');\n } else {\n $('.js-filter-counter').css('display', 'block');\n $('.js-updateNumberFilters').css('display', 'none');\n $('.js-plp-showFilters').removeClass('d-none');\n $('.js-plp-activeFilters').addClass('d-none');\n }\n}\n/**\n * Update sort option URLs from Ajax response\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction updateSortOptions(response) {\n var $tempDom = $('
    ').append($(response));\n var sortOptions = $tempDom.find('.grid-footer').data('sort-options').options;\n sortOptions.forEach(function (option) {\n $('option.' + option.id).val(option.url);\n });\n}\n\nfunction changeWallLayout() {\n $('.js-wall-no-horizontal').each(function (index, element) {\n var $classesToChange = $('.js-wall-no-horizontal').closest('.row.cc-full-width-row').children();\n $classesToChange.removeClass('col-wall-33').removeClass('col-wall-66').removeClass('col-wall-50').addClass('col-wall-50');\n });\n}\n\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\n\nlet 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\nlet sizePage = (url, parameter, template) => {\n var split = url.split(parameter);\n if (split.length > 1) {\n var size = split[1].split('&')[0].split('=')[1];\n if (!template) {\n if (url.indexOf('template=search/wallShopByLookTemplate') !== -1) {\n if (parseInt(size, 10) % 11 !== 0) {\n var sizeToAdd = parseInt(size, 10) / 12;\n return parseInt(size, 10) - sizeToAdd;\n }\n } else {\n if (parseInt(size, 10) % 12 !== 0) {\n sizeToAdd = parseInt(size, 10) / 11;\n return parseInt(size, 10) + sizeToAdd;\n }\n }\n } else {\n if (template.indexOf('search/wallShopByLookTemplate') !== -1) {\n if (parseInt(size, 10) % 11 !== 0) {\n sizeToAdd = parseInt(size, 10) / 12;\n return parseInt(size, 10) - sizeToAdd;\n }\n } else {\n if (parseInt(size, 10) % 12 !== 0) {\n sizeToAdd = parseInt(size, 10) / 11;\n return parseInt(size, 10) + sizeToAdd;\n }\n }\n }\n } else {\n if (!template) {\n if (url.indexOf('template=search/wallShopByLookTemplate') !== -1) {\n return 11;\n } else return 12;\n } else {\n if (template.indexOf('search/wallShopByLookTemplate') !== -1) {\n return 11;\n } else return 12;\n }\n }\n};\n\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDiseble() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\nfunction liveChatPositionStikyUp() {\n var stikyHeight = $('.sticky-bar-mobile').height();\n if (window.isMobile) {\n if ($('.js-sticky-look-container').length > 0) {\n var height = $('js-sticky-add-to-cart-look').height();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height,\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px'\n });\n }\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight,\n right: '16px'\n });\n }\n }\n}\nfunction liveChatPositionStikyDown() {\n if ($('.js-sticky-look-container').length > 0) {\n var height = $('.js-sticky-add-to-cart-look').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height,\n right: '16px'\n });\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height * 1.5,\n right: '16px'\n });\n }\n } else {\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 }\n\n};\n\nconst openMobileSortingWindow = () => {\n $('#mobileSortingWindow').removeClass('d-none');\n $('#mobileSortingWindow').css({\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999\n });\n $('body').addClass('cc-blocked');\n};\n\nconst closeMobileSortingWindow = () => {\n $('#mobileSortingWindow').addClass('d-none');\n $('#mobileSortingWindow').css({\n position: '',\n top: '',\n right: '',\n bottom: '',\n left: '',\n zIndex: ''\n });\n $('body').removeClass('cc-blocked');\n};\nfunction focusDivElement($selector) {\n const FOCUSABLE = 'button:not(:disabled):not([aria-hidden],input)';\n $selector.hover(function() {\n this.focus();\n }, function() {\n this.blur();\n }).keydown(function(event) {\n if (event.keyCode !== 9) {\n return;\n }\n let focusableNodes = $selector.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}\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\nfunction applyAccessibilityFix() {\n var $selectElement = $('#sortBy');\n var $buttonElement = $selectElement.next('button');\n \n var selectId = $selectElement.attr('id');\n var ariaControls = $selectElement.attr('aria-controls');\n\n $selectElement.removeAttr('aria-controls');\n \n $buttonElement.attr('id', selectId + \"Button\");\n $buttonElement.attr('aria-controls', ariaControls);\n $buttonElement.attr('tabindex', \"0\");\n}\n\nfunction handleBtnAccessibilityFunction(){\n $('.btn').on(\"focusout\", function() {\n setTimeout(function () {\n $('.btn').attr('tabindex', \"0\");\n }, 100);\n });\n}\n\nmodule.exports = {\n\n handleBtnAccessibility: function(){\n // Call the function to make selectpicker button focussable\n handleBtnAccessibilityFunction();\n },\n\n // Necessary because of selectpicker\n fixAccessibilitySelectpicker: function() {\n $(document).ready(function() {\n // When the document is ready, change selectpicker behaviour to make it accessible\n applyAccessibilityFix();\n });\n },\n\t\n\n sortDesktop: function () {\n // Handle sort order menu selection\n $('body').on('change', '#sortBy', function (e) {\n e.preventDefault();\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n\n $.spinner().start();\n $(this).trigger('search:sort', this.dataset.href);\n\n const $selectedOption = $(this);\n var optionSelect = $(this).children(':selected').attr('id');\n var kindSort;\n switch (optionSelect) {\n case 'price-ascending':\n kindSort = 'price ascend';\n break;\n case 'Online Timestamp':\n kindSort = 'new arrival';\n break;\n default:\n kindSort = 'price descend';\n }\n let url = $(this).val();\n let urlWithNewTemplate = replaceOrAddQueryParam(url, 'template', currTemplate);\n\n var actualQueryParam = getQueryParams();\n\n var queryTemplate = actualQueryParam && actualQueryParam.template ? actualQueryParam.template : null;\n\n // $('.js-sorting-option').removeClass('sorting-option-selected');\n $.ajax({\n url: urlWithNewTemplate,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n if (optionSelect !== null) {\n link = replaceOrAddQueryParam(link, 'srule', optionSelect);\n }\n if (queryTemplate !== null) {\n link = replaceOrAddQueryParam(link, 'template', queryTemplate);\n }\n window.history.replaceState('', '', link);\n var isPageDesignerPLP = $('#js-is-plp').val();\n if (isPageDesignerPLP) {\n var urlPath = document.location.href;\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $('.plpHeaderTemplate').attr('data-currenttemplate'));\n var urlSwitch = $('.js-switch-container-plp.cc-selected').find('button').data('urlswitch');\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'type', urlSwitch);\n window.history.replaceState('', '', newUrlPath);\n }\n // Select the current option\n // $selectedOption.addClass('sorting-option-selected');\n // $('.js-selected-sorting-option').text($selectedOption.text());\n\n // Remove CLS min-height\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\n\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n\n // analytics plp sort\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: 'sort',\n eventLabel: kindSort,\n filerType: 'sort',\n filterValue: kindSort\n });\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(() => $('body').trigger('wishlist:productsChangePLP'));\n });\n },\n\n sortMobile: function () {\n // Handle sort order menu selection\n $('body').on('change', '.js-sorting-option-mobile', function (e) {\n e.preventDefault();\n var optionSelect = $(this).data('id');\n var kindSort;\n switch (optionSelect) {\n case 'price-ascending':\n kindSort = 'price ascend';\n break;\n case 'Online Timestamp':\n kindSort = 'new arrival';\n break;\n default:\n kindSort = 'price descend';\n }\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n $(this).trigger('search:sort', this.dataset.href);\n let url = this.dataset.href;\n let urlWithNewTemplate = replaceOrAddQueryParam(url, 'template', currTemplate);\n $.spinner().start();\n $.ajax({\n url: urlWithNewTemplate,\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n window.history.replaceState('', '', link);\n // Close the sorting window (mobile)\n closeMobileSortingWindow();\n liveChatEnable();\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: 'sort',\n eventLabel: kindSort,\n filerType: 'sort',\n filterValue: kindSort\n });\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n showMore: function () {\n // Show more products\n $(document).on('click', '.show-more a', function (e) {\n e.stopPropagation();\n var showMoreUrl = $(this).attr('href');\n var actionType = $(this).data('action');\n var currTemplate = $(this).data('currtemplate');\n var isPageDesignerLook = $('#js-is-look').val();\n var startIndex = parseInt(new URLSearchParams(showMoreUrl).get('start'));\n\n $('#noIndex').remove();\n e.preventDefault();\n\n $.spinner().start();\n $(this).trigger('search:showMore', e);\n $.ajax({\n url: showMoreUrl,\n data: {\n selectedUrl: showMoreUrl,\n action: actionType,\n template: currTemplate,\n isSwitch: true\n },\n method: 'GET',\n success: function (response) {\n $('.grid-footer').replaceWith(response);\n updateSortOptions(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n var positionTemplate = document.location.href.indexOf('template');\n var template = positionTemplate !== -1 ? document.location.href.substr(positionTemplate) : '';\n if (isPageDesignerLook !== 'true') {\n if (template !== '') {\n link = link + '&' + template.split('&')[0];\n }\n window.history.replaceState('', '', link);\n } else {\n var positionLinkSize = link.indexOf('sz');\n var pageSize = positionLinkSize !== -1 ? (link.split('sz=')[1]).split('&')[0] : '';\n link = replaceOrAddQueryParam(document.location.href, 'start', 0);\n link = replaceOrAddQueryParam(link, 'sz', pageSize);\n if (template !== '' && link.indexOf('template=') === -1) {\n link = link + '&' + template.split('&')[0];\n }\n window.history.replaceState('', '', link);\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n if ($('.plpHeaderTemplate').attr('data-currenttemplate') === 'search/gridShopByLookTemplate') {\n $('.cc-grid-shopbylook-tile').find('img').css('height', 'unset');\n } else $('.cc-wall-big-tile-margin').find('img').css('height', 'unset');\n }\n\n dataLayer.push({\n event: 'loadMore',\n eventCategory: 'Load More'\n });\n // accessibility: move focus on the first new loaded product\n $('.js-singleItem-plp').eq(startIndex).find('.js-pdp-variant-link').focus();\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n $('body').trigger('wishlist:showMorePLP', [{startIndex: startIndex}]);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n applyFilter: function () {\n // Handle refinement value selection and reset click\n $(document).on(\n 'click',\n '.refinements li button,.refinements li input, .refinement-bar button.reset, .filter-value button, .swatch-filter button, .removeAll-active-filter',\n function (e) {\n var $tabPanel = $(this).closest('.content-filter-panel');\n if ($tabPanel.length > 0) {\n var refinment = $(this).data('filter');\n var type;\n if (refinment.toLowerCase().indexOf('category') > -1) {\n type = 'category';\n }\n if (refinment.toLowerCase().indexOf('color') > -1) {\n type = 'color';\n }\n if (refinment.toLowerCase().indexOf('season') > -1) {\n type = 'collection';\n }\n if (refinment.toLowerCase().indexOf('size') > -1) {\n type = 'size';\n }\n if (refinment.toLowerCase().indexOf('gender') > -1) {\n type = 'linea';\n }\n var refinmentValue = $(this).data('analyticsvalue');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: type,\n eventLabel: refinmentValue,\n filerType: type,\n filterValue: refinmentValue\n });\n }\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n e.preventDefault();\n e.stopPropagation();\n $.spinner().start();\n $(this).trigger('search:filter', e);\n var actualQueryParam = getQueryParams();\n if (actualQueryParam) {\n var srule = actualQueryParam.srule || null;\n var queryTemplate = actualQueryParam.template || null;\n }\n var srulePresent = $(this).data('href').indexOf('srule') != -1;\n\n var data = {\n template: currTemplate,\n page: $('.grid-footer').data('page-number'),\n selectedUrl: $(this).data('href'),\n isSwitch: true,\n queryTemplate: queryTemplate,\n isMobile: window.isMobile\n }\n if (srulePresent) {\n data.srule = srule\n }\n\n $.ajax({\n url: $(this).data('href'),\n data: data,\n method: 'GET',\n success: function (response) {\n parseResults(response);\n updateNumberOfFilters();\n changeWallLayout();\n var link = decodeURI($('.permalink').val());\n if (srule !== null) {\n link = replaceOrAddQueryParam(link, 'srule', srule);\n }\n if (queryTemplate !== null) {\n link = replaceOrAddQueryParam(link, 'template', queryTemplate);\n }\n window.history.replaceState('', '', link);\n $('#sortBy').selectpicker();\n $.spinner().stop();\n var isPageDesignerPLP = $('#js-is-plp').val();\n if (isPageDesignerPLP) {\n var urlPath = document.location.href;\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $('.plpHeaderTemplate').attr('data-currenttemplate'));\n var urlSwitch = $('.js-switch-container-plp.cc-selected').find('button').data('urlswitch');\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'type', urlSwitch);\n window.history.replaceState('', '', newUrlPath);\n }\n if (srule !== null) {\n $(document).find('#sortBy option[id=\"' + srule + '\"]').prop('selected', true);\n $('#sortBy').selectpicker('refresh');\n }\n \n // Announce to Screen Reader the number of products found\n $('.js-sr-announce-filter').text($('.js-sr-announce-filter').attr('data-product-count'));\n $('.js-sr-announce-filter').attr(\"aria-label\", $('.js-sr-announce-filter').attr('data-product-count'));\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(function(){ $('body').trigger('wishlist:productsChangePLP'); $(\".js-sr-announce-filter\").focus()});\n });\n },\n\n filteModalOpen: function () {\n $(document).on('click', '.js-open-filter-plp', function () {\n $('#filter-modal-plp').addClass('cc-visible');\n $('.js-open-filter-plp').addClass('d-none');\n $('.js-close-filter-plp').removeClass('d-none');\n $('.cc-row-filter-modal').addClass('cc-open');\n var $elements = $('.cc-row-filter-modal .mainFilterContainer').find('button:not(:disabled):not([aria-hidden]),a[href],input').toArray();\n $elements[0].focus();\n focusDivElement($('.cc-row-filter-modal #filter-modal-plp .mainFilterContainer'));\n // close tile overlay\n var plus = $('.js-open-size-color').data('plus');\n $('.js-close-size-color').removeClass('js-close-size-color').addClass('js-open-size-color');\n $('.js-change-icon').each(function() {\n $(this).children().attr('xlink:href', plus);\n });\n $('.cc-size-color-modal').each(function () {\n $(this).removeClass('cc-open');\n if ($(this).css('opacity') === '1') {\n var currentID = $(this).data('pid');\n $('.openTab-' + currentID).removeClass('d-none');\n $('.closeTab-' + currentID).addClass('d-none');\n }\n });\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\n });\n },\n\n filteModalClose: function () {\n $(document).on('click', '.js-close-filter-plp', function () {\n $('#filter-modal-plp').removeClass('cc-visible');\n $('.js-close-filter-plp').addClass('d-none');\n $('.js-open-filter-plp').removeClass('d-none');\n $('.cc-row-filter-modal').removeClass('cc-open');\n $('.show-filter-text').focus(); // Adding focus for accessibility \n });\n },\n\n widthSortingDiv: function () {\n $(document).ready(function () {\n $('#myDropdown').css('width', $('#sorting-button').width());\n });\n },\n\n sortingOptionList: function () {\n $(document).on('click', '#sorting-button', function () {\n document.getElementById('myDropdown').classList.toggle('show');\n });\n },\n\n closeSortingOptionList: function () {\n window.onclick = function (event) {\n if (!event.target.matches('.dropbtn')) {\n var dropdowns = document.getElementsByClassName('dropdown-content');\n var i;\n for (i = 0; i < dropdowns.length; i++) {\n var openDropdown = dropdowns[i];\n if (openDropdown.classList.contains('show')) {\n openDropdown.classList.remove('show');\n }\n }\n }\n };\n },\n\n changeTemplateViewContainer: function () {\n $(document).on('click', '.js-change-layout-container', function () {\n var templateData = $(this);\n var currenSorting = $('#sortBy').siblings('button').attr('title');\n var isSearch = $('#js-is-search').val();\n var isPageDesignerLook = $('#js-is-look').val();\n if (isSearch === undefined || isSearch == 'false') {\n $('.plpHeaderTemplate').attr('data-currenttemplate', $(templateData).data('pid'));\n $('.plpHeaderTemplate').data('currenttemplate', $(templateData).data('pid'));\n $.spinner().start();\n var urlPath = document.location.href;\n if (isPageDesignerLook === 'true') {\n var urlPathLook = $('.js-switch-container-plp.cc-selected').find('button').data('href');\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'template', $(templateData).data('pid'));\n var sizeOfPage = sizePage(urlPath, 'sz', $(templateData).data('pid'));\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'start', 0);\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'sz', sizeOfPage);\n }\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $(templateData).data('pid'));\n $.ajax({\n url: urlPathLook || newUrlPath,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n var analyticsTemplate;\n var templateName = '';\n\n if (!isPageDesignerLook) {\n parseResults(response);\n changeWallLayout();\n $('#sortBy').prop('title', currenSorting);\n $('#sortBy').selectpicker();\n $.spinner().stop();\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', $('#size-page').val());\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n var template = $(templateData).data('pid');\n switch (template) {\n case 'search/grid3Template': templateName = 'grid3';\n break;\n case 'search/grid2Template': templateName = 'grid2';\n break;\n case 'search/wallTemplate': templateName = 'wall';\n break;\n }\n analyticsTemplate = templateName;\n if (analyticsTemplate === '') {\n switch (template) {\n case 'search/gridShopByLookTemplate': analyticsTemplate = 'gridShopByLook';\n break;\n case 'search/wallShopByLookTemplate': analyticsTemplate = 'wallShopByLook';\n break;\n }\n }\n // analytics\n if ($(document).find('.cc-double-image .cc-tile-image--second').length > 0) {\n templateName += '-hover';\n }\n\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\n });\n\n $('body').trigger('analytics:pushpagechange', { listingType: templateName });\n } else {\n parseResults(response);\n changeWallLayout();\n if ($(templateData).data('pid') === 'search/gridShopByLookTemplate') {\n $('.cc-grid-shopbylook-tile').find('img').css('height', 'unset');\n } else $('.cc-wall-big-tile-margin').find('img').css('height', 'unset');\n $.spinner().stop();\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n var size = sizePage(newUrlPath, 'sz', null);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', size);\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n\n // analytics\n var urlSwitch = $(document).find('.js-switch-plp-look.js-is-look-switch').data('urlswitch');\n var currentTemplate = $(document).find('.plpHeaderTemplate').data('currenttemplate');\n switch (currentTemplate) {\n case 'search/gridShopByLookTemplate':\n templateName = 'gridShopByLook';\n analyticsTemplate = 'gridShopByLook';\n break;\n\n case 'search/wallShopByLookTemplate':\n templateName = 'wallShopByLook';\n analyticsTemplate = 'wallShopByLook';\n break;\n }\n\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\n });\n\n $('body').trigger('analytics:pushpagechange', {\n pageCategory: 'product-list',\n pagesubCategory: urlSwitch,\n pageDetail: 'shop-by-look',\n listingType: templateName\n });\n }\n // Remove CLS min-height\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\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 // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n }\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(function() {$('body').trigger('wishlist:productsChangePLP'); applyAccessibilityFix(); handleBtnAccessibilityFunction();});\n } else {\n // isSearch is true\n var url = $(templateData).data('href') + '?cgid=' + $(templateData).data('cgid') + '&q=' + $(templateData).data('q') + '&template=' + $(templateData).data('pid');\n $('.plpHeaderTemplate').data('currenttemplate', $(templateData).data('pid'));\n $.spinner().start();\n var urlPath = document.location.href;\n var newUrl = replaceOrAddQueryParam(window.location.href, 'template', $(templateData).data('pid'));\n var newUrlPath;\n $.ajax({\n url: newUrl,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n parseResults(response);\n $('#sortBy').prop('title', currenSorting);\n $('#sortBy').selectpicker();\n changeWallLayout();\n $.spinner().stop();\n newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $(templateData).data('pid'));\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', $('#size-page').val());\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n\n // analytics\n var template = $(templateData).data('pid');\n var templateName = '';\n switch (template) {\n case 'search/grid3Template': templateName = 'grid3';\n break;\n case 'search/grid2Template': templateName = 'grid2';\n break;\n case 'search/wallTemplate': templateName = 'wall';\n break;\n }\n var analyticsTemplate = templateName;\n if (analyticsTemplate === '') {\n switch (template) {\n case 'search/gridShopByLookTemplate': analyticsTemplate = 'gridShopByLook';\n break;\n case 'search/wallShopByLookTemplate': analyticsTemplate = 'wallShopByLook';\n break;\n }\n }\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\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 // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n\n openSortingDivMobile: function () {\n $(document).on('click', '.sorting-button', function () {\n openMobileSortingWindow();\n liveChatDiseble();\n });\n },\n\n closeSortingDivMobile: function () {\n $(document).on('click', '.closeSortingWindow', function () {\n closeMobileSortingWindow();\n liveChatEnable();\n });\n },\n\n openFilterDivMobile: function () {\n $(document).on('click', '.filter-button', function () {\n $('#mobileFilterWindow').removeClass('d-none');\n $('#mobileFilterWindow').css({\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999\n });\n $('body').addClass('cc-blocked');\n liveChatDiseble();\n });\n },\n\n closeFilterDivMobile: function () {\n $(document).on('click', '.closeFilterWindow', function () {\n $('#mobileFilterWindow').addClass('d-none');\n $('#mobileFilterWindow').css({\n position: '',\n top: '',\n right: '',\n bottom: '',\n left: '',\n zIndex: ''\n });\n $('body').removeClass('cc-blocked');\n liveChatEnable();\n });\n },\n\n showOverlayWallHover: function () {\n $(document).on({\n mouseenter: function () {\n var id = $(this).data('id');\n // $('.overlay-wall-' + id).removeClass('d-none');\n $('.overlay-wall-' + id).css('opacity', '1');\n },\n mouseleave: function () {\n var id = $(this).data('id');\n // $('.overlay-wall-' + id).addClass('d-none');\n $('.overlay-wall-' + id).css('opacity', '0');\n }\n }, '.cc-desktop .image-container-wall');\n },\n\n closeMobileOverlayClickOnBody: function () {\n $(document).on('click', '.cc-mobile', function (event) {\n $('.js-mobileOverlay').each(function () {\n if ($(event.target).closest(this).length === 0) {\n event.preventDefault();\n $(this).removeClass('cc-open');\n // add href link to image\n var id = $(this).data('productid');\n var plus = $('.openTab-' + id).data('plus');\n $('.openTab-' + id).removeClass('js-close-size-color').addClass('js-open-size-color');\n $('.openTab-' + id).find('use').attr('xlink:href', plus);\n $('.js-imageContainerWall-' + id).attr('href', $('.js-imageContainerWall-' + id).attr('rel'));\n $('.js-imageContainerWall-' + id).removeAttr('rel');\n $('.sizecolorTab-' + id).removeClass('js-mobileOverlay');\n }\n });\n });\n },\n\n showStickyBarPLP: function () {\n let scrollTimer;\n $(document).on('scroll', function () {\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n liveChatPositionStikyDown();\n }\n var $plpBanner = $(document).find('.cc-pd-sticky-banner');\n if ($plpBanner.length > 0 && !$plpBanner.hasClass('custom-margin')) {\n $plpBanner.css('bottom', \"0px\");\n }\n let $sticky = $('.sticky-bar-mobile');\n var filterButtonHeigt = $sticky.height() + 'px';\n let $liveAgentButton = $('.embeddedServiceHelpButton .helpButton');\n // $liveAgentButton.css('bottom', '58px!important');\n // $liveAgentButton.css('right', '10px!important');\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) {\n scrollTimer = setTimeout(() => {\n if ($plpBanner.length > 0 && !$plpBanner.hasClass('custom-margin')) {\n $plpBanner.css('bottom', filterButtonHeigt);\n }\n $sticky.removeClass('d-none');\n liveChatPositionStikyUp();\n }, 250);\n }\n });\n },\n\n changeWallLayoutOnLoad: function () {\n $(document).ready(changeWallLayout());\n },\n\n // atterraggio plp\n startpositionLiveChatButton: function() {\n $(document).ready(function() {\n liveChatPositionStikyUp();\n });\n },\n\n accessibilityWall: function() {\n $(document).on('focus', '.js-wall-tile .cc-overlay-wall', (e) => {\n const $tile = $(e.currentTarget);\n const pid = $tile.data('id');\n $('.cc-overlay-wall').css('opacity', '0');\n $('.overlay-wall-' + pid).css('opacity', '1');\n $('.social-wish-' + pid).css('opacity', '1');\n });\n $(document).on('focusout', '.js-wall-tile .cc-overlay-wall', (e) => {\n $('.cc-overlay-wall').css('opacity', '0');\n });\n },\n\n setHistoryStatus: function () {\n $(document).on('click', 'a', function () {\n window.history.pushState({ scrollTop: window.scrollY }, 'scroll');\n });\n },\n\n reloadIframes: function() {\n $(document).on('listingpage:reloadiframes', function() {\n // reload iframes with no lazysizes library\n const iframes = document.querySelectorAll('iframe.lazyload');\n iframes.forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (endPoint) {\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 }\n};\n","'use strict';\nvar Modal = require('../modalUtilities');\n\nconst currentPage = {\n isPLP: !! $('.full-page-plp').length,\n isSBL: !! $('.cc-product-set-detail').length\n};\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} $icon - icon that was clicked to add a product to the wishlist\n */\nfunction displayMessageAndChangeIcon(data, sku, $icon) {\n const statusSuccessClass = 'alert-success';\n const statusErrorClass = 'alert-danger';\n var status, messageModalDiv;\n if (data.success) {\n status = statusSuccessClass;\n } else {\n status = statusErrorClass;\n }\n\n var productId;\n if (data.productId) {\n productId = data.productId.replace(data.colorId, '');\n }\n\n var backgroundProduct = sku || productId;\n\n if (sku !== undefined) {\n messageModalDiv = '.js-wishlist-color-id-'.concat(sku, '');\n } else {\n messageModalDiv = '.js-wishlist-color-id-'.concat(productId, '');\n }\n\n if (! $(messageModalDiv).length) {\n return;\n }\n\n $(messageModalDiv).find('.js-add-to-wishlist-message')\n .removeClass(statusSuccessClass).removeClass(statusErrorClass)\n .addClass(status).html(data.msg);\n\n let modalTarget = $(messageModalDiv);\n let modal = new Modal(modalTarget);\n var background = '.cc-add-to-wishlist-background.product-'.concat(currentPage.isPLP ? productId : backgroundProduct);\n $(background).show();\n $(messageModalDiv).show();\n modal.open();\n\n setTimeout(function () {\n $('.js-close-add-to-wishlist-message').trigger('click');\n }, 2000);\n\n /* to implement if remove from wishlist required\n if ($icon) {\n var $emptyIcon = $icon.find('.cc-hover-icon.stroke');\n var $fillIcon = $icon.find('.cc-hover-icon.fill');\n\n $emptyIcon.hide();\n $fillIcon.show();\n }\n */\n}\n\n/**\n * fills or empties the heart icon for the specific product\n * @param {boolean} fill - true for filled heart, false for empty heart\n * @param {JQueryObject} $product - the jquery object of the current .js-singleItem-plp\n */\n function updateHeartIcon(fill, $product) {\n var $heart = $product.find('.js-add-to-wishlist');\n if (fill) {\n $heart.find('.stroke').addClass('cc-hide').css('display', 'none');\n $heart.find('.fill').removeClass('cc-hide').css('display', '');\n } else {\n // empty heart\n $heart.find('.fill').addClass('cc-hide').css('display', 'none');\n $heart.find('.stroke').removeClass('cc-hide').css('display', '');\n }\n}\n\nfunction getSelectedVariantPid($product) {\n var $analytics = $('.new-analytics', $product);\n\n // can't add outfit to wishlist, prevent request\n var isSet = $analytics.attr('data-isset') == 'true';\n if (isSet) return null;\n\n var color = $analytics.attr('data-color') || '';\n var size = $analytics.attr('data-size') || '';\n return $analytics.attr('data-pid') + color + size; // pid concatenation wishlist\n}\n\nfunction checkProductInWishlist(pid, $plpProduct) {\n if (!pid) {\n return;\n }\n \n $.ajax({\n url: $('#wishlistContainsProductURL').val(),\n type: 'GET',\n data : {\n pid: pid\n },\n dataType: 'json',\n success: function(res) {\n if (! res.error) {\n updateHeartIcon(res.result, $plpProduct);\n }\n }\n });\n}\n\nfunction initWishlistScrollCheck() {\n let options = {\n rootMargin: `${parseInt(window.innerHeight * 0.35)}px 0px`,\n threshold: 0\n };\n\n let observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n var $element = $(entry.target);\n checkProductInWishlist(getSelectedVariantPid($element), $element);\n observer.unobserve(entry.target);\n }\n });\n }, options);\n\n var $productList = currentPage.isPLP ? $('.js-singleItem-plp .product') : $('.cc-product-list .product');\n $productList.each((_, productTile) => observer.observe(productTile));\n return observer;\n}\n\nmodule.exports = {\n addToWishlist: function () {\n $(document).on('click', '.js-add-to-wishlist', function (e) {\n e.preventDefault();\n var $icon = $(this);\n var url = $(this).data('href');\n var pid = $(this).data('pid');\n var colorId = $(this).data('color');\n var $productContainer = $(e.currentTarget).closest('.product');\n var size = null;\n var skuMaster;\n if (currentPage.isPLP) skuMaster = $productContainer.data('skumaster');\n else skuMaster = $productContainer.attr('data-pid');\n\n var optionId = null;\n var optionVal = null;\n if (!url || !pid || !colorId) {\n return;\n }\n\n $.spinner().start();\n $(this).attr('disabled', true);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n pid: getSelectedVariantPid($productContainer),\n colorId: colorId,\n optionId: optionId,\n optionVal: optionVal\n },\n success: function (data) {\n $.spinner().stop();\n displayMessageAndChangeIcon(data, skuMaster, $icon);\n // fill heart and trigger update for number of items in wishlist badge.\n updateHeartIcon(true, $(e.target).closest('.product'));\n $('body').trigger('wishlist:updateQuantity');\n // analytics\n dataLayer.push({\n event: 'wishlist',\n eventCategory: 'Wish List',\n eventAction: 'add',\n eventLabel: pid\n });\n // END\n },\n error: function (err) {\n $.spinner().stop();\n displayMessageAndChangeIcon(err, skuMaster, null);\n $('body').trigger('wishlist:updateQuantity');\n }\n });\n });\n },\n\n closeModal: function () {\n $(document).on('click', '.js-close-add-to-wishlist-message', function(e) {\n let modalTarget = $(this).parent().parent();\n let modal = new Modal(modalTarget);\n\n $('.cc-add-to-wishlist-background').hide();\n modalTarget.hide();\n if (currentPage.isSBL) modal.close();\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n $('.js-add-to-wishlist').removeAttr('disabled');\n });\n },\n\n checkProductsInWishlist: function () {\n var intersectionObserver = initWishlistScrollCheck();\n\n $('body').on('wishlist:productsChangePLP', function() {\n intersectionObserver.disconnect();\n intersectionObserver = initWishlistScrollCheck();\n });\n\n $('body').on('wishlist:showMorePLP', function(_, data) {\n let startIndex = data.startIndex;\n $('.js-singleItem-plp').slice(startIndex).each((_, productTile) => {\n intersectionObserver.observe(productTile);\n });\n });\n\n $('body').on('wishlist:productVariationChange', function(_, data){\n let $element = data.$element;\n checkProductInWishlist(getSelectedVariantPid($element), $element);\n });\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":""}