!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.GTMLibrary=t():e.GTMLibrary=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>h});class r{static getRecentItems(){return[...this.recentItems]}static async pushWithRetry(e,t,r=0){try{if(!e)throw new Error("Event name is required");window.dataLayer=window.dataLayer||[],window.dataLayer.push({ecommerce:null});const r={event:e,...t};window.dataLayer.push(r)}catch(s){if(r<this.MAX_RETRIES)return await new Promise((e=>setTimeout(e,this.RETRY_DELAY))),this.pushWithRetry(e,t,r+1);throw s}}static async push(e,t){return this.pushWithRetry(e,t)}static async pushEcommerceEvent(e,t,r,s){try{if(!e)throw new Error("Event name is required");if(!Array.isArray(t))throw new Error("Items must be an array");if("begin_checkout"===e&&t.length>0){this.recentItems=[...t];try{sessionStorage.setItem("gtm_checkout_items",JSON.stringify(t)),sessionStorage.setItem("gtm_checkout_type","store")}catch(e){}}if("purchase"===e){if(0===t.length||1===t.length&&"Unknown Item"===t[0].item_name)if(this.recentItems.length>0)t=[...this.recentItems];else try{let e=sessionStorage.getItem("gtm_checkout_items");if(e||(e=sessionStorage.getItem("membership_cart_items")),e){const r=JSON.parse(e);Array.isArray(r)&&r.length>0&&(t=r)}}catch(e){}}const n={items:t,value:r||t.reduce(((e,t)=>e+t.price*t.quantity),0),currency:"USD",...s};await this.push(e,{ecommerce:n})}catch(e){throw e}}static async pushMembershipEvent(e,t,r,s,n){try{if(!e)throw new Error("Event name is required");if("number"!=typeof t)throw new Error("Step must be a number");if(!r)throw new Error("Membership type is required");if(!s)throw new Error("Step title is required");const a={event:e,membership:{step:t,membership_type:r,step_title:s}};if(n){a.ecommerce=n;const t=n;if("membership_process_payment"===e&&t&&t.items&&Array.isArray(t.items)&&t.items.length>0){this.recentItems=JSON.parse(JSON.stringify(t.items));try{sessionStorage.setItem("gtm_checkout_items",JSON.stringify(this.recentItems)),sessionStorage.setItem("membership_cart_items",JSON.stringify(this.recentItems)),sessionStorage.setItem("gtm_checkout_type","membership")}catch(e){}}}await this.push(e,a)}catch(e){throw e}}static clearStoredItems(){this.recentItems=[];try{sessionStorage.removeItem("gtm_checkout_items"),sessionStorage.removeItem("membership_cart_items"),sessionStorage.removeItem("gtm_checkout_type"),sessionStorage.removeItem("membership_purchase_sent"),sessionStorage.removeItem("membership_discount_code"),sessionStorage.removeItem("store_discount_code")}catch(e){}}static debugStoredState(){let e=null,t=null,r=null;try{const s=sessionStorage.getItem("gtm_checkout_items"),n=sessionStorage.getItem("membership_cart_items");if(r=sessionStorage.getItem("gtm_checkout_type"),s&&(e=JSON.parse(s)),n&&(t=JSON.parse(n)),window.dataLayer){window.dataLayer.filter((e=>e&&("begin_checkout"===e.event||"purchase"===e.event||"membership_process_payment"===e.event)))}}catch(e){}return{recentItems:this.getRecentItems(),gtmItems:e,membershipItems:t,checkoutType:r}}}r.MAX_RETRIES=3,r.RETRY_DELAY=100,r.recentItems=[];const s={cartState:[],selectors:{productTile:".LTEStoreTile",productName:'[data-name="storeItemName"]',price:".FrameworkCurrencyField",storeLink:".pfm-item-store-link",quantity:".slds-select",cartItem:".pfm-cart_item"},initializeCart(){try{const e=JSON.parse(localStorage.getItem("cartState")||"[]");this.cartState=e}catch(e){this.cartState=[]}},extractPrice(e){if(!e)return 0;const t=e.textContent?.trim()||"0";return parseFloat(t.replace(/[^0-9.-]+/g,""))||0},extractQuantity(e){if(!e)return 1;const t=e.value;return parseInt(t,10)||1},getProductDetails(e){const t=e.getAttribute("data-id")||"Unknown ID",r=e.querySelector(this.selectors.productName),s=e.querySelector(this.selectors.price),n=e.querySelector(this.selectors.quantity);return{item_id:t,item_name:r?.textContent?.trim()||"Unknown Name",price:this.extractPrice(s),quantity:this.extractQuantity(n)}},trackClick(e){if(e.handled||!e?.target)return;const t=e.target.closest(this.selectors.storeLink);if(!t)return;const s=t.closest(this.selectors.productTile);if(!s)return;const n=this.getProductDetails(s);r.pushEcommerceEvent("product_click",[n]),e.handled=!0},trackProductView(e){const t={item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity};r.pushEcommerceEvent("view_item",[t],e.price)},inferCategory:e=>Object.entries({"Practice Exam":"Exams",Recertification:"Recertifications","Retake Fee":"Fees","Extension Fee":"Extensions",Course:"Courses","Session Recordings":"Recordings"}).find((([t])=>e.includes(t)))?.[1]||"Uncategorized",trackAddToCart(e){const t=this.inferCategory(e.name),s={item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity,category:t},n=this.cartState.findIndex((t=>t.id===e.id));if(-1!==n)this.cartState[n].quantity+=e.quantity;else{const t={...e,added_at:(new Date).toISOString()};this.cartState.push(t)}const a=this.cartState.reduce(((e,t)=>e+t.price*t.quantity),0);r.pushEcommerceEvent("add_to_cart",[s],a);try{localStorage.setItem("cartState",JSON.stringify(this.cartState))}catch(e){}},trackRemoveFromCart(e){const t={item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity};r.pushEcommerceEvent("remove_from_cart",[t],e.price*e.quantity),this.cartState=this.cartState.filter((t=>t.id!==e.id));try{localStorage.setItem("cartState",JSON.stringify(this.cartState))}catch(e){}},trackCheckout(e){const t=e.map((e=>({item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity}))),s=t.reduce(((e,t)=>e+t.price*t.quantity),0);r.pushEcommerceEvent("begin_checkout",t,s)},trackInitialProducts(){try{const e=document.querySelectorAll(this.selectors.productTile);if(!e.length)return;const t=Array.from(e).map((e=>this.getProductDetails(e)));r.pushEcommerceEvent("view_item_list",t)}catch(e){}},processPayment(){try{this.initializeCart();const e=this.cartState,t=Array.from(document.querySelectorAll('.LTEShoppingCart .slds-card__body [role="menuitem"]')),r=t.map((t=>{const r=t.querySelector(".pfm-text-bold.pfm-text-body_small"),s=r?.textContent?.trim()||"",n=e.find((e=>e.name===s)),a=t.querySelector(".slds-m-bottom_x-small.pfm-text-body_small:not(.pfm-text-bold)");let i=1;if(a){const e=a.textContent?.match(/Quantity:\s*(\d+)/);e&&(i=parseInt(e[1],10))}const c=t.querySelector('[data-name="itemPrice"] .currencyInputSpan'),o=c?.textContent?.replace(/[^0-9.]/g,"")||"0",m=parseFloat(o),d=n?.category||this.inferCategory(s);return{id:n?.id||"Unknown ID",name:s,quantity:i,price:m,category:d,added_at:n?.added_at||(new Date).toISOString()}})).filter((e=>e.name));this.cartState=r}catch(e){}},clearCart(){try{this.cartState=[],localStorage.setItem("cartState",JSON.stringify(this.cartState))}catch(e){}}},n=(e,t,r=1e4)=>{const s=document.querySelector(e);if(s)return void t(s);const n=new MutationObserver(((r,s)=>{const n=document.querySelector(e);n&&(s.disconnect(),t(n))}));n.observe(document.body,{childList:!0,subtree:!0}),setTimeout((()=>{n.disconnect()}),r)},a={selectors:{nextButton:".nextQualifyingQuestion, a.nextStepBtn",confirmationPage:"[data-name='membership-confirmation']"},currentStep:parseInt(sessionStorage.getItem("membership_currentStep")||"1",10),generateItemId(e,t,r){const s=e.getAttribute("data-item-id");if(s)return s;return`${t.toLowerCase().replace(/[^a-z0-9]/g,"_").replace(/_+/g,"_").replace(/^_|_$/g,"")}_${Math.round(100*r)}`},getMembershipType:()=>localStorage.getItem("membership_type")||document.querySelector('[name="membershipType"]')?.value||"Unknown",trackNextStep(e){e.addEventListener("click",(()=>{const e=a.getMembershipType();let t="Unknown";const s=document.querySelector(".page-wrapper .container .well .row > .col-sm-12 > h2");s&&(t=s.textContent?.trim()||"Unknown"),r.pushMembershipEvent("membership_step",a.currentStep,e,t),a.currentStep++,sessionStorage.setItem("membership_currentStep",a.currentStep.toString())}))},trackMembershipCompletion(){n(this.selectors.confirmationPage,(()=>{r.pushMembershipEvent("membership_start",0,a.getMembershipType(),"Completed"),sessionStorage.removeItem("membership_currentStep")}))},trackButtonActions(){n("input[type='submit'][value='Cancel']",(e=>{e.addEventListener("click",(()=>{r.pushMembershipEvent("membership_cancel",0,a.getMembershipType(),"Cancelled")}))})),n("input[type='submit'][value='Previous Step']",(e=>{e.addEventListener("click",(()=>{a.currentStep=Math.max(1,a.currentStep-1),sessionStorage.setItem("membership_currentStep",a.currentStep.toString()),r.pushMembershipEvent("membership_previous",a.currentStep,a.getMembershipType(),"Previous Step")}))}))},storeCartItems(){try{const e=Array.from(document.querySelectorAll('[role="menuitem"]')).map((e=>{const t=e.querySelector('[data-name="subscriptionPlanName"]')?.textContent?.trim()||"Unknown Item";let r=0;const s=['[data-name="itemPrice"] .FrameworkCurrencyField','.pfm-text-body_small[data-name="itemPrice"] span',".FrameworkCurrencyField"];for(const t of s){const s=e.querySelector(t);if(s&&s.textContent){const e=s.textContent.trim();if(e.match(/(\$|USD)?\s*\d+(\.\d+)?/)){r=parseFloat(e.replace(/[^\d.]/g,""));break}}}if(0===r){const t=e.querySelectorAll("*");for(const e of t)if(e.textContent){const t=e.textContent.trim(),s=t.match(/(\$|USD)?\s*(\d+(\.\d+)?)/);if(s&&!t.includes("Quantity")){const e=parseFloat(s[2]);if(e>0){r=e;break}}}}const n=parseInt(e.querySelector('[data-name="quantity"]')?.textContent?.trim()||"1");return{item_id:this.generateItemId(e,t,r),item_name:t,price:r,quantity:n}}));e.length;try{sessionStorage.setItem("membership_cart_items",JSON.stringify(e)),sessionStorage.setItem("gtm_checkout_items",JSON.stringify(e))}catch(e){}return e}catch(e){return[]}},processPayment(){try{let e=document.querySelector('#order-summary-component-wrapper span[id*="cartSummaryForm:j_id510:0:j_id518"]')?.textContent?.trim();if(!e){const t=document.querySelector('select[name="Select a Payment Type"]');e=t&&t.options[t.selectedIndex].textContent?.trim()||"Unknown"}let t="Credit Card";const r=document.querySelector('[data-name="payTypesTablist"] .slds-active a');if(r)t=r.textContent?.trim()||"Credit Card";else{const e=document.querySelector('select[name="Select a Payment Type"]');e&&(t=e.options[e.selectedIndex].textContent?.trim()||"Credit Card")}const s=this.storeCartItems();if(s&&s.length>0)try{sessionStorage.setItem("gtm_checkout_items",JSON.stringify(s)),sessionStorage.setItem("membership_cart_items",JSON.stringify(s))}catch(e){}}catch(e){}},getOrderTotal(){const e=document.querySelector("#full_total");if(!e)return 0;const t=e.textContent?.trim()||"0";return parseFloat(t.replace(/[^0-9.-]+/g,""))||0},setupDiscountEvents(){n("#applyDiscount",(e=>{e.addEventListener("click",(()=>a.applyDiscount()))}))},applyDiscount(){try{const e=document.querySelector("#discount_code"),t=e?.value?.trim()||"",s=document.querySelector("#full_total"),n=s&&s.textContent?.match(/USD\s*([\d,]+\.?\d*)/)?.[1]||"0";sessionStorage.setItem("membership_discount_code",t),r.push("membership_apply_discount",{items:{discount_code:t,value:parseFloat(n),quantity:1,currency:"USD"}})}catch(e){}},setupProcessPurchaseEvents(){n('[data-aura-class="LTEEventPaymentReceipt"]',(e=>{a.processPurchase()}))},processPurchase(){try{if("true"===sessionStorage.getItem("membership_purchase_sent"))return;const e=[];let t=this.getOrderTotal();if(0===t){const e=document.querySelector(".slds-text-align_center.cFS_OrderConfirmation");if(e){const r=e.textContent?.match(/payment of\s+USD\s+([\d,.]+)/i);r&&(t=parseFloat(r[1].replace(/[^\d.]/g,"")))}}let s="";try{const e=document.querySelector(".slds-text-align_center.cFS_OrderConfirmation");if(e){const t=e.textContent?.match(/order\s+#\s+(\d+)/i);t&&(s=t[1])}if(!s){const e=document.querySelector('div[data-aura-class="LTEEventPaymentReceipt"]');e&&(s=e.getAttribute("data-order-id")||"")}s||(s=window.location.pathname.split("/").pop()||""),s=s.replace(/[^a-zA-Z0-9]/g,"")}catch(e){}try{const n=r.getRecentItems();let a=[];const i=r.debugStoredState();a=n&&n.length>0?n:i.gtmItems&&i.gtmItems.length>0?[...i.gtmItems]:i.membershipItems&&i.membershipItems.length>0?[...i.membershipItems]:e,r.pushEcommerceEvent("purchase",a,t,{transaction_id:s,currency:"USD",discount_code:sessionStorage.getItem("membership_discount_code")||""})}catch(e){}sessionStorage.setItem("membership_purchase_sent","true")}catch(e){}},setupAddressEvents(){n('button[data-name="addressCreateButton"]',(e=>{e.addEventListener("click",(()=>a.addressCreateHandler()))})),n('button[data-name="ka_modal_save"]',(e=>{e.addEventListener("click",(()=>a.addressSaveHandler()))})),n('button[data-name="ka_modal_cancel"]',(e=>{e.addEventListener("click",(()=>a.addressCancelHandler()))}))},addressCreateHandler(){try{r.pushMembershipEvent("membership_address_create",a.currentStep,"N/A","Billing Address Modal Opened")}catch(e){}},addressSaveHandler(){try{const e=document.querySelector('[data-name="addressStreet"]')?.value||"",t=document.querySelector('[data-name="addressCity"]')?.value||"",s=document.querySelector('[data-name="addressState"]')?.value||"",n={street:e,city:t,state:s,zip:document.querySelector('[data-name="addressZip"]')?.value||""};r.pushMembershipEvent("membership_address_save",a.currentStep,"N/A","Billing Address Saved",n)}catch(e){}},addressCancelHandler(){try{r.pushMembershipEvent("membership_address_cancel",a.currentStep,"N/A","Billing Address Modal Cancelled")}catch(e){}},trackAddressUpdate(e){try{r.pushMembershipEvent("membership_address_update",this.currentStep,this.getMembershipType(),"Address Updated",{address:e})}catch(e){}},debugCartItems(){try{return Array.from(document.querySelectorAll('[role="menuitem"]')).map(((e,t)=>{const r=e.querySelector('[data-name="subscriptionPlanName"]')?.textContent?.trim()||"Unknown Item";let s=0;const n=['[data-name="itemPrice"] .FrameworkCurrencyField','.pfm-text-body_small[data-name="itemPrice"] span',".FrameworkCurrencyField"];for(const t of n){const r=e.querySelector(t);if(r&&r.textContent){const e=r.textContent.trim();if(e.match(/(\$|USD)?\s*\d+(\.\d+)?/)){s=parseFloat(e.replace(/[^\d.]/g,""));break}}}return{index:t,name:r,price:s,original_id:e.getAttribute("data-item-id")||"none",generated_id:this.generateItemId(e,r,s)}}))}catch(e){return[]}},init(){n(this.selectors.nextButton,(e=>{a.trackNextStep(e)})),a.trackMembershipCompletion(),a.trackButtonActions(),a.setupDiscountEvents(),a.setupAddressEvents()}},i={formSelector:"form.form-signin",selectors:{firstName:"[name*='firstName'], [name*='first_name']",lastName:"[name*='lastName'], [name*='last_name']",email:"[name*='email']",password:"[name*='password']",country:"[name*='country']",street:"[name*='street']",city:"[name*='city']",state:"[name*='state']",postalCode:"[name*='zip'], [name*='postal']",hccaOptIn:"[name*='hcca']",scceOptIn:"[name*='scce']",submitButton:"input[type='submit'], .createNewUserBtn"},fieldMap:{firstName:"first_name",lastName:"last_name",email:"email",password:"password",country:"country",street:"street",city:"city",state:"state",postalCode:"postal_code",hccaOptIn:"hcca_opt_in",scceOptIn:"scce_opt_in"}},c={config:{},setConfig(e){this.config={...i,...e}},getFieldSelector(e){return"formSelector"===e?this.config.formSelector||i.formSelector:this.config.selectors?.[e]||i.selectors[e]},getFieldName(e){return"formSelector"===e?"form":this.config.fieldMap?.[e]||i.fieldMap[e]},getValueFromElement:e=>e?e instanceof HTMLSelectElement?"Yes"===e.value:e instanceof HTMLInputElement?"checkbox"===e.type?e.checked:e.value:e.textContent||"":"",trackJoinForm(){const e=this.getFieldSelector("formSelector"),t=document.querySelector(e);if(!t)return;const s=t.querySelector('.nextConfirmation, .btn-next, [data-style="expand-right"]'),n=async()=>{await r.push("join_start",{join:{form_loaded:!0}}),t.removeEventListener("focusin",n),s&&s.removeEventListener("click",n)},a=async e=>{e.preventDefault();try{const e={first_name:this.getValueFromElement(t.querySelector(this.getFieldSelector("firstName"))),last_name:this.getValueFromElement(t.querySelector(this.getFieldSelector("lastName"))),email:this.getValueFromElement(t.querySelector(this.getFieldSelector("email"))),password:this.getValueFromElement(t.querySelector(this.getFieldSelector("password"))),country:this.getValueFromElement(t.querySelector(this.getFieldSelector("country"))),street:this.getValueFromElement(t.querySelector(this.getFieldSelector("street"))),city:this.getValueFromElement(t.querySelector(this.getFieldSelector("city"))),state:this.getValueFromElement(t.querySelector(this.getFieldSelector("state"))),postal_code:this.getValueFromElement(t.querySelector(this.getFieldSelector("postalCode"))),hcca_opt_in:this.getValueFromElement(t.querySelector(this.getFieldSelector("hccaOptIn"))),scce_opt_in:this.getValueFromElement(t.querySelector(this.getFieldSelector("scceOptIn")))};await r.push("join_complete",{user:e}),t.submit()}catch(e){await r.push("join_error",{error:e instanceof Error?e.message:"Unknown error"})}};t.addEventListener("submit",a),s&&s.addEventListener("click",a),t.addEventListener("focusin",n),s&&s.addEventListener("click",n),window.addEventListener("beforeunload",(async()=>{const e=t.querySelector(this.getFieldSelector("firstName")),s=t.querySelector(this.getFieldSelector("lastName")),n=t.querySelector(this.getFieldSelector("email"));(e?.value||s?.value||n?.value)&&await r.push("join_failure",{join:{form_abandoned:!0}})}))},async init(e){e&&this.setConfig(e),await n(this.getFieldSelector("formSelector"),(async()=>{await r.push("join_start",{join:{form_loaded:!0}}),this.trackJoinForm()}))}},o={_state:{observer:null,debounceTimer:null,eventHandlers:new Map},_debounce(e,t){this._state.debounceTimer&&window.clearTimeout(this._state.debounceTimer),this._state.debounceTimer=window.setTimeout((()=>{e(),this._state.debounceTimer=null}),t)},_setupEventDelegation(){document.body.addEventListener("click",(e=>{try{s.trackClick(e)}catch(e){}})),this._state.observer=new MutationObserver((()=>{this._debounce((()=>{this._handleDynamicElements()}),250)})),this._state.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1})},_handleDynamicElements(){try{document.querySelectorAll('button[data-name="addToCart"]').forEach((e=>{e.dataset.listenerAttached||(this._attachAddToCartHandler(e),e.dataset.listenerAttached="true")}))}catch(e){}},_attachAddToCartHandler(e){e.addEventListener("click",(()=>{}))},_cleanup(){this._state.observer&&(this._state.observer.disconnect(),this._state.observer=null),this._state.debounceTimer&&(window.clearTimeout(this._state.debounceTimer),this._state.debounceTimer=null),this._state.eventHandlers.clear()},on(e,t){this._state.eventHandlers.has(e)||this._state.eventHandlers.set(e,new Set),this._state.eventHandlers.get(e)?.add(t)},off(e,t){const r=this._state.eventHandlers.get(e);r&&(r.delete(t),0===r.size&&this._state.eventHandlers.delete(e))},trigger(e,t){const r=this._state.eventHandlers.get(e);r&&r.forEach((e=>{try{e(t)}catch(e){}}))},observeDOM(e){e&&this._state.observer||!e&&!this._state.observer||(e?(this._state.observer=new MutationObserver((()=>{this._debounce((()=>{this._handleDynamicElements()}),250)})),this._state.observer.observe(document.body,{childList:!0,subtree:!0})):this._state.observer&&(this._state.observer.disconnect(),this._state.observer=null))},init(){try{this._setupEventDelegation()}catch(e){}},destroy(){this._cleanup()}},m={private:{cache:new Map,storageKey:"utm_data_storage",maxCacheAge:3e5,lastCacheUpdate:0},utmParams:{utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},validateUTMParam(e,t){if(!t)return null;const r=`${e}:${t}`;if(this.private.cache.has(r))return this.private.cache.get(r)||null;const s=t.replace(/[^a-zA-Z0-9-_.]/g,"");return s.length,t.includes(" "),this.private.cache.set(r,s),s},getUTMParams(){try{const e=new URLSearchParams(window.location.search);return Object.fromEntries(Object.keys(this.utmParams).filter((t=>e.has(t)&&t in this.utmParams)).map((t=>[this.utmParams[t],this.validateUTMParam(t,e.get(t))])))}catch(e){return{}}},getStoredUTMData(){try{const e=Date.now();e-this.private.lastCacheUpdate>this.private.maxCacheAge&&(this.private.cache.clear(),this.private.lastCacheUpdate=e);const t=localStorage.getItem(this.private.storageKey);return t?JSON.parse(t):{}}catch(e){return{}}},async storeUTMData(e){if(0!==Object.keys(e).length)try{const t=this.getStoredUTMData();if(!("campaign"in t)||t.campaign!==e.campaign){const t={...e,first_seen:(new Date).toISOString(),referrer:document.referrer||"",landing_page:window.location.pathname};localStorage.setItem(this.private.storageKey,JSON.stringify(t))}}catch(e){throw e}},clearUTMData(){try{localStorage.removeItem(this.private.storageKey),this.private.cache.clear()}catch(e){throw e}},async trackUTM(){try{const e=this.getUTMParams();this.getStoredUTMData(),window.location.pathname,(new Date).toISOString();Object.keys(e).length>0&&await this.storeUTMData(e)}catch(e){throw e}},async init(){try{await this.trackUTM()}catch(e){throw e}}};class d{constructor(){this.items=[],this.eventTimestamps={},this.setupCheckoutEvents(),this.setupDiscountEvents(),this.setupPurchaseEvents()}generateItemId(e,t,r){const s=e.getAttribute("data-item-id");if(s)return s;return`${t.toLowerCase().replace(/[^a-z0-9]/g,"_").replace(/_+/g,"_").replace(/^_|_$/g,"")}_${Math.round(100*r)}`}getDiscountCode(){return sessionStorage.getItem("store_discount_code")||""}getPaymentMethod(){const e=document.querySelector(d.selectors.paymentSelect);return e&&-1!==e.selectedIndex&&e.options[e.selectedIndex].text||""}getOrderTotal(){const e=document.querySelector(d.selectors.orderTotal);if(!e)return 0;const t=e.textContent?.trim()||"0";return parseFloat(t.replace(/[^\d.]/g,""))}static getInstance(){return d.instance||(d.instance=new d),d.instance}static init(){d.getInstance().setupCheckoutEvents(),d.getInstance().setupDiscountEvents()}setupCheckoutEvents(){document.addEventListener("click",(async e=>{if(e.target.closest(d.selectors.processButton))try{await this.processPayment()}catch(e){}}))}async processPayment(){try{const e=Date.now();if(e-(this.eventTimestamps.purchase||0)<d.config.debounceTime)return;this.eventTimestamps.purchase=e,this.updateCartItems();const t=this.items.map((e=>({item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity})));await r.pushEcommerceEvent("purchase",t,this.getOrderTotal(),{discount_code:this.getDiscountCode(),payment_method:this.getPaymentMethod(),transaction_id:`order-${Date.now()}`})}catch(e){}}updateCartItems(){try{const e=Array.from(document.querySelectorAll(d.selectors.cartItems));this.items=e.map(((e,t)=>{const r=e.querySelector(".pfm-text-bold.pfm-text-body_small"),s=r?.textContent?.trim()||`Unknown Item ${t+1}`,n=e.querySelector(".slds-m-bottom_x-small.pfm-text-body_small:not(.pfm-text-bold)");let a=1;if(n){const e=n.textContent?.match(/Quantity:\s*(\d+)/);e&&(a=parseInt(e[1],10))}let i=0,c=0;const o=e.querySelector(".slds-col_bump-left .FrameworkCurrencyField");if(o&&o.textContent){const e=o.textContent.trim();i=parseFloat(e.replace(/[^\d.]/g,""))||0}const m=e.querySelector('[data-name="itemPrice"]');if(m&&m.textContent){const e=m.textContent.match(/Price:\s*\$?(\d+(?:\.\d+)?)/);e&&(c=parseFloat(e[1])||0)}let d=i||c||0;if(c>0&&i>0&&Math.abs(c-i),0===d){const t=e.querySelector(".FrameworkCurrencyField");if(t&&t.textContent){const e=t.textContent.trim();if(e.match(/(\$|USD)?\s*\d+(\.\d+)?/)){const t=parseFloat(e.replace(/[^\d.]/g,""));t>0&&(d=t)}}}return{id:this.generateItemId(e,s,d),name:s,price:d,quantity:a,added_at:(new Date).toISOString()}}));this.items.reduce(((e,t)=>e+t.price*t.quantity),0),this.getOrderTotal()}catch(e){}}setupDiscountEvents(){!function(e,t,r=1e4){if(document.querySelector(e))return void t(document.querySelector(e));const s=new MutationObserver(((r,s)=>{document.querySelector(e)&&(t(document.querySelector(e)),s.disconnect())}));s.observe(document.body,{childList:!0,subtree:!0}),setTimeout((()=>{s.disconnect()}),r)}(d.selectors.applyDiscount,(e=>{e&&e.addEventListener("click",(async()=>{try{const e=document.querySelector(d.selectors.discountCode),t=e?.value?.trim()||"",s=this.getOrderTotal();sessionStorage.setItem("store_discount_code",t),await r.pushEcommerceEvent("discount",[],s,{discount_code:t,currency:"USD"})}catch(e){}}))}))}setupPurchaseEvents(){}async processPurchase(){try{const e=[],t=this.getOrderTotal(),s=sessionStorage.getItem("store_discount_code")||"",n=this.getPaymentMethod();let a=window.location.pathname.split("/").pop()||"unknown";const i=document.querySelector(d.selectors.paymentReceipt);if(i){const e=i.getAttribute("data-order-id");e&&(a=e)}await r.pushEcommerceEvent("purchase",e,t,{transaction_id:a,discount_code:s,payment_method:n,currency:"USD"})}catch(e){}}resetEventTimer(e){e?delete this.eventTimestamps[e]:this.eventTimestamps={}}debugCartItems(){try{const e=Array.from(document.querySelectorAll(d.selectors.cartItems));return e.map(((e,t)=>{const r=e.querySelector(".pfm-text-bold.pfm-text-body_small"),s=r?.textContent?.trim()||`Unknown Item ${t+1}`,n=e.querySelector(".slds-m-bottom_x-small.pfm-text-body_small:not(.pfm-text-bold)");let a=1;if(n){const e=n.textContent?.match(/Quantity:\s*(\d+)/);e&&(a=parseInt(e[1],10))}let i=0,c=0;const o=e.querySelector(".slds-col_bump-left .FrameworkCurrencyField");if(o&&o.textContent){const e=o.textContent.trim();i=parseFloat(e.replace(/[^\d.]/g,""))||0}const m=e.querySelector('[data-name="itemPrice"]');if(m&&m.textContent){const e=m.textContent.match(/Price:\s*\$?(\d+(?:\.\d+)?)/);e&&(c=parseFloat(e[1])||0)}const d=i||c||0;return{index:t+1,name:s,catalog_price:c,actual_price:i,tracking_price:d,quantity:a,discount_amount:c>i?c-i:0,generated_id:this.generateItemId(e,s,d)}}))}catch(e){return[]}}init(){this.setupCheckoutEvents(),this.setupDiscountEvents(),this.setupPurchaseEvents()}}d.selectors={processButton:'button[data-name="processBtn"]',paymentTab:'[data-name="payTypesTablist"] .slds-active a',paymentSelect:'select[name="Select a Payment Type"]',applyDiscount:'[data-name="discountCode"]',cartItems:'.LTEShoppingCart .slds-card__body [role="menuitem"]',orderTotal:'[data-name="dueAtCheckout"] [data-name="totalAmount"] .FrameworkCurrencyField',discountCode:"#discount_code",paymentReceipt:'div[data-aura-class="LTEEventPaymentReceipt"]'},d.config={debounceTime:2e3};class l{constructor(){this.items=[]}static init(){l.getInstance().setupCheckoutButtonListener()}static getInstance(){return l.instance||(l.instance=new l),l.instance}setupCheckoutButtonListener(){document.addEventListener("click",(e=>{const t=e.composedPath&&e.composedPath();if(!t)return;t.find((e=>"LIGHTNING-BUTTON"===e.nodeName&&"Add_Checkout_Button"===e.dataset.elementApiName))&&(this.updateCartItems(),this.fireBeginCheckoutEvent())}),!0)}updateCartItems(){try{const e={cartItems:'.LTEShoppingCart .slds-card__body [role="menuitem"]'},t=Array.from(document.querySelectorAll(e.cartItems));this.items=t.map(((e,t)=>{const r=e.querySelector(".pfm-text-bold.pfm-text-body_small"),s=r?.textContent?.trim()||`Unknown Item ${t+1}`,n=e.querySelector(".slds-m-bottom_x-small.pfm-text-body_small:not(.pfm-text-bold)");let a=1;if(n){const e=n.textContent?.match(/Quantity:\s*(\d+)/);e&&(a=parseInt(e[1],10))}let i=0;const c=['[data-name="itemPrice"] .FrameworkCurrencyField','.pfm-text-body_small[data-name="itemPrice"] span',".FrameworkCurrencyField"];for(const t of c){const r=e.querySelector(t);if(r&&r.textContent){const e=r.textContent.trim();if(e.match(/(\$|USD)?\s*\d+(\.\d+)?/)){i=parseFloat(e.replace(/[^\d.]/g,""));break}}}if(0===i){const t=e.querySelectorAll("*");for(const e of t)if(e.textContent){const t=e.textContent.trim(),r=t.match(/(\$|USD)?\s*(\d+(\.\d+)?)/);if(r&&!t.includes("Quantity")){const e=parseFloat(r[2]);if(e>0){i=e;break}}}}return{id:this.generateItemId(e,s,i),name:s,price:i,quantity:a,added_at:(new Date).toISOString()}}))}catch(e){}}generateItemId(e,t,r){const s=e.getAttribute("data-item-id");if(s)return s;return`${t.toLowerCase().replace(/[^a-z0-9]/g,"_").replace(/_+/g,"_").replace(/^_|_$/g,"")}_${Math.round(100*r)}`}async fireBeginCheckoutEvent(){try{const e=this.items.map((e=>({item_id:e.id,item_name:e.name,price:e.price,quantity:e.quantity}))),t=e.reduce(((e,t)=>e+t.price*t.quantity),0);await r.pushEcommerceEvent("begin_checkout",e,t)}catch(e){}}}const u={autoInit:()=>{try{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{u.init()})):u.init()}catch(e){}},init:()=>{try{s.initializeCart(),a.init(),c.init(),o.init(),d.init(),l.init()}catch(e){}},ProductTracker:s,MembershipTracker:a,JoinTracker:c,DataLayerHelper:r,EventManager:o,UTMTracker:m,StoreTracker:d,CheckoutEventHandler:l};"undefined"!=typeof window&&u.autoInit();const h=u;return t=t.default})()));
//# sourceMappingURL=fonteva-gtm-lib.min.js.map