{"version":3,"sources":["accesibility.ts","esignup.ts","late.ts","salesforce.ts","search.ts","utils.ts"],"names":["HAHAccessibility","_classCallCheck","this","_createClass","key","value","_ref","setFocusables","focusableElementsNL","containerHTMLElement","querySelectorAll","selectors","focusableElements","Array","from","filter","el","tabIndex","firstFocusableEl","lastFocusableEl","length","bindEventsToFocusableElements","forEach","element","addEventListener","eventHandler","unbindEventsToFocusableElements","unbindEvents","removeEventListener","container","closeElement","additionalCloseElements","tablistUpdateElements","triggerHTMLElement","firstElementToFocus","document","querySelector","closeHTMLElement","KEYCODE_TAB","e","stopPropagation","isTabPressed","keyCode","isEscapePressed","shiftKey","activeElement","focus","preventDefault","closeTrapFocus","altCloseHTMLElement","DEBUG_TRAP_FOCUS","console","log","updaterElement","_ref2","trigger","currentSlide","currentSlideIndex","Number","getAttribute","_index","title","parentNode","imageAltText","$","concat","attr","target","elementIndex","indexOf","click","getElementById","style","visibility","display","trapFocus","alert","logActiveElement","LOG_ACTIVE_ELEMENT","window","mainNavList","i","NavigationBar","navList","tablists","tabLists","TabsManual","FANCYBOX_VERSION","initADAForFancybox2","initADAForFancybox4","on","triggerElement","fancybox","afterShow","triggerElementId","includes","altDialogText","find","innerText","removeAttr","afterClose","openEffect","openSpeed","closeEffect","closeSpeed","nextEffect","nextSpeed","padding","margin","scrolling","autoSize","Fancybox","bind","once","done","children","fancyboxId","$container","setAttribute","trapFocusFancybox4","Thumbs","Toolbar","dragToClose","infinite","text","toLowerCase","replace","trim","newAltDialogText","removeAttribute","_defineProperty","navigationBar","menuItems","linkMenuItems","subMenuItems","subMenuItem","tabsManual","tabs","radioGroup","radioItems","groupNode","_this","navlistNode","currentLocation","location","href","push","firstMenuItem","lastMenuItem","j","_loop","onKeydown","call","_loop2","_j","k","_loop3","allNavLink","l","currentLink","indexMenu","_indexSubMenu","moveFocusToLink","indexSubMenu","subMenuLenght","str","match","character","linksArrToSearch","startIndex","name","startsWith","event","flag","moveFocusToPreviousLink","moveFocusToNextLink","moveFocusToPreviousSublink","moveFocusToNextSublink","moveFocusToFirstlink","moveFocusToLastlink","moveFocusTofatherlink","isPrintableCharacter","setFocusByFirstCharacter","tablistNode","firstTab","lastTab","tab","currentTab","moveFocusToTab","index","tgt","currentTarget","moveFocusToPreviousTab","moveFocusToNextTab","RadioGroup","_this2","radioOptNode","firstRadioItem","lastRadioItem","_loop4","currentRadio","indexRadio","moveFocusToRadio","moveFocusToPreviousRadio","moveFocusToNextRadio","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","h","f","Error","s","method","arg","delegate","maybeInvokeDelegate","TypeError","y","tryCatch","type","resultName","next","nextLoc","sent","_sent","dispatchException","abrupt","p","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","callInvokeWithMethodAndArg","invoke","_typeof","resolve","__await","then","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","obj","_toPropertyKey","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_toPrimitive","String","input","hint","prim","toPrimitive","res","ESignUp","sfSubscriptionApi","lambdaPayload","dialogObj","lbHideParams","cookieValue","elementIDs","region","timeZone","language","btnTxt","lightBoxInput","lightBoxBtn","footerInput","footerBtn","homePageInput","homePageBtn","lightBoxBackground","lightBoxCloseBtn","sweepsBtn","sweepsEmail","sweepsName","sweepsCheck","sweepsBonvoyCheck","landingPageSweepsBtn","landingPageSweepsEmail","landingPageSweepsName","landingPageSweepsBonvoyCheck","landingPageSweepsCheck","checkoutPageEmailInput","checkoutPageSubscribeCheck","addedToSalesforceTime","updatedOnSalesforceTime","_toggleEmailStatusInSalesforce","_callLambda","currDate","Date","Math","floor","getTimezoneOffset","toString","fadeOut","fadeIn","_callee","action","callback","payload","apiGatewayUrl","response","_data","_context","email","source","_ref2$showLightboxMes","showLightboxMessage","_ref2$name","_ref2$campaign","campaign","_ref2$callback","showLightbox","dilogBox","scrollTo","emailId","getTimeZone","data","fetch","headers","Content-Type","body","JSON","stringify","json","t0","_x","vars","search","substring","split","paramsPresent","CommonUtils","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","_callee2","emailStatus","agreeToReceiveEmails","dateInserted","dateUpdated","diffInMilliseconds","_context2","sessionStorage","setItem","SalesforceAbandonedCartUtils","setClientEmail","trackCart","callLambda","StatusCode","isActive","dataLayer","event_category","event_action","event_label","event_value","isUnsubscribed","Payload","parse","status","_unused","_unused2","now","abs","getTime","_unused3","_x2","_x3","_x4","checkoutPageSubscribeCheckbox","is","emailValue","val","sweepsChecked","validateSweeps","landingPageSweepsChecked","landingPageSweepsBonvoyChecked","grecaptcha","getResponse","hideLandingPageSweepsForm","inputControl","closest","addClass","_ref3","_callee3","_context3","getItem","_reject","_err","_yield$Promise","result","toggleEmailStatusInSalesforce","_x5","_ref4","_callee4","_context4","_yield$Promise2","_x6","template","outerWrap","pointsUnavailable","closeBtn","innerMain","innerSecondary","confirmBtn","appendTo","html","mainTxt","secondaryTxt","css","jQuery","inputWrappers","toggleClassOnFocus","parent","parentElement","classList","add","remove","clearError","errorDisplay","setTimeout","wrapper","trimmedEmailVal","loop","maxWidth","fitToView","width","expr","pseudos","elem","doSearch","init","salesforceOrganizationId","_etmc","debug","catalogId","clientEmail","setSubscriberKey","subscriberKey","item","quantity","price","salePrice","uniqueId","product","sale_price","unique_id","cartItem","cartOrOrderData","cart","clear_cart","encodedSearchString","searchString","searchUI_tbProductName","cleanedSearchString","searchInput","encodeURIComponent","doQuickSearch","searchPath","tSearchString","num","Intl","NumberFormat","currency","format","invalue","days","date","expires","setTime","toUTCString","cookie","createCookie","nameEQ","ca","sign","cents","points","dsName","xmlString","fieldEndIndex","returnValue","datasetStartIndex","datasetEndIndex","fieldStartIndex","parseInt","dtIndex","rowIndex","fieldName","tagName","tagValue","tagStartIndex","tagEndIndex","inNumber","tmpNumber","tmpStr","c_name","exdays","exdate","c_value","setDate","getDate","c_start","c_end","decodeURIComponent","productIndex","loader","atc","sel","nodeName","XMLHttpRequest","trymicrosoft","ActiveXObject","othermicrosoft","failed","message","eventCategory","eventAction","eventLabel","eventParams","detail","btoa","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","errorType","errorMsg","errorLogAPIURL","mode","brand","page","removeClass","slideDown","siblings","slideUp","invtID","alternateID","found","invtIDCategory","category","categoryID","localStorage","string","DOMParser","parseFromString","documentElement","textContent","eraseCookie","readCookie","setError","elementId","isValid","_document$getElementB","iconElement","createElement","className","appendChild","toggle","backgroundImage","validateCardCodeFunction","cardType","patterns","address","city","zip","phone","cvv","creditCard","amxCardId","validateField","inputElement","elementType","customFieldValidation","id","formElements","fieldValidation","errMessage","attachEventListeners","elementIds","emailAddress","addressUI_tbBillAddressName","addressUI_tbBillAddressFirstName","addressUI_tbBillAddressLastName","addressUI_tbBillAddr1","addressUI_tbBillAddr2","addressUI_tbBillAddrCity","addressUI_tbShipAddressName","addressUI_tbShipAddressFirstName","addressUI_tbShipAddressLastName","addressUI_tbShipAddr1","addressUI_tbShipAddr2","addressUI_tbShipAddrCity","addressUI_tbBillAddrZip","addressUI_tbShipAddrZip","addressUI_tbBillAddrPhone","addressUI_tbShipAddrPhone","addressUI_ddlBillAddrCountry","addressUI_ddlBillAddrState","hiddenInputIDs","addressUI_ddlShipAddrCountry","addressUI_ddlShipAddrState","addressUI_cSameAsShipping","FirstName","LastName","Phone","paymentTypeUI_tbCreditCardName","paymentTypeUI_tbCreditCardCode","paymentTypeUI_tbCreditCardName2","paymentTypeUI_tbCreditCardCode2","paymentTypeUI_tbCreditCardNumber","paymentTypeUI_tbCreditCardNumber2","increaseBtns","decreaseBtns","increaseBtn","currentValue","ariaLabelFirstPart","quantityInput","min","max","ariaLabel","decreaseBtn"],"mappings":"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","file":"../common.min.js","sourcesContent":["class HAHAccessibility {\n /**\n * Defines if should log in the console the current element selected by tab key.\n * Should be `false` if on production.\n */\n static LOG_ACTIVE_ELEMENT = false\n\n /**\n * Defines if should warn in the console if the page doesn't all necessary landmarks.\n * Should be `false` if on production.\n */\n static WARN_MISSING_LANDMARKS = false\n\n /**\n * Defines if should log debug informations when calling `trapFocus` function.\n * Should be `false` if on production.\n */\n static DEBUG_TRAP_FOCUS = false\n\n /**\n * Defines the Fancybox version. Can be `2` or `4`.\n * This will change the `init` method behavior.\n */\n static FANCYBOX_VERSION = 2\n\n static selectors = {\n mainNavList: '#main-nav',\n navList: '#side-nav',\n tabLists: '[role=tablist]',\n focusableElements:\n 'input[type=\"text\"]:not([disabled]), ' + // inputs of type \"text\" that are not disabled\n 'input[type=\"radio\"]:not([disabled]), ' + // inputs of type \"radio\" that are not disabled\n 'input[type=\"checkbox\"]:not([disabled]), ' + // inputs of type \"checkbox\" that are not disabled\n 'input[type=\"email\"]:not([disabled]), ' + // inputs of type \"email\" that are not disabled\n 'input[type=\"button\"]:not([disabled]), ' + // inputs of type \"button\" that are not disabled\n 'input[type=\"search\"]:not([disabled]), ' + // inputs of type \"search\" that are not disabled\n 'textarea:not([disabled]), ' + // textareas that are not disabled\n 'select:not([disabled]), ' + // selects that are not disabled\n 'a[href]:not([disabled]):not([id^=\"TN_l2\"]):not([id^=\"TN_l3\"]):not([id=\"TN_l1_comingsoon\"]),' + // links that has \"href\" attribute, are not disabled, id different from TN_l1_comingsoon and id doesn't contain TN_l2 (mainNav on mobile)\n 'button:not([disabled]), ' + // buttons that are not disabled\n '[data-focusable=\"true\"]', // buttons that are not disabled\n navigationBar: {\n menuItems: '.dropdown',\n linkMenuItems: '.dropdownLink',\n subMenuItems: '.submenuContainer',\n subMenuItem: '[role=\"menuitem\"]'\n },\n tabsManual: {\n tabs: '[role=tab]'\n },\n radioGroup: {\n radioItems: '[role=radio]'\n }\n }\n\n /** Trap the tab navigation focus */\n static trapFocus({\n container,\n closeElement,\n additionalCloseElements,\n tablistUpdateElements,\n triggerHTMLElement,\n firstElementToFocus,\n unbindEvents\n }: {\n /**\n * The modal / container where the focus should be trapped.\n */\n container: string\n\n /**\n * The element that `closeTrapFocus` function will `click` to close the modal.\n */\n closeElement: string\n\n /**\n * Elements inside the container that, when `clicked` or pressed `Enter`,\n * will call the `closeTrapFocus` function.\n */\n additionalCloseElements?: string[]\n\n /**\n * Elements inside the container that, when `clicked` or pressed `Enter`,\n * will restore the focusable elements inside the container.\n * For example, in a carousel with images, that array would have the\n * \"previous\" and \"next\" buttons.\n */\n tablistUpdateElements?: string[]\n\n /**\n * The element that opened the modal / the element where to focus should go\n * after closing the modal.\n */\n triggerHTMLElement?: HTMLElement\n\n /**\n * The element that should be focused after opening the modal.\n * If not defined it will be automatically defined.\n */\n firstElementToFocus?: string\n /**\n * Unable the events to be unbinded after closing the modal.\n * Should be true for trapFocus where tablistUpdateElements is defined.\n */\n unbindEvents?: boolean\n }): void {\n const containerHTMLElement: HTMLElement = document.querySelector(container)\n const closeHTMLElement: HTMLElement = document.querySelector(closeElement)\n\n let focusableElementsNL: NodeListOf\n let focusableElements: Element[]\n let firstFocusableEl: Element\n let lastFocusableEl: Element\n\n const KEYCODE_TAB = 9\n\n const setFocusables = () => {\n focusableElementsNL = containerHTMLElement.querySelectorAll(\n HAHAccessibility.selectors.focusableElements\n )\n focusableElements = Array.from(focusableElementsNL).filter(\n (el: Element) => (el as HTMLElement).tabIndex !== -1\n )\n firstFocusableEl = focusableElements[0]\n lastFocusableEl = focusableElements[focusableElements.length - 1]\n bindEventsToFocusableElements()\n }\n\n const eventHandler = (e: KeyboardEvent) => {\n e.stopPropagation()\n const isTabPressed = e.key === 'Tab' || e.keyCode === KEYCODE_TAB\n const isEscapePressed = e.key === 'Escape'\n\n if (!isTabPressed && !isEscapePressed) {\n return\n }\n\n // If pressed tab\n if (isTabPressed) {\n // If pressed shift + tab\n if (e.shiftKey) {\n // If the active element is the first focusable element,\n // focus in the last focusable element.\n if (document.activeElement === firstFocusableEl) {\n ;(lastFocusableEl as HTMLElement).focus()\n e.preventDefault()\n }\n }\n\n // If pressed only tab\n else {\n // If the active element is the last focusable element,\n // focus in the first focusable element.\n if (document.activeElement === lastFocusableEl) {\n ;(firstFocusableEl as HTMLElement).focus()\n e.preventDefault()\n }\n }\n }\n\n // If pressed escape\n if (isEscapePressed) {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n }\n\n const bindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.addEventListener('keydown', eventHandler)\n })\n }\n\n const unbindEventsToFocusableElements = () => {\n if (unbindEvents) {\n focusableElements.forEach((element) => {\n element.removeEventListener('keydown', eventHandler)\n })\n }\n }\n\n setFocusables()\n\n additionalCloseElements?.forEach((element: string) => {\n const altCloseHTMLElement: HTMLElement =\n containerHTMLElement.querySelector(element)\n altCloseHTMLElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n HAHAccessibility.closeTrapFocus(\n altCloseHTMLElement,\n triggerHTMLElement\n )\n }\n })\n altCloseHTMLElement.addEventListener('click', (e) => {\n HAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n })\n })\n\n if (HAHAccessibility.DEBUG_TRAP_FOCUS) {\n console.log('focusableElements', focusableElements)\n console.log('firstFocusableEl', firstFocusableEl)\n console.log('lastFocusableEl', lastFocusableEl)\n }\n closeHTMLElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n unbindEventsToFocusableElements()\n }\n })\n\n closeHTMLElement.addEventListener('click', () => {\n unbindEventsToFocusableElements()\n })\n\n tablistUpdateElements?.forEach((element) => {\n const updaterElement: HTMLElement =\n containerHTMLElement.querySelector(element)\n if (updaterElement) {\n updaterElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n setFocusables()\n }\n })\n updaterElement.addEventListener('click', (e) => {\n setFocusables()\n })\n }\n })\n\n if (firstElementToFocus) {\n const firstElementToFocusHTMLElement: HTMLElement =\n containerHTMLElement.querySelector(firstElementToFocus)\n firstElementToFocusHTMLElement.focus()\n } else {\n ;(firstFocusableEl as HTMLElement).focus()\n }\n }\n\n /** Trap the tab focus inside the Fancybox 4 modal dialog */\n static trapFocusFancybox4({\n container,\n closeElement,\n additionalCloseElements,\n tablistUpdateElements,\n triggerHTMLElement,\n imageAltText\n }: {\n container: string\n closeElement: string\n additionalCloseElements?: string[]\n tablistUpdateElements?: string[]\n triggerHTMLElement?: HTMLElement\n imageAltText?: string\n }): void {\n const containerHTMLElement: HTMLElement = document.querySelector(container)\n const closeHTMLElement: HTMLElement = document.querySelector(closeElement)\n\n let focusableElementsNL: NodeListOf\n let focusableElements: Element[]\n let firstFocusableEl: Element\n let lastFocusableEl: Element\n\n const setFocusables = (trigger?: string) => {\n focusableElements && unbindEventsToFocusableElements()\n focusableElements = []\n focusableElementsNL = containerHTMLElement.querySelectorAll(\n HAHAccessibility.selectors.focusableElements\n )\n const currentSlide = containerHTMLElement.querySelector(\n '.fancybox__slide.is-selected'\n )\n let currentSlideIndex = Number(currentSlide.getAttribute('data-index'))\n\n if (trigger === 'Next') {\n currentSlideIndex += 1\n } else if (trigger === 'Previous') {\n currentSlideIndex -= 1\n }\n\n focusableElements = Array.from(focusableElementsNL).filter(\n (el: Element, _index: number) => {\n if ((el as HTMLElement).title !== 'Close') return true\n if ((el as HTMLElement).title === 'Close') {\n const closeButtonIndex = Number(\n (el.parentNode.parentNode as HTMLElement).getAttribute(\n 'data-index'\n )\n )\n if (closeButtonIndex === currentSlideIndex) return true\n }\n }\n )\n\n if (imageAltText) {\n $(`[data-index=\"${currentSlideIndex}\"] .fancybox__image`).attr(\n 'alt',\n imageAltText\n )\n }\n\n firstFocusableEl = focusableElements[0]\n lastFocusableEl = focusableElements[focusableElements.length - 1]\n\n bindEventsToFocusableElements()\n }\n\n const KEYCODE_TAB = 9\n\n additionalCloseElements?.forEach((element) => {\n const altCloseHTMLElement: HTMLElement = document.querySelector(element)\n altCloseHTMLElement.addEventListener('keypress', (e) => {\n if (altCloseHTMLElement !== e.target) return\n if (e.key === 'Enter') {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n })\n altCloseHTMLElement.addEventListener('click', (e) => {\n if (altCloseHTMLElement !== e.target) return\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n })\n })\n\n const eventHandler = (e: KeyboardEvent) => {\n const isTabPressed = e.key === 'Tab' || e.keyCode === KEYCODE_TAB\n const isEscapePressed = e.key === 'Escape'\n\n if (!isTabPressed && !isEscapePressed) {\n return\n }\n\n if (isTabPressed) {\n const elementIndex = focusableElements.indexOf(document.activeElement)\n if (e.shiftKey) {\n /* shift + tab */ if (elementIndex === 0) {\n ;(lastFocusableEl as HTMLElement).focus()\n e.preventDefault()\n } else if (elementIndex > 0) {\n ;(focusableElements[elementIndex - 1] as HTMLElement).focus()\n e.preventDefault()\n } else {\n ;(lastFocusableEl as HTMLElement).focus()\n e.preventDefault()\n }\n } /* tab */ else {\n if (elementIndex === focusableElements.length - 1) {\n ;(firstFocusableEl as HTMLElement).focus()\n e.preventDefault()\n } else if (elementIndex >= 0) {\n ;(focusableElements[elementIndex + 1] as HTMLElement).focus()\n e.preventDefault()\n } else {\n ;(firstFocusableEl as HTMLElement).focus()\n e.preventDefault()\n }\n }\n }\n\n if (isEscapePressed) {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n }\n\n const bindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.addEventListener('keydown', eventHandler)\n })\n }\n\n const unbindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.removeEventListener('keydown', eventHandler)\n })\n }\n\n setFocusables()\n\n tablistUpdateElements?.forEach((element) => {\n const updaterElement: HTMLElement =\n containerHTMLElement.querySelector(element)\n if (updaterElement) {\n updaterElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n setFocusables(updaterElement.title)\n }\n })\n updaterElement.addEventListener('click', (e) => {\n setFocusables(updaterElement.title)\n })\n }\n })\n\n // firstFocusableEl.focus();\n }\n\n /** End the trap for the focus inside the modal dialog */\n static closeTrapFocus(\n closeHTMLElement: HTMLElement,\n triggerHTMLElement?: HTMLElement\n ): void {\n closeHTMLElement?.focus()\n closeHTMLElement?.click()\n triggerHTMLElement?.focus()\n }\n\n /** Trap focus terms and conditions LB */\n static showTermsofSalePopover(): void {\n try {\n document.getElementById('generalTermPopover').style.visibility = 'visible'\n document.getElementById('generalTermPopover').style.display = ''\n HAHAccessibility.trapFocus({\n container: '#generalTermPopover',\n closeElement: '#closegeneralTermPopover'\n })\n } catch (e) {\n alert('error')\n }\n }\n\n static showMattressTermPopover(): void {\n try {\n document.getElementById('mattressTermPopover').style.visibility =\n 'visible'\n document.getElementById('mattressTermPopover').style.display = ''\n HAHAccessibility.trapFocus({\n container: '#mattressTermPopover',\n closeElement: '#closeMattressTermPopover'\n })\n } catch (e) {\n alert('error')\n }\n }\n\n /**\n * 1) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#main-nav')`\n * 2) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#side-nav')`\n * 3) Calls `new TabsManual` for each element found by `document.querySelectorAll('[role=tablist]')`\n * 4) Applies accessibility tools for fancybox images\n * 5) Applies accessibility tools for the fancybox element\n * 6) Applies accessibility tools for fancybox inline subdetails\n */\n static init() {\n const logActiveElement = this.LOG_ACTIVE_ELEMENT\n\n window.addEventListener('load', () => {\n window.mainNavList = document.querySelectorAll(\n HAHAccessibility.selectors.mainNavList\n )\n if (window.mainNavList) {\n for (let i = 0; i < window.mainNavList.length; i++) {\n new NavigationBar(window.mainNavList[i])\n }\n }\n\n window.navList = document.querySelectorAll(\n HAHAccessibility.selectors.navList\n )\n if (window.navList) {\n for (let i = 0; i < window.navList.length; i++) {\n new NavigationBar(window.navList[i])\n }\n }\n\n window.tablists = document.querySelectorAll(\n HAHAccessibility.selectors.tabLists\n )\n if (window.tablists) {\n for (let i = 0; i < window.tablists.length; i++) {\n new TabsManual(window.tablists[i])\n }\n }\n\n switch (HAHAccessibility.FANCYBOX_VERSION) {\n case 2:\n HAHAccessibility.initADAForFancybox2()\n break\n case 4:\n HAHAccessibility.initADAForFancybox4()\n break\n }\n\n if (logActiveElement) {\n document.addEventListener('keyup', () =>\n console.log(document.activeElement)\n )\n }\n })\n }\n\n private static initADAForFancybox2() {\n $(\"[id^='fancyboxLBImage']\").on('click', function () {\n window.triggerElement = this\n })\n\n $('#addOnFancyboxLBImage').on('click', function () {\n window.triggerElement = this\n })\n ;($('.fancybox') as any).fancybox({\n afterShow: () => {\n const triggerElementId = window.triggerElement.getAttribute('id')\n if (\n triggerElementId === 'addOnFancyboxLBImage' ||\n triggerElementId.includes('fancyboxLBImage')\n ) {\n const altDialogText = triggerElementId.includes('fancyboxLBImage')\n ? $(window.triggerElement).find('img').attr('alt')\n : $(window.triggerElement)[0].innerText\n $('.fancybox-overlay').attr('aria-label', `${altDialogText} image`)\n $('.fancybox-overlay .fancybox-wrap img').attr('alt', altDialogText)\n }\n $('.fancybox-overlay').attr('aria-modal', 'true').attr('role', 'dialog')\n $('.fancybox-overlay .fancybox-wrap')\n .removeAttr('tabindex')\n .removeAttr('aria-modal')\n .removeAttr('aria-label')\n .removeAttr('role')\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-item.fancybox-close',\n additionalCloseElements: [],\n tablistUpdateElements: ['.fancybox-prev', '.fancybox-next'],\n triggerHTMLElement: window.triggerElement,\n unbindEvents: true\n })\n },\n afterClose: () => {\n window.triggerElement.focus()\n },\n // Animation effects for fancybox\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n padding: 2,\n margin: 20\n })\n\n // Fancybox inline sub details\n $('.sub-details').on('click', function () {\n window.triggerElement = this\n })\n ;($('.sub-details') as any).fancybox({\n afterShow: () => {\n $('.fancybox-overlay')\n .attr('aria-label', 'Subscription details')\n .attr('aria-modal', 'true')\n .attr('role', 'dialog')\n .attr('aria-describedby', 'inline-sub-box ADA-sub-disclosure')\n $('.fancybox-overlay .fancybox-wrap')\n .removeAttr('tabindex')\n .removeAttr('aria-label')\n .removeAttr('role')\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-item.fancybox-close',\n additionalCloseElements: [],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement\n })\n },\n afterClose: () => {\n window.triggerElement.focus()\n },\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n scrolling: 'no',\n autoSize: true\n })\n\n $('.BMSM-Chart').on('click', function () {\n window.triggerElement = this\n })\n ;($('.BMSM-Chart') as any).fancybox({\n afterShow: () => {\n $('.fancybox-overlay')\n .attr('aria-modal', 'true')\n .attr('role', 'dialog')\n .attr('aria-label', 'Buy More Save More')\n $('.fancybox-overlay .fancybox-wrap')\n .removeAttr('aria-modal')\n .removeAttr('aria-label')\n .removeAttr('role')\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-item.fancybox-close',\n firstElementToFocus: '#bmsm-title'\n })\n },\n afterClose: () => {\n window.triggerElement.focus()\n }\n })\n }\n\n private static initADAForFancybox4() {\n $('[data-fancybox=\"product-image-gallery\"]').on('click', function () {\n window.triggerElement = this\n })\n\n $('[data-fancybox=\"product-addon\"]').on('click', function () {\n window.triggerElement = this\n })\n\n $('[data-fancybox-type=\"inline\"]').on('click', function () {\n window.triggerElement = this\n })\n\n Fancybox.bind('[data-fancybox=\"product-image-gallery\"]', {\n once: {\n done: (fancybox: any) => {\n const altDialogText = $(window.triggerElement)\n .children()[0]\n .getAttribute('alt')\n const fancyboxId = fancybox.$container.getAttribute('id')\n fancybox.$container.setAttribute(\n 'aria-label',\n `${altDialogText} image`\n )\n $('.is-selected').attr('aria-label', 'Current image')\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: '.is-selected .carousel__button.is-close',\n additionalCloseElements: ['.fancybox__slide'],\n tablistUpdateElements: [\n '.carousel__button.is-next',\n '.carousel__button.is-prev'\n ],\n triggerHTMLElement: window.triggerElement,\n imageAltText: altDialogText\n })\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false\n })\n\n Fancybox.bind('[data-fancybox=\"product-addon\"]', {\n once: {\n done: (fancybox: any) => {\n const altDialogText = $(window.triggerElement)\n .text()\n .toLowerCase()\n .replace('add', '')\n .trim()\n const newAltDialogText = `${altDialogText} image`\n const fancyboxId = fancybox.$container.getAttribute('id')\n fancybox.$container.setAttribute('aria-label', newAltDialogText)\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: '.is-selected .carousel__button.is-close',\n additionalCloseElements: ['.fancybox__slide'],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement,\n imageAltText: altDialogText\n })\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false\n })\n\n Fancybox.bind('[data-fancybox-type=\"inline\"]', {\n once: {\n done: (fancybox: any) => {\n fancybox.$container.removeAttribute('aria-label')\n const fancyboxId = fancybox.$container.getAttribute('id')\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: '.is-selected .carousel__button.is-close',\n additionalCloseElements: ['.fancybox__slide'],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement\n })\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false\n })\n }\n}\n\n/**\n * 1) Receives an element representing the navigation list\n * 2) Defines the `menuItems`, `linkMenuItems` and `subMenuItems`\n * 3) Defines the first and last menu item\n * 4) Adds an event listener for the `keydown` event for each element of `linkMenuItems`\n * 5) Adds an event listener for the `keydown` event for each element of `subMenuItems`\n * 6) Defines the `allNavLink`\n * 7) Defines the `aria-current=\"page\"` for one element of `allNavLink`\n */\nclass NavigationBar {\n navlistNode: Element\n menuItems: Element[]\n linkMenuItems: Element[]\n subMenuItems: Element[][]\n currentLocation: any\n firstMenuItem: Element\n lastMenuItem: Element\n allNavLink: HTMLLinkElement[]\n\n constructor(groupNode: Element) {\n this.navlistNode = groupNode\n this.menuItems = Array.from(\n this.navlistNode.querySelectorAll(\n HAHAccessibility.selectors.navigationBar.menuItems\n )\n )\n this.linkMenuItems = []\n this.subMenuItems = []\n this.currentLocation = window.location.href\n\n for (let i = 0; i < this.menuItems.length; i++) {\n this.linkMenuItems.push(\n this.menuItems[i].querySelector(\n HAHAccessibility.selectors.navigationBar.linkMenuItems\n )\n )\n if (\n this.menuItems[i].querySelector(\n HAHAccessibility.selectors.navigationBar.subMenuItems\n )\n ) {\n this.subMenuItems.push(\n Array.from(\n this.menuItems[i]\n .querySelector(\n HAHAccessibility.selectors.navigationBar.subMenuItems\n )\n .querySelectorAll(\n HAHAccessibility.selectors.navigationBar.subMenuItem\n )\n )\n )\n } else {\n this.subMenuItems.push([])\n }\n }\n\n this.firstMenuItem = this.linkMenuItems[0]\n this.lastMenuItem = this.linkMenuItems[this.linkMenuItems.length - 1]\n\n for (let j = 0; j < this.linkMenuItems.length; j++) {\n this.linkMenuItems[j].addEventListener('keydown', (e) =>\n this.onKeydown.call(this, e, j, null)\n )\n }\n\n for (let j = 0; j < this.linkMenuItems.length; j++) {\n for (let k = 0; k < this.subMenuItems[j].length; k++) {\n this.subMenuItems[j][k].addEventListener('keydown', (e) =>\n this.onKeydown.call(this, e, j, k)\n )\n }\n }\n\n this.allNavLink = Array.from(\n this.navlistNode.querySelectorAll(\n HAHAccessibility.selectors.navigationBar.subMenuItem\n )\n )\n\n for (let l = 0; l < this.allNavLink.length; l++) {\n if (this.allNavLink[l].href === this.currentLocation) {\n this.allNavLink[l].setAttribute('aria-current', 'page')\n }\n }\n }\n\n moveFocusToLink(currentLink: Element) {\n ;(currentLink as HTMLElement)?.focus()\n }\n\n moveFocusToPreviousLink(indexMenu: any, _indexSubMenu: any) {\n if (indexMenu === 0) {\n this.moveFocusToLink(this.lastMenuItem)\n } else {\n this.moveFocusToLink(this.linkMenuItems[indexMenu - 1])\n }\n }\n\n moveFocusToNextLink(indexMenu: any, _indexSubMenu: any) {\n if (indexMenu === this.linkMenuItems.length - 1) {\n this.moveFocusToLink(this.firstMenuItem)\n } else {\n this.moveFocusToLink(this.linkMenuItems[indexMenu + 1])\n }\n }\n\n moveFocusToPreviousSublink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n } else {\n if (indexSubMenu === 0) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu - 1])\n }\n }\n }\n\n moveFocusToNextSublink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0])\n } else {\n if (indexSubMenu === subMenuLenght) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0])\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu + 1])\n }\n }\n }\n\n moveFocusToFirstlink(indexMenu: any, indexSubMenu: any) {\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.firstMenuItem)\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0])\n }\n }\n\n moveFocusToLastlink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.lastMenuItem)\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n }\n }\n\n moveFocusTofatherlink(indexMenu: any, indexSubMenu: any) {\n if (indexSubMenu !== null) {\n this.moveFocusToLink(this.linkMenuItems[indexMenu])\n }\n }\n\n isPrintableCharacter(str: string) {\n return str.length === 1 && str.match(/\\S/)\n }\n\n setFocusByFirstCharacter(character: any, indexMenu: any, indexSubMenu: any) {\n let linksArrToSearch: any\n let startIndex: any\n\n if (indexSubMenu === null) {\n linksArrToSearch = this.linkMenuItems\n startIndex = indexMenu\n } else {\n linksArrToSearch = this.subMenuItems[indexMenu]\n startIndex = indexSubMenu\n }\n\n for (let i = 0; i < linksArrToSearch.length - 1; i++) {\n if (startIndex === linksArrToSearch.length - 1) {\n startIndex = 0\n } else {\n startIndex += 1\n }\n if (\n linksArrToSearch[startIndex].name\n .toLowerCase()\n .startsWith(character.toLowerCase())\n ) {\n this.moveFocusToLink(linksArrToSearch[startIndex])\n break\n }\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent, indexMenu: number, indexSubMenu: number) {\n let flag = false\n\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousLink(indexMenu, indexSubMenu)\n flag = true\n break\n case 'ArrowRight':\n this.moveFocusToNextLink(indexMenu, indexSubMenu)\n flag = true\n break\n case 'ArrowUp':\n this.moveFocusToPreviousSublink(indexMenu, indexSubMenu)\n flag = true\n break\n\n case 'ArrowDown':\n this.moveFocusToNextSublink(indexMenu, indexSubMenu)\n flag = true\n break\n case 'Home':\n this.moveFocusToFirstlink(indexMenu, indexSubMenu)\n flag = true\n break\n case 'End':\n this.moveFocusToLastlink(indexMenu, indexSubMenu)\n flag = true\n break\n\n case 'Escape':\n this.moveFocusTofatherlink(indexMenu, indexSubMenu)\n flag = true\n break\n default:\n if (this.isPrintableCharacter(event.key)) {\n this.setFocusByFirstCharacter(event.key, indexMenu, indexSubMenu)\n flag = true\n }\n break\n }\n\n if (flag) {\n event.stopPropagation()\n event.preventDefault()\n }\n }\n}\n\n/**\n * 1) Receives an element representing the tablist\n * 2) Searches for subelements with `role=\"tab\"`\n * 3) Defines the first and last tab\n * 4) Adds an event listener for the `keydown` event for each tab\n */\nclass TabsManual {\n tablistNode: any\n tabs: Element[]\n firstTab: Element\n lastTab: Element\n\n constructor(groupNode: Element) {\n this.tablistNode = groupNode\n this.tabs = []\n this.firstTab = null\n this.lastTab = null\n this.tabs = Array.from(\n this.tablistNode.querySelectorAll(\n HAHAccessibility.selectors.tabsManual.tabs\n )\n )\n for (let i = 0; i < this.tabs.length; i += 1) {\n const tab = this.tabs[i]\n\n tab.addEventListener('keydown', this.onKeydown.bind(this))\n if (!this.firstTab) {\n this.firstTab = tab\n }\n this.lastTab = tab\n }\n }\n\n moveFocusToTab(currentTab: Element) {\n ;(currentTab as HTMLElement).focus()\n }\n\n moveFocusToPreviousTab(currentTab: Element) {\n let index: number\n if (currentTab === this.firstTab) {\n this.moveFocusToTab(this.lastTab)\n } else {\n index = this.tabs.indexOf(currentTab)\n this.moveFocusToTab(this.tabs[index - 1])\n }\n }\n\n moveFocusToNextTab(currentTab: Element) {\n let index: number\n if (currentTab === this.lastTab) {\n this.moveFocusToTab(this.firstTab)\n } else {\n index = this.tabs.indexOf(currentTab)\n this.moveFocusToTab(this.tabs[index + 1])\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent) {\n const tgt: HTMLElement = event.currentTarget as HTMLElement\n let flag = false\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousTab(tgt as HTMLElement)\n flag = true\n break\n case 'ArrowRight':\n this.moveFocusToNextTab(tgt as HTMLElement)\n flag = true\n break\n case 'Home':\n this.moveFocusToTab(this.firstTab)\n flag = true\n break\n case 'End':\n this.moveFocusToTab(this.lastTab)\n flag = true\n break\n default:\n break\n }\n if (flag) {\n event.stopPropagation()\n event.preventDefault()\n }\n }\n}\n\n/**\n * 1) Receives a list of elements\n * 2) Searches for subelements with `role=\"radio\"`\n * 3) Defines the first and last radio option\n * 4) Adds an event listener for the `keydown` event for each radio item\n */\nclass RadioGroup {\n radioOptNode: Element\n radioItems: Element[]\n firstRadioItem: Element\n lastRadioItem: Element\n\n constructor(groupNode: NodeListOf) {\n this.radioOptNode = groupNode[0]\n this.radioItems = Array.from(\n this.radioOptNode.querySelectorAll(\n HAHAccessibility.selectors.radioGroup.radioItems\n )\n )\n this.firstRadioItem = this.radioItems[0]\n this.lastRadioItem = this.radioItems[this.radioItems.length - 1]\n for (let j = 0; j < this.radioItems.length; j++) {\n this.radioItems[j].addEventListener('keydown', (e) =>\n this.onKeydown.call(this, e, j)\n )\n }\n }\n\n moveFocusToRadio(currentRadio: Element) {\n ;(currentRadio as HTMLElement).focus()\n ;(currentRadio as HTMLElement).click()\n }\n\n moveFocusToPreviousRadio(indexRadio: number) {\n if (indexRadio === 0) {\n this.moveFocusToRadio(this.lastRadioItem)\n } else {\n this.moveFocusToRadio(this.radioItems[indexRadio - 1])\n }\n }\n\n moveFocusToNextRadio(indexRadio: number) {\n if (indexRadio === this.radioItems.length - 1) {\n this.moveFocusToRadio(this.firstRadioItem)\n } else {\n this.moveFocusToRadio(this.radioItems[indexRadio + 1])\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent, indexMenu: number) {\n let flag = false\n\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousRadio(indexMenu)\n flag = true\n break\n case 'ArrowRight':\n this.moveFocusToNextRadio(indexMenu)\n flag = true\n break\n case 'ArrowUp':\n this.moveFocusToPreviousRadio(indexMenu)\n flag = true\n break\n\n case 'ArrowDown':\n this.moveFocusToNextRadio(indexMenu)\n flag = true\n break\n default:\n break\n }\n\n if (flag) {\n event.stopPropagation()\n event.preventDefault()\n }\n }\n}\n","class ESignUp {\n sfSubscriptionApi: string\n lambdaPayload: any\n dialogObj: DialogObj\n lbHideParams: Array\n cookieValue: string\n elementIDs: ElementIDs\n lambdaClient: any\n addedToSalesforceTime: any\n updatedOnSalesforceTime: any\n\n constructor({\n sfSubscriptionApi,\n lambdaPayload,\n dialogObj,\n lbHideParams,\n cookieValue,\n elementIDs\n }: ESignUpOptions) {\n if (!sfSubscriptionApi)\n throw new Error('\"sfSubscriptionApi\" config value is required.')\n\n if (!lambdaPayload)\n throw new Error('\"lambdaPayload\" config value is required.')\n\n if (!dialogObj) throw new Error('\"dialogObj\" config value is required.')\n\n const defaultLambdaPayload = {\n region: 'US',\n timeZone: '-5',\n language: 'EN',\n method: 'API'\n }\n\n const defaultElementIds = {\n lightBoxInput: '#emailAddress1',\n lightBoxBtn: '#emailAddress1btn',\n footerInput: '#emailAddress2',\n footerBtn: '#emailAddress2btn',\n homePageInput: '#emailAddress3',\n homePageBtn: '#emailAddress3btn',\n lightBoxBackground: '#emailSignupPopover',\n lightBoxCloseBtn: '#ligtboxClosebtn',\n sweepsBtn: '#sweepsBtn',\n sweepsEmail: '#sweepsEmail',\n sweepsName: '#sweepsName',\n sweepsCheck: '#sweepsCheck',\n sweepsBonvoyCheck: '#sweepsBonvoyCheck',\n landingPageSweepsBtn: '#landingPageSweepsBtn',\n landingPageSweepsEmail: '#landingPageSweepsEmail',\n landingPageSweepsName: '#landingPageSweepsName',\n landingPageSweepsBonvoyCheck: '#landingPageSweepsBonvoyCheck',\n landingPageSweepsCheck: '#landingPageSweepsCheck',\n checkoutPageEmailInput: '#emailAddress',\n checkoutPageSubscribeCheck: '#emailSubscribe'\n }\n\n const defaultDialogObj = {\n btnTxt: 'Shop Now'\n }\n\n this.sfSubscriptionApi = sfSubscriptionApi\n\n this.lambdaPayload = {\n ...defaultLambdaPayload,\n ...lambdaPayload\n }\n\n this.dialogObj = {\n ...defaultDialogObj,\n ...dialogObj\n }\n\n this.lbHideParams = lbHideParams || ['utm_source=hah']\n\n this.cookieValue = cookieValue || 'emailSignup'\n\n this.elementIDs = {\n ...defaultElementIds,\n ...elementIDs\n }\n\n this.addedToSalesforceTime = {}\n this.updatedOnSalesforceTime = {}\n }\n\n getTimeZone() {\n const currDate = new Date()\n return Math.floor((currDate.getTimezoneOffset() / 60) * -1).toString()\n }\n\n hideLandingPageSweepsForm() {\n $('#sweepstakesFormWrap').fadeOut('slow', () => {\n $('#sweepstakesConfirmation').fadeIn('slow')\n })\n }\n\n /**\n * Calls AWS Lambda to subscribe/unsubscribe a client email.\n */\n async callLambda({\n email,\n source,\n action,\n showLightboxMessage = false,\n name = '',\n campaign = undefined,\n callback = undefined\n }: LambdaOptions) {\n // Hides the lightbox\n this.showLightbox(false)\n\n // Show the \"thank you for subscribing\" lightbox\n if (showLightboxMessage) {\n dilogBox(this.dialogObj)\n window.scrollTo(0, 0)\n }\n\n const payload = {\n emailId: email,\n source: source,\n timeZone: this.getTimeZone(),\n name: name,\n campaign: campaign\n }\n\n const lambdaPayload = {\n action: action,\n data: {\n ...this.lambdaPayload,\n ...payload\n }\n }\n\n const apiGatewayUrl = this.sfSubscriptionApi\n\n try {\n const response = await fetch(apiGatewayUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(lambdaPayload)\n })\n\n const data = await response.json()\n\n if (callback) callback(null, data)\n } catch (error) {\n console.error('Error calling API Gateway:', error)\n if (callback) callback(error, null)\n }\n }\n\n checkQueryVariables() {\n const vars = window.location.search.substring(1).toLowerCase().split('&')\n let paramsPresent = false\n for (let i = 0; i < this.lbHideParams.length; i++) {\n if (vars.indexOf(this.lbHideParams[i]) > -1) {\n paramsPresent = true\n }\n }\n return paramsPresent\n }\n\n checkDisplayLightbox() {\n const emailCookie = CommonUtils.getCookie(this.cookieValue)\n if (emailCookie === null) {\n let paramsPresent = false\n paramsPresent = this.checkQueryVariables()\n if (paramsPresent) {\n this.showLightbox(false)\n } else {\n this.showLightbox(true)\n }\n }\n }\n\n showLightbox(show = false) {\n const emailSignupPopoverDiv = document.getElementById('emailSignupPopover')\n if (show) {\n if (emailSignupPopoverDiv) {\n emailSignupPopoverDiv.style.display = ''\n HAHAccessibility.trapFocus({\n container: '.emailFocusTrap',\n closeElement: '#emailSignupPopover'\n })\n }\n } else {\n if (emailSignupPopoverDiv) {\n emailSignupPopoverDiv.style.display = 'none'\n }\n CommonUtils.setCookie(this.cookieValue, 'emailClosed', 180)\n }\n }\n\n validateSweeps(name, emailID, checked, recaptchaPassed) {\n let alertMessage = ''\n const nameRegex = /^[a-z ,.'-]+$/i\n\n if (!nameRegex.test(name)) alertMessage += 'Please enter a valid name. \\n'\n if (!CommonUtils.validateEmail(emailID))\n alertMessage += 'Please enter a valid email address.\\n'\n if (!checked) alertMessage += 'Please check the sweeps rules checkbox.\\n'\n if (!recaptchaPassed) {\n alertMessage += 'Please complete re-captcha.'\n }\n if (alertMessage !== '') {\n alert(alertMessage)\n return false\n }\n return true\n }\n\n async toggleEmailStatusInSalesforce(\n email: string,\n emailStatus: 'Active' | 'Unsubscribed' | 'EmailID does not exist.',\n agreeToReceiveEmails: boolean\n ) {\n if (email) {\n // saves the email in the session storage so it can track the cart again in the payment page\n sessionStorage.setItem('emailAddress', email)\n\n SalesforceAbandonedCartUtils.setClientEmail(email)\n SalesforceAbandonedCartUtils.trackCart()\n\n // if email is not in Salesforce\n if (emailStatus.includes('does not exist')) {\n // add to Salesforce and set as \"Active\"\n const isActive: boolean = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'add',\n callback: (err: any, data: any) => {\n if (err) {\n console.log(err)\n }\n\n if (data) {\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n\n if (data.StatusCode == 200) {\n resolve(true)\n } else {\n resolve(false)\n }\n }\n }\n })\n })\n\n // save the date it was added to Salesforce\n this.addedToSalesforceTime[email] = new Date()\n\n // if agree to receive emails (checkbox checked)\n if (agreeToReceiveEmails) {\n // if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n if (isActive) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'checkout',\n event_value: 1\n })\n }\n }\n\n // if doesn't agree to receive emails (checkbox unchecked)\n else {\n // update status in Salesforce to \"Unsubscribed\"\n const isUnsubscribed: boolean = await new Promise(\n (resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'remove',\n callback: (err: any, data: any) => {\n if (err) {\n console.log(err)\n }\n\n if (data) {\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n\n if (data.StatusCode == 200) {\n let isUnsubscribed = false\n try {\n if (data.Payload) {\n isUnsubscribed =\n JSON.parse(\n data.Payload\n ).values.status.toLowerCase() === 'unsubscribed'\n }\n } catch {\n if (data.Payload) {\n isUnsubscribed =\n data.Payload.toLowerCase().includes('unsubscribed')\n }\n }\n\n resolve(isUnsubscribed)\n }\n }\n }\n })\n }\n )\n\n // if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n if (isUnsubscribed) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Unsubscribe',\n event_label: 'checkout',\n event_value: 1\n })\n }\n }\n }\n\n // if email is already in Salesforce\n else {\n // if does not agree to receive emails (is \"Unsubscribed\" in Salesforce)\n if (emailStatus.includes('Unsubscribed')) {\n // if agree to receive emails (checkbox checked)\n if (agreeToReceiveEmails) {\n // save the date it was updated in salesforce\n if (!this.updatedOnSalesforceTime[email]) {\n this.updatedOnSalesforceTime[email] = new Date()\n }\n\n // updates status in Salesforce to \"Active\"\n const isActive = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'add',\n callback: (err: any, data: any) => {\n if (err) {\n console.log(err)\n }\n\n if (data) {\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n\n if (data.StatusCode == 200) {\n let isActive: boolean\n try {\n isActive =\n JSON.parse(\n data.Payload\n ).values.status.toLowerCase() === 'active'\n } catch {\n isActive = data.Payload.toLowerCase().includes('active')\n }\n\n resolve(isActive)\n }\n }\n }\n })\n })\n\n // if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n if (isActive) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'checkout',\n event_value: 1\n })\n }\n }\n }\n\n // if agrees to receive emails (is \"Active\" in Salesforce)\n else {\n // if doesn't agree to receive emails (checkbox unchecked)\n if (!agreeToReceiveEmails) {\n const dateInserted: Date = this.addedToSalesforceTime[email]\n const dateUpdated: Date = this.updatedOnSalesforceTime[email]\n\n // if was just inserted or updated in Salesforce\n if (dateInserted || dateUpdated) {\n const now = new Date()\n const diffInMilliseconds = Math.abs(\n now.getTime() - (dateInserted ?? dateUpdated).getTime()\n )\n const diffInMinutes = diffInMilliseconds / (1000 * 60)\n\n // if was added or updated less than 5 minutes ago\n if (diffInMinutes < 5) {\n // update status in Salesforce to \"Unsubscribed\"\n const isUnsubscribed: boolean = await new Promise(\n (resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'remove',\n callback: (err: any, data: any) => {\n if (err) {\n console.log(err)\n }\n\n if (data) {\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n\n if (data.StatusCode == 200) {\n let isUnsubscribed = false\n try {\n if (data.Payload) {\n isUnsubscribed =\n JSON.parse(\n data.Payload\n ).values.status.toLowerCase() ===\n 'unsubscribed'\n }\n } catch {\n if (data.Payload) {\n isUnsubscribed =\n data.Payload.toLowerCase().includes(\n 'unsubscribed'\n )\n }\n }\n\n resolve(isUnsubscribed)\n }\n }\n }\n })\n }\n )\n\n // if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n if (isUnsubscribed) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Unsubscribe',\n event_label: 'checkout',\n event_value: 1\n })\n }\n }\n }\n }\n }\n }\n }\n }\n\n bindElementHandlers() {\n const footerBtn = $(this.elementIDs.footerBtn)\n const lightBoxBtn = $(this.elementIDs.lightBoxBtn)\n const homePageBtn = $(this.elementIDs.homePageBtn)\n const lightBoxCloseBtn = $(this.elementIDs.lightBoxCloseBtn)\n const lightBoxBackground = $(this.elementIDs.lightBoxBackground)\n const sweepsBtn = $(this.elementIDs.sweepsBtn)\n const landingPageSweepsBtn = $(this.elementIDs.landingPageSweepsBtn)\n const checkoutPageEmailInput = $(this.elementIDs.checkoutPageEmailInput)\n const checkoutPageSubscribeCheckbox = $(\n this.elementIDs.checkoutPageSubscribeCheck\n )\n\n if (lightBoxCloseBtn.length) {\n lightBoxCloseBtn.on('click', () => {\n this.showLightbox(false)\n })\n }\n\n if (lightBoxBackground.length) {\n $(document).on('click', (e) => {\n if ($(e.target).is(lightBoxBackground)) {\n this.showLightbox(false)\n }\n })\n }\n\n if (lightBoxBtn.length) {\n lightBoxBtn.on('click', () => {\n const emailValue = ($(this.elementIDs.lightBoxInput).val()).trim()\n if (!CommonUtils.validateEmail(emailValue)) {\n alert('Please enter a valid email address.')\n } else {\n this.callLambda({\n email: emailValue,\n source: 'lightbox',\n showLightboxMessage: true,\n action: 'add'\n })\n CommonUtils.setCookie('HAHemailID', emailValue, 180)\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'lightbox',\n event_value: 1\n })\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n }\n })\n }\n\n if (homePageBtn.length) {\n homePageBtn.on('click', () => {\n const emailValue = ($(this.elementIDs.homePageInput).val()).trim()\n if (!CommonUtils.validateEmail(emailValue)) {\n alert('Please enter a valid email address.')\n } else {\n this.callLambda({\n email: emailValue,\n source: 'home',\n showLightboxMessage: false,\n action: 'add'\n })\n CommonUtils.setCookie('HAHemailID', emailValue, 180)\n $('#ftr-email-signup').fadeOut('slow', () => {\n $('#ftr-email-conf').fadeIn('slow')\n })\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'home',\n event_value: 1\n })\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n }\n })\n }\n\n if (sweepsBtn.length) {\n sweepsBtn.on('click', () => {\n const sweepsEmail = ($(this.elementIDs.sweepsEmail).val()).trim()\n const sweepsName = ($(this.elementIDs.sweepsName).val()).trim()\n const sweepsChecked = $(this.elementIDs.sweepsCheck).is(':checked')\n const sweepsBonvoyChecked = $(this.elementIDs.sweepsBonvoyCheck).is(\n ':checked'\n )\n const campaign =\n sweepsBonvoyChecked === true ? '202106member' : '202106nonmember'\n if (this.validateSweeps(sweepsName, sweepsEmail, sweepsChecked, 1)) {\n this.callLambda({\n email: sweepsEmail,\n source: 'lightbox',\n showLightboxMessage: true,\n action: 'sweepsadd',\n name: sweepsName,\n campaign: campaign\n })\n CommonUtils.setCookie('HAHemailID', sweepsEmail, 180)\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'sweeps',\n event_value: 1\n })\n SalesforceAbandonedCartUtils.setClientEmail(sweepsEmail)\n }\n })\n }\n\n if (landingPageSweepsBtn.length) {\n landingPageSweepsBtn.on('click', () => {\n const landingPageSweepsEmail = ((\n $(this.elementIDs.landingPageSweepsEmail).val()\n )).trim()\n const landingPageSweepsName = ((\n $(this.elementIDs.landingPageSweepsName).val()\n )).trim()\n const landingPageSweepsChecked = $(\n this.elementIDs.landingPageSweepsCheck\n ).is(':checked')\n const landingPageSweepsBonvoyChecked = $(\n this.elementIDs.landingPageSweepsBonvoyCheck\n ).is(':checked')\n const v = grecaptcha.getResponse()\n const campaign =\n landingPageSweepsBonvoyChecked === true\n ? '202106member'\n : '202106nonmember'\n if (\n this.validateSweeps(\n landingPageSweepsName,\n landingPageSweepsEmail,\n landingPageSweepsChecked,\n v.length\n )\n ) {\n this.callLambda({\n email: landingPageSweepsEmail,\n source: 'sweeps',\n showLightboxMessage: true,\n action: 'sweepsadd',\n name: landingPageSweepsName,\n campaign: campaign,\n callback: this.hideLandingPageSweepsForm\n })\n CommonUtils.setCookie('HAHemailID', landingPageSweepsEmail, 180)\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'sweeps landing page',\n event_value: 1\n })\n SalesforceAbandonedCartUtils.setClientEmail(landingPageSweepsEmail)\n }\n })\n }\n\n if (footerBtn.length) {\n footerBtn.on('click', () => {\n const emailValue = ($(this.elementIDs.footerInput).val()).trim()\n if (!CommonUtils.validateEmail(emailValue)) {\n const inputControl = footerBtn.closest('.label-wrapper')\n const errorDisplay = inputControl.find('.error')\n\n errorDisplay.text('Please enter a valid email address.')\n inputControl.addClass('error')\n } else {\n this.callLambda({\n email: emailValue,\n source: 'footer',\n showLightboxMessage: false,\n action: 'add'\n })\n CommonUtils.setCookie('HAHemailID', emailValue, 180)\n $('#ftr-email-signup2').fadeOut('slow', () => {\n $('#ftr-email-conf2').fadeIn('slow')\n })\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'footer',\n event_value: 1\n })\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n SalesforceAbandonedCartUtils.trackCart()\n }\n })\n }\n\n if (checkoutPageEmailInput.length && !window.location.href.includes('contact-us')) {\n checkoutPageEmailInput.on('change', async (event) => {\n const email =\n (event.target as HTMLInputElement).value ||\n sessionStorage.getItem('emailAddress') ||\n CommonUtils.getCookie('HAHemailID')\n\n const { result }: any = await new Promise((resolve, _reject) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'status',\n callback: (_err: any, data: any) => resolve(data)\n })\n })\n\n const emailStatus = result\n const agreeToReceiveEmails = (\n document.querySelector(\n this.elementIDs.checkoutPageSubscribeCheck\n ) as HTMLInputElement\n ).checked\n\n this.toggleEmailStatusInSalesforce(\n email,\n emailStatus,\n agreeToReceiveEmails\n )\n })\n }\n\n if (checkoutPageSubscribeCheckbox.length) {\n checkoutPageSubscribeCheckbox.on('change', async (event) => {\n const email =\n (\n document.querySelector(\n this.elementIDs.checkoutPageEmailInput\n ) as HTMLInputElement\n ).value ||\n sessionStorage.getItem('emailAddress') ||\n CommonUtils.getCookie('HAHemailID')\n\n const { result }: any = await new Promise((resolve, _reject) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'status',\n callback: (_err: any, data: any) => resolve(data)\n })\n })\n\n const emailStatus = result\n const agreeToReceiveEmails = (event.target as HTMLInputElement).checked\n\n this.toggleEmailStatusInSalesforce(\n email,\n emailStatus,\n agreeToReceiveEmails\n )\n })\n }\n }\n}\n\ninterface ESignUpOptions {\n /**\n * SF subscription API url.\n */\n sfSubscriptionApi: string\n\n /**\n * A piece of the payload that is sent to AWS Lambda to communicate with Salesforce.\n */\n lambdaPayload: {\n website: string\n campaign: string\n refURL: string\n currURL: string\n }\n\n /**\n * Options for the lightbox that is shown in some situations.\n */\n dialogObj: {\n mainTxt: string\n secondaryTxt: string\n btnTxt: string\n }\n\n /**\n * Query parameters to be considered.\n */\n lbHideParams: Array\n\n /**\n * The name of the cookie to be used to store the client email status.\n */\n cookieValue: string\n\n /**\n * HTML elements that are used in the process of subscribing a client email.\n */\n elementIDs: ElementIDs\n}\n\ninterface LambdaOptions {\n /**\n * The email of the client.\n */\n email: string\n\n /**\n * The page/component where the client sets the email.\n */\n source: string\n\n /**\n * The action to be done in the lambda function.\n */\n action: 'status' | 'add' | 'sweepsadd' | 'remove'\n\n /**\n * If true, the \"thank you for subscribing\" lightbox will be shown.\n */\n showLightboxMessage?: boolean\n\n /**\n * A name that identifies the promotion.\n * Normally it's the sweeps promotion name and it's defined by an HTML element content.\n */\n name?: string\n\n /**\n * Identifies the campaign if the subscription belongs to one.\n * It's normally used with sweeps promotions.\n */\n campaign?: string\n\n /**\n * A callback function to be called after the Lambda function request is done.\n */\n callback?: (err: any, data: any) => any\n}\n\ninterface ElementIDs {\n lightBoxInput: string\n lightBoxBtn: string\n footerInput: string\n footerBtn: string\n homePageInput: string\n homePageBtn: string\n lightBoxBackground: string\n lightBoxCloseBtn: string\n sweepsBtn: string\n sweepsEmail: string\n sweepsName: string\n sweepsCheck: string\n sweepsBonvoyCheck: string\n landingPageSweepsBtn: string\n landingPageSweepsEmail: string\n landingPageSweepsName: string\n landingPageSweepsBonvoyCheck: string\n landingPageSweepsCheck: string\n checkoutPageEmailInput: string\n checkoutPageSubscribeCheck: string\n}\n","jQuery(() => {\n // Forms animations and in line validation\n const inputWrappers = document.querySelectorAll('.label-wrapper')\n\n function toggleClassOnFocus(e) {\n const parent = e.target.parentElement\n if (e.type === 'focus' || (e.type === 'input' && e.target.value === '')) {\n parent.classList.add('focused')\n } else if (e.type === 'blur' && e.target.value === '') {\n parent.classList.remove('focused')\n }\n }\n\n function clearError(e) {\n const inputControl = e.target.parentElement\n const errorDisplay =\n inputControl.querySelector('.error') ||\n inputControl.parentElement.querySelector('.span-err')\n if (e.target.type === 'email') {\n if (CommonUtils.validateEmail(e.target.value)) {\n errorDisplay.innerText = ''\n inputControl.classList.remove('error')\n }\n } else {\n errorDisplay.innerText = ''\n inputControl.classList.remove('error')\n }\n }\n setTimeout(() => {\n inputWrappers.forEach((wrapper) => {\n const inputs = wrapper.querySelectorAll(\n 'input[type=\"text\"], input[type=\"email\"], input[type=\"tel\"], input[type=\"search\"], select, textarea'\n )\n\n inputs.forEach((input: HTMLInputElement) => {\n input.addEventListener('focus', toggleClassOnFocus)\n input.addEventListener('blur', toggleClassOnFocus)\n input.addEventListener('input', clearError)\n if (input.value !== '') {\n const parent = input.parentElement\n parent.classList.add('focused')\n }\n })\n })\n }, 500)\n // Replace email input values with trimmed values\n $(\"input[type='email']\").on('blur', function () {\n if ((this).value) {\n var trimmedEmailVal = (this).value.trim()\n ;(this).value = trimmedEmailVal\n }\n })\n ;($('.fancybox')).fancybox({\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n loop: false\n })\n ;($('.iframe')).fancybox({\n type: 'iframe',\n maxWidth: 500,\n fitToView: false,\n width: '90%',\n autoSize: false,\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350\n })\n ;($('.inline')).fancybox({\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n scrolling: 'no',\n autoSize: true\n })\n ;($('#a_lightbox')).fancybox({ autoSize: true, scrolling: 'no' })\n})\n\n//Fancybox Lightbox End\n//dilogBox\n//@Author: Adarsh Kurudi\nfunction dilogBox(dialogObj: DialogObj): void {\n var template = {\n outerWrap: dialogObj.pointsUnavailable\n ? '
'\n : '
',\n closeBtn:\n '

Close

',\n innerMain: dialogObj.pointsUnavailable\n ? '

'\n : '

',\n innerSecondary: '

',\n confirmBtn:\n '
'\n }\n if (!document.getElementById('dialogbox')) {\n $(template.outerWrap).appendTo('body')\n } else {\n document.getElementById('dialogbox').style.display = ''\n document.getElementById('dialogbox').style.visibility = 'visible'\n }\n $('.confirmation').html(\n template.closeBtn +\n template.innerMain +\n template.innerSecondary +\n template.confirmBtn\n )\n $('#dialogMain').text(dialogObj.mainTxt)\n $('#dialogSecondary').text(dialogObj.secondaryTxt)\n $('#dialogBtn').val(dialogObj.btnTxt)\n HAHAccessibility.trapFocus({\n container: '.signupConfirmationFocusTrap',\n closeElement: '#ligtboxClosebtn2',\n firstElementToFocus: '#title-container'\n })\n $('#dialogbox').on('click', function () {\n $(this).css({\n visibility: 'hidden',\n display: 'none\t'\n })\n })\n}\n//End dilogBox\n\n$(() => {\n //Include for JQuery version 1.5 and below\n jQuery.expr.pseudos.focus = (elem: any) =>\n elem === document.activeElement && (elem.type || elem.href)\n $('form').on('keypress', (e) => {\n if (e.key === 'Enter') {\n //alert($(\"#tSearchString\").is(\":focus\"));\n if ($('#tSearchString').is(':focus')) {\n $('#searchSubmit').trigger('click')\n return false\n } else if (\n $('#sweepsName, #sweepsEmail, #sweepsCheck, #sweepsBonvoyCheck').is(\n ':focus'\n )\n ) {\n $('#sweepsBtn').trigger('click')\n return false\n } else if (\n $(\n '#landingPageSweepsName, #landingPageSweepsEmail, #landingPageSweepsCheck, #landingPageSweepsBonvoyCheck, #recaptcha-anchor'\n ).is(':focus')\n ) {\n $('#landingPageSweepsBtn').trigger('click')\n return false\n } else if ($('#emailAddress1').is(':focus')) {\n $('#emailAddress1').trigger('blur')\n $('#emailAddress1btn').trigger('click')\n return false\n } else if ($('#emailAddress2').is(':focus')) {\n $('#emailAddress2').trigger('blur')\n $('#emailAddress2btn').trigger('click')\n return false\n } else if ($('#searchUI_tbProductName').is(':focus')) {\n doSearch()\n return false\n } else if ($('#validationNbr').is(':focus')) {\n $('#validationNbr').trigger('blur')\n $('#btn_apply').trigger('click')\n return false\n }\n }\n })\n})\n\n// $(function () {\n// \t$(\"img[id^='lbImage']\").on(\"error\", function (e) {\n// \t\tCommonUtils.logError('Missing image', `Missing image - ${e.target.alt} - ${e.target.src}`);\n// \t});\n// });\n\n// On \"DOMContentLoaded\" (before the \"load\" event), calls \"HAHAccessibility.init()\"\n$(() => HAHAccessibility.init())\n","class SalesforceAbandonedCartUtils {\n static clientEmail = ''\n static catalogId = ''\n static subscriberKey = ''\n static cartOrOrderData = []\n /**\n * Defines if should log messages in the console.\n */\n static debug = false\n /**\n * Should be called as soon as possible.\n */\n static setOrganizationId(salesforceOrganizationId: string) {\n _etmc.push(['setOrgId', salesforceOrganizationId])\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Successfully set the organization id: ${salesforceOrganizationId}`\n )\n }\n }\n\n /**\n * Should be called as soon as possible.\n */\n static setCatalogId(catalogId: string) {\n SalesforceAbandonedCartUtils.catalogId = catalogId\n if (SalesforceAbandonedCartUtils.debug) {\n if (SalesforceAbandonedCartUtils.catalogId) {\n console.log(\n `Successfully set the catalog id: ${SalesforceAbandonedCartUtils.catalogId}`\n )\n } else {\n console.log(\"Couldn't set catalog id because it is not valid.\")\n }\n }\n }\n\n /**\n * Should be called after the client enters his email in:\n * - The email subscription lightbox\n * - The email subscription in the footer\n * - The email subscription in the checkout page\n */\n static setClientEmail(email: string) {\n SalesforceAbandonedCartUtils.clientEmail = email?.trim()\n if (SalesforceAbandonedCartUtils.clientEmail) {\n console.log(\n `Successfully set the client email: ${SalesforceAbandonedCartUtils.clientEmail}`\n )\n SalesforceAbandonedCartUtils.setSubscriberKey()\n } else if (SalesforceAbandonedCartUtils.debug) {\n console.log(\"Couldn't set client email because it is not valid.\")\n }\n }\n\n /**\n * Should be called after `setCatalogId` and `setClientEmail`.\n */\n private static setSubscriberKey() {\n if (\n SalesforceAbandonedCartUtils.clientEmail &&\n SalesforceAbandonedCartUtils.catalogId\n ) {\n SalesforceAbandonedCartUtils.subscriberKey = `${SalesforceAbandonedCartUtils.catalogId.toLowerCase()}_${SalesforceAbandonedCartUtils.clientEmail}`\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Successfully set subscriber key: ${SalesforceAbandonedCartUtils.subscriberKey}`\n )\n }\n } else if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n \"Couldn't set subscriber key because client email or catalog id is not valid.\"\n )\n }\n }\n\n /**\n * Should be called for each new product added to the cart (after clicking \"Add to cart\").\n */\n static addCartOrOrderData({\n item,\n quantity,\n price,\n salePrice,\n uniqueId\n }: {\n item: any\n quantity: any\n price: any\n salePrice?: any\n uniqueId: any\n }) {\n const product = {\n item: item,\n quantity: quantity,\n price: price,\n sale_price: salePrice ?? undefined,\n unique_id: uniqueId\n }\n\n const cartItem = SalesforceAbandonedCartUtils.cartOrOrderData.find(\n (el) => el.unique_id === uniqueId\n )\n\n if (cartItem) {\n cartItem.quantity = (\n Number(cartItem.quantity) + Number(quantity)\n ).toString()\n } else {\n SalesforceAbandonedCartUtils.cartOrOrderData.push(product)\n }\n\n if (SalesforceAbandonedCartUtils.debug) {\n console.log('Sucessfully added to the cart:\\n', product)\n }\n }\n\n /**\n * Sends the cart data to Salesforce.\n */\n static trackCart() {\n if (SalesforceAbandonedCartUtils.subscriberKey) {\n _etmc.push([\n 'setUserInfo',\n { email: SalesforceAbandonedCartUtils.subscriberKey }\n ])\n if (\n SalesforceAbandonedCartUtils.cartOrOrderData.length > 0 &&\n SalesforceAbandonedCartUtils.cartOrOrderData.length < 11\n ) {\n _etmc.push([\n 'trackCart',\n { cart: SalesforceAbandonedCartUtils.cartOrOrderData }\n ])\n } else {\n _etmc.push(['trackCart', { clear_cart: true }])\n }\n\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Successfully tracked the cart for ${SalesforceAbandonedCartUtils.subscriberKey} with:\\n`,\n SalesforceAbandonedCartUtils.cartOrOrderData\n )\n }\n } else {\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Couldn't track cart because subscriber key is not valid: ${SalesforceAbandonedCartUtils.subscriberKey}.`\n )\n }\n }\n }\n\n /**\n * Should be called if the order is completed by the client.\n */\n static trackConversion() {\n if (SalesforceAbandonedCartUtils.subscriberKey) {\n _etmc.push([\n 'setUserInfo',\n { email: SalesforceAbandonedCartUtils.subscriberKey }\n ])\n _etmc.push(['trackPageView'])\n _etmc.push([\n 'trackConversion',\n { cart: SalesforceAbandonedCartUtils.cartOrOrderData }\n ])\n _etmc.push(['trackCart', { clear_cart: true }])\n\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Successfully tracked the conversion for ${SalesforceAbandonedCartUtils.subscriberKey} with:\\n`,\n SalesforceAbandonedCartUtils.cartOrOrderData\n )\n }\n } else {\n if (SalesforceAbandonedCartUtils.debug) {\n console.log(\n `Couldn't track conversion because subscriber key is not valid: ${SalesforceAbandonedCartUtils.subscriberKey}.`\n )\n }\n }\n }\n}\n","function doSearch(): void {\n try {\n const searchString: string = ((\n document.getElementById('OCForm1')\n )).searchUI_tbProductName.value\n const cleanedSearchString: string = searchString\n .replace('(', '')\n .replace(')', '')\n const searchInput = document.getElementById('searchUI_tbProductName')\n if (searchString !== '' && searchString !== \"I'm looking for...\") {\n const searchButton = $('#btn_Search-Search')\n searchButton.text('').addClass('loader-light')\n const encodedSearchString: string =\n encodeURIComponent(cleanedSearchString)\n window.location.href = `search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|${encodedSearchString}&customSearchParamsSearchString=${encodedSearchString}&from=QUICKSEARCH`\n } else {\n const inputControl = searchInput.parentElement\n const errorDisplay = inputControl.querySelector('.error') as HTMLElement\n errorDisplay.innerText = 'Please enter a product name'\n inputControl.classList.add('error')\n }\n } catch (e) {}\n}\n\nfunction doQuickSearch(searchPath: string): void {\n try {\n const searchString: string = ((\n document.getElementById('OCForm1')\n )).tSearchString.value\n\tconst pageSize: number = 27\n const cleanedSearchString: string = searchString.replace(/[\\(\\)']/g, '') // Use a regular expression to replace all '(', ')', and \"'\" characters.\n const searchInput = document.getElementById('tSearchString')\n if (searchString !== '') {\n const searchButton = $('#btn_Search-Search')\n searchButton.text('').addClass('loader-light')\n const encodedSearchString: string =\n encodeURIComponent(cleanedSearchString)\n window.location.href = `${searchPath}search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|${encodedSearchString}&customSearchParamsSearchString=${encodedSearchString}&from=QUICKSEARCH&pageSize=${pageSize}`\n } else {\n const inputControl = searchInput.parentElement\n const errorDisplay = inputControl.querySelector('.error') as HTMLElement\n errorDisplay.innerText = 'Please enter a product name'\n inputControl.classList.add('error')\n }\n } catch (e) {}\n}\n","/**\n * @description This is class has static methods to deal with different situation in the site.\n */\nclass CommonUtils {\n /**\n * @description Transfoms a number into a USD currency string.\n * @example $1,000.00\n */\n static toUSD(num: number): string {\n if (isNaN(num)) return ''\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(num)\n }\n\n /**\n * @description Validates the email syntax by using regex.\n */\n static validateEmail(invalue: string): boolean {\n var regex =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$/\n var valid = regex.test(invalue)\n return valid\n }\n\n /**\n * @description Validates Canada's zip code syntax by using regex.\n */\n static isValidCaZipCode(value: string): boolean {\n var re =\n /^[ABCEGHJKLMNPRSTVXYabceghjklmnprstvxy]{1}\\d{1}[A-Za-z]{1} *\\d{1}[A-Za-z]{1}\\d{1}$/\n return re.test(value)\n }\n\n /**\n * @description Validates United States's zip code syntax by using regex.\n */\n static isValidUsZipCode(value: string): boolean {\n var re = /^\\d{5}([\\-]\\d{4})?$/\n return re.test(value)\n }\n\n /**\n * @description Creates a cookie in the browser. If `days` are not set, it won't expire.\n */\n static createCookie(name: string, value: string, days?: number): void {\n var expires = ''\n if (days) {\n var date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n expires = `; expires=${date.toUTCString()}`\n } else expires = ''\n document.cookie = `${name}=${value}${expires}; path=/`\n }\n\n /**\n * @description Erases a cookie in the browser.\n */\n static eraseCookie(name: string): void {\n CommonUtils.createCookie(name, '', -1)\n }\n\n /**\n * @description Reads a cookie from the browser.\n */\n static readCookie(name: string): string {\n var nameEQ = `${name}=`\n var ca = document.cookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n var c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length)\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length)\n }\n }\n }\n return ''\n }\n\n /**\n * @description Transforms a number / string into a currency string with (or without) a minus sign.\n * @examples\n * - -$1,000.00\n * - $1,000.00\n */\n static formatCurrency(price: number | string): string {\n price = price.toString().replace(/\\$|\\,/g, '')\n if (isNaN(Number(price))) price = '0'\n var sign = Number(price) == (price = Math.abs(Number(price)))\n price = Math.floor(price * 100 + 0.50000000001)\n var cents: number | string = price % 100\n price = Math.floor(price / 100).toString()\n if (cents < 10) cents = `0${cents}`\n for (var i = 0; i < Math.floor((price.length - (1 + i)) / 3); i++)\n price = `${price.substring(0, price.length - (4 * i + 3))},${price.substring(price.length - (4 * i + 3))}`\n return `${sign ? '' : '-'}$${price}.${cents}`\n }\n\n /**\n * @description Transforms a number / string into a string representing a number.\n */\n static formatPoints(points: number | string): string {\n\n\t\tif (!points) {\n\t\t\treturn ''\n\t\t}\n\n points = points.toString().replace(/\\$|\\,/g, '')\n for (var i = 0; i < Math.floor((points.length - (1 + i)) / 3); i++)\n points = `${points.substring(0, points.length - (4 * i + 3))},${points.substring(points.length - (4 * i + 3))}`\n return points\n }\n\n /**\n * @description Used to read XML response from the back-end.\n */\n static getXMLDataSetTableCount(dsName: string, xmlString: string): number {\n var returnValue = -1\n var datasetStartIndex = xmlString\n .toLowerCase()\n .indexOf(`<${dsName.toLowerCase()}>`)\n var datasetEndIndex = xmlString\n .toLowerCase()\n .indexOf(``)\n var fieldStartIndex = -1\n var fieldEndIndex = -1\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n fieldStartIndex = xmlString\n .toLowerCase()\n .indexOf(''.toLowerCase(), datasetStartIndex)\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex = `${fieldStartIndex}`.toLowerCase().length\n fieldEndIndex = xmlString\n .toLowerCase()\n .indexOf(''.toLowerCase(), fieldStartIndex)\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = Number.parseInt(\n xmlString.substring(fieldStartIndex, fieldEndIndex)\n )\n }\n }\n }\n return returnValue\n }\n\n /**\n * @description Used to read XML response from the back-end.\n */\n static getXMLDataTableRowCount(\n dsName: string,\n dtIndex: number,\n xmlString: string\n ): number {\n var returnValue = -1\n var datasetStartIndex = xmlString\n .toLowerCase()\n .indexOf(`<${dsName.toLowerCase()}>`)\n var datasetEndIndex = xmlString\n .toLowerCase()\n .indexOf(``)\n var fieldStartIndex = -1\n var fieldEndIndex = -1\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n //1\n fieldStartIndex = xmlString\n .toLowerCase()\n .indexOf(``.toLowerCase(), datasetStartIndex)\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex =\n fieldStartIndex + ``.toLowerCase().length\n fieldEndIndex = xmlString\n .toLowerCase()\n .indexOf(``.toLowerCase(), fieldStartIndex)\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = Number.parseInt(\n xmlString.substring(fieldStartIndex, fieldEndIndex)\n )\n }\n }\n }\n return returnValue\n }\n\n /**\n * @description Used to read XML response from the back-end.\n */\n static getXMLDataFieldValue(\n dsName: string,\n dtIndex: number,\n rowIndex: number,\n fieldName: string,\n xmlString: string\n ): string {\n var returnValue = ''\n var datasetStartIndex = xmlString\n .toLowerCase()\n .indexOf(`<${dsName.toLowerCase()}>`)\n var datasetEndIndex = xmlString\n .toLowerCase()\n .indexOf(``)\n var fieldStartIndex = -1\n var fieldEndIndex = -1\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n fieldStartIndex = xmlString\n .toLowerCase()\n .indexOf(\n ``.toLowerCase(),\n datasetStartIndex\n )\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex =\n fieldStartIndex +\n ``.toLowerCase().length\n fieldEndIndex = xmlString\n .toLowerCase()\n .indexOf(\n ``.toLowerCase(),\n fieldStartIndex\n )\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = xmlString.substring(fieldStartIndex, fieldEndIndex)\n }\n }\n }\n return returnValue\n }\n\n /**\n * @description Used to read XML response from the back-end.\n */\n static getXMLTagValue(tagName: string, xmlString: string): string {\n let tagValue = ''\n const tagStartIndex = xmlString\n .toLowerCase()\n .indexOf(`<${tagName.toLowerCase()}>`)\n const tagEndIndex = xmlString\n .toLowerCase()\n .indexOf(``)\n if (tagStartIndex > -1 && tagStartIndex < tagEndIndex) {\n tagValue = xmlString.substring(\n tagStartIndex + tagName.length + 2,\n tagEndIndex\n )\n }\n return tagValue\n }\n\n /**\n * @description Removes bad numbers from a string.\n */\n static removeBadNumbers(inNumber: string): string {\n var tmpNumber = ''\n for (var i = 0; i < inNumber.length; i++) {\n var tmpStr = inNumber.substring(i, i + 1)\n if (tmpStr === '-' || tmpStr === ' ' || isNaN(Number(tmpStr))) {\n } else {\n tmpNumber = tmpNumber + inNumber.substring(i, i + 1)\n }\n }\n return tmpNumber\n }\n\n /**\n * @description Sets a cookie in the browser.\n */\n static setCookie(c_name: string, value: string, exdays?: number): void {\n var exdate = new Date()\n exdate.setDate(exdate.getDate() + exdays)\n var c_value = `${encodeURIComponent(value)} ${exdays === null ? '' : `; expires=${exdate.toUTCString()}`};path = /`\n document.cookie = `${c_name}=${c_value}`\n }\n\n /**\n * @description Gets a cookie from the browser.\n */\n static getCookie(c_name: string): string | null {\n var c_value = document.cookie\n var c_start = c_value.indexOf(` ${c_name}=`)\n if (c_start === -1) {\n c_start = c_value.indexOf(`${c_name}=`)\n }\n if (c_start === -1) {\n c_value = null\n } else {\n c_start = c_value.indexOf('=', c_start) + 1\n var c_end = c_value.indexOf(';', c_start)\n if (c_end === -1) {\n c_end = c_value.length\n }\n c_value = decodeURIComponent(c_value.substring(c_start, c_end))\n }\n return c_value\n }\n\n /**\n * @description Toggles the loader visibility.\n */\n static showHideLoader(action: string, productIndex: number): void {\n var loader = document.getElementById(`loader${productIndex}`)\n var atc = document.getElementById(`ATC${productIndex}`)\n if (action === 'show') {\n try {\n loader.style.display = ''\n loader.style.visibility = 'visible'\n atc.style.display = 'none'\n atc.style.visibility = 'hidden'\n } catch (e) {}\n } else if (action === 'hide') {\n try {\n loader.style.display = 'none'\n loader.style.visibility = 'hidden'\n atc.style.display = ''\n atc.style.visibility = 'visible'\n } catch (e) {}\n }\n }\n\n /**\n * @description Shows an HTML element based on a given HTML selector with specified display style.\n * @param sel - The HTML selector of the element to show.\n * @param elementIndex - Optional index if the selector matches multiple elements (default is 0).\n * @param display - Optional display style ('block' or 'flex') to apply to the element (default is 'block').\n */\n static showElement(\n sel: string,\n elementIndex = 0,\n display: 'block' | 'flex' = 'block'\n ): void {\n sel = sel.replace('#', '')\n const element: any = document.getElementById(sel)\n if (element) {\n if (element.length === undefined || element.nodeName === 'SELECT') {\n element.style.display = display\n element.style.visibility = 'visible'\n } else {\n if (element[elementIndex]) {\n element[elementIndex].style.display = display\n element[elementIndex].style.visibility = 'visible'\n }\n }\n }\n }\n\n /**\n * @description Hides an HTML element based on a given HTML selector.\n */\n static hideElement(sel: string, elementIndex = 0): void {\n sel = sel.replace('#', '')\n const element: any = document.getElementById(sel)\n if (element) {\n if (element.length === undefined || element.nodeName === 'SELECT') {\n element.style.display = 'none'\n element.style.visibility = 'hidden'\n } else {\n element[elementIndex].style.display = 'none'\n element[elementIndex].style.visibility = 'hidden'\n }\n }\n }\n\n /**\n * @description Gets the response of a XMLHttpRequest.\n */\n static getAjaxObject(): boolean {\n var returnValue: any = false\n try {\n returnValue = new XMLHttpRequest()\n } catch (trymicrosoft) {\n try {\n returnValue = new ActiveXObject('Msxml2.XMLHTTP')\n } catch (othermicrosoft) {\n try {\n returnValue = new ActiveXObject('Microsoft.XMLHTTP')\n } catch (failed) {\n alert(failed.message)\n returnValue = false\n }\n }\n }\n return returnValue\n }\n\n /**\n * @description Sends error to Google Analytics.\n */\n static trackError(\n eventCategory: string,\n eventAction: string,\n eventLabel: string,\n eventParams?: any\n ): void {\n dataLayer.push({\n event: 'trackErrorEvent',\n event_category: eventCategory,\n event_action: eventAction,\n event_label: eventLabel,\n event_value: 1\n })\n if (typeof eventParams === 'object') {\n if (eventParams.event === 'placePointsOrderError') {\n dataLayer.push({\n event: eventParams.event,\n detail: {\n email: window.btoa(encodeURIComponent(eventParams.email)),\n bonvoyEmail: window.btoa(\n encodeURIComponent(eventParams.bonvoyEmail)\n ),\n bonvoyNumber: window.btoa(\n encodeURIComponent(eventParams.bonvoyNumber)\n ),\n pointsToRedeem: eventParams.pointsToRedeem,\n errorMessage: eventParams.errorMessage\n }\n })\n }\n }\n }\n\n /**\n * @description Sends error to API.\n */\n static logError(errorType: string, errorMsg: string): void {\n try {\n fetch(errorLogAPIURL, {\n method: 'POST',\n mode: 'no-cors',\n headers: {\n 'Content-Type': 'text/plain'\n },\n body: JSON.stringify({\n brand: 'CSMO',\n page: window.location.href,\n errorType: errorType,\n errorMsg: errorMsg\n })\n })\n } catch (error) {\n console.log(error)\n }\n }\n\n /**\n * @description Toggles the purchase type (can be \"points\" or \"cash\").\n */\n static swapPurchaseType(event: any): void {\n event.preventDefault()\n $(this)\n .addClass('opened')\n .attr('tabindex', '-1')\n .trigger('focus')\n .attr('aria-expanded', 'true')\n .removeClass('closed')\n .next('div:hidden')\n .slideDown('fast')\n .siblings('div:visible')\n .slideUp('fast')\n .prev()\n .removeClass('opened')\n .addClass('closed')\n .attr('tabindex', '0')\n .attr('aria-expanded', 'false')\n }\n static getInvtIDCategory(invtID: string, alternateID: string): { invtID: string, alternateID: string, category: string, categoryID: string } {\n\t let invtIDCategory = { invtID: '', alternateID: '', category: '', categoryID: '' }\n\t if (localStorage['invtid_category'] !== '' && localStorage['invtid_category'] !== undefined) {\n\t\t const invtIDCategoryArray = JSON.parse(localStorage['invtid_category'])\n\t\t const found = invtIDCategoryArray.find((elem: { invtID: string, alternateID: string }) => elem.invtID === invtID && elem.alternateID === alternateID)\n\t\t if (found !== undefined) { invtIDCategory = found }\n\t }\n\t return invtIDCategory\n }\n\n\t/**\n\t * Parses a string of XML data and returns its text content.\n\t *\n\t * @param {string} string - The XML string to parse.\n\t * @returns {string | null} The text content of the XML string, or null if the XML string has no text content.\n\t */\n\tstatic parseXMLData(string: string): string | null {\n\t\tvar parser = new DOMParser()\n\t\tvar xmlDoc = parser.parseFromString('' + string + '', 'text/xml')\n\t\tvar decodedContent = xmlDoc.documentElement.textContent\n\t\treturn decodedContent\n\t}\n}\n\n/** Sometimes the back-end sends code to be executed in the front-end.\n * These functions needs to be defined at the window level to avoid breaking the site.\n */\nfunction createCookie(name: string, value: string, days?: number): void {\n CommonUtils.createCookie(name, value, days)\n}\nfunction eraseCookie(name: string): void {\n CommonUtils.createCookie(name, '', -1)\n}\nfunction readCookie(name: string): string {\n return CommonUtils.readCookie(name)\n}\n\n// The line below is needed to make it available on jest tests environment without using \"export\".\nif (!(window as any).CommonUtils) (window as any).CommonUtils = CommonUtils\n\n// Function to set error message, toggle error class, and manage error icon\nfunction setError(elementId, message, isValid) {\n const inputControl = document.getElementById(elementId)\n ?.parentElement as HTMLElement | null\n const errorDisplay = inputControl?.querySelector(\n '.error'\n ) as HTMLElement | null\n let iconElement = inputControl?.querySelector('.icon') as HTMLElement | null\n\n if (!inputControl || !errorDisplay) return\n\n if (!iconElement) {\n iconElement = document.createElement('div')\n iconElement.className = 'icon'\n inputControl.appendChild(iconElement)\n }\n\n errorDisplay.textContent = isValid ? '' : message\n inputControl.classList.toggle('error', !isValid)\n iconElement.style.backgroundImage = isValid\n ? \"url('images/misc/check-icon.svg')\"\n : \"url('images/misc/error-icon.svg')\"\n}\n\nconst validateCardCodeFunction = (index: number) => {\n\treturn (value: string) => {\n\t\tconst cardType = (document.getElementById(`paymentTypeUI_ddlOrderCardType${index}`)).value\n\t\treturn patterns[(cardType != 'A' && cardType != 'G') ? 'cvv' : 'amxCardId'].test(value)\n\t}\n} \n\n// Define regular expressions\nconst patterns: { [key: string]: RegExp } = {\n email: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n name: /^[a-zA-Z\\s.-]*$/,\n address: /^(?=.*\\d)[a-zA-Z0-9\\s.,#\\-ºâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙáéíóúÁÉÍÓÚüÜçÇñÑ]*$/,\n city: /^[a-zA-Z\\s]*$/,\n zip: /^\\d{5}$/,\n phone: /^\\+?[0-9]{5,15}$/,\n cvv: /^\\d{1,3}$/,\n creditCard: /\\b(?:\\d[ -]*?){13,16}\\b/,\n\tamxCardId:/^\\d{4}$/\n}\n\n// Function to validate form field\nfunction validateField(inputElement: HTMLInputElement) {\n\tconst elementId = inputElement.id\n\tconst value = inputElement.value.trim()\n\tlet isValid = true\n\tlet errorMessage = ''\n\n\tif (formElements.hasOwnProperty(elementId)) {\n\t\tconst elementType = formElements[elementId].type\n\t\tconst customFieldValidation = formElements[elementId].fieldValidation\n\n\t\tif(customFieldValidation) {\n\t\t\tisValid = customFieldValidation(value)\n\t\t} else {\n\t\t\tif (patterns.hasOwnProperty(elementType)) {\n\t\t\t\tisValid = patterns[elementType].test(value)\n\t\t\t}\n\t\t}\n\n\t\terrorMessage = formElements[elementId].errMessage\n\t}\n\tif (isValid && !value) {\n\t\tisValid = false\n\t}\n\n\tsetError(elementId, errorMessage, isValid)\n}\n\n// Function to attach event listeners to form elements\nfunction attachEventListeners(elementIds: string[]) {\n elementIds.forEach((elementId) => {\n const inputElement = document.getElementById(\n elementId\n ) as HTMLInputElement | null\n if (inputElement) {\n inputElement.addEventListener('blur', () => {\n validateField(inputElement)\n })\n }\n })\n}\n\n// Define form elements\nconst formElements = {\n emailAddress: {\n type: 'email',\n errMessage: 'You must enter a valid email address.'\n },\n addressUI_tbBillAddressName: {\n type: 'name',\n errMessage: 'You must enter a Billing Name.'\n },\n addressUI_tbBillAddressFirstName: {\n type: 'name',\n errMessage: 'You must enter a Billing First Name.'\n },\n addressUI_tbBillAddressLastName: {\n type: 'name',\n errMessage: 'You must enter a Billing Last Name.'\n },\n addressUI_tbBillAddr1: {\n type: 'address',\n errMessage: 'Include your street number to proceed.'\n },\n addressUI_tbBillAddr2: { type: 'text' },\n addressUI_tbBillAddrCity: {\n type: 'city',\n errMessage: 'You must enter a Billing City.'\n },\n addressUI_tbShipAddressName: {\n type: 'name',\n errMessage: 'You must enter a Shipping Name.'\n },\n addressUI_tbShipAddressFirstName: {\n type: 'name',\n errMessage: 'You must enter a Shipping First Name.'\n },\n addressUI_tbShipAddressLastName: {\n type: 'name',\n errMessage: 'You must enter a Shipping Last Name.'\n },\n addressUI_tbShipAddr1: {\n type: 'address',\n errMessage: 'Include your street number to proceed.'\n },\n addressUI_tbShipAddr2: { type: 'text' },\n addressUI_tbShipAddrCity: {\n type: 'city',\n errMessage: 'You must enter a Shipping City.'\n },\n addressUI_tbBillAddrZip: {\n type: 'zip',\n errMessage: 'You must enter a valid Billing Postal Code.'\n },\n addressUI_tbShipAddrZip: {\n type: 'zip',\n errMessage: 'You must enter a valid Shipping Postal Code.'\n },\n addressUI_tbBillAddrPhone: {\n type: 'phone',\n errMessage: 'You must enter a Billing Phone Number.'\n },\n addressUI_tbShipAddrPhone: {\n type: 'phone',\n errMessage: 'You must enter a Shipping Phone Number.'\n },\n addressUI_ddlBillAddrCountry: { type: 'selectbox', errMessage: '' },\n addressUI_ddlBillAddrState: {\n type: 'selectbox',\n errMessage: 'You must enter a Billing State/Province.',\n hiddenInputIDs: ['addressUI_hBillAddrState', 'hBillState']\n },\n addressUI_ddlShipAddrCountry: { type: 'selectbox', errMessage: '' },\n addressUI_ddlShipAddrState: {\n type: 'selectbox',\n errMessage: 'You must enter a Shipping State/Province.',\n hiddenInputIDs: ['addressUI_hShipAddrState', 'hShipState']\n },\n addressUI_cSameAsShipping: { type: 'checkbox', errMessage: '' },\n FirstName: { type: 'name', errMessage: 'You must enter a your First Name.' },\n LastName: { type: 'name', errMessage: 'You must enter a your Last Name.' },\n Phone: { type: 'phone', errMessage: 'You must enter a Phone Number.' },\n paymentTypeUI_tbCreditCardName: {\n type: 'name',\n errMessage: 'You must enter the Name on card.'\n },\n paymentTypeUI_tbCreditCardCode: {\n type: 'cvv',\n errMessage: 'You must enter a valid CVV.',\n\t\tfieldValidation: validateCardCodeFunction(1) \n },\n paymentTypeUI_tbCreditCardName2: {\n type: 'name',\n errMessage: 'You must enter the Name on card.'\n },\n paymentTypeUI_tbCreditCardCode2: {\n type: 'cvv',\n errMessage: 'You must enter a valid CVV.',\n\t\tfieldValidation: validateCardCodeFunction(2) \n },\n paymentTypeUI_tbCreditCardNumber: {\n type: 'creditCard',\n errMessage: 'You must enter a valid Credit card number.'\n },\n paymentTypeUI_tbCreditCardNumber2: {\n type: 'creditCard',\n errMessage: 'You must enter a valid Credit card number.'\n }\n}\n\n// Attach event listeners after DOM content is loaded\ndocument.addEventListener('DOMContentLoaded', () => {\n // Assuming you have an array of element IDs to attach the event listener to\n const elementIds: string[] = [\n 'addressUI_tbBillAddressFirstName',\n 'addressUI_tbBillAddressLastName',\n 'addressUI_tbBillAddressName',\n 'addressUI_tbBillAddressName',\n 'addressUI_tbBillAddrPhone',\n 'addressUI_tbBillAddr1',\n 'addressUI_tbBillAddrCity',\n 'addressUI_ddlBillAddrState',\n 'addressUI_tbBillAddrState',\n 'addressUI_tbBillAddrZip',\n 'addressUI_tbShipAddressFirstName',\n 'addressUI_tbShipAddressLastName',\n 'addressUI_tbShipAddressName',\n 'addressUI_tbShipAddrPhone',\n 'addressUI_tbShipAddr1',\n 'addressUI_ddlShipAddrCountry',\n 'addressUI_tbShipAddrCity',\n 'addressUI_ddlShipAddrState',\n 'addressUI_tbShipAddrState',\n 'addressUI_tbShipAddrZip',\n 'emailAddress',\n 'FirstName',\n 'LastName',\n 'Phone',\n 'paymentTypeUI_tbCreditCardName',\n 'paymentTypeUI_tbCreditCardCode',\n 'addressUI_ddlBillAddrCountry',\n 'paymentTypeUI_tbCreditCardName2',\n 'paymentTypeUI_tbCreditCardCode2',\n 'paymentTypeUI_tbCreditCardNumber',\n 'paymentTypeUI_tbCreditCardNumber2'\n ]\n\n // Attach the event listener to each element\n attachEventListeners(elementIds)\n})\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const increaseBtns = document.querySelectorAll('.increase-btn')\n const decreaseBtns = document.querySelectorAll('.decrease-btn')\n increaseBtns.forEach((increaseBtn) => {\n increaseBtn.addEventListener('click', function () {\n const quantityInput = this.parentNode.querySelector(\n 'input[name=\"quantity\"]'\n )\n if (quantityInput) {\n let currentValue = Number.parseInt(quantityInput.value)\n currentValue = isNaN(currentValue) ? 1 : currentValue // If value is NaN, default to 1\n currentValue = Math.min(\n currentValue + 1,\n Number.parseInt(quantityInput.max)\n ) \n\t\t\t\t\n\t\t\t\t// Update aria-label for screen reader\n\t\t\t\tconst ariaLabelFirstPart = quantityInput.ariaLabel.split(':')[0]\n\t\t\t\tquantityInput.ariaLabel = `${ariaLabelFirstPart}: ${currentValue.toString()}`\n\t\t\t\t\n\t\t\t\t// Increase value but not exceeding max\n quantityInput.value = currentValue.toString()\n }\n })\n })\n\n decreaseBtns.forEach((decreaseBtn) => {\n decreaseBtn.addEventListener('click', function () {\n const quantityInput: HTMLInputElement = this.parentNode.querySelector(\n 'input[name=\"quantity\"]'\n )\n if (quantityInput) {\n let currentValue = Number.parseInt(quantityInput.value)\n currentValue = isNaN(currentValue) ? 1 : currentValue // If value is NaN, default to 1\n currentValue = Math.max(\n currentValue - 1,\n Number.parseInt(quantityInput.min)\n ) \n\t\t\t\t\n\t\t\t\t// Update aria-label for screen reader\n\t\t\t\tconst ariaLabelFirstPart = quantityInput.ariaLabel.split(':')[0]\n\t\t\t\tquantityInput.ariaLabel = `${ariaLabelFirstPart}: ${currentValue.toString()}`\n\t\t\t\t\n\t\t\t\t// Decrease value but not below min\n quantityInput.value = currentValue.toString()\n }\n })\n })\n})\n"]}