window.analyzify.initBing = (bingObj, bingProps) => { try { if (!bingProps || !bingObj || !bingProps.id) return; const { id: bing_id, product_id_format } = bingProps; let bingInitialized = false; window.uetq = window.uetq || []; const updateBingConsent = (status, isGranted) => { window.uetq.push('consent', status, { ad_storage: isGranted ? 'granted' : 'denied' }); }; const initializeAndTrackBingPage = () => { if (bingInitialized) return; (function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:bing_id.toString(), enableAutoSpaTracking: false};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq"); window.uetq = window.uetq || []; bingInitialized = true; }; const getIdByFormat = (format, { productObj, variantDetails }) => { const idMap = { 'product_id': () => productObj?.id, 'variant_id': () => variantDetails?.id, 'product_sku': () => variantDetails?.sku }; return (idMap[format] || idMap['product_id'])()?.toString(); }; window.analyzify.bingAddtoCart = (productObj, variantId) => { try { if (!bingProps.events.add_to_cart || !productObj || !variantId) return; const { product = productObj } = productObj.product ? productObj : { product: productObj }; const variantDetails = window.analyzify.getVariantDetails(product?.variants, variantId || productObj.variant?.id); if (!variantDetails) return; const quantity = analyzify.findQuantity() || 1; const price = variantDetails.price || window.analyzify.formatPrice(product?.price, true); window.uetq.push("event", "ecommerce", { event_category: "add_to_cart", revenue_value: price * quantity, currency: window.analyzify?.currency, items: [{ id: getIdByFormat(product_id_format, { productObj: product, variantDetails }), quantity: quantity, price: price, }], }); } catch (e) { console.error('Error in bingAddtoCart:', e); } }; window.analyzify.bingBeginCheckout = (cartObj) => { try { if (!bingProps.events.begin_checkout || !cartObj?.items?.length) return; window.uetq.push("event", "ecommerce", { event_category: "begin_checkout", revenue_value: window.analyzify.formatPrice(cartObj.total_price, true), currency: window.analyzify?.currency, items: cartObj.items.map(item => ({ id: getIdByFormat(product_id_format, { productObj: item, variantDetails: item }), quantity: item?.quantity || 1, price: window.analyzify.formatPrice(item?.price, true) })) }); } catch (e) { console.error('Error in bingBeginCheckout:', e); } }; // Consent Control Logic if (window.analyzify.consent_active) { window.analyzify.consentManager.queueConsentAction((initialConsent) => { const isGranted = initialConsent.ad_storage === 'granted'; updateBingConsent('default', isGranted); if (isGranted) { initializeAndTrackBingPage(); } }); window.analyzify.consentManager.onChange((newConsent) => { const isGranted = newConsent.ad_storage === 'granted'; updateBingConsent('update', isGranted); if (isGranted) { initializeAndTrackBingPage(); } }); } else { initializeAndTrackBingPage(); } } catch (error) { console.error('Error processing initBing:', error); } };