{"version":3,"sources":["accesibility.ts","esignup.ts","late.ts","salesforce.ts","search.ts","utils.ts"],"names":["HAHAccessibility","_classCallCheck","this","_createClass","key","value","_ref","setFocusables","focusableElementsNL","containerHTMLElement","querySelectorAll","selectors","focusableElements","Array","from","filter","el","tabIndex","firstFocusableEl","lastFocusableEl","length","bindEventsToFocusableElements","forEach","element","addEventListener","eventHandler","unbindEventsToFocusableElements","unbindEvents","removeEventListener","container","closeElement","additionalCloseElements","tablistUpdateElements","triggerHTMLElement","firstElementToFocus","document","querySelector","closeHTMLElement","KEYCODE_TAB","e","stopPropagation","isTabPressed","keyCode","isEscapePressed","shiftKey","activeElement","focus","preventDefault","closeTrapFocus","altCloseHTMLElement","DEBUG_TRAP_FOCUS","console","log","updaterElement","_ref2","trigger","currentSlide","currentSlideIndex","Number","getAttribute","_index","title","parentNode","imageAltText","$","concat","attr","target","elementIndex","indexOf","click","getElementById","style","visibility","display","trapFocus","alert","logActiveElement","LOG_ACTIVE_ELEMENT","window","mainNavList","i","NavigationBar","navList","tablists","tabLists","TabsManual","FANCYBOX_VERSION","initADAForFancybox2","initADAForFancybox4","on","triggerElement","fancybox","afterShow","triggerElementId","includes","altDialogText","find","innerText","removeAttr","afterClose","openEffect","openSpeed","closeEffect","closeSpeed","nextEffect","nextSpeed","padding","margin","scrolling","autoSize","Fancybox","bind","once","done","children","fancyboxId","$container","setAttribute","trapFocusFancybox4","Thumbs","Toolbar","dragToClose","infinite","text","toLowerCase","replace","trim","newAltDialogText","removeAttribute","_defineProperty","navigationBar","menuItems","linkMenuItems","subMenuItems","subMenuItem","tabsManual","tabs","radioGroup","radioItems","groupNode","_this","navlistNode","currentLocation","location","href","push","firstMenuItem","lastMenuItem","j","_loop","onKeydown","call","_loop2","k","_loop3","_j","allNavLink","l","currentLink","indexMenu","_indexSubMenu","moveFocusToLink","indexSubMenu","subMenuLenght","str","match","character","linksArrToSearch","startIndex","name","startsWith","event","flag","moveFocusToPreviousLink","moveFocusToNextLink","moveFocusToPreviousSublink","moveFocusToNextSublink","moveFocusToFirstlink","moveFocusToLastlink","moveFocusTofatherlink","isPrintableCharacter","setFocusByFirstCharacter","tablistNode","firstTab","lastTab","tab","currentTab","moveFocusToTab","index","tgt","currentTarget","moveFocusToPreviousTab","moveFocusToNextTab","RadioGroup","_this2","radioOptNode","firstRadioItem","lastRadioItem","_loop4","currentRadio","indexRadio","moveFocusToRadio","moveFocusToPreviousRadio","moveFocusToNextRadio","ESignUp","amzSDK","lambdaPayload","dialogObj","lbHideParams","cookieValue","elementIDs","Error","_objectSpread","region","timeZone","language","method","btnTxt","lightBoxInput","lightBoxBtn","footerInput","footerBtn","checkoutInput","homePageInput","homePageBtn","lightBoxBackground","lightBoxCloseBtn","sweepsBtn","sweepsEmail","sweepsName","sweepsCheck","sweepsBonvoyCheck","landingPageSweepsBtn","landingPageSweepsEmail","landingPageSweepsName","landingPageSweepsBonvoyCheck","landingPageSweepsCheck","lambdaClient","initLambdaClient","AWS","config","credentials","CognitoIdentityCredentials","IdentityPoolId","poolId","apiVersions","lambda","update","maxRetries","httpOptions","timeout","connectTimeout","Lambda","currDate","Date","Math","floor","getTimezoneOffset","toString","fadeOut","fadeIn","emailId","source","showLbMessage","callBack","arguments","undefined","action","campaign","showLightbox","dilogBox","scrollTo","payload","getTimeZone","data","params","FunctionName","functionName","Payload","JSON","stringify","invoke","err","vars","search","substring","split","paramsPresent","getCookie","checkQueryVariables","show","emailSignupPopoverDiv","setCookie","emailID","checked","recaptchaPassed","alertMessage","test","validateEmail","is","emailValue","val","callLambda","dataLayer","event_category","event_action","event_label","event_value","sweepsChecked","validateSweeps","landingPageSweepsChecked","landingPageSweepsBonvoyChecked","v","grecaptcha","getResponse","hideLandingPageSweepsForm","template","appendTo","html","mainTxt","secondaryTxt","css","ready","blur","trimmedEmailVal","loop","type","maxWidth","fitToView","width","doSearch","init","SalesforceAbandonedCartUtils","salesforceOrganizationId","_etmc","debug","catalogId","email","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","isNaN","Intl","NumberFormat","currency","format","invalue","isValidCaZipCode","isValidUsZipCode","createCookie","days","date","expires","setTime","getTime","toUTCString","cookie","eraseCookie","readCookie","nameEQ","ca","c","charAt","formatCurrency","sign","abs","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","_typeof","detail","btoa","bonvoyEmail","bonvoyNumber","pointsToRedeem","errorMessage","swapPurchaseType","addClass","removeClass","next","slideDown","siblings","slideUp","pathname","prev","parseXMLData","string","DOMParser","parseFromString","documentElement","textContent","getInvtIDCategory","invtID","alternateID","found","invtIDCategory","category","categoryID","localStorage","parse","elem"],"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 warn in the console if the page doesn't all necessary landmarks. \n * Should be `false` if on production.\n */\n static WARN_MISSING_LANDMARKS: 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: '#side-nav',\n tabLists: '[role=tablist]',\n focusableElements: 'input[type=\"text\"]:not([disabled]), ' // inputs of type \"text\" that are not disabled\n + 'input[type=\"radio\"]:not([disabled]), ' // inputs of type \"radio\" that are not disabled\n + 'input[type=\"checkbox\"]:not([disabled]), ' // inputs of type \"checkbox\" that are not disabled\n + 'input[type=\"email\"]:not([disabled]), ' // inputs of type \"email\" that are not disabled\n + 'input[type=\"button\"]:not([disabled]), ' // inputs of type \"button\" that are not disabled\n + 'input[type=\"search\"]:not([disabled]), ' // inputs of type \"search\" that are not disabled\n + 'textarea:not([disabled]), ' // textareas that are not disabled\n + 'select:not([disabled]), ' // selects that are not disabled\n + 'a[href]:not([disabled]):not([id^=\"TN_l2\"]):not([id^=\"TN_l3\"]):not([id=\"TN_l1_comingsoon\"]),' // links that has \"href\" attribute, are not disabled, id different from TN_l1_comingsoon and id doesn't contain TN_l2 (mainNav on mobile)\n + 'button:not([disabled]), ' // buttons that are not disabled\n + '[data-focusable=\"true\"]', // buttons that are not disabled\n navigationBar: {\n menuItems: '.dropdown',\n linkMenuItems: '.dropdownLink',\n subMenuItems: `.submenuContainer`,\n subMenuItem: '[role=\"menuitem\"]'\n },\n tabsManual: {\n tabs: '[role=tab]'\n },\n radioGroup: {\n radioItems: '[role=radio]'\n }\n }\n\n /** Trap the tab navigation focus */\n static trapFocus({\n container,\n closeElement,\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 * 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 * For example, in a carousel with images, that array would have the \n * \"previous\" and \"next\" buttons.\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 * 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\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 firstFocusableEl = focusableElements[0]\n lastFocusableEl = focusableElements[focusableElements.length - 1];\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 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 /** Trap focus terms and conditions LB */\n static showTermsofSalePopover(): void {\n try {\n document.getElementById('generalTermPopover').style.visibility = 'visible';\n document.getElementById('generalTermPopover').style.display = '';\n HAHAccessibility.trapFocus({\n container: '#generalTermPopover',\n closeElement: '#closegeneralTermPopover'\n })\n }\n catch (e) {\n alert('error');\n }\n }\n static showMattressTermPopover(): void {\n try {\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 * 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 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 });\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-item.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 // Animation effects for fancybox\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n padding: 2,\n margin: 20\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-item.fancybox-close',\n additionalCloseElements: [],\n tablistUpdateElements: [],\n triggerHTMLElement: window.triggerElement\n });\n },\n afterClose: function () {\n window.triggerElement.focus();\n },\n openEffect: 'elastic',\n openSpeed: 350,\n closeEffect: 'elastic',\n closeSpeed: 350,\n nextEffect: 'fade',\n nextSpeed: 200,\n scrolling: 'no',\n autoSize: true\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-item.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\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\n constructor({\n amzSDK,\n lambdaPayload,\n dialogObj,\n lbHideParams,\n cookieValue,\n elementIDs,\n }) {\n if (!amzSDK) throw new Error('\"amzSDK\" config value is required.');\n if (!lambdaPayload)\n throw new Error('\"lambdaPayload\" config value is required.');\n if (!dialogObj) throw new Error('\"dialogObj\" config value is required.');\n let defaultLambdaPayload = {\n region: \"US\",\n timeZone: \"-5\",\n language: \"EN\",\n method: \"API\",\n };\n let defaultElementIds = {\n lightBoxInput: \"#emailAddress1\",\n lightBoxBtn: \"#emailAddress1btn\",\n footerInput: \"#emailAddress2\",\n footerBtn: \"#emailAddress2btn\",\n checkoutInput: \"#emailAddress\",\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 };\n let defaultDialogObj = {\n btnTxt: \"SHOP NOW\",\n };\n this.amzSDK = amzSDK;\n this.lambdaPayload = {\n ...defaultLambdaPayload,\n ...lambdaPayload,\n };\n this.dialogObj = {\n ...defaultDialogObj,\n ...dialogObj,\n };\n this.lbHideParams = lbHideParams || [\"utm_source=hah\"];\n this.cookieValue = cookieValue || \"emailSignup\";\n this.elementIDs = {\n ...defaultElementIds,\n ...elementIDs,\n };\n this.lambdaClient = this.initLambdaClient();\n }\n // Methods\n initLambdaClient() {\n //Initialize the AWS SDK and return client\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 getTimeZone() {\n let currDate = new Date();\n return Math.floor((currDate.getTimezoneOffset() / 60) * -1).toString();\n }\n hideLandingPageSweepsForm() {\n $(\"#sweepstakesFormWrap\").fadeOut(\"slow\", function () {\n $(\"#sweepstakesConfirmation\").fadeIn(\"slow\");\n });\n }\n callLambda(\n emailId,\n source,\n showLbMessage,\n callBack = null,\n action = \"add\",\n name = \"\",\n campaign?\n ) {\n //Call the remote Lambda function\n this.showLightbox(false);\n if (showLbMessage) {\n dilogBox(this.dialogObj);\n window.scrollTo(0, 0);\n }\n let tz = this.getTimeZone();\n let payload = {\n emailId: emailId,\n source: source,\n timeZone: tz,\n name: name,\n campaign: campaign,\n };\n let lambdaPayload = {\n action: action,\n data: {\n ...this.lambdaPayload,\n ...payload,\n },\n };\n let params = {\n FunctionName: this.amzSDK.functionName,\n Payload: JSON.stringify(lambdaPayload),\n };\n this.lambdaClient.invoke(params, function (err, data) {\n if (callBack) callBack();\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 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 showLightbox(show = false) {\n const 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 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 bindElementHandlers() {\n let footerBtn = $(this.elementIDs.footerBtn);\n let lightBoxBtn = $(this.elementIDs.lightBoxBtn);\n let homePageBtn = $(this.elementIDs.homePageBtn);\n let lightBoxCloseBtn = $(this.elementIDs.lightBoxCloseBtn);\n let lightBoxBackground = $(this.elementIDs.lightBoxBackground);\n let sweepsBtn = $(this.elementIDs.sweepsBtn);\n let landingPageSweepsBtn = $(this.elementIDs.landingPageSweepsBtn);\n if (lightBoxCloseBtn.length) {\n lightBoxCloseBtn.on(\"click\", () => {\n this.showLightbox(false);\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 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(emailValue, \"lightbox\", true);\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 }\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(emailValue, \"home\", false);\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 }\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 sweepsEmail,\n \"lightbox\",\n true,\n null,\n \"sweepsadd\",\n sweepsName,\n 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 }\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 landingPageSweepsEmail,\n \"sweeps\",\n true,\n this.hideLandingPageSweepsForm,\n \"sweepsadd\",\n landingPageSweepsName,\n campaign\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 }\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(emailValue, \"footer\", false);\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 }\n });\n }\n }\n}\n\ninterface DialogObj {\n mainTxt: string;\n secondaryTxt: string;\n btnTxt?: string;\n}\n\ninterface ElementIDs {\n lightBoxInput: string;\n lightBoxBtn: string;\n footerInput: string;\n footerBtn: string;\n checkoutInput: 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}","$(document).ready(function () {\n\t// Replace email input values with trimmed values\n\t$(\"input[type='email']\").blur(function () {\n\t\tif ($(this).val()) {\n\t\t\tvar trimmedEmailVal = $.trim(($(this)).val());\n\t\t\t$(this).val(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: '
',\n\t\tcloseBtn: 'X',\n\t\tinnerMain: '

',\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').bind('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$(\"form\").on('keypress', function (e) {\n\t\tif (e.key == 'Enter') {\n\t\t\t//alert($(\"#tSearchString\").is(\":focus\"));\n\t\t\tif ($(\"#tSearchString\").is(\":focus\")) {\n\t\t\t\t$(\"#searchSubmit\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#sweepsName, #sweepsEmail, #sweepsCheck, #sweepsBonvoyCheck\").is(\":focus\")) {\n\t\t\t\t$(\"#sweepsBtn\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#landingPageSweepsName, #landingPageSweepsEmail, #landingPageSweepsCheck, #landingPageSweepsBonvoyCheck, #recaptcha-anchor\").is(\":focus\")) {\n\t\t\t\t$(\"#landingPageSweepsBtn\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#emailAddress1\").is(\":focus\")) {\n\t\t\t\t$(\"#emailAddress1\").trigger('blur');\n\t\t\t\t$(\"#emailAddress1btn\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#emailAddress2\").is(\":focus\")) {\n\t\t\t\t$(\"#emailAddress2\").trigger('blur');\n\t\t\t\t$(\"#emailAddress2btn\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#searchUI_tbProductName\").is(\":focus\")) {\n\t\t\t\tdoSearch();\n\t\t\t\treturn false;\n\t\t\t} else if ($(\"#validationNbr\").is(\":focus\")) {\n\t\t\t\t$(\"#validationNbr\").trigger('blur');\n\t\t\t\t$(\"#btn_apply\").trigger(\"click\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n});\n\n// On \"DOMContentLoaded\" (before the \"load\" event), calls \"HAHAccessibility.init()\" \n$(() => HAHAccessibility.init())","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(`.cart-handler 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 const swapSelectorRequired = () => {\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 * 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}"]}