{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bc/cartridge/client/default/js/accessibilityFocus.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/tencentCaptcha.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/helper.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/api.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/scrollAnimate.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/base.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/loader.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/productDetailNew.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/detailNew.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/socialList.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/modalUtilities.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/contactPdp.js","webpack:///(webpack)/buildin/global.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/wishlist.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/pdp/initPdpButton.js","webpack:///./cartridges/custom_paypal/cartridge/client/default/js/pdp/pdpHelper.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/urlUtil.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","FOCUSABLE","focuseOnModal","selector","focusOnClose","selectorfadeOut","$","on","event","focusableNodes","find","toArray","filter","offsetParent","which","focusedItemIndex","indexOf","document","activeElement","shiftKey","length","focus","preventDefault","body","is","removeAttr","addClass","setTimeout","hasClass","removeClass","iterateFocusOnPage","focusOnFirstElement","each","this","trapFocus","element","trigger","disableBackgroundElements","attr","firstError","scrollAnimate","require","validateForm","config","arguments","undefined","valid","checkValidity","shouldValidate","stopPropagation","stopImmediatePropagation","errorFields","validity","parent","siblings","children","text","invalidateForm","formSubmit","currentError","concat","split","splice","join","push","$form","target","message","additionalData","type","category","country","val","validateFields","closest","clearForm","form","remove","e","setCustomValidity","validationMessage","patternMismatch","data","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","typeMismatch","parents","eq","skipFocus","center","scrollableParent","invalid","submit","focusOut","validateContactUsPDPform","validateRequesSizePDPform","errorText","validateFindInStorePDPform","validatecontactOrderform","validateHelpWithSizeform","validateLoginOfCanvas","validateRepairFormMyAccount","validateGenericCusForm","validateRegistration","validateOverlayNewsletter","$scrollableParent","$lines","areLinesSelected","privacyGranted","$privacyField","isPrivacyConsentGranted","$errorMsg","fields","buttonClick","noOrientalCheck","validationMsg","test","validateRequestAppointmentform","currentTarget","validateAppointmentformUser","functions","validateContactUsform","el","_successCallback","_failCallback","_captchaID","tencetCaptchaCallback","res","ret","randstr","ticket","errorCode","showCaptcha","captchaID","success","fail","captchaAppID","TencentCaptcha","show","error","querySelector","script","setAttribute","getAttribute","verify","ajax","url","isAlreadyLoaded","initialize","$tencentCaptchaEl","promise","$captchaInput","resolve","reject","invalidateCaptcha","defaultStyle","color","shape","layout","label","tagline","getPaypalButtonStyle","button","JSON","parse","style","getUrlWithCsrfToken","$element","urlInstance","URL","searchParams","append","toString","loader","loaderInstance","showCartErrorHtml","window","scrollTo","createCartBillingFormData","fieldsData","$paypalButton","cartBillingFormData","FormData","cartBillingFields","entries","forEach","entry","_entry","_slicedToArray","field","_typeof","updateOrderData","paypalUrls","hide","location","href","placeOrderStage","err","responseText","errorMsg","transactionExpired","reload","getPurchaseUnits","getPurchaseUnit","then","_ref","purchase_units","getBillingAgreementToken","isCartFlow","createBillingAgreementToken","createBillingAgreementCall","billingToken","createBillingAgreement","contentType","stringify","getOrderDetailsCall","orderId","getOrderDetails","returnFromCart","processData","showCheckoutErrorHtml","textContent","display","finishLpmOrder","details","lpmName","paypalMethodId","getPaypalOrderId","helper","async","responseJSON","id","elementOrPosition","options","position","disableScroll","duration","delay","innerHeight","animate","scrollTop","complete","scrollToPosition","parseInt","jQuery","offset","top","scrollToElement","appendToUrl","getPidValue","getQuantitySelected","updateAttrs","attrs","$productContainer","msgs","attrsWithSwatches","values","attrValue","$attrValue","selected","assistiveSelectedText","images","swatch","resizedUrls","map","idx","$colorText","empty","sizeStartIndex","sizeEndIndex","partOne","substring","partTwo","eIndex","partTwoMod","finalUrl","selectable","processSwatchValues","attributeSelector","prop","numberofsizes","first","size","isOnlyOneLeft","online","hideNotifyMeProduct","processNonSwatchValues","updateVideo","htmlVideo","$videoContainerVertical","$videoContainerHorizontalDesktop","$videoContainerHorizontalMobile","ImageandVideoContainer","replaceWith","desktopVideo","mobileVideo","insertAfter","prepend","handleVariantResponse","response","imagesCanChange","product","variationAttributes","resources","imgs","buildSrcSet","imageSet","prevArrStartIndex","$imageContainer","getElementById","innerHTML","$imagesDivs","singleImage","$ResizedUrlsFirstSource","$ResizedUrlsSecondSource","$image","$picture","$sources","alt","cloneImage","clone","appendTo","imgLength","$imagesOld","j","oldimg","updateImages","large","hasHorizontalVideo","videoH","CLDvideoHURL","videoCloudinaryPdpHtml","hasVerticalVideo","videoV","CLDvideoVURL","price","html","availabilityValue","availabilityMessages","availability","messages","readyToOrder","info_selectforstock","updateAvailability","attributeSelect","selectedValueUrl","container","method","imgVal","enableDisclaimerShipment","pfas","Tag","toUpperCase","spinner","stop","getAddToCartUrl","miniCartReportingUrl","performAddToCartCall","addToCartUrl","pid","pidsObj","childProducts","quantity","onSuccess","onError","customFrom","masterPid","start","generalPid","totPid","skuMaster","productColor","selectorPrefix","addToCartLiveContent","colorAttribute","dat","sku","stickyBar","attributeSelectLook","colorSelect","productPid","action","SKU","toLowerCase","colorAttributeLook","selectAttribute","available","sizeCode","_idx","$el","performAddToCart","newStickyAddToCartButton","isMobile","isStickyTop","isMicroSticky","resData","reportingURL","performAddToCartLook","addToCart","containerElement","Constructor","containerEl","processInclude","_throttle","_stickyExpanded","_scrollDirection","_userTouching","_scrollAnimation","initPaypalButton","liveChatPositionStikyUpNewPDP","stikyHeight","height","css","bottom","right","isTablet","stickyUp","stickyScrolling","stickyPos","finalPosition","outerHeight","stickyCollapse","imageListHeight","headerHeight","stickyHeight","viewportHeight","setFocusOnFirstRelatives","makeAccessible","isOnLoading","selectedColorInSticky","selectedColor","accessibilityColorName","accessibilityColorValue","newAccessibleAriaLabel","ready","ua","head","history","scrollRestoration","addEventListener","targetId","ariaExpandedValue","targetElement","classList","add","toggleClass","index","width","navigator","userAgent","platform","maxTouchPoints","safari","isSafariBrowser","isDesktop","addToCartHeigth","paypal","getElementsByTagName","item","createElement","onload","src","cartSdkUrl","partnerAttributionId","appendChild","isPdpButtonEnabled","injectAjaxPaypalSDK","slick","infinite","autoplay","focusOnSelect","centerMode","autoplaySpeed","speed","slidesToScroll","slidesToShow","variableWidth","dots","arrow","prevArrow","nextArrow","responsive","breakpoint","settings","eventStart","startY","touches","clientY","eventMove","moveY","trailing","leading","one","overflow","offsetHeight","scrollHeight","documentElement","touchAction","off","removeData","header","sticky","stickyButtonHeight","stickyAddToCart","resume","resumeHeight","stickyTop","getBoundingClientRect","stickyAddToCartBottom","buttonType","_this","accessType","$addToCartButton","lastPosition","interval","setInterval","currentPosition","clearInterval","base","Modal","accessFocus","openFromBuyButton","footerElement","clientHeight","navigationCountry","MutationObserver","WebKitMutationObserver","mutations","className","includes","observe","subtree","attributes","fixLayoutForModalOpen","liveChatDisable","fixLayoutForModalOpenSize","fixLayoutForModalClose","loggedCustomerEmail","uploadFormRequestSize","liveChatEnable","fadeIn","fadeOut","visibility","liveChatPositionMove","topValue","liveChatElement","liveChatPositionReset","closeModal","modalTarget","dataset","closeSizeChartModal","openSizeChartModal","mod","totHeigth","eventCategory","eventAction","selectpicker","updateSizeListLook","checkSize","$size","$RequestSize","updateSizeList","recommendationSlider","arialabelPrev","arialabelNext","arrowNext","arrowPrev","slidesContainer","accessibility","dotsClass","appendDots","removeWishlistinRecommendation","uploadSuccesPage","$selector","succesPageHtml","updatePrice","loadVideo","$videoContainer","videoURL","zoomElement","zoomCounter","imageToZoom","fullResolution","sixeClass","fullResolutionSrcSet","srcset","$zoomedImage","outerContent","innerContent","scrollLeft","show3D","$wannaIframe","isMobileOrTablet","replace","URLSearchParams","search","set","newURL","pathname","pushState","eventLabel","extra","isInSticky","pdpMobileExpanded","modalOffsetTop","$liveChat","modal","onShow","onClose","open","close","analyticsOwn","openSizeSelector","performOpenSizeSelector","contains","dataLayer","openStickySelector","newAriaExpanded","isCurrentModalOpen","isSizeBtn","$modal","originalEvent","openStickySelectorLook","updateAttributesAndDetails","attributesHtml","requestSizeHtml","shortDescription","longDescription","showSpinner","updateAttribute","skuWColor","colorAttr","newPDP","queryString","completeUrl","querySelectorAll","video","endPoint","updateAddToCart","applePayButton","manageApplePayButtonApperance","closeSizeChart","sizeOverlay","mobile","initializeSize","autoSelectForOneSize","addToCartAutomatic","click","positionStickyElement","scrollTimer","closeAllOpenSubwindow","stickyTouched","not","clearTimeout","$sticky","visibleCheckElement","getElementsByClassName","isAddToCartVisible","stickyCanAppear","isFooterVisible","stickyIsOpen","chatBottom","$stickyOverlay","$stickyColor","has","setIdForModalDialogattributes","ariaDescribedBy","ariaLabelledby","$wishListMessage","newAriaDescribedByWish","newAriaLabelledbyWish","setNumberPageCarouselReccomandation","slideTosho","currentSlide","totalSlide","slideCount","loadRecommendations","openRequestSizeFromPlp","openRequestSize","overlay","urlGetParameter","strokeClose","ajaxData","ecomSize","sizehtml","$stickyModal","_this2","labels","innerText","_open","_previouslyFocussedElement","_config","removeEventListener","_onKeyDown","$grecaptcha","dispatchEvent","CustomEvent","detail","submitRequestSize","readyToSubmit","Deferred","trim","isSpam","done","serialize","sizeChart","buttonPressed","buttonID","$prodSizeChart","dataType","share","heightPage","heightSocialListLink","copyLink","fixStickybarHidingOnClick","_this3","now","Date","analyticsGoToDetail","iterator","constructor","include","keys","socialNetwork","socialAction","socialBaseLink","socialTarget","observer","attributeFilter","freeGlobal","freeSelf","self","root","Function","_defineProperties","configurable","writable","_toPropertyKey","toPrimitive","TypeError","String","Number","_toPrimitive","custom","a","_classCallCheck","_onKeyDownFn","assign","keyCode","_trapFocus","_registerEvents","apply","isObject","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","global","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","slice","trimmedEndIndex","reTrimStart","string","reWhitespace","charAt","baseGetTag","isObjectLike","getRawTag","objectToString","symToStringTag","objectProto","nativeObjectToString","isOwn","tag","unmasked","debounce","updateSuccessPage","setButtonAttribute","$button","targets","$select","$dropdown","fixLayoutForModalBoutiqueOverlayClose","openContactUsModal","page","submitContactUsModal","productID","information","dimension23","dimension24","openFindInStoreModal","sizeText","preselectSize","selectedSize","sizes","parentElement","selectSizeFindInStore","searchFindInStore","modalClose","selectedCountry","countryCode","analyticsCallStore","productId","filterSize","boutiqueId","boutique","boutiqueName","analyticsBookAppointment","updateListOfStores","listOfStoresHtml","filterListOfStores","submitFindInStoreModal","selectedNation","selectedBoutique","openHelpWithSizeModal","submitHelpWithSizeModal","g","displayMessage","status","statusSuccessClass","statusErrorClass","messageModalDiv","colorId","msg","updateHeartIcon","fill","$heart","getSelectedVariantPid","addToWishlist","pidButton","variantPid","optionId","optionVal","checkProductInWishlist","updateWishlistButton","uuid","removeFromCartUrl","onClick","$btn","isStiky","$sizeBtn","createOrder","$bundleItem","items","$elOption","urlValue","selectedValueId","getOptions","addProductForPDPbtnFlow","cart","Error","pliUUID","actionUrls","removeProductLineItemUrl","onApprove","orderID","$defer","getCartPurchaseUnit","_ref2","parsedPurchaseUnit","amount","paypalOrderID","validateShipping","countryMatchError","redirectUrl","billingStep","continueUrl","urlParams","ID","token","orderToken","encodeURIComponent","cartPage","onCancel","Buttons","render","replaceOrAddQueryParam","parameter","regex","RegExp","getQueryParams","qs","decodeURIComponent","params","newUrl"],"mappings":"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","file":"productDetailNew.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 = 285);\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden]),a[href],input,[tabindex=\"0\"]';\n\nfunction focuseOnModal (selector, focusOnClose, selectorfadeOut) {\n $(selector).on('keydown', function(event) {\n let focusableNodes = $(selector).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n if (key === 27) { // close popUp on ESC\n // re-activate background elements if previously disabled\n if ($(document.body).is('[aria-hidden=\"true\"][aria-disabled=\"true\"]')) {\n $(document.body).removeAttr('aria-hidden aria-disabled');\n }\n\n // $(selectorfadeOut).fadeOut();\n $(selectorfadeOut).addClass('d-none');\n setTimeout(function() {\n $(focusOnClose).focus();\n }, 0);\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n if ($('body').hasClass('veiled')) $('body').removeClass('veiled');\n }\n });\n};\n\nfunction trapFocus(element) {\n $(element).trigger('keydown');\n}\n\nfunction iterateFocusOnPage() {\n $('body').on('keydown', function(event) {\n let focusableNodes = $('body').find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const key = event.which;\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1 && key !== 13) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n });\n};\n\nfunction focusOnFirstElement(selector) {\n $(selector).find(FOCUSABLE).each(function() {\n if ($(this).hasClass('d-none')) {\n return true;\n } else {\n $(this).focus();\n return false;\n }\n });\n};\n\nfunction disableBackgroundElements(selector) {\n // accessibility: disable everything on page except the modal content\n $(document.body).attr({\n 'aria-hidden': 'true',\n 'aria-disabled': 'true'\n });\n\n $(selector).attr({\n 'aria-hidden': 'false',\n 'aria-disabled': 'false'\n });\n};\n\nmodule.exports = {\n focuseOnModal: focuseOnModal,\n iterateFocusOnPage: iterateFocusOnPage,\n focusOnFirstElement: focusOnFirstElement,\n trapFocus: trapFocus,\n disableBackgroundElements: disableBackgroundElements\n};\n","'use strict';\nvar firstError = true;\n\nvar scrollAnimate = require('../components/scrollAnimate');\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n* shouldValidate: function,\n* formSubmit: boolean\n* }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event, config = {}) {\n var valid = true;\n\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n if (! config.shouldValidate) valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).find('input, select, textarea:not(.g-recaptcha-response)').each(function () {\n if (config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n\n invalidateForm(this, event, config);\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n }\n }\n }\n\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n\n if (errorFields.length) {\n var $form = $(event.target);\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n }\n return valid;\n}\n\n/**\n * Validate form fields\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n * shouldValidate: function,\n * formSubmit: boolean\n * }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateFields(event, config) {\n var valid = true;\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).each(function () {\n if (config && config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n // invalidation also for captcha field\n $(this).trigger('invalid', {validity: this.validity, config: config});\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n break;\n }\n }\n }\n $(this).closest('.cc-content-input').attr('data-validation-result', 'invalid');\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n\n $(this).closest('.cc-content-input').attr('data-validation-result', 'valid');\n }\n });\n\n if (errorFields.length) {\n var $form = $(this).closest('form');\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-select.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $('.alert', form).remove();\n}\nfunction invalidateForm (object, e, config={}) {\n if (e) e.preventDefault();\n if (!$(object).attr('data-no-oriental') === 'false') {\n object.setCustomValidity('');\n }\n if (!object.validity.valid) {\n var validationMessage = object.validationMessage;\n $(object).addClass('cc-error');\n if ($(object).hasClass('cc-select')) {\n $(object).parent().addClass('cc-error');\n }\n if (object.validity.patternMismatch && $(object).data('pattern-mismatch')) {\n validationMessage = $(object).data('pattern-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n if ((object.validity.rangeOverflow || object.validity.rangeUnderflow)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if ((object.validity.tooLong || object.validity.tooShort)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if (object.validity.valueMissing && $(object).data('missing-error')) {\n validationMessage = $(object).data('missing-error');\n }\n if (object.validity.typeMismatch && $(object).data('type-mismatch')) {\n validationMessage = $(object).data('type-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n $(object).parents('.cc-form-group').find('.cc-feedback-message').children('.cc-text-message')\n .eq(0).text(validationMessage);\n\n $(this).closest('.cc-content-input').attr('data-validation-result', '');\n \n if (firstError) {\n if (!config.skipFocus) {\n scrollAnimate($(object), {center: true, scrollableParent: config.scrollableParent});\n ($(object) || $('.logo-home')).focus();\n }\n firstError = false;\n }\n }\n}\nmodule.exports = {\n invalid: function () {\n $(document).on('invalid', 'form input, form select', function (e, data) {\n invalidateForm(this, e, data ? data.config : null);\n });\n $('.cc-next-step-button').on('click', function() {\n firstError = true;\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e, {formSubmit: true});\n });\n },\n\n focusOut: function () {\n $('form input:not(.js-datepicker)').on('focusout', function (event) {\n if ($(this).hasClass('js-prevent-validation')) {\n return;\n } else if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n $(document).on('changed.bs.select', 'select', function (event) {\n if (! $(this).val()) return;\n\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n $(this).removeClass('cc-error');\n }\n }\n var found = $(this).parent().parent().children('.cc-feedback-message').children('.cc-text-message').text('').length;\n if (! found) {\n $(this).closest('.cc-form-group').find('.cc-feedback-message .cc-text-message').text('');\n }\n }\n });\n $('input[type=\"radio\"]').on('click change', function (event) {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n $(this).closest('.d-flex').siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n });\n },\n\n validateContactUsPDPform: function() {\n $(document).on('click', '#submitContactUs', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRequesSizePDPform: function() {\n $(document).on('click', '.js-requestsize-button', function(e) {\n if ($(this.form).find('select#requestSize-size').val() === '') {\n $(this.form).find('select#requestSize-size').each(function () {\n var errorText = $(this).data('noitems');\n this.setCustomValidity(errorText);\n });\n }\n return validateForm.call(this.form, e);\n });\n },\n validateFindInStorePDPform: function() {\n $(document).on('click', '.js-submit-findInStore', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validatecontactOrderform: function() {\n $(document).on('click', '.js-submit-orderInfo', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateHelpWithSizeform: function() {\n $(document).on('click', '#helpWithSize-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateLoginOfCanvas: function() {\n $(document).on('click', 'form#loginOfCanvas .js-login-offcanvas', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRepairFormMyAccount: function() {\n $(document).on('click', 'form#repairForm-MyAccount .js-submit-repairForm', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateGenericCusForm: function() {\n $(document).on('click', '.js-genericCus-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRegistration: function() {\n $(document).on('click', 'form.registration button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n\n $(document).on('click', 'form.registrationemail button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateOverlayNewsletter: function() {\n // clear privacy consent error message when needed\n $(document).on('click', '.js-form-overlay-newsletter .js-privacyShopping[value=\"true\"]', function() {\n var $form = $(this.form);\n $('.js-privacy-error', $form).addClass('cc-invisible');\n });\n\n const isPrivacyConsentGranted = function($form) {\n var $privacyField = $('.js-privacyShopping[value=\"true\"]', $form);\n return !! ($privacyField.length && $privacyField.is(':checked'));\n }\n\n const areLinesSelected = function($form) {\n var $lines = $('.cc-newsletter-form-preferences', $form);\n return !! ($lines.length && $('.cc-checkbox:checked', $lines).length);\n }\n\n\n $(document).on('click', '.js-form-overlay-newsletter button[type=\"submit\"]', function(e){\n var $form = $(this.form);\n var $scrollableParent = $form.closest('.cc-overlay-info');\n\n // clear backend error messages\n $('.js-backend-errors .cc-text-message', $form).addClass('cc-invisible');\n var isFirstStep = $form.hasClass('js-form-overlay-newsletter-step1'); // this class is added only to image-two-steps modal\n\n // check privacy consent only if lines are selected ( only on second step with image-two-steps modal )\n if (!isFirstStep && areLinesSelected()) {\n var privacyGranted = isPrivacyConsentGranted($form);\n if (! privacyGranted) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n var $errorMsg = $('.js-privacy-error', $form);\n $errorMsg.removeClass('cc-invisible');\n scrollAnimate($errorMsg, {scrollableParent: $scrollableParent});\n validateForm.call(this.form, e, {scrollableParent: $scrollableParent})\n return false;\n }\n }\n\n return validateForm.call(this.form, e, {scrollableParent: $scrollableParent});\n });\n },\n validateFields: function (fields, config) {\n if (fields) {\n return validateFields.call(fields, null, config);\n }\n },\n // validateResetPwdOfCanvas: function() {\n // $(document).on('click', 'form.cc-resetpwd-form-offCanvas .js-resetPwd-request', function(e) {\n // return validateForm.call(this.form, e);\n // });\n // },\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n noOrientalCheck: function () {\n $(document).on('focusout', '.js-no-oriental', function () {\n if ($(this).data('oriental-error') != undefined) {\n var validationMsg = $(this).data('oriental-error');\n var regex = /^[a-zA-Z0-9 -_\\/(){}|\"!? ’'‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]+$/;\n var value = $(this).val();\n var valid = regex.test(value);\n if (value && value !== '') {\n if (!valid) {\n $(this)\n .addClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text(validationMsg);\n this.setCustomValidity(validationMsg);\n $(this).attr('data-no-oriental', false);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this)\n .removeClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text('');\n this.setCustomValidity(\"\");\n $(this).attr('data-no-oriental', true);\n }\n }\n }\n }\n });\n },\n validateRequestAppointmentform: function() {\n $(document).on('click', 'form #js-submit-Appointment', function(e) {\n e.currentTarget = $(this).closest('form#appointment');\n return validateForm.call(this.form, e);\n });\n },\n\n validateAppointmentformUser: function() {\n $(document).on('click', '.js-update-customerForm form .js-validate-form', function(e) {\n e.currentTarget = $(this).closest('form');\n return validateForm.call(this.form, e);\n });\n },\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n validateContactUsform: function() {\n var hasClassVisible = function (el) {\n return $(el).parents('.cc-no-visible').length === 0;\n }\n \n return validateForm.call($('form#contactUs').get(0), /* event = */ null, {shouldValidate: hasClassVisible});\n },\n clearForm: clearForm\n }\n};\n","'use strict';\n\nvar _successCallback;\nvar _failCallback;\nvar _captchaID;\n\n(function(){\n var scriptToBeLoaded = document.querySelector('#tencentCaptchaScript[src]');\n if (! scriptToBeLoaded) {\n var script = document.querySelector('#tencentCaptchaScript:not([src])');\n if (script) {\n script.setAttribute('src', script.getAttribute('data-src'));\n }\n }\n})();\n\nfunction tencetCaptchaCallback(res) {\n if (res.ret === 0) {\n // successful verification\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(res.randstr);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(res.ticket);\n \n if (! res.errorCode) {\n if (_successCallback) {\n _successCallback({\n randstr: res.randstr,\n ticket: res.ticket\n });\n }\n \n } else { // error\n if (_failCallback) _failCallback();\n }\n } else {\n if (_failCallback) _failCallback();\n // console.log('errorCode:', res.errorCode, 'errorMessage:', res.errorMessage);\n }\n}\n\nfunction tencetCaptchaLoadingErrCallback(error) {\n if (_failCallback) _failCallback();\n}\n\nfunction showCaptcha (config = {}) {\n _captchaID = config.captchaID;\n _successCallback = config.success;\n _failCallback = config.fail;\n\n try {\n var captchaAppID = $('.js-tencentCaptchaAppID').val();\n var captcha = new TencentCaptcha(captchaAppID, tencetCaptchaCallback, {});\n captcha.show();\n } catch (error) {\n tencetCaptchaLoadingErrCallback(error);\n }\n}\n\nmodule.exports = {\n verify: function() {\n $.ajax({\n type: 'POST',\n url: $('input[name=\"tencent-captcha-verify-url\"]').val(),\n data: {\n randstr: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(),\n ticket: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(),\n },\n success: function(data) {\n if (data.success) {\n if (_successCallback) _successCallback(data);\n } else {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n },\n error: function(data) {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n });\n },\n\n /**\n * Check if the Tencent captcha script has already been loaded into the HTML.\n */\n isAlreadyLoaded: function() {\n return $('#tencentCaptchaScript').length;\n },\n\n /**\n * Show the Tencent captcha popup\n * @param {JQuery} $tencentCaptchaEl \n * @param {Promise} promise \n */\n initialize: function($tencentCaptchaEl, promise) {\n var $captchaInput = $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl);\n if ($captchaInput.length && ! $captchaInput.val()) {\n showCaptcha({\n captchaID: $tencentCaptchaEl.attr('data-id'),\n success: (data) => promise.resolve(data),\n fail: () => promise.reject()\n });\n } else {\n promise.resolve();\n }\n },\n\n /**\n * Invalidate the captcha element\n * @param {JQuery} $tencentCaptchaEl \n */\n invalidateCaptcha: function($tencentCaptchaEl) {\n $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl).val('');\n }\n}\n","const defaultStyle = {\n color: 'gold',\n shape: 'rect',\n layout: 'vertical',\n label: 'paypal',\n tagline: false\n};\n\n/**\n * Gets paypal button styles\n * @param {Element} button - button element\n * @returns {Object} with button styles or if error appears with default styles\n */\nfunction getPaypalButtonStyle(button) {\n try {\n const config = button.getAttribute('data-paypal-button-config');\n if (config) {\n const buttonConfigs = JSON.parse(config);\n return buttonConfigs.style;\n }\n } catch (error) {\n return {\n style: defaultStyle\n };\n }\n}\n\n/**\n * Get CSRF Token\n * @returns {string} - csrf token value\n */\nfunction getCsrfToken() {\n let $element = document.querySelector('[name=\"csrf_token\"]');\n\n if ($element && $element.value !== '') {\n return $element.value;\n }\n\n $element = document.querySelector('[data-tokenname=\"csrf_token\"]');\n\n if ($element && $element.getAttribute('data-token') !== '') {\n return $element.getAttribute('data-token');\n }\n\n return '';\n}\n\n/**\n * Add csrf token param to url\n * @param {string} url - source url\n * @returns {string} - url with csrf_token param\n */\nfunction getUrlWithCsrfToken(url) {\n const urlInstance = new URL(url);\n\n urlInstance.searchParams.append('csrf_token', getCsrfToken());\n\n return urlInstance.toString();\n}\n\nexport {\n getPaypalButtonStyle,\n getUrlWithCsrfToken\n};\n","var loaderInstance = require('./loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\n/**\n * Appends error message on cart page\n *\n * @param {string} message error message\n */\nfunction showCartErrorHtml(message) {\n $('.checkout-btn').addClass('disabled');\n $('.cart-error').append(\n `
\n \n ${message}\n
`\n );\n window.scrollTo(0, 0);\n}\n\n/**\n * Appends error message on billing checkout page\n *\n * @param {string} message error message\n */\nfunction showCheckoutErrorHtml(message) {\n document.querySelector('.error-message-text').textContent = '';\n document.querySelector('.error-message').style.display = 'block';\n document.querySelector('.error-message-text').append(message);\n window.scrollTo(0, 0);\n}\n\n/**\n * Updates information about an order\n *\n * @returns {Object} Call handling result\n */\nfunction updateOrderData() {\n loader.show();\n return $.ajax({\n url: window.paypalUrls.updateOrderData + '?isCartFlow=true',\n type: 'PATCH',\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: (err) => {\n loader.hide();\n var error = JSON.parse(err.responseText);\n showCartErrorHtml(error.errorMsg);\n if (error.transactionExpired) {\n location.reload();\n }\n }\n });\n}\n\n/**\n * Gets purchase units\n *\n * @returns {Object} with purchase units data\n */\nfunction getPurchaseUnits() {\n return $.get(window.paypalUrls.getPurchaseUnit)\n .then(({ purchase_units }) => purchase_units);\n}\n\n/**\n * Gets Billing Agreement Token\n *\n * @param {boolean} isCartFlow - billing agreement flow from cart\n * @returns {string} billingToken - returns a JSON response that includes token, an approval URL\n */\nfunction getBillingAgreementToken(isCartFlow = false) {\n return $.get(window.paypalUrls.createBillingAgreementToken + `?isCartFlow=${isCartFlow}`)\n .then((data) => data);\n}\n\n/**\n * Gets Billing Agreement\n * After buyer approval, you use a billing agreement token to create the agreement.\n *\n * @param {string} billingToken - billing agreement token\n * @returns {Object} JSON response body that includes the billing agreement ID,\n * the state of the agreement, which is ACTIVE, and information about the payer\n */\nfunction createBillingAgreementCall(billingToken) {\n return $.ajax({\n url: window.paypalUrls.createBillingAgreement,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({ billingToken })\n });\n}\n\n/**\n * Gets Order Details\n *\n * @param {string} orderId - billing agreement token\n * @returns {Object} JSON response body that includes payer email\n */\nfunction getOrderDetailsCall(orderId) {\n return $.get(window.paypalUrls.getOrderDetails + `?orderId=${orderId}`)\n .then((data) => data);\n}\n\n/**\n * Create billing formData from fields data\n *\n * @param {Object} fieldsData - fields data values\n * @param {Elemtn} $paypalButton - paypal button selector\n * @returns {Object} cart billing form data\n */\nfunction createCartBillingFormData(fieldsData, $paypalButton) {\n var cartBillingFormData = new FormData();\n if (!$paypalButton) {\n $paypalButton = document.querySelector('#paypal_pdp_image') || document.querySelector('#paypal_image');\n }\n var cartBillingFields = $paypalButton && JSON.parse($paypalButton.getAttribute('data-paypal-billing-form-fields'));\n\n Object.entries(cartBillingFields).forEach(entry => {\n const [key, field] = entry;\n if (typeof field === 'object') {\n cartBillingFormData.append(field.name, fieldsData && fieldsData[key] ? fieldsData[key] : field.value);\n }\n });\n\n return cartBillingFormData;\n}\n\n/**\n * Calls to returnFromCart endpoint, redirects to place order stage or shows error if it exists\n *\n * @returns {Object} Call handling result\n */\nfunction returnFromCart() {\n loader.show();\n let cartBillingFormData = createCartBillingFormData();\n\n return $.ajax({\n url: window.paypalUrls.returnFromCart,\n type: 'POST',\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: function (err) {\n loader.hide();\n showCartErrorHtml(err.responseText);\n }\n });\n}\n\n/**\n * Call finishLpmOrder endpoint\n * @param {Object} details billing address details\n * @returns {Promise} ajax call\n */\nfunction finishLpmOrder(details) {\n const lpmName = document.querySelector('#usedPaymentMethod').value;\n const paypalMethodId = document.querySelector('#paypalMethodId').value;\n return $.ajax({\n url: window.paypalUrls.finishLpmOrder,\n type: 'POST',\n contentType: 'application/json',\n data: JSON.stringify({\n details,\n lpmName,\n paypalMethodId\n })\n });\n}\n\n/**\n * @returns {string} paypal order id\n */\nfunction getPaypalOrderId() {\n const helper = require('./helper');\n\n var orderId = $.ajax({\n url: helper.getUrlWithCsrfToken(window.paypalUrls.getPaypalOrderId),\n type: 'GET',\n contentType: 'application/json',\n async: false\n }).responseJSON.id;\n\n return orderId;\n}\n\nmodule.exports = {\n updateOrderData,\n getPurchaseUnits,\n getBillingAgreementToken,\n createBillingAgreementCall,\n getOrderDetailsCall,\n returnFromCart,\n showCartErrorHtml,\n showCheckoutErrorHtml,\n finishLpmOrder,\n createCartBillingFormData,\n getPaypalOrderId\n};\n","'use strict';\n\nfunction scrollToElement(element, options = {}) {\n var {center, offset, focus, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (element && element.length) {\n if (element.length > 1) {\n element = element.eq(0);\n }\n var position = element.offset().top || 0;\n if (! position) {\n position = element.parent().length ? element.parent().offset().top : 0\n }\n\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (offset) {\n position = position * offset;\n }\n \n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position },\n {\n duration: duration || 500,\n complete: () => {\n setTimeout(() => {\n if (focus) {\n element.focus();\n }\n if (disableScroll) {\n $('body').removeClass('prevent-user-scroll');\n }\n }, 500);\n }\n }\n );\n } else {\n $('.logo-home, .cc-logo-link').eq(0).focus();\n }\n }, delay || 0);\n}\n\n\nfunction scrollToPosition(position, options = {}) {\n var {center, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position || 0 },\n {\n duration: duration || 500,\n complete: () => {\n if (disableScroll) {\n setTimeout(() => {\n $('body').removeClass('prevent-user-scroll'); \n }, 500);\n }\n }\n }\n );\n }, delay || 0);\n}\n\n/**\n * Scrolls smoothly to an element or a position\n * @param {JQuery | number} elementOrPosition jquery element or position\n * @param {{\n* center: boolean,\n* offset: number,\n* focus: boolean,\n* disableScroll: boolean,\n* duration: number,\n* delay: number,\n* scrollableParent: JQuery\n* }} options\n*/\nfunction scroll(elementOrPosition, options = {}) {\n if (typeof elementOrPosition === 'number') {\n var position = parseInt(elementOrPosition);\n scrollToPosition(position, options);\n } else {\n var element = elementOrPosition;\n if (! element instanceof jQuery) {\n element = $(element);\n }\n scrollToElement(element, options);\n }\n}\n\nmodule.exports = scroll;","'use strict';\nvar { appendToUrl } = require('../common/urlUtil');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n let pid = $('.product-detail').data('pid');\n return pid;\n}\n\n/**\n * Retrieves the quantity that should be added to the cart. As per design, it is always 1\n * @return {string} - 1\n */\nfunction getQuantitySelected() {\n return '1';\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {boolean} attr.values.selected - Flag as to whether the attribute is currently selected\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n\n if (attrValue.selected) {\n $attrValue.addClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n const buildSrcSet = (imageSet) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1) * 100) + 'w';\n }).join(',');\n };\n $('.js-selected-color')\n .attr('src', attrValue.images.swatch[0].url)\n .attr('srcset', buildSrcSet(attrValue.images.swatch[0].resizedUrls));\n\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.removeClass('hidden');\n }\n } else {\n $attrValue.removeClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').empty();\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.addClass('hidden');\n }\n }\n\n if (attrValue.url) {\n // Gets the part of the size for remove it (inbetween the 'size=' and the next '&'\n var url = attrValue.url;\n var sizeStartIndex = url.indexOf('_size=');\n if (sizeStartIndex > 0) {\n var sizeEndIndex = sizeStartIndex + 6;\n var partOne = url.substring(0, sizeEndIndex);\n var partTwo = url.substring(sizeEndIndex);\n var eIndex = partTwo && partTwo.length > 0 ? partTwo.indexOf('&') : -1;\n var partTwoMod = '';\n if (eIndex > 0) {\n partTwoMod = partTwo.substring(eIndex);\n }\n var finalUrl = partOne + partTwoMod;\n $attrValue.attr('data-url', finalUrl);\n } else {\n $attrValue.attr('data-url', attrValue.url);\n }\n } else {\n $attrValue.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n // $attrValue.prop('disabled', !attrValue.selectable);\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selected - Flag as to whether an attribute is currently selected\n * @param {boolean} attr.values.isOnlyOneLeft - Flag as to whether an attribute has limited availability\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n let attributeSelector = '[data-attr=\"' + attr.id + '\"]';\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find(attributeSelector + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue\n .prop('disabled', false)\n .removeClass('cc-active')\n .removeClass('cc-request-size');\n\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $attrValue.addClass('cc-request-size');\n }\n if (attrValue.selected) {\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1 && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n $attrValue.data('value', attrValue.url);\n $attrValue.addClass('cc-active');\n let size = $('.cc-prod-functional-info').length > 0\n ? $('.cc-prod-functional-info').find('.js-size-value').text()\n : $('.cc-pdp__content-attributes').find('.js-size-value').text();\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n } else {\n $attrValue.addClass('cc-active');\n }\n } else {\n $attrValue.data('value', attrValue.url);\n }\n $attrValue.find('.js-limited-availability').addClass('hidden');\n $attrValue.removeClass('col-6 col-md-8');\n $attrValue.addClass('col-12');\n $attrValue.parent().find('.js-check-availability').addClass('hidden');\n\n if (attrValue.isOnlyOneLeft) {\n $attrValue.find('.js-limited-availability').removeClass('hidden');\n }\n if (attrValue.online) {\n $attrValue.parent('.cc-size-container').removeClass('hidden');\n } else {\n $attrValue.parent('.cc-size-container').addClass('hidden');\n }\n\n if (!attrValue.selectable) {\n $attrValue.removeClass('col-12');\n $attrValue.addClass('col-6 col-md-8');\n $attrValue.parent().find('.js-check-availability').removeClass('hidden');\n $attrValue.parent().find('.js-check-availability').parent().removeClass('hidden');\n }\n\n if (attrValue.hideNotifyMeProduct) {\n $attrValue.parent().find('.js-check-availability').parent().addClass('hidden');\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object[]} attrs - Attribute\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n // TODO: rivedere il comportamento\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the images shown in page from response containing images.\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateImages(imgs, $productContainer) {\n const buildSrcSet = (imageSet, prevArrStartIndex) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1 + prevArrStartIndex) * 200) + 'w';\n }).join(',');\n };\n let $imageContainer = $productContainer.find('.js-image-list');\n\n // Read the template for the images shown in the list\n const imgTemplate = document.getElementById('image-template').innerHTML;\n for (var i = 0; i < imgs.length; i++) {\n var $imagesDivs = $imageContainer.find('.cc-content-image');\n var singleImage = $imagesDivs.get(i);\n var $ResizedUrlsFirstSource = (imgs[i].resizedUrls).splice(0, 3);\n var $ResizedUrlsSecondSource = (imgs[i].resizedUrls);\n if (singleImage) {\n var $picture = $(singleImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n } else {\n var cloneImage = $imagesDivs.get(i - 1);\n $(cloneImage).clone().appendTo($imageContainer);\n $imagesDivs = $imageContainer.find('.cc-content-image');\n cloneImage = $imagesDivs.get(i);\n var $picture = $(cloneImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n }\n }\n var imgLength = $imageContainer.find('.cc-content-image').length;\n if (imgs.length < imgLength) {\n var $imagesOld = $imageContainer.find('.cc-content-image');\n for (var j = (imgLength - 1); j > (imgs.length - 1); j--) {\n var oldimg = $imagesOld.get(j);\n $(oldimg).remove();\n }\n }\n}\n\nfunction updateVideo($productContainer, htmlVideo, position) {\n let $videoContainerVertical = $productContainer.find('.js-image-list').find('.cc-content-video:not(\".cc-only-mobile\")');\n let $videoContainerHorizontalDesktop = $productContainer.find('.cc-pdp__video-horizontal-desktop');\n let $videoContainerHorizontalMobile = $productContainer.find('.cc-content-video.cc-only-mobile');\n var ImageandVideoContainer = $productContainer.find('.js-image-list');\n if ($videoContainerVertical.length > 0) {\n if (position === 'vertical') {\n $videoContainerVertical.replaceWith(htmlVideo);\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n } else if ($videoContainerHorizontalDesktop.length > 0 || $videoContainerHorizontalMobile.length > 0) {\n if (position === 'vertical') {\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $videoContainerHorizontalDesktop.replaceWith(desktopVideo);\n $videoContainerHorizontalMobile.replaceWith(mobileVideo);\n }\n } else {\n if (position === 'vertical') {\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n }\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {Object} response.product.price - Price object related to the product\n * @param {Object} response.product.price.html - HTML rendering of the price object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object} response.product.images - Product images\n * @param {Object[]} response.product.images.large - Product images in large format\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {Object} response.resources - Translation object\n * @param {boolean} imagesCanChange - if the images can change\n * @param {jQuery} $productContainer - DOM element for a given product.\n **/\nfunction handleVariantResponse(response, $productContainer, imagesCanChange) {\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n }\n\n if (imagesCanChange) {\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n updateImages(primaryImageUrls, $productContainer);\n if (response.product.hasHorizontalVideo) {\n if (response.product.videoH.CLDvideoHURL !== $('.cc-pdp__video-horizontal-desktop .cc-video-hotizontal source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'horizontal');\n }\n } else if (response.product.hasVerticalVideo) {\n if (response.product.videoV.CLDvideoVURL !== $('.js-image-list .cc-content-video source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'vertical');\n }\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n }\n }\n\n // Update pricing\n var $priceSelector = $('.js-prices .js-price', $productContainer).length\n ? $('.js-prices .js-price', $productContainer)\n : $('.js-prices .js-price');\n $priceSelector.replaceWith(response.product.price.html);\n\n updateAvailability(response, $productContainer);\n\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n if (imagesCanChange) {\n var imgVal = $('#js-pv-image').val();\n let $imageContainer = $productContainer.find('.js-image-list');\n $imageContainer.find('.cc-content-image').find('picture source').attr('srcset', imgVal);\n }\n\n // cites on variation group, checking cites value on color selection\n if (data.product.enableDisclaimerShipment && $('.js-disclaimer-shipment').length) {\n $('.js-disclaimer-shipment').removeClass('d-none');\n } else if (!$('.js-disclaimer-shipment').hasClass('d-none')) {\n $('.js-disclaimer-shipment').addClass('d-none');\n }\n\n // pfas on variation group/variant\n if (data.product.pfas && $('.js-banner-pfas').length) {\n $('.js-banner-pfas').removeClass('d-none');\n } else if (!$('.js-banner-pfas').hasClass('d-none')) {\n $('.js-banner-pfas').addClass('d-none');\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n handleVariantResponse(data, $productContainer, imagesCanChange);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectSizeLook(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n $('.js-product-detail-look').data('pid', data.product.id);\n $('button.add-to-cart').data('disabled', (!data.product.readyToOrder || !data.product.available));\n\n $.spinner().stop();\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectLook(selectedValueUrl) {\n if (selectedValueUrl) {\n var url = $('.js-select-single-tile-look').data('href');\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n var pid = data.product.sku;\n var dat = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: dat,\n method: 'GET',\n success: function (response) {\n if (response.stickyBar) {\n $('.js-sticky-look-container').html(response.stickyBar);\n }\n },\n error: function(err) {\n }\n });\n // handleVariantResponse(data, $productContainer, imagesCanChange);\n // $('body').trigger('product:afterAttributeSelect',\n // { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nfunction performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, onSuccess, onError, customFrom) {\n var data = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var masterPid = $('.js-master-pid').val();\n if (addToCartUrl) {\n $.spinner().start();\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: data,\n success: function (data) {\n // handlePostCartAdd(data);\n $.spinner().stop();\n if (onSuccess != null) {\n // analytics\n\n // get product by pid\n var totPid = pid;\n var generalPid;\n if (data.skuMaster) {\n generalPid = data.skuMaster;\n } else if (masterPid) {\n generalPid = masterPid;\n } else if (data.productColor) {\n var split = totPid.split(data.productColor);\n if (split) {\n generalPid = split[0];\n }\n }\n\n // get product -> js-analytics-impressions-product-initialized prevent minicart elements to be selected\n var selectorPrefix = '.js-analytics-impressions-product-initialized.js-analytics-click-product-info-';\n // after categorization by var group, multiple product wish same generalPid exist and previous could be taken sending wrong color to analytics\n var product = $(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]');\n\n if (product.length <= 0) {\n // if generalPid and product Color combination not exist trying to extract from pid - size TODO: pid concatenation\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n } else if (product.length > 1) {\n // it should happen when slick slider active due to multiple slide existence\n product = $(product[0]);\n }\n\n if (customFrom) {\n product.attr('data-sticky', customFrom);\n }\n\n $('body').trigger('analytics:pushAddToCart', product);\n\n // END\n // update live content\n $('.js-mini-cart-update').text(data.addToCartLiveContent);\n\n onSuccess(data);\n }\n },\n error: function () {\n $.spinner().stop();\n if (onError != null) {\n onError();\n }\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice', function (e) {\n // When the user clicks on one color inside the stickybar selection, change the aria-label of the selected color.\n $('.cc-content-thumb-color-sticky').attr(\"aria-label\", $(this).attr(\"data-accessibility-change\"));\n\n if ($(this).hasClass('js-color-choiche-sticky-look')) {\n attributeSelectLook($(this).attr('data-url'));\n } else {\n e.preventDefault();\n $(document).find('.js-image-list .cc-image').removeClass('lazyload');\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n colorAttributeLook: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice.js-color-choiche-sticky-look', function (e) {\n window.scrollTo(0, 0);\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n });\n },\n\n selectAttribute: function () {\n $(document).on('click', '.js-select-size', function (e) {\n e.preventDefault();\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n if ($(this).closest('.cc-content-size-choice-sticky').hasClass('js-select-size-sticky-look')) {\n attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n $('.js-upload-size').find('.js-size-container').removeClass('cc-active');\n $('.js-upload-size').find('.js-select-size').removeClass('cc-active');\n $(this).addClass('cc-active');\n $(this).parent().addClass('cc-active');\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n $('.js-sticky-choice-look').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // $productContainer = $(e.currentTarget).closest('.js-sticky-look-container');\n // attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n } else {\n attributeSelect($(e.currentTarget).data('value'), $productContainer, false);\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n // 4Gift action url after size select\n var colorSelect = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n performAddToCart: function (target) {\n var addToCartUrl;\n var pid;\n var pidsObj;\n\n $('body').trigger('product:beforeAddToCart', target);\n\n pid = getPidValue($(target));\n if (!pid) {\n pid = $(target).data('pid');\n };\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = getQuantitySelected($(target));\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var newStickyAddToCartButton = '';\n if (window.isMobile && $(target).closest('.cc-pdp__info').length) {\n var isStickyTop = $(target).closest('.cc-pdp__info').hasClass('cc-pdp__info--top');\n if (isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_top_macro';\n }\n var isMicroSticky = $(target).hasClass('js-went-micro-button');\n if (isMicroSticky) {\n newStickyAddToCartButton = 'sticky_bar_top_micro';\n $(target).removeClass('js-went-micro-button');\n }\n if (!isMicroSticky && !isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_bottom';\n }\n } else {\n newStickyAddToCartButton = $(target).attr('data-sticky');\n }\n\n $(target).trigger('updateAddToCartFormData', form);\n\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, newStickyAddToCartButton);\n },\n\n performAddToCartLook: function(target) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n },\n\n addToCart: function () {\n var t = this;\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n if ($(this).hasClass('js-add-to-cart-sticky-look')) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n } else {\n t.performAddToCart(this);\n }\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl,\n performAddToCartCall: performAddToCartCall\n};\n","/* eslint-disable require-jsdoc */\nmodule.exports = function (containerElement) {\n function Constructor() {\n this.containerEl = containerElement;\n }\n Constructor.prototype.show = function () {\n this.containerEl.style.display = 'block';\n };\n Constructor.prototype.hide = function () {\n this.containerEl.style.display = 'none';\n };\n return new Constructor();\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","'use strict';\n\nvar processInclude = require('./util');\nvar _throttle = require('lodash/throttle');\nvar stickyScrolling = false;\nvar _stickyExpanded = false;\nvar _scrollDirection = null;\nvar _userTouching = false;\nvar _scrollAnimation = false;\n\nvar initPaypalButton = require('/cartridges/custom_paypal/cartridge/client/default/js/pdp/initPdpButton');\nif (document.querySelector('.js_paypal-content')) {\n const paypalUrls = document.querySelector('.js_paypal-content').getAttribute('data-paypal-urls');\n window.paypalUrls = JSON.parse(paypalUrls);\n}\n/* detect if device is iOS for disable paypal Button in pdp */\nfunction isSafariBrowser() {\n var safari = false;\n var ua = navigator.userAgent.toLowerCase();\n if (ua.indexOf('safari') !== -1) {\n if (ua.indexOf('chrome') > -1) {\n safari = false;\n } else {\n safari = true;\n }\n }\n return safari;\n}\nconst getMobileOS = () => {\n const ua = navigator.userAgent;\n if (/android/i.test(ua)) {\n return 'Android';\n } else if (/iPad|iPhone|iPod/.test(ua) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {\n return 'iOS';\n }\n return 'Other';\n};\n\n/**\n * Injects SDK into page for cart/minicart\n*/\nfunction injectPaypalSDK() {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.onload = function () {\n initPaypalButton.default();\n };\n script.src = window.paypalUrls.cartSdkUrl;\n script.setAttribute('data-partner-attribution-id', window.paypalUrls.partnerAttributionId);\n head.appendChild(script);\n}\nfunction injectAjaxPaypalSDK(cartSdkUrl, partnerAttributionId) {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.async = true;\n script.type = 'text/javascript';\n script.onload = function () {\n initPaypalButton.default();\n };\n script.src = cartSdkUrl;\n script.setAttribute('data-partner-attribution-id', partnerAttributionId);\n head.appendChild(script);\n}\n\nfunction liveChatPositionStikyDownNewPDP() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '16px',\n top: '',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px',\n top: ''\n });\n }\n};\n\nfunction liveChatPositionStikyUpNewPDP() {\n var stikyHeight = $('.cc-pdp__info').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '192px',\n top: '',\n right: '16px'\n });\n } else if (window.isTablet) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n top: '',\n right: '30px'\n });\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n top: '',\n right: '30px'\n });\n }\n};\n\nfunction stickyUp (scrolling) {\n stickyScrolling = true;\n var stickyPos = $(document).find('.cc-pdp__info').offset().top;\n $(document).find('header.js-header').addClass('cc-header-sticky');\n let headerHeight = $(document).find('header.js-header.cc-header-sticky').outerHeight();\n var finalPosition = stickyPos - headerHeight;\n $('.cc-pdp__wrp').css({ 'margin-top': -finalPosition + 'px' });\n setTimeout(() => {\n $(document).trigger('stickyup-finished');\n }, 500);\n $(document).find('.cc-pdp__info').addClass('cc-pdp__info--top');\n _stickyExpanded = true;\n stickyScrolling = false;\n $('html, body').css('overscroll-behavior', 'contain');\n // close open modals\n $('.cc-pdp__stickymobile .js-sticky-choice.cc-open').trigger('click');\n liveChatPositionStikyDownNewPDP();\n\n // analytics\n var pid = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n 'event': 'custom_event',\n 'eventCategory': 'Product Detail Box',\n 'eventAction': 'open',\n 'eventLabel': pid\n });\n return finalPosition;\n}\n\nfunction stickyCollapse () {\n _scrollDirection = null;\n $('.cc-pdp__wrp').css({ 'margin-top': '' });\n $('.js-product-recommendations').css('margin-top', '');\n $('.cc-pdp__info').removeClass('cc-pdp__info--top');\n $(document).scrollTop(0);\n setTimeout(() => {\n $(document).trigger('stickycollapse-finished');\n }, 500);\n $('body').addClass('cc-blocked');\n // hide resume if showing\n $('.cc-pdp__resume-mobile').removeClass('cc-pdp__resume-mobile--fixed');\n $('.js-header').removeClass('cc-header-sticky');\n $('body').css('overscroll-behavior', '');\n $('.cc-pdp__content-title').css('margin-top', '');\n\n // close open modals\n $('.cc-pdp__stickymobile .js-sticky-choice.cc-open').trigger('click');\n liveChatPositionStikyUpNewPDP();\n\n if (_stickyExpanded) {\n // analytics\n var pid = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n 'event': 'custom_event',\n 'eventCategory': 'Product Detail Box',\n 'eventAction': 'close',\n 'eventLabel': pid\n });\n }\n _stickyExpanded = false;\n}\n\nfunction imageListHeight () {\n let headerHeight = $('header.js-header').outerHeight();\n let stickyHeight = $('.cc-pdp__info__btn-top').outerHeight() + $('.cc-pdp__info__focus').outerHeight();\n let viewportHeight = window.innerHeight;\n if (window.isMobile) {\n var imageListHeight = viewportHeight - stickyHeight - headerHeight + 10;\n $('.cc-pdp__images .cc-pdp__image-list').css('height', imageListHeight + 'px');\n }\n}\n\nfunction setFocusOnFirstRelatives(){\n $(document).find('.js-pdp-variant-link.cc-standard-image').first().focus();\n}\n\n\nfunction makeAccessible(isOnLoading, element){\n \n // Customize the aria-label on the sticky banner. On page load, get the active varion and set the appropriate aria-label\n // On varion click (else), get the clicked element information and update the aria-label on the sticky banner button\n\n var selectedColorInSticky = $('.cc-content-thumb-color-sticky');\n if (isOnLoading){\n var selectedColor = $('.js-color-choice.cc-color-choice.cc-active');\n var accessibilityColorName = selectedColor.data('accessibility-value');\n var accessibilityColorValue = selectedColor.data('attr-value');\n var oldAriaLabel = selectedColorInSticky.attr('aria-label');\n var newAccessibleAriaLabel = oldAriaLabel + \" \" + accessibilityColorName + \" \" + accessibilityColorValue;\n } else {\n var accessibilityColorName = element.data('accessibility-value');\n var accessibilityColorValue = element.data('attr-value');\n var defaultAriaLabel = selectedColorInSticky.data('accessibility-value');\n var newAccessibleAriaLabel = defaultAriaLabel + \" \" + accessibilityColorName + \" \" + accessibilityColorValue;\n }\n \n selectedColorInSticky.attr('aria-label', newAccessibleAriaLabel);\n}\n\n$(document).ready(function () {\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./product/detailNew'));\n processInclude(require('./product/wishlist'));\n processInclude(require('./product/contactPdp'));\n processInclude(require('./components/socialList'));\n if (window.isMobile) {\n // add custom class to header\n $('.js-header').addClass('js-header-newpdp');\n // when reloading, do not use previous scroll position. Always start from the top.\n window.history.scrollRestoration = 'manual';\n window.addEventListener('beforeunload', () => window.scrollTo(0, 0));\n\n // block scrolling\n $('body').addClass('cc-blocked');\n // set heigth image list\n\n setTimeout(imageListHeight, 750);\n }\n\n // On page load, change the aria-label of the sticky to the selected color\n makeAccessible(true, null);\n\n // Everytime the users clicks a variation, update che aria-label of the sticky button\n $(\".js-make-accessible\").on(\"click\", function() {\n makeAccessible(false, $(this));\n });\n\n $(\".cc-pdp__accordion__btn\").on(\"keypress\", function(event) {\n if (event.key === \"Enter\") {\n // $(this) is the h2 tag\n const targetId = $(this).attr(\"aria-controls\"); \n const ariaExpandedValue = $(this).attr(\"aria-expanded\");\n \n // targetElement is the div under the h2\n const targetElement = document.getElementById(targetId); \n\n if(ariaExpandedValue === \"true\"){\n $(this).attr('aria-expanded', \"false\");\n $(this).addClass(\"collapsed\");\n targetElement.classList.remove('show');\n targetElement.classList.add('collapse');\n } else {\n $(this).attr('aria-expanded', \"true\");\n $(this).toggleClass(\"collapsed\");\n targetElement.classList.add('show');\n targetElement.classList.remove('collapse');\n }\n }\n });\n\n // Using Tab or Shift+Tab on SHIPPING AND RETURN section \n $(\".js-shipment\").on(\"keydown\", function(e) {\n if (e.key === \"Enter\") {\n \n const ariaExpandedValue = $(this).attr(\"aria-expanded\");\n if(ariaExpandedValue === \"true\"){\n var elementsWithClass = $('.js-handle-tabindex');\n elementsWithClass.each(function(index, element) {\n $(element).attr('tabindex', '-1');\n });\n } else {\n var elementsWithClass = $('.js-handle-tabindex');\n elementsWithClass.each(function(index, element) {\n $(element).attr('tabindex', '0');\n });\n }\n } else {\n if ($(window).width() >= 768) {\n e.preventDefault();\n // Set focus on PACKAGING

    using Shift+Tab\n if (e.shiftKey && e.key === 'Tab') {\n $('[data-target=\"#pdpAccordion4\"]').focus();\n } else if (e.key === 'Tab') {\n // 1. Check if the section \"SHIPPING AND RETURNS\" is not expanded.\n var ariaExpanded = $(this).attr('aria-expanded');\n if (ariaExpanded === 'true') {\n // If true, set focus on the first js-handle-tabindex\n $('.js-handle-tabindex').first().focus();\n } else {\n // If closed, check if the sticky banner is visible\n if ($('.cc-sticky-add-to-cart.cc-open').length > 0) {\n $(document).find('.cc-content-thumb-color-sticky').focus(); // Set focus on Color\n } else {\n setFocusOnFirstRelatives();\n }\n }\n } \n }\n } \n });\n\n\n // Apply Javascript only on Desktop and Tablet devices\n if ($(window).width() >= 768) {\n\n // Handling focus from \"RETURN PROCEDURE PAGE\" link in \"SHIPPING AND RETURNS\". \n $('.js-handle-tabindex:eq(1)').on('keydown', function(e) {\n if (e.shiftKey && e.key === 'Tab'){\n e.preventDefault();\n $(document).find('.js-handle-tabindex:eq(0)').focus(); // Set focus on Size\n } else if (e.key === 'Tab') {\n e.preventDefault();\n if ($('.cc-sticky-add-to-cart.cc-clearfix.js-sticky-add-to-cart.cc-open').length > 0) {\n $(document).find('.cc-content-thumb-color-sticky').focus(); // Set focus on Color\n } else {\n setFocusOnFirstRelatives();\n }\n }\n });\n \n // If \"Color\" on focus and pressing Shift+Tab, return on SHIPPING AND RETURN

    \n $(\".cc-content-thumb-color-sticky\").on(\"keydown, click\", function(e) {\n if (e.shiftKey && e.key === 'Tab') {\n e.preventDefault();\n $('[aria-controls=\"pdpAccordion6\"]').focus();\n }\n });\n\n // Handling ADD TO CART focus on Sticky Banner\n $('.js-change-focus-add-to-cart').on(\"keydown\", function(e) {\n if (e.shiftKey && e.key === 'Tab'){\n e.preventDefault();\n $(document).find('.cc-size-choice-button-sticky').focus(); // Set focus on Size\n } else if (e.key === 'Tab') {\n e.preventDefault();\n setFocusOnFirstRelatives();\n }\n });\n }\n\n\n \n // da aggiungere controllo su esistenza paypal\n var isIos = getMobileOS() === 'iOS';\n if (! isIos && (! isSafariBrowser() || window.isDesktop)) {\n var addToCartHeigth = $(document).find('.cc-addtocart-buttons .cc-pdp-add-button').height();\n if ($(document).find('.js-checkpaypal-enable').data('ppdisable') && window.paypal) {\n injectPaypalSDK();\n // resolve extraspace\n $(document).find('.cc-content-addtocart .paypal_pdp_button').css('height', addToCartHeigth + 'px');\n $('.js-paypal-fake').parents('.cc-content-button').removeClass('d-none');\n } else {\n var url = $(document).find('.js-checkpaypal-enable').data('urlgetpaypal');\n $.ajax({\n url: url,\n method: 'GET',\n success: function (data) {\n if (data.isPdpButtonEnabled) {\n injectAjaxPaypalSDK(data.cartSdkUrl, data.partnerAttributionId);\n // resolve extraspace\n $(document).find('.cc-content-addtocart .paypal_pdp_button').css('height', addToCartHeigth + 'px');\n $('.js-paypal-fake').parents('.cc-content-button').removeClass('d-none');\n }\n }\n });\n }\n }\n\n // fix applepay button\n if ($('.cc-apple-pay-pdp').is(':visible')) {\n $('.js-applepay-fake').parents('.cc-content-button').removeClass('d-none');\n if (! window.isDesktop) {\n $('.cc-pdp__add-to-cart .paypal_pdp_button').addClass('d-none');\n }\n }\n\n // initialize colors slider\n if ($('.cc-pdp .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.cc-pdp .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.cc-pdp .cc-content-colors-choice-sticky .cc-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: false,\n autoplay: false,\n focusOnSelect: true,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 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 if (!window.isMobile) {\n $(document).find('.js-remove-sticky').remove();\n }\n if (window.isMobile) {\n // keep track of scrolling direction\n $(document).on('touchstart', function (eventStart) {\n var startY = eventStart.touches[0].clientY;\n $(document).on('touchmove', _throttle(function (eventMove) {\n _userTouching = true;\n var moveY = eventMove.touches[0].clientY;\n if (moveY < startY) _scrollDirection = 'down';\n else if (moveY > startY) _scrollDirection = 'up';\n else _scrollDirection = null;\n startY = moveY;\n // _scrollDirection = moveY < startY ? 'down' : 'up';\n }, 100, { trailing: false, leading: true }));\n\n $(document).one('touchend', function() {\n _userTouching = false;\n });\n });\n\n // dont scroll sticky when scrolling size selector\n $(document).on('touchmove', '.js-selectSize', function(e) {\n e.stopPropagation();\n if (_stickyExpanded) {\n document.body.style.overflow = 'hidden';\n $('.cc-pdp__stickymobile').data('touched', true);\n }\n });\n\n $(document).on('click', '.cc-pdp__info__btn-top', function(e) {\n e.stopImmediatePropagation();\n if (!$('.cc-pdp__info').hasClass('cc-pdp__info--top')) {\n $('.cc-pdp__info__btn-top').attr('aria-expanded', 'true');\n stickyUp(false);\n } else {\n $('.cc-pdp__info__btn-top').attr('aria-expanded', 'false');\n stickyCollapse();\n }\n });\n\n // scroll event on last image\n $(document).on('touchmove', '.js-image-list', _throttle(function () {\n if (_scrollAnimation || _scrollDirection !== 'down') return;\n var imageListHeight = $(document).find('.js-image-list')[0].offsetHeight;\n var imageListScrollTop = $(document).find('.js-image-list')[0].scrollTop;\n var imageListScrollHeight = $(document).find('.js-image-list')[0].scrollHeight;\n if (imageListHeight + imageListScrollTop >= imageListScrollHeight -1) {\n _scrollAnimation = true;\n stickyUp(false);\n }\n }, 100));\n\n // disable touch events when overscrolling (safari < 16.0)\n $(document).on('scroll', function (){\n if (! _stickyExpanded) return;\n if (document.documentElement.scrollTop < 0) document.body.style.touchAction = 'none';\n else document.body.style.touchAction = '';\n });\n\n // collapse sticky when over-scrolling the sticky upwards\n $(document).on('touchstart', function(e) {\n if (_stickyExpanded) {\n if (document.documentElement.scrollTop < 10) {\n $('.cc-pdp__content-title').css('margin-top', '25px');\n document.documentElement.scrollTo(0, 10);\n $('.cc-pdp__stickymobile').data('touched', true);\n }\n\n $(document).on('touchmove.from-sticky-to-imgs', function() {\n if (_userTouching && _scrollDirection === 'up' && document.documentElement.scrollTop < 30) {\n document.body.style.overflow = 'hidden';\n document.body.style.touchAction = 'none';\n stickyCollapse();\n }\n });\n\n // disable on touchend\n $(document).one('touchend', ()=> {\n $(document).off('touchmove.from-sticky-to-imgs');\n document.body.style.overflow = '';\n document.body.style.touchAction = '';\n setTimeout(() => {\n $('.cc-pdp__stickymobile').removeData('touched');\n }, 1000);\n });\n }\n });\n\n // restore scrolling when sticky up finishes\n $(document).on('stickyup-finished', function () {\n $('body').removeClass('cc-blocked');\n _scrollAnimation = false;\n });\n\n // scroll down on minimized sticky\n $(document).on('touchmove', '.cc-pdp__info:not(.cc-pdp__info--top)', _throttle(function() {\n if (_scrollDirection === 'down' && !_scrollAnimation && !_stickyExpanded) {\n _scrollAnimation = true;\n stickyUp(false);\n }\n }, 100));\n\n // fix sticky when scrolling down\n var header = $('.js-header')[0];\n var sticky = $('.cc-pdp__info')[0];\n var stickyButtonHeight = $('.cc-pdp__info__btn-top').height();\n var stickyAddToCart = $('.cc-pdp__add-to-cart')[0];\n var resume = $('.cc-pdp__resume-mobile')[0];\n var resumeHeight = $(resume).height();\n liveChatPositionStikyUpNewPDP();\n\n $(document).on('scroll', _throttle(function (e) {\n var headerHeight = header.offsetHeight;\n var stickyTop = sticky.getBoundingClientRect().top;\n\n if (_stickyExpanded && stickyTop > header.offsetHeight) {\n // scrolling up to the images from sticky expanded\n // $(sticky).removeClass('cc-pdp__info--top');\n // hide resume if showing\n $(resume).removeClass('cc-pdp__resume-mobile--fixed');\n // _stickyExpanded = false;\n } else if (_stickyExpanded) {\n // hide or show resume\n var stickyAddToCartBottom = stickyAddToCart.getBoundingClientRect().bottom;\n\n if (_scrollDirection === 'down') {\n // show resume\n if (stickyAddToCartBottom <= headerHeight + stickyButtonHeight) {\n $(resume).addClass('cc-pdp__resume-mobile--fixed');\n }\n } else if (_scrollDirection === 'up') {\n // hide resume\n if (stickyAddToCartBottom >= headerHeight + stickyButtonHeight + resumeHeight) {\n $(resume).removeClass('cc-pdp__resume-mobile--fixed');\n }\n }\n }\n }, 50));\n\n $(document).on('click', '.js-newpdp-resume-addtocart, .js-paypal-fake, .js-applepay-fake', function(e) {\n var accessType = 'sticky-bar-top-micro';\n var buttonType;\n if ($(this).is('.js-paypal-fake')) buttonType = 'paypal';\n else if ($(this).is('.js-applepay-fake')) buttonType = 'applepay';\n $('#size-modal-sticky,#size-overlay').data('analyticsowner', buttonType);\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n if ($addToCartButton.data('disabled')) {\n _scrollDirection = null;\n // var finalPosition = stickyUp(false);\n var finalPosition = 0;\n $(document).scrollTop(finalPosition);\n $('.cc-pdp__resume-mobile').removeClass('cc-pdp__resume-mobile--fixed');\n var lastPosition = $(document).scrollTop();\n var interval = setInterval(() => {\n var currentPosition = $(document).scrollTop();\n if (currentPosition === finalPosition || currentPosition === lastPosition) {\n clearInterval(interval);\n // open size selector\n setTimeout(() => {\n if ($(this).is('.js-newpdp-resume-addtocart')) {\n $addToCartButton.trigger('click', {accessType});\n } else {\n $('.cc-pdp__stickymobile .js-sticky-choice').trigger('click', {accessType});\n }\n }, 100);\n } else {\n lastPosition = $(document).scrollTop();\n }\n }, 100);\n } else {\n // size already selected\n if ($(this).hasClass('js-newpdp-resume-addtocart')) {\n $addToCartButton.addClass('js-went-micro-button');\n }\n $addToCartButton.trigger('click', {accessType});\n }\n });\n\n $('body').on('product:afterAttributeSelect', function () {\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n if ($addToCartButton.data('disabled')) {\n $('.cc-pdp__resume-mobile').find('.js-paypal-fake, .js-applepay-fake').css('pointer-events', 'auto');\n $('.cc-pdp__resume-mobile').find('.cc-paypal-hidden, .cc-applepay-hidden').addClass('d-none');\n } else {\n $('.cc-pdp__resume-mobile').find('.js-paypal-fake, .js-applepay-fake').css('pointer-events', 'none');\n $('.cc-pdp__resume-mobile').find('.cc-paypal-hidden, .cc-applepay-hidden').removeClass('d-none');\n }\n });\n }\n});\n","'use strict';\nvar base = require('./base');\nconst Modal = require('../modalUtilities');\nvar accessFocus = require('../accessibilityFocus');\nvar openFromBuyButton = false;\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\nconst navigationCountry = $('.page').attr('data-navigation-country');\n\nif (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\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 if (window.isMobile) {\n var stickyHeight = $('.cc-sticky-add-to-cart').height();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: $(document).find('.cc-pdp').length > 0 ? '192px' : stickyHeight + 24,\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});\nobserver.observe(document, {\n subtree: true,\n attributes: true\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\n if ($('body').is('.cc-safari')) {\n $('.js-fake-apple-pay').addClass('hidden');\n $('.js-apple-pay').removeClass('hidden').css('display','block');\n }\n } else {\n $('.js-fake-apple-pay').removeClass('hidden');\n $('.js-apple-pay').addClass('hidden').css('display', '');\n }\n};\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-pdp__info').css('z-index', '10');\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 $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 fixLayoutForModalOpenSize() {\n $('.cc-pdp__info').css('z-index', '10');\n liveChatDisable();\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-pdp__info').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 uploadFormRequestSize() {\n $('.js-form-control-requestsize').fadeIn();\n $('.js-success-page-requestSize').fadeOut();\n}\n\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\n\nfunction liveChatPositionMove(top) {\n $('.helpButton, #embeddedMessagingConversationButton').each(function() {\n var topValue = top - $(this).height() - 15;\n var upperLimit = 100;\n $(this).css('top', topValue + 'px');\n if (topValue < upperLimit) {\n liveChatDisable();\n }\n });\n}\n\nfunction liveChatElement() {\n return $('.helpButton, #embeddedMessagingConversationButton').eq(0);\n}\n\nfunction liveChatPositionReset() {\n $('.helpButton, #embeddedMessagingConversationButton').each(function() {\n if (this.style.top) {\n $(this).css('top', '');\n\n if ($(this).is(':hidden')) {\n liveChatEnable();\n }\n }\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-pdp__info').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-pdp__info').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-pdp__info').css('z-index', '10');\n\n // analytics\n $(document).trigger('analytics:dataLayerPushObj', {\n event: 'sizeChart',\n eventCategory: 'Size Chart',\n eventAction: 'open'\n });\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};\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\nfunction updateSizeList () {\n var sku = $('.product-detail').data('pid');\n var color = $('.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 = $('.js-checkSize-' + el.value);\n var $RequestSize = $('.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 $('.cc-size-list .cc-size-container').removeClass('cc-active');\n $('.cc-size-list button.cc-active').parent().addClass('cc-active');\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\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 $('.cc-product-recommendations .cc-product-tile button.js-add-to-wishlist').remove();\n}\n\n\n// show success messagge for size requests\nfunction uploadSuccesPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\n\nmodule.exports = {\n updatePrice: function () {\n var pid = $('.product-detail.cc-pdp').attr('data-pid');\n $(document).trigger('product:updatePrices', [pid]);\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 zoomElement: function () {\n var zoomCounter = 0;\n $('body').on('click', '.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 $.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 $('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 // Accessibility\n $('body').on('keypress', '.js-zoom', function (e) {\n if(e.key === \"Enter\") {\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 $.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 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 } else {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n }\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 show3D: function () {\n $(document).on('click', '.js-show-product-3d', function() {\n var $wannaIframe = $('#wanna3dIframe');\n if (! $wannaIframe.attr('src')) {\n var isMobileOrTablet = window.isMobile || window.isTablet;\n var url = $wannaIframe.attr('data-src');\n url = url.replace('retrieve_viewmode', isMobileOrTablet ? 'mobile' : 'desktop');\n $wannaIframe.attr('src', url);\n }\n // show 3d modal\n $('.cc-pdp__3dView').removeClass('d-none');\n $('body').addClass('cc-blocked');\n\n // push history state\n var searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"view\", \"3dmodel\");\n var newURL = `${window.location.pathname}?${searchParams.toString()}`;\n history.pushState(undefined, '', newURL);\n\n // hide modal on history popstate\n $(window).one('popstate', function() {\n $('.cc-pdp__3dView').addClass('d-none');\n $('body').removeClass('cc-blocked');\n });\n\n var id = $('.product-detail').data('pid');\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: '3D Preview',\n eventAction: 'open',\n eventLabel: id,\n accessType: 'pdp'\n });\n });\n },\n addToCart: function () {\n $('body').on('click', 'button.add-to-cart', function (e, extra) {\n e.stopPropagation();\n if ($('.add-to-cart').data('disabled')) {\n let isInSticky = !!$(e.currentTarget).closest('.js-sticky').length || window.isMobile;\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\n var pdpMobileExpanded = window.isMobile && $('.cc-pdp__info--top').length;\n var modalOffsetTop = $(modalTarget).offset().top;\n if (! pdpMobileExpanded) {\n liveChatPositionMove(modalOffsetTop);\n } else {\n var $liveChat = liveChatElement();\n if ($liveChat.length) {\n var liveChatBottom = $liveChat[0].getBoundingClientRect().bottom;\n var modalBottom = $(modalTarget)[0].getBoundingClientRect().bottom;\n if (liveChatBottom < modalBottom) {\n liveChatPositionMove(modalOffsetTop);\n }\n }\n }\n if (! window.isMobile) {\n liveChatDisable();\n }\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 = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n\n // new analytics parameter: accessType\n if (extra && extra.accessType){\n var accessType = extra.accessType;\n $('#size-modal-sticky').data('accessType', accessType);\n } else {\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n $('#size-modal-sticky').data('accessType', accessType);\n }\n var analyticsOwn = 'add to cart';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\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 (!$('.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 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, extra) => {\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 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 // new analytics parameter: accessType\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n if (!$('#size-modal-sticky').data('accessType')) {\n $('#size-modal-sticky').data('accessType', accessType);\n }\n if (extra || $('#size-modal-sticky').data('accessType')) {\n accessType = extra? extra.accessType : $('#size-modal-sticky').data('accessType');\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n });\n $('body').on('click', '.js-fake-apple-pay.js-desktop', (e) => {\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: 'applepay'\n });\n $('#size-overlay').data('analyticsowner', 'applepay');\n performOpenSizeSelector(e);\n });\n $('body').on('click', '.js-fake-apple-pay.js-mobile', (e) => {\n var id = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: 'applepay'\n });\n $('#size-overlay').data('analyticsowner', 'applepay');\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 = $('.product-detail').attr('data-skumaster');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-overlay').data('analyticsowner');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: id + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n $('#size-overlay').removeData('analyticsowner');\n });\n },\n openStickySelector: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice', function (e, extra) {\n\n // Change aria-expanded of button color on click\n var button = $(this).find('.cc-content-thumb-color-sticky');\n var currentAriaExpanded = button.attr('aria-expanded');\n var newAriaExpanded = (currentAriaExpanded === 'true') ? 'false' : 'true';\n button.attr('aria-expanded', newAriaExpanded);\n\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n if (! isCurrentModalOpen) {\n updateSizeList();\n }\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 liveChatPositionReset();\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 // new analytics parameter: accessType\n if (extra && extra.accessType){\n var accessType = extra.accessType;\n $('#size-modal-sticky').data('accessType', accessType);\n } else if ($('#size-modal-sticky').data('accessType')){\n accessType = $('#size-modal-sticky').data('accessType');\n } else {\n if ($('body:not(.cc-mobile)').length) {\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n var accessType = 'pdp-sticky-top-macro';\n } else {\n var accessType = 'pdp-sticky-bottom';\n }\n $('#size-modal-sticky').data('accessType', accessType);\n }\n\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\n var pdpMobileExpanded = window.isMobile && $('.cc-pdp__info--top').length;\n var modalOffsetTop = $($modal).offset().top;\n if (! pdpMobileExpanded) {\n liveChatPositionMove(modalOffsetTop);\n } else {\n var $liveChat = liveChatElement();\n if ($liveChat.length) {\n var liveChatBottom = $liveChat[0].getBoundingClientRect().bottom;\n var modalBottom = $($modal)[0].getBoundingClientRect().bottom;\n if (liveChatBottom < modalBottom) {\n liveChatPositionMove(modalOffsetTop);\n }\n }\n }\n\n if (isSizeBtn) {\n if (!analyticsOwn || e.originalEvent !== undefined) {\n analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\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, // pid concatenation PDP\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 }\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 if ($('.product-detail .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.product-detail .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.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 dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n }\n } else if (isSizeBtn) {\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color, // pid concatenation PDP\n buttonType: analyticsOwn\n });\n $('#size-modal-sticky').removeData('analyticsowner');\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 showSpinner: function () {\n $('body').on('product:beforeAddToCart product:beforeAttributeSelect', function () {\n $.spinner().start();\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 liveChatPositionReset();\n\n // Close open modals\n if (openFromBuyButton) {\n var $addToCartButton = $('.cc-pdp__add-to-cart .add-to-cart');\n base.performAddToCart($addToCartButton);\n }\n if ($('#4giftButtonSizeNotSelected').val() === 'true') {\n $('body').trigger('product:afterAttributeSelect4gift');\n }\n\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged', { newPDP: true });\n\n if ($('.js-recommendationTemplate').length) {\n var url = $('#urlRecommendations').val();\n var queryString = window.location.search;\n var queryPid = queryString == '' ? '?pid=' : '&pid=';\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-product-recommendations [id^=\"cq_recomm_slot\"]').remove();\n $('.js-recommendationTemplate').html(data).removeClass('d-none');\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 if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n }\n });\n }\n });\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 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 $('.product-detail .cc-info-section').removeAttr('style');\n }\n });\n },\n initializeSize: function() {\n $(document).ready(function() {\n autoSelectForOneSize();\n });\n },\n addToCartAutomatic: function() {\n $(document).on('pdp:productDetailEventPushed', 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]).attr('data-sticky', 'automatic');\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]).attr('data-sticky', 'automatic');\n $($('button.add-to-cart')[0]).click();\n }\n }\n }\n });\n },\n positionStickyElement: function () {\n const closeAllOpenSubwindow = () => {\n var stickyTouched = $('.cc-pdp__stickymobile').data('touched');\n let $modals = $('.cc-sticky-add-to-cart, .cc-pdp__stickymobile').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n if (! $($(el).data('target')).not('#size-modal-sticky, #color-modal-sticky').length && !stickyTouched) {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n }\n });\n\n liveChatPositionReset();\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 }\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 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 = document.getElementsByTagName('footer')[0].getBoundingClientRect().top < viewportHeight;\n let stickyCanAppear;\n let stickyIsOpen = $sticky.hasClass('cc-open');\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n var $liveChat = $('.helpButton, #embeddedMessagingConversationButton');\n if (stickyCanAppear && !stickyIsOpen) {\n scrollTimer = setTimeout(() => { \n $sticky.addClass('cc-open').removeClass('cc-close').css('display', '');\n var chatBottom = parseInt($liveChat.css('bottom'));\n var stickyHeight = 50;\n var stickyBottom = 40;\n $liveChat.css('bottom', stickyHeight + stickyBottom + chatBottom + 'px');\n \n }, 250);\n }\n if (!stickyCanAppear && stickyIsOpen) {\n // Set aria-expanded to false on the btn color selection when sticky bar disappear\n $('.cc-content-thumb-color-sticky').attr('aria-expanded', 'false');\n $sticky.removeClass('cc-open').addClass('cc-close').css('display', 'none'); \n $liveChat.css('bottom', '');\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 setIdForModalDialogattributes: function() {\n $(document).ready(function() {\n // set dialog id selectsticky\n var ariaDescribedBy = $('.cc-size-choice-overlay-sticky').attr('aria-describedby');\n var ariaLabelledby = $('.cc-size-choice-overlay-sticky').attr('aria-labelledby');\n $('.cc-size-choice-overlay-sticky .cc-head-title').attr('id', ariaLabelledby);\n $('.cc-size-choice-overlay-sticky .js-change-for-stiky').attr('id', ariaDescribedBy);\n // set dialog id whishlistMesage\n var $wishListMessage = $('.cc-pdp__content-attributes .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 $('.cc-pdp__content-attributes .cc-add-to-wishlist-message .cc-prod-title').attr('id', newAriaLabelledbyWish);\n $('.cc-pdp__content-attributes .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 button selectsize stiky\n $('.cc-size-choice-overlay-sticky .js-open-size-chart').attr('id', 'size-chart-stiky');\n $('.cc-size-choice-overlay-sticky .js-open-helpWhitSize').attr('id', 'size-help-sticky');\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 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 = queryString == '' ? '?pid=' : '&pid=';\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 // handle iframes with no lazysizes library\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n }\n });\n }\n });\n }\n }\n });\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 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 = $('.product-detail').data('pid');\n var color = $('.js-color-choice.cc-active').data('attr-value');\n const ajaxData = {\n size: size,\n ecomSize: ecomSize,\n sku: sku,\n color: color\n }\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 \n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n $.spinner().start();\n $.ajax({\n url: urlGetParameter,\n method: 'POST',\n data: ajaxData,\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 var $grecaptcha = $(overlay + ' .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n }\n });\n });\n },\n submitRequestSize: function () {\n $(document).on('click', '.js-requestsize-button', function () {\n const readyToSubmit = $.Deferred();\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\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 if (!isSpam) {\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 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.responseJSON);\n }\n });\n });\n }\n });\n },\n // sizes help chart\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 $('.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\n if (window.isMobile) {\n var $prodSizeChart = $('#js-size-chart-content-mobile');\n var modalTarget = buttonPressed.data('target-mobile');\n } else {\n var $prodSizeChart = $('#js-size-chart-content');\n var 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 $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 // share button\n share: function () {\n $(document).on('click', '.cc-pdp .js-newpdp-openshare', function (e) {\n $('.cc-pdp__actions-desktop .cc-share-overlay').fadeIn();\n $(this).addClass('cc-share-background-overlay');\n accessFocus.focusOnFirstElement('.cc-share-overlay');\n accessFocus.focuseOnModal('.cc-share-overlay', '.cc-share-button-share', '.cc-share-overlay');\n e.stopPropagation();\n });\n\n $(document).on('click', '.cc-pdp .js-newpdp-openshare-mobile', function (e) {\n $('.js-whatsapp-link').attr('href', function() { this.href = this.href.replace('https://wa.me/?text=', 'whatsapp://send?text='); });\n $('body').css('overflow', 'hidden');\n $('.cc-mobile-content-share').css('display', 'block');\n $('.cc-sticky-add-to-cart').css('display', 'none');\n\n var heightSocialHead = 75;\n var top;\n var headerHeight = $('header').height();\n var heightPage = $(window).height();\n if (heightPage < 550) {\n top = headerHeight + heightSocialHead;\n } else {\n var heightSocialListLink = $('.cc-mobile-content-share .cc-social-link-mobile').height();\n var heightSocialListUl = $('.cc-mobile-content-share .cc-social-list-ul').height();\n var heightSocialList = heightSocialListUl + heightSocialListLink;\n top = heightPage - heightSocialList - heightSocialHead;\n }\n $('.cc-mobile-content-share').css('top', top);\n $(this).addClass('cc-share-background-overlay');\n e.stopPropagation();\n liveChatDisable();\n });\n\n // close share section mobile\n $(document).on('click', '.cc-pdp .cc-mobile-content-share .cc-mobile-close-share-button', function (e) {\n $('.cc-mobile-content-share').css('display', 'none');\n $('.cc-sticky-add-to-cart').css('display', 'block');\n $('.cc-pdp .js-newpdp-openshare-mobile').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n $('body').css('overflow', 'visible');\n e.stopPropagation();\n liveChatEnable();\n });\n\n // close share section desktop\n $(document).on('click', '.cc-pdp .cc-close-overlay-share-button', function (e) {\n $(this).closest('.cc-share-overlay').fadeOut();\n $('.cc-pdp .js-newpdp-openshare').removeClass('cc-share-background-overlay');\n var copyLink = $('.js-link-label').data('copy');\n $('.js-link-label').find('.js-social-text').text(copyLink);\n e.stopPropagation();\n // Accesibility, move focus back on Share btn\n $(\".cc-open-shareSection\").focus();\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 let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\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 stickyCanAppear;\n let stickyIsOpen = $sticky.hasClass('cc-open');\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n setTimeout(() => {\n if ($(this).attr('data-recent-click') === now) {\n $(this).attr('data-recent-click', '');\n }\n // check if the stickybar's position is still valid\n if (stickyCanAppear && !stickyIsOpen) {\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 }, 1000);\n });\n },\n\n // go to detail\n analyticsGoToDetail: function () {\n var pid = $(document).find('.cc-pdp').data('pid');\n $(document).on('click', '.js-goto-detail', function () {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'More detail Anchor',\n eventAction: 'pdp',\n eventLabel: pid\n });\n });\n }\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\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","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden=\"true\"]),a[href]';\n\nmodule.exports = class Modal {\n constructor (element, config, custom={}) {\n this.modal = element;\n this._onKeyDown = this._onKeyDownFn.bind(this);\n this._open = false;\n this._previouslyFocussedElement = null;\n this._config = Object.assign({ onShow: null, onClose: null }, config);\n this.custom = custom;\n }\n\n _trapFocus (event) {\n let focusableNodes = $(this.modal).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n };\n\n _onKeyDownFn(event) {\n if (event.keyCode === 27) { // ESC\n this.close();\n } else if (event.keyCode === 9) { // TAB\n this._trapFocus(event);\n }\n };\n\n _registerEvents() {\n const closeEvt = (e) => {\n e.stopPropagation();\n this.close();\n };\n $(this.modal).one('click', '.js-close', closeEvt.bind(this));\n document.addEventListener('keydown', this._onKeyDown);\n }\n\n open() {\n this._previouslyFocussedElement = document.activeElement;\n let $modal = $(this.modal);\n $('body').addClass('cc-blocked');\n $modal.removeClass('hidden').attr('aria-hidden', 'false');\n const focusFirstElementInModal = () => {\n let focusableNodes = $modal.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n focusableNodes[0].focus();\n };\n\n this._registerEvents();\n // We add the class in another frame in order to have the animation\n let t = this;\n setTimeout(function() {\n $modal.addClass('cc-open');\n focusFirstElementInModal();\n if (t._config.onShow) {\n t._config.onShow.apply(null, t.arguments);\n }\n }, 0);\n\n this._open = true;\n }\n\n close() {\n if (!this._open) {\n return;\n }\n if (this._previouslyFocussedElement) {\n let $modal = $(this.modal);\n $modal.removeClass('cc-open');\n $modal.one('transitionend', () => {\n if (! $modal.hasClass('cc-open')) {\n $modal.addClass('hidden').attr('aria-hidden', 'true');\n this._open = false;\n if (! $(this._previouslyFocussedElement).is('iframe')) {\n this._previouslyFocussedElement.focus();\n }\n }\n });\n if (this._config.onClose) {\n this._config.onClose.apply(null, arguments);\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n }\n }\n\n isOpen() {\n return this._open;\n }\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar Modal = require('../modalUtilities');\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} button - button that was clicked to add a product to the wishlist\n */\nfunction displayMessage(data, button) {\n const statusSuccessClass = 'alert-success';\n const statusErrorClass = 'alert-danger';\n var status;\n if (data.success) {\n status = statusSuccessClass;\n } else {\n status = statusErrorClass;\n }\n\n var messageModalDiv = '.js-wishlist-color-id-'.concat(data.colorId);\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 $('.cc-add-to-wishlist-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\n/**\n * fills or empties the PDP heart icon\n * @param {boolean} fill - true for filled the heart, false for empty heart\n */\nfunction updateHeartIcon(fill) {\n var $heart = $('.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/**\n * gets the pid for the selected:\n * - variation product (a variant with a color and a size)\n * - variation group (a variant with only a color)\n * - not the variation master (product without color and size)\n * @returns the pid of the selected variation product/group.\n */\nfunction getSelectedVariantPid() {\n var pid;\n var selectedSize = $('.js-select-size.cc-active').data('attr-value');\n if (selectedSize) {\n // use pid of the selected size and color variation\n if ($('.cc-product-detail').length){\n pid = $('.cc-product-detail').data('pid');\n } else {\n pid = $('.product-detail').data('pid');\n }\n } else {\n // calculate pid for the selected color variation (without size)\n var skuMaster = $('#skuMaster').val();\n var colorVariation = $('.js-color-choice.cc-active').attr('data-attr-value');\n pid = skuMaster + colorVariation; // pid concatenation wishlist\n }\n return pid;\n}\n\nmodule.exports = {\n addToWishlist: function () {\n $(document).on('click', '.js-add-to-wishlist', function (e) {\n e.preventDefault();\n var button = $(this);\n var url = $(this).data('href');\n var pid = $('#skuMaster').val();\n var pidButton = $(this).data('pid');\n var color = $(this).data('color');\n var colorId = $('.js-color-choice.cc-active').data('attr-value');\n\n var variantPid = getSelectedVariantPid();\n if (variantPid){\n pid = variantPid;\n } else {\n var size = $('.js-selected-size-socialList').val();\n\n if (color != null && color != undefined) {\n pid = pid.concat(color);\n }\n \n if (colorId != null && !pid.includes(colorId)) {\n pid = pid.concat(colorId);\n }\n \n if (size != null && size != undefined && size != '') {\n pid = pid.concat(size);\n } else {\n if (pidButton.includes(pid)) {\n pid = pidButton;\n }\n }\n }\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: pid,\n colorId: colorId,\n optionId: optionId,\n optionVal: optionVal\n },\n success: function (data) {\n $.spinner().stop();\n displayMessage(data, button);\n // fill heart and trigger update for number of items in wishlist badge.\n updateHeartIcon(true);\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 displayMessage(err, button);\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 modal.close();\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n $('.js-add-to-wishlist').removeAttr('disabled');\n });\n },\n\n checkProductInWishlist: function () {\n // get pid of current variation product or variation group\n var pid = getSelectedVariantPid();\n\n // perform ajax call to Wishlist-ContainsProduct\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);\n }\n }\n });\n },\n\n /**\n * when the selected product variant changes,\n * check if it exist within the customer wishlist\n */\n updateWishlistButton: function () {\n var self = this;\n $('body').on('wishlist:productVariantChanged', function() {\n self.checkProductInWishlist();\n });\n },\n};\n","import {\n showCartErrorHtml,\n createCartBillingFormData,\n getPaypalOrderId\n} from '../api';\nimport {\n addProductForPDPbtnFlow\n} from './pdpHelper';\nimport {\n getPaypalButtonStyle\n} from '../helper';\nconst { appendToUrl } = require('/cartridges/app_bc/cartridge/client/default/js/common/urlUtil');\n\n\nvar loaderInstance = require('../loader');\nvar $loaderContainer = document.querySelector('.paypalLoader');\nvar loader = loaderInstance($loaderContainer);\nvar pid;\nvar uuid;\nvar removeFromCartUrl;\n// var base = require('../base');\n\nfunction getAnalyticsAccessType() {\n var accessType;\n if ($('body:not(.cc-mobile)').length) {\n if ($(document.activeElement).parents('.js-sticky-add-to-cart').length) {\n accessType = 'pdp-sticky-bottom';\n } else {\n accessType = 'pdp';\n }\n } else if ($('.cc-pdp__info--top').length) {\n if ($('.cc-pdp__resume-mobile--fixed').length) {\n accessType = 'pdp-sticky-top-micro';\n } else {\n accessType = 'pdp-sticky-top-macro';\n }\n } else {\n accessType = 'pdp-sticky-bottom';\n }\n return accessType;\n}\n\n/**\n * Checks if a product variant is selected and opens the size selector otherwise.\n * Triggers analytics event.\n * \n * @returns {boolean} success\n */\nfunction onClick() {\n var $btn = $(document).find('button.add-to-cart');\n var isStiky = $(document.activeElement).closest('.cc-content-addtocart-sticky').length > 0;\n var accessType = getAnalyticsAccessType(); // analytics access type\n\n // check if product variant is selected\n if ($btn.data('disabled')) {\n if ($('body').hasClass('cc-mobile') || isStiky) {\n $('#size-modal-sticky').data('analyticsowner', 'paypal');\n var $sizeBtn = $('.js-size-sticky:visible');\n if (! $sizeBtn.length) $sizeBtn = $('.js-size-sticky').eq(0);\n $sizeBtn.trigger('click', {accessType});\n $('#paypalButtonSizeNotSelected').val('true');\n } else {\n $('#size-overlay').data('analyticsowner', 'paypal');\n $('.js-size-modal').click();\n $('#paypalButtonSizeNotSelected').val('true');\n }\n return false;\n } else {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'checkout',\n eventAction: 'fast',\n eventLabel: 'Paypal Express',\n accessType: accessType\n });\n }\n}\n\n/**\n * Gets order id as string\n *\n * @returns {string} order id\n */\nfunction createOrder() {\n loader.show();\n var res = addProductForPDPbtnFlow();\n \n if (res.cart) {\n uuid = res.pliUUID;\n removeFromCartUrl = res.cart.actionUrls.removeProductLineItemUrl;\n pid = res.pid;\n } else {\n loader.hide();\n throw new Error(res.message || 'Error occurs');\n }\n\n return getPaypalOrderId();\n}\n\n/**\n * Makes post call and transfers order ID to returnFromCart endpoint, goes to checkout place order stage\n *\n * @param {Object} orderID - order id\n */\nfunction onApprove({ orderID }) {\n // make sure that amount > 0\n var $defer = $.Deferred();\n $.get(window.paypalUrls.getCartPurchaseUnit)\n .then(function ({ purchase_units }) {\n let parsedPurchaseUnit = purchase_units[0];\n if (JSON.parse(parsedPurchaseUnit.amount.value) === 0) {\n showCartErrorHtml('Order total 0 is not allowed for PayPal');\n $defer.reject();\n } else {\n $defer.resolve();\n }\n })\n .fail(function(){\n $defer.reject();\n });\n\n\n let cartBillingFormData = createCartBillingFormData({\n paypalOrderID: orderID\n }, document.querySelector('.js_paypal_button_on_pdp_page'));\n\n $defer.done(function() {\n $.ajax({\n type: 'POST',\n url: window.paypalUrls.returnFromCart,\n contentType: false,\n data: cartBillingFormData,\n processData: false,\n success: () => {\n loader.hide();\n $.spinner().start();\n\n // validate shipping\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.validateShipping,\n success: (data) => {\n if (data.error && data.countryMatchError) {\n window.location.href = data.redirectUrl;\n } else {\n // validate billing\n $.ajax({\n type: 'GET',\n url: window.paypalUrls.billingStep,\n success: (data) => {\n var continueUrl = data.continueUrl;\n var urlParams = {\n ID: data.orderID,\n token: data.orderToken\n };\n \n continueUrl += (continueUrl.indexOf('?') !== -1 ? '&' : '?') +\n Object.keys(urlParams).map(function (key) {\n return key + '=' + encodeURIComponent(urlParams[key]);\n }).join('&');\n \n // redirect to TYP\n window.location.href = continueUrl;\n },\n error: (data) => {\n $.spinner().stop();\n // todo paypal: show billing error message\n }\n \n });\n }\n },\n error: function(data) {\n $.spinner().stop();\n // todo paypal: show shipping error message\n }\n });\n },\n error: function () {\n loader.hide();\n window.location.href = window.paypalUrls.cartPage;\n }\n });\n });\n}\n\n/**\n * Hides loader on paypal widget closing without errors\n * If PDP flow, removes product from basket on cancel\n */\nfunction onCancel() {\n var urlParams = {\n pid: pid,\n uuid: uuid\n };\n\n $.ajax({\n url: appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n loader.hide();\n}\n\n/**\n * Shows errors if paypal widget was closed with errors\n * If PDP flow, removes product from basket on error\n */\nfunction onError() {\n if (pid) {\n var productID = pid;\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n $.ajax({\n url: appendToUrl(removeFromCartUrl, urlParams),\n type: 'get',\n dataType: 'json',\n success: function () {\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n loader.hide();\n}\n\n/**\n *Inits paypal button on cart page\n */\nfunction initPaypalButton() {\n // if (!$(document).find('.js-4Gift-eneble').length > 0) {\n // $('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n \n // } else {\n // $(document).find('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n // }\n $(document).find('.cc-content-addtocart-sticky .cc-addtocart-buttons').addClass('cc-paypal-button-pdp');\n $(document).find('.cc-content-addtocart .cc-addtocart-buttons .add-to-cart').addClass('cc-custom-margin');\n $(document).find('.cc-content-addtocart .cc-addtocart-buttons .paypal_pdp_button ').addClass('cc-custom-margin');\n loader.show();\n $(document).find('.paypal-pdp-button').each(function () {\n window.paypal.Buttons({\n onClick,\n createOrder,\n onApprove,\n onCancel,\n onError,\n style: getPaypalButtonStyle(document.querySelector('.js_paypal_button_on_pdp_page'))\n }).render(this)\n .then(() => {\n loader.hide();\n });\n });\n $('body').on('product:afterAttributeSelectPayPal', function (e) {\n $('.paypal-button-label-container').click();\n });\n}\n\nexport default initPaypalButton;\n","\n/**\n * Adds product to basket on paypal button/static image click when PDP flow\n * @returns {Object} response with required data\n */\nfunction addProductForPDPbtnFlow() {\n var $bundleItem = $('.bundle-item');\n /**\n * Gets options\n * @param {Object} $productContainer - product container\n * @returns {string} options\n */\n function getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n }\n\n var pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n var $btn = $('.paypal_pdp_button');\n var $productContainer = $btn.closest('.product-detail');\n\n var form = {\n pid: pid,\n // quantity: $('.quantity-select').val()\n quantity: 1\n };\n\n if (!$bundleItem.length) {\n form.options = getOptions($productContainer);\n } else {\n var items = $bundleItem.map(function () {\n return {\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n };\n });\n form.childProducts = JSON.stringify(items.toArray());\n }\n var response = $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n response.pid = pid;\n return response;\n}\n\nexport {\n addProductForPDPbtnFlow\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":""}