{"version":3,"sources":["accesibility.ts","esignup.ts","late.ts","salesforce.ts","search.ts","utils.ts"],"names":["HAHAccessibility","_classCallCheck","this","_createClass","key","value","_ref","setFocusables","focusableElementsNL","containerHTMLElement","querySelectorAll","selectors","focusableElements","Array","from","filter","el","tabIndex","firstFocusableEl","lastFocusableEl","length","bindEventsToFocusableElements","forEach","element","addEventListener","eventHandler","unbindEventsToFocusableElements","unbindEvents","removeEventListener","container","closeElement","additionalCloseElements","tablistUpdateElements","triggerHTMLElement","firstElementToFocus","document","querySelector","closeHTMLElement","KEYCODE_TAB","e","stopPropagation","isTabPressed","keyCode","isEscapePressed","shiftKey","activeElement","focus","preventDefault","closeTrapFocus","altCloseHTMLElement","DEBUG_TRAP_FOCUS","console","log","updaterElement","_ref2","trigger","currentSlide","currentSlideIndex","Number","getAttribute","_index","title","parentNode","imageAltText","$","concat","attr","target","elementIndex","indexOf","click","getElementById","style","visibility","display","trapFocus","alert","logActiveElement","LOG_ACTIVE_ELEMENT","window","mainNavList","i","NavigationBar","navList","tablists","tabLists","TabsManual","FANCYBOX_VERSION","initADAForFancybox2","initADAForFancybox4","on","triggerElement","fancybox","afterShow","triggerElementId","includes","altDialogText","find","innerText","removeAttr","afterClose","openEffect","openSpeed","closeEffect","closeSpeed","nextEffect","nextSpeed","padding","margin","scrolling","autoSize","Fancybox","bind","once","done","children","fancyboxId","$container","setAttribute","trapFocusFancybox4","Thumbs","Toolbar","dragToClose","infinite","text","toLowerCase","replace","trim","newAltDialogText","removeAttribute","_defineProperty","navigationBar","menuItems","linkMenuItems","subMenuItems","subMenuItem","tabsManual","tabs","radioGroup","radioItems","groupNode","_this","navlistNode","currentLocation","location","href","push","firstMenuItem","lastMenuItem","j","_loop","onKeydown","call","_loop2","k","_loop3","_j","allNavLink","l","currentLink","indexMenu","_indexSubMenu","moveFocusToLink","indexSubMenu","subMenuLenght","str","match","character","linksArrToSearch","startIndex","name","startsWith","event","flag","moveFocusToPreviousLink","moveFocusToNextLink","moveFocusToPreviousSublink","moveFocusToNextSublink","moveFocusToFirstlink","moveFocusToLastlink","moveFocusTofatherlink","isPrintableCharacter","setFocusByFirstCharacter","tablistNode","firstTab","lastTab","tab","currentTab","moveFocusToTab","index","tgt","currentTarget","moveFocusToPreviousTab","moveFocusToNextTab","RadioGroup","_this2","radioOptNode","firstRadioItem","lastRadioItem","_loop4","currentRadio","indexRadio","moveFocusToRadio","moveFocusToPreviousRadio","moveFocusToNextRadio","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","h","f","Error","s","method","arg","delegate","maybeInvokeDelegate","TypeError","y","tryCatch","type","resultName","next","nextLoc","sent","_sent","dispatchException","abrupt","p","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","callInvokeWithMethodAndArg","invoke","_typeof","resolve","__await","then","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","obj","_toPropertyKey","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_toPrimitive","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","action","callback","payload","apiGatewayUrl","response","_data","_context","email","source","_ref2$showLightboxMes","showLightboxMessage","_ref2$name","_ref2$campaign","campaign","_ref2$callback","showLightbox","dilogBox","scrollTo","emailId","getTimeZone","data","fetch","headers","Content-Type","body","JSON","stringify","json","t0","_x","vars","search","substring","split","paramsPresent","CommonUtils","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","_callee2","emailStatus","agreeToReceiveEmails","dateInserted","dateUpdated","diffInMilliseconds","_context2","sessionStorage","setItem","SalesforceAbandonedCartUtils","setClientEmail","trackCart","callLambda","StatusCode","isActive","dataLayer","event_category","event_action","event_label","event_value","isUnsubscribed","Payload","parse","status","_unused","_unused2","now","abs","getTime","_unused3","_x2","_x3","_x4","checkoutPageSubscribeCheckbox","is","emailValue","val","sweepsChecked","validateSweeps","landingPageSweepsChecked","hideLandingPageSweepsForm","inputControl","closest","addClass","_ref3","_callee3","_context3","getItem","_reject","_err","_yield$Promise","result","toggleEmailStatusInSalesforce","_x5","_ref4","_callee4","_context4","_yield$Promise2","_x6","template","outerWrap","pointsUnavailable","closeBtn","innerMain","innerSecondary","confirmBtn","appendTo","html","mainTxt","secondaryTxt","css","jQuery","inputWrappers","toggleClassOnFocus","parent","parentElement","classList","add","remove","clearError","errorDisplay","setTimeout","wrapper","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","c_value","setDate","getDate","c_start","c_end","decodeURIComponent","productIndex","loader","atc","sel","nodeName","XMLHttpRequest","trymicrosoft","ActiveXObject","othermicrosoft","failed","message","eventCategory","eventAction","eventLabel","eventParams","detail","btoa","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","errorType","errorMsg","errorLogAPIURL","mode","brand","page","removeClass","slideDown","siblings","slideUp","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","selectbox","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","contactEmailAddress","Phone","paymentTypeUI_tbCreditCardName","paymentTypeUI_tbCreditCardCode","paymentTypeUI_tbCreditCardCode2","increaseBtns","decreaseBtns","increaseBtn","currentValue","quantityInput","_this$parentNode","decreaseBtn","_this$parentNode2","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: 'US',\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' && cardType != 'G') ? 'cvv' : 'amxCardId'].test(value)\n\t}\n} \n\n// Define regular expressions\nconst patterns: { [key: string]: RegExp } = {\n 'email': /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n 'name': /^[a-zA-Z]+(-[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\t\t'selectbox': /^(?!.*--).*$/\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\tcontactEmailAddress: { type: 'email', errMessage: 'You must enter a valid email address.' },\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',\n\t\t\t'contactEmailAddress',\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"]}