{"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","eventHandler","e","stopPropagation","isTabPressed","keyCode","isEscapePressed","shiftKey","document","activeElement","focus","preventDefault","closeTrapFocus","closeHTMLElement","triggerHTMLElement","unbindEventsToFocusableElements","unbindEvents","forEach","element","removeEventListener","container","closeElement","additionalCloseElements","tablistUpdateElements","firstElementToFocus","querySelector","addEventListener","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","altDialogText","triggerElementId","includes","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","onKeydown","call","_loop","k","_loop3","_loop2","allNavLink","l","currentLink","indexMenu","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","index","moveFocusToTab","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","toPrimitive","String","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","email","source","action","_ref2$showLightboxMes","showLightboxMessage","_ref2$name","_ref2$campaign","campaign","_ref2$callback","callback","payload","apiGatewayUrl","response","data","_context","showLightbox","dilogBox","scrollTo","emailId","getTimeZone","fetch","headers","Content-Type","body","JSON","stringify","json","t0","_x","vars","search","substring","split","paramsPresent","CommonUtils","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","alertMessage","test","validateEmail","_callee2","emailStatus","agreeToReceiveEmails","isActive","dateInserted","dateUpdated","now","diffInMilliseconds","_context2","sessionStorage","setItem","SalesforceAbandonedCartUtils","setClientEmail","trackCart","callLambda","StatusCode","dataLayer","event_category","event_action","event_label","event_value","isUnsubscribed","Payload","parse","status","_unused","_unused2","abs","getTime","_unused3","_x2","_x3","_x4","checkoutPageSubscribeCheckbox","is","emailValue","val","sweepsChecked","validateSweeps","landingPageSweepsChecked","hideLandingPageSweepsForm","inputControl","closest","addClass","_ref3","_callee3","_yield$Promise","result","_context3","getItem","_reject","_err","toggleEmailStatusInSalesforce","_x5","_ref4","_callee4","_yield$Promise2","_context4","_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","input","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","setDate","getDate","c_value","c_end","c_start","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","string","DOMParser","parseFromString","documentElement","textContent","invtID","alternateID","found","invtIDCategory","category","categoryID","localStorage","eraseCookie","readCookie","setError","elementId","isValid","_document$getElementB","iconElement","createElement","className","appendChild","toggle","backgroundImage","validateCardCodeFunction","cardType","patterns","address","city","phone","cvv","amxCardId","validateField","inputElement","elementType","customFieldValidation","id","formElements","fieldValidation","errMessage","attachEventListeners","elementIds","validateZipCode","zipCode","countryCode","isValidUsZipCode","isValidCaZipCode","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","shippingCountryCode","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_tbCreditCardCode2","increaseBtns","decreaseBtns","increaseBtn","_this$parentNode","_this$parentNode2","currentValue","quantityInput","decreaseBtn","HTMLInputElement","HTMLButtonElement","min","max","disabled","_this$parentNode3","_this$parentNode4"],"mappings":"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","file":"../common.min.js","sourcesContent":["class HAHAccessibility {\n\n\t/** \n\t * Defines if should log in the console the current element selected by tab key.\n\t * Should be `false` if on production.\n\t */\n\tstatic LOG_ACTIVE_ELEMENT: boolean = false\n\n\t/** \n\t * Defines if should warn in the console if the page doesn't all necessary landmarks. \n\t * Should be `false` if on production.\n\t */\n\tstatic WARN_MISSING_LANDMARKS: boolean = false\n\n\t/**\n\t * Defines if should log debug informations when calling `trapFocus` function.\n\t * Should be `false` if on production.\n\t */\n\tstatic DEBUG_TRAP_FOCUS: boolean = false\n\n\t/**\n\t * Defines the Fancybox version. Can be `2` or `4`.\n\t * This will change the `init` method behavior.\n\t */\n\tstatic FANCYBOX_VERSION: number = 2\n\n\tstatic selectors = {\n\t\tmainNavList: '#main-nav',\n\t\tnavList: '#side-nav',\n\t\ttabLists: '[role=tablist]',\n\t\tfocusableElements: 'input[type=\"text\"]:not([disabled]), ' // inputs of type \"text\" that are not disabled\n\t\t\t+ 'input[type=\"radio\"]:not([disabled]), ' // inputs of type \"radio\" that are not disabled\n\t\t\t+ 'input[type=\"checkbox\"]:not([disabled]), ' // inputs of type \"checkbox\" that are not disabled\n\t\t\t+ 'input[type=\"email\"]:not([disabled]), ' // inputs of type \"email\" that are not disabled\n\t\t\t+ 'input[type=\"button\"]:not([disabled]), ' // inputs of type \"button\" that are not disabled\n\t\t\t+ 'input[type=\"search\"]:not([disabled]), ' // inputs of type \"search\" that are not disabled\n\t\t\t+ 'input[type=\"number\"]:not([disabled]), ' // inputs of type \"search\" that are not disabled\n\t\t\t+ 'textarea:not([disabled]), ' // textareas that are not disabled\n\t\t\t+ 'select:not([disabled]), ' // selects that are not disabled\n\t\t\t+ 'a[href]:not([disabled]), ' // links that has \"href\" attribute and are not disabled \n\t\t\t+ 'button:not([disabled]), ' // buttons that are not disabled\n\t\t\t+ '[data-focusable=\"true\"]', // buttons that are not disabled\n\t\tnavigationBar: {\n\t\t\tmenuItems: '.dropdown',\n\t\t\tlinkMenuItems: '.dropdownLink',\n\t\t\tsubMenuItems: '.submenuContainer',\n\t\t\tsubMenuItem: '[role=\"menuitem\"]'\n\t\t},\n\t\ttabsManual: {\n\t\t\ttabs: '[role=tab]'\n\t\t},\n\t\tradioGroup: {\n\t\t\tradioItems: '[role=radio]'\n\t\t}\n\t}\n\n\t/** Trap the tab navigation focus */\n\tstatic trapFocus({\n\t\tcontainer,\n\t\tcloseElement,\n\t\tadditionalCloseElements,\n\t\ttablistUpdateElements,\n\t\ttriggerHTMLElement,\n\t\tfirstElementToFocus,\n\t\tunbindEvents\n\t}: {\n\n\t\t/**\n\t\t * The modal / container where the focus should be trapped.\n\t\t */\n\t\tcontainer: string,\n\n\t\t/**\n\t\t * The element that `closeTrapFocus` function will `click` to close the modal.\n\t\t */\n\t\tcloseElement: string,\n\n\t\t/**\n\t\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t\t * will call the `closeTrapFocus` function.\n\t\t */\n\t\tadditionalCloseElements?: string[],\n\n\t\t/**\n\t\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t\t * will restore the focusable elements inside the container.\n\t\t * For example, in a carousel with images, that array would have the \n\t\t * \"previous\" and \"next\" buttons.\n\t\t */\n\t\ttablistUpdateElements?: string[],\n\n\t\t/**\n\t\t * The element that opened the modal / the element where to focus should go\n\t\t * after closing the modal.\n\t\t */\n\t\ttriggerHTMLElement?: HTMLElement,\n\n\t\t/**\n\t\t * The element that should be focused after opening the modal.\n\t\t * If not defined it will be automatically defined.\n\t\t */\n\t\tfirstElementToFocus?: string,\n\t\t/**\n\t\t * Unable the events to be unbinded after closing the modal.\n\t\t * Should be true for trapFocus where tablistUpdateElements is defined.\n\t\t */\n\t\tunbindEvents?: boolean,\n\t}): void {\n\t\tconst containerHTMLElement: HTMLElement = document.querySelector(container)\n\t\tconst closeHTMLElement: HTMLElement = document.querySelector(closeElement)\n\n\t\tlet focusableElementsNL: NodeListOf\n\t\tlet focusableElements: Element[]\n\t\tlet firstFocusableEl: Element\n\t\tlet lastFocusableEl: Element\n\n\t\tconst KEYCODE_TAB = 9\n\n\t\tconst setFocusables = () => {\n\t\t\tfocusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements)\n\t\t\tfocusableElements = Array.from(focusableElementsNL).filter((el: Element) => (el as HTMLElement).tabIndex !== -1)\n\t\t\tfirstFocusableEl = focusableElements[0]\n\t\t\tlastFocusableEl = focusableElements[focusableElements.length - 1]\n\t\t\tbindEventsToFocusableElements()\n\t\t}\n\n\t\tconst eventHandler = (e: KeyboardEvent) => {\n\t\t\te.stopPropagation()\n\t\t\tconst isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB)\n\t\t\tconst isEscapePressed = e.key === 'Escape'\n\n\t\t\tif (!isTabPressed && !isEscapePressed) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If pressed tab\n\t\t\tif (isTabPressed) {\n\n\t\t\t\t// If pressed shift + tab\n\t\t\t\tif (e.shiftKey) {\n\n\t\t\t\t\t// If the active element is the first focusable element,\n\t\t\t\t\t// focus in the last focusable element.\n\t\t\t\t\tif (document.activeElement === firstFocusableEl) {\n\t\t\t\t\t\t(lastFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If pressed only tab\n\t\t\t\telse {\n\n\t\t\t\t\t// If the active element is the last focusable element,\n\t\t\t\t\t// focus in the first focusable element.\n\t\t\t\t\tif (document.activeElement === lastFocusableEl) {\n\t\t\t\t\t\t(firstFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If pressed escape\n\t\t\tif (isEscapePressed) {\n\t\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t\t}\n\t\t}\n\n\t\tconst bindEventsToFocusableElements = () => {\n\t\t\tfocusableElements.forEach((element) => {\n\t\t\t\telement.addEventListener('keydown', eventHandler)\n\t\t\t})\n\t\t}\n\n\t\tconst unbindEventsToFocusableElements = () => {\n\t\t\tif (unbindEvents) {\n\t\t\t\tfocusableElements.forEach((element) => {\n\t\t\t\t\telement.removeEventListener('keydown', eventHandler)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tsetFocusables()\n\n\t\tadditionalCloseElements?.forEach((element: string) => {\n\t\t\tconst altCloseHTMLElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\t\taltCloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\tHAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t\t\t}\n\t\t\t})\n\t\t\taltCloseHTMLElement.addEventListener('click', (e) => {\n\t\t\t\tHAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t\t})\n\t\t})\n\n\t\tif (HAHAccessibility.DEBUG_TRAP_FOCUS) {\n\t\t\tconsole.log('focusableElements', focusableElements)\n\t\t\tconsole.log('firstFocusableEl', firstFocusableEl)\n\t\t\tconsole.log('lastFocusableEl', lastFocusableEl)\n\t\t}\n\t\tcloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\tunbindEventsToFocusableElements()\n\t\t\t}\n\t\t})\n\n\t\tcloseHTMLElement.addEventListener('click', () => {\n\t\t\tunbindEventsToFocusableElements()\n\t\t})\n\n\t\ttablistUpdateElements?.forEach((element) => {\n\t\t\tconst updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\t\tif (updaterElement) {\n\t\t\t\tupdaterElement.addEventListener('keypress', (e) => {\n\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\tsetFocusables()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tupdaterElement.addEventListener('click', (e) => {\n\t\t\t\t\tsetFocusables()\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\tif (firstElementToFocus) {\n\t\t\tconst firstElementToFocusHTMLElement: HTMLElement = containerHTMLElement.querySelector(firstElementToFocus)\n\t\t\tfirstElementToFocusHTMLElement.focus()\n\t\t} else {\n\t\t\t(firstFocusableEl as HTMLElement).focus()\n\t\t}\n\t}\n\n\t/** Trap the tab focus inside the Fancybox 4 modal dialog */\n\tstatic trapFocusFancybox4({\n\t\tcontainer,\n\t\tcloseElement,\n\t\tadditionalCloseElements,\n\t\ttablistUpdateElements,\n\t\ttriggerHTMLElement,\n\t\timageAltText\n\t}: {\n\t\tcontainer: string,\n\t\tcloseElement: string,\n\t\tadditionalCloseElements?: string[],\n\t\ttablistUpdateElements?: string[],\n\t\ttriggerHTMLElement?: HTMLElement,\n\t\timageAltText?: string\n\t}): void {\n\n\t\tconst containerHTMLElement: HTMLElement = document.querySelector(container)\n\t\tconst closeHTMLElement: HTMLElement = document.querySelector(closeElement)\n\n\t\tlet focusableElementsNL: NodeListOf\n\t\tlet focusableElements: Element[]\n\t\tlet firstFocusableEl: Element\n\t\tlet lastFocusableEl: Element\n\n\t\tconst setFocusables = (trigger?: string) => {\n\n\t\t\tfocusableElements && unbindEventsToFocusableElements()\n\t\t\tfocusableElements = []\n\t\t\tfocusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements)\n\t\t\tconst currentSlide = containerHTMLElement.querySelector('.fancybox__slide.is-selected')\n\t\t\tlet currentSlideIndex = Number(currentSlide.getAttribute('data-index'))\n\n\t\t\tif (trigger === 'Next') {\n\t\t\t\tcurrentSlideIndex += 1\n\t\t\t} else if (trigger === 'Previous') {\n\t\t\t\tcurrentSlideIndex -= 1\n\t\t\t}\n\n\t\t\tfocusableElements = Array.from(focusableElementsNL).filter((el: Element, _index: number) => {\n\t\t\t\tif ((el as HTMLElement).title !== 'Close') return true\n\t\t\t\tif ((el as HTMLElement).title === 'Close') {\n\t\t\t\t\tconst closeButtonIndex = Number((el.parentNode.parentNode as HTMLElement).getAttribute('data-index'))\n\t\t\t\t\tif (closeButtonIndex === currentSlideIndex) return true\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tif (imageAltText) {\n\t\t\t\t$(`[data-index=\"${currentSlideIndex}\"] .fancybox__image`).attr('alt', imageAltText)\n\t\t\t}\n\n\t\t\tfirstFocusableEl = focusableElements[0]\n\t\t\tlastFocusableEl = focusableElements[focusableElements.length - 1]\n\n\t\t\tbindEventsToFocusableElements()\n\t\t}\n\n\t\tconst KEYCODE_TAB = 9\n\n\t\tadditionalCloseElements?.forEach(element => {\n\t\t\tconst altCloseHTMLElement: HTMLElement = document.querySelector(element)\n\t\t\taltCloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t\t\tif (altCloseHTMLElement !== e.target) return\n\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t\t\t}\n\t\t\t})\n\t\t\taltCloseHTMLElement.addEventListener('click', (e) => {\n\t\t\t\tif (altCloseHTMLElement !== e.target) return\n\t\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t\t})\n\t\t})\n\n\t\tconst eventHandler = (e: KeyboardEvent) => {\n\t\t\tlet isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB)\n\t\t\tlet isEscapePressed = e.key === 'Escape'\n\n\t\t\tif (!isTabPressed && !isEscapePressed) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (isTabPressed) {\n\t\t\t\tconst elementIndex = focusableElements.indexOf(document.activeElement)\n\t\t\t\tif (e.shiftKey) /* shift + tab */ {\n\t\t\t\t\tif (elementIndex === 0) {\n\t\t\t\t\t\t(lastFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t} else if (elementIndex > 0) {\n\t\t\t\t\t\t(focusableElements[elementIndex - 1] as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(lastFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t} else /* tab */ {\n\t\t\t\t\tif (elementIndex === focusableElements.length - 1) {\n\t\t\t\t\t\t(firstFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t} else if (elementIndex >= 0) {\n\t\t\t\t\t\t(focusableElements[elementIndex + 1] as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(firstFocusableEl as HTMLElement).focus()\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isEscapePressed) {\n\t\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t\t}\n\t\t}\n\n\t\tconst bindEventsToFocusableElements = () => {\n\t\t\tfocusableElements.forEach((element) => {\n\t\t\t\telement.addEventListener('keydown', eventHandler)\n\t\t\t})\n\t\t}\n\n\t\tconst unbindEventsToFocusableElements = () => {\n\t\t\tfocusableElements.forEach((element) => {\n\t\t\t\telement.removeEventListener('keydown', eventHandler)\n\t\t\t})\n\t\t}\n\n\t\tsetFocusables()\n\n\t\ttablistUpdateElements?.forEach((element) => {\n\t\t\tconst updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\t\tif (updaterElement) {\n\t\t\t\tupdaterElement.addEventListener('keypress', (e) => {\n\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\tsetFocusables(updaterElement.title)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tupdaterElement.addEventListener('click', (e) => {\n\t\t\t\t\tsetFocusables(updaterElement.title)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\t// firstFocusableEl.focus(); \n\t}\n\n\t/** End the trap for the focus inside the modal dialog */\n\tstatic closeTrapFocus(closeHTMLElement: HTMLElement, triggerHTMLElement?: HTMLElement): void {\n\t\tcloseHTMLElement?.focus()\n\t\tcloseHTMLElement?.click()\n\t\ttriggerHTMLElement?.focus()\n\t}\n\n\t/** Trap focus terms and conditions LB */\n\tstatic showTermsofSalePopover(): void {\n\t\ttry {\n\t\t\tdocument.getElementById('generalTermPopover').style.visibility = 'visible'\n\t\t\tdocument.getElementById('generalTermPopover').style.display = ''\n\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\tcontainer: '#generalTermPopover',\n\t\t\t\tcloseElement: '#closegeneralTermPopover'\n\t\t\t})\n\t\t}\n\t\tcatch (e) {\n\t\t\talert('error')\n\t\t}\n\t}\n\n\tstatic showMattressTermPopover(): void {\n\t\ttry {\n\t\t\tdocument.getElementById('mattressTermPopover').style.visibility = 'visible'\n\t\t\tdocument.getElementById('mattressTermPopover').style.display = ''\n\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\tcontainer: '#mattressTermPopover',\n\t\t\t\tcloseElement: '#closeMattressTermPopover'\n\t\t\t})\n\t\t}\n\t\tcatch (e) {\n\t\t\talert('error')\n\t\t}\n\t}\n\n\t/**\n\t * 1) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#main-nav')`\n\t * 2) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#side-nav')`\n\t * 3) Calls `new TabsManual` for each element found by `document.querySelectorAll('[role=tablist]')`\n\t * 4) Applies accessibility tools for fancybox images\n\t * 5) Applies accessibility tools for the fancybox element\n\t * 6) Applies accessibility tools for fancybox inline subdetails\n\t */\n\tstatic init() {\n\n\t\tconst logActiveElement = this.LOG_ACTIVE_ELEMENT\n\n\t\twindow.addEventListener('load', function () {\n\n\t\t\twindow.mainNavList = document.querySelectorAll(HAHAccessibility.selectors.mainNavList)\n\t\t\tif (window.mainNavList) {\n\t\t\t\tfor (let i = 0; i < window.mainNavList.length; i++) {\n\t\t\t\t\tnew NavigationBar(window.mainNavList[i])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.navList = document.querySelectorAll(HAHAccessibility.selectors.navList)\n\t\t\tif (window.navList) {\n\t\t\t\tfor (let i = 0; i < window.navList.length; i++) {\n\t\t\t\t\tnew NavigationBar(window.navList[i])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.tablists = document.querySelectorAll(HAHAccessibility.selectors.tabLists)\n\t\t\tif (window.tablists) {\n\t\t\t\tfor (let i = 0; i < window.tablists.length; i++) {\n\t\t\t\t\tnew TabsManual(window.tablists[i])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch (HAHAccessibility.FANCYBOX_VERSION) {\n\t\t\tcase 2: HAHAccessibility.initADAForFancybox2(); break\n\t\t\tcase 4: HAHAccessibility.initADAForFancybox4(); break\n\t\t\t}\n\n\t\t\tif (logActiveElement) {\n\t\t\t\tdocument.addEventListener('keyup', () => console.log(document.activeElement))\n\t\t\t}\n\n\t\t})\n\t}\n\n\tprivate static initADAForFancybox2() {\n\n\t\t$('[id^=\\'fancyboxLBImage\\']').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t})\n\n\t\t$('#addOnFancyboxLBImage').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t});\n\n\t\t($('.fancybox') as any).fancybox({\n\t\t\tafterShow: function () {\n\t\t\t\tconst triggerElementId = window.triggerElement.getAttribute('id')\n\t\t\t\tif (triggerElementId === 'addOnFancyboxLBImage' || triggerElementId.includes('fancyboxLBImage')) {\n\t\t\t\t\tconst altDialogText = triggerElementId.includes('fancyboxLBImage')\n\t\t\t\t\t\t? $(window.triggerElement).find('img').attr('alt')\n\t\t\t\t\t\t: $(window.triggerElement)[0].innerText\n\t\t\t\t\t$('.fancybox-overlay').attr('aria-label', `${altDialogText} image`)\n\t\t\t\t\t$('.fancybox-overlay .fancybox-wrap img').attr('alt', altDialogText)\n\t\t\t\t}\n\t\t\t\t$('.fancybox-overlay').attr('aria-modal', 'true').attr('role', 'dialog')\n\t\t\t\t$('.fancybox-overlay .fancybox-wrap').removeAttr('tabindex').removeAttr('aria-modal').removeAttr('aria-label').removeAttr('role')\n\t\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\t\tcontainer: '.fancybox-overlay',\n\t\t\t\t\tcloseElement: '.fancybox-item.fancybox-close',\n\t\t\t\t\tadditionalCloseElements: [],\n\t\t\t\t\ttablistUpdateElements: [\n\t\t\t\t\t\t'.fancybox-prev',\n\t\t\t\t\t\t'.fancybox-next'\n\t\t\t\t\t],\n\t\t\t\t\ttriggerHTMLElement: window.triggerElement,\n\t\t\t\t\tunbindEvents: true\n\t\t\t\t})\n\t\t\t},\n\t\t\tafterClose: function () {\n\t\t\t\twindow.triggerElement.focus()\n\t\t\t},\n\t\t\t// Animation effects for fancybox\n\t\t\topenEffect: 'elastic',\n\t\t\topenSpeed: 350,\n\t\t\tcloseEffect: 'elastic',\n\t\t\tcloseSpeed: 350,\n\t\t\tnextEffect: 'fade',\n\t\t\tnextSpeed: 200,\n\t\t\tpadding: 2,\n\t\t\tmargin: 20\n\t\t})\n\n\t\t// Fancybox inline sub details\n\t\t$('.sub-details').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t});\n\n\t\t($('.sub-details') as any).fancybox({\n\t\t\tafterShow: function () {\n\t\t\t\t$('.fancybox-overlay').attr('aria-label', 'Subscription details').attr('aria-modal', 'true').attr('role', 'dialog').attr('aria-describedby', 'inline-sub-box ADA-sub-disclosure')\n\t\t\t\t$('.fancybox-overlay .fancybox-wrap').removeAttr('tabindex').removeAttr('aria-label').removeAttr('role')\n\t\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\t\tcontainer: '.fancybox-overlay',\n\t\t\t\t\tcloseElement: '.fancybox-item.fancybox-close',\n\t\t\t\t\tadditionalCloseElements: [],\n\t\t\t\t\ttablistUpdateElements: [],\n\t\t\t\t\ttriggerHTMLElement: window.triggerElement\n\t\t\t\t})\n\t\t\t},\n\t\t\tafterClose: function () {\n\t\t\t\twindow.triggerElement.focus()\n\t\t\t},\n\t\t\topenEffect: 'elastic',\n\t\t\topenSpeed: 350,\n\t\t\tcloseEffect: 'elastic',\n\t\t\tcloseSpeed: 350,\n\t\t\tnextEffect: 'fade',\n\t\t\tnextSpeed: 200,\n\t\t\tscrolling: 'no',\n\t\t\tautoSize: true\n\t\t})\n\n\t\t$('.BMSM-Chart').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t});\n\n\t\t($('.BMSM-Chart') as any).fancybox({\n\t\t\tafterShow: function () {\n\t\t\t\t$('.fancybox-overlay').attr('aria-modal', 'true').attr('role', 'dialog').attr('aria-label', 'Buy More Save More')\n\t\t\t\t$('.fancybox-overlay .fancybox-wrap').removeAttr('aria-modal').removeAttr('aria-label').removeAttr('role')\n\t\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\t\tcontainer: '.fancybox-overlay',\n\t\t\t\t\tcloseElement: '.fancybox-item.fancybox-close',\n\t\t\t\t\tfirstElementToFocus: '#bmsm-title'\n\t\t\t\t})\n\t\t\t},\n\t\t\tafterClose: function () {\n\t\t\t\twindow.triggerElement.focus()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate static initADAForFancybox4() {\n\n\t\t$('[data-fancybox=\"product-image-gallery\"]').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t})\n\n\t\t$('[data-fancybox=\"product-addon\"]').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t})\n\n\t\t$('[data-fancybox-type=\"inline\"]').on('click', function () {\n\t\t\twindow.triggerElement = this\n\t\t})\n\n\t\tFancybox.bind('[data-fancybox=\"product-image-gallery\"]', {\n\t\t\tonce: {\n\t\t\t\tdone: (fancybox: any) => {\n\t\t\t\t\tconst altDialogText = $(window.triggerElement).children()[0].getAttribute('alt')\n\t\t\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\t\t\tfancybox.$container.setAttribute('aria-label', `${altDialogText} image`)\n\t\t\t\t\t$('.is-selected').attr('aria-label', 'Current image')\n\t\t\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t\t\t\tcontainer: `#${fancyboxId}`,\n\t\t\t\t\t\tcloseElement: '.is-selected .carousel__button.is-close',\n\t\t\t\t\t\tadditionalCloseElements: ['.fancybox__slide'],\n\t\t\t\t\t\ttablistUpdateElements: ['.carousel__button.is-next', '.carousel__button.is-prev'],\n\t\t\t\t\t\ttriggerHTMLElement: window.triggerElement,\n\t\t\t\t\t\timageAltText: altDialogText\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\tThumbs: false,\n\t\t\tToolbar: false,\n\t\t\tdragToClose: false,\n\t\t\tinfinite: false,\n\t\t})\n\n\t\tFancybox.bind('[data-fancybox=\"product-addon\"]', {\n\t\t\tonce: {\n\t\t\t\tdone: (fancybox: any) => {\n\t\t\t\t\tconst altDialogText = $(window.triggerElement).text().toLowerCase().replace('add', '').trim()\n\t\t\t\t\tconst newAltDialogText = `${altDialogText} image`\n\t\t\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\t\t\tfancybox.$container.setAttribute('aria-label', newAltDialogText)\n\t\t\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t\t\t\tcontainer: `#${fancyboxId}`,\n\t\t\t\t\t\tcloseElement: '.is-selected .carousel__button.is-close',\n\t\t\t\t\t\tadditionalCloseElements: ['.fancybox__slide'],\n\t\t\t\t\t\ttablistUpdateElements: [],\n\t\t\t\t\t\ttriggerHTMLElement: window.triggerElement,\n\t\t\t\t\t\timageAltText: altDialogText\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\tThumbs: false,\n\t\t\tToolbar: false,\n\t\t\tdragToClose: false,\n\t\t\tinfinite: false,\n\t\t})\n\n\t\tFancybox.bind('[data-fancybox-type=\"inline\"]', {\n\t\t\tonce: {\n\t\t\t\tdone: (fancybox: any) => {\n\t\t\t\t\tfancybox.$container.removeAttribute('aria-label')\n\t\t\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t\t\t\tcontainer: `#${fancyboxId}`,\n\t\t\t\t\t\tcloseElement: '.is-selected .carousel__button.is-close',\n\t\t\t\t\t\tadditionalCloseElements: ['.fancybox__slide'],\n\t\t\t\t\t\ttablistUpdateElements: [],\n\t\t\t\t\t\ttriggerHTMLElement: window.triggerElement\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\tThumbs: false,\n\t\t\tToolbar: false,\n\t\t\tdragToClose: false,\n\t\t\tinfinite: false,\n\t\t})\n\t}\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\n\tnavlistNode: Element\n\tmenuItems: Element[]\n\tlinkMenuItems: Element[]\n\tsubMenuItems: Element[][]\n\tcurrentLocation: any\n\tfirstMenuItem: Element\n\tlastMenuItem: Element\n\tallNavLink: HTMLLinkElement[]\n\n\tconstructor(groupNode: Element) {\n\t\tthis.navlistNode = groupNode\n\t\tthis.menuItems = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.menuItems))\n\t\tthis.linkMenuItems = []\n\t\tthis.subMenuItems = []\n\t\tthis.currentLocation = window.location.href\n\n\t\tfor (let i = 0; i < this.menuItems.length; i++) {\n\t\t\tthis.linkMenuItems.push(this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.linkMenuItems))\n\t\t\tif (this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)) {\n\t\t\t\tthis.subMenuItems.push(\n\t\t\t\t\tArray.from(\n\t\t\t\t\t\tthis.menuItems[i]\n\t\t\t\t\t\t\t.querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)\n\t\t\t\t\t\t\t.querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tthis.subMenuItems.push([])\n\t\t\t}\n\t\t}\n\n\t\tthis.firstMenuItem = this.linkMenuItems[0]\n\t\tthis.lastMenuItem = this.linkMenuItems[this.linkMenuItems.length - 1]\n\n\t\tfor (let j = 0; j < this.linkMenuItems.length; j++) {\n\t\t\tthis.linkMenuItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, null))\n\t\t}\n\n\t\tfor (let j = 0; j < this.linkMenuItems.length; j++) {\n\t\t\tfor (let k = 0; k < this.subMenuItems[j].length; k++) {\n\t\t\t\tthis.subMenuItems[j][k].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, k))\n\t\t\t}\n\t\t}\n\n\t\tthis.allNavLink = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem))\n\n\t\tfor (let l = 0; l < this.allNavLink.length; l++) {\n\t\t\tif (this.allNavLink[l].href === this.currentLocation) {\n\t\t\t\tthis.allNavLink[l].setAttribute('aria-current', 'page')\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveFocusToLink(currentLink: Element) {\n\t\t(currentLink as HTMLElement)?.focus()\n\t}\n\n\tmoveFocusToPreviousLink(indexMenu: any, _indexSubMenu: any) {\n\t\tif (indexMenu === 0) {\n\t\t\tthis.moveFocusToLink(this.lastMenuItem)\n\t\t} else {\n\t\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu - 1])\n\t\t}\n\t}\n\n\tmoveFocusToNextLink(indexMenu: any, _indexSubMenu: any) {\n\t\tif (indexMenu === this.linkMenuItems.length - 1) {\n\t\t\tthis.moveFocusToLink(this.firstMenuItem)\n\t\t} else {\n\t\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu + 1])\n\t\t}\n\t}\n\n\tmoveFocusToPreviousSublink(indexMenu: any, indexSubMenu: any) {\n\t\tconst subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t\tif (indexSubMenu === null) {\n\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n\t\t} else {\n\t\t\tif (indexSubMenu === 0) {\n\t\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n\t\t\t} else {\n\t\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu - 1])\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveFocusToNextSublink(indexMenu: any, indexSubMenu: any) {\n\t\tconst subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t\tif (indexSubMenu === null) {\n\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][0])\n\t\t} else {\n\t\t\tif (indexSubMenu === subMenuLenght) {\n\t\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][0])\n\t\t\t} else {\n\t\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu + 1])\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveFocusToFirstlink(indexMenu: any, indexSubMenu: any) {\n\t\tif (indexSubMenu === null) {\n\t\t\tthis.moveFocusToLink(this.firstMenuItem)\n\t\t} else {\n\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][0])\n\t\t}\n\t}\n\n\tmoveFocusToLastlink(indexMenu: any, indexSubMenu: any) {\n\t\tconst subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t\tif (indexSubMenu === null) {\n\t\t\tthis.moveFocusToLink(this.lastMenuItem)\n\t\t} else {\n\t\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght])\n\t\t}\n\t}\n\n\tmoveFocusTofatherlink(indexMenu: any, indexSubMenu: any) {\n\t\tif (indexSubMenu !== null) {\n\t\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu])\n\t\t}\n\t}\n\n\tisPrintableCharacter(str: string) {\n\t\treturn str.length === 1 && str.match(/\\S/)\n\t}\n\n\tsetFocusByFirstCharacter(character: any, indexMenu: any, indexSubMenu: any) {\n\n\t\tlet linksArrToSearch: any\n\t\tlet startIndex: any\n\n\t\tif (indexSubMenu === null) {\n\t\t\tlinksArrToSearch = this.linkMenuItems\n\t\t\tstartIndex = indexMenu\n\t\t} else {\n\t\t\tlinksArrToSearch = this.subMenuItems[indexMenu]\n\t\t\tstartIndex = indexSubMenu\n\t\t}\n\n\t\tfor (let i = 0; i < linksArrToSearch.length - 1; i++) {\n\t\t\tif (startIndex === linksArrToSearch.length - 1) {\n\t\t\t\tstartIndex = 0\n\t\t\t} else {\n\t\t\t\tstartIndex += 1\n\t\t\t}\n\t\t\tif (linksArrToSearch[startIndex].name.toLowerCase().startsWith(character.toLowerCase())) {\n\t\t\t\tthis.moveFocusToLink(linksArrToSearch[startIndex])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent, indexMenu: number, indexSubMenu: number) {\n\n\t\tlet flag = false\n\n\t\tswitch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t\tthis.moveFocusToPreviousLink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'ArrowRight':\n\t\t\tthis.moveFocusToNextLink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'ArrowUp':\n\t\t\tthis.moveFocusToPreviousSublink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\n\t\tcase 'ArrowDown':\n\t\t\tthis.moveFocusToNextSublink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'Home':\n\t\t\tthis.moveFocusToFirstlink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'End':\n\t\t\tthis.moveFocusToLastlink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\n\t\tcase 'Escape':\n\t\t\tthis.moveFocusTofatherlink(indexMenu, indexSubMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tdefault:\n\t\t\tif (this.isPrintableCharacter(event.key)) {\n\t\t\t\tthis.setFocusByFirstCharacter(event.key, indexMenu, indexSubMenu)\n\t\t\t\tflag = true\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\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\n\ttablistNode: any\n\ttabs: Element[]\n\tfirstTab: Element\n\tlastTab: Element\n\n\tconstructor(groupNode: Element) {\n\t\tthis.tablistNode = groupNode\n\t\tthis.tabs = []\n\t\tthis.firstTab = null\n\t\tthis.lastTab = null\n\t\tthis.tabs = Array.from(this.tablistNode.querySelectorAll(HAHAccessibility.selectors.tabsManual.tabs))\n\t\tfor (let i = 0; i < this.tabs.length; i += 1) {\n\t\t\tlet tab = this.tabs[i]\n\n\t\t\ttab.addEventListener('keydown', this.onKeydown.bind(this))\n\t\t\tif (!this.firstTab) {\n\t\t\t\tthis.firstTab = tab\n\t\t\t}\n\t\t\tthis.lastTab = tab\n\t\t}\n\t}\n\n\tmoveFocusToTab(currentTab: Element) {\n\t\t(currentTab as HTMLElement).focus()\n\t}\n\n\tmoveFocusToPreviousTab(currentTab: Element) {\n\t\tlet index: number\n\t\tif (currentTab === this.firstTab) {\n\t\t\tthis.moveFocusToTab(this.lastTab)\n\t\t} else {\n\t\t\tindex = this.tabs.indexOf(currentTab)\n\t\t\tthis.moveFocusToTab(this.tabs[index - 1])\n\t\t}\n\t}\n\n\tmoveFocusToNextTab(currentTab: Element) {\n\t\tlet index: number\n\t\tif (currentTab === this.lastTab) {\n\t\t\tthis.moveFocusToTab(this.firstTab)\n\t\t} else {\n\t\t\tindex = this.tabs.indexOf(currentTab)\n\t\t\tthis.moveFocusToTab(this.tabs[index + 1])\n\t\t}\n\t}\n\n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent) {\n\t\tconst tgt: HTMLElement = event.currentTarget as HTMLElement\n\t\tlet flag = false\n\t\tswitch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t\tthis.moveFocusToPreviousTab(tgt as HTMLElement)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'ArrowRight':\n\t\t\tthis.moveFocusToNextTab(tgt as HTMLElement)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'Home':\n\t\t\tthis.moveFocusToTab(this.firstTab)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'End':\n\t\t\tthis.moveFocusToTab(this.lastTab)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t\t}\n\t\tif (flag) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\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\n\tradioOptNode: Element\n\tradioItems: Element[]\n\tfirstRadioItem: Element\n\tlastRadioItem: Element\n\n\tconstructor(groupNode: NodeListOf) {\n\t\tthis.radioOptNode = groupNode[0]\n\t\tthis.radioItems = Array.from(this.radioOptNode.querySelectorAll(HAHAccessibility.selectors.radioGroup.radioItems))\n\t\tthis.firstRadioItem = this.radioItems[0]\n\t\tthis.lastRadioItem = this.radioItems[this.radioItems.length - 1]\n\t\tfor (let j = 0; j < this.radioItems.length; j++) {\n\t\t\tthis.radioItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j))\n\t\t}\n\t}\n\n\tmoveFocusToRadio(currentRadio: Element) {\n\t\t(currentRadio as HTMLElement).focus();\n\t\t(currentRadio as HTMLElement).click()\n\t}\n\n\tmoveFocusToPreviousRadio(indexRadio: number) {\n\t\tif (indexRadio === 0) {\n\t\t\tthis.moveFocusToRadio(this.lastRadioItem)\n\t\t} else {\n\t\t\tthis.moveFocusToRadio(this.radioItems[indexRadio - 1])\n\t\t}\n\t}\n\n\tmoveFocusToNextRadio(indexRadio: number) {\n\t\tif (indexRadio === this.radioItems.length - 1) {\n\t\t\tthis.moveFocusToRadio(this.firstRadioItem)\n\t\t} else {\n\t\t\tthis.moveFocusToRadio(this.radioItems[indexRadio + 1])\n\t\t}\n\t}\n\n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent, indexMenu: number) {\n\n\t\tlet flag = false\n\n\t\tswitch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t\tthis.moveFocusToPreviousRadio(indexMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'ArrowRight':\n\t\t\tthis.moveFocusToNextRadio(indexMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tcase 'ArrowUp':\n\t\t\tthis.moveFocusToPreviousRadio(indexMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\n\t\tcase 'ArrowDown':\n\t\t\tthis.moveFocusToNextRadio(indexMenu)\n\t\t\tflag = true\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n}\n","class ESignUp {\n\tsfSubscriptionApi: any\n\tlambdaPayload: any\n\tdialogObj: DialogObj\n\tlbHideParams: Array\n\tcookieValue: string\n\telementIDs: ElementIDs\n\tlambdaClient: any\n\taddedToSalesforceTime: any\n\tupdatedOnSalesforceTime: any\n\n\tconstructor({\n\t\tsfSubscriptionApi,\n\t\tlambdaPayload,\n\t\tdialogObj,\n\t\tlbHideParams,\n\t\tcookieValue,\n\t\telementIDs,\n\t}: ESignUpOptions) {\n\n\t\tif (!sfSubscriptionApi)\n\t\t\tthrow new Error('\"sfSubscriptionApi\" config value is required.')\n\n\t\tif (!lambdaPayload)\n\t\t\tthrow new Error('\"lambdaPayload\" config value is required.')\n\n\t\tif (!dialogObj)\n\t\t\tthrow new Error('\"dialogObj\" config value is required.')\n\n\t\tconst defaultLambdaPayload = {\n\t\t\tregion: 'CA',\n\t\t\ttimeZone: '-5',\n\t\t\tlanguage: 'EN',\n\t\t\tmethod: 'API',\n\t\t}\n\n\t\tconst defaultElementIds = {\n\t\t\tlightBoxInput: '#emailAddress1',\n\t\t\tlightBoxBtn: '#emailAddress1btn',\n\t\t\tfooterInput: '#emailAddress2',\n\t\t\tfooterBtn: '#emailAddress2btn',\n\t\t\thomePageInput: '#emailAddress3',\n\t\t\thomePageBtn: '#emailAddress3btn',\n\t\t\tlightBoxBackground: '#emailSignupPopover',\n\t\t\tlightBoxCloseBtn: '#ligtboxClosebtn',\n\t\t\tsweepsBtn: '#sweepsBtn',\n\t\t\tsweepsEmail: '#sweepsEmail',\n\t\t\tsweepsName: '#sweepsName',\n\t\t\tsweepsCheck: '#sweepsCheck',\n\t\t\tsweepsBonvoyCheck: '#sweepsBonvoyCheck',\n\t\t\tlandingPageSweepsBtn: '#landingPageSweepsBtn',\n\t\t\tlandingPageSweepsEmail: '#landingPageSweepsEmail',\n\t\t\tlandingPageSweepsName: '#landingPageSweepsName',\n\t\t\tlandingPageSweepsBonvoyCheck: '#landingPageSweepsBonvoyCheck',\n\t\t\tlandingPageSweepsCheck: '#landingPageSweepsCheck',\n\t\t\tcheckoutPageEmailInput: '#emailAddress',\n\t\t\tcheckoutPageSubscribeCheck: '#emailSubscribe'\n\t\t}\n\n\t\tconst defaultDialogObj = {\n\t\t\tbtnTxt: 'OK',\n\t\t}\n\n\t\tthis.sfSubscriptionApi = sfSubscriptionApi\n\n\t\tthis.lambdaPayload = {\n\t\t\t...defaultLambdaPayload,\n\t\t\t...lambdaPayload,\n\t\t}\n\n\t\tthis.dialogObj = {\n\t\t\t...defaultDialogObj,\n\t\t\t...dialogObj,\n\t\t}\n\n\t\tthis.lbHideParams = lbHideParams || ['utm_source=hah']\n\n\t\tthis.cookieValue = cookieValue || 'emailSignup'\n\n\t\tthis.elementIDs = {\n\t\t\t...defaultElementIds,\n\t\t\t...elementIDs,\n\t\t}\n\n\t\tthis.addedToSalesforceTime = {}\n\t\tthis.updatedOnSalesforceTime = {}\n\n\t}\n\n\tgetTimeZone() {\n\t\tlet currDate = new Date()\n\t\treturn Math.floor((currDate.getTimezoneOffset() / 60) * -1).toString()\n\t}\n\n\thideLandingPageSweepsForm() {\n\t\t$('#sweepstakesFormWrap').fadeOut('slow', function () {\n\t\t\t$('#sweepstakesConfirmation').fadeIn('slow')\n\t\t})\n\t}\n\n\t/**\n\t * Calls AWS Lambda to subscribe/unsubscribe a client email.\n\t */\n\tasync callLambda({\n\t\temail,\n\t\tsource,\n\t\taction,\n\t\tshowLightboxMessage = false,\n\t\tname = '',\n\t\tcampaign = undefined,\n\t\tcallback = undefined\n\t}: LambdaOptions) {\n\n\t\t// Hides the lightbox\n\t\tthis.showLightbox(false)\n\n\t\t// Show the \"thank you for subscribing\" lightbox \n\t\tif (showLightboxMessage) {\n\t\t\tdilogBox(this.dialogObj)\n\t\t\twindow.scrollTo(0, 0)\n\t\t}\n\n\t\tconst payload = {\n\t\t\temailId: email,\n\t\t\tsource: source,\n\t\t\ttimeZone: this.getTimeZone(),\n\t\t\tname: name,\n\t\t\tcampaign: campaign,\n\t\t}\n\n\t\tconst lambdaPayload = {\n\t\t\taction: action,\n\t\t\tdata: {\n\t\t\t\t...this.lambdaPayload,\n\t\t\t\t...payload,\n\t\t\t},\n\t\t}\n\n\t\tconst apiGatewayUrl = this.sfSubscriptionApi\n\n\t\ttry {\n\t\t\tconst response = await fetch(apiGatewayUrl, {\n\t\t\t\tmethod: 'POST', \n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(lambdaPayload),\n\t\t\t});\n\t\n\t\t\tconst data = await response.json();\n\t\n\t\t\tif (callback) callback(null, data);\n\t\t} catch (error) {\n\t\t\tconsole.error('Error calling API Gateway:', error);\n\t\t\tif (callback) callback(error, null);\n\t\t}\n\t}\n\n\tcheckQueryVariables() {\n\t\tlet vars = window.location.search.substring(1).toLowerCase().split('&')\n\t\tlet paramsPresent = false\n\t\tfor (let i = 0; i < this.lbHideParams.length; i++) {\n\t\t\tif (vars.indexOf(this.lbHideParams[i]) > -1) {\n\t\t\t\tparamsPresent = true\n\t\t\t}\n\t\t}\n\t\treturn paramsPresent\n\t}\n\n\tcheckDisplayLightbox() {\n\t\tlet emailCookie = CommonUtils.getCookie(this.cookieValue)\n\t\tif (emailCookie === null) {\n\t\t\tlet paramsPresent = false\n\t\t\tparamsPresent = this.checkQueryVariables()\n\t\t\tif (paramsPresent) {\n\t\t\t\tthis.showLightbox(false)\n\t\t\t} else {\n\t\t\t\tthis.showLightbox(true)\n\t\t\t}\n\t\t}\n\t}\n\n\tshowLightbox(show = false) {\n\t\tlet emailSignupPopoverDiv = document.getElementById('emailSignupPopover')\n\t\tif (show) {\n\t\t\tif (emailSignupPopoverDiv) {\n\t\t\t\temailSignupPopoverDiv.style.display = ''\n\t\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\t\tcontainer: '.emailFocusTrap',\n\t\t\t\t\tcloseElement: '#emailSignupPopover'\n\t\t\t\t})\n\t\t\t}\n\t\t} else {\n\t\t\tif (emailSignupPopoverDiv) {\n\t\t\t\temailSignupPopoverDiv.style.display = 'none'\n\t\t\t}\n\t\t\tCommonUtils.setCookie(this.cookieValue, 'emailClosed', 180)\n\t\t}\n\t}\n\n\tvalidateSweeps(name, emailID, checked, recaptchaPassed) {\n\t\tlet alertMessage = ''\n\t\tlet nameRegex = /^[a-z ,.'-]+$/i\n\n\t\tif (!nameRegex.test(name)) alertMessage += 'Please enter a valid name. \\n'\n\t\tif (!CommonUtils.validateEmail(emailID))\n\t\t\talertMessage += 'Please enter a valid email address.\\n'\n\t\tif (!checked) alertMessage += 'Please check the sweeps rules checkbox.\\n'\n\t\t/*\n\t\tif (!recaptchaPassed) {\n\t\t\talertMessage += 'Please complete re-captcha.'\n\t\t}\n\t\t*/\n\t\tif (alertMessage !== '') {\n\t\t\talert(alertMessage)\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\n\tasync toggleEmailStatusInSalesforce(\n\t\temail: string,\n\t\temailStatus: 'Active' | 'Unsubscribed' | 'EmailID does not exist.',\n\t\tagreeToReceiveEmails: boolean\n\t) {\n\n\t\tif (email) {\n\n\t\t\t// saves the email in the session storage so it can track the cart again in the payment page\n\t\t\tsessionStorage.setItem('emailAddress', email)\n\n\t\t\tSalesforceAbandonedCartUtils.setClientEmail(email)\n\t\t\tSalesforceAbandonedCartUtils.trackCart()\n\n\t\t\t// if email is not in Salesforce\n\t\t\tif (emailStatus.includes('does not exist')) {\n\n\t\t\t\t// add to Salesforce and set as \"Active\"\n\t\t\t\tconst isActive: boolean = await new Promise((resolve) => {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: email,\n\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\taction: 'add',\n\t\t\t\t\t\tcallback: (err: any, data: any) => {\n\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tconsole.log(err)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (data) {\n\n\t\t\t\t\t\t\t\t// uncomment if troubleshooting and comment again before commit\n\t\t\t\t\t\t\t\t// console.log({...data, Payload: JSON.parse(data.Payload)})\n\n\t\t\t\t\t\t\t\tif (data.StatusCode == 200) {\n\t\t\t\t\t\t\t\t\tresolve(true)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tresolve(false)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\t\t// save the date it was added to Salesforce\n\t\t\t\tthis.addedToSalesforceTime[email] = new Date()\n\n\t\t\t\t// if agree to receive emails (checkbox checked)\n\t\t\t\tif (agreeToReceiveEmails) {\n\n\t\t\t\t\t// if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n\t\t\t\t\tif (isActive) {\n\t\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\t\tevent_label: 'checkout',\n\t\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if doesn't agree to receive emails (checkbox unchecked)\n\t\t\t\telse {\n\n\t\t\t\t\t// update status in Salesforce to \"Unsubscribed\"\n\t\t\t\t\tconst isUnsubscribed: boolean = await new Promise((resolve) => {\n\t\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\t\temail: email,\n\t\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\t\taction: 'remove',\n\t\t\t\t\t\t\tcallback: (err: any, data: any) => {\n\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\tconsole.log(err)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (data) {\n\n\t\t\t\t\t\t\t\t\t// uncomment if troubleshooting and comment again before commit\n\t\t\t\t\t\t\t\t\t// console.log({...data, Payload: JSON.parse(data.Payload)})\n\n\t\t\t\t\t\t\t\t\tif (data.StatusCode == 200) {\n\n\t\t\t\t\t\t\t\t\t\tlet isUnsubscribed: boolean = false\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (data.Payload) {\n\t\t\t\t\t\t\t\t\t\t\t\tisUnsubscribed = JSON.parse(data.Payload).values.status.toLowerCase() === 'unsubscribed'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\tif (data.Payload) {\n\t\t\t\t\t\t\t\t\t\t\t\tisUnsubscribed = data.Payload.toLowerCase().includes('unsubscribed')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve(isUnsubscribed)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\n\t\t\t\t\t// if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n\t\t\t\t\tif (isUnsubscribed) {\n\t\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\t\tevent_action: 'Unsubscribe',\n\t\t\t\t\t\t\tevent_label: 'checkout',\n\t\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if email is already in Salesforce\n\t\t\telse {\n\n\t\t\t\t// if does not agree to receive emails (is \"Unsubscribed\" in Salesforce)\n\t\t\t\tif (emailStatus.includes('Unsubscribed')) {\n\n\t\t\t\t\t// if agree to receive emails (checkbox checked)\n\t\t\t\t\tif (agreeToReceiveEmails) {\n\n\t\t\t\t\t\t// save the date it was updated in salesforce\n\t\t\t\t\t\tif (!this.updatedOnSalesforceTime[email]) {\n\t\t\t\t\t\t\tthis.updatedOnSalesforceTime[email] = new Date()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// updates status in Salesforce to \"Active\" \n\t\t\t\t\t\tconst isActive = await new Promise((resolve) => {\n\t\t\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\t\t\temail: email,\n\t\t\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\t\t\taction: 'add',\n\t\t\t\t\t\t\t\tcallback: (err: any, data: any) => {\n\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(err)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (data) {\n\n\t\t\t\t\t\t\t\t\t\t// uncomment if troubleshooting and comment again before commit\n\t\t\t\t\t\t\t\t\t\t// console.log({...data, Payload: JSON.parse(data.Payload)})\n\n\t\t\t\t\t\t\t\t\t\tif (data.StatusCode == 200) {\n\n\t\t\t\t\t\t\t\t\t\t\tlet isActive: boolean\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tisActive = JSON.parse(data.Payload).values.status.toLowerCase() === 'active'\n\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\tisActive = data.Payload.toLowerCase().includes('active')\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tresolve(isActive)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n\t\t\t\t\t\tif (isActive) {\n\t\t\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\t\t\tevent_label: 'checkout',\n\t\t\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if agrees to receive emails (is \"Active\" in Salesforce)\n\t\t\t\telse {\n\n\t\t\t\t\t// if doesn't agree to receive emails (checkbox unchecked)\n\t\t\t\t\tif (!agreeToReceiveEmails) {\n\n\t\t\t\t\t\tconst dateInserted: Date = this.addedToSalesforceTime[email]\n\t\t\t\t\t\tconst dateUpdated: Date = this.updatedOnSalesforceTime[email]\n\n\t\t\t\t\t\t// if was just inserted or updated in Salesforce\n\t\t\t\t\t\tif (dateInserted || dateUpdated) {\n\n\t\t\t\t\t\t\tconst now = new Date()\n\t\t\t\t\t\t\tconst diffInMilliseconds = Math.abs(now.getTime() - (dateInserted ?? dateUpdated).getTime())\n\t\t\t\t\t\t\tconst diffInMinutes = diffInMilliseconds / (1000 * 60)\n\n\t\t\t\t\t\t\t// if was added or updated less than 5 minutes ago\n\t\t\t\t\t\t\tif (diffInMinutes < 5) {\n\n\t\t\t\t\t\t\t\t// update status in Salesforce to \"Unsubscribed\"\n\t\t\t\t\t\t\t\tconst isUnsubscribed: boolean = await new Promise((resolve) => {\n\t\t\t\t\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\t\t\t\t\temail: email,\n\t\t\t\t\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\t\t\t\t\taction: 'remove',\n\t\t\t\t\t\t\t\t\t\tcallback: (err: any, data: any) => {\n\n\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err)\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (data) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// uncomment if troubleshooting and comment again before commit\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log({...data, Payload: JSON.parse(data.Payload)})\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (data.StatusCode == 200) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tlet isUnsubscribed: boolean = false\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.Payload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisUnsubscribed = JSON.parse(data.Payload).values.status.toLowerCase() === 'unsubscribed'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.Payload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisUnsubscribed = data.Payload.toLowerCase().includes('unsubscribed')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(isUnsubscribed)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t// if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n\t\t\t\t\t\t\t\tif (isUnsubscribed) {\n\t\t\t\t\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\t\t\t\t\tevent_action: 'Unsubscribe',\n\t\t\t\t\t\t\t\t\t\tevent_label: 'checkout',\n\t\t\t\t\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tbindElementHandlers() {\n\n\t\tconst footerBtn = $(this.elementIDs.footerBtn)\n\t\tconst lightBoxBtn = $(this.elementIDs.lightBoxBtn)\n\t\tconst homePageBtn = $(this.elementIDs.homePageBtn)\n\t\tconst lightBoxCloseBtn = $(this.elementIDs.lightBoxCloseBtn)\n\t\tconst lightBoxBackground = $(this.elementIDs.lightBoxBackground)\n\t\tconst sweepsBtn = $(this.elementIDs.sweepsBtn)\n\t\tconst landingPageSweepsBtn = $(this.elementIDs.landingPageSweepsBtn)\n\t\tconst checkoutPageEmailInput = $(this.elementIDs.checkoutPageEmailInput)\n\t\tconst checkoutPageSubscribeCheckbox = $(this.elementIDs.checkoutPageSubscribeCheck)\n\n\t\tif (lightBoxCloseBtn.length) {\n\t\t\tlightBoxCloseBtn.on('click', () => {\n\t\t\t\tthis.showLightbox(false)\n\t\t\t})\n\t\t}\n\n\t\tif (lightBoxBackground.length) {\n\t\t\t$(document).on('click', (e) => {\n\t\t\t\tif ($(e.target).is(lightBoxBackground)) {\n\t\t\t\t\tthis.showLightbox(false)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (lightBoxBtn.length) {\n\t\t\tlightBoxBtn.on('click', () => {\n\t\t\t\tlet emailValue = ($(this.elementIDs.lightBoxInput).val()).trim()\n\t\t\t\tif (!CommonUtils.validateEmail(emailValue)) {\n\t\t\t\t\talert('Please enter a valid email address.')\n\t\t\t\t} else {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: emailValue,\n\t\t\t\t\t\tsource: 'lightbox',\n\t\t\t\t\t\tshowLightboxMessage: true,\n\t\t\t\t\t\taction: 'add'\n\t\t\t\t\t})\n\t\t\t\t\tCommonUtils.setCookie('HAHemailID', emailValue, 180)\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\tevent_label: 'lightbox',\n\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t})\n\t\t\t\t\tSalesforceAbandonedCartUtils.setClientEmail(emailValue)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (homePageBtn.length) {\n\t\t\thomePageBtn.on('click', () => {\n\t\t\t\tlet emailValue = ($(this.elementIDs.homePageInput).val()).trim()\n\t\t\t\tif (!CommonUtils.validateEmail(emailValue)) {\n\t\t\t\t\talert('Please enter a valid email address.')\n\t\t\t\t} else {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: emailValue,\n\t\t\t\t\t\tsource: 'home',\n\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\taction: 'add'\n\t\t\t\t\t})\n\t\t\t\t\tCommonUtils.setCookie('HAHemailID', emailValue, 180)\n\t\t\t\t\t$('#ftr-email-signup').fadeOut('slow', function () {\n\t\t\t\t\t\t$('#ftr-email-conf').fadeIn('slow')\n\t\t\t\t\t})\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\tevent_label: 'home',\n\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t})\n\t\t\t\t\tSalesforceAbandonedCartUtils.setClientEmail(emailValue)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (sweepsBtn.length) {\n\t\t\tsweepsBtn.on('click', () => {\n\t\t\t\tlet sweepsEmail = ($(this.elementIDs.sweepsEmail).val()).trim()\n\t\t\t\tlet sweepsName = ($(this.elementIDs.sweepsName).val()).trim()\n\t\t\t\tlet sweepsChecked = $(this.elementIDs.sweepsCheck).is(':checked')\n\t\t\t\tlet sweepsBonvoyChecked = $(this.elementIDs.sweepsBonvoyCheck).is(\n\t\t\t\t\t':checked'\n\t\t\t\t)\n\t\t\t\tlet campaign =\n\t\t\t\t\tsweepsBonvoyChecked === true ? '202405' : '202405'\n\t\t\t\tif (this.validateSweeps(sweepsName, sweepsEmail, sweepsChecked, 1)) {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: sweepsEmail,\n\t\t\t\t\t\tsource: 'lightbox',\n\t\t\t\t\t\tshowLightboxMessage: true,\n\t\t\t\t\t\taction: 'sweepsadd',\n\t\t\t\t\t\tname: sweepsName,\n\t\t\t\t\t\tcampaign: campaign\n\t\t\t\t\t})\n\t\t\t\t\tCommonUtils.setCookie('HAHemailID', sweepsEmail, 180)\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\tevent_label: 'sweeps',\n\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t})\n\t\t\t\t\tSalesforceAbandonedCartUtils.setClientEmail(sweepsEmail)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (landingPageSweepsBtn.length) {\n\t\t\tlandingPageSweepsBtn.on('click', () => {\n\t\t\t\tlet landingPageSweepsEmail = ($(this.elementIDs.landingPageSweepsEmail)\n\t\t\t\t\t.val())\n\t\t\t\t\t.trim()\n\t\t\t\tlet landingPageSweepsName = ($(this.elementIDs.landingPageSweepsName)\n\t\t\t\t\t.val())\n\t\t\t\t\t.trim()\n\t\t\t\tlet landingPageSweepsChecked = $(\n\t\t\t\t\tthis.elementIDs.landingPageSweepsCheck\n\t\t\t\t).is(':checked')\n\t\t\t\tlet landingPageSweepsBonvoyChecked = $(\n\t\t\t\t\tthis.elementIDs.landingPageSweepsBonvoyCheck\n\t\t\t\t).is(':checked')\n\t\t\t\tlet v = ''; //grecaptcha.getResponse();\n\t\t\t\tlet campaign =\n\t\t\t\t\tlandingPageSweepsBonvoyChecked === true\n\t\t\t\t\t\t? '202405'\n\t\t\t\t\t\t: '202405'\n\t\t\t\tif (\n\t\t\t\t\tthis.validateSweeps(\n\t\t\t\t\t\tlandingPageSweepsName,\n\t\t\t\t\t\tlandingPageSweepsEmail,\n\t\t\t\t\t\tlandingPageSweepsChecked,\n\t\t\t\t\t\tv.length\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: landingPageSweepsEmail,\n\t\t\t\t\t\tsource: 'sweeps',\n\t\t\t\t\t\tshowLightboxMessage: true,\n\t\t\t\t\t\taction: 'sweepsadd',\n\t\t\t\t\t\tname: landingPageSweepsName,\n\t\t\t\t\t\tcampaign: campaign,\n\t\t\t\t\t\tcallback: this.hideLandingPageSweepsForm,\n\t\t\t\t\t})\n\t\t\t\t\tCommonUtils.setCookie('HAHemailID', landingPageSweepsEmail, 180)\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\tevent_label: 'sweeps landing page',\n\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t})\n\t\t\t\t\tSalesforceAbandonedCartUtils.setClientEmail(landingPageSweepsEmail)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (footerBtn.length) {\n\t\t\tfooterBtn.on('click', () => {\n\t\t\t\tlet emailValue = ($(this.elementIDs.footerInput).val()).trim()\n\t\t\t\tif (!CommonUtils.validateEmail(emailValue)) {\n\t\t\t\t\tconst inputControl = footerBtn.closest('.label-wrapper')\n\t\t\t\t\tconst errorDisplay = inputControl.find('.error')\n\t\t\t\t\t\n\t\t\t\t\terrorDisplay.text('Please enter a valid email address.')\n\t\t\t\t\tinputControl.addClass('error')\n\t\t\t\t} else {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: emailValue,\n\t\t\t\t\t\tsource: 'footer',\n\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\taction: 'add'\n\t\t\t\t\t})\n\t\t\t\t\tCommonUtils.setCookie('HAHemailID', emailValue, 180)\n\t\t\t\t\t$('#ftr-email-signup2').fadeOut('slow', function () {\n\t\t\t\t\t\t$('#ftr-email-conf2').fadeIn('slow')\n\t\t\t\t\t})\n\t\t\t\t\tdataLayer.push({\n\t\t\t\t\t\tevent: 'eNews Subscription',\n\t\t\t\t\t\tevent_category: 'eNews Subscription',\n\t\t\t\t\t\tevent_action: 'Subscribe',\n\t\t\t\t\t\tevent_label: 'footer',\n\t\t\t\t\t\tevent_value: 1,\n\t\t\t\t\t})\n\t\t\t\t\tSalesforceAbandonedCartUtils.setClientEmail(emailValue)\n\t\t\t\t\tSalesforceAbandonedCartUtils.trackCart()\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (checkoutPageEmailInput.length && checkoutPageSubscribeCheckbox.length) {\n\t\t\tcheckoutPageEmailInput.on('change', async (event) => {\n\n\t\t\t\tconst email = (event.target as HTMLInputElement).value ||\n\t\t\t\t\tsessionStorage.getItem('emailAddress') ||\n\t\t\t\t\tCommonUtils.getCookie('HAHemailID')\n\n\t\t\t\tconst { result }: any = await new Promise((resolve, _reject) => {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: email,\n\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\taction: 'status',\n\t\t\t\t\t\tcallback: (_err: any, data: any) => resolve(data)\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\t\tconst emailStatus = result\n\t\t\t\tconst agreeToReceiveEmails = (document.querySelector(this.elementIDs.checkoutPageSubscribeCheck) as HTMLInputElement).checked\n\n\t\t\t\tthis.toggleEmailStatusInSalesforce(email, emailStatus, agreeToReceiveEmails)\n\t\t\t})\n\t\t}\n\n\t\tif (checkoutPageSubscribeCheckbox.length) {\n\t\t\tcheckoutPageSubscribeCheckbox.on('change', async (event) => {\n\n\t\t\t\tconst email = (document.querySelector(this.elementIDs.checkoutPageEmailInput) as HTMLInputElement).value ||\n\t\t\t\t\tsessionStorage.getItem('emailAddress') ||\n\t\t\t\t\tCommonUtils.getCookie('HAHemailID')\n\n\t\t\t\tconst { result }: any = await new Promise((resolve, _reject) => {\n\t\t\t\t\tthis.callLambda({\n\t\t\t\t\t\temail: email,\n\t\t\t\t\t\tsource: 'checkout',\n\t\t\t\t\t\tshowLightboxMessage: false,\n\t\t\t\t\t\taction: 'status',\n\t\t\t\t\t\tcallback: (_err: any, data: any) => resolve(data)\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\t\tconst emailStatus = result\n\t\t\t\tconst agreeToReceiveEmails = (event.target as HTMLInputElement).checked\n\n\t\t\t\tthis.toggleEmailStatusInSalesforce(email, emailStatus, agreeToReceiveEmails)\n\t\t\t})\n\t\t}\n\t}\n}\n\ninterface ESignUpOptions {\n\n\t/**\n\t * SF subscription API url.\n\t */\n\tsfSubscriptionApi: string,\n\n\t/**\n\t * A piece of the payload that is sent to AWS Lambda to communicate with Salesforce.\n\t */\n\tlambdaPayload: {\n\t\twebsite: string,\n\t\tcampaign: string,\n\t\trefURL: string,\n\t\tcurrURL: string\n\t},\n\n\t/**\n\t * Options for the lightbox that is shown in some situations.\n\t */\n\tdialogObj: {\n\t\tmainTxt: string,\n\t\tsecondaryTxt: string,\n\t\tbtnTxt: string\n\t},\n\n\t/**\n\t * Query parameters to be considered.\n\t */\n\tlbHideParams: Array,\n\n\t/**\n\t * The name of the cookie to be used to store the client email status.\n\t */\n\tcookieValue: string,\n\n\t/**\n\t * HTML elements that are used in the process of subscribing a client email.\n\t */\n\telementIDs: ElementIDs\n}\n\ninterface LambdaOptions {\n\n\t/**\n\t * The email of the client.\n\t */\n\temail: string\n\n\t/**\n\t * The page/component where the client sets the email.\n\t */\n\tsource: string\n\n\t/**\n\t * The action to be done in the lambda function.\n\t */\n\taction: 'status' | 'add' | 'sweepsadd' | 'remove'\n\n\t/**\n\t * If true, the \"thank you for subscribing\" lightbox will be shown.\n\t */\n\tshowLightboxMessage?: boolean\n\n\t/**\n\t * A name that identifies the promotion.\n\t * Normally it's the sweeps promotion name and it's defined by an HTML element content.\n\t */\n\tname?: string\n\n\t/**\n\t * Identifies the campaign if the subscription belongs to one.\n\t * It's normally used with sweeps promotions.\n\t */\n\tcampaign?: string\n\n\t/**\n\t * A callback function to be called after the Lambda function request is done.\n\t */\n\tcallback?: (err: any, data: any) => any\n}\n\ninterface ElementIDs {\n\tlightBoxInput: string;\n\tlightBoxBtn: string;\n\tfooterInput: string;\n\tfooterBtn: string;\n\thomePageInput: string;\n\thomePageBtn: string;\n\tlightBoxBackground: string;\n\tlightBoxCloseBtn: string;\n\tsweepsBtn: string;\n\tsweepsEmail: string;\n\tsweepsName: string;\n\tsweepsCheck: string;\n\tsweepsBonvoyCheck: string;\n\tlandingPageSweepsBtn: string;\n\tlandingPageSweepsEmail: string;\n\tlandingPageSweepsName: string;\n\tlandingPageSweepsBonvoyCheck: string;\n\tlandingPageSweepsCheck: string;\n\tcheckoutPageEmailInput: string;\n\tcheckoutPageSubscribeCheck: string;\n}","jQuery(function () {\n\t// Forms animations and in line validation\n\tconst inputWrappers = document.querySelectorAll('.label-wrapper')\n\n\tfunction toggleClassOnFocus(e) {\n\t\tconst parent = e.target.parentElement\n\t\tif (e.type === 'focus' || (e.type === 'input' && e.target.value === '')) {\n\t\t\tparent.classList.add('focused')\n\t\t} else if (e.type === 'blur' && e.target.value === '') {\n\t\t\tparent.classList.remove('focused')\n\t\t}\n\t}\n\n\tfunction clearError(e) {\n\t\tlet inputControl = e.target.parentElement\n\t\tlet errorDisplay = inputControl.querySelector('.error') || inputControl.parentElement.querySelector('.span-err')\n\t\tif (e.target.type === 'email') {\n\t\t\tif (CommonUtils.validateEmail(e.target.value)) {\n\t\t\t\terrorDisplay.innerText = ''\n\t\t\t\tinputControl.classList.remove('error')\n\t\t\t}\n\t\t} else {\n\t\t\terrorDisplay.innerText = ''\n\t\t\tinputControl.classList.remove('error')\n\t\t}\n\t}\n\tsetTimeout(() => {\n\t\tinputWrappers.forEach(wrapper => {\n\t\t\tconst inputs = wrapper.querySelectorAll('input[type=\"text\"], input[type=\"email\"], input[type=\"tel\"], input[type=\"search\"], input[type=\"number\"], select, textarea')\n\n\t\t\tinputs.forEach((input: HTMLInputElement) => {\n\t\t\t\tinput.addEventListener('focus', toggleClassOnFocus)\n\t\t\t\tinput.addEventListener('blur', toggleClassOnFocus)\n\t\t\t\tinput.addEventListener('input', clearError)\n\t\t\t\tif (input.value !== '') {\n\t\t\t\t\tconst parent = input.parentElement\n\t\t\t\t\tparent.classList.add('focused')\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}, 500)\n\t// Replace email input values with trimmed values\n\t$('input[type=\\'email\\']').on('blur', function () {\n\t\tif ((this).value) {\n\t\t\tvar trimmedEmailVal = (this).value.trim();\n\t\t\t(this).value = trimmedEmailVal\n\t\t}\n\t});\n\t($('.fancybox')).fancybox({\n\t\topenEffect: 'elastic',\n\t\topenSpeed: 350,\n\t\tcloseEffect: 'elastic',\n\t\tcloseSpeed: 350,\n\t\tnextEffect: 'fade',\n\t\tnextSpeed: 200,\n\t\tloop: false\n\t});\n\t($('.iframe')).fancybox({\n\t\ttype: 'iframe',\n\t\tmaxWidth: 500,\n\t\tfitToView: false,\n\t\twidth: '90%',\n\t\tautoSize: false,\n\t\topenEffect: 'elastic',\n\t\topenSpeed: 350,\n\t\tcloseEffect: 'elastic',\n\t\tcloseSpeed: 350\n\t});\n\t($('.inline')).fancybox({\n\t\topenEffect: 'elastic',\n\t\topenSpeed: 350,\n\t\tcloseEffect: 'elastic',\n\t\tcloseSpeed: 350,\n\t\tnextEffect: 'fade',\n\t\tnextSpeed: 200,\n\t\tscrolling: 'no',\n\t\tautoSize: true\n\t});\n\t($('#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\tvar template = {\n\t\touterWrap: (dialogObj.pointsUnavailable) ? '
' : '
',\n\t\tcloseBtn: '

Close

',\n\t\tinnerMain: (dialogObj.pointsUnavailable) ? '

' : '

',\n\t\tinnerSecondary: '

',\n\t\tconfirmBtn: '
'\n\t}\n\tif (!document.getElementById('dialogbox')) {\n\t\t$(template.outerWrap).appendTo('body')\n\t} else {\n\t\tdocument.getElementById('dialogbox').style.display = ''\n\t\tdocument.getElementById('dialogbox').style.visibility = 'visible'\n\t}\n\t$('.confirmation').html(template.closeBtn + template.innerMain + template.innerSecondary + template.confirmBtn)\n\t$('#dialogMain').text(dialogObj.mainTxt)\n\t$('#dialogSecondary').text(dialogObj.secondaryTxt)\n\t$('#dialogBtn').val(dialogObj.btnTxt)\n\tHAHAccessibility.trapFocus({\n\t\tcontainer: '.signupConfirmationFocusTrap',\n\t\tcloseElement: '#dialogBtn',\n\t\tfirstElementToFocus: '#dialogBtn'\n\t})\n\t$('#dialogbox').on('click', function () {\n\t\t$(this).css({\n\t\t\t'visibility': 'hidden',\n\t\t\t'display': 'none\t'\n\t\t})\n\t})\n}\n//End dilogBox\n\n$(function () {\n\t//Include for JQuery version 1.5 and below\n\tjQuery.expr.pseudos.focus = function (elem: any) {\n\t\treturn elem === document.activeElement && (elem.type || elem.href)\n\t}\n\t$('form').on('keypress', function (e) {\n\t\tif (e.key === 'Enter') {\n\t\t\t//alert($(\"#tSearchString\").is(\":focus\"));\n\t\t\tif ($('#tSearchString').is(':focus')) {\n\t\t\t\t$('#searchSubmit').trigger('click')\n\t\t\t\treturn false\n\t\t\t} else if ($('#sweepsName, #sweepsEmail, #sweepsCheck, #sweepsBonvoyCheck').is(':focus')) {\n\t\t\t\t$('#sweepsBtn').trigger('click')\n\t\t\t\treturn false\n\t\t\t} else if ($('#landingPageSweepsName, #landingPageSweepsEmail, #landingPageSweepsCheck, #landingPageSweepsBonvoyCheck, #recaptcha-anchor').is(':focus')) {\n\t\t\t\t$('#landingPageSweepsBtn').trigger('click')\n\t\t\t\treturn false\n\t\t\t} else if ($('#emailAddress1').is(':focus')) {\n\t\t\t\t$('#emailAddress1').trigger('blur')\n\t\t\t\t$('#emailAddress1btn').trigger('click')\n\t\t\t\treturn false\n\t\t\t} else if ($('#emailAddress2').is(':focus')) {\n\t\t\t\t$('#emailAddress2').trigger('blur')\n\t\t\t\t$('#emailAddress2btn').trigger('click')\n\t\t\t\treturn false\n\t\t\t} else if ($('#searchUI_tbProductName').is(':focus')) {\n\t\t\t\tdoSearch()\n\t\t\t\treturn false\n\t\t\t} else if ($('#validationNbr').is(':focus')) {\n\t\t\t\t$('#validationNbr').trigger('blur')\n\t\t\t\t$('#btn_apply').trigger('click')\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t})\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});\t\n// });\n\n// On \"DOMContentLoaded\" (before the \"load\" event), calls \"HAHAccessibility.init()\" \n$(() => HAHAccessibility.init())\n","class SalesforceAbandonedCartUtils {\n\tstatic clientEmail = ''\n\tstatic catalogId = ''\n\tstatic subscriberKey = ''\n\tstatic cartOrOrderData = []\n\t/**\n\t * Defines if should log messages in the console.\n\t */\n\tstatic debug = false\n\t/**\n\t * Should be called as soon as possible.\n\t */\n\tstatic setOrganizationId(salesforceOrganizationId: string) {\n\t\t_etmc.push(['setOrgId', salesforceOrganizationId])\n\t\tif (this.debug) {\n\t\t\tconsole.log(`Successfully set the organization id: ${salesforceOrganizationId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Should be called as soon as possible.\n\t */\n\tstatic setCatalogId(catalogId: string) {\n\t\tthis.catalogId = catalogId\n\t\tif (this.debug) {\n\t\t\tif (this.catalogId) {\n\t\t\t\tconsole.log(`Successfully set the catalog id: ${this.catalogId}`)\n\t\t\t} else {\n\t\t\t\tconsole.log('Couldn\\'t set catalog id because it is not valid.')\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Should be called after the client enters his email in:\n\t * - The email subscription lightbox\n\t * - The email subscription in the footer\n\t * - The email subscription in the checkout page\n\t */\n\tstatic setClientEmail(email: string) {\n\t\tthis.clientEmail = email?.trim()\n\t\tif (this.clientEmail) {\n\t\t\tconsole.log(`Successfully set the client email: ${this.clientEmail}`)\n\t\t\tSalesforceAbandonedCartUtils.setSubscriberKey()\n\t\t} else if (this.debug) {\n\t\t\tconsole.log('Couldn\\'t set client email because it is not valid.')\n\t\t}\n\n\t}\n\n\t/**\n\t * Should be called after `setCatalogId` and `setClientEmail`.\n\t */\n\tprivate static setSubscriberKey() {\n\n\t\tif (this.clientEmail && this.catalogId) {\n\t\t\tthis.subscriberKey = `${this.catalogId.toLowerCase()}_${this.clientEmail}`\n\t\t\tif (this.debug) {\n\t\t\t\tconsole.log(`Successfully set subscriber key: ${this.subscriberKey}`)\n\t\t\t}\n\t\t} else if (this.debug) {\n\t\t\tconsole.log('Couldn\\'t set subscriber key because client email or catalog id is not valid.')\n\t\t}\n\t}\n\n\t/**\n\t * Should be called for each new product added to the cart (after clicking \"Add to cart\").\n\t */\n\tstatic addCartOrOrderData({ item, quantity, price, salePrice: salePrice, uniqueId: uniqueId }: {\n\t\titem: any\n\t\tquantity: any\n\t\tprice: any\n\t\tsalePrice?: any\n\t\tuniqueId: any\n\t}) {\n\t\tconst product = {\n\t\t\titem: item,\n\t\t\tquantity: quantity,\n\t\t\tprice: price,\n\t\t\tsale_price: salePrice ?? undefined,\n\t\t\tunique_id: uniqueId\n\t\t}\n\n\t\tconst cartItem = this.cartOrOrderData.find((el) => el.unique_id === uniqueId)\n\n\t\tif(cartItem) {\n\t\t\tcartItem.quantity = (Number(cartItem.quantity) + Number(quantity)).toString()\n\t\t} else {\n\t\t\tthis.cartOrOrderData.push(product)\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.log('Sucessfully added to the cart:\\n', product)\n\t\t}\n\t}\n\n\t/**\n\t * Sends the cart data to Salesforce.\n\t */\n\tstatic trackCart() {\n\t\tif (this.subscriberKey) {\n\t\t\t_etmc.push(['setUserInfo', { email: this.subscriberKey }])\n\t\t\tif (this.cartOrOrderData.length > 0 && this.cartOrOrderData.length < 11) {\n\t\t\t\t_etmc.push(['trackCart', { cart: this.cartOrOrderData }])\n\t\t\t} else {\n\t\t\t\t_etmc.push(['trackCart', { clear_cart: true }])\n\t\t\t}\n\n\t\t\tif (this.debug) {\n\t\t\t\tconsole.log(`Successfully tracked the cart for ${this.subscriberKey} with:\\n`, this.cartOrOrderData)\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.debug) {\n\t\t\t\tconsole.log(`Couldn't track cart because subscriber key is not valid: ${this.subscriberKey}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Should be called if the order is completed by the client.\n\t */\n\tstatic trackConversion() {\n\t\tif (this.subscriberKey) {\n\t\t\t_etmc.push(['setUserInfo', { email: this.subscriberKey }])\n\t\t\t_etmc.push(['trackPageView'])\n\t\t\t_etmc.push(['trackConversion', { cart: this.cartOrOrderData }])\n\t\t\t_etmc.push(['trackCart', { 'clear_cart': true }])\n\n\t\t\tif (this.debug) {\n\t\t\t\tconsole.log(`Successfully tracked the conversion for ${this.subscriberKey} with:\\n`, this.cartOrOrderData)\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.debug) {\n\t\t\t\tconsole.log(`Couldn't track conversion because subscriber key is not valid: ${this.subscriberKey}.`)\n\t\t\t}\n\t\t}\n\t}\n}","function doSearch(): void {\n\ttry {\n\t\tconst searchString: string = (document.getElementById('OCForm1')).searchUI_tbProductName.value\n\t\tconst cleanedSearchString: string = searchString.replace('(', '').replace(')', '')\n\t\tconst searchInput = document.getElementById('searchUI_tbProductName')\n\t\tif (searchString !== '' && searchString !== 'I\\'m looking for...') {\n\t\t\tconst searchButton = $(\"#btn_Search-Search\")\n\t\t\tsearchButton.text(\"\").addClass(\"loader-light\")\n\t\t\tconst encodedSearchString: string = encodeURIComponent(cleanedSearchString)\n\t\t\twindow.location.href = `search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|${encodedSearchString}&customSearchParamsSearchString=${encodedSearchString}&from=QUICKSEARCH`\n\t\t} else {\n\t\t\tconst inputControl = searchInput.parentElement\n\t\t\tconst errorDisplay = inputControl.querySelector('.error') as HTMLElement\n\t\t\terrorDisplay.innerText = 'Please enter a product name'\n\t\t\tinputControl.classList.add('error')\n\t\t}\n\t} catch (e) { }\n}\n\nfunction doQuickSearch(searchPath: string): void {\n\ttry {\n\t\tconst searchString: string = (document.getElementById('OCForm1')).tSearchString.value\n\t\tconst cleanedSearchString: string = searchString.replace(/[\\(\\)']/g, '') // Use a regular expression to replace all '(', ')', and \"'\" characters.\n\t\tconst searchInput = document.getElementById('tSearchString')\n\t\tif (searchString !== '') {\n\t\t\tconst searchButton = $(\"#searchSubmit\")\n\t\t\tsearchButton.text(\"\").addClass(\"loader-light\")\n\t\t\tconst encodedSearchString: string = encodeURIComponent(cleanedSearchString)\n\t\t\twindow.location.href = `${searchPath}search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|${encodedSearchString}&customSearchParamsSearchString=${encodedSearchString}&from=QUICKSEARCH`\n\t\t} else {\n\t\t\tconst inputControl = searchInput.parentElement\n\t\t\tconst errorDisplay = inputControl.querySelector('.error') as HTMLElement\n\t\t\terrorDisplay.innerText = 'Please enter a product name'\n\t\t\tinputControl.classList.add('error')\n\t\t}\n\t} 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\t/**\n\t * @description Transfoms a number into a USD currency string.\n\t * @example $1,000.00\n\t */\n\tstatic toUSD(num: number): string {\n\t\tif (isNaN(num)) return ''\n\t\treturn new Intl.NumberFormat('en-US', {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency: 'USD'\n\t\t}).format(num)\n\t}\n\n\t/**\n\t * @description Validates the email syntax by using regex.\n\t */\n\tstatic validateEmail(invalue: string): boolean {\n\t\tvar regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$/\n\t\tvar valid = regex.test(invalue)\n\t\treturn valid\n\t}\n\n\t/**\n\t * @description Validates Canada's zip code syntax by using regex.\n\t */\n\tstatic isValidCaZipCode(value: string): boolean {\n\t\tvar re = /^[ABCEGHJKLMNPRSTVXYabceghjklmnprstvxy]{1}\\d{1}[A-Za-z]{1} *\\d{1}[A-Za-z]{1}\\d{1}$/\n\t\treturn (re.test(value))\n\t}\n\n\t/**\n\t * @description Validates United States's zip code syntax by using regex.\n\t */\n\tstatic isValidUsZipCode(value: string): boolean {\n\t\tvar re = /^\\d{5}([\\-]\\d{4})?$/\n\t\treturn re.test(value)\n\t}\n\n\t/**\n\t * @description Creates a cookie in the browser. If `days` are not set, it won't expire.\n\t */\n\tstatic createCookie(name: string, value: string, days?: number): void {\n\t\tvar expires = ''\n\t\tif (days) {\n\t\t\tvar date = new Date()\n\t\t\tdate.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n\t\t\texpires = `; expires=${date.toUTCString()}`\n\t\t} else expires = ''\n\t\tdocument.cookie = `${name}=${value}${expires}; path=/`\n\t}\n\n\t/**\n\t * @description Erases a cookie in the browser.\n\t */\n\tstatic eraseCookie(name: string): void {\n\t\tCommonUtils.createCookie(name, '', -1)\n\t}\n\n\t/**\n\t * @description Reads a cookie from the browser.\n\t */\n\tstatic readCookie(name: string): string {\n\t\tvar nameEQ = `${name}=`\n\t\tvar ca = document.cookie.split(';')\n\t\tfor (let i = 0; i < ca.length; i++) {\n\t\t\tvar c = ca[i]\n\t\t\twhile (c.charAt(0) === ' ') {\n\t\t\t\tc = c.substring(1, c.length)\n\t\t\t\tif (c.indexOf(nameEQ) === 0) {\n\t\t\t\t\treturn c.substring(nameEQ.length, c.length)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * @description Transforms a number / string into a currency string with (or without) a minus sign.\n\t * @examples \n\t * - -$1,000.00 \n\t * - $1,000.00\n\t */\n\tstatic formatCurrency(price: number | string): string {\n\t\tprice = price.toString().replace(/\\$|\\,/g, '')\n\t\tif (isNaN(Number(price))) price = '0'\n\t\tvar sign = Number(price) == (price = Math.abs(Number(price)))\n\t\tprice = Math.floor(price * 100 + 0.50000000001)\n\t\tvar cents: number | string = price % 100\n\t\tprice = Math.floor(price / 100).toString()\n\t\tif (cents < 10) cents = `0${cents}`\n\t\tfor (var i = 0; i < Math.floor((price.length - (1 + i)) / 3); i++)\n\t\t\tprice = `${price.substring(0, price.length - (4 * i + 3))},${price.substring(price.length - (4 * i + 3))}`\n\t\treturn `${(sign ? '' : '-')}$${price}.${cents}`\n\t}\n\n\t/**\n\t * @description Transforms a number / string into a string representing a number.\n\t */\n\tstatic formatPoints(points: number | string): string {\n\t\tpoints = points.toString().replace(/\\$|\\,/g, '')\n\t\tfor (var i = 0; i < Math.floor((points.length - (1 + i)) / 3); i++)\n\t\t\tpoints = `${points.substring(0, points.length - (4 * i + 3))},${points.substring(points.length - (4 * i + 3))}`\n\t\treturn points\n\t}\n\n\t/**\n\t * @description Used to read XML response from the back-end.\n\t */\n\tstatic getXMLDataSetTableCount(dsName: string, xmlString: string): number {\n\t\tvar returnValue = -1\n\t\tvar datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`)\n\t\tvar datasetEndIndex = xmlString.toLowerCase().indexOf(``)\n\t\tvar fieldStartIndex = -1\n\t\tvar fieldEndIndex = -1\n\t\tif (datasetStartIndex > -1 && datasetEndIndex > -1) {\n\t\t\tfieldStartIndex = xmlString.toLowerCase().indexOf(''.toLowerCase(), datasetStartIndex)\n\t\t\tif (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n\t\t\t\tfieldStartIndex = `${fieldStartIndex}`.toLowerCase().length\n\t\t\t\tfieldEndIndex = xmlString.toLowerCase().indexOf(''.toLowerCase(), fieldStartIndex)\n\t\t\t\tif (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n\t\t\t\t\treturnValue = parseInt(\n\t\t\t\t\t\txmlString.substring(fieldStartIndex, fieldEndIndex)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnValue\n\t}\n\n\t/**\n\t * @description Used to read XML response from the back-end.\n\t */\n\tstatic getXMLDataTableRowCount(dsName: string, dtIndex: number, xmlString: string): number {\n\t\tvar returnValue = -1\n\t\tvar datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`)\n\t\tvar datasetEndIndex = xmlString.toLowerCase().indexOf(``)\n\t\tvar fieldStartIndex = -1\n\t\tvar fieldEndIndex = -1\n\t\tif (datasetStartIndex > -1 && datasetEndIndex > -1) {\n\t\t\t//1\n\t\t\tfieldStartIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), datasetStartIndex)\n\t\t\tif (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n\t\t\t\tfieldStartIndex = fieldStartIndex + (``).toLowerCase().length\n\t\t\t\tfieldEndIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), fieldStartIndex)\n\t\t\t\tif (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n\t\t\t\t\treturnValue = parseInt(\n\t\t\t\t\t\txmlString.substring(fieldStartIndex, fieldEndIndex)\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnValue\n\t}\n\n\t/**\n\t * @description Used to read XML response from the back-end.\n\t */\n\tstatic getXMLDataFieldValue(dsName: string, dtIndex: number, rowIndex: number, fieldName: string, xmlString: string): string {\n\t\tvar returnValue = ''\n\t\tvar datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`)\n\t\tvar datasetEndIndex = xmlString.toLowerCase().indexOf(``)\n\t\tvar fieldStartIndex = -1\n\t\tvar fieldEndIndex = -1\n\t\tif (datasetStartIndex > -1 && datasetEndIndex > -1) {\n\t\t\tfieldStartIndex = xmlString\n\t\t\t\t.toLowerCase().indexOf((``).toLowerCase(), datasetStartIndex)\n\t\t\tif (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n\t\t\t\tfieldStartIndex = fieldStartIndex + (``).toLowerCase().length\n\t\t\t\tfieldEndIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), fieldStartIndex)\n\t\t\t\tif (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n\t\t\t\t\treturnValue = xmlString.substring(fieldStartIndex, fieldEndIndex)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnValue\n\t}\n\n\t/**\n\t * @description Used to read XML response from the back-end.\n\t */\n\tstatic getXMLTagValue(tagName: string, xmlString: string): string {\n\t\tlet tagValue = ''\n\t\tconst tagStartIndex = xmlString.toLowerCase().indexOf(`<${tagName.toLowerCase()}>`)\n\t\tconst tagEndIndex = xmlString.toLowerCase().indexOf(``)\n\t\tif (tagStartIndex > -1 && tagStartIndex < tagEndIndex) {\n\t\t\ttagValue = xmlString.substring(tagStartIndex + tagName.length + 2, tagEndIndex)\n\t\t}\n\t\treturn tagValue\n\t}\n\n\t/**\n\t * @description Removes bad numbers from a string. \n\t */\n\tstatic removeBadNumbers(inNumber: string): string {\n\t\tvar tmpNumber = ''\n\t\tfor (var i = 0; i < inNumber.length; i++) {\n\t\t\tvar tmpStr = inNumber.substring(i, i + 1)\n\t\t\tif (tmpStr === '-' || tmpStr === ' ' || isNaN(Number(tmpStr))) {\n\t\t\t} else {\n\t\t\t\ttmpNumber = tmpNumber + inNumber.substring(i, i + 1)\n\t\t\t}\n\t\t}\n\t\treturn tmpNumber\n\t}\n\n\t/**\n\t * @description Sets a cookie in the browser.\n\t */\n\tstatic setCookie(c_name: string, value: string, exdays?: number): void {\n\t\tvar exdate = new Date()\n\t\texdate.setDate(exdate.getDate() + exdays)\n\t\tvar c_value = `${encodeURIComponent(value)} ${(exdays === null ? '' : `; expires=${exdate.toUTCString()}`)};path = /`\n\t\tdocument.cookie = `${c_name}=${c_value}`\n\t}\n\n\t/**\n\t * @description Gets a cookie from the browser.\n\t */\n\tstatic getCookie(c_name: string): string | null {\n\t\tvar c_value = document.cookie\n\t\tvar c_start = c_value.indexOf(` ${c_name}=`)\n\t\tif (c_start === -1) {\n\t\t\tc_start = c_value.indexOf(`${c_name}=`)\n\t\t}\n\t\tif (c_start === -1) {\n\t\t\tc_value = null\n\t\t} else {\n\t\t\tc_start = c_value.indexOf('=', c_start) + 1\n\t\t\tvar c_end = c_value.indexOf(';', c_start)\n\t\t\tif (c_end === -1) {\n\t\t\t\tc_end = c_value.length\n\t\t\t}\n\t\t\tc_value = decodeURIComponent(c_value.substring(c_start, c_end))\n\t\t}\n\t\treturn c_value\n\t}\n\n\t/**\n\t * @description Toggles the loader visibility.\n\t */\n\tstatic showHideLoader(action: string, productIndex: number): void {\n\t\tvar loader = document.getElementById(`loader${productIndex}`)\n\t\tvar atc = document.getElementById(`ATC${productIndex}`)\n\t\tif (action === 'show') {\n\t\t\ttry {\n\t\t\t\tloader.style.display = ''\n\t\t\t\tloader.style.visibility = 'visible'\n\t\t\t\tatc.style.display = 'none'\n\t\t\t\tatc.style.visibility = 'hidden'\n\t\t\t} catch (e) { }\n\t\t} else if (action === 'hide') {\n\t\t\ttry {\n\t\t\t\tloader.style.display = 'none'\n\t\t\t\tloader.style.visibility = 'hidden'\n\t\t\t\tatc.style.display = ''\n\t\t\t\tatc.style.visibility = 'visible'\n\t\t\t} catch (e) { }\n\t\t}\n\t}\n\n\t/**\n\t * @description Shows an HTML element based on a given HTML selector with specified display style.\n\t * @param sel - The HTML selector of the element to show.\n\t * @param elementIndex - Optional index if the selector matches multiple elements (default is 0).\n\t * @param display - Optional display style ('block' or 'flex') to apply to the element (default is 'block').\n\t */\n\tstatic showElement(sel: string, elementIndex: number = 0, display: 'block' | 'flex' = 'block'): void {\n\t\tsel = sel.replace('#', '');\n\t\tlet element: any = document.getElementById(sel);\n\t\tif (element) {\n\t\t\tif (element.length === undefined || element.nodeName === 'SELECT') {\n\t\t\t\telement.style.display = display;\n\t\t\t\telement.style.visibility = 'visible';\n\t\t\t} else {\n\t\t\t\tif (element[elementIndex]) {\n\t\t\t\t\telement[elementIndex].style.display = display;\n\t\t\t\t\telement[elementIndex].style.visibility = 'visible';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @description Hides an HTML element based on a given HTML selector.\n\t */\n\tstatic hideElement(sel: string, elementIndex: number = 0): void {\n\t\tsel = sel.replace('#', '')\n\t\tlet element: any = document.getElementById(sel)\n\t\tif (element) {\n\t\t\tif (element.length === undefined || element.nodeName === 'SELECT') {\n\t\t\t\telement.style.display = 'none'\n\t\t\t\telement.style.visibility = 'hidden'\n\t\t\t} else {\n\t\t\t\telement[elementIndex].style.display = 'none'\n\t\t\t\telement[elementIndex].style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @description Gets the response of a XMLHttpRequest.\n\t */\n\tstatic getAjaxObject(): boolean {\n\t\tvar returnValue: any = false\n\t\ttry {\n\t\t\treturnValue = new XMLHttpRequest()\n\t\t} catch (trymicrosoft) {\n\t\t\ttry {\n\t\t\t\treturnValue = new ActiveXObject('Msxml2.XMLHTTP')\n\t\t\t} catch (othermicrosoft) {\n\t\t\t\ttry {\n\t\t\t\t\treturnValue = new ActiveXObject('Microsoft.XMLHTTP')\n\t\t\t\t} catch (failed) {\n\t\t\t\t\talert(failed.message)\n\t\t\t\t\treturnValue = false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnValue\n\t}\n\n\t/**\n\t * @description Sends error to Google Analytics.\n\t */\n\tstatic trackError(eventCategory: string, eventAction: string, eventLabel: string, eventParams?: any): void {\n\t\tdataLayer.push({\n\t\t\tevent: 'trackErrorEvent',\n\t\t\tevent_category: eventCategory,\n\t\t\tevent_action: eventAction,\n\t\t\tevent_label: eventLabel,\n\t\t\tevent_value: 1\n\t\t})\n\t\tif (typeof eventParams === 'object') {\n\t\t\tif (eventParams.event === 'placePointsOrderError') {\n\t\t\t\tdataLayer.push({\n\t\t\t\t\tevent: eventParams.event,\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\temail: window.btoa(encodeURIComponent(eventParams.email)),\n\t\t\t\t\t\tbonvoyEmail: window.btoa(encodeURIComponent(eventParams.bonvoyEmail)),\n\t\t\t\t\t\tbonvoyNumber: window.btoa(encodeURIComponent(eventParams.bonvoyNumber)),\n\t\t\t\t\t\tpointsToRedeem: eventParams.pointsToRedeem,\n\t\t\t\t\t\terrorMessage: eventParams.errorMessage\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @description Sends error to API.\n\t */\n\tstatic logError(errorType: string, errorMsg: string): void {\n\t\ttry {\n\t\t\tfetch(errorLogAPIURL, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tmode: 'no-cors',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'text/plain',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t'brand': 'HB',\n\t\t\t\t\t'page': window.location.href,\n\t\t\t\t\t'errorType': errorType,\n\t\t\t\t\t'errorMsg': errorMsg\n\t\t\t\t})\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.log(error)\n\t\t}\n\t}\n\n\t/**\n\t * @description Toggles the purchase type (can be \"points\" or \"cash\").\n\t */\n\tstatic swapPurchaseType(event: any): void {\n\t\tevent.preventDefault()\n\t\t$(this)\n\t\t\t.addClass('opened')\n\t\t\t.attr('tabindex', '-1')\n\t\t\t.trigger('focus')\n\t\t\t.attr('aria-expanded', 'true')\n\t\t\t.removeClass('closed')\n\t\t\t.next('div:hidden')\n\t\t\t.slideDown('fast')\n\t\t\t.siblings('div:visible')\n\t\t\t.slideUp('fast')\n\t\t\t.prev()\n\t\t\t.removeClass('opened')\n\t\t\t.addClass('closed')\n\t\t\t.attr('tabindex', '0')\n\t\t\t.attr('aria-expanded', 'false')\n\t}\n\n\t\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\t/**\n\t * @description Get category values from localStorage for a kit/add-on item that does not belong to a catagory in the DB.\n\t */\n\tstatic getInvtIDCategory(invtID:string,alternateID:string): {invtID:string,alternateID:string,category:string,categoryID:string} {\n\t\tlet invtIDCategory={invtID:'',alternateID:'',category:'',categoryID:''}\n\t\tif (localStorage['invtid_category']!==''&&localStorage['invtid_category']!==undefined) {\n\t\t\tconst invtIDCategoryArray=JSON.parse(localStorage['invtid_category'])\n\t\t\tconst found=invtIDCategoryArray.find((elem:{invtID:string,alternateID:string})=>elem.invtID===invtID&&elem.alternateID===alternateID)\n\t\t\tif (found!==undefined) {invtIDCategory=found}\n\t\t}\n\t\treturn invtIDCategory\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\tCommonUtils.createCookie(name, value, days)\n}\nfunction eraseCookie(name: string): void {\n\tCommonUtils.createCookie(name, '', -1)\n}\nfunction readCookie(name: string): string {\n\treturn 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)?.parentElement as HTMLElement | null;\n const errorDisplay = inputControl?.querySelector('.error') 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 ? \"url('images/misc/check-icon.svg')\" : \"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' ? '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]+(-[a-zA-Z]+)?(?: [a-zA-Z]+(-[a-zA-Z]+)?)*$/,\n 'address': /^(?=.*\\d)[a-zA-Z0-9\\s.,#\\-ºâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙáéíóúÁÉÍÓÚüÜçÇñÑ]*$/,\n 'city': /^[a-zA-Z\\sâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙáéíóúÁÉÍÓÚüÜçÇñÑ]*$/,\n 'phone': /^\\+?[0-9]{5,15}$/,\n\t\t'cvv':/^\\d{3}$/,\n\t\t'amxCardId':/^\\d{4}$/\n};\n\n// Function to validate form field\nfunction validateField(inputElement: HTMLInputElement) {\n const elementId = inputElement.id;\n const value = inputElement.value.trim();\n let isValid = true;\n let errorMessage = '';\n\n if (formElements.hasOwnProperty(elementId)) {\n const 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 }\n if (isValid && !value) {\n isValid = false;\n }\n\n setError(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(elementId) as HTMLInputElement | null;\n if (inputElement) {\n inputElement.addEventListener('blur', () => {\n validateField(inputElement);\n });\n }\n });\n}\n\nfunction validateZipCode(zipCode: string, countryCode: string) {\n\tif (countryCode === 'US') {\n\t\treturn CommonUtils.isValidUsZipCode(zipCode)\n\t} else if (countryCode === 'CA') {\n\t\treturn CommonUtils.isValidCaZipCode(zipCode)\n\t}\n\treturn true\n}\n\n// Define form elements\nconst formElements = {\n\temailAddress: { type: 'email', errMessage: 'You must enter a valid email address.' },\n\taddressUI_tbBillAddressName: { type: 'name', errMessage: 'You must enter a valid Billing Name.' },\n\taddressUI_tbBillAddressFirstName: { type: 'name', errMessage: 'You must enter a valid Billing First Name.' },\n\taddressUI_tbBillAddressLastName: { type: 'name', errMessage: 'You must enter a valid Billing Last Name.' },\n\taddressUI_tbBillAddr1: { type: 'address', errMessage: 'Include your street number to proceed.' },\n\taddressUI_tbBillAddr2: { type: 'text' },\n\taddressUI_tbBillAddrCity: { type: 'city', errMessage: 'You must enter a valid Billing City.' },\n\taddressUI_tbShipAddressName: { type: 'name', errMessage: 'You must enter a valid Shipping Name.' },\n\taddressUI_tbShipAddressFirstName: { type: 'name', errMessage: 'You must enter a valid Shipping First Name.' },\n\taddressUI_tbShipAddressLastName: { type: 'name', errMessage: 'You must enter a valid Shipping Last Name.' },\n\taddressUI_tbShipAddr1: { type: 'address', errMessage: 'Include your street number to proceed.' },\n\taddressUI_tbShipAddr2: { type: 'text' },\n\taddressUI_tbShipAddrCity: { type: 'city', errMessage: 'You must enter a valid Shipping City.' },\n\taddressUI_tbBillAddrZip: { \n\t\ttype: 'zip', \n\t\terrMessage: 'You must enter a valid Billing Postal Code.' ,\n\t\tfieldValidation: () => {\n\t\t\tconst shippingCountryCode = (document.getElementById('addressUI_ddlShipAddrCountry')).value\n\t\t\tconst zipCode = (document.getElementById('addressUI_tbShipAddrZip')).value\n\t\t\treturn validateZipCode(zipCode, shippingCountryCode)\n\t\t} \n\t},\n\taddressUI_tbShipAddrZip: { \n\t\ttype: 'zip', \n\t\terrMessage: 'You must enter a valid Shipping Postal Code.', \n\t\tfieldValidation: () => {\n\t\t\tconst shippingCountryCode = (document.getElementById('addressUI_ddlShipAddrCountry')).value\n\t\t\tconst zipCode = (document.getElementById('addressUI_tbShipAddrZip')).value\n\t\t\treturn validateZipCode(zipCode, shippingCountryCode)\n\t\t} \n\t},\n\taddressUI_tbBillAddrPhone: { type: 'phone', errMessage: 'You must enter a valid Billing Phone Number.' },\n\taddressUI_tbShipAddrPhone: { type: 'phone', errMessage: 'You must enter a valid Shipping Phone Number.' },\n\taddressUI_ddlBillAddrCountry: { type: 'selectbox', errMessage: '' },\n\taddressUI_ddlBillAddrState: { type: 'selectbox', errMessage: 'You must enter a valid Billing State/Province.', hiddenInputIDs: ['addressUI_hBillAddrState', 'hBillState'] },\n\taddressUI_ddlShipAddrCountry: { type: 'selectbox', errMessage: '' },\n\taddressUI_ddlShipAddrState: { type: 'selectbox', errMessage: 'You must enter a valid Shipping State/Province.', hiddenInputIDs: ['addressUI_hShipAddrState', 'hShipState'] },\n\taddressUI_cSameAsShipping: { type: 'checkbox', errMessage: '' },\n\tFirstName: { type: 'name', errMessage: 'You must enter a valid First Name.' },\n\tLastName: { type: 'name', errMessage: 'You must enter a valid Last Name.' },\n\tPhone: { type: 'phone', errMessage: 'You must enter a valid Phone Number.' },\n\tpaymentTypeUI_tbCreditCardName: { type: 'name', errMessage: 'You must a valid Name on card.' },\n\tpaymentTypeUI_tbCreditCardCode: { \n\t\ttype: 'cvv', \n\t\terrMessage: 'You must enter a valid CVV.', \n\t\tfieldValidation: validateCardCodeFunction(1) \n\t},\n\tpaymentTypeUI_tbCreditCardCode2: { \n\t\ttype: 'cvv', \n\t\terrMessage: 'You must enter a valid CVV.', \n\t\tfieldValidation: validateCardCodeFunction(2) \n\t}\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\t\t\t'addressUI_tbBillAddressFirstName', \n\t\t\t'addressUI_tbBillAddressLastName', \n\t\t\t'addressUI_tbBillAddressName', \n\t\t\t'addressUI_tbBillAddressName', \n\t\t\t'addressUI_tbBillAddrPhone', \n\t\t\t'addressUI_tbBillAddr1', \n\t\t\t'addressUI_tbBillAddrCity', \n\t\t\t'addressUI_ddlBillAddrState', \n\t\t\t'addressUI_tbBillAddrState', \n\t\t\t'addressUI_tbBillAddrZip', \n\t\t\t'addressUI_tbShipAddressFirstName', \n\t\t\t'addressUI_tbShipAddressLastName', \n\t\t\t'addressUI_tbShipAddressName', \n\t\t\t'addressUI_tbShipAddrPhone', \n\t\t\t'addressUI_tbShipAddr1', \n\t\t\t'addressUI_ddlShipAddrCountry', \n\t\t\t'addressUI_tbShipAddrCity', \n\t\t\t'addressUI_ddlShipAddrState', \n\t\t\t'addressUI_tbShipAddrState', \n\t\t\t'addressUI_tbShipAddrZip', \n\t\t\t'emailAddress',\n\t\t\t'FirstName',\n\t\t\t'LastName',\n\t\t\t'Phone',\n\t\t\t'paymentTypeUI_tbCreditCardName',\n\t\t\t'paymentTypeUI_tbCreditCardCode',\n\t\t\t'paymentTypeUI_tbCreditCardCode2',\t\t\t\n\t\t];\n\n // Attach the event listener to each element\n attachEventListeners(elementIds);\n});\n\n\n\ndocument.addEventListener('DOMContentLoaded', function() {\n const increaseBtns: NodeListOf = document.querySelectorAll('.increase-btn');\n const decreaseBtns: NodeListOf = document.querySelectorAll('.decrease-btn');\n\n\tincreaseBtns.forEach(function(increaseBtn) {\n\t\tincreaseBtn.addEventListener('click', function() {\n\t\t\tconst quantityInput = this.parentNode?.querySelector('input[name=\"quantity\"]');\n\t\t\tconst decreaseBtn = this.parentNode?.querySelector('.decrease-btn');\n\t\n\t\t\tif (quantityInput instanceof HTMLInputElement && decreaseBtn instanceof HTMLButtonElement) {\n\t\t\t\tlet currentValue = parseInt(quantityInput.value);\n\t\t\t\tcurrentValue = isNaN(currentValue) ? 1 : currentValue;\n\t\t\t\tcurrentValue = Math.min(currentValue + 1, parseInt(quantityInput.max));\n\t\t\t\tquantityInput.value = currentValue.toString();\n\t\n\t\t\t\tif (currentValue > parseInt(quantityInput.min)) {\n\t\t\t\t\tdecreaseBtn.removeAttribute('disabled');\n\t\t\t\t\tdecreaseBtn.classList.remove('disabled');\n\t\t\t\t}\n\t\n\t\t\t\tif (currentValue >= 99) {\n\t\t\t\t\tincreaseBtn.disabled = true;\n\t\t\t\t\tincreaseBtn.classList.add('disabled');\n\t\t\t\t} else {\n\t\t\t\t\tincreaseBtn.disabled = false;\n\t\t\t\t\tincreaseBtn.classList.remove('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t\n\tdecreaseBtns.forEach(function(decreaseBtn) {\n\t\tdecreaseBtn.addEventListener('click', function() {\n\t\t\tconst quantityInput = this.parentNode?.querySelector('input[name=\"quantity\"]');\n\t\t\tconst increaseBtn = this.parentNode?.querySelector('.increase-btn');\n\t\n\t\t\tif (quantityInput instanceof HTMLInputElement && increaseBtn instanceof HTMLButtonElement) {\n\t\t\t\tlet currentValue = parseInt(quantityInput.value);\n\t\t\t\tcurrentValue = isNaN(currentValue) ? 1 : currentValue;\n\t\t\t\tcurrentValue = Math.max(currentValue - 1, parseInt(quantityInput.min));\n\t\t\t\tquantityInput.value = currentValue.toString();\n\t\n\t\t\t\tif (currentValue < parseInt(quantityInput.max)) {\n\t\t\t\t\tincreaseBtn.removeAttribute('disabled');\n\t\t\t\t\tincreaseBtn.classList.remove('disabled');\n\t\t\t\t}\n\t\n\t\t\t\tif (currentValue <= 1) {\n\t\t\t\t\tdecreaseBtn.disabled = true;\n\t\t\t\t\tdecreaseBtn.classList.add('disabled');\n\t\t\t\t} else {\n\t\t\t\t\tdecreaseBtn.disabled = false;\n\t\t\t\t\tdecreaseBtn.classList.remove('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\t\n\n\t\n\tconst inputs = document.querySelectorAll('.qty-input');\n\tinputs.forEach((input) => {\n\t\tinput.addEventListener('input', (event) => {\n\t\t\tconst inputElement = event.target as HTMLInputElement;\n\t\t\tlet value = inputElement.value;\n\t\t\t// Remove leading zeros and ensure the input is a number from 1 to 99\n\t\t\tvalue = value.replace(/^0+/, ''); // Remove leading zeros\n\t\t\tconst regex = /^[1-9][0-9]?$/; // Match numbers from 1 to 99\n\t\t\tif (!regex.test(value)) {\n\t\t\t\t// If not, adjust the value to the last valid input\n\t\t\t\tvalue = value.replace(/[^0-9]/g, ''); // Remove non-numeric characters\n\t\t\t\tif (value.length > 2) {\n\t\t\t\t\tvalue = value.slice(0, 2); // Keep only the first two digits\n\t\t\t\t}\n\t\t\t\tinputElement.value = value;\n\t\t\t}\n\t\t});\n\t});\n\n});\n\n\n\n\n"]}