{"version":3,"sources":["accessibility.ts","esignup.ts","late.ts","salesforce.ts","search.ts","utils.ts"],"names":["HAHAccessibility","_classCallCheck","this","_createClass","key","value","document","getElementById","style","visibility","display","trapFocus","container","closeElement","e","alert","_ref","setFocusables","focusableElementsNL","containerHTMLElement","querySelectorAll","selectors","focusableElements","Array","from","filter","el","tabIndex","firstFocusableEl","lastFocusableEl","length","additionalCloseElements","tablistUpdateElements","triggerHTMLElement","firstElementToFocus","querySelector","closeHTMLElement","forEach","element","altCloseHTMLElement","addEventListener","closeTrapFocus","DEBUG_TRAP_FOCUS","console","log","isTabPressed","keyCode","isEscapePressed","shiftKey","activeElement","focus","preventDefault","updaterElement","_ref2","trigger","unbindEventsToFocusableElements","currentSlide","currentSlideIndex","Number","getAttribute","_index","title","parentNode","imageAltText","$","concat","attr","bindEventsToFocusableElements","eventHandler","removeEventListener","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","afterClose","removeAttr","Fancybox","bind","once","done","fancyboxId","$container","setAttribute","trapFocusFancybox4","afterLoad","instance","current","$image","opts","$orig","find","Thumbs","Toolbar","dragToClose","infinite","text","toLowerCase","replace","trim","newAltDialogText","removeAttribute","fancyboxContainer","_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","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","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","_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","landingPageSweepsBonvoyChecked","v","grecaptcha","getResponse","hideLandingPageSweepsForm","_ref3","_callee2","_context2","getItem","_reject","_err","toggleEmailStatusInSalesforce","_x4","_ref4","_callee3","_context3","_x5","template","outerWrap","pointsUnavailable","closeBtn","innerMain","innerSecondary","confirmBtn","appendTo","html","mainTxt","secondaryTxt","css","trimmedEmailVal","closeButton","jQuery","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","toUSD","num","Intl","NumberFormat","currency","format","invalue","isValidCaZipCode","isValidUsZipCode","createCookie","days","date","expires","setTime","toUTCString","cookie","eraseCookie","readCookie","nameEQ","ca","c","formatCurrency","sign","cents","formatPoints","points","getXMLDataSetTableCount","dsName","xmlString","fieldEndIndex","returnValue","datasetStartIndex","datasetEndIndex","fieldStartIndex","parseInt","getXMLDataTableRowCount","dtIndex","getXMLDataFieldValue","rowIndex","fieldName","getXMLTagValue","tagName","tagValue","tagStartIndex","tagEndIndex","removeBadNumbers","inNumber","tmpNumber","tmpStr","c_name","exdays","exdate","c_value","setDate","getDate","c_start","c_end","decodeURIComponent","showHideLoader","productIndex","loader","atc","showElement","sel","nodeName","hideElement","getAjaxObject","XMLHttpRequest","trymicrosoft","ActiveXObject","othermicrosoft","failed","message","trackError","eventCategory","eventAction","eventLabel","eventParams","detail","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","swapPurchaseType","addClass","removeClass","slideDown","siblings","slideUp","pathname","parseXMLData","string","DOMParser","parseFromString","documentElement","textContent","getInvtIDCategory","invtID","alternateID","found","invtIDCategory","category","categoryID","localStorage"],"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 = 4\n \n\tstatic selectors = {\n\t mainNavList: '#main-nav',\n\t navList: '#side-nav',\n\t tabLists: '[role=tablist]',\n\t focusableElements: 'input[type=\"text\"]:not([disabled]), ' // inputs of type \"text\" that are not disabled\n\t\t+ 'input[type=\"radio\"]:not([disabled]), ' // inputs of type \"radio\" that are not disabled\n\t\t+ 'input[type=\"checkbox\"]:not([disabled]), ' // inputs of type \"checkbox\" that are not disabled\n\t\t+ 'input[type=\"email\"]:not([disabled]), ' // inputs of type \"email\" that are not disabled\n\t\t+ 'input[type=\"button\"]:not([disabled]), ' // inputs of type \"button\" that are not disabled\n\t\t+ 'textarea:not([disabled]), ' // textareas that are not disabled\n\t\t+ 'select:not([disabled]), ' // selects that are not disabled\n\t\t+ 'a[href]:not([disabled]), ' // links that has \"href\" attribute and are not disabled \n\t\t+ '[data-focusable=\"true\"],' // buttons that\n\t\t+ 'button:not([disabled])', // buttons that are not disabled\n\t navigationBar: {\n\t\tmenuItems: '.dropdown',\n\t\tlinkMenuItems: '.dropdownLink',\n\t\tsubMenuItems: `.submenuContainer`,\n\t\tsubMenuItem: '[role=\"menuitem\"]'\n\t },\n\t tabsManual: {\n\t\ttabs: '[role=tab]'\n\t },\n\t radioGroup: {\n\t\tradioItems: '[role=radio]'\n\t }\n\t}\n \n\t /** Trap focus terms and conditions LB */\n static showMattressTermPopover(): void {\n try\t{\n document.getElementById('mattressTermPopover').style.visibility='visible';\n document.getElementById('mattressTermPopover').style.display='';\n HAHAccessibility.trapFocus({\n container: '#mattressTermPopover',\n closeElement: '#closeMattressTermPopover'\n })\n }\n catch(e){\n alert('error');\n }\n }\n \n \n\t/** Trap the tab navigation focus */\n\tstatic trapFocus({\n\t container,\n\t closeElement,\n\t additionalCloseElements,\n\t tablistUpdateElements,\n\t triggerHTMLElement,\n\t firstElementToFocus\n\t}: {\n \n\t /**\n\t * The modal / container where the focus should be trapped.\n\t */\n\t container: string,\n \n\t /**\n\t * The element that `closeTrapFocus` function will `click` to close the modal.\n\t */\n\t closeElement: string,\n \n\t /**\n\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t * will call the `closeTrapFocus` function.\n\t */\n\t additionalCloseElements?: string[],\n \n\t /**\n\t * Elements inside the container that, when `clicked` or pressed `Enter`,\n\t * will restore the focusable elements inside the container.\n\t */\n\t tablistUpdateElements?: string[],\n \n\t /**\n\t * The element that opened the modal / the element where to focus should go\n\t * after closing the modal.\n\t */\n\t triggerHTMLElement?: HTMLElement,\n \n\t /**\n\t * The element that should be focused after opening the modal.\n\t * If not defined it will be automatically defined.\n\t */\n\t firstElementToFocus?: 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 = () => {\n\t\tfocusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements);\n\t\tfocusableElements = Array.from(focusableElementsNL).filter((el: Element) => (el as HTMLElement).tabIndex !== -1)\n\t\tfirstFocusableEl = focusableElements[0]\n\t\tlastFocusableEl = focusableElements[focusableElements.length - 1];\n\t }\n \n\t additionalCloseElements?.forEach((element: string) => {\n\t\tconst altCloseHTMLElement: HTMLElement = containerHTMLElement.querySelector(element)\n\t\taltCloseHTMLElement.addEventListener('keypress', (e) => {\n\t\t if (e.key === 'Enter') {\n\t\t\tHAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t }\n\t\t})\n\t\taltCloseHTMLElement.addEventListener('click', (e) => {\n\t\t HAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n\t\t})\n\t })\n \n\t setFocusables();\n\t if (HAHAccessibility.DEBUG_TRAP_FOCUS) {\n\t\tconsole.log(\"focusableElements\", focusableElements)\n\t\tconsole.log(\"firstFocusableEl\", firstFocusableEl)\n\t\tconsole.log(\"lastFocusableEl\", lastFocusableEl)\n\t }\n \n\t const KEYCODE_TAB = 9;\n \n\t containerHTMLElement.addEventListener('keydown', function (e: KeyboardEvent) {\n \n\t\tconst isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n\t\tconst isEscapePressed = e.key === 'Escape'\n \n\t\tif (!isTabPressed && !isEscapePressed) {\n\t\t return;\n\t\t}\n \n\t\t// If pressed tab\n\t\tif (isTabPressed) {\n \n\t\t // If pressed shift + tab\n\t\t if (e.shiftKey) {\n \n\t\t\t// If the active element is the first focusable element,\n\t\t\t// focus in the last focusable element.\n\t\t\tif (document.activeElement === firstFocusableEl) {\n\t\t\t (lastFocusableEl as HTMLElement).focus();\n\t\t\t e.preventDefault();\n\t\t\t}\n\t\t }\n \n\t\t // If pressed only tab\n\t\t else {\n \n\t\t\t// If the active element is the last focusable element,\n\t\t\t// focus in the first focusable element.\n\t\t\tif (document.activeElement === lastFocusableEl) {\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\t// If pressed escape\n\t\tif (isEscapePressed) {\n\t\t HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n\t\t}\n\t });\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();\n\t\t\t}\n\t\t })\n\t\t updaterElement.addEventListener('click', (e) => {\n\t\t\tsetFocusables();\n\t\t });\n\t\t}\n\t });\n\t if (firstElementToFocus) {\n\t\tconst firstElementToFocusHTMLElement: HTMLElement = document.querySelector(firstElementToFocus);\n\t\tfirstElementToFocusHTMLElement.focus();\n\t } else {\n\t\t(firstFocusableEl as HTMLElement).focus();\n\t }\n\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 \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\t\t\n\t\tfirstFocusableEl = focusableElements[0];\n\t\tlastFocusableEl = focusableElements[focusableElements.length - 1];\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 });\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 $(\".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\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 $('[data-fancybox-type=\"subscription-detail\"]').on('click', function () {\n\t\twindow.triggerElement = this;\n\t })\n\n\t $('[data-fancybox=\"contact]').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()[1].getAttribute(\"alt\")\n\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\t\t\tfancybox.$container.setAttribute('aria-label', `${altDialogText}`)\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 afterLoad : function(instance, current) {\n\t\t\tcurrent.$image.attr('alt', current.opts.$orig.find('img').attr('alt') );\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\n\n\t Fancybox.bind('[data-fancybox=\"subscription-detail\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tconst fancyboxContainer = fancybox.$container;\n\t\t\tfancyboxContainer.removeAttribute('aria-label');\n\t\t\tfancyboxContainer.removeAttribute('tabindex');\n\t\t\tfancyboxContainer.setAttribute(\"aria-modal\",\"true\");\n\t\t\tfancyboxContainer.setAttribute(\"role\",\"dialog\");\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-close\",\n\t\t\t additionalCloseElements: [],\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\n\t Fancybox.bind('[data-fancybox=\"BMSM\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tconst fancyboxContainer = fancybox.$container;\n\t\t\tfancyboxContainer.setAttribute(\"tabindex\",\"0\");\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-close\",\n\t\t\t additionalCloseElements: [],\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\n\t Fancybox.bind('[data-fancybox=\"contact\"]', {\n\t\tonce: {\n\t\t done: (fancybox: any) => {\n\t\t\tconst fancyboxContainer = fancybox.$container;\n\t\t\tconst fancyboxId = fancybox.$container.getAttribute('id')\n\n\t\t\tHAHAccessibility.trapFocusFancybox4({\n\t\t\t container: \".lbContactFocusTrap\",\n\t\t\t closeElement: \".is-close\",\n\t\t\t additionalCloseElements: [],\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 }\n\t\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\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 = 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 });\n }\n } else {\n if (emailSignupPopoverDiv) {\n emailSignupPopoverDiv.style.display = \"none\";\n }\n 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 (!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 (!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 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 (!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 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 let sweepsBonvoyChecked = $(this.elementIDs.sweepsBonvoyCheck).is(\n \":checked\"\n );\n let campaign =\n sweepsBonvoyChecked === true ? \"202106member\" : \"202106nonmember\";\n if (this.validateSweeps(sweepsName, sweepsEmail, sweepsChecked, 1)) {\n this.callLambda({\n email: sweepsEmail,\n source: \"lightbox\",\n showLightboxMessage: true,\n action: \"sweepsadd\",\n name: sweepsName,\n campaign: campaign\n });\n 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 landingPageSweepsBonvoyChecked = $(\n this.elementIDs.landingPageSweepsBonvoyCheck\n ).is(\":checked\");\n let v = grecaptcha.getResponse();\n let campaign =\n landingPageSweepsBonvoyChecked === true\n ? \"202106member\"\n : \"202106nonmember\";\n if (\n this.validateSweeps(\n landingPageSweepsName,\n landingPageSweepsEmail,\n landingPageSweepsChecked,\n v.length\n )\n ) {\n this.callLambda({\n email: landingPageSweepsEmail,\n source: \"sweeps\",\n showLightboxMessage: true,\n action: \"sweepsadd\",\n name: landingPageSweepsName,\n campaign: campaign,\n callback: this.hideLandingPageSweepsForm,\n });\n 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 (!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 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 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 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}","$(function () {\n\t// Replace email input values with trimmed values\n\t$(\"input[type='email']\").on('blur', function () {\n\t\tif ($(this).val()) {\n\t\t\tvar trimmedEmailVal = (($(this)).val() as string).trim();\n\t\t\t$(this).val(trimmedEmailVal);\n\t\t}\n\t});\n\tFancybox.bind('[data-fancybox=\"product-image-gallery\"]', {\n\t\tcloseButton: \"inside\",\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t});\n\tFancybox.bind('[data-fancybox=\"product-addon\"]', {\n\t\tcloseButton: \"inside\",\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t});\n\tFancybox.bind('[data-fancybox-type=\"inline\"]', {\n\t\tcloseButton: \"inside\",\n\t\tThumbs: false,\n\t\tToolbar: false,\n\t});\n});\n//Fancybox Lightbox End\n//dilogBox\nfunction dilogBox(dialogObj: DialogObj): void {\n\tvar template = {\n\t\touterWrap: (dialogObj.pointsUnavailable)?'
':'
',\n\t\tcloseBtn: '

Close

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

':'
',\n\t\tinnerSecondary: '

',\n\t\tconfirmBtn: '
'\n\t};\n\tif (!document.getElementById('dialogbox')) {\n\t\t$(template.outerWrap).appendTo('body');\n\t} else {\n\t\tdocument.getElementById('dialogbox').style.display = \"\";\n\t\tdocument.getElementById('dialogbox').style.visibility = \"visible\";\n\t}\n\t$('.confirmation').html(template.closeBtn + template.innerMain + template.innerSecondary + template.confirmBtn);\n\t$('#dialogMain').text(dialogObj.mainTxt);\n\t$('#dialogSecondary').text(dialogObj.secondaryTxt);\n\t$('#dialogBtn').val(dialogObj.btnTxt);\n\tHAHAccessibility.trapFocus({\n\t\tcontainer: \".signupConfirmationFocusTrap\",\n\t\tcloseElement: \"#dialogBtn\",\n\t\tfirstElementToFocus: \"#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$(() => HAHAccessibility.init())","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}\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}","/******** utils.js ********/\n\nfunction toUSD(num: number): string {\n if (isNaN(num)) return '';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(num);\n}\nfunction validateEmail(invalue: string): boolean {\n var regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n var valid = regex.test(invalue);\n return valid;\n}\nfunction isValidCaZipCode(value: string): boolean {\n var re = /^[ABCEGHJKLMNPRSTVXYabceghjklmnprstvxy]{1}\\d{1}[A-Za-z]{1} *\\d{1}[A-Za-z]{1}\\d{1}$/;\n return (re.test(value));\n}\nfunction isValidUsZipCode(value: string): boolean {\n var re = /^\\d{5}([\\-]\\d{4})?$/;\n return re.test(value);\n}\nfunction createCookie(name: string, value: string, days?: number): void {\n var expires = '';\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = `; expires=${date.toUTCString()}`;\n } else expires = '';\n document.cookie = `${name}=${value}${expires}; path=/`;\n}\nfunction eraseCookie(name: string): void {\n createCookie(name, '', -1);\n}\nfunction readCookie(name: string): string {\n var nameEQ = `${name}=`;\n var ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n }\n return '';\n}\nfunction formatCurrency(price: number | string): string {\n price = price.toString().replace(/\\$|\\,/g, '');\n if (isNaN(Number(price))) price = '0';\n var sign = Number(price) == (price = Math.abs(Number(price)));\n price = Math.floor(price * 100 + 0.50000000001);\n var cents: number | string = price % 100;\n price = Math.floor(price / 100).toString();\n if (cents < 10) cents = `0${cents}`;\n for (var i = 0; i < Math.floor((price.length - (1 + i)) / 3); i++)\n price = `${price.substring(0, price.length - (4 * i + 3))},${price.substring(price.length - (4 * i + 3))}`;\n return `${(sign ? '' : '-')}$${price}.${cents}`;\n}\nfunction formatPoints(points: number | string): string {\n points = points.toString().replace(/\\$|\\,/g, '');\n for (var i = 0; i < Math.floor((points.length - (1 + i)) / 3); i++)\n points = `${points.substring(0, points.length - (4 * i + 3))},${points.substring(points.length - (4 * i + 3))}`;\n return points;\n}\nfunction getXMLDataSetTableCount(dsName: string, xmlString: string): number {\n var returnValue = -1;\n var datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`);\n var datasetEndIndex = xmlString.toLowerCase().indexOf(``);\n var fieldStartIndex = -1;\n var fieldEndIndex = -1;\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n fieldStartIndex = xmlString.toLowerCase().indexOf(''.toLowerCase(), datasetStartIndex);\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex = `${fieldStartIndex}`.toLowerCase().length;\n fieldEndIndex = xmlString.toLowerCase().indexOf(''.toLowerCase(), fieldStartIndex);\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = parseInt(\n xmlString.substring(fieldStartIndex, fieldEndIndex)\n );\n }\n }\n }\n return returnValue;\n}\nfunction getXMLDataTableRowCount(dsName: string, dtIndex: number, xmlString: string): number {\n var returnValue = -1;\n var datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`);\n var datasetEndIndex = xmlString.toLowerCase().indexOf(``);\n var fieldStartIndex = -1;\n var fieldEndIndex = -1;\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n //1\n fieldStartIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), datasetStartIndex);\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex = fieldStartIndex + (``).toLowerCase().length;\n fieldEndIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), fieldStartIndex);\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = parseInt(\n xmlString.substring(fieldStartIndex, fieldEndIndex)\n );\n }\n }\n }\n return returnValue;\n}\nfunction getXMLDataFieldValue(dsName: string, dtIndex: number, rowIndex: number, fieldName: string, xmlString: string): string {\n var returnValue = '';\n var datasetStartIndex = xmlString.toLowerCase().indexOf(`<${dsName.toLowerCase()}>`);\n var datasetEndIndex = xmlString.toLowerCase().indexOf(``);\n var fieldStartIndex = -1;\n var fieldEndIndex = -1;\n if (datasetStartIndex > -1 && datasetEndIndex > -1) {\n fieldStartIndex = xmlString\n .toLowerCase().indexOf((``).toLowerCase(), datasetStartIndex);\n if (fieldStartIndex > -1 && fieldStartIndex < datasetEndIndex) {\n fieldStartIndex = fieldStartIndex + (``).toLowerCase().length;\n fieldEndIndex = xmlString.toLowerCase().indexOf((``).toLowerCase(), fieldStartIndex);\n if (fieldEndIndex > -1 && fieldEndIndex < datasetEndIndex) {\n returnValue = xmlString.substring(fieldStartIndex, fieldEndIndex);\n }\n }\n }\n return returnValue;\n}\nfunction getXMLTagValue(tagName: string, xmlString: string): string {\n let tagValue='';\n const tagStartIndex = xmlString.toLowerCase().indexOf(`<${tagName.toLowerCase()}>`);\n const tagEndIndex = xmlString.toLowerCase().indexOf(``);\n if (tagStartIndex > -1 && tagStartIndex < tagEndIndex) {\n tagValue=xmlString.substring(tagStartIndex+tagName.length+2, tagEndIndex);\n }\n return tagValue;\n}\nfunction removeBadNumbers(inNumber: string): string {\n var tmpNumber = '';\n for (var i = 0; i < inNumber.length; i++) {\n var tmpStr = inNumber.substring(i, i + 1);\n if (tmpStr === '-' || tmpStr === ' ' || isNaN(Number(tmpStr))) {\n } else {\n tmpNumber = tmpNumber + inNumber.substring(i, i + 1);\n }\n }\n return tmpNumber;\n}\nfunction setCookie(c_name: string, value: string, exdays?: number): void {\n var exdate = new Date();\n exdate.setDate(exdate.getDate() + exdays);\n var c_value = `${encodeURIComponent(value)} ${(exdays === null ? '' : `; expires=${exdate.toUTCString()}`)};path = /`;\n document.cookie = `${c_name}=${c_value}`;\n}\nfunction getCookie(c_name: string): string|null {\n var c_value = document.cookie;\n var c_start = c_value.indexOf(` ${c_name}=`);\n if (c_start === -1) {\n c_start = c_value.indexOf(`${c_name}=`);\n }\n if (c_start === -1) {\n c_value = null;\n } else {\n c_start = c_value.indexOf('=', c_start) + 1;\n var c_end = c_value.indexOf(';', c_start);\n if (c_end === -1) {\n c_end = c_value.length;\n }\n c_value = decodeURIComponent(c_value.substring(c_start, c_end));\n }\n return c_value;\n}\nfunction showHideLoader(action: string, productIndex: number): void {\n var loader = document.getElementById(`loader${productIndex}`);\n var atc = document.getElementById(`ATC${productIndex}`);\n if (action === 'show') {\n try {\n loader.style.display = '';\n loader.style.visibility = 'visible';\n atc.style.display = 'none';\n atc.style.visibility = 'hidden';\n } catch (e) { }\n } else if (action === 'hide') {\n try {\n loader.style.display = 'none';\n loader.style.visibility = 'hidden';\n atc.style.display = '';\n atc.style.visibility = 'visible';\n } catch (e) { }\n }\n}\nfunction showElement(sel: string, elementIndex: number = 0, display: string = \"block\"): void {\n sel=sel.replace('#','');\n let element: any = document.getElementById(sel);\n if (element) {\n if (element.length === undefined || element.nodeName === 'SELECT') {\n element.style.display = (display === 'block') ? 'block' : '';\n element.style.visibility = 'visible';\n } else {\n element[elementIndex].style.display = (display === 'block') ? 'block' : '';\n element[elementIndex].style.visibility = 'visible';\n }\n }\n}\nfunction hideElement(sel: string, elementIndex: number = 0): void {\n sel=sel.replace('#','');\n let element: any = document.getElementById(sel);\n if (element) {\n if (element.length === undefined || element.nodeName === 'SELECT') {\n element.style.display = 'none';\n element.style.visibility = 'hidden';\n } else {\n element[elementIndex].style.display = 'none';\n element[elementIndex].style.visibility = 'hidden';\n }\n }\n}\nfunction getAjaxObject(): boolean {\n var returnValue: any = false;\n try {\n returnValue = new XMLHttpRequest();\n } catch (trymicrosoft) {\n try {\n returnValue = new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (othermicrosoft) {\n try {\n returnValue = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (failed) {\n alert(failed.message);\n returnValue = false;\n }\n }\n }\n return returnValue;\n}\nfunction trackError(eventCategory:string,eventAction:string,eventLabel:string,eventParams?:any):void {\n dataLayer.push({\n event: 'trackErrorEvent',\n event_category: eventCategory,\n event_action: eventAction,\n event_label: eventLabel,\n event_value: 1\n });\n if (typeof eventParams === 'object'){\n if (eventParams.event==='placePointsOrderError'){\n dataLayer.push({\n event: eventParams.event,\n detail:{\n email: eventParams.email,\n bonvoyEmail: eventParams.bonvoyEmail,\n bonvoyNumber: eventParams.bonvoyNumber,\n pointsToRedeem: eventParams.pointsToRedeem,\n errorMessage: eventParams.errorMessage\n }\n });\n }\n }\n}\n\nfunction swapPurchaseType (event:any):void {\n event.preventDefault();\n const swapSelectorRequired = () => {\n if ($('#addToCartBtn').attr('type') === 'submit') {\n $('#addToCartBtn').attr('type','button');\n $('#subscribeBtn').attr('type','submit');\n } else {\n $('#addToCartBtn').attr('type','submit');\n $('#subscribeBtn').attr('type','button');\n }\n const isProductSub = document.location.pathname.toLowerCase().includes('productsub');\n if (!isProductSub) return;\n if ($(\".addition\")[0]) {\n if ($('.item-subscribe.subs').is(\":visible\")) {\n if (!$('select:eq(1)').attr('required')){\n $('select:eq(1)').attr('required', \"true\");\n }\n $('select:eq(0)').removeAttr('required');\n } else {\n if (!$('select:eq(0)').attr('required')){\n $('select:eq(0)').attr('required', \"true\");\n }\n $('select:eq(1)').removeAttr('required');\n }\n } else {\n if ($('.item-subscribe.subs').is(\":visible\")) {\n if (!$('select:eq(1)').attr('required')){\n $('select:eq(1)').attr('required', \"true\");\n }\n $('select:eq(0)').removeAttr('required');\n } else {\n if (!$('select:eq(0)').attr('required')){\n $('select:eq(0)').attr('required', \"true\");\n }\n $('select:eq(1)').removeAttr('required');\n }\n }\n };\n $(this)\n .addClass('opened').attr(\"tabindex\",\"-1\").trigger(\"focus\")\n .attr(\"aria-expanded\",\"true\").removeClass('closed')\n .next('div:hidden').slideDown('fast').siblings('div:visible')\n .slideUp('fast', () => swapSelectorRequired())\n .prev().removeClass('opened').addClass('closed')\n .attr(\"tabindex\", \"0\").attr(\"aria-expanded\", \"false\");\n}\n\n/**\n * Parses a string of XML data and returns its text content.\n *\n * @param {string} string - The XML string to parse.\n * @returns {string | null} The text content of the XML string, or null if the XML string has no text content.\n */\nfunction parseXMLData(string: string): string | null {\n\tvar parser = new DOMParser()\n\tvar xmlDoc = parser.parseFromString('' + string + '', 'text/xml')\n\tvar decodedContent = xmlDoc.documentElement.textContent\n\treturn decodedContent\n}\n/**\n * get category values from localStorage for a kit/add-on item that does not belong to a catagory in the DB.\n *\n * @param {basket} string - The XML string to parse.\n * @returns {string} The basketIDcategory obj or an empty string.\n */\nfunction getInvtIDCategory(invtID:string,alternateID:string): {invtID:string,alternateID:string,category:string,categoryID:string} {\n let invtIDCategory={invtID:'',alternateID:'',category:'',categoryID:''};\n if (localStorage['invtid_category']!==''&&localStorage['invtid_category']!==undefined){\n const invtIDCategoryArray=JSON.parse(localStorage['invtid_category']);\n const found=invtIDCategoryArray.find((elem:{invtID:string,alternateID:string})=>elem.invtID===invtID&&elem.alternateID===alternateID);\n if (found!==undefined) {invtIDCategory=found;}\n }\n return invtIDCategory;\n}"]}