{"version":3,"sources":["accesibility.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","addCloseHTMLElement","unshift","firstFocusableEl","lastFocusableEl","length","bindEventsToFocusableElements","forEach","element","addEventListener","eventHandler","unbindEventsToFocusableElements","unbindEvents","removeEventListener","outsideContainerCloseButton","additionalCloseElements","tablistUpdateElements","triggerHTMLElement","firstElementToFocus","querySelector","closeHTMLElement","_document$querySelect","KEYCODE_TAB","stopPropagation","isTabPressed","keyCode","isEscapePressed","shiftKey","activeElement","focus","preventDefault","closeTrapFocus","altCloseHTMLElement","DEBUG_TRAP_FOCUS","console","log","updaterElement","_ref2","trigger","currentSlide","currentSlideIndex","Number","getAttribute","_index","title","parentNode","imageAltText","$","concat","attr","target","elementIndex","indexOf","click","logActiveElement","LOG_ACTIVE_ELEMENT","window","mainNavList","i","NavigationBar","navList","tablists","tabLists","TabsManual","initADAForMainMenu","FANCYBOX_VERSION","initADAForFancybox2","initADAForFancybox4","on","triggerElement","fancybox","afterShow","triggerElementId","includes","altDialogText","find","innerText","removeAttr","afterClose","Fancybox","bind","once","done","children","fancyboxId","$container","setAttribute","trapFocusFancybox4","Thumbs","Toolbar","dragToClose","infinite","text","toLowerCase","replace","trim","newAltDialogText","removeAttribute","dropdownsLinks","dropdowns","firstNavChild","liParent","parent","removeClass","addClass","first","lastNavChild","last","_defineProperty","navigationBar","menuItems","linkMenuItems","subMenuItems","subMenuItem","tabsManual","tabs","radioGroup","radioItems","groupNode","_this","navlistNode","currentLocation","location","href","push","firstMenuItem","lastMenuItem","j","_loop","onKeydown","call","_loop2","_j","k","_loop3","allNavLink","l","currentLink","indexMenu","_indexSubMenu","moveFocusToLink","indexSubMenu","subMenuLenght","str","match","character","linksArrToSearch","startIndex","name","startsWith","event","flag","moveFocusToPreviousLink","moveFocusToNextLink","moveFocusToPreviousSublink","moveFocusToNextSublink","moveFocusToFirstlink","moveFocusToLastlink","moveFocusTofatherlink","isPrintableCharacter","setFocusByFirstCharacter","tablistNode","firstTab","lastTab","tab","currentTab","moveFocusToTab","index","tgt","currentTarget","moveFocusToPreviousTab","moveFocusToNextTab","RadioGroup","_this2","radioOptNode","firstRadioItem","lastRadioItem","_loop4","currentRadio","indexRadio","moveFocusToRadio","moveFocusToPreviousRadio","moveFocusToNextRadio","_regeneratorRuntime","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","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","_callee","emailStatus","agreeToReceiveEmails","dateInserted","dateUpdated","diffInMilliseconds","_context","sessionStorage","setItem","SalesforceAbandonedCartUtils","setClientEmail","trackCart","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","jQuery","trimmedEmailVal","openEffect","openSpeed","closeEffect","closeSpeed","nextEffect","nextSpeed","loop","maxWidth","fitToView","width","autoSize","scrolling","expr","pseudos","elem","doSearch","init","salesforceOrganizationId","_etmc","debug","catalogId","clientEmail","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","loaderImg","atc","showElement","sel","nodeName","hideElement","getAjaxObject","XMLHttpRequest","trymicrosoft","ActiveXObject","othermicrosoft","failed","message","trackError","eventCategory","eventAction","eventLabel","eventParams","detail","btoa","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","swapPurchaseType","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 /** \n * Defines if should log in the console the current element selected by tab key.\n * Should be `false` if on production.\n */\n static LOG_ACTIVE_ELEMENT: boolean = false\n\n /**\n * Defines if should log debug informations when calling `trapFocus` function.\n * Should be `false` if on production.\n */\n static DEBUG_TRAP_FOCUS: boolean = false\n\n /**\n * Defines the Fancybox version. Can be `2` or `4`.\n * This will change the `init` method behavior.\n */\n static FANCYBOX_VERSION: number = 2\n\n static selectors = {\n mainNavList: '#main-nav',\n navList: '#category-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]), ' // links that has \"href\" attribute and are not disabled \n + 'button:not([disabled]), ' // buttons that are not disabled\n + '[data-focusable=\"true\"]', // buttons that are not disabled\n navigationBar: {\n menuItems: '.dropdown',\n linkMenuItems: '.dropdownLink',\n subMenuItems: `.submenuContainer`,\n subMenuItem: '[role=\"menuitem\"]'\n },\n tabsManual: {\n tabs: '[role=tab]'\n },\n radioGroup: {\n radioItems: '[role=radio]'\n }\n }\n\n /** Trap 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 /** Trap the tab navigation focus */\n static trapFocus({\n container,\n closeElement,\n outsideContainerCloseButton,\n additionalCloseElements,\n tablistUpdateElements,\n triggerHTMLElement,\n firstElementToFocus,\n unbindEvents\n }: {\n\n /**\n * The modal / container where the focus should be trapped.\n */\n container: string,\n\n /**\n * The element that `closeTrapFocus` function will `click` to close the modal.\n */\n closeElement: string,\n\n /**\n * This element that serves as a close button located outside of the main trapFocused container.\n * Use this when a close button is out of the container element\n * This will add the element to the focusable elements before all the others\n */\n outsideContainerCloseButton?: string,\n /**\n * Elements inside the container that, when `clicked` or pressed `Enter`,\n * will call the `closeTrapFocus` function.\n */\n additionalCloseElements?: string[],\n\n /**\n * Elements inside the container that, when `clicked` or pressed `Enter`,\n * will restore the focusable elements inside the container.\n */\n tablistUpdateElements?: string[],\n\n /**\n * The element that opened the modal / the element where to focus should go\n * after closing the modal.\n */\n triggerHTMLElement?: HTMLElement,\n\n /**\n * The element that should be focused after opening the modal.\n * If not defined it will be automatically defined.\n */\n firstElementToFocus?: string,\n\n /**\n * Unable the events to be unbinded after closing the modal.\n * Should be true for trapFocus where tablistUpdateElements is defined.\n */\n unbindEvents?: boolean,\n }): void {\n\n const containerHTMLElement: HTMLElement = document.querySelector(container);\n const closeHTMLElement: HTMLElement = document.querySelector(closeElement);\n const addCloseHTMLElement: HTMLElement = document.querySelector(outsideContainerCloseButton) ?? null;\n let focusableElementsNL: NodeListOf\n let focusableElements: Element[]\n let firstFocusableEl: Element\n let lastFocusableEl: Element\n \n const KEYCODE_TAB = 9;\n\n const setFocusables = () => {\n focusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements);\n focusableElements = Array.from(focusableElementsNL).filter((el: Element) => (el as HTMLElement).tabIndex !== -1)\n if(addCloseHTMLElement){\n focusableElements.unshift(addCloseHTMLElement)\n }\n firstFocusableEl = focusableElements[0]\n lastFocusableEl = focusableElements[focusableElements.length - 1];\n\n bindEventsToFocusableElements();\n }\n\n const eventHandler = (e: KeyboardEvent) => {\n e.stopPropagation();\n const isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n const isEscapePressed = e.key === 'Escape'\n \n if (!isTabPressed && !isEscapePressed) {\n return;\n }\n \n // If pressed tab\n if (isTabPressed) {\n\n // If pressed shift + tab\n if (e.shiftKey) {\n \n // If the active element is the first focusable element,\n // focus in the last focusable element.\n if (document.activeElement === firstFocusableEl) {\n (lastFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n }\n \n // If pressed only tab\n else {\n \n // If the active element is the last focusable element,\n // focus in the first focusable element.\n if (document.activeElement === lastFocusableEl) {\n (firstFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n }\n }\n \n // If pressed escape\n if (isEscapePressed) {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n }\n \n const bindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.addEventListener('keydown', eventHandler)\n });\n }\n \n const unbindEventsToFocusableElements = () => {\n if (unbindEvents) {\n focusableElements.forEach((element) => {\n element.removeEventListener('keydown', eventHandler)\n });\n }\n }\n \n setFocusables();\n \n additionalCloseElements?.forEach((element: string) => {\n const altCloseHTMLElement: HTMLElement = containerHTMLElement.querySelector(element)\n altCloseHTMLElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n HAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n }\n })\n altCloseHTMLElement.addEventListener('click', (e) => {\n HAHAccessibility.closeTrapFocus(altCloseHTMLElement, triggerHTMLElement)\n })\n })\n\n if (HAHAccessibility.DEBUG_TRAP_FOCUS) {\n console.log(\"focusableElements\", focusableElements)\n console.log(\"firstFocusableEl\", firstFocusableEl)\n console.log(\"lastFocusableEl\", lastFocusableEl)\n }\n\n closeHTMLElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n unbindEventsToFocusableElements();\n }\n })\n\n closeHTMLElement.addEventListener('click', () => {\n unbindEventsToFocusableElements();\n })\n\n tablistUpdateElements?.forEach((element) => {\n const updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n if (updaterElement) {\n updaterElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n setFocusables();\n }\n })\n updaterElement.addEventListener('click', (e) => {\n setFocusables();\n });\n }\n });\n\n if (firstElementToFocus) {\n const firstElementToFocusHTMLElement: HTMLElement = containerHTMLElement.querySelector(firstElementToFocus);\n firstElementToFocusHTMLElement.focus();\n } else {\n (firstFocusableEl as HTMLElement).focus();\n }\n }\n\n /** Trap the tab focus inside the Fancybox 4 modal dialog */\n static trapFocusFancybox4({\n container,\n closeElement,\n additionalCloseElements,\n tablistUpdateElements,\n triggerHTMLElement,\n imageAltText\n }: {\n container: string,\n closeElement: string,\n additionalCloseElements?: string[],\n tablistUpdateElements?: string[],\n triggerHTMLElement?: HTMLElement,\n imageAltText?: string\n }): void {\n\n const containerHTMLElement: HTMLElement = document.querySelector(container);\n const closeHTMLElement: HTMLElement = document.querySelector(closeElement);\n\n let focusableElementsNL: NodeListOf\n let focusableElements: Element[]\n let firstFocusableEl: Element\n let lastFocusableEl: Element\n\n const setFocusables = (trigger?: string) => {\n\n focusableElements && unbindEventsToFocusableElements();\n focusableElements = [];\n focusableElementsNL = containerHTMLElement.querySelectorAll(HAHAccessibility.selectors.focusableElements);\n const currentSlide = containerHTMLElement.querySelector('.fancybox__slide.is-selected');\n let currentSlideIndex = Number(currentSlide.getAttribute('data-index'));\n\n if (trigger === \"Next\") {\n currentSlideIndex += 1\n } else if (trigger === \"Previous\") {\n currentSlideIndex -= 1\n }\n\n focusableElements = Array.from(focusableElementsNL).filter((el: Element, _index: number) => {\n if ((el as HTMLElement).title !== 'Close') return true\n if ((el as HTMLElement).title === 'Close') {\n const closeButtonIndex = Number((el.parentNode.parentNode as HTMLElement).getAttribute('data-index'))\n if (closeButtonIndex === currentSlideIndex) return true\n }\n })\n\n if (imageAltText) {\n $(`[data-index=\"${currentSlideIndex}\"] .fancybox__image`).attr('alt', imageAltText);\n }\n\n firstFocusableEl = focusableElements[0];\n lastFocusableEl = focusableElements[focusableElements.length - 1];\n\n bindEventsToFocusableElements();\n }\n\n const KEYCODE_TAB = 9;\n\n additionalCloseElements?.forEach(element => {\n const altCloseHTMLElement: HTMLElement = document.querySelector(element)\n altCloseHTMLElement.addEventListener('keypress', (e) => {\n if (altCloseHTMLElement !== e.target) return;\n if (e.key === 'Enter') {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n });\n altCloseHTMLElement.addEventListener('click', (e) => {\n if (altCloseHTMLElement !== e.target) return;\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n });\n });\n\n const eventHandler = (e: KeyboardEvent) => {\n let isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n let isEscapePressed = e.key === 'Escape'\n\n if (!isTabPressed && !isEscapePressed) {\n return;\n }\n\n if (isTabPressed) {\n const elementIndex = focusableElements.indexOf(document.activeElement);\n if (e.shiftKey) /* shift + tab */ {\n if (elementIndex === 0) {\n (lastFocusableEl as HTMLElement).focus();\n e.preventDefault();\n } else if (elementIndex > 0) {\n (focusableElements[elementIndex - 1] as HTMLElement).focus();\n e.preventDefault();\n } else {\n (lastFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n } else /* tab */ {\n if (elementIndex === focusableElements.length - 1) {\n (firstFocusableEl as HTMLElement).focus();\n e.preventDefault();\n } else if (elementIndex >= 0) {\n (focusableElements[elementIndex + 1] as HTMLElement).focus();\n e.preventDefault();\n } else {\n (firstFocusableEl as HTMLElement).focus();\n e.preventDefault();\n }\n }\n }\n\n if (isEscapePressed) {\n HAHAccessibility.closeTrapFocus(closeHTMLElement, triggerHTMLElement)\n }\n }\n\n const bindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.addEventListener('keydown', eventHandler)\n });\n }\n\n const unbindEventsToFocusableElements = () => {\n focusableElements.forEach((element) => {\n element.removeEventListener('keydown', eventHandler)\n });\n }\n\n setFocusables();\n\n tablistUpdateElements?.forEach((element) => {\n const updaterElement: HTMLElement = containerHTMLElement.querySelector(element)\n if (updaterElement) {\n updaterElement.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n setFocusables(updaterElement.title);\n }\n })\n updaterElement.addEventListener('click', (e) => {\n setFocusables(updaterElement.title);\n });\n }\n });\n\n\n // firstFocusableEl.focus(); \n }\n\n /** End the trap for the focus inside the modal dialog */\n static closeTrapFocus(closeHTMLElement: HTMLElement, triggerHTMLElement?: HTMLElement): void {\n closeHTMLElement?.focus()\n closeHTMLElement?.click()\n triggerHTMLElement?.focus();\n }\n\n /**\n * 1) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#main-nav')`\n * 2) Calls `new NavigationBar` for each element found by `document.querySelectorAll('#side-nav')`\n * 3) Calls `new TabsManual` for each element found by `document.querySelectorAll('[role=tablist]')`\n * 4) Applies accessibility tools for fancybox images\n * 5) Applies accessibility tools for the fancybox element\n * 6) Applies accessibility tools for fancybox inline subdetails\n */\n static init() {\n\n const logActiveElement = this.LOG_ACTIVE_ELEMENT\n\n window.addEventListener('load', function () {\n\n window.mainNavList = document.querySelectorAll(HAHAccessibility.selectors.mainNavList);\n if (window.mainNavList) {\n for (let i = 0; i < window.mainNavList.length; i++) {\n new NavigationBar(window.mainNavList[i]);\n }\n }\n\n window.navList = document.querySelectorAll(HAHAccessibility.selectors.navList);\n if (window.navList) {\n for (let i = 0; i < window.navList.length; i++) {\n new NavigationBar(window.navList[i]);\n }\n }\n\n window.tablists = document.querySelectorAll(HAHAccessibility.selectors.tabLists);\n if (window.tablists) {\n for (let i = 0; i < window.tablists.length; i++) {\n new TabsManual(window.tablists[i]);\n }\n }\n\n HAHAccessibility.initADAForMainMenu()\n\n switch (HAHAccessibility.FANCYBOX_VERSION) {\n case 2: HAHAccessibility.initADAForFancybox2(); break;\n case 4: HAHAccessibility.initADAForFancybox4(); break;\n }\n\n if (logActiveElement) {\n document.addEventListener('keyup', () => console.log(document.activeElement))\n }\n\n console.log('Accessibility tools for ADA AAA compliance successfully initialized.')\n });\n }\n\n private static initADAForFancybox2() {\n\n $(\"[id^='fancyboxLBImage']\").on('click', function () {\n window.triggerElement = this;\n })\n\n $('#addOnFancyboxLBImage').on('click', function () {\n window.triggerElement = this;\n });\n\n ($('.fancybox') as any).fancybox({\n afterShow: function () {\n const triggerElementId = window.triggerElement.getAttribute(\"id\")\n if (triggerElementId === 'addOnFancyboxLBImage' || triggerElementId.includes('fancyboxLBImage')) {\n const altDialogText = triggerElementId.includes('fancyboxLBImage')\n ? $(window.triggerElement).find('img').attr(\"alt\")\n : $(window.triggerElement)[0].innerText\n $('.fancybox-overlay').attr(\"aria-label\", `${altDialogText} image`)\n $('.fancybox-overlay .fancybox-wrap img').attr(\"alt\", altDialogText)\n }\n $('.fancybox-overlay').attr(\"aria-modal\",\"true\").attr(\"role\",\"dialog\");\n $('.fancybox-overlay .fancybox-wrap').removeAttr(\"tabindex\").removeAttr(\"aria-modal\").removeAttr(\"aria-label\").removeAttr(\"role\");\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-close',\n additionalCloseElements: [],\n tablistUpdateElements: [\n '.fancybox-prev',\n '.fancybox-next'\n ],\n triggerHTMLElement: window.triggerElement,\n unbindEvents: true\n });\n },\n afterClose: function () {\n window.triggerElement.focus();\n }\n })\n\n // Fancybox inline sub details\n $('.sub-details').on('click', function () {\n window.triggerElement = this;\n });\n\n ($('.sub-details') as any).fancybox({\n afterShow: function () {\n $('.fancybox-overlay').attr(\"aria-label\",\"Subscription details\").attr(\"aria-modal\",\"true\").attr(\"role\",\"dialog\").attr(\"aria-describedby\",\"inline-sub-box ADA-sub-disclosure\");\n $('.fancybox-overlay .fancybox-wrap').removeAttr(\"tabindex\").removeAttr(\"aria-label\").removeAttr(\"role\");\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-close',\n additionalCloseElements: [],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement\n });\n },\n afterClose: function () {\n window.triggerElement.focus();\n }\n });\n\n $(\".BMSM-Chart\").on('click', function() {\n window.triggerElement = this;\n });\n\n ($('.BMSM-Chart') as any).fancybox({\n afterShow: function() {\n $('.fancybox-overlay').attr(\"aria-modal\",\"true\").attr(\"role\",\"dialog\").attr(\"aria-label\",\"Buy More Save More\");\n $('.fancybox-overlay .fancybox-wrap').removeAttr(\"aria-modal\").removeAttr(\"aria-label\").removeAttr(\"role\");\n HAHAccessibility.trapFocus({\n container: '.fancybox-overlay',\n closeElement: '.fancybox-close',\n firstElementToFocus: '#bmsm-title'\n });\n },\n afterClose: function() {\n window.triggerElement.focus();\n }\n })\n }\n\n private static initADAForFancybox4() {\n\n $('[data-fancybox=\"product-image-gallery\"]').on('click', function () {\n window.triggerElement = this;\n })\n\n $('[data-fancybox=\"product-addon\"]').on('click', function () {\n window.triggerElement = this;\n })\n\n $('[data-fancybox-type=\"inline\"]').on('click', function () {\n window.triggerElement = this;\n })\n\n Fancybox.bind('[data-fancybox=\"product-image-gallery\"]', {\n once: {\n done: (fancybox: any) => {\n const altDialogText = $(window.triggerElement).children()[0].getAttribute(\"alt\")\n const fancyboxId = fancybox.$container.getAttribute('id')\n fancybox.$container.setAttribute('aria-label', `${altDialogText} image`)\n $('.is-selected').attr('aria-label', 'Current image')\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: \".is-selected .carousel__button.is-close\",\n additionalCloseElements: [\".fancybox__slide\"],\n tablistUpdateElements: [\".carousel__button.is-next\", \".carousel__button.is-prev\"],\n triggerHTMLElement: window.triggerElement,\n imageAltText: altDialogText\n });\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false,\n })\n\n Fancybox.bind('[data-fancybox=\"product-addon\"]', {\n once: {\n done: (fancybox: any) => {\n const altDialogText = $(window.triggerElement).text().toLowerCase().replace(\"add\", \"\").trim()\n const newAltDialogText = `${altDialogText} image`\n const fancyboxId = fancybox.$container.getAttribute('id')\n fancybox.$container.setAttribute('aria-label', newAltDialogText)\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: \".is-selected .carousel__button.is-close\",\n additionalCloseElements: [\".fancybox__slide\"],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement,\n imageAltText: altDialogText\n });\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false,\n });\n\n Fancybox.bind('[data-fancybox-type=\"inline\"]', {\n once: {\n done: (fancybox: any) => {\n fancybox.$container.removeAttribute('aria-label')\n const fancyboxId = fancybox.$container.getAttribute('id')\n HAHAccessibility.trapFocusFancybox4({\n container: `#${fancyboxId}`,\n closeElement: \".is-selected .carousel__button.is-close\",\n additionalCloseElements: [\".fancybox__slide\"],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement\n });\n }\n },\n Thumbs: false,\n Toolbar: false,\n dragToClose: false,\n infinite: false,\n });\n }\n\n private static initADAForMainMenu() {\n\n const dropdownsLinks = $(\"#main-nav .dropdownLink\");\n const dropdowns = $(\"#main-nav .dropdown\");\n\n dropdownsLinks.on(\"focus\", function () {\n let liParent = $(this).parent();\n dropdowns.removeClass(\"hover\");\n dropdownsLinks.attr(\"aria-expanded\", \"false\");\n liParent.addClass(\"hover\");\n // $('.header-container').addClass(\"hover\")\n $(this).attr(\"aria-expanded\", \"true\");\n })\n\n let firstNavChild = $(\"#main-nav .dropdownLink\").first()[0];\n\n $(firstNavChild).on(\"keydown\", function (e) {\n if (e.key === 'Tab' && e.shiftKey) {\n dropdowns.removeClass(\"hover\");\n dropdownsLinks.attr(\"aria-expanded\", \"false\");\n }\n })\n\n let lastNavChild = $(\"#main-nav [role=menuitem]\").last()[0];\n\n $(lastNavChild).on(\"keydown\", function (e) {\n if (e.key === 'Tab') {\n dropdowns.removeClass(\"hover\");\n dropdownsLinks.attr(\"aria-expanded\", \"false\");\n }\n })\n }\n}\n\n/**\n* 1) Receives an element representing the navigation list\n* 2) Defines the `menuItems`, `linkMenuItems` and `subMenuItems`\n* 3) Defines the first and last menu item\n* 4) Adds an event listener for the `keydown` event for each element of `linkMenuItems`\n* 5) Adds an event listener for the `keydown` event for each element of `subMenuItems`\n* 6) Defines the `allNavLink`\n* 7) Defines the `aria-current=\"page\"` for one element of `allNavLink`\n*/\nclass NavigationBar {\n\n navlistNode: Element\n menuItems: Element[]\n linkMenuItems: Element[]\n subMenuItems: Element[][]\n currentLocation: any\n firstMenuItem: Element\n lastMenuItem: Element\n allNavLink: HTMLLinkElement[]\n\n constructor(groupNode: Element) {\n this.navlistNode = groupNode;\n this.menuItems = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.menuItems));\n this.linkMenuItems = [];\n this.subMenuItems = [];\n this.currentLocation = window.location.href\n\n for (let i = 0; i < this.menuItems.length; i++) {\n this.linkMenuItems.push(this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.linkMenuItems))\n if (this.menuItems[i].querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)) {\n this.subMenuItems.push(\n Array.from(\n this.menuItems[i]\n .querySelector(HAHAccessibility.selectors.navigationBar.subMenuItems)\n .querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem)\n )\n )\n } else {\n this.subMenuItems.push([])\n }\n }\n\n this.firstMenuItem = this.linkMenuItems[0];\n this.lastMenuItem = this.linkMenuItems[this.linkMenuItems.length - 1];\n\n for (let j = 0; j < this.linkMenuItems.length; j++) {\n this.linkMenuItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, null))\n }\n\n for (let j = 0; j < this.linkMenuItems.length; j++) {\n for (let k = 0; k < this.subMenuItems[j].length; k++) {\n this.subMenuItems[j][k].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j, k))\n }\n }\n\n this.allNavLink = Array.from(this.navlistNode.querySelectorAll(HAHAccessibility.selectors.navigationBar.subMenuItem))\n\n for (let l = 0; l < this.allNavLink.length; l++) {\n if (this.allNavLink[l].href === this.currentLocation) {\n this.allNavLink[l].setAttribute('aria-current', 'page');\n }\n }\n }\n\n moveFocusToLink(currentLink: Element) {\n (currentLink as HTMLElement)?.focus();\n }\n\n moveFocusToPreviousLink(indexMenu: any, _indexSubMenu: any) {\n if (indexMenu === 0) {\n this.moveFocusToLink(this.lastMenuItem)\n } else {\n this.moveFocusToLink(this.linkMenuItems[indexMenu - 1])\n }\n }\n\n moveFocusToNextLink(indexMenu: any, _indexSubMenu: any) {\n if (indexMenu === this.linkMenuItems.length - 1) {\n this.moveFocusToLink(this.firstMenuItem)\n } else {\n this.moveFocusToLink(this.linkMenuItems[indexMenu + 1])\n }\n }\n\n moveFocusToPreviousSublink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n } else {\n if (indexSubMenu === 0) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu - 1]);\n }\n }\n }\n\n moveFocusToNextSublink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n } else {\n if (indexSubMenu === subMenuLenght) {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][indexSubMenu + 1]);\n }\n }\n }\n\n moveFocusToFirstlink(indexMenu: any, indexSubMenu: any) {\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.firstMenuItem);\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][0]);\n }\n }\n\n moveFocusToLastlink(indexMenu: any, indexSubMenu: any) {\n const subMenuLenght = this.subMenuItems[indexMenu].length - 1\n if (indexSubMenu === null) {\n this.moveFocusToLink(this.lastMenuItem);\n } else {\n this.moveFocusToLink(this.subMenuItems[indexMenu][subMenuLenght]);\n }\n }\n\n moveFocusTofatherlink(indexMenu: any, indexSubMenu: any) {\n if (indexSubMenu !== null) {\n this.moveFocusToLink(this.linkMenuItems[indexMenu]);\n }\n }\n\n isPrintableCharacter(str: string) {\n return str.length === 1 && str.match(/\\S/);\n }\n\n setFocusByFirstCharacter(character: any, indexMenu: any, indexSubMenu: any) {\n\n let linksArrToSearch: any\n let startIndex: any\n\n if (indexSubMenu === null) {\n linksArrToSearch = this.linkMenuItems;\n startIndex = indexMenu\n } else {\n linksArrToSearch = this.subMenuItems[indexMenu];\n startIndex = indexSubMenu\n }\n\n for (let i = 0; i < linksArrToSearch.length - 1; i++) {\n if (startIndex === linksArrToSearch.length - 1) {\n startIndex = 0;\n } else {\n startIndex += 1;\n }\n if (linksArrToSearch[startIndex].name.toLowerCase().startsWith(character.toLowerCase())) {\n this.moveFocusToLink(linksArrToSearch[startIndex]);\n break;\n }\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent, indexMenu: number, indexSubMenu: number) {\n\n let flag = false;\n\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousLink(indexMenu, indexSubMenu);\n flag = true;\n break;\n case 'ArrowRight':\n this.moveFocusToNextLink(indexMenu, indexSubMenu);\n flag = true;\n break;\n case 'ArrowUp':\n this.moveFocusToPreviousSublink(indexMenu, indexSubMenu);\n flag = true;\n break;\n\n case 'ArrowDown':\n this.moveFocusToNextSublink(indexMenu, indexSubMenu);\n flag = true;\n break;\n case 'Home':\n this.moveFocusToFirstlink(indexMenu, indexSubMenu);\n flag = true;\n break;\n case 'End':\n this.moveFocusToLastlink(indexMenu, indexSubMenu);\n flag = true;\n break;\n\n case \"Escape\":\n this.moveFocusTofatherlink(indexMenu, indexSubMenu);\n flag = true;\n break;\n default:\n if (this.isPrintableCharacter(event.key)) {\n this.setFocusByFirstCharacter(event.key, indexMenu, indexSubMenu);\n flag = true;\n }\n break;\n }\n\n if (flag) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\n/**\n* 1) Receives an element representing the tablist\n* 2) Searches for subelements with `role=\"tab\"`\n* 3) Defines the first and last tab\n* 4) Adds an event listener for the `keydown` event for each tab\n*/\nclass TabsManual {\n\n tablistNode: any\n tabs: Element[]\n firstTab: Element\n lastTab: Element\n\n constructor(groupNode: Element) {\n this.tablistNode = groupNode;\n this.tabs = [];\n this.firstTab = null;\n this.lastTab = null;\n this.tabs = Array.from(this.tablistNode.querySelectorAll(HAHAccessibility.selectors.tabsManual.tabs));\n for (let i = 0; i < this.tabs.length; i += 1) {\n let tab = this.tabs[i];\n\n tab.addEventListener('keydown', this.onKeydown.bind(this));\n if (!this.firstTab) {\n this.firstTab = tab;\n }\n this.lastTab = tab;\n }\n }\n\n moveFocusToTab(currentTab: Element) {\n (currentTab as HTMLElement).focus();\n }\n\n moveFocusToPreviousTab(currentTab: Element) {\n let index: number;\n if (currentTab === this.firstTab) {\n this.moveFocusToTab(this.lastTab);\n } else {\n index = this.tabs.indexOf(currentTab);\n this.moveFocusToTab(this.tabs[index - 1]);\n }\n }\n\n moveFocusToNextTab(currentTab: Element) {\n let index: number;\n if (currentTab === this.lastTab) {\n this.moveFocusToTab(this.firstTab);\n } else {\n index = this.tabs.indexOf(currentTab);\n this.moveFocusToTab(this.tabs[index + 1]);\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent) {\n const tgt: HTMLElement = event.currentTarget as HTMLElement\n let flag = false\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousTab(tgt as HTMLElement);\n flag = true;\n break;\n case 'ArrowRight':\n this.moveFocusToNextTab(tgt as HTMLElement);\n flag = true;\n break;\n case 'Home':\n this.moveFocusToTab(this.firstTab);\n flag = true;\n break;\n case 'End':\n this.moveFocusToTab(this.lastTab);\n flag = true;\n break;\n default:\n break;\n }\n if (flag) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\n/**\n* 1) Receives a list of elements\n* 2) Searches for subelements with `role=\"radio\"`\n* 3) Defines the first and last radio option\n* 4) Adds an event listener for the `keydown` event for each radio item\n*/\nclass RadioGroup {\n\n radioOptNode: Element\n radioItems: Element[]\n firstRadioItem: Element\n lastRadioItem: Element\n\n constructor(groupNode: NodeListOf) {\n this.radioOptNode = groupNode[0];\n this.radioItems = Array.from(this.radioOptNode.querySelectorAll(HAHAccessibility.selectors.radioGroup.radioItems));\n this.firstRadioItem = this.radioItems[0];\n this.lastRadioItem = this.radioItems[this.radioItems.length - 1];\n for (let j = 0; j < this.radioItems.length; j++) {\n this.radioItems[j].addEventListener('keydown', (e) => this.onKeydown.call(this, e, j))\n }\n }\n\n moveFocusToRadio(currentRadio: Element) {\n (currentRadio as HTMLElement).focus();\n (currentRadio as HTMLElement).click();\n }\n\n moveFocusToPreviousRadio(indexRadio: number) {\n if (indexRadio === 0) {\n this.moveFocusToRadio(this.lastRadioItem)\n } else {\n this.moveFocusToRadio(this.radioItems[indexRadio - 1])\n }\n }\n\n moveFocusToNextRadio(indexRadio: number) {\n if (indexRadio === this.radioItems.length - 1) {\n this.moveFocusToRadio(this.firstRadioItem)\n } else {\n this.moveFocusToRadio(this.radioItems[indexRadio + 1])\n }\n }\n\n /* EVENT HANDLERS */\n onKeydown(event: KeyboardEvent, indexMenu: number) {\n\n let flag = false;\n\n switch (event.key) {\n case 'ArrowLeft':\n this.moveFocusToPreviousRadio(indexMenu);\n flag = true;\n break;\n case 'ArrowRight':\n this.moveFocusToNextRadio(indexMenu);\n flag = true;\n break;\n case 'ArrowUp':\n this.moveFocusToPreviousRadio(indexMenu);\n flag = true;\n break;\n\n case 'ArrowDown':\n this.moveFocusToNextRadio(indexMenu);\n flag = true;\n break;\n default:\n break;\n }\n\n if (flag) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n","class ESignUp {\n 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}","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\t\t? `
\n\t\t\t\t\t
\n\t\t\t\t
`\n\t\t\t: `
\n\t\t\t\t\t
\n\t\t\t\t
`,\n\t\tcloseBtn: `

\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tClose\n\t\t\t\t\t\t\n\t\t\t\t\t

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

`\n\t\t\t: `
\n\t\t\t\t\t
\n\t\t\t\t\t\t

`,\n\t\tinnerSecondary: '

',\n\t\tconfirmBtn: `\n\t\t\t\t
\n\t\t\t
`\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 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 loaderImg = document.querySelector(`#loader${productIndex} img`) as HTMLImageElement\n var atc = document.getElementById(`ATC${productIndex}`);\n if (action === 'show') {\n if (loader) {\n loader.style.display = '';\n loader.style.visibility = 'visible';\n }\n if (atc) {\n atc.style.display = 'none';\n atc.style.visibility = 'hidden';\n }\n if (loaderImg) {\n loaderImg.style.display = 'block';\n }\n } else if (action === 'hide') {\n if (loader) {\n loader.style.display = 'none';\n loader.style.visibility = 'hidden';\n }\n if (atc) {\n atc.style.display = '';\n atc.style.visibility = 'visible';\n }\n if (loaderImg) {\n loaderImg.style.display = 'none';\n }\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: window.btoa(encodeURIComponent(eventParams.email)),\n bonvoyEmail: window.btoa(encodeURIComponent(eventParams.bonvoyEmail)),\n bonvoyNumber: window.btoa(encodeURIComponent(eventParams.bonvoyNumber)),\n pointsToRedeem: eventParams.pointsToRedeem,\n errorMessage: eventParams.errorMessage\n }\n });\n }\n }\n}\nfunction swapPurchaseType (event:any):void {\n event.preventDefault();\n\n const swapSelectorRequired = () => {\n\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\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\n/**\n * Gets 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}\n"]}