{"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","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","logActiveElement","LOG_ACTIVE_ELEMENT","window","mainNavList","i","NavigationBar","navList","tablists","tabLists","TabsManual","FANCYBOX_VERSION","initADAForFancybox2","initADAForFancybox4","on","triggerElement","fancybox","afterShow","altDialogText","children","trapFocus","afterClose","removeAttr","Fancybox","bind","once","done","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","stopPropagation","tablistNode","firstTab","lastTab","tab","currentTab","moveFocusToTab","index","tgt","currentTarget","moveFocusToPreviousTab","moveFocusToNextTab","RadioGroup","_this2","radioOptNode","firstRadioItem","lastRadioItem","_loop4","currentRadio","indexRadio","moveFocusToRadio","moveFocusToPreviousRadio","moveFocusToNextRadio","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","context","state","protoGenerator","Generator","generator","create","Context","method","arg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","methodName","undefined","TypeError","ContinueSentinel","record","tryCatch","type","info","resultName","next","nextLoc","sent","_sent","dispatchException","abrupt","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","result","_typeof","__await","then","unwrapped","error","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","ownKeys","enumerableOnly","symbols","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_toPrimitive","String","input","hint","prim","toPrimitive","res","ESignUp","amzSDK","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","lambdaClient","initLambdaClient","_toggleEmailStatusInSalesforce","AWS","config","credentials","CognitoIdentityCredentials","IdentityPoolId","poolId","apiVersions","lambda","update","maxRetries","httpOptions","timeout","connectTimeout","Lambda","currDate","Date","Math","floor","getTimezoneOffset","toString","fadeOut","fadeIn","email","action","_ref2$showLightboxMes","showLightboxMessage","_ref2$name","_ref2$campaign","campaign","_ref2$callback","callback","payload","showLightbox","dilogBox","scrollTo","emailId","getTimeZone","data","params","FunctionName","functionName","Payload","JSON","stringify","vars","search","substring","split","paramsPresent","CommonUtils","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","getElementById","style","display","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","alert","_callee","emailStatus","agreeToReceiveEmails","dateInserted","dateUpdated","diffInMilliseconds","_context","sessionStorage","setItem","SalesforceAbandonedCartUtils","setClientEmail","trackCart","includes","callLambda","StatusCode","isActive","dataLayer","event_category","event_action","event_label","event_value","isUnsubscribed","parse","status","_unused","_unused2","now","abs","getTime","_unused3","_x","_x2","_x3","checkoutPageSubscribeCheckbox","is","emailValue","sweepsChecked","validateSweeps","landingPageSweepsChecked","hideLandingPageSweepsForm","_ref3","_callee2","_context2","getItem","_reject","_err","toggleEmailStatusInSalesforce","_x4","_ref4","_callee3","_context3","_x5","template","outerWrap","pointsUnavailable","closeBtn","innerMain","innerSecondary","confirmBtn","visibility","appendTo","html","mainTxt","secondaryTxt","css","jQuery","trimmedEmailVal","openEffect","openSpeed","closeEffect","closeSpeed","nextEffect","nextSpeed","loop","maxWidth","fitToView","width","autoSize","scrolling","expr","pseudos","elem","doSearch","init","salesforceOrganizationId","_etmc","debug","catalogId","clientEmail","user_info","setSubscriberKey","subscriberKey","item","quantity","price","salePrice","product","sale_price","unique_id","uniqueId","cartOrOrderData","cart","clear_cart","searchString","searchUI_tbProductName","encodeURIComponent","doQuickSearch","searchPath","tSearchString","num","Intl","NumberFormat","currency","format","invalue","days","date","expires","setTime","toUTCString","cookie","createCookie","nameEQ","ca","c","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","ATCButton","SubButton","removeLoaderToButton","ATBButton","ATBSubButton","productATCButton","productATCBSubutton","addLoaderToButton","button","classList","add","innerText","disabled","remove","sel","nodeName","XMLHttpRequest","trymicrosoft","ActiveXObject","othermicrosoft","failed","message","eventCategory","eventAction","eventLabel","eventParams","detail","btoa","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","errorType","errorMsg","fetch","errorLogAPIURL","mode","headers","Content-Type","body","brand","page","addClass","removeClass","slideDown","siblings","slideUp","string","DOMParser","parseFromString","documentElement","textContent","invtID","alternateID","found","invtIDCategory","category","categoryID","localStorage","find","eraseCookie","readCookie","setError","elementId","isValid","inputControl","_document$getElementB","parentElement","errorDisplay","iconElement","createElement","className","appendChild","selectedValue","marginRight","toggle","backgroundImage","validateCardCodeFunction","cardType","patterns","address","city","phone","cvv","amxCardId","validateField","inputElement","elementType","customFieldValidation","id","formElements","fieldValidation","errMessage","attachEventListeners","elementIds","validateZipCode","zipCode","countryCode","isValidUsZipCode","isValidCaZipCode","emailAddress","addressUI_tbBillAddressName","addressUI_tbBillAddressFirstName","addressUI_tbBillAddressLastName","addressUI_tbBillAddr1","addressUI_tbBillAddr2","addressUI_tbBillAddrCity","addressUI_tbShipAddressName","addressUI_tbShipAddressFirstName","addressUI_tbShipAddressLastName","addressUI_tbShipAddr1","addressUI_tbShipAddr2","addressUI_tbShipAddrCity","addressUI_tbBillAddrZip","shippingCountryCode","addressUI_tbShipAddrZip","addressUI_tbBillAddrPhone","addressUI_tbShipAddrPhone","addressUI_ddlBillAddrCountry","addressUI_ddlBillAddrState","hiddenInputIDs","addressUI_ddlShipAddrCountry","addressUI_ddlShipAddrState","addressUI_cSameAsShipping","FirstName","LastName","Phone","paymentTypeUI_tbCreditCardName","paymentTypeUI_tbCreditCardCode","paymentTypeUI_tbCreditCardCode2","increaseBtns","decreaseBtns","increaseBtn","currentValue","quantityInput","_this$parentNode","decreaseBtn","_this$parentNode2","HTMLInputElement","HTMLButtonElement","min","max","_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 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 static selectors = {\n mainNavList: '#main-nav',\n navList: '#side-nav',\n tabLists: '[role=tablist]',\n focusableElements: 'input[type=\"text\"]:not([disabled]), ' // inputs of type \"text\" that are not disabled\n + 'input[type=\"radio\"]:not([disabled]), ' // inputs of type \"radio\" that are not disabled\n + 'input[type=\"checkbox\"]:not([disabled]), ' // inputs of type \"checkbox\" that are not disabled\n + 'input[type=\"email\"]:not([disabled]), ' // inputs of type \"email\" that are not disabled\n + 'input[type=\"button\"]:not([disabled]), ' // inputs of type \"button\" that are not disabled\n + 'input[type=\"search\"]:not([disabled]), ' // inputs of type \"search\" that are not disabled\n + 'textarea:not([disabled]), ' // textareas that are not disabled\n + 'select:not([disabled]), ' // selects that are not disabled\n + 'a[href]:not([disabled]):not([id^=\"TN_l2\"]):not([id^=\"TN_l3\"]):not([id=\"TN_l1_comingsoon\"]),' // links that has \"href\" attribute, are not disabled, id different from TN_l1_comingsoon and id doesn't contain TN_l2 (mainNav on mobile)\n + 'button:not([disabled]), ' // buttons that are not disabled\n + '[data-focusable=\"true\"]', // buttons that are not disabled\n navigationBar: {\n menuItems: '.dropdown',\n linkMenuItems: '.dropdownLink',\n subMenuItems: `.submenuContainer`,\n subMenuItem: '[role=\"menuitem\"]'\n },\n tabsManual: {\n tabs: '[role=tab]'\n },\n radioGroup: {\n radioItems: '[role=radio]'\n }\n }\n\n\t\t/** Trap the tab navigation focus */\n\t\tstatic trapFocus({\n\t\t\tcontainer,\n\t\t\tcloseElement,\n\t\t\tadditionalCloseElements,\n\t\t\ttablistUpdateElements,\n\t\t\ttriggerHTMLElement,\n\t\t\tfirstElementToFocus,\n\t\t\tunbindEvents\n\t\t }: {\n\t\t\n\t\t\t/**\n\t\t\t * The modal / container where the focus should be trapped.\n\t\t\t */\n\t\t\tcontainer: string,\n\t\t\n\t\t\t/**\n\t\t\t * The element that `closeTrapFocus` function will `click` to close the modal.\n\t\t\t */\n\t\t\tcloseElement: string,\n\t\t\n\t\t\t/**\n\t\t\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t\t\t * will call the `closeTrapFocus` function.\n\t\t\t */\n\t\t\tadditionalCloseElements?: string[],\n\t\t\n\t\t\t/**\n\t\t\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t\t\t * will restore the focusable elements inside the container.\n\t\t\t */\n\t\t\ttablistUpdateElements?: string[],\n\t\t\n\t\t\t/**\n\t\t\t * The element that opened the modal / the element where to focus should go\n\t\t\t * after closing the modal.\n\t\t\t */\n\t\t\ttriggerHTMLElement?: HTMLElement,\n\t\t\n\t\t\t/**\n\t\t\t * The element that should be focused after opening the modal.\n\t\t\t * If not defined it will be automatically defined.\n\t\t\t */\n\t\t\tfirstElementToFocus?: string,\n\n\t\t\tunbindEvents?: boolean,\n\n\t\t }): void {\n\t\t\n\t\t\tconst containerHTMLElement: HTMLElement = document.querySelector(container);\n\t\t\tconst closeHTMLElement: HTMLElement = document.querySelector(closeElement);\n\t\t\n\t\t\tlet focusableElementsNL: NodeListOf\n\t\t\tlet focusableElements: Element[]\n\t\t\tlet firstFocusableEl: Element\n\t\t\tlet lastFocusableEl: Element\n\t\t\t\n\t\t\tconst KEYCODE_TAB = 9;\n\t\t\n\t\t\tconst setFocusables = () => {\n\t\t\t focusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements);\n\t\t\t focusableElements = Array.from(focusableElementsNL).filter((el: Element) => (el as HTMLElement).tabIndex !== -1)\n\t\t\t firstFocusableEl = focusableElements[0]\n\t\t\t lastFocusableEl = focusableElements[focusableElements.length - 1];\n\t\t\n\t\t\t bindEventsToFocusableElements();\n\t\t\t}\n\t\t\n\t\t\tconst eventHandler = (e: KeyboardEvent) => {\n\t\t\t const isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n\t\t\t const isEscapePressed = e.key === 'Escape'\n\t\t\t \n\t\t\t if (!isTabPressed && !isEscapePressed) {\n\t\t\t\treturn;\n\t\t\t }\n\t\t\t \n\t\t\t // If pressed tab\n\t\t\t if (isTabPressed) {\n\t\t\n\t\t\t\t// If pressed shift + tab\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t \n\t\t\t\t // If the active element is the first focusable element,\n\t\t\t\t // focus in the last focusable element.\n\t\t\t\t if (document.activeElement === firstFocusableEl) {\n\t\t\t\t\t(lastFocusableEl as HTMLElement).focus();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t }\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// If pressed only tab\n\t\t\t\telse {\n\t\t\t\t \n\t\t\t\t // If the active element is the last focusable element,\n\t\t\t\t // focus in the first focusable element.\n\t\t\t\t if (document.activeElement === lastFocusableEl) {\n\t\t\t\t\t(firstFocusableEl as HTMLElement).focus();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t }\n\t\t\t\t}\n\t\t\t }\n\t\t\t \n\t\t\t // If pressed escape\n\t\t\t if (isEscapePressed) {\n\t\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t\t }\n\t\t\t}\n\t\t\t\n\t\t\tconst bindEventsToFocusableElements = () => {\n\t\t\t focusableElements.forEach((element) => {\n\t\t\t\telement.addEventListener('keydown', eventHandler)\n\t\t\t });\n\t\t\t}\n\t\t\t\n\t\t\tconst unbindEventsToFocusableElements = () => {\n\t\t\t\tif(unbindEvents){\n\t\t\t\t\tfocusableElements.forEach((element) => {\n\t\t\t\t\t\telement.removeEventListener('keydown', eventHandler)\n\t\t\t\t });\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tsetFocusables();\n\t\t\t\n\t\t\tadditionalCloseElements?.forEach((element: string) => {\n\t\t\t const altCloseHTMLElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\t\t altCloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t HAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t\t\t}\n\t\t\t })\n\t\t\t altCloseHTMLElement.addEventListener('click', (e) => {\n\t\t\t\tHAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t\t })\n\t\t\t})\n\t\t\n\t\t\tif (HAHAccessibility.DEBUG_TRAP_FOCUS) {\n\t\t\t console.log(\"focusableElements\", focusableElements)\n\t\t\t console.log(\"firstFocusableEl\", firstFocusableEl)\n\t\t\t console.log(\"lastFocusableEl\", lastFocusableEl)\n\t\t\t}\n\t\t\n\t\t\tcloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t\t if (e.key === 'Enter') {\n\t\t\t\tunbindEventsToFocusableElements();\n\t\t\t }\n\t\t\t})\n\t\t\n\t\t\tcloseHTMLElement.addEventListener('click', () => {\n\t\t\t unbindEventsToFocusableElements();\n\t\t\t})\n\t\t\n\t\t\ttablistUpdateElements?.forEach((element) => {\n\t\t\t const updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\t\t if (updaterElement) {\n\t\t\t\tupdaterElement.addEventListener('keypress', (e) => {\n\t\t\t\t if (e.key === 'Enter') {\n\t\t\t\t\tsetFocusables();\n\t\t\t\t }\n\t\t\t\t})\n\t\t\t\tupdaterElement.addEventListener('click', (e) => {\n\t\t\t\t setFocusables();\n\t\t\t\t});\n\t\t\t }\n\t\t\t});\n\t\t\n\t\t\tif (firstElementToFocus) {\n\t\t\t const firstElementToFocusHTMLElement: HTMLElement = containerHTMLElement.querySelector(firstElementToFocus);\n\t\t\t firstElementToFocusHTMLElement.focus();\n\t\t\t} else {\n\t\t\t (firstFocusableEl as HTMLElement).focus();\n\t\t\t}\n\t\t }\n \n\t/** Trap the tab focus inside the Fancybox 4 modal dialog */\n\tstatic trapFocusFancybox4({\n\t container,\n\t closeElement,\n\t additionalCloseElements,\n\t tablistUpdateElements,\n\t triggerHTMLElement,\n\t imageAltText\n\t}: {\n\t container: string,\n\t closeElement: string,\n\t additionalCloseElements?: string[],\n\t tablistUpdateElements?: string[],\n\t triggerHTMLElement?: HTMLElement,\n\t imageAltText?: string\n\t}): void {\n \n\t const containerHTMLElement: HTMLElement = document.querySelector(container);\n\t const closeHTMLElement: HTMLElement = document.querySelector(closeElement);\n \n\t let focusableElementsNL: NodeListOf\n\t let focusableElements: Element[]\n\t let firstFocusableEl: Element\n\t let lastFocusableEl: Element\n \n\t const setFocusables = (trigger?: string) => {\n \n\t\tfocusableElements && unbindEventsToFocusableElements();\n\t\tfocusableElements = [];\n\t\tfocusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements);\n\t\tconst currentSlide = containerHTMLElement.querySelector('.fancybox__slide.is-selected');\n\t\tlet currentSlideIndex = Number(currentSlide.getAttribute('data-index'));\n \n\t\tif (trigger === \"Next\") {\n\t\t currentSlideIndex += 1\n\t\t} else if (trigger === \"Previous\") {\n\t\t currentSlideIndex -= 1\n\t\t}\n \n\t\tfocusableElements = Array.from(focusableElementsNL).filter((el: Element, _index: number) => {\n\t\t if ((el as HTMLElement).title !== 'Close') return true\n\t\t if ((el as HTMLElement).title === 'Close') {\n\t\t\tconst closeButtonIndex = Number((el.parentNode.parentNode as HTMLElement).getAttribute('data-index'))\n\t\t\tif (closeButtonIndex === currentSlideIndex) return true\n\t\t }\n\t\t})\n \n\t\tif (imageAltText) {\n\t\t $(`[data-index=\"${currentSlideIndex}\"] .fancybox__image`).attr('alt', imageAltText);\n\t\t}\n \n\t\tfirstFocusableEl = focusableElements[0];\n\t\tlastFocusableEl = focusableElements[focusableElements.length - 1];\n \n\t\tbindEventsToFocusableElements();\n\t }\n \n\t const KEYCODE_TAB = 9;\n \n\t additionalCloseElements?.forEach(element => {\n\t\tconst altCloseHTMLElement: HTMLElement = document.querySelector(element)\n\t\taltCloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t if (altCloseHTMLElement !== e.target) return;\n\t\t if (e.key === 'Enter') {\n\t\t\tHAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t }\n\t\t});\n\t\taltCloseHTMLElement.addEventListener('click', (e) => {\n\t\t if (altCloseHTMLElement !== e.target) return;\n\t\t HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t});\n\t });\n \n\t const eventHandler = (e: KeyboardEvent) => {\n\t\tlet isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n\t\tlet isEscapePressed = e.key === 'Escape'\n \n\t\tif (!isTabPressed && !isEscapePressed) {\n\t\t return;\n\t\t}\n \n\t\tif (isTabPressed) {\n\t\t const elementIndex = focusableElements.indexOf(document.activeElement);\n\t\t if (e.shiftKey) /* shift + tab */ {\n\t\t\tif (elementIndex === 0) {\n\t\t\t (lastFocusableEl as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t} else if (elementIndex > 0) {\n\t\t\t (focusableElements[elementIndex - 1] as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t} else {\n\t\t\t (lastFocusableEl as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t}\n\t\t } else /* tab */ {\n\t\t\tif (elementIndex === focusableElements.length - 1) {\n\t\t\t (firstFocusableEl as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t} else if (elementIndex >= 0) {\n\t\t\t (focusableElements[elementIndex + 1] as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t} else {\n\t\t\t (firstFocusableEl as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t}\n\t\t }\n\t\t}\n \n\t\tif (isEscapePressed) {\n\t\t HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t}\n\t }\n \n\t const bindEventsToFocusableElements = () => {\n\t\tfocusableElements.forEach((element) => {\n\t\t element.addEventListener('keydown', eventHandler)\n\t\t});\n\t }\n \n\t const unbindEventsToFocusableElements = () => {\n\t\tfocusableElements.forEach((element) => {\n\t\t element.removeEventListener('keydown', eventHandler)\n\t\t});\n\t }\n \n\t setFocusables();\n \n\t tablistUpdateElements?.forEach((element) => {\n\t\tconst updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\tif (updaterElement) {\n\t\t updaterElement.addEventListener('keypress', (e) => {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t setFocusables(updaterElement.title);\n\t\t\t}\n\t\t })\n\t\t updaterElement.addEventListener('click', (e) => {\n\t\t\tsetFocusables(updaterElement.title);\n\t\t });\n\t\t}\n\t });\n \n \n\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 closeHTMLElement?.focus()\n\t closeHTMLElement?.click()\n\t triggerHTMLElement?.focus();\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 const logActiveElement = this.LOG_ACTIVE_ELEMENT\n \n\t window.addEventListener('load', function () {\n \n\t\twindow.mainNavList = document.querySelectorAll(HAHAccessibility.selectors.mainNavList);\n\t\tif (window.mainNavList) {\n\t\t for (let i = 0; i < window.mainNavList.length; i++) {\n\t\t\tnew NavigationBar(window.mainNavList[i]);\n\t\t }\n\t\t}\n \n\t\twindow.navList = document.querySelectorAll(HAHAccessibility.selectors.navList);\n\t\tif (window.navList) {\n\t\t for (let i = 0; i < window.navList.length; i++) {\n\t\t\tnew NavigationBar(window.navList[i]);\n\t\t }\n\t\t}\n \n\t\twindow.tablists = document.querySelectorAll(HAHAccessibility.selectors.tabLists);\n\t\tif (window.tablists) {\n\t\t for (let i = 0; i < window.tablists.length; i++) {\n\t\t\tnew TabsManual(window.tablists[i]);\n\t\t }\n\t\t}\n \n\t\tswitch (HAHAccessibility.FANCYBOX_VERSION) {\n\t\t case 2: HAHAccessibility.initADAForFancybox2(); break;\n\t\t case 4: HAHAccessibility.initADAForFancybox4(); break;\n\t\t}\n \n\t\tif (logActiveElement) {\n\t\t document.addEventListener('keyup', () => console.log(document.activeElement))\n\t\t}\n \n\t\tconsole.log('Accessibility tools for ADA AAA compliance successfully initialized.')\n\t });\n\t}\n \n\tprivate static initADAForFancybox2() {\n \n\t $(\"[id^='fancyboxLBImage']\").on('click', function () {\n\t\twindow.triggerElement = this;\n\t })\n \n\t $('#addOnFancyboxLBImage').on('click', function () {\n\t\twindow.triggerElement = this;\n\t });\n \n\t ($('.fancybox') as any).fancybox({\n\t\tafterShow: function () {\n\t\t if (window.triggerElement.getAttribute(\"id\") !== 'addOnFancyboxLBImage') {\n\t\t\tconst altDialogText = $(window.triggerElement).children()[0].getAttribute(\"alt\")\n\t\t\t$('.fancybox-overlay .fancybox-wrap').attr(\"aria-label\", `${altDialogText} image`)\n\t\t }\n\t\t $('.fancybox-overlay .fancybox-wrap').attr(\"aria-modal\", \"true\")\n\t\t HAHAccessibility.trapFocus({\n\t\t\tcontainer: '.fancybox-overlay',\n\t\t\tcloseElement: '.fancybox-close',\n\t\t\tadditionalCloseElements: [],\n\t\t\ttablistUpdateElements: [\n\t\t\t '.fancybox-prev',\n\t\t\t '.fancybox-next'\n\t\t\t],\n\t\t\ttriggerHTMLElement: window.triggerElement,\n\t\t\tunbindEvents: true\n\t\t });\n\t\t},\n\t\tafterClose: function () {\n\t\t window.triggerElement.focus();\n\t\t}\n\t })\n \n\t // Fancybox inline sub details\n\t $('.sub-details').on('click', function () {\n\t\twindow.triggerElement = this;\n\t });\n \n\t ($('.sub-details') as any).fancybox({\n\t\tafterShow: function () {\n\t\t $('.fancybox-overlay').removeAttr(\"aria-label\").attr(\"aria-modal\",\"true\").attr(\"role\",\"dialog\").attr(\"aria-describedby\",\"inline-sub-box ADA-sub-disclosure\");\n\t\t $('.fancybox-overlay .fancybox-wrap').removeAttr(\"tabindex\");\n\t\t HAHAccessibility.trapFocus({\n\t\t\tcontainer: '.fancybox-overlay',\n\t\t\tcloseElement: '.fancybox-close',\n\t\t\tadditionalCloseElements: [],\n\t\t\ttablistUpdateElements: [],\n\t\t\ttriggerHTMLElement: window.triggerElement\n\t\t });\n\t\t},\n\t\tafterClose: function () {\n\t\t window.triggerElement.focus();\n\t\t}\n\t })\n\n\t \n\t$(\".BMSM-Chart\").on('click', function() {\n\t\twindow.triggerElement = this;\n\t})\n\n\t$(\".BMSM-Chart\").fancybox({\n\t\tafterShow: function() {\n\t\t\t$('.fancybox-overlay .fancybox-wrap').removeAttr(\"aria-label\").attr(\"aria-modal\",\"true\");\n\t\t\tHAHAccessibility.trapFocus({\n\t\t\t\tcontainer: '.fancybox-overlay',\n\t\t\t\tcloseElement: '.fancybox-close',\n\t\t\t\tfirstElementToFocus: '#bmsm-title'\n\t\t\t });\n\t\t},\n\t\tafterClose: function() {\n\t\t\twindow.triggerElement.focus();\n\t\t}\n\t})\n\t}\n \n\tprivate static initADAForFancybox4() {\n \n\t $('[data-fancybox=\"product-image-gallery\"]').on('click', function () {\n\t\twindow.triggerElement = this;\n\t })\n \n\t $('[data-fancybox=\"product-addon\"]').on('click', function () {\n\t\twindow.triggerElement = this;\n\t })\n \n\t $('[data-fancybox-type=\"inline\"]').on('click', function () {\n\t\twindow.triggerElement = this;\n\t })\n \n\t Fancybox.bind('[data-fancybox=\"product-image-gallery\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tconst altDialogText = $(window.triggerElement).children()[0].getAttribute(\"alt\")\n\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\tfancybox.$container.setAttribute('aria-label', `${altDialogText} image`)\n\t\t\t$('.is-selected').attr('aria-label', 'Current image')\n\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t container: `#${fancyboxId}`,\n\t\t\t closeElement: \".is-selected .carousel__button.is-close\",\n\t\t\t additionalCloseElements: [\".fancybox__slide\"],\n\t\t\t tablistUpdateElements: [\".carousel__button.is-next\", \".carousel__button.is-prev\"],\n\t\t\t triggerHTMLElement: window.triggerElement,\n\t\t\t imageAltText: altDialogText\n\t\t\t});\n\t\t }\n\t\t},\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t\tdragToClose: false,\n\t\tinfinite: false,\n\t })\n \n\t Fancybox.bind('[data-fancybox=\"product-addon\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tconst altDialogText = $(window.triggerElement).text().toLowerCase().replace(\"add\", \"\").trim()\n\t\t\tconst newAltDialogText = `${altDialogText} image`\n\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\tfancybox.$container.setAttribute('aria-label', newAltDialogText)\n\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t container: `#${fancyboxId}`,\n\t\t\t closeElement: \".is-selected .carousel__button.is-close\",\n\t\t\t additionalCloseElements: [\".fancybox__slide\"],\n\t\t\t tablistUpdateElements: [],\n\t\t\t triggerHTMLElement: window.triggerElement,\n\t\t\t imageAltText: altDialogText\n\t\t\t});\n\t\t }\n\t\t},\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t\tdragToClose: false,\n\t\tinfinite: false,\n\t });\n \n\t Fancybox.bind('[data-fancybox-type=\"inline\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tfancybox.$container.removeAttribute('aria-label')\n\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t container: `#${fancyboxId}`,\n\t\t\t closeElement: \".is-selected .carousel__button.is-close\",\n\t\t\t additionalCloseElements: [\".fancybox__slide\"],\n\t\t\t tablistUpdateElements: [],\n\t\t\t triggerHTMLElement: window.triggerElement\n\t\t\t});\n\t\t }\n\t\t},\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t\tdragToClose: false,\n\t\tinfinite: false,\n\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 */\n class 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 this.navlistNode = groupNode;\n\t this.menuItems = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.menuItems));\n\t this.linkMenuItems = [];\n\t this.subMenuItems = [];\n\t this.currentLocation = window.location.href\n \n\t for (let i = 0; i < this.menuItems.length; i++) {\n\t\tthis.linkMenuItems.push(this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.linkMenuItems))\n\t\tif (this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)) {\n\t\t this.subMenuItems.push(\n\t\t\tArray.from(\n\t\t\t this.menuItems[i]\n\t\t\t\t.querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)\n\t\t\t\t.querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem)\n\t\t\t)\n\t\t )\n\t\t} else {\n\t\t this.subMenuItems.push([])\n\t\t}\n\t }\n \n\t this.firstMenuItem = this.linkMenuItems[0];\n\t this.lastMenuItem = this.linkMenuItems[this.linkMenuItems.length - 1];\n \n\t for (let j = 0; j < this.linkMenuItems.length; j++) {\n\t\tthis.linkMenuItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, null))\n\t }\n \n\t for (let j = 0; j < this.linkMenuItems.length; j++) {\n\t\tfor (let k = 0; k < this.subMenuItems[j].length; k++) {\n\t\t this.subMenuItems[j][k].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, k))\n\t\t}\n\t }\n \n\t this.allNavLink = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem))\n \n\t for (let l = 0; l < this.allNavLink.length; l++) {\n\t\tif (this.allNavLink[l].href === this.currentLocation) {\n\t\t this.allNavLink[l].setAttribute('aria-current', 'page');\n\t\t}\n\t }\n\t}\n \n\tmoveFocusToLink(currentLink: Element) {\n\t (currentLink as HTMLElement)?.focus();\n\t}\n \n\tmoveFocusToPreviousLink(indexMenu: any, _indexSubMenu: any) {\n\t if (indexMenu === 0) {\n\t\tthis.moveFocusToLink(this.lastMenuItem)\n\t } else {\n\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu - 1])\n\t }\n\t}\n \n\tmoveFocusToNextLink(indexMenu: any, _indexSubMenu: any) {\n\t if (indexMenu === this.linkMenuItems.length - 1) {\n\t\tthis.moveFocusToLink(this.firstMenuItem)\n\t } else {\n\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu + 1])\n\t }\n\t}\n \n\tmoveFocusToPreviousSublink(indexMenu: any, indexSubMenu: any) {\n\t const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t if (indexSubMenu === null) {\n\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n\t } else {\n\t\tif (indexSubMenu === 0) {\n\t\t this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n\t\t} else {\n\t\t this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu - 1]);\n\t\t}\n\t }\n\t}\n \n\tmoveFocusToNextSublink(indexMenu: any, indexSubMenu: any) {\n\t const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t if (indexSubMenu === null) {\n\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n\t } else {\n\t\tif (indexSubMenu === subMenuLenght) {\n\t\t this.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n\t\t} else {\n\t\t this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu + 1]);\n\t\t}\n\t }\n\t}\n \n\tmoveFocusToFirstlink(indexMenu: any, indexSubMenu: any) {\n\t if (indexSubMenu === null) {\n\t\tthis.moveFocusToLink(this.firstMenuItem);\n\t } else {\n\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n\t }\n\t}\n \n\tmoveFocusToLastlink(indexMenu: any, indexSubMenu: any) {\n\t const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n\t if (indexSubMenu === null) {\n\t\tthis.moveFocusToLink(this.lastMenuItem);\n\t } else {\n\t\tthis.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n\t }\n\t}\n \n\tmoveFocusTofatherlink(indexMenu: any, indexSubMenu: any) {\n\t if (indexSubMenu !== null) {\n\t\tthis.moveFocusToLink(this.linkMenuItems[indexMenu]);\n\t }\n\t}\n \n\tisPrintableCharacter(str: string) {\n\t return str.length === 1 && str.match(/\\S/);\n\t}\n \n\tsetFocusByFirstCharacter(character: any, indexMenu: any, indexSubMenu: any) {\n \n\t let linksArrToSearch: any\n\t let startIndex: any\n \n\t if (indexSubMenu === null) {\n\t\tlinksArrToSearch = this.linkMenuItems;\n\t\tstartIndex = indexMenu\n\t } else {\n\t\tlinksArrToSearch = this.subMenuItems[indexMenu];\n\t\tstartIndex = indexSubMenu\n\t }\n \n\t for (let i = 0; i < linksArrToSearch.length - 1; i++) {\n\t\tif (startIndex === linksArrToSearch.length - 1) {\n\t\t startIndex = 0;\n\t\t} else {\n\t\t startIndex += 1;\n\t\t}\n\t\tif (linksArrToSearch[startIndex].name.toLowerCase().startsWith(character.toLowerCase())) {\n\t\t this.moveFocusToLink(linksArrToSearch[startIndex]);\n\t\t break;\n\t\t}\n\t }\n\t}\n \n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent, indexMenu: number, indexSubMenu: number) {\n \n\t let flag = false;\n \n\t switch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t this.moveFocusToPreviousLink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'ArrowRight':\n\t\t this.moveFocusToNextLink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'ArrowUp':\n\t\t this.moveFocusToPreviousSublink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n \n\t\tcase 'ArrowDown':\n\t\t this.moveFocusToNextSublink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'Home':\n\t\t this.moveFocusToFirstlink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'End':\n\t\t this.moveFocusToLastlink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n \n\t\tcase \"Escape\":\n\t\t this.moveFocusTofatherlink(indexMenu, indexSubMenu);\n\t\t flag = true;\n\t\t break;\n\t\tdefault:\n\t\t if (this.isPrintableCharacter(event.key)) {\n\t\t\tthis.setFocusByFirstCharacter(event.key, indexMenu, indexSubMenu);\n\t\t\tflag = true;\n\t\t }\n\t\t break;\n\t }\n \n\t if (flag) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\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 */\n class TabsManual {\n \n\ttablistNode: any\n\ttabs: Element[]\n\tfirstTab: Element\n\tlastTab: Element\n \n\tconstructor(groupNode: Element) {\n\t this.tablistNode = groupNode;\n\t this.tabs = [];\n\t this.firstTab = null;\n\t this.lastTab = null;\n\t this.tabs = Array.from(this.tablistNode.querySelectorAll(HAHAccessibility.selectors.tabsManual.tabs));\n\t for (let i = 0; i < this.tabs.length; i += 1) {\n\t\tlet tab = this.tabs[i];\n \n\t\ttab.addEventListener('keydown', this.onKeydown.bind(this));\n\t\tif (!this.firstTab) {\n\t\t this.firstTab = tab;\n\t\t}\n\t\tthis.lastTab = tab;\n\t }\n\t}\n \n\tmoveFocusToTab(currentTab: Element) {\n\t (currentTab as HTMLElement).focus();\n\t}\n \n\tmoveFocusToPreviousTab(currentTab: Element) {\n\t let index: number;\n\t if (currentTab === this.firstTab) {\n\t\tthis.moveFocusToTab(this.lastTab);\n\t } else {\n\t\tindex = this.tabs.indexOf(currentTab);\n\t\tthis.moveFocusToTab(this.tabs[index - 1]);\n\t }\n\t}\n \n\tmoveFocusToNextTab(currentTab: Element) {\n\t let index: number;\n\t if (currentTab === this.lastTab) {\n\t\tthis.moveFocusToTab(this.firstTab);\n\t } else {\n\t\tindex = this.tabs.indexOf(currentTab);\n\t\tthis.moveFocusToTab(this.tabs[index + 1]);\n\t }\n\t}\n \n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent) {\n\t const tgt: HTMLElement = event.currentTarget as HTMLElement\n\t let flag = false\n\t switch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t this.moveFocusToPreviousTab(tgt as HTMLElement);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'ArrowRight':\n\t\t this.moveFocusToNextTab(tgt as HTMLElement);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'Home':\n\t\t this.moveFocusToTab(this.firstTab);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'End':\n\t\t this.moveFocusToTab(this.lastTab);\n\t\t flag = true;\n\t\t break;\n\t\tdefault:\n\t\t break;\n\t }\n\t if (flag) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\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 */\n class RadioGroup {\n \n\tradioOptNode: Element\n\tradioItems: Element[]\n\tfirstRadioItem: Element\n\tlastRadioItem: Element\n \n\tconstructor(groupNode: NodeListOf) {\n\t this.radioOptNode = groupNode[0];\n\t this.radioItems = Array.from(this.radioOptNode.querySelectorAll(HAHAccessibility.selectors.radioGroup.radioItems));\n\t this.firstRadioItem = this.radioItems[0];\n\t this.lastRadioItem = this.radioItems[this.radioItems.length - 1];\n\t for (let j = 0; j < this.radioItems.length; j++) {\n\t\tthis.radioItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j))\n\t }\n\t}\n \n\tmoveFocusToRadio(currentRadio: Element) {\n\t (currentRadio as HTMLElement).focus();\n\t (currentRadio as HTMLElement).click();\n\t}\n \n\tmoveFocusToPreviousRadio(indexRadio: number) {\n\t if (indexRadio === 0) {\n\t\tthis.moveFocusToRadio(this.lastRadioItem)\n\t } else {\n\t\tthis.moveFocusToRadio(this.radioItems[indexRadio - 1])\n\t }\n\t}\n \n\tmoveFocusToNextRadio(indexRadio: number) {\n\t if (indexRadio === this.radioItems.length - 1) {\n\t\tthis.moveFocusToRadio(this.firstRadioItem)\n\t } else {\n\t\tthis.moveFocusToRadio(this.radioItems[indexRadio + 1])\n\t }\n\t}\n \n\t/* EVENT HANDLERS */\n\tonKeydown(event: KeyboardEvent, indexMenu: number) {\n \n\t let flag = false;\n \n\t switch (event.key) {\n\t\tcase 'ArrowLeft':\n\t\t this.moveFocusToPreviousRadio(indexMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'ArrowRight':\n\t\t this.moveFocusToNextRadio(indexMenu);\n\t\t flag = true;\n\t\t break;\n\t\tcase 'ArrowUp':\n\t\t this.moveFocusToPreviousRadio(indexMenu);\n\t\t flag = true;\n\t\t break;\n \n\t\tcase 'ArrowDown':\n\t\t this.moveFocusToNextRadio(indexMenu);\n\t\t flag = true;\n\t\t break;\n\t\tdefault:\n\t\t break;\n\t }\n \n\t if (flag) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t }\n\t}\n }\n ","class ESignUp {\n amzSDK: any;\n lambdaPayload: any;\n dialogObj: DialogObj;\n lbHideParams: Array;\n cookieValue: string;\n elementIDs: ElementIDs;\n lambdaClient: any;\n addedToSalesforceTime: any;\n updatedOnSalesforceTime: any;\n\n constructor({\n amzSDK,\n lambdaPayload,\n dialogObj,\n lbHideParams,\n cookieValue,\n elementIDs,\n }: ESignUpOptions) {\n\n if (!amzSDK) \n throw new Error('\"amzSDK\" config value is required.');\n\n if (!lambdaPayload)\n throw new Error('\"lambdaPayload\" config value is required.');\n\n if (!dialogObj) \n throw new Error('\"dialogObj\" config value is required.');\n\n const defaultLambdaPayload = {\n region: \"US\",\n timeZone: \"-5\",\n language: \"EN\",\n method: \"API\",\n };\n\n const defaultElementIds = {\n lightBoxInput: \"#emailAddress1\",\n lightBoxBtn: \"#emailAddress1btn\",\n footerInput: \"#emailAddress2\",\n footerBtn: \"#emailAddress2btn\",\n homePageInput: \"#emailAddress3\",\n homePageBtn: \"#emailAddress3btn\",\n lightBoxBackground: \"#emailSignupPopover\",\n lightBoxCloseBtn: \"#ligtboxClosebtn\",\n sweepsBtn: \"#sweepsBtn\",\n sweepsEmail: \"#sweepsEmail\",\n sweepsName: \"#sweepsName\",\n sweepsCheck: \"#sweepsCheck\",\n sweepsBonvoyCheck: \"#sweepsBonvoyCheck\",\n landingPageSweepsBtn: \"#landingPageSweepsBtn\",\n landingPageSweepsEmail: \"#landingPageSweepsEmail\",\n landingPageSweepsName: \"#landingPageSweepsName\",\n landingPageSweepsBonvoyCheck: \"#landingPageSweepsBonvoyCheck\",\n landingPageSweepsCheck: \"#landingPageSweepsCheck\",\n checkoutPageEmailInput: '#emailAddress',\n checkoutPageSubscribeCheck: '#emailSubscribe'\n };\n\n const defaultDialogObj = {\n btnTxt: \"OK\",\n };\n\n this.amzSDK = amzSDK;\n\n this.lambdaPayload = {\n ...defaultLambdaPayload,\n ...lambdaPayload,\n };\n\n this.dialogObj = {\n ...defaultDialogObj,\n ...dialogObj,\n };\n\n this.lbHideParams = lbHideParams || [\"utm_source=hah\"];\n\n this.cookieValue = cookieValue || \"emailSignup\";\n\n this.elementIDs = {\n ...defaultElementIds,\n ...elementIDs,\n };\n \n this.addedToSalesforceTime = {}\n this.updatedOnSalesforceTime = {}\n\n this.lambdaClient = this.initLambdaClient();\n }\n\n /**\n * Initializes the AWS SDK and returns the client to interact with AWS.\n */\n initLambdaClient() {\n AWS.config.region = this.amzSDK.region;\n AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n IdentityPoolId: this.amzSDK.poolId,\n });\n AWS.config.apiVersions = {\n lambda: \"2015-03-31\",\n };\n AWS.config.update({\n maxRetries: 0,\n httpOptions: {\n timeout: 5000,\n connectTimeout: 5000,\n },\n });\n return new AWS.Lambda();\n }\n\n getTimeZone() {\n let currDate = new Date();\n return Math.floor((currDate.getTimezoneOffset() / 60) * -1).toString();\n }\n\n hideLandingPageSweepsForm() {\n $(\"#sweepstakesFormWrap\").fadeOut(\"slow\", function () {\n $(\"#sweepstakesConfirmation\").fadeIn(\"slow\");\n });\n }\n\n /**\n * Calls AWS Lambda to subscribe/unsubscribe a client email.\n */\n callLambda({\n email,\n source,\n action,\n showLightboxMessage = false,\n name = \"\",\n campaign = undefined,\n callback = undefined\n }: LambdaOptions) {\n\n // Hides the lightbox\n this.showLightbox(false);\n\n // Show the \"thank you for subscribing\" lightbox \n if (showLightboxMessage) {\n dilogBox(this.dialogObj);\n window.scrollTo(0, 0);\n }\n\n const payload = {\n emailId: email,\n source: source,\n timeZone: this.getTimeZone(),\n name: name,\n campaign: campaign,\n };\n\n const lambdaPayload = {\n action: action,\n data: {\n ...this.lambdaPayload,\n ...payload,\n },\n };\n\n const params = {\n FunctionName: this.amzSDK.functionName,\n Payload: JSON.stringify(lambdaPayload),\n };\n\n this.lambdaClient.invoke(params, function (err: any, data: any) {\n if (callback) callback(err, data);\n });\n }\n\n checkQueryVariables() {\n let vars = window.location.search.substring(1).toLowerCase().split(\"&\");\n let paramsPresent = false;\n for (let i = 0; i < this.lbHideParams.length; i++) {\n if (vars.indexOf(this.lbHideParams[i]) > -1) {\n paramsPresent = true;\n }\n }\n return paramsPresent;\n }\n\n checkDisplayLightbox() {\n let emailCookie = CommonUtils.getCookie(this.cookieValue);\n if (emailCookie === null) {\n let paramsPresent = false;\n paramsPresent = this.checkQueryVariables();\n if (paramsPresent) {\n this.showLightbox(false);\n } else {\n this.showLightbox(true);\n }\n }\n }\n\n showLightbox(show = false) {\n let emailSignupPopoverDiv = document.getElementById(\"emailSignupPopover\");\n if (show) {\n if (emailSignupPopoverDiv) {\n emailSignupPopoverDiv.style.display = \"\";\n HAHAccessibility.trapFocus({\n container: '.emailFocusTrap',\n closeElement: '#emailSignupPopover',\n firstElementToFocus: '.esignup_ADA_firstElement'\n });\n }\n } else {\n if (emailSignupPopoverDiv) {\n emailSignupPopoverDiv.style.display = \"none\";\n }\n CommonUtils.setCookie(this.cookieValue, \"emailClosed\", 180);\n }\n }\n\n validateSweeps(name, emailID, checked, recaptchaPassed) {\n let alertMessage = \"\";\n let nameRegex = /^[a-z ,.'-]+$/i;\n\n if (!nameRegex.test(name)) alertMessage += \"Please enter a valid name. \\n\";\n if (!CommonUtils.validateEmail(emailID))\n alertMessage += \"Please enter a valid email address.\\n\";\n if (!checked) alertMessage += \"Please check the sweeps rules checkbox.\\n\";\n /*if (!recaptchaPassed) {\n alertMessage += \"Please complete re-captcha.\";\n }*/\n if (alertMessage !== \"\") {\n alert(alertMessage);\n return false;\n }\n return true;\n }\n\n async toggleEmailStatusInSalesforce(\n email: string, \n emailStatus: 'Active' | 'Unsubscribed' | 'EmailID does not exist.', \n agreeToReceiveEmails: boolean\n ) {\n\n if (email) {\n\n // saves the email in the session storage so it can track the cart again in the payment page\n sessionStorage.setItem('emailAddress', email)\n\n SalesforceAbandonedCartUtils.setClientEmail(email)\n SalesforceAbandonedCartUtils.trackCart();\n\n // if email is not in Salesforce\n if (emailStatus.includes('does not exist')) {\n\n // add to Salesforce and set as \"Active\"\n const isActive: boolean = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'add',\n callback: (err: any, data: any) => {\n\n if (err) {\n console.log(err)\n }\n\n if (data) {\n\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n \n if (data.StatusCode == 200) { \n resolve(true)\n } else {\n resolve(false)\n }\n }\n }\n })\n });\n\n // save the date it was added to Salesforce\n this.addedToSalesforceTime[email] = new Date()\n\n // if agree to receive emails (checkbox checked)\n if (agreeToReceiveEmails) {\n\n // if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n if (isActive) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'checkout',\n event_value: 1,\n });\n }\n } \n \n // if doesn't agree to receive emails (checkbox unchecked)\n else {\n\n // update status in Salesforce to \"Unsubscribed\"\n const isUnsubscribed: boolean = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'remove',\n callback: (err: any, data: any) => {\n\n if (err) {\n console.log(err)\n }\n\n if (data) {\n\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n \n if (data.StatusCode == 200) {\n \n let isUnsubscribed: boolean = false\n try {\n if (data.Payload) {\n isUnsubscribed = JSON.parse(data.Payload).values.status.toLowerCase() === 'unsubscribed';\n }\n } catch {\n if (data.Payload) {\n isUnsubscribed = data.Payload.toLowerCase().includes('unsubscribed') \n }\n }\n \n resolve(isUnsubscribed)\n }\n }\n }\n })\n })\n\n // if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n if (isUnsubscribed) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Unsubscribe',\n event_label: 'checkout',\n event_value: 1,\n });\n }\n }\n }\n\n // if email is already in Salesforce\n else {\n\n // if does not agree to receive emails (is \"Unsubscribed\" in Salesforce)\n if (emailStatus.includes('Unsubscribed')) {\n\n // if agree to receive emails (checkbox checked)\n if (agreeToReceiveEmails) {\n\n // save the date it was updated in salesforce\n if (!this.updatedOnSalesforceTime[email]) {\n this.updatedOnSalesforceTime[email] = new Date()\n }\n\n // updates status in Salesforce to \"Active\" \n const isActive = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'add',\n callback: (err: any, data: any) => {\n\n if (err) {\n console.log(err)\n }\n \n if (data) {\n\n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n\n if (data.StatusCode == 200) {\n\n let isActive: boolean\n try {\n isActive = JSON.parse(data.Payload).values.status.toLowerCase() === 'active';\n } catch {\n isActive = data.Payload.toLowerCase().includes('active')\n }\n\n resolve(isActive)\n }\n }\n }\n })\n })\n\n // if successfully set as \"Active\", send \"Subscribe\" event to Google Analytics\n if (isActive) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Subscribe',\n event_label: 'checkout',\n event_value: 1,\n });\n }\n }\n }\n\n // if agrees to receive emails (is \"Active\" in Salesforce)\n else {\n\n // if doesn't agree to receive emails (checkbox unchecked)\n if (!agreeToReceiveEmails) {\n\n const dateInserted: Date = this.addedToSalesforceTime[email]\n const dateUpdated: Date = this.updatedOnSalesforceTime[email]\n\n // if was just inserted or updated in Salesforce\n if (dateInserted || dateUpdated) {\n \n const now = new Date();\n const diffInMilliseconds = Math.abs(now.getTime() - (dateInserted ?? dateUpdated).getTime());\n const diffInMinutes = diffInMilliseconds / (1000 * 60)\n\n // if was added or updated less than 5 minutes ago\n if (diffInMinutes < 5) {\n\n // update status in Salesforce to \"Unsubscribed\"\n const isUnsubscribed: boolean = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'remove',\n callback: (err: any, data: any) => {\n \n if (err) {\n console.log(err)\n }\n \n if (data) {\n \n // uncomment if troubleshooting and comment again before commit\n // console.log({...data, Payload: JSON.parse(data.Payload)})\n \n if (data.StatusCode == 200) {\n \n let isUnsubscribed: boolean = false\n try {\n if (data.Payload) {\n isUnsubscribed = JSON.parse(data.Payload).values.status.toLowerCase() === 'unsubscribed';\n }\n } catch {\n if (data.Payload) {\n isUnsubscribed = data.Payload.toLowerCase().includes('unsubscribed') \n }\n }\n \n resolve(isUnsubscribed)\n }\n }\n }\n })\n })\n \n // if successfully set as \"Unsubscribed\", send \"Unsubscribe\" event to Google Analytics\n if (isUnsubscribed) {\n dataLayer.push({\n event: 'eNews Subscription',\n event_category: 'eNews Subscription',\n event_action: 'Unsubscribe',\n event_label: 'checkout',\n event_value: 1,\n });\n }\n }\n }\n }\n }\n }\n }\n }\n\n bindElementHandlers() {\n\n const footerBtn = $(this.elementIDs.footerBtn);\n const lightBoxBtn = $(this.elementIDs.lightBoxBtn);\n const homePageBtn = $(this.elementIDs.homePageBtn);\n const lightBoxCloseBtn = $(this.elementIDs.lightBoxCloseBtn);\n const lightBoxBackground = $(this.elementIDs.lightBoxBackground);\n const sweepsBtn = $(this.elementIDs.sweepsBtn);\n const landingPageSweepsBtn = $(this.elementIDs.landingPageSweepsBtn);\n const checkoutPageEmailInput = $(this.elementIDs.checkoutPageEmailInput);\n const checkoutPageSubscribeCheckbox = $(this.elementIDs.checkoutPageSubscribeCheck);\n\n if (lightBoxCloseBtn.length) {\n lightBoxCloseBtn.on(\"click\", () => {\n this.showLightbox(false);\n });\n }\n\n if (lightBoxBackground.length) {\n $(document).on(\"click\", (e) => {\n if ($(e.target).is(lightBoxBackground)) {\n this.showLightbox(false);\n }\n });\n }\n\n if (lightBoxBtn.length) {\n lightBoxBtn.on(\"click\", () => {\n let emailValue = ($(this.elementIDs.lightBoxInput).val()).trim();\n if (!CommonUtils.validateEmail(emailValue)) {\n alert(\"Please enter a valid email address.\");\n } else {\n this.callLambda({\n email: emailValue, \n source: \"lightbox\", \n showLightboxMessage: true,\n action: 'add'\n });\n CommonUtils.setCookie(\"HAHemailID\", emailValue, 180);\n dataLayer.push({\n event: \"eNews Subscription\",\n event_category: \"eNews Subscription\",\n event_action: \"Subscribe\",\n event_label: \"lightbox\",\n event_value: 1,\n });\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n }\n });\n }\n\n if (homePageBtn.length) {\n homePageBtn.on(\"click\", () => {\n let emailValue = ($(this.elementIDs.homePageInput).val()).trim();\n if (!CommonUtils.validateEmail(emailValue)) {\n alert(\"Please enter a valid email address.\");\n } else {\n this.callLambda({\n email: emailValue, \n source: \"home\", \n showLightboxMessage: false,\n action: 'add'\n });\n CommonUtils.setCookie(\"HAHemailID\", emailValue, 180);\n $(\"#ftr-email-signup\").fadeOut(\"slow\", function () {\n $(\"#ftr-email-conf\").fadeIn(\"slow\");\n });\n dataLayer.push({\n event: \"eNews Subscription\",\n event_category: \"eNews Subscription\",\n event_action: \"Subscribe\",\n event_label: \"home\",\n event_value: 1,\n });\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n }\n });\n }\n\n if (sweepsBtn.length) {\n sweepsBtn.on(\"click\", () => {\n let sweepsEmail = ($(this.elementIDs.sweepsEmail).val()).trim();\n let sweepsName = ($(this.elementIDs.sweepsName).val()).trim();\n let sweepsChecked = $(this.elementIDs.sweepsCheck).is(\":checked\");\n if (this.validateSweeps(sweepsName, sweepsEmail, sweepsChecked, 1)) {\n this.callLambda({\n email: sweepsEmail,\n source: \"lightbox\",\n showLightboxMessage: true,\n action: \"sweepsadd\",\n name: sweepsName,\n campaign: \"202403\"\n });\n CommonUtils.setCookie(\"HAHemailID\", sweepsEmail, 180);\n dataLayer.push({\n event: \"eNews Subscription\",\n event_category: \"eNews Subscription\",\n event_action: \"Subscribe\",\n event_label: \"sweeps\",\n event_value: 1,\n });\n SalesforceAbandonedCartUtils.setClientEmail(sweepsEmail)\n }\n });\n }\n\n if (landingPageSweepsBtn.length) {\n landingPageSweepsBtn.on(\"click\", () => {\n let landingPageSweepsEmail = ($(this.elementIDs.landingPageSweepsEmail)\n .val())\n .trim();\n let landingPageSweepsName = ($(this.elementIDs.landingPageSweepsName)\n .val())\n .trim();\n let landingPageSweepsChecked = $(\n this.elementIDs.landingPageSweepsCheck\n ).is(\":checked\");\n let v = ''; //grecaptcha.getResponse();\n if (\n this.validateSweeps(\n landingPageSweepsName,\n landingPageSweepsEmail,\n landingPageSweepsChecked,\n v.length\n )\n ) {\n this.callLambda({\n email: landingPageSweepsEmail,\n source: \"sweeps\",\n showLightboxMessage: true,\n action: \"sweepsadd\",\n name: landingPageSweepsName,\n campaign: \"202403\",\n callback: this.hideLandingPageSweepsForm,\n });\n CommonUtils.setCookie(\"HAHemailID\", landingPageSweepsEmail, 180);\n dataLayer.push({\n event: \"eNews Subscription\",\n event_category: \"eNews Subscription\",\n event_action: \"Subscribe\",\n event_label: \"sweeps landing page\",\n event_value: 1,\n });\n SalesforceAbandonedCartUtils.setClientEmail(landingPageSweepsEmail)\n }\n });\n }\n\n if (footerBtn.length) {\n footerBtn.on(\"click\", () => {\n let emailValue = ($(this.elementIDs.footerInput).val()).trim();\n if (!CommonUtils.validateEmail(emailValue)) {\n alert(\"Please enter a valid email address.\");\n } else {\n this.callLambda({\n email: emailValue, \n source: \"footer\", \n showLightboxMessage: false,\n action: 'add'\n });\n CommonUtils.setCookie(\"HAHemailID\", emailValue, 180);\n $(\"#ftr-email-signup2\").fadeOut(\"slow\", function () {\n $(\"#ftr-email-conf2\").fadeIn(\"slow\");\n });\n dataLayer.push({\n event: \"eNews Subscription\",\n event_category: \"eNews Subscription\",\n event_action: \"Subscribe\",\n event_label: \"footer\",\n event_value: 1,\n });\n SalesforceAbandonedCartUtils.setClientEmail(emailValue)\n SalesforceAbandonedCartUtils.trackCart()\n }\n });\n }\n\n if (checkoutPageEmailInput.length&&checkoutPageSubscribeCheckbox.length) {\n checkoutPageEmailInput.on('change', async (event) => {\n\n const email = (event.target as HTMLInputElement).value ||\n sessionStorage.getItem('emailAddress') ||\n CommonUtils.getCookie('HAHemailID')\n\n const result: any = await new Promise((resolve, _reject) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'status',\n callback: (_err: any, data: any) => resolve(JSON.parse(data.Payload))\n })\n })\n\n const emailStatus = result\n const agreeToReceiveEmails = (document.querySelector(this.elementIDs.checkoutPageSubscribeCheck) as HTMLInputElement).checked\n\n this.toggleEmailStatusInSalesforce(email, emailStatus, agreeToReceiveEmails)\n })\n }\n\n if (checkoutPageSubscribeCheckbox.length) {\n checkoutPageSubscribeCheckbox.on('change', async (event) => {\n\n const email = (document.querySelector(this.elementIDs.checkoutPageEmailInput) as HTMLInputElement).value ||\n sessionStorage.getItem('emailAddress') ||\n CommonUtils.getCookie('HAHemailID')\n\n const result: any = await new Promise((resolve) => {\n this.callLambda({\n email: email,\n source: 'checkout',\n showLightboxMessage: false,\n action: 'status',\n callback: (_err: any, data: any) => resolve(JSON.parse(data.Payload))\n })\n })\n\n const emailStatus = result\n const agreeToReceiveEmails = (event.target as HTMLInputElement).checked\n\n this.toggleEmailStatusInSalesforce(email, emailStatus, agreeToReceiveEmails)\n })\n }\n }\n}\n\ninterface ESignUpOptions {\n\n /**\n * Values to be used in the initialization of the AWS SDK.\n */\n amzSDK: {\n region: string\n poolId: string\n functionName: string\n },\n\n /**\n * A piece of the payload that is sent to AWS Lambda to communicate with Salesforce.\n */\n lambdaPayload: {\n website: string,\n campaign: string,\n refURL: string,\n currURL: string\n },\n\n /**\n * Options for the lightbox that is shown in some situations.\n */\n dialogObj: {\n mainTxt: string,\n secondaryTxt: string,\n btnTxt: string\n },\n\n /**\n * Query parameters to be considered.\n */\n lbHideParams: Array,\n\n /**\n * The name of the cookie to be used to store the client email status.\n */\n cookieValue: string,\n\n /**\n * HTML elements that are used in the process of subscribing a client email.\n */\n elementIDs: ElementIDs\n}\n\ninterface LambdaOptions {\n\n /**\n * The email of the client.\n */\n email: string\n\n /**\n * The page/component where the client sets the email.\n */\n source: string\n \n /**\n * The action to be done in the lambda function.\n */\n action: 'status' | 'add' | 'sweepsadd' | 'remove'\n\n /**\n * If true, the \"thank you for subscribing\" lightbox will be shown.\n */\n showLightboxMessage?: boolean\n\n /**\n * A name that identifies the promotion.\n * Normally it's the sweeps promotion name and it's defined by an HTML element content.\n */\n name?: string\n\n /**\n * Identifies the campaign if the subscription belongs to one.\n * It's normally used with sweeps promotions.\n */\n campaign?: string\n\n /**\n * A callback function to be called after the Lambda function request is done.\n */\n callback?: (err: any, data: any) => any\n}\n\ninterface ElementIDs {\n lightBoxInput: string;\n lightBoxBtn: string;\n footerInput: string;\n footerBtn: string;\n homePageInput: string;\n homePageBtn: string;\n lightBoxBackground: string;\n lightBoxCloseBtn: string;\n sweepsBtn: string;\n sweepsEmail: string;\n sweepsName: string;\n sweepsCheck: string;\n sweepsBonvoyCheck: string;\n landingPageSweepsBtn: string;\n landingPageSweepsEmail: string;\n landingPageSweepsName: string;\n landingPageSweepsBonvoyCheck: string;\n landingPageSweepsCheck: string;\n checkoutPageEmailInput: string;\n checkoutPageSubscribeCheck: string;\n}","jQuery(function () {\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//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: \"#ligtboxClosebtn2\",\n\t\tfirstElementToFocus: \"#title-container\"\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$(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// On \"DOMContentLoaded\" (before the \"load\" event), calls \"HAHAccessibility.init()\" \n$(() => HAHAccessibility.init())\n","class SalesforceAbandonedCartUtils {\n static clientEmail = '';\n static catalogId = '';\n static subscriberKey = '';\n static cartOrOrderData = [];\n /**\n * Defines if should log messages in the console.\n */\n static debug = false\n /**\n * Should be called as soon as possible.\n */\n static setOrganizationId(salesforceOrganizationId: string) {\n _etmc.push([\"setOrgId\", salesforceOrganizationId]);\n if (this.debug) {\n console.log(`Successfully set the organization id: ${salesforceOrganizationId}`)\n }\n }\n /**\n * Should be called as soon as possible.\n */\n static setCatalogId(catalogId: string) {\n this.catalogId = catalogId\n if (this.debug) {\n if (this.catalogId) {\n console.log(`Successfully set the catalog id: ${this.catalogId}`)\n } else {\n console.log(`Couldn't set catalog id because it is not valid.`)\n }\n }\n }\n /**\n * Should be called after the client enters his email in:\n * - The email subscription lightbox\n * - The email subscription in the footer\n * - The email subscription in the checkout page\n */\n static setClientEmail(email: string) {\n this.clientEmail = email?.trim()\n if (this.clientEmail) {\n if (_etmc) {\n _etmc.user_info = undefined\n }\n console.log(`Successfully set the client email: ${this.clientEmail}`)\n SalesforceAbandonedCartUtils.setSubscriberKey()\n } else if (this.debug) {\n console.log(`Couldn't set client email because it is not valid.`)\n }\n \n }\n /**\n * Should be called after `setCatalogId` and `setClientEmail`.\n */\n private static setSubscriberKey() {\n \n if (this.clientEmail && this.catalogId) {\n this.subscriberKey = `${this.catalogId.toLowerCase()}_${this.clientEmail}`;\n if (this.debug) {\n console.log(`Successfully set subscriber key: ${this.subscriberKey}`)\n }\n } else if (this.debug) {\n console.log(\"Couldn't set subscriber key because client email or catalog id is not valid.\")\n }\n }\n /**\n * Should be called for each new product added to the cart (after clicking \"Add to cart\").\n */\n static addCartOrOrderData({item, quantity, price, salePrice: salePrice, uniqueId: uniqueId}: {\n item: any\n quantity: any\n price: any\n salePrice?: any\n uniqueId: any\n }) {\n const product = { \n item: item, \n quantity: quantity, \n price: price, \n sale_price: salePrice ?? undefined, \n unique_id: uniqueId \n }\n this.cartOrOrderData.push(product);\n \n if (this.debug) {\n console.log(`Sucessfully added to the cart:\\n`, product)\n }\n }\n /**\n * Sends the cart data to Salesforce.\n */\n static trackCart() {\n if (this.subscriberKey) {\n _etmc.push([\"setUserInfo\", { email: this.subscriberKey }]);\n if (this.cartOrOrderData.length > 0 && this.cartOrOrderData.length < 11) {\n _etmc.push([\"trackCart\", { cart: this.cartOrOrderData }]);\n } else {\n _etmc.push([\"trackCart\", { clear_cart: true }]);\n }\n \n if (this.debug) {\n console.log(`Successfully tracked the cart for ${this.subscriberKey} with:\\n`, this.cartOrOrderData )\n }\n } else {\n if (this.debug) {\n console.log(`Couldn't track cart because subscriber key is not valid: ${this.subscriberKey}.`)\n }\n }\n }\n /**\n * Should be called if the order is completed by the client.\n */\n static trackConversion() {\n if (this.subscriberKey) {\n _etmc.push([\"setUserInfo\", { email: this.subscriberKey }]);\n _etmc.push([\"trackPageView\"]);\n _etmc.push([\"trackConversion\", { cart: this.cartOrOrderData }]);\n _etmc.push([\"trackCart\", { \"clear_cart\": true }]);\n \n if (this.debug) {\n console.log(`Successfully tracked the conversion for ${this.subscriberKey} with:\\n`, this.cartOrOrderData )\n }\n } else {\n if (this.debug) {\n console.log(`Couldn't track conversion because subscriber key is not valid: ${this.subscriberKey}.`)\n }\n }\n }\n}","/******** search.js ********/\n\nfunction doSearch(): void {\n var searchString = \"\";\n try {\n searchString = (document.getElementById('OCForm1')).searchUI_tbProductName\n .value;\n } catch (e) { }\n try {\n searchString = searchString.replace(\"(\", \"\").replace(\")\", \"\");\n } catch (e) { }\n if (searchString !== \"\" && searchString !== \"I'm looking for...\") {\n window.location.href =\n \"search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|\" +\n encodeURIComponent(searchString) +\n \"&customSearchParamsSearchString=\" +\n encodeURIComponent(searchString) +\n \"&from=QUICKSEARCH\";\n } else {\n alert(\"Enter a search term\");\n }\n}\n\nfunction doQuickSearch(searchPath: string): void {\n var searchString = \"\";\n try {\n searchString = (document.getElementById('OCForm1')).tSearchString.value;\n } catch (e) { }\n try {\n searchString = searchString\n .replace(\"(\", \"\")\n .replace(\")\", \"\")\n .replace(\"'\", \"\");\n } catch (e) { }\n if (searchString !== \"\") {\n window.location.href =\n searchPath +\n \"search.aspx?&posting=TRUE&actionType=CUSTOMSEARCH&customSearchParams=KEYWORDS|\" +\n encodeURIComponent(searchString) +\n \"&customSearchParamsSearchString=\" +\n encodeURIComponent(searchString) +\n \"&from=QUICKSEARCH\";\n } else {\n alert(\"Please enter a keyword\");\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 hideLoader(): void {\n\t\tlet ATCButton = document.querySelector('#addToCartBtn') \n\t\tthis.removeLoaderToButton(ATCButton)\n\t\tlet SubButton = document.querySelector('#subscribeBtn')\n\t\tthis.removeLoaderToButton(SubButton)\n\t\tlet ATBButton = document.querySelector('#addToBagBtn')\n\t\tthis.removeLoaderToButton(ATBButton)\n\t\tlet ATBSubButton = document.querySelector('#addToBagBtnSub')\n\t\tthis.removeLoaderToButton(ATBSubButton)\n\t\tlet productATCButton = document.querySelector('#productSubAddToCartBtn')\n\t\tthis.removeLoaderToButton(productATCButton)\n\t\tlet productATCBSubutton = document.querySelector('#productSubSubscribeBtn')\n\t\tthis.removeLoaderToButton(productATCBSubutton)\n\t}\n\n\t/**\n\t * @description Toggles the loader visibility.\n\t */\n\tstatic showLoader(): void {\n\t\tlet ATCButton = document.querySelector('#addToCartBtn') \n\t\tthis.addLoaderToButton(ATCButton)\n\t\tlet SubButton = document.querySelector('#subscribeBtn')\n\t\tthis.addLoaderToButton(SubButton)\n\t\tlet ATBButton = document.querySelector('#addToBagBtn')\n\t\tthis.addLoaderToButton(ATBButton)\n\t\tlet ATBSubButton = document.querySelector('#addToBagBtnSub')\n\t\tthis.addLoaderToButton(ATBSubButton)\n\t\tlet productATCButton = document.querySelector('#productSubAddToCartBtn')\n\t\tthis.addLoaderToButton(productATCButton)\n\t\tlet productATCBSubutton = document.querySelector('#productSubSubscribeBtn')\n\t\tthis.addLoaderToButton(productATCBSubutton)\n\t}\n\n\tstatic addLoaderToButton(button: HTMLButtonElement): void {\n\t\tif(button) {\n\t\t\tbutton.classList.add('disabled','loader-light','loader-center')\n\t\t\tbutton.innerText = ''\n\t\t\tbutton.disabled = true\n\t\t}\n\t}\n\n\tstatic removeLoaderToButton(button: HTMLButtonElement): void {\n\t\tif(button) {\n\t\t\tbutton.classList.remove('disabled','loader-light','loader-center')\n\t\t\tbutton.innerText = 'Add to Bag'\n\t\t\tbutton.disabled = false\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': 'RTZ',\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/**\n\t * @description Parses a string of XML data and returns its 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\t\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/** 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 */\n\nfunction createCookie(name: string, value: string, days?: number): void {\n\tCommonUtils.createCookie(name, value, days)\n}\n\nfunction eraseCookie(name: string): void {\n\tCommonUtils.createCookie(name, '', -1)\n}\n\nfunction readCookie(name: string): string {\n\treturn CommonUtils.readCookie(name)\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\tconst inputControl = document.getElementById(elementId)?.parentElement as HTMLElement | null\n\tconst errorDisplay = inputControl?.querySelector('.error') as HTMLElement | null\n\tlet iconElement = inputControl?.querySelector('.icon') as HTMLElement | null\n\n\tif (!inputControl || !errorDisplay) return\n\n\tif (!iconElement) {\n\t\ticonElement = document.createElement('div')\n\t\ticonElement.className = 'icon'\n\t\tinputControl.appendChild(iconElement)\n\t}\n\tif(elementId == 'addressUI_ddlBillAddrState' || elementId == 'addressUI_ddlShipAddrState') {\n\t\tconst selectElement = document.getElementById(elementId) as HTMLSelectElement\n\t\tconst selectedValue = selectElement.value\n\t\tif (selectedValue === '' || selectedValue === '--') {\n\t\t\tisValid = false\n\t\t}\n\t\ticonElement.style.marginRight = isValid ? '0%' : '3%'\n\t}\n\terrorDisplay.textContent = isValid ? '' : message\n\tinputControl.classList.toggle('error', !isValid)\n\ticonElement.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\t'email': /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n\t'name': /^[a-zA-Z]+(-[a-zA-Z]+)?(?: [a-zA-Z]+(-[a-zA-Z]+)?)*$/,\n\t'address': /^(?=.*\\d)[a-zA-Z0-9\\s.,#\\-ºâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙáéíóúÁÉÍÓÚüÜçÇñÑ]*$/,\n\t'city': /^[a-zA-Z\\sâêîôûÂÊÎÔÛàèìòùÀÈÌÒÙáéíóúÁÉÍÓÚüÜçÇñÑ]*$/,\n\t'phone': /^\\+?[0-9]{5,15}$/,\n\t'cvv':/^\\d{3}$/,\n\t'amxCardId':/^\\d{4}$/\n}\n\n// Function to validate form field\nfunction validateField(inputElement: HTMLInputElement) {\n\tconst elementId = inputElement.id\n\tconst value = inputElement.value.trim()\n\tlet isValid = true\n\tlet errorMessage = ''\n\n\tif (formElements.hasOwnProperty(elementId)) {\n\t\tconst elementType = formElements[elementId].type\n\t\tconst customFieldValidation = formElements[elementId].fieldValidation\n\n\t\tif(customFieldValidation) {\n\t\t\tisValid = customFieldValidation(value)\n\t\t} else {\n\t\t\tif (patterns.hasOwnProperty(elementType)) {\n\t\t\t\tisValid = patterns[elementType].test(value)\n\t\t\t}\n\t\t}\n\n\t\terrorMessage = formElements[elementId].errMessage\n\t}\n\tif (isValid && !value) {\n\t\tisValid = false\n\t}\n\n\tsetError(elementId, errorMessage, isValid)\n}\n\n// Function to attach event listeners to form elements\nfunction attachEventListeners(elementIds: string[]) {\n\telementIds.forEach(elementId => {\n\t\tconst inputElement = document.getElementById(elementId) as HTMLInputElement | null\n\t\tif (inputElement) {\n\t\t\tinputElement.addEventListener('blur', () => {\n\t\t\t\tvalidateField(inputElement)\n\t\t\t})\n\t\t}\n\t})\n}\n\nfunction validateZipCode(zipCode: string, countryCode: string) {\n\tif (countryCode === 'US') {\n\t\treturn CommonUtils.isValidUsZipCode(zipCode)\n\t} else if (countryCode === 'CA') {\n\t\treturn CommonUtils.isValidCaZipCode(zipCode)\n\t}\n\treturn true\n}\n\n// Define form elements\nconst formElements = {\n\temailAddress: { type: 'email', errMessage: 'You must enter a valid email address.' },\n\taddressUI_tbBillAddressName: { type: 'name', errMessage: 'You must enter a valid Billing Name.' },\n\taddressUI_tbBillAddressFirstName: { type: 'name', errMessage: 'You must enter a valid Billing First Name.' },\n\taddressUI_tbBillAddressLastName: { type: 'name', errMessage: 'You must enter a valid Billing Last Name.' },\n\taddressUI_tbBillAddr1: { type: 'address', errMessage: 'Include your street number to proceed.' },\n\taddressUI_tbBillAddr2: { type: 'text' },\n\taddressUI_tbBillAddrCity: { type: 'city', errMessage: 'You must enter a valid Billing City.' },\n\taddressUI_tbShipAddressName: { type: 'name', errMessage: 'You must enter a valid Shipping Name.' },\n\taddressUI_tbShipAddressFirstName: { type: 'name', errMessage: 'You must enter a valid Shipping First Name.' },\n\taddressUI_tbShipAddressLastName: { type: 'name', errMessage: 'You must enter a valid Shipping Last Name.' },\n\taddressUI_tbShipAddr1: { type: 'address', errMessage: 'Include your street number to proceed.' },\n\taddressUI_tbShipAddr2: { type: 'text' },\n\taddressUI_tbShipAddrCity: { type: 'city', errMessage: 'You must enter a valid Shipping City.' },\n\taddressUI_tbBillAddrZip: { \n\t\ttype: 'zip', \n\t\terrMessage: 'You must enter a valid Billing Postal Code.' ,\n\t\tfieldValidation: () => {\n\t\t\tconst shippingCountryCode = (document.getElementById('addressUI_ddlShipAddrCountry')).value\n\t\t\tconst zipCode = (document.getElementById('addressUI_tbShipAddrZip')).value\n\t\t\treturn validateZipCode(zipCode, shippingCountryCode)\n\t\t} \n\t},\n\taddressUI_tbShipAddrZip: { \n\t\ttype: 'zip', \n\t\terrMessage: 'You must enter a valid Shipping Postal Code.', \n\t\tfieldValidation: () => {\n\t\t\tconst shippingCountryCode = (document.getElementById('addressUI_ddlShipAddrCountry')).value\n\t\t\tconst zipCode = (document.getElementById('addressUI_tbShipAddrZip')).value\n\t\t\treturn validateZipCode(zipCode, shippingCountryCode)\n\t\t} \n\t},\n\taddressUI_tbBillAddrPhone: { type: 'phone', errMessage: 'You must enter a valid Billing Phone Number.' },\n\taddressUI_tbShipAddrPhone: { type: 'phone', errMessage: 'You must enter a valid Shipping Phone Number.' },\n\taddressUI_ddlBillAddrCountry: { type: 'selectbox', errMessage: '' },\n\taddressUI_ddlBillAddrState: { type: 'selectbox', errMessage: 'You must enter a valid Billing State/Province.', hiddenInputIDs: ['addressUI_hBillAddrState', 'hBillState'] },\n\taddressUI_ddlShipAddrCountry: { type: 'selectbox', errMessage: '' },\n\taddressUI_ddlShipAddrState: { type: 'selectbox', errMessage: 'You must enter a valid Shipping State/Province.', hiddenInputIDs: ['addressUI_hShipAddrState', 'hShipState'] },\n\taddressUI_cSameAsShipping: { type: 'checkbox', errMessage: '' },\n\tFirstName: { type: 'name', errMessage: 'You must enter a valid First Name.' },\n\tLastName: { type: 'name', errMessage: 'You must enter a valid Last Name.' },\n\tPhone: { type: 'phone', errMessage: 'You must enter a valid Phone Number.' },\n\tpaymentTypeUI_tbCreditCardName: { type: 'name', errMessage: 'You must a valid Name on card.' },\n\tpaymentTypeUI_tbCreditCardCode: { \n\t\ttype: 'cvv', \n\t\terrMessage: 'You must enter a valid CVV.', \n\t\tfieldValidation: validateCardCodeFunction(1) \n\t},\n\tpaymentTypeUI_tbCreditCardCode2: { \n\t\ttype: 'cvv', \n\t\terrMessage: 'You must enter a valid CVV.', \n\t\tfieldValidation: validateCardCodeFunction(2) \n\t}\n}\n\n// Attach event listeners after DOM content is loaded\ndocument.addEventListener('DOMContentLoaded', () => {\n\t// Assuming you have an array of element IDs to attach the event listener to\n\tconst elementIds: string[] = [\n\t\t'addressUI_tbBillAddressFirstName', \n\t\t'addressUI_tbBillAddressLastName', \n\t\t'addressUI_tbBillAddressName', \n\t\t'addressUI_tbBillAddressName', \n\t\t'addressUI_tbBillAddrPhone', \n\t\t'addressUI_tbBillAddr1', \n\t\t'addressUI_tbBillAddrCity', \n\t\t'addressUI_ddlBillAddrState', \n\t\t'addressUI_tbBillAddrState', \n\t\t'addressUI_tbBillAddrZip', \n\t\t'addressUI_tbShipAddressFirstName', \n\t\t'addressUI_tbShipAddressLastName', \n\t\t'addressUI_tbShipAddressName', \n\t\t'addressUI_tbShipAddrPhone', \n\t\t'addressUI_tbShipAddr1', \n\t\t'addressUI_ddlShipAddrCountry', \n\t\t'addressUI_tbShipAddrCity', \n\t\t'addressUI_ddlShipAddrState', \n\t\t'addressUI_tbShipAddrState', \n\t\t'addressUI_tbShipAddrZip', \n\t\t'emailAddress',\n\t\t'FirstName',\n\t\t'LastName',\n\t\t'Phone',\n\t\t'paymentTypeUI_tbCreditCardName',\n\t\t'paymentTypeUI_tbCreditCardCode',\n\t\t'paymentTypeUI_tbCreditCardCode2',\t\t\t\n\t]\n\n\t// Attach the event listener to each element\n\tattachEventListeners(elementIds)\n})\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tconst increaseBtns: NodeListOf = document.querySelectorAll('.increase-btn')\n\tconst 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\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"]}