window.Shopify = window.Shopify || {theme: {id: 172276023319, role: 'main' } };
window._template = {
directory: "",
name: "page",
suffix: "podcast.e25-kb3"
};
window._cart_items_count = 0;
if (window.location.pathname == '/pages/my-subscriptions-portal') {
window.location.href = '/apps/customers/portal'
}
Wütende Hühnerhörer – Raycon
Wütende Hühnerhörer – Raycon
@font-face {
font-family: 'satoshi';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Regular.woff2?v=55866631079758551531770244092') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'satoshi';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Medium.woff2?v=163508475008158981711770244092') format('woff2');
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'satoshi';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Bold.woff2?v=26003189210104420591770244092') format('woff2');
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi-Bold';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Bold.woff2?v=26003189210104420591770244092') format('woff2');
font-display: swap;
}
@font-face {
font-family: 'Satoshi-Regular';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Regular.woff2?v=55866631079758551531770244092') format('woff2');
font-display: swap;
}
@font-face {
font-family: 'Satoshi-Medium';
src: url('//rayconglobal.com/cdn/shop/t/551/assets/font-Satoshi-Medium.woff2?v=163508475008158981711770244092') format('woff2');
font-display: swap;
}
/* ── CLS fix: critical header styles ──
These MUST live in so the browser applies them before first paint.
Previously these were in a body style just before the header-wrapper
div, which allowed the header to briefly render at its unstyled height
(67px) before settling to 45px — causing a visible layout shift. */
.header-wrapper[data-fixed-header="true"] {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 1111;
}
.header-wrapper[data-fixed-header="true"] ~ main.main-content {
margin-top: 96px;
}
body {
--header-wrapper-height: 96px;
}
.nav--desktop .header-menu--right {
height: 45px;
overflow: visible;
}
.disclosure__flag {
display: inline-block;
vertical-align: middle;
width: 22px;
height: 22px;
background-size: 36px;
background-position: center;
border-radius: 22px;
}
#FreeShippingBanner {
display: none;
}
localization-form .disclosure .disclosure__flag {
background-color: transparent;
}
.disclosure__button {
font-size: .8rem;
background-color: transparent;
border: none;
}
/* ── Mobile CLS fix ──
The HTML hardcodes class="showDesktop" on header-wrapper, but on
viewports ≤ 940px JS switches to showMobile. We force mobile nav
layout from first paint AND duplicate the critical mobile-nav
positioning rules (normally in theme.css) so that the mobile header
renders at its correct 58 px height before the external stylesheet
loads. Without these, the nav icons sit in normal flow and the
header briefly expands to ~600 px. */
@media screen and (max-width: 940px) {
/* Force mobile nav visible / desktop nav hidden */
.showDesktop .nav--mobile,
.header-wrapper .nav--mobile {
display: block !important;
}
.showDesktop .nav--desktop,
.header-wrapper .nav--desktop {
position: absolute !important;
left: -9999px !important;
}
/* ── Mobile nav internal layout (duplicated from theme.css) ──
These rules ensure absolute positioning of nav icons BEFORE
the external stylesheet loads, preventing a tall-header flash. */
.nav--mobile .mobile-wrapper {
position: relative;
padding: 0 15px;
}
.nav--mobile .header-shop,
.nav--mobile .header-hamburger,
.nav--mobile .header-cart {
transform: translateY(-50%);
position: absolute;
top: 45%;
z-index: 1000;
width: 25px;
height: 25px;
}
.nav--mobile .header-hamburger {
width: 30px;
height: 40px;
margin-top: 5px;
top: 50%;
left: 15px;
text-decoration: none;
}
.nav--mobile .header-cart {
right: 15px;
}
.nav--mobile .header-shop {
right: 65px;
}
.nav--mobile .localization-container {
position: absolute;
top: 25%;
left: 60px;
}
/* ≥ 480px responsive overrides (duplicated from theme.css +
country-switcher-global.liquid to prevent shift on load) */
@media screen and (min-width: 480px) {
.nav--mobile .header-hamburger { left: 30px; }
.nav--mobile .header-cart { right: 30px; }
.nav--mobile .header-shop { right: 80px; }
.nav--mobile .localization-container { left: 80px; }
}
.header-icon-item {
position: relative;
}
.icon-item__text {
transform: translate(-50%, 100%);
display: block;
position: absolute;
right: auto;
bottom: 0;
left: 50%;
margin: 0;
font-size: 0.7rem;
font-weight: 600;
letter-spacing: -0.25px;
line-height: normal;
text-decoration: none;
text-align: center;
}
.header-hamburger .icon-item__text {
position: relative;
transform: translateX(-50%);
bottom: auto;
}
}
(function(){
var strip = function(node) {
if (node.tagName !== 'STYLE') return;
/* Klaviyo:
:root {
/* ================ Product video ================ */
---color_video_bg: #f2f2f2;
/* ================ Color Variables ================ */
/* === RAYCON ===*/
---color-white: #fff;
---color-white-hover: #ddd;
---color-black: #000;
---color-black-hover: #222;
/* === Backgrounds ===*/
---color-bg: #ffffff;
---color-bg-accent: ;
/* === Text colors ===*/
---color-text-dark: #040509;
---color-text: #1f283a;
---color-text-light: #626975;
/* === Bright color ===*/
---color-primary: #3831ff;
---color-primary-hover: #0800e4;
---color-primary-fade: rgba(56, 49, 255, 0.05);
---color-primary-fade-hover: rgba(56, 49, 255, 0.1);
---color-primary-a85: rgba(56, 49, 255, 0.85);---color-primary-opposite: #ffffff;
/* === Secondary/link Color ===*/
---color-secondary: ;
---color-secondary-hover: ;
---color-secondary-fade: ;
---color-secondary-fade-hover: ;---color-secondary-opposite: ;
/* === Shades of grey ===*/
---color-a5: rgba(31, 40, 58, 0.05);
---color-a10: rgba(31, 40, 58, 0.1);
---color-a20: rgba(31, 40, 58, 0.2);
---color-a35: rgba(31, 40, 58, 0.35);
---color-a50: rgba(31, 40, 58, 0.5);
---color-a80: rgba(31, 40, 58, 0.8);
---color-a90: rgba(31, 40, 58, 0.9);
---color-a95: rgba(31, 40, 58, 0.95);
/* ================ Inverted Color Variables ================ */
---inverse-bg: ;
---inverse-bg-accent: ;
/* === Text colors ===*/
---inverse-text-dark: ;
---inverse-text: ;
---inverse-text-light: ;
/* === Bright color ===*/
---inverse-primary: ;
---inverse-primary-hover: ;
---inverse-primary-fade: ;
---inverse-primary-fade-hover: ;---inverse-primary-opposite: ;
/* === Second Color ===*/
---inverse-secondary: ;
---inverse-secondary-hover: ;
---inverse-secondary-fade: ;
---inverse-secondary-fade-hover: ;---inverse-secondary-opposite: ;
/* === Shades of grey ===*/
---inverse-a5: ;
---inverse-a10: ;
---inverse-a20: ;
---inverse-a35: ;
---inverse-a80: ;
---inverse-a90: ;
---inverse-a95: ;
/* === Nav and dropdown link background ===*/
---color-nav: #ffffff;
---color-nav-text: #121619;
---color-nav-border: #eaeaea;
---color-nav-a10: rgba(18, 22, 25, 0.1);
---color-nav-a50: rgba(18, 22, 25, 0.5);
/* === Site Footer ===*/
---color-footer-bg: #121619;
---color-footer-text: #f9f9f9;
---color-footer-a5: rgba(249, 249, 249, 0.05);
---color-footer-a15: rgba(249, 249, 249, 0.15);
---color-footer-a90: rgba(249, 249, 249, 0.9);
/* === Products ===*/
---color-bg-product: #f9f9f9;
---product-grid-aspect-ratio: 0%;
/* === Product badges ===*/
---color-badge: ;
---color-badge-text: ;
/* === disabled form colors ===*/
---color-disabled-bg: #e9eaeb;
---color-disabled-text: #b1b4ba;
---inverse-disabled-bg: ;
---inverse-disabled-text: ;
/* === Button Radius === */
---button-radius: px;
/* ================ Typography ================ */
---font-stack-body: "satoshi", sans-serif;
---font-style-body: normal;
---font-weight-body: 400;
---font-weight-body-bold: 700;
---font-adjust-body: 1.0;
---font-stack-heading: "satoshi", sans-serif;
---font-style-heading: normal;
---font-weight-heading: 700;
---font-weight-heading-bold: 700;
---font-adjust-heading: 1.0;
---font-heading-space: initial;
---font-heading-caps: initial;
---font-stack-accent: "satoshi", sans-serif;
---font-style-accent: normal;
---font-weight-accent: 400;
---font-weight-accent-bold: 700;
---font-adjust-accent: 1.2;
---ico-select: url('//rayconglobal.com/cdn/shop/t/551/assets/ico-select.svg?v=35184198106449401781770244092');
---url-zoom: url('//rayconglobal.com/cdn/shop/t/551/assets/cursor-zoom.svg?v=109715');
---url-zoom-2x: url('//rayconglobal.com/cdn/shop/t/551/assets/cursor-zoom-2x.svg?v=109715');
---swatch-sold-out: url('//rayconglobal.com/cdn/shop/t/551/assets/swatch-soldout.png?v=109715');
---loader-gif: url('//rayconglobal.com/cdn/shop/t/551/assets/loader_300x.gif?v=21251715395396625211770244092');
---icon-check: url('//rayconglobal.com/cdn/shop/t/551/assets/icon-check.png?v=109879918666229651711770244092');
---icon-cross: url('//rayconglobal.com/cdn/shop/t/551/assets/icon-cross.png?v=41933998898842519211770244092');
}
var theme = {
strings: {
addToCart: "Add to Cart",
soldOut: "Sold Out",
unavailable: "Unavailable",
join: "Join Now"
},
moneyFormat: "${{amount}}",
lp_discount: {
message: ""
}
}
window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');
{"shopId":24040041,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/24040041","merchantName":"Raycon ","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Raycon ","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}
{"accessToken":"faf77e3b1ed935892c5288b63013708f","betas":["rich-media-storefront-analytics"],"domain":"rayconglobal.com","predictiveSearch":true,"shopId":24040041,"locale":"en"}
var Shopify = Shopify || {};
Shopify.shop = "raycon.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"PROD | 020426 | Winter Olympics","id":172276023319,"schema_name":"Raycon","schema_version":"1.22","theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "rayconglobal.com/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);
!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);
window.ShopifyPay = window.ShopifyPay || {};
window.ShopifyPay.apiHost = "shop.app\/pay";
window.ShopifyPay.redirectState = null;
{"pageType":"page"}
await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/client.init-shop-cart-sync_BLuSqYWl.en.esm.js");
await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/chunk.common_DplD2_3Q.en.esm.js");
await import("//rayconglobal.com/cdn/shopifycloud/shop-js/modules/v2/chunk.modal_BxEbAqG6.en.esm.js");
window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
window.Shopify = window.Shopify || {};
if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
window.Shopify.featureAssets['shop-js'] = {"shop-cart-sync":["modules/v2/client.shop-cart-sync_DyWd-nW0.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-login-button":["modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-fed-cm":["modules/v2/client.init-fed-cm_DTevxAm9.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-cash-offers":["modules/v2/client.shop-cash-offers_C8YC6m4X.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/client.init-shop-email-lookup-coordinator_GbpdeWmj.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-button":["modules/v2/client.shop-button_BK9mqnWd.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-toast-manager":["modules/v2/client.shop-toast-manager_ChgSjnfR.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-windoid":["modules/v2/client.init-windoid_Bcjo1TvM.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"checkout-modal":["modules/v2/client.checkout-modal_DtFwzpsd.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"pay-button":["modules/v2/client.pay-button_CbTi9e6h.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/client.init-customer-accounts-sign-up_CkXfFFBJ.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-cart-sync":["modules/v2/client.init-shop-cart-sync_BLuSqYWl.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"avatar":["modules/v2/client.avatar_BTnouDA3.en.esm.js"],"init-customer-accounts":["modules/v2/client.init-customer-accounts_CItT2Bi5.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-follow-button":["modules/v2/client.shop-follow-button_N9VQxGYc.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/client.init-shop-for-new-customer-accounts_BERy6bBc.en.esm.js","modules/v2/client.shop-login-button_DmUq1QfF.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"shop-login":["modules/v2/client.shop-login_C1PpjQAV.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"lead-capture":["modules/v2/client.lead-capture_ym2s8Rq7.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"],"payment-terms":["modules/v2/client.payment-terms_DA8oAx9D.en.esm.js","modules/v2/chunk.common_DplD2_3Q.en.esm.js","modules/v2/chunk.modal_BxEbAqG6.en.esm.js"]};
(function() {
var isLoaded = false;
function asyncLoad() {
if (isLoaded) return;
isLoaded = true;
var urls = ["https:\/\/services.nofraud.com\/js\/device.js?shop=raycon.myshopify.com","https:\/\/api.joinclyde.com\/scripts\/shopify-storefront.min.js?shop=raycon.myshopify.com","https:\/\/cdn1.stamped.io\/files\/widget.min.js?shop=raycon.myshopify.com","https:\/\/cdn.weglot.com\/weglot_script_tag.js?shop=raycon.myshopify.com","https:\/\/easygdpr.b-cdn.net\/v\/1553540745\/gdpr.min.js?shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/reviews\/v1\/sdk.js?connection_id=b3b8571a86b34043bee2063f0cfd00e7\u0026mapped_org_id=5d6f70e26cc4422e7f895a9db17fa18a_v1\u0026oid=0ba64f35ba754e5090e6a4ec13ac1f2f\u0026shop=raycon.myshopify.com","https:\/\/crossborder-integration.global-e.com\/resources\/js\/app?shop=raycon.myshopify.com","\/\/cdn.shopify.com\/proxy\/0c87034ce3e3e34549ac504cab3a380dc5bd2f38c80e4a8446fdd14d9bf434e5\/web.global-e.com\/merchant\/storefrontattributes?merchantid=1720\u0026shop=raycon.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA","https:\/\/form-assets.mailchimp.com\/snippet\/account\/219133282?shop=raycon.myshopify.com","https:\/\/chimpstatic.com\/mcjs-connected\/js\/users\/5320b26506c4572373618b4a5\/5c76c71102816fea29c3dc8d1.js?shop=raycon.myshopify.com","https:\/\/cdn.richpanel.com\/js\/richpanel_shopify_script.js?appClientId=raycon9292\u0026tenantId=raycon929\u0026shop=raycon.myshopify.com\u0026shop=raycon.myshopify.com","https:\/\/cdn.corso.com\/js\/corso-checkout-plus.js?shop=raycon.myshopify.com\u0026sfToken=f583dc915f577dae1ff8ab2707a76da0\u0026shop=raycon.myshopify.com","https:\/\/sdk.postscript.io\/sdk-script-loader.bundle.js?shopId=3994\u0026shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/returns\/main.js?shop=raycon.myshopify.com","https:\/\/storm.spicegems.org\/0\/js\/scripttags\/raycon\/country_redirect_fe08cec09f17a8d7844e50b3fb7f530a.min.js?v=51\u0026shop=raycon.myshopify.com","https:\/\/widgets.automizely.com\/loyalty\/v1\/main.js?module=common\u0026shop=raycon.myshopify.com","https:\/\/s3.eu-west-1.amazonaws.com\/production-klarna-il-shopify-osm\/d3bc5d6366701989e2db5a93793900883f2d31a6\/raycon.myshopify.com-1770739884002.js?shop=raycon.myshopify.com"];
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = urls[i];
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
};
if(window.attachEvent) {
window.attachEvent('onload', asyncLoad);
} else {
window.addEventListener('load', asyncLoad, false);
}
})();
var __st={"a":24040041,"offset":-18000,"reqid":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369","pageurl":"rayconglobal.com\/pages\/tac?logged_in_customer_id=","s":"pages-47354675223","u":"9c739ab5b091","p":"page","rtyp":"page","rid":47354675223};
window.ShopifyPaypalV4VisibilityTracking = true;
!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();
var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://rayconglobal.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
#shopify-buyer-consent {
margin-top: 1em;
display: inline-block;
width: 100%;
}
#shopify-buyer-consent.hidden {
display: none;
}
#shopify-subscription-policy-button {
background: none;
border: none;
padding: 0;
text-decoration: underline;
font-size: inherit;
cursor: pointer;
}
#shopify-subscription-policy-button::before {
box-shadow: none;
}
window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');
var loox_global_hash = '1572877700701';.loox-reviews-default { max-width: 1200px; margin: 0 auto; }
var _talkableq = _talkableq || [];
_talkableq.push(['authenticate_customer', {"email":"","first_name":"","last_name":"","customer_id":""}]);
(function() {
var s = document.createElement('script');
s.src = '//cdn.weglot.com/weglot.min.js';
s.onload = function() {
Weglot.initialize({
api_key:"wg_0ccaa61dac7b3428e3ebb4d87c10a7101",
switchers: [
{
button_style: {
full_name: true,
with_name: true,
is_dropdown: true,
with_flags: true,
flag_type: "circle",
invert_flags: false
},
location: {
target: ".footer__block--payment_types",
sibling: null
}
}
]
});
};
document.head.appendChild(s);
})();
/**
* Sets the Shopify checkout language, resistant to Weglot and cart-drawer refresh overrides.
*
* How it works:
* - Intercepts form.submit() and the submit event on the cart form
* - Rewrites the locale parameter at the moment of submission, AFTER Weglot
* and cart-main.refresh() have done their DOM replacements
* - Also sets cart attributes for order/invoice tagging
*
* @param {string} locale - Shopify BCP-47 locale code: 'nb','fr','de','es','nl','it','sv','da'
*/
/*
//(function () {
var _locale = null;
var _nativeSubmit = HTMLFormElement.prototype.submit;
function fixLocale(form) {
if (!_locale || _locale === 'en') return;
var action = form.getAttribute('action') || '/cart';
if (action.includes('/cart') && !action.includes('/cart/add')) {
var base = action.split('?')[0];
var params = new URLSearchParams(action.split('?')[1] || '');
params.set('locale', _locale);
form.setAttribute('action', base + '?' + params.toString());
}
}
// Intercept programmatic form.submit() (used by Corso / shipping protection)
HTMLFormElement.prototype.submit = function () {
if (this.id === 'cart') fixLocale(this);
return _nativeSubmit.call(this);
};
// Intercept submit event in capture phase (used by regular checkout button)
document.addEventListener('submit', function (e) {
if (e.target.id === 'cart') fixLocale(e.target);
}, true);
// Public API
window.setCheckoutLanguage = function (locale) {
_locale = locale;
// Also tag the order/invoice
fetch('/cart/update.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
attributes: { lang: locale, 'Invoice Language': locale }
})
});
};
//})();
// Usage:
// setCheckoutLanguage('nb'); // Norwegian
// setCheckoutLanguage('fr'); // French
// setCheckoutLanguage('de'); // German
// setCheckoutLanguage('en'); // Reset to English
*/
var languageAutoSelect = function() {
var visitorCountry = 'us';
if (typeof Shopify.country != 'undefined') {
visitorCountry = Shopify.country.toLowerCase();
}
const targetLanguages = ['fr', 'es', 'nl', 'de', 'it', 'yue', 'da', 'sv', 'no'];
var countryToLang = {
"fr": "fr",
"es": "es",
"Xnl": "Xnl",
"de": "de",
"it": "it",
"hk": "yue",
"Xdk": "Xda",
"Xse": "Xsv",
"Xno": "Xno"
};
var targetLang = countryToLang[visitorCountry] || 'en';
var currentWeglotLang = Weglot.getCurrentLang();
console.log('Weglot languageAutoSelect run. Will try switching to: ', targetLang);
// Cantonese target pages
const validPathsCantonese = [
"/pages/kayanopen",
"/pages/kungsumopen",
"/pages/raycon-essential-open-earbuds-adr4-compact",
"/pages/yanyanopen",
"/pages/pumpkinjennopen",
"/pages/tinawongopen"
];
// Check if the current path is one of the specific Cantonese landing pages
var pathnameLowerCase = window.location.pathname.toLowerCase();
const isCantonesePage = validPathsCantonese.includes(pathnameLowerCase);
// Translate a certain page if the referrer is a certain page
var referrerLowerCase = document.referrer.toLowerCase();
if (referrerLowerCase) {
const refUrl = new URL(referrerLowerCase);
var refPath = refUrl.pathname;
}
const isComingFromCantonesePage = validPathsCantonese.includes(refPath);
//console.log('isComingFromCantonesePage: ', isComingFromCantonesePage);
// Cantonese target PDPs
const validPDPsCantonese = [
"/products/essential-open-earbuds"
];
const isCantonesePDP = validPathsCantonese.includes(refPath);
//console.log('isCantonesePDP:', isCantonesePDP);
if (targetLang === 'yue' && isCantonesePage) {
// Only switch to Cantonese if it's a valid page AND the country is HK
Weglot.switchTo('yue');
//setCheckoutLanguage('zh-hant');
} else if (targetLang === 'yue' && isComingFromCantonesePage && isCantonesePDP) {
Weglot.switchTo('yue');
//setCheckoutLanguage('zh-hant');
} else if (targetLanguages.includes(targetLang) && targetLang !== 'yue') {
// Switch to other target languages (fr, es, it, etc.) normally
Weglot.switchTo(targetLang);
} else {
// Default to English if it's a Cantonese page but not a HK visitor,
// or if the language isn't supported
Weglot.switchTo('en');
}
/*
if (visitorCountry == 'fr') {
//$(`.weglot-container [data-l="${visitorCountry}"]`).click();
Weglot.switchTo('fr');
}
*/
}
//Weglot.on("initialized", languageAutoSelect);
//Weglot.on("switchersReady", languageAutoSelect);
$(document).ready(function() {
setTimeout(function() {
languageAutoSelect();
}, 2200);
});
try {
window.EasyGdprSettings = "{\"cookie_banner\":false,\"cookie_banner_cookiename\":\"\",\"cookie_banner_settings\":{},\"current_theme\":\"pipeline\",\"custom_button_position\":\"\",\"eg_display\":[\"footer\",\"login\",\"account\"],\"enabled\":false,\"texts\":{}}";
} catch (error) {}
body :not(#\ ):not(#\ )[data-locale="show-only-us-boxing"],
body :not(#\ ):not(#\ )[data-locale="show-only-cw-boxing"] {
display: none;
}
document.addEventListener('DOMContentLoaded', function() {
var customerCountry = Shopify.country;
customerCountry = customerCountry || 'US';
var anyBoxingCampaign = false;
/*
//boxing day updates
var isCustomerCountryBoxing = false;
var boxingCountries = ['CA', 'UK', 'AU', 'IE', 'NZ', 'GB'];
isCustomerCountryBoxing = boxingCountries.includes(customerCountry);
var comingFromUSBoxingCampaign = false;
comingFromUSBoxingCampaign = window.location.href.toLowerCase().includes('box5');
if (comingFromUSBoxingCampaign) {
localStorage.setItem("cameFromUSBoxingCampaign", true);
}
var cameFromUSBoxingCampaign = localStorage.getItem("cameFromUSBoxingCampaign");
// example https://rayconglobal.com/discount/box5?utm_source=facebook&utm_medium=cpc&utm_campaign=usbox5_sale
var anyBoxingCampaign = false;
if ((comingFromUSBoxingCampaign || cameFromUSBoxingCampaign) && customerCountry == 'US') {
anyBoxingCampaign = true;
document.querySelectorAll('[data-locale]').forEach(el => {
el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => {
el.classList.remove('hide');
el.classList.add('show');
});
try {
document.querySelector('.info-bar__message > div:nth-child(1) > p:nth-child(1) > a:nth-child(1) > strong:nth-child(1)').innerText = "Boxing Day! Save up to 20% Code: BOX5";
} catch (e) {
//
}
} else if (isCustomerCountryBoxing) {
anyBoxingCampaign = true;
document.querySelectorAll('[data-locale]').forEach(el => {
el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => {
el.classList.remove('hide');
el.classList.add('show');
});
try {
document.querySelector('.info-bar__message > div:nth-child(1) > p:nth-child(1) > a:nth-child(1) > strong:nth-child(1)').innerText = "Boxing Day! Save up to 25% Code: BOX10";
} catch (e) {
//
}
}
*/
if (customerCountry !== 'US') {
/*
if (!anyBoxingCampaign) {
document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => {
el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => {
el.classList.remove('show');
el.classList.add('hide');
});
}
*/
document.querySelectorAll('.only-us').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="only-us"]').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('li.grandparent:nth-child(6)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('li.mobile-menu__item:nth-child(8)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('li.mobile-menu__item:nth-child(10)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('div.featured-grid__item:nth-child(7)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
// UK Changes
if (customerCountry == 'GB') {
document.querySelectorAll('li.grandparent:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(1)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
/*
//B42 Bone Conduction Headphones
document.querySelectorAll('li.grandparent:nth-child(4) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(3)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
*/
document.querySelectorAll('li.grandparent:nth-child(5) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(2)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('li.grandparent:nth-child(5) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > ul:nth-child(2) > li:nth-child(3)').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('li.mobile-menu__item[data-item="chargers"]').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
}
document.querySelectorAll('.only-non-us').forEach(el => {
//el.style.display = 'none';
el.classList.remove('hide');
//el.classList.add('show');
});
document.querySelectorAll('[data-locale="only-non-us"]').forEach(el => {
//el.style.display = 'none';
el.classList.remove('hide');
//el.classList.add('show');
});
} else if (customerCountry == 'US') {
if (!anyBoxingCampaign) {
document.querySelectorAll('[data-locale="show-only-us-boxing"]').forEach(el => {
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="show-only-cw-boxing"]').forEach(el => {
//el.classList.remove('show');
el.classList.add('hide');
});
}
document.querySelectorAll('.only-us').forEach(el => {
//el.style.display = 'block';
el.classList.remove('hide');
//el.classList.add('show');
});
document.querySelectorAll('[data-locale="only-us"]').forEach(el => {
//el.style.display = 'block';
el.classList.remove('hide');
//el.classList.add('show');
});
document.querySelectorAll('.only-non-us').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
document.querySelectorAll('[data-locale="only-non-us"]').forEach(el => {
//el.style.display = 'none';
//el.classList.remove('show');
el.classList.add('hide');
});
}
});
function checkWindowExtendABFlag() {
var attempts = 0;
var maxAttempts = 10;
var interval = 100;
var check = setInterval(function() {
if (typeof window._extend !== 'undefined') {
console.log('window._extend found, for Config:', window._extend);
clearInterval(check);
// Only load the SDK scripts when the AB flag is actually set
var sdk1 = document.createElement('script');
sdk1.src = 'https://sdk.helloextend.com/extend-sdk-client/v1/extend-sdk-client.min.js';
sdk1.defer = true;
sdk1.onload = function() {
var sdk2 = document.createElement('script');
sdk2.src = 'https://sdk.helloextend.com/extend-sdk-client-shopify-addon/v1/extend-sdk-client-shopify-addon.min.js';
sdk2.defer = true;
sdk2.onload = function() {
window.dispatchEvent(new Event('ExtendABFlagSet'));
};
document.head.appendChild(sdk2);
};
document.head.appendChild(sdk1);
} else {
attempts++;
if (attempts >= maxAttempts) {
console.log('Gave up after ' + attempts + ' attempts looking for Extend AB Test Flag. SDK not loaded.');
clearInterval(check);
}
}
}, interval);
}
window.addEventListener('DOMContentLoaded', function () {
checkWindowExtendABFlag();
});
window.addEventListener('ExtendABFlagSet', function () {
// Set variable for A/B testing Extend
window.extendShow = false;
window.extendShowAttr = false;
window.extendShowpdpOffer = false;
window.extendShowpdpModalOffer = false;
window.extendShowsidecartOffer = false;
// Read the 'data-extend-show' attribute from the body tag
// const extendShowAttr = document.body.getAttribute('data-extend-show');
try {
extendShowAttr = window._extend;
extendShowpdpOffer = window._extendShowpdpOffer;
extendShowpdpModalOffer = window._extendShowpdpModalOffer;
extendShowsidecartOffer = window._extendShowsidecartOffer;
console.log('When loading Extend, 1- window._extend, 2- window._extendShowpdpOffer, 3- window._extendShowpdpModalOffer and 4- window._extendShowsidecartOffer, are, accordingly: ', '1-', window._extend, '2-', window._extendShowpdpOffer, '3-', window._extendShowpdpModalOffer, '4-', window._extendShowsidecartOffer);
} catch(e) {
console.log('Error extendShowAttr: ', e);
}
// Update if the attribute is present and exactly equal to "false"
if (extendShowAttr === true) {
window.extendShow = true;
}
// Set store ID
const storeId = '296cc793-e27f-42ec-b54e-2c73c1cf9dd5';
// Set environment (production, demo, or development)
const env = 'production';
window.Extend.config({ storeId: storeId, environment: env });
// Only sets window variables if Extend and ExtendShopify is defined
if (window.Extend && window.ExtendShopify && window.extendShow) {
// Contains window variables used in integration
window.Extend.integration = {};
// Configurables - Start
// Set currency required to display offers (USD or CAD)
window.Extend.integration.currency = 'USD';
// PDP Visible Offer
window.Extend.integration.pdpOffer = window.extendShowpdpOffer;
// PDP Modal Offer
// Request from Raycon team 10/06/2025 to turn off Modal
window.Extend.integration.pdpModalOffer = false;
// PDP Offer Properties
window.Extend.integration.offerProperties = {};
// Cart Offers
window.Extend.integration.cartOffer = true;
// Sidecart Offers
window.Extend.integration.sidecartOffer = window.extendShowsidecartOffer;
// Cart Balancing
window.Extend.integration.cartBalancing = true;
// Aftermarket Modal
window.Extend.integration.aftermarketModal = window.extendShowpdpModalOffer;
// ATC Modal Offer
window.Extend.integration.atcOffer = window.extendShowpdpModalOffer;
// Quickview visible offer
window.Extend.integration.quickviewOffer = window.extendShowpdpModalOffer;
// Quickview modal offer
window.Extend.integration.quickviewModalOffer = window.extendShowpdpModalOffer;
// Cart SP
window.Extend.integration.cartSP = false;
// Configurables - End
// Aftermarket Code
if (Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && Extend.integration.aftermarketModal) {
try {
// Get params from URL
const params = (new URL(document.location)).searchParams;
// Check if leadToken or leadtoken is in the URL
let leadToken = params.get('leadToken')
? params.get('leadToken')
: params.get('leadtoken');
if (leadToken) {
Extend.aftermarketModal.open({
leadToken: leadToken,
onClose: function (plan, product, quantity) {
if (plan && product) {
ExtendShopify.addPlanToCart({
plan: plan,
product: product,
leadToken: leadToken,
quantity: quantity || 1
}, function () {
location = '/cart'
})
}
}
});
}
} catch (error) {
console.error("EXTEND: " + error);
}
}
}
}, { once: true });
window.addEventListener('ExtendABFlagSet', function () {
// Checks if Extend lives in the window and the active currency is USD before showing Extend offers
if (window.extendShow && Extend && ExtendShopify && Shopify && Shopify.currency && Shopify.currency.active === Extend.integration.currency && meta.page.pageType == 'product') {
/************************/
/* Initial Variables */
/************************/
const productForm = document.querySelector('form[action="/cart/add"]'); // Change this to the product form element
let addToCartButton = productForm.querySelector('.add-to-cart-wrapper button[name="add"]'); // Change this to the Add-To-Cart element
const dispatchSideCart = false; // Set to true if a sidecart opens after adding to cart via pdp
const productCategory = (meta && meta.product) ? meta.product.type : null; // Grabs product category from meta object, works on most themes
if (productCategory === "Bundles") return;
// Handles creating and prepending Extend offer div
const extendOffer = document.createElement('div');
if (!Extend.integration.pdpOffer) extendOffer.style.display = 'none';
extendOffer.className = 'extend-offer';
// Add Extend either before or after the Add to Cart CTA, based on a flag on `window`
let loadAfterPDPATCCTA = false;
loadAfterPDPATCCTA = window._ExtendloadAfterPDPATCCTA
if (loadAfterPDPATCCTA) {
// Add after
productForm.insertBefore(extendOffer, productForm.querySelector('.product__action').nextSibling);
} else {
// Add before
productForm.insertBefore(extendOffer, productForm.querySelector('.product__action'));
}
/************************/
/* initProductOffer */
/************************/
// Initializes product offers and handles ATC button functionality for the main PDP ATC
function initProductOffer() {
try {
// Fail safes
if (!productForm || !addToCartButton || !extendOffer) {
throw new Error("Exiting - missing productForm, addToCartButton, or extendOffer")
}
// Disables ATC if product is Extend
if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true;
// Grabs the variantId from the productForm and renders the initial offers for it
let variantId = productForm.id.value;
// Grabs the product price from the metadata, works on most themes
let productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null;
// Saves the offer properties to an easily accessible window object that is initialized in the config
Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice}
// Renders Extend offer
Extend.buttons.render(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory });
// Listens for changes to the productForm and sets the activeProduct for extend via variantID
productForm.addEventListener('change', function () {
variantId = productForm.id.value
if (variantId) {
productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null;
Extend.setActiveProduct(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory });
if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true;
Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice}
}
});
document.addEventListener('click', function(e) {
if (e.target.closest('.swatch__item')) {
variantId = productForm.id.value
if (variantId) {
productPrice = (meta && meta.product && meta.product.variants) ? parseInt(meta.product.variants.filter(variant => variant.id.toString() === variantId.toString())[0].price) : null;
Extend.setActiveProduct(extendOffer, { referenceId: variantId, price: productPrice, category: productCategory });
if (meta && meta.product && meta.product.vendor === 'Extend') addToCartButton.disabled = true;
Extend.integration.offerProperties = {variant: variantId, category: productCategory, price: productPrice}
}
}
})
// click simulation handling add to cart
function handleAddToCart(e) {
e.preventDefault();
e.stopImmediatePropagation();
const quantityEl = productForm.querySelector('[name="quantity"]');
const quantity = quantityEl && quantityEl.value ? quantityEl.value : 1;
ExtendShopify.handleAddToCart(extendOffer, {
quantity: quantity,
modal: window.Extend.integration.pdpModalOffer,
done: function () {
// remove default click listener
addToCartButton.removeEventListener('click', handleAddToCart, true);
// click atc button
addToCartButton = productForm.querySelector('.add-to-cart-wrapper button[name="add"]'); // Change this to the Add-To-Cart element
window.setTimeout(function () {
addToCartButton.click();
// add default click listener back
addToCartButton.addEventListener('click', handleAddToCart, true);
// If variable set to true, dispatches Extend side cart integration to run after adding to cart via pdp
if (dispatchSideCart) window.setTimeout(function () { window.dispatchEvent(new Event('refreshAjaxSideCart')) }, 1000)
}, 500)
}
});
}
// run handleCaddtoCart when we click ATC, capturing event
//if (window.Extend.integration.pdpModalOffer) {
addToCartButton.addEventListener('click', handleAddToCart, true);
//}
} catch (error) {
return
}
}
// Initial product offer render
if (!Extend.buttons.instance(extendOffer)) {
initProductOffer();
}
}
}, { once: true });
.extend-offer {
margin: 0 !important;
}
@media screen and (min-width: 986px) {
.extend-offer iframe {
height: auto !important;
}
}
window.addEventListener('ExtendABFlagSet', function () {
// Only run ajax integration if Extend and ExtendShopify is defined, and the currency is set to USD
if (!window.extendShow || !Extend || !ExtendShopify || !Shopify || !Shopify.currency || Shopify.currency.active !== Extend.integration.currency) {
return;
}
// Checks url if page is main cart
const isMainCart = location.pathname.includes('/cart');
if (!isMainCart && !window.Extend.integration.sidecartOffer) return;
// store value to know if script initialized already
let init = false;
/*****************************************/
/* Global Variables - THEME SPECIFIC */
/*****************************************/
let cartRowItem, cartRowItemTitle, cartRowItemImage, cartRowItemQuantity, warrantyContainer, warrantyOriginalMeta, metadataContainer;
if (isMainCart) {
// Main cart variables
cartRowItem = '.cart__body .cart__item'; // This is the container element for each item in the cart
cartRowItemImage = '.cart__image'; // This is the product image or image anchor element
cartRowItemTitle = '.item__title'; // This is the title anchor element for the product
cartRowItemQuantity = '.quantity__input'; // This is the input element containing the product quantity
warrantyOriginalMeta = '.item__variant-title'; // Each warranty metadata item we want to remove.
warrantyContainer = '.cart__item__info'; // This is the container where the offer will be appended
metadataContainer = '.cart__item__info'; // This is where warranty metadata will be appended (Product and Term)
} else {
// Side cart variables
cartRowItem = 'cart-drawer cart-body cart-item'; // This is the container element for each item in the cart
cartRowItemImage = '.cart-item__image-wrap a'; // This is the product image or image anchor element
cartRowItemTitle = '.cart-item__title a'; // This is the title anchor element for the product
cartRowItemQuantity = '.quantity__input'; // This is the input element containing the product quantity
warrantyOriginalMeta = '.cart-item__properties li'; // Each warranty metadata item we want to remove.
warrantyContainer = '.cart-item__info'; // This is the container where the offer will be appended
metadataContainer = '.cart-item__properties'; // This is where warranty metadata will be appended (Product and Term)
}
// Add quantity wrapper selector to disable use of quantity selector on Extend items, ignored if empty string
const quantityWrapper = isMainCart ? '.cart-quantity' : '.cart-quantity';
const offerClass = !isMainCart ? 'extend-side-cart-offer' : 'extend-cart-offer'; // This is the class that will be assigned to each Extend offer
const cartEvent = !isMainCart ? 'refreshAjaxSideCart' : 'refreshAjaxCart';
const regEx = /\d+$/;
let localCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}; // Shopify Cart Object on initial load
// Fail safe for cart
if (!localCart) {
console.error("EXTEND: Exiting - localCart unavailable")
return false;
}
/**************************************/
/* refreshCart - THEME SPECIFIC */
/**************************************/
// Refresh the cart (hard refresh by default)
function refreshCart(cart) {
if (isMainCart) {
// Main cart specific refresh
location.reload();
} else {
localStorage.setItem("extendRefresh", "true")
window.setTimeout(function() {
location.reload();
}, 200)
}
}
function renderCartOffer(el, variantId, quantity, index) {
// Grabs the product category and price from the current item metadata
let productCategory = localCart.items[index].product_type;
let productPrice = localCart.items[index].price;
if (ExtendShopify.warrantyAlreadyInCart(parseInt(variantId), localCart.items) || ExtendShopify.warrantyAlreadyInCart(variantId.toString(), localCart.items)) {
return;
} else {
// Return if this is a cart snippet and cart offers are disabled
if (!Extend.integration.cartOffer) return;
// Return if this is a sidecart snippet and sidecart offers are disabled
if (!Extend.integration.sidecartOffer) return;
if (productCategory === "Bundles") return;
// Render all other buttons
Extend.buttons.renderSimpleOffer(el, {
referenceId: variantId,
price: productPrice,
category: productCategory,
onAddToCart: function (options) {
ExtendShopify.addPlanToCart({
plan: options.plan,
product: options.product,
quantity: quantity
}, function (err) {
// An error occurred
if (err) {
throw new Error({ "Exiting - Error in onAddToCart": err });
} else {
refreshCart();
}
});
}
});
}
}
/***********************/
/* createElement */
/***********************/
// createElement(product) - Takes in the product element, and creates the Extend offer element + appends the offer
function createElement(product, index) {
// Grab URL from title anchor href
let url = product.querySelector(cartRowItemTitle).href;
// Grabs variant ID from URL if available, otherwise from localCart
let variantId = (url && url.match(regEx)) ? url.match(regEx)[0] : localCart.items[index].id;
// Select quantity value
let quantity = product.querySelector(cartRowItemQuantity) ? parseInt(product.querySelector(cartRowItemQuantity).value) : 1;
if (!variantId || quantity.length > 0) {
throw new Error("Exiting - Error with variantId {0} or quantity {1}", variantId, quantity);
}
// Removes existing offer elements before creating new ones
let extendOffer = product.querySelector('.' + offerClass);
if (extendOffer) {
if (extendOffer.dataset.extendVariant !== variantId || extendOffer.dataset.extendQuantity !== quantity) {
extendOffer.remove();
} else {
return;
}
}
// Parent container to append ajax offer
let container = product.querySelector(warrantyContainer);
// Fail safes
if (!variantId || !quantity || !container) {
throw new Error("Exiting - variant, quantity or container unavailable");
}
// Create new element & set class, data-extend-variant, and data-extend-quantity attributes
let newExtendOffer = document.createElement('div');
newExtendOffer.className = offerClass;
newExtendOffer.setAttribute('data-extend-variant', variantId);
newExtendOffer.setAttribute('data-extend-quantity', quantity);
// Append the offer to the container element (THEME SPECIFIC)
container.append(newExtendOffer);
renderCartOffer(newExtendOffer, variantId, quantity, index);
}
/************************/
/* Handle Styling */
/************************/
// Finds all cartRowItems and styles only Extend warranties
function handleStyling() {
document.querySelectorAll(cartRowItem).forEach(function (el, index) {
try {
// Grab the title of the current item
let title = el.querySelector(cartRowItemTitle);
// Title fail safe
if (!title) {
throw new Error("Exiting - title unavailable");
}
// If it's a warranty set isExtend to true and remove links
if (title.innerText.toLowerCase().indexOf('extend protection') > -1) { // Grab the image of the current item and fail safe
// Select and remove pointerEvents from warranty title
title.style.pointerEvents = 'none';
let image = el.querySelector(cartRowItemImage);
if (!image) {
throw new Error("Exiting - image unavailable");
}
// Select and remove pointerEvents from warranty image
image.style.pointerEvents = 'none';
// Remove sidecart image clicking for Extend products
if (!isMainCart && el.querySelector(cartRowItemImage)) {
el.querySelectorAll(cartRowItemImage).forEach(function(element) {element.style.pointerEvents = 'none';})
}
/**************************************/
/* THEME SPECIFIC STYLING START */
/**************************************/
if (isMainCart) {
// Removes loose text in element
Array.from(el.querySelector('.cart__item__info').childNodes).forEach(node => {
if (node.nodeType === Node.TEXT_NODE && node.textContent.trim()) {
node.remove();
}
});
} else if (el.querySelector('.cart-item__variant-title')) {
el.querySelector('.cart-item__variant-title').remove()
}
// Removes old metadata
if (el.querySelector(warrantyOriginalMeta)) {
el.querySelectorAll(warrantyOriginalMeta).forEach(function (each) {
each.remove();
})
}
if (quantityWrapper && quantityWrapper != '' && el.querySelector(quantityWrapper)) {
el.querySelectorAll(quantityWrapper).forEach((each) => {
each.style.opacity = '45%';
each.style.pointerEvents = 'none';
})
}
// Selects where to append warranty metadata
let contentContainer = el.querySelector(metadataContainer)
let warrantyProductData;
let warrantyTermData;
contentContainer.querySelectorAll('br').forEach(function(element) {element.remove()});
if (!localCart.items[index]) return;
if (localCart.items[index].options_with_values && localCart.items[index].options_with_values[1]) { // Finds the ref id string in the product info string and replaces with an empty string
let regexReplace = localCart.items[index].options_with_values[0].value.match(/\-\d{5,}/g);
warrantyProductData = localCart.items[index].options_with_values[0].value.replace(regexReplace, '');
warrantyTermData = localCart.items[index].options_with_values[1].value;
} else {
warrantyProductData = localCart.items[index].properties.Product;
warrantyTermData = localCart.items[index].properties.Term;
}
// For category offers, fetch title by filtering through cart for warranted product refId
if (warrantyProductData === "Covered Product") {
const coveredProdId = localCart.items[index].properties['_Extend.ProductId'];
const coveredProdTitle = localCart.items.filter((item) => item.id.toString() == coveredProdId)[0].title;
warrantyProductData = coveredProdTitle;
}
// Appends Product and Term metadata
if (el.querySelector(metadataContainer)) {
let warrantyProductName = document.createElement('p');
warrantyProductName.className = 'extend-warranty-info extend-warranty-info-product';
warrantyProductName.innerHTML = 'Product: ' + warrantyProductData;
warrantyProductName.setAttribute('data-cy', 'warranty-description-product');
let warrantyProductTerm = document.createElement('p')
warrantyProductTerm.className = 'extend-warranty-info extend-warranty-info-term';
warrantyProductTerm.innerHTML = 'Term: ' + warrantyTermData;
warrantyProductTerm.setAttribute('data-cy', 'warranty-description-term');
// Only append the metadata if it's not already there
if (!el.querySelector('.extend-warranty-info')) {
contentContainer.insertBefore(warrantyProductName, contentContainer.querySelector('.cart__remove'))
contentContainer.insertBefore(warrantyProductTerm, contentContainer.querySelector('.cart__remove'))
}
}
/**************************************/
/* THEME SPECIFIC STYLING END */
/**************************************/
} else { // Create an offer element for each product
createElement(el, index);
}
} catch (error) {
console.error("EXTEND:", error);
}
});
}
function initEventListeners() {
if (init) return;
function refreshCartOffer() {
fetch('/cart.js', {
credentials: 'same-origin',
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
})
.then((e) => e.json())
.then((e) => {
localCart = e;
initializeCartOffer();
})
.catch((error) => {
console.error("EXTEND:", error)
});
}
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Multiple_identical_event_listeners
window.addEventListener(cartEvent, refreshCartOffer);
// Listen for SP dispatching refresh
window.addEventListener('refreshSP', refreshCart);
}
/************************/
/* initializeCartOffer */
/************************/
// Invokes handleStyling and finds all offers in the cart, handling both normalization and balancing
function initializeCartOffer() {
// Runs this normalization from extend-shipping.liquid if using cart SP
if (Extend.integration.cartSP && Extend.integration.normalizeCartSP) {
Extend.integration.normalizeCartSP()
}
// Handles styling and creates offer elements
handleStyling();
initEventListeners();
init = true;
// Use standard normalization if SP is not present in cart
if (!window.Extend.integration.cartSP) {
// Normalization ensures there is a 1:1 relationship between the product and the warranty
ExtendShopify.normalizeCart({
cart: localCart,
balance: Extend.integration.cartBalancing
}, function (err, data) {
try {
// An error occurred
if (err) {
throw new Error({ "Exiting - Error in normalizeCart": error });
} else if (data && data.updates) { // Calls refreshCart to update the cart for normalization
refreshCart();
}
} catch (error) {
console.error("EXTEND:", error)
}
});
}
}
try {
// initializeCartOffer when script is initially rendered
initializeCartOffer();
document.addEventListener('click', function(e) {
if (e.target.closest('a[data-cart-toggle]') || e.target.closest('.cart-upsell-item__form button[type="submit"]')) {
window.dispatchEvent(new Event('refreshAjaxSideCart'))
}
})
if (localStorage.getItem("extendRefresh") === "true" && document.querySelector('a[data-cart-toggle]')) {
localStorage.removeItem("extendRefresh")
document.querySelector('a[data-cart-toggle]').click()
}
} catch (err) {
console.error('EXTEND: ', err);
}
}, { once: true });
.extend-cart-offer {
margin-top: 10px;
}
.extend-side-cart-offer {
margin: 10px 0;
}
.extend-warranty-info {
margin: 0 !important;
font-size: 16.5px
}
cart-drawer .extend-warranty-info {
margin: 0 !important;
font-size: 14px
}
.extend-warranty-info-product {}
.extend-warranty-info-term {}
#extend-offers-modal-iframe {
z-index: 99999999999 !important;
}
#extend-learn-more-modal-iframe {
z-index: 99999999999 !important;
}
const configUrl = "/a/elevar/static/configs/eaf3284a91c577096e0e52bbfe2a36e0b2d2c0a0/config.js";
const config = (await import(configUrl)).default;
const scriptUrl = config.script_src_app_theme_embed;
if (scriptUrl) {
const { handler } = await import(scriptUrl);
await handler(
config,
{
cartData: {
marketId: "2320924695",
attributes:{},
cartTotal: "0.0",
currencyCode:"USD",
items: []
}
,
user: {cartTotal: "0.0",
currencyCode:"USD",customer: {},
}
,
isOnCartPage:false,
collectionView:null,
searchResultsView:null,
productView:null,
checkoutComplete: null
}
);
}
var BspdCurrentCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0};
var BspdCurrentProduct = null;
var BspdCurrentCollection = null;
var BSPD_CART_DATA_LOCAL_KEY = 'bspdCartData';
var BSPD_LAST_VISIT_COUNT_LOCAL_KEY = 'bspdLastUserVisitCount';
var BSPD_LAST_VISITED_PRODUCT = 'bspdLastVisitedProduct';
var BSPD_LAST_VISITED_COLLECTION = 'bspdLastVisitedCollection';
var BspdLastVisitedProduct = null,
BspdLastVisitedCollection = null;
var Asdf =
"Nq7zP4LmbU9vYt3oKd1XjS8eWrQAhRfiZpGVwHkJTxOaFyClM0gEn5Bs2cDLuNbRq6VXYp3jW8ZtP9oHh1kGmU7fTqJdC4xAyeKvrFz0SlOLaNBiwD2u5MQscXpRhEnyGTZ3bFo1UvCkVjP8Wl4a9Hqg5dMR0YxJfz2S6oBthKNLmJ7eXiUpDAcGsVQnZrwTy38vFbPC2OaX9J4dR5mUqHnL1Yp0xkzETSWv6jGbCsoMgK3fD8wZ7uFiQyNPrVHXJltB2cAh5dWLj0RmS1zOxKUgYq9pFeTvnVb4CkGa7w2XMNJry6iDZ8hsP3LxBo5UQf1Tn";
function bspdGetBarCookie(name) {
const value = "; " + document.cookie;
const parts = value.split("; " + name + "=");
if (parts.length === 2) {
return parts.pop().split(";").shift();
}
return null;
}
function bspdSetBarCookie(name, value, days) {
const expires = new Date();
expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + value + ";expires=" + expires.toUTCString() + ";path=/";
}
function trackLastVisitedProductAndCollection() {
if (BspdCurrentProduct) {
// check cookies for last visited product details (product id)
const lastVisitedProduct = bspdGetBarCookie(BSPD_LAST_VISITED_PRODUCT);
if (lastVisitedProduct) {
BspdLastVisitedProduct = lastVisitedProduct;
if (BspdCurrentProduct?.id !== BspdLastVisitedProduct) {
// set the cookie again
bspdSetBarCookie(BSPD_LAST_VISITED_PRODUCT, BspdCurrentProduct?.id, 300);
}
} else if (BspdCurrentProduct && BspdCurrentProduct?.id) {
// set the cookie
bspdSetBarCookie(BSPD_LAST_VISITED_PRODUCT, BspdCurrentProduct?.id, 300);
}
}
if (BspdCurrentCollection) {
// check cookies for last visited collection details (collection id)
const lastVisitedCollection = bspdGetBarCookie(BSPD_LAST_VISITED_COLLECTION);
if (lastVisitedCollection) {
BspdLastVisitedCollection = lastVisitedCollection;
if (BspdCurrentCollection?.id !== BspdLastVisitedCollection) {
// set the cookie again
bspdSetBarCookie(BSPD_LAST_VISITED_COLLECTION, BspdCurrentCollection?.id, 300);
}
} else if (BspdCurrentCollection && BspdCurrentCollection?.id) {
// set the cookie
bspdSetBarCookie(BSPD_LAST_VISITED_COLLECTION, BspdCurrentCollection?.id, 300);
}
}
}
/**
* method that stores a entry whenever the user visits any of the page
* and increments the count by 1
* the data schema looks like
* {
* [DATE]: {
* date: string
* route: {
* [ROUTE]: number
* }
* count: number
* }
* }
*
* this will be a json object whose key will be the date and value will be the object
* and will be stored in local-storage
*/
function trackLastVisitedCount() {
const date = new Date();
const dateString = date.toISOString().split("T")[0];
let lastVisitedCount = JSON.parse(localStorage.getItem(BSPD_LAST_VISIT_COUNT_LOCAL_KEY)) || {};
if (lastVisitedCount[dateString]) {
lastVisitedCount[dateString].count += 1;
// also update route
const route = window.location.pathname;
if (lastVisitedCount[dateString].route[route]) {
lastVisitedCount[dateString].route[route] += 1;
} else {
lastVisitedCount[dateString].route[route] = 1;
}
} else {
const route = window.location.pathname;
lastVisitedCount[dateString] = {
date: dateString,
route: {
[route]: 1,
},
count: 1,
};
}
localStorage.setItem(BSPD_LAST_VISIT_COUNT_LOCAL_KEY, JSON.stringify(lastVisitedCount));
}
/**
* this method keeps a track of the current cart activity
* if there are any changes by the user, this will track those changes
* and making changes on storing it safely
*/
const storeCartData = () => {
function syncCart() {
const oldCart = JSON.parse(localStorage.getItem(BSPD_CART_DATA_LOCAL_KEY) || "{}");
if (BspdCurrentCart?.item_count !== oldCart?.item_count) {
localStorage.setItem(BSPD_CART_DATA_LOCAL_KEY, JSON.stringify(BspdCurrentCart));
}
}
syncCart();
async function emitCartChanges() {
try {
const response = await fetch("/cart.js")
.then((res) => res.json())
.then((newCart) => {
const oldCart = JSON.parse(localStorage.getItem(BSPD_CART_DATA_LOCAL_KEY) || "{}");
if (newCart?.item_count !== oldCart?.item_count) {
localStorage.setItem(BSPD_CART_DATA_LOCAL_KEY, JSON.stringify(newCart));
}
})
.catch(() => {});
} catch (error) {}
}
// track changes in cart.js, on change store the cart data
const cartObserver = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const isValidRequestType = ["xmlhttprequest", "fetch"].includes(entry.initiatorType);
const isCartChangeRequest = /\/cart\//.test(entry.name);
if (isValidRequestType && isCartChangeRequest) {
emitCartChanges();
}
});
});
cartObserver.observe({ entryTypes: ["resource"] });
};
function execute() {
trackLastVisitedProductAndCollection();
trackLastVisitedCount();
storeCartData();
}
execute();
const dummyBitespeedVar = 'dummyBitespeedVar';
const getcookieGlobalAnal = (cookie) => {
let cookieJson = {};
document.cookie.split(';').forEach(function (el) {
let [k, v] = el.split('=');
cookieJson[k.trim()] = v;
});
return cookieJson[cookie];
};
const setCookieGlobalAnal = (cookie, value, days, hours) => {
let expires = '';
if (days) {
let date = new Date();
date.setTime(date.getTime() + days * hours * 60 * 60 * 1000);
expires = '; expires=' + date.toUTCString();
}
document.cookie = cookie + '=' + (value || '') + expires + '; path=/';
};
document.addEventListener('DOMContentLoaded', function () {
const getIsMultichannelAnal = async () => {
try {
// TODO_sobhan
// var indexOfwww = location.hostname.indexOf('www');
// var shopDomainStripped = indexOfwww === -1 ? '.' + location.hostname : location.hostname.substr(indexOfwww + 3);
// var globalShopUrl = indexOfwww === -1 ? location.hostname : location.hostname.substr(indexOfwww + 4);
// let res = await fetch(`https://app.bitespeed.co/database/popups/isMultichannel?shopDomain=${globalShopUrl}`, {
// method: 'GET',
// headers: {
// 'Access-Control-Allow-Origin': '*',
// },
// });
// if (!res.ok) {
// throw new Error(`HTTP error! status: ${res.status}`);
// }
// let data = await res.json();
// console.log(data);
// return data.isMultichannel || true;
return true;
} catch (error) {
console.log(error);
}
};
async function checkMultichannel() {
console.log('in checkMultichannel');
const isMultichannel = await getIsMultichannelAnal();
if (isMultichannel) {
setCookieGlobalAnal('isMultiChannel', isMultichannel, 1, 1);
} else {
setCookieGlobalAnal('isMultiChannel', isMultichannel, 1, 1);
}
console.log('Setting is multichannel from anal file to ', isMultichannel);
}
(async function () {
let refb = String(getcookieGlobalAnal('refb'));
let ssid = String(getcookieGlobalAnal('ssid'));
if (refb === null || refb === '' || refb === undefined || refb === 'undefined') {
var refbnew = createRef();
}
if (ssid === null || ssid === '' || ssid === undefined || ssid === 'undefined') {
var ssidnew = await createSsid();
}
if (!getcookieGlobalAnal('isMultiChannel')) {
console.log('isMultichannel not found in local making BE call Anal file');
await checkMultichannel();
}
})();
});
const DBURL = 'https://app.bitespeed.co/database';
var indexOfwww = location.hostname.indexOf('www');
var shopDomainStripped = indexOfwww === -1 ? '.' + location.hostname : location.hostname.substr(indexOfwww + 3);
function getCookie(name) {
var value = '; ' + document.cookie;
var parts = value.split('; ' + name + '=');
if (parts.length == 2) return parts.pop().split(';').shift();
}
function createRef() {
let uuid = create_UUID();
document.cookie =
'refb=' +
uuid +
';expires=' +
new Date(new Date().setFullYear(new Date().getFullYear() + 10)) +
';domain=' +
shopDomainStripped +
'; path=/';
return uuid;
}
async function createSsid() {
let uuid = create_UUID();
document.cookie = 'ssid=' + uuid + ';domain=' + shopDomainStripped + '; path=/';
return uuid;
}
function create_UUID() {
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (dt + Math.random() * 16) % 16 | 0;
dt = Math.floor(dt / 16);
return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
return uuid;
}
function lookForCart() {
let contactIdBitespeed = getcookieGlobalAnal('contactIdBitespeed');
let contactIdRzp = getcookieGlobalAnal('rzp_unified_session_id');
var myCookie = getcookieGlobalAnal('cart');
const currentTimestamp = new Date().getTime();
const recentlyCartCreatedAt = getcookieGlobalAnal('bspd_cart_created_at');
if (myCookie && !getcookieGlobalAnal(`${myCookie}`) && !recentlyCartCreatedAt) {
document.cookie = `bspd_cart_created_at=${currentTimestamp}` + ';domain=' + shopDomainStripped + '; path=/';
} else if (!myCookie && recentlyCartCreatedAt) {
// reseting the cart created at cookie if it exists
document.cookie =
`bspd_last_cart_created_at=${recentlyCartCreatedAt}` + ';domain=' + shopDomainStripped + '; path=/';
document.cookie = `bspd_cart_created_at=;domain=${shopDomainStripped}; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
}
if (
(contactIdBitespeed === null ||
contactIdBitespeed === '' ||
contactIdBitespeed === undefined ||
contactIdBitespeed === 'undefined') &&
(contactIdRzp === null || contactIdRzp === '' || contactIdRzp === undefined || contactIdRzp === 'undefined')
)
return;
let lastTrackedCart = getcookieGlobalAnal('last_tracked_cart_event');
let lastTrackedCartLineItemsCnt = getcookieGlobalAnal('last_tracked_cart_line_items_cnt');
if (myCookie && shopDomainStripped.includes('.neonattack.com')) {
clearInterval(intervalId);
if (!recentlyCartCreatedAt) {
document.cookie = `bspd_cart_created_at=${currentTimestamp}` + ';domain=' + shopDomainStripped + '; path=/';
}
const cartData = cart; // a global variable, as of now only on neonattack.com (hardikecommerce.myshopify.com)
if (myCookie !== lastTrackedCart || Number(lastTrackedCartLineItemsCnt) !== cartData.item_count) {
document.cookie = `${myCookie}=true` + ';domain=' + shopDomainStripped + '; path=/';
document.cookie = `last_tracked_cart_event=${myCookie}` + ';domain=' + shopDomainStripped + '; path=/';
document.cookie =
`last_tracked_cart_line_items_cnt=${cartData.item_count}` + ';domain=' + shopDomainStripped + '; path=/';
sendToWebhook(myCookie, cartData);
}
} else if (myCookie) {
clearInterval(intervalId);
if (!getcookieGlobalAnal(`${myCookie}`)) {
document.cookie = `${myCookie}=true` + ';domain=' + shopDomainStripped + '; path=/';
sendToWebhook(myCookie);
}
}
}
function sendToWebhook(cartToken, cartData = {}) {
let axiosConfig = {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Content-Type': 'application/json',
},
};
let refb = getcookieGlobalAnal('refb');
if (refb === null || refb === '' || refb === undefined || refb === 'undefined') {
} else {
const userAgent = navigator.userAgent;
let lineItems = [];
if (shopDomainStripped.includes('.neonattack.com') && cartData && cartData?.items) {
lineItems = cartData.items?.map((item) => {
return {
product_id: item.product_id,
variant_id: item.id,
price: item.price,
quantity: item.quantity,
sku: item.sku,
title: item.title,
vendor: item.vendor,
};
});
}
var postData = {
at: new Date(),
type: 'cartCreated',
event: {
cartToken: cartToken,
},
page_url: window.location.href,
id: String(refb),
shopifyShopDomain: 'raycon.myshopify.com',
lineItems,
ref: refb,
ssid: getcookieGlobalAnal('ssid'),
contactId: Number.parseInt(getcookieGlobalAnal('contactIdBitespeed')),
rzp_unified_session_id: getcookieGlobalAnal('rzp_unified_session_id'),
platformMobile: /iPad|iPhone|iPod/.test(userAgent) ? 'ios' : /Android/.test(userAgent) ? 'android' : '',
platformDesktop: /Mac/.test(userAgent) ? 'mac' : /Windows/.test(userAgent) ? 'windows' : '',
rzp_unified_session_id: getcookieGlobalAnal('rzp_unified_session_id') || undefined,
};
let isMultiChannel = true;
// TODO
// if (getcookieGlobalAnal('isMultiChannel') == 'false' || getcookieGlobalAnal('isMultiChannel') == false) {
// console.log('isMultichannel found and is false');
// isMultiChannel = false;
// } else if (getcookieGlobalAnal('isMultiChannel') == 'true' || getcookieGlobalAnal('isMultiChannel') == true) {
// isMultiChannel = true;
// }
// console.log('sendToWebhook', isMultiChannel);
// console.log('sendToWebhook-ignore', localStorage.getItem('isMultiChannel'));
let url = `${DBURL}/api/shopifyCustomer/create`;
if (isMultiChannel) {
url = `https://shopifywebhooks.bitespeed.co/webhook/browserSession`;
}
fetch(url, {
method: 'POST',
headers: axiosConfig.headers,
body: JSON.stringify(postData),
}).catch((err) => {
console.log('AXIOS ERROR: ', err);
});
}
}
let intervalId = setInterval(() => {
lookForCart();
}, 1000);
let axiosConfig = {
headers: {
"Access-Control-Allow-Origin": "*",
'Content-Type': 'application/json',
}
};
function analyticsPost(postData) {
// TODO_sobhan
let isMultiChannel = true;
// if (getcookieGlobalAnal("isMultiChannel") == "false" || getcookieGlobalAnal("isMultiChannel") == false) {
// console.log("isMultichannel found and is false");
// isMultiChannel = false;
// } else if (getcookieGlobalAnal("isMultiChannel") == "true" || getcookieGlobalAnal("isMultiChannel") == true) {
// isMultiChannel = true;
// }
// if (!isMultiChannel) return; // disable browser sessions in legacy
let analyticsUrl = isMultiChannel
? "https://shopifywebhooks.bitespeed.co/webhook/browserSession"
: `https://app.bitespeed.co/database/webhook/browserSession`;
console.log("analyticsUrl", analyticsUrl);
postData.shopifyShopDomain = "raycon.myshopify.com";
postData.ref = getcookieGlobalAnal("refb");
postData.ssid = getcookieGlobalAnal("ssid");
postData.contactId = Number.parseInt(getcookieGlobalAnal("contactIdBitespeed"));
postData.rzp_unified_session_id = getcookieGlobalAnal("rzp_unified_session_id") || undefined;
const userAgent = navigator.userAgent;
postData.platformMobile = /iPad|iPhone|iPod/.test(userAgent) ? "ios" : /Android/.test(userAgent) ? "android" : "";
postData.platformDesktop = /Mac/.test(userAgent) ? "mac" : /Windows/.test(userAgent) ? "windows" : "";
// don't send browser events on multichannel if contactId is not present
if (isMultiChannel && !postData.contactId && !postData.rzp_unified_session_id) {
console.log("No contactId found for multichannel analytics file. Returning");
return;
}
fetch(analyticsUrl, {
method: "POST",
headers: axiosConfig.headers,
body: JSON.stringify(postData),
}).catch((err) => {
console.log("AXIOS ERROR: ", err);
});
}
(function() {
var bitespeedLayer = {
cartPollInterval: 2000
}
var config = {
linker: {
domains: ['shopify.com', 'rechargeapps.com', 'recurringcheckout.com', 'carthook.com', 'checkout.com']
},
anonymize_ip: true,
allow_ad_personalization_signals: true,
page_title: removePii(document.title),
page_location: removePii(document.location.href)
}
var pageView = function() {
};
// delay page firing until the page is visible
if (document.hidden === true) {
var triggeredPageView = false;
document.addEventListener('visibilitychange', function() {
if (!document.hidden && !triggeredPageView) {
pageView();
triggeredPageView = true;
}
});
} else {
pageView()
}
var triggerPageViewEvent = function() {
var postData = {
"at" : new Date(),
"type": "pageViewed",
"event": {
url: window.location.href,
},
"contactId": Number.parseInt(getcookieGlobalAnal("contactIdBitespeed")),
"source": 'shopify'
}
analyticsPost(postData);
}
document.addEventListener('DOMContentLoaded', function() {
triggerPageViewEvent()
});
var hasLocalStorage = (function() {
try {
localStorage.setItem('bitespeed_test_storage', 'test');
localStorage.removeItem('bitespeed_test_storage');
return true;
} catch (ex) {
return false;
}
})();
bitespeedLayer.ecommerce = {
'currencyCode' : 'USD',
'impressions' : []
};
bitespeedLayer.ecommerce.impressions = getUniqueProducts(bitespeedLayer.ecommerce.impressions);
function getUniqueProducts(array){
var u = {}, a = [];
for(var i = 0, l = array.length; i < l; ++i){
if(u.hasOwnProperty(array[i].id)) {
continue;
}
a.push(array[i]);
u[array[i].id] = 1;
}
return a;
};
var loadScript = function(url, callback){
var script = document.createElement("script")
script.type = "text/javascript";
if (script.readyState){ /* IE */
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { /* Others */
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
var ldTracker = function(jQuery){
jQuery(document).ready(function(){
if(bitespeedLayer && bitespeedLayer.ecommerce){
/* run list, product, and clientID scripts everywhere */
listViewScript();
productPageScript();
}
})
var ldTracker = function(){
document.addEventListener('DOMContentLoaded', function() {
if (typeof bitespeedLayer !== 'undefined' && bitespeedLayer.ecommerce) {
// run list, product, and clientID scripts everywhere
listViewScript();
productPageScript();
}
});
}
function listViewScript(){
if (!bitespeedLayer.ecommerce.impressions || !bitespeedLayer.ecommerce.impressions.length) return;
window.setTimeout(function(){
var postData = {
"at" : new Date(),
"type" : "productListViewed",
"page_url": window.location.href,
"event" : {
list_id: bitespeedLayer.ecommerce.impressions[0].list,
collection_id: bitespeedLayer.ecommerce.impressions[0].collection_id,
products: bitespeedLayer.ecommerce.impressions
}
};
analyticsPost(postData);
},500) /* wait for pageview to fire first */
/* product list clicks */
}
async function productPageScript(){
var product = bitespeedLayer.ecommerce.detail
&& bitespeedLayer.ecommerce.detail.products
&& bitespeedLayer.ecommerce.detail.products[0]
if (product) {
if(hasLocalStorage) product.list_name = localStorage.list
if(hasLocalStorage) product.list_id = localStorage.list
var postData = {
"at" : new Date(),
"type" : "productViewed",
"page_url": window.location.href,
"event" : product
}
analyticsPost(postData);
}
}
}
if(typeof jQuery === 'undefined'){
loadScript('https://code.jquery.com/jquery-3.7.1.min.js', function(){
jQuery191 = jQuery.noConflict(true);
ldTracker(jQuery191);
});
} else {
ldTracker(jQuery);
}
// ldTracker();
function removePii(string) {
var piiRegex = {
"email": /[s&/,=]([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|[s&/,])/,
"postcode": /[s&/,=]([A-Z]{1,2}[0-9][0-9A-Z]?(s|%20)[0-9][A-Z]{2})($|[s&/,])/,
};
var dlRemoved = string;
for (key in piiRegex) {
dlRemoved = dlRemoved.replace(piiRegex[key], 'REMOVED');
}
return dlRemoved;
}
})()
var popup_id = "";
var product = null || {};
var product_id = null || "";
var current_variant = null || "";
var is_current_variant_available = true;
var buyNowElement = null;
var mainNewButton = null;
var notify_me_text = "Notify Me";
var shop_domain = "";
var dont_show_notify_me_strict = false;
var variants = product.variants
// variables to build custom logic for different brands
var globalFormEle = null;
var globalPrimaryBtn = null;
var getParameterByNameTemp = (str, url = window.location.href) => {
str = str.replace(/[\[\]]/g, "\\$&");
let regex = new RegExp("[?&]" + str + "(=([^]*)|&|#|$)").exec(url);
return regex ? (regex[2] ? decodeURIComponent(regex[2].replace(/\+/g, " ")) : "") : null;
}
var variantParam = getParameterByNameTemp("variant");
if (variantParam && !isNaN(variantParam)) {
// getting variant param from the url and if it is a proper number set the current_variant as that
current_variant = Number(variantParam);
} else if (!current_variant && Array.isArray(variants) && variants.length > 0) {
// else set the first variant as the current variant
current_variant = variants[0].id;
}
// console.log(product, product_id, current_variant, variants, "DATA IS HEREEE");
// var popup_id = "";
// var product = {};
// var product_id = "";
// var current_variant = "";
// var is_current_variant_available = false;
// var buyNowElement = null;
// var mainNewButton = null;
// const variants = [];
var CREATED_NOTIFY_ME_BUTTON_CLASS = "bitespeed-notify-me-button";
var CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_CLASS}`;
var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS = "bitespeed-notify-me-button-parent";
var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS}`;
var notifyMeTexts = ["notify me", "notify"];
var soldOutTexts = ["sold out", "out of stock"];
var wordsToRemove = ["sold out", "out of stock"].concat(notifyMeTexts);
var buyButtonTexts = ["buy now", "buy it", "buy it now", "sold out"];
var TheCustomerID = '';
var TheCustomerEmail = '';
var TheCustomerPhone = '';
var TheCustomerFN = '';
var TheCustomerLN = '';
var entityHandle = "tac";
var popup_id = "";
var product = null;
var product_id = null;
var current_variant = null;
var is_current_variant_available = true;
var buyNowElement = null;
var mainNewButton = null;
var notify_me_text = "Notify Me";
var shop_domain = "";
var dont_show_notify_me_strict = false;
var variants = product?.variants
var productCollections = product?.collections
window.product_id = product_id;
window.current_variant = current_variant;
// variables to build custom logic for different brands
var globalFormEle = null;
var globalPrimaryBtn = null;
var globalParentElement = null;
var variantParam = getParameterByName("variant");
if (variantParam && !isNaN(variantParam)) {
// getting variant param from the url and if it is a proper number set the current_variant as that
current_variant = Number(variantParam);
// } else if (
// !current_variant ||
// !product.variants ||
// (Array.isArray(product.variants) && product.variants.length <= 0) ||
// !Array.isArray(product.variants)
// ) {
// const productFetch = await fetch(`/products/${entityHandle}.js`, {
// method: "GET",
// headers: {
// "Content-Type": "application/json",
// },
// }).then((res) => res.json());
// if (productFetch) {
// console.log("Product fetched from /products/:handle.js", productFetch);
// product = productFetch;
// variants = productFetch.variants;
// }
} else if (!current_variant && Array.isArray(product?.variants) && product?.variants.length > 0) {
// change the current_variant to the first variant in the url
// window.history.replaceState(
// {},
// document.title,
// window.location.pathname + "?variant=" + product.variants[0].id
// );
// getting the first variant that is available
// if no variant is available then set the current_variant to the first variant
for (let i = 0; i < product.variants.length; i++) {
if (product.variants[i].available) {
current_variant = product.variants[i].id;
break;
}
}
// else set the first variant as the current variant
if (!current_variant) {
current_variant = product.variants[0].id;
}
}
// var popup_id = "";
// var product = {};
// var product_id = "";
// var current_variant = "";
// var is_current_variant_available = false;
// var buyNowElement = null;
// var mainNewButton = null;
var CREATED_NOTIFY_ME_BUTTON_CLASS = "bitespeed-notify-me-button";
var CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_CLASS}`;
var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS = "bitespeed-notify-me-button-parent";
var CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR = `.${CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS}`;
var notifyMeTexts = ["notify me", "notify"];
var soldOutTexts = ["sold out", "out of stock"];
var wordsToRemove = ["sold out", "out of stock"].concat(notifyMeTexts);
var buyButtonTexts = ["buy now", "buy it", "buy it now", "sold out"];
var default_formSelector = [
"form.product_form",
"form.productForm",
".product-form",
".product_form",
".ProductForm",
".shopify-product-form",
".product-single__form",
"form[action='/cart/add']",
"form[action='/cart/add.js']",
];
var default_buttonSelector = [
"button[type='submit']",
"input[name='add']",
"button[name='add']",
"input[type='submit']",
"input[value='Sold out']",
];
const modifyDefaultSelectorsForBrands = () => {
const shopUrl = window.Shopify.shop;
if (shopUrl === "vip-lhb2021.myshopify.com") {
default_formSelector = [".product__form__wrapper"];
default_buttonSelector = [".wishlisthero-product-page-button-container"];
// soldOutTexts = soldOutTexts.concat(["add to wishlist"])
buyButtonTexts = buyButtonTexts.concat(["add to wishlist"]);
}
};
modifyDefaultSelectorsForBrands();
// UTILS
function checkIfStringIncludes(string, words) {
return words.some((word) => string.toLowerCase().includes(word.toLowerCase()));
}
function isDefined(value) {
return null != value;
}
function getParameterByName(str, url = window.location.href) {
str = str.replace(/[\[\]]/g, "\\$&");
let regex = new RegExp("[?&]" + str + "(=([^]*)|&|#|$)").exec(url);
return regex ? (regex[2] ? decodeURIComponent(regex[2].replace(/\+/g, " ")) : "") : null;
}
function addMargin(button) {
// button.style.margin = "5px";
button.style.marginTop = "5px";
button.style.marginLeft = "5px";
button.style.marginRight = "5px";
button.style.marginBottom = "5px";
}
function onNotifyButtonClicked() {
// using global variable - bitespeed_popups
// const product = null
// const selected_variant = null
// exact methods and constants from bitespeed-popup.js file
// console.log(popup_id, "AAAAA", product_id, "VVVV", current_variant, `${(popup_id + "").trim()}:bitespeed_popup`);
bitespeed_popups[`${(popup_id + "").trim()}:bitespeed_popup`].show("", true, {
popupTrigger: "back_in_stock",
productId: product_id,
variantId: current_variant,
});
}
function addCustomStylesBasedOnBrand(button, isParent) {
if(isParent) {
switch (window.Shopify.shop) {
case 'belvish.myshopify.com': {
button.style.marginTop = '10px';
button.style.width = '100%';
}
case 'overlays-clothing.myshopify.com': {
button.style.marginBottom = '16px';
}
default:
break;
}
return
}
switch (window.Shopify.shop) {
case "headphone-zone.myshopify.com": {
button.style.width = "100%";
break;
}
case "the-indian-ethnic-company.myshopify.com": {
button.style.margin = "8px 0px";
break;
}
default:
break;
}
return button;
}
/**
* method to add neccessary properties to the
* new notify button... handling many edges cases as well...
*/
function addNeccessaryProperties(button) {
// adding all the neccessary properties
button.type = "button";
button.name = "notify_me";
button.disabled = false;
button.ariaDisabled = false; // edge case, few websites are using aria-disabled
// adding/overriding some styles
button.style.display = "inline-block";
button.style.opacity = "1";
button.style.pointerEvents = "auto";
button.style.cursor = "pointer";
button.classList.remove("disabled"); // edge case:
// removing the click events from
button.click = () => {};
button.onclick = () => {};
// some custom brand specific attributes or properties
button.removeAttribute("data-notification-popup");
button.removeAttribute("data-add-to-cart");
const customButton = addCustomStylesBasedOnBrand(button);
return customButton;
}
function ifPassedNumberCondition(condition, conditionValue, actualValue) {
if (condition === "greater than") {
return actualValue > conditionValue;
} else if (condition === "less than") {
return actualValue < conditionValue;
} else if (condition === "equals to") {
return actualValue === conditionValue;
} else if (condition === "not equals to") {
return actualValue !== conditionValue;
} else if (condition === "greater than or equals to") {
return actualValue >= conditionValue;
} else if (condition === "less than or equals to") {
return actualValue <= conditionValue;
}
return false;
}
function isVariantAvailableBasedOnPopupTriggers() {
/**
* this is a part of popup triggers only
* but being handled here as there are no option for variant-wise trigger
*/
if (
window?.bspdPopupProductMetadata !== undefined &&
window?.bspdPopupProductMetadata !== null
) {
const {
popupId,
value,
condition,
...variants
} = window.bspdPopupProductMetadata || {};
console.log(variants, "variants asldfjas");
if (variants[window.ShopifyAnalytics.meta.selectedVariantId]) {
const inventoryQuantity =
variants[window.ShopifyAnalytics.meta.selectedVariantId]
?.inventoryQuantity || null;
if (inventoryQuantity === null) return true;
return !ifPassedNumberCondition(condition, value, inventoryQuantity);
}
return true;
}
return true;
}
function checkVariantIsAvailable() {
if (!product.variants || product.variants.length <= 0) {
is_current_variant_available = true;
return true;
}
for (let i = 0; i < product.variants.length; i++) {
const variantId = Number(product.variants[i].id);
const currentVariantId = Number(current_variant);
if (variantId === currentVariantId) {
if (product.variants[i].available === null || product.variants[i].available === undefined) dont_show_notify_me_strict = true;
is_current_variant_available = product.variants[i].available;
const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers();
return is_current_variant_available && secondaryPopupTriggerCondition;
}
}
const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers();
return false && secondaryPopupTriggerCondition;
}
function checkOneVariantIsAvailable() {
let is_variant_available = true,
is_variant_found = true;
if (!current_variant) return null;
if (!product.variants || product.variants.length <= 0) {
is_vairant_available = true;
return false;
}
for (let i = 0; i < product.variants.length; i++) {
let variant = product.variants[i];
// Number(variant.id) === Number(current_variant) && (is_variant_found = variant.available),
// (is_variant_available = is_variant_available || variant.available);
if (Number(variant.id) === Number(current_variant)) {
is_variant_found = variant.available;
is_variant_available = is_variant_available || variant.available;
}
}
const secondaryPopupTriggerCondition = isVariantAvailableBasedOnPopupTriggers();
return (is_variant_available && is_variant_found && product.variants.length >= 1) && secondaryPopupTriggerCondition;
}
function refreshBackInStockButton() {
if (is_current_variant_available) {
let buttonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR);
isDefined(buttonParent) && (buttonParent.innerHTML = ""), bspdAddBackInStockButton();
} else {
bspdAddBackInStockButton();
}
}
/**
* This function is used to check if the variant is available and reload the button
* if it is available.
*/
function delayedRefreshButton() {
setTimeout(function () {
const newVariant = getParameterByName("variant") || window.ShopifyAnalytics.meta.selectedVariantId;
if (newVariant === null) {
return;
}
let tempVariant = current_variant;
current_variant = Number(newVariant);
if (tempVariant !== current_variant) {
checkVariantIsAvailable();
refreshBackInStockButton();
}
}, 2);
}
// custom logic for different brands
function showNotifyBTNOnCustomBrandLogicPass() {
/**
* this variable is a by pass mechanism
* mostly made when safari is not getting enought variant availability data
* so we are not showing notify me button
* in that case...
*/
if (dont_show_notify_me_strict) return false;
// dependent on primary button
if (globalPrimaryBtn) {
if (shop_domain === "neeshperfumes.com") {
if (String(globalPrimaryBtn.innerText).toLowerCase() === "validate") return false;
} else if (shop_domain === "carrypro.in") {
const getButtonAttributes = globalPrimaryBtn.attributes;
const disabledAttribute = getButtonAttributes.getNamedItem("disabled");
return true;
return disabledAttribute && disabledAttribute.value === "disabled";
// } else if (shop_domain === 'theindianethnicco.com') {
// // custom request of 'theindianethnicco'
// // to only show when all the variants are out of stock
// return product.variants.every(variant => !variant.available);
}
}
return true;
}
/**
* function to add custom logic for notify me button
* for few brands the existing button criteria is not enough
* or maybe the button is not getting rendered properly
*/
function addCustomLogicForNotifyMeButton() {
// if(shop_domain === 'capresebags.com') {
// const form = document.getElementById('wishlisthero-product-page-button-container');
// if(form) {
// const button = form.getElementsByClassName('product__form--add-to-cart');
// // add the button at the beginning of the form
// if(button && button.length > 0) {
// console.log(111111)
// createBackInStockButton(button[0], true);
// }
// }
// }
}
/**
* this method renders the notify me button taking the reference from the
* primary original button data
*/
function createBackInStockButton(buttonReference, dontDisableOgButton = false) {
let button = document.querySelector(CREATED_NOTIFY_ME_BUTTON_CLASS_SELECTOR);
if (!isDefined(button)) {
// For stores with reactive themes, create fresh button instead of cloning
// to avoid theme framework overwriting button text/state via cloned attributes
let newButton;
if (window.Shopify.shop === 'hophead-apparels.myshopify.com') {
newButton = document.createElement("button");
newButton.className = buttonReference.className;
} else {
newButton = buttonReference.cloneNode(true) || document.createElement("button");
}
addNeccessaryProperties(newButton, buttonReference);
newButton.classList.add(CREATED_NOTIFY_ME_BUTTON_CLASS);
newButton.innerText = "";
newButton.onclick = () => {};
newButton.click = () => {};
newButton.removeEventListener("click", () => {});
let textAddedInChild = false;
for (let child of buttonReference.childNodes) {
let clonedChild = child.cloneNode(true);
clonedChild.innerText = "";
clonedChild.onclick = () => {};
clonedChild.click = () => {};
clonedChild.removeEventListener("click", () => {});
if (child.nodeType === 1) {
if (checkIfStringIncludes((child.innerText + "").toLowerCase(), wordsToRemove) && !textAddedInChild) {
textAddedInChild = true;
clonedChild.innerText = notify_me_text;
}
if (window.Shopify.shop === 'hophead-apparels.myshopify.com' && clonedChild.innerText === "") continue;
newButton.appendChild(clonedChild);
}
}
if (!textAddedInChild) {
newButton.innerText = notify_me_text;
}
/**
* removing the disabled class from the button
*/
if (!dontDisableOgButton)
if (isDefined(buttonReference)) {
for (let i = 0; i < newButton.classList.length; i++) {
if (
"disabled" === newButton.classList[i] ||
"pe_none" === newButton.classList[i] ||
"product__submit__add" === newButton.classList[i] ||
newButton.classList[i].includes("disabled")
)
newButton.classList.remove(newButton.classList[i]);
}
}
newButton.style = "cursor: pointer !important; visibility: visible; display: block !important; position: relative; overflow: hidden;";
if (window.Shopify.shop === '3b0520-2.myshopify.com') {
newButton.style = `${newButton.style}; color: #ffffff !important; background-color: #0C1929 !important;`;
} else if (window.Shopify.shop === 'angel-rocket-india.myshopify.com') {
newButton.style = `${newButton.style}; color: #FF7E7C !important;`;
}
if (!buyNowElement) {
addMargin(newButton);
addMargin(buttonReference);
}
let buttonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR);
addCustomStylesBasedOnBrand(buttonParent, true)
if (showNotifyBTNOnCustomBrandLogicPass()) {
// isDefined(buttonParent) &&
buttonParent.appendChild(newButton),
(newButton.onclick = () => {
onNotifyButtonClicked();
}),
(newButton.ontouchstart = () => {
onNotifyButtonClicked();
});
if (buyNowElement) {
buyNowElement.style.display = "none";
}
buttonParent.style.display = "block";
globalParentElement.style.display = "block";
}
}
}
function createBackInStockButtonParent(form, buttonReference) {
let parent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR);
mainNewButton = parent;
if (!isDefined(parent)) {
let newParent = document.createElement("div");
newParent.classList.add(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS);
globalParentElement = buttonReference.parentElement;
if (buttonReference.nextSibling) {
globalParentElement.style.display = "block";
globalParentElement.insertBefore(newParent, buttonReference.nextSibling);
} else {
globalParentElement.style.display = "block";
globalParentElement.appendChild(newParent);
}
mainNewButton = newParent;
// form.appendChild(newParent);
}
createBackInStockButton(buttonReference);
}
function bspdAddBackInStockButton() {
const is_one_variant_available = checkOneVariantIsAvailable();
if (is_one_variant_available === null) {
return;
}
if (is_one_variant_available) {
if (mainNewButton) mainNewButton.style.display = "none";
if (buyNowElement) {
buyNowElement.style.display = "block";
}
return;
} else {
if (buyNowElement) buyNowElement.style.display = "none";
if (mainNewButton) mainNewButton.style.display = "block";
}
let formSelector = default_formSelector.find((e) => document.querySelector(e));
let formElement = document.querySelector(formSelector);
globalFormEle = formElement;
let buttonSelector = default_buttonSelector.find((e) => document.querySelector(formSelector + " " + e));
let primaryButton = document.querySelector(formSelector + " " + buttonSelector);
globalPrimaryBtn = primaryButton;
let siblingElements = Array.from(formElement.querySelectorAll("a, button, input"));
buyNowElement = siblingElements.find((el) => {
// Skip Shopify payment buttons to prevent cloning the wrong button
if (el.classList.contains('shopify-payment-button__button')) return false;
let innerText = (el.innerText + "").toLowerCase();
let value = (el.value + "").toLowerCase();
return checkIfStringIncludes(innerText, buyButtonTexts) || checkIfStringIncludes(value, buyButtonTexts);
});
const backInStockButtonParent = document.querySelector(CREATED_NOTIFY_ME_BUTTON_PARENT_CLASS_SELECTOR);
const isPrimaryButtonOutOfStock = checkIfStringIncludes((primaryButton.innerText + "").toLowerCase(), soldOutTexts);
return primaryButton &&
(primaryButton.disabled || primaryButton.hidden || primaryButton.classList.contains("disabled"))
? createBackInStockButtonParent(formElement, buyNowElement || primaryButton)
: !primaryButton && backInStockButtonParent
? createBackInStockButton(primaryButton)
: !isPrimaryButtonOutOfStock || primaryButton || backInStockButtonParent
? createBackInStockButtonParent(formElement, buyNowElement || primaryButton)
: false;
}
const storeHaventSetupVariantChange = ['stylobug.myshopify.com'].includes(window.Shopify.shop)
function addPageChangeListenerEvents() {
let timer = null;
document.addEventListener("popstate", (e) => {
delayedRefreshButton();
if (storeHaventSetupVariantChange) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
// doing this will take sometime, and check for manual variant change event/variable
delayedRefreshButton();
}, 200);
}
}),
document.addEventListener("change", (e) => {
delayedRefreshButton();
if (storeHaventSetupVariantChange) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
// doing this will take sometime, and check for manual variant change event/variable
delayedRefreshButton();
}, 200);
}
}),
(function () {
let e = location.href;
new MutationObserver(() => {
const url = location.href;
if (url !== e) {
e = url;
delayedRefreshButton();
if (storeHaventSetupVariantChange) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
// doing this will take sometime, and check for manual variant change event/variable
delayedRefreshButton();
}, 200);
}
}
}).observe(document.body, {
subtree: !0,
childList: !0,
});
// new MutationObserver(() => {
// delayedRefreshButton();
// }).observe(document.body, {
// childList: true,
// subtree: true,
// // attributes: true,
// // characterData: true
// });
})();
}
function passedBrandInitLogic() {
const shopUrl = window.Shopify.shop;
switch (shopUrl) {
case "headphone-zone.myshopify.com":
if ((BspdCurrentProduct?.tags || []).some(tag => tag.toLowerCase() === "hidenotify"))
return false;
break;
default:
return true;
break;
}
return true;
}
function initNotifyFrontendService(popupid, notifyMeText, shopDomain = "") {
if (!passedBrandInitLogic()) {
console.log("Notify Me Service is not initialized due to brand specific logic.");
return;
}
setTimeout(() => {
popup_id = popupid;
notify_me_text = notifyMeText || "Notify Me";
shop_domain = shopDomain || "";
if (!window.location.pathname.startsWith("/products") && !window.location.pathname.startsWith("/collections")) {
console.log("Notify Me Service is not available on this page");
return;
}
const renderedNotifyMeButton = bspdAddBackInStockButton();
console.log("Notify Me Service Initialized");
if (renderedNotifyMeButton === false) {
console.log('Cannot render "Notify Me" button due to CSS policies. Please contact support for assistance.');
addCustomLogicForNotifyMeButton();
}
addPageChangeListenerEvents();
}, 1);
}
!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w
window.klaviyoReviewsProductDesignMode = false
window.klaviyoReviewsProductDesignMode = false
if (!window.customerHub) {
window.customerHub = {};
}
window.customerHub.storefrontRoutes = {
login: "/account/login?return_url=%2F%23k-hub",
register: "/account/register?return_url=%2F%23k-hub",
logout: "/account/logout",
profile: "/account",
addresses: "/account/addresses",
};
window.customerHub.userId = null;
window.customerHub.storeDomain = "raycon.myshopify.com";
window.customerHub.storeLocale = {
currentLanguage: 'en',
currentCountry: 'US',
availableLanguages: [
{
iso_code: 'en',
endonym_name: 'English'
},
{
iso_code: 'zh-CN',
endonym_name: '简体中文'
},
{
iso_code: 'zh-TW',
endonym_name: '繁體中文'
}
],
availableCountries: [
{
iso_code: 'AL',
name: 'Albania',
currency_code: 'ALL'
},
{
iso_code: 'DZ',
name: 'Algeria',
currency_code: 'DZD'
},
{
iso_code: 'AD',
name: 'Andorra',
currency_code: 'EUR'
},
{
iso_code: 'AO',
name: 'Angola',
currency_code: 'AOA'
},
{
iso_code: 'AI',
name: 'Anguilla',
currency_code: 'XCD'
},
{
iso_code: 'AG',
name: 'Antigua & Barbuda',
currency_code: 'XCD'
},
{
iso_code: 'AR',
name: 'Argentina',
currency_code: 'ARS'
},
{
iso_code: 'AM',
name: 'Armenia',
currency_code: 'AMD'
},
{
iso_code: 'AW',
name: 'Aruba',
currency_code: 'AWG'
},
{
iso_code: 'AU',
name: 'Australia',
currency_code: 'AUD'
},
{
iso_code: 'AT',
name: 'Austria',
currency_code: 'EUR'
},
{
iso_code: 'AZ',
name: 'Azerbaijan',
currency_code: 'AZN'
},
{
iso_code: 'BS',
name: 'Bahamas',
currency_code: 'BSD'
},
{
iso_code: 'BH',
name: 'Bahrain',
currency_code: 'USD'
},
{
iso_code: 'BD',
name: 'Bangladesh',
currency_code: 'BDT'
},
{
iso_code: 'BB',
name: 'Barbados',
currency_code: 'BBD'
},
{
iso_code: 'BE',
name: 'Belgium',
currency_code: 'EUR'
},
{
iso_code: 'BZ',
name: 'Belize',
currency_code: 'BZD'
},
{
iso_code: 'BJ',
name: 'Benin',
currency_code: 'XOF'
},
{
iso_code: 'BM',
name: 'Bermuda',
currency_code: 'USD'
},
{
iso_code: 'BO',
name: 'Bolivia',
currency_code: 'BOB'
},
{
iso_code: 'BA',
name: 'Bosnia & Herzegovina',
currency_code: 'BAM'
},
{
iso_code: 'BW',
name: 'Botswana',
currency_code: 'BWP'
},
{
iso_code: 'BR',
name: 'Brazil',
currency_code: 'BRL'
},
{
iso_code: 'VG',
name: 'British Virgin Islands',
currency_code: 'USD'
},
{
iso_code: 'BN',
name: 'Brunei',
currency_code: 'BND'
},
{
iso_code: 'BG',
name: 'Bulgaria',
currency_code: 'EUR'
},
{
iso_code: 'BF',
name: 'Burkina Faso',
currency_code: 'XOF'
},
{
iso_code: 'BI',
name: 'Burundi',
currency_code: 'BIF'
},
{
iso_code: 'KH',
name: 'Cambodia',
currency_code: 'KHR'
},
{
iso_code: 'CM',
name: 'Cameroon',
currency_code: 'XAF'
},
{
iso_code: 'CA',
name: 'Canada',
currency_code: 'CAD'
},
{
iso_code: 'CV',
name: 'Cape Verde',
currency_code: 'CVE'
},
{
iso_code: 'KY',
name: 'Cayman Islands',
currency_code: 'KYD'
},
{
iso_code: 'TD',
name: 'Chad',
currency_code: 'XAF'
},
{
iso_code: 'CL',
name: 'Chile',
currency_code: 'CLP'
},
{
iso_code: 'CN',
name: 'China',
currency_code: 'CNY'
},
{
iso_code: 'CO',
name: 'Colombia',
currency_code: 'COP'
},
{
iso_code: 'KM',
name: 'Comoros',
currency_code: 'KMF'
},
{
iso_code: 'CG',
name: 'Congo - Brazzaville',
currency_code: 'XAF'
},
{
iso_code: 'CK',
name: 'Cook Islands',
currency_code: 'NZD'
},
{
iso_code: 'CR',
name: 'Costa Rica',
currency_code: 'CRC'
},
{
iso_code: 'CI',
name: 'Côte d’Ivoire',
currency_code: 'XOF'
},
{
iso_code: 'HR',
name: 'Croatia',
currency_code: 'EUR'
},
{
iso_code: 'CW',
name: 'Curaçao',
currency_code: 'USD'
},
{
iso_code: 'CY',
name: 'Cyprus',
currency_code: 'EUR'
},
{
iso_code: 'CZ',
name: 'Czechia',
currency_code: 'CZK'
},
{
iso_code: 'DK',
name: 'Denmark',
currency_code: 'DKK'
},
{
iso_code: 'DJ',
name: 'Djibouti',
currency_code: 'DJF'
},
{
iso_code: 'DM',
name: 'Dominica',
currency_code: 'XCD'
},
{
iso_code: 'DO',
name: 'Dominican Republic',
currency_code: 'DOP'
},
{
iso_code: 'EC',
name: 'Ecuador',
currency_code: 'USD'
},
{
iso_code: 'EG',
name: 'Egypt',
currency_code: 'EGP'
},
{
iso_code: 'SV',
name: 'El Salvador',
currency_code: 'USD'
},
{
iso_code: 'GQ',
name: 'Equatorial Guinea',
currency_code: 'XAF'
},
{
iso_code: 'EE',
name: 'Estonia',
currency_code: 'EUR'
},
{
iso_code: 'SZ',
name: 'Eswatini',
currency_code: 'SZL'
},
{
iso_code: 'ET',
name: 'Ethiopia',
currency_code: 'ETB'
},
{
iso_code: 'FK',
name: 'Falkland Islands',
currency_code: 'FKP'
},
{
iso_code: 'FO',
name: 'Faroe Islands',
currency_code: 'DKK'
},
{
iso_code: 'FJ',
name: 'Fiji',
currency_code: 'FJD'
},
{
iso_code: 'FI',
name: 'Finland',
currency_code: 'EUR'
},
{
iso_code: 'FR',
name: 'France',
currency_code: 'EUR'
},
{
iso_code: 'GF',
name: 'French Guiana',
currency_code: 'EUR'
},
{
iso_code: 'PF',
name: 'French Polynesia',
currency_code: 'XPF'
},
{
iso_code: 'GA',
name: 'Gabon',
currency_code: 'USD'
},
{
iso_code: 'GM',
name: 'Gambia',
currency_code: 'GMD'
},
{
iso_code: 'GE',
name: 'Georgia',
currency_code: 'GEL'
},
{
iso_code: 'DE',
name: 'Germany',
currency_code: 'EUR'
},
{
iso_code: 'GH',
name: 'Ghana',
currency_code: 'USD'
},
{
iso_code: 'GI',
name: 'Gibraltar',
currency_code: 'GBP'
},
{
iso_code: 'GR',
name: 'Greece',
currency_code: 'EUR'
},
{
iso_code: 'GL',
name: 'Greenland',
currency_code: 'DKK'
},
{
iso_code: 'GD',
name: 'Grenada',
currency_code: 'XCD'
},
{
iso_code: 'GP',
name: 'Guadeloupe',
currency_code: 'EUR'
},
{
iso_code: 'GT',
name: 'Guatemala',
currency_code: 'GTQ'
},
{
iso_code: 'GG',
name: 'Guernsey',
currency_code: 'GBP'
},
{
iso_code: 'GN',
name: 'Guinea',
currency_code: 'GNF'
},
{
iso_code: 'GW',
name: 'Guinea-Bissau',
currency_code: 'XOF'
},
{
iso_code: 'GY',
name: 'Guyana',
currency_code: 'GYD'
},
{
iso_code: 'HT',
name: 'Haiti',
currency_code: 'HTG'
},
{
iso_code: 'HN',
name: 'Honduras',
currency_code: 'HNL'
},
{
iso_code: 'HK',
name: 'Hong Kong SAR',
currency_code: 'HKD'
},
{
iso_code: 'HU',
name: 'Hungary',
currency_code: 'HUF'
},
{
iso_code: 'IS',
name: 'Iceland',
currency_code: 'ISK'
},
{
iso_code: 'IN',
name: 'India',
currency_code: 'INR'
},
{
iso_code: 'ID',
name: 'Indonesia',
currency_code: 'IDR'
},
{
iso_code: 'IE',
name: 'Ireland',
currency_code: 'EUR'
},
{
iso_code: 'IM',
name: 'Isle of Man',
currency_code: 'GBP'
},
{
iso_code: 'IL',
name: 'Israel',
currency_code: 'ILS'
},
{
iso_code: 'IT',
name: 'Italy',
currency_code: 'EUR'
},
{
iso_code: 'JM',
name: 'Jamaica',
currency_code: 'JMD'
},
{
iso_code: 'JP',
name: 'Japan',
currency_code: 'JPY'
},
{
iso_code: 'JE',
name: 'Jersey',
currency_code: 'GBP'
},
{
iso_code: 'JO',
name: 'Jordan',
currency_code: 'USD'
},
{
iso_code: 'KZ',
name: 'Kazakhstan',
currency_code: 'KZT'
},
{
iso_code: 'KE',
name: 'Kenya',
currency_code: 'KES'
},
{
iso_code: 'KI',
name: 'Kiribati',
currency_code: 'USD'
},
{
iso_code: 'KW',
name: 'Kuwait',
currency_code: 'USD'
},
{
iso_code: 'KG',
name: 'Kyrgyzstan',
currency_code: 'KGS'
},
{
iso_code: 'LA',
name: 'Laos',
currency_code: 'LAK'
},
{
iso_code: 'LV',
name: 'Latvia',
currency_code: 'EUR'
},
{
iso_code: 'LB',
name: 'Lebanon',
currency_code: 'LBP'
},
{
iso_code: 'LS',
name: 'Lesotho',
currency_code: 'LSL'
},
{
iso_code: 'LR',
name: 'Liberia',
currency_code: 'LRD'
},
{
iso_code: 'LI',
name: 'Liechtenstein',
currency_code: 'CHF'
},
{
iso_code: 'LT',
name: 'Lithuania',
currency_code: 'EUR'
},
{
iso_code: 'LU',
name: 'Luxembourg',
currency_code: 'EUR'
},
{
iso_code: 'MO',
name: 'Macao SAR',
currency_code: 'MOP'
},
{
iso_code: 'MG',
name: 'Madagascar',
currency_code: 'USD'
},
{
iso_code: 'MW',
name: 'Malawi',
currency_code: 'MWK'
},
{
iso_code: 'MY',
name: 'Malaysia',
currency_code: 'MYR'
},
{
iso_code: 'MV',
name: 'Maldives',
currency_code: 'MVR'
},
{
iso_code: 'MT',
name: 'Malta',
currency_code: 'EUR'
},
{
iso_code: 'MQ',
name: 'Martinique',
currency_code: 'EUR'
},
{
iso_code: 'MR',
name: 'Mauritania',
currency_code: 'USD'
},
{
iso_code: 'MU',
name: 'Mauritius',
currency_code: 'MUR'
},
{
iso_code: 'YT',
name: 'Mayotte',
currency_code: 'EUR'
},
{
iso_code: 'MX',
name: 'Mexico',
currency_code: 'MXN'
},
{
iso_code: 'MD',
name: 'Moldova',
currency_code: 'MDL'
},
{
iso_code: 'MC',
name: 'Monaco',
currency_code: 'EUR'
},
{
iso_code: 'MN',
name: 'Mongolia',
currency_code: 'MNT'
},
{
iso_code: 'ME',
name: 'Montenegro',
currency_code: 'EUR'
},
{
iso_code: 'MS',
name: 'Montserrat',
currency_code: 'XCD'
},
{
iso_code: 'MA',
name: 'Morocco',
currency_code: 'MAD'
},
{
iso_code: 'MZ',
name: 'Mozambique',
currency_code: 'MZN'
},
{
iso_code: 'NA',
name: 'Namibia',
currency_code: 'NAD'
},
{
iso_code: 'NR',
name: 'Nauru',
currency_code: 'AUD'
},
{
iso_code: 'NP',
name: 'Nepal',
currency_code: 'NPR'
},
{
iso_code: 'NL',
name: 'Netherlands',
currency_code: 'EUR'
},
{
iso_code: 'NC',
name: 'New Caledonia',
currency_code: 'XPF'
},
{
iso_code: 'NZ',
name: 'New Zealand',
currency_code: 'NZD'
},
{
iso_code: 'NI',
name: 'Nicaragua',
currency_code: 'NIO'
},
{
iso_code: 'NG',
name: 'Nigeria',
currency_code: 'NGN'
},
{
iso_code: 'NU',
name: 'Niue',
currency_code: 'NZD'
},
{
iso_code: 'MK',
name: 'North Macedonia',
currency_code: 'MKD'
},
{
iso_code: 'NO',
name: 'Norway',
currency_code: 'NOK'
},
{
iso_code: 'OM',
name: 'Oman',
currency_code: 'USD'
},
{
iso_code: 'PK',
name: 'Pakistan',
currency_code: 'PKR'
},
{
iso_code: 'PA',
name: 'Panama',
currency_code: 'USD'
},
{
iso_code: 'PG',
name: 'Papua New Guinea',
currency_code: 'PGK'
},
{
iso_code: 'PY',
name: 'Paraguay',
currency_code: 'PYG'
},
{
iso_code: 'PE',
name: 'Peru',
currency_code: 'PEN'
},
{
iso_code: 'PH',
name: 'Philippines',
currency_code: 'PHP'
},
{
iso_code: 'PL',
name: 'Poland',
currency_code: 'PLN'
},
{
iso_code: 'PT',
name: 'Portugal',
currency_code: 'EUR'
},
{
iso_code: 'QA',
name: 'Qatar',
currency_code: 'QAR'
},
{
iso_code: 'RE',
name: 'Réunion',
currency_code: 'EUR'
},
{
iso_code: 'RO',
name: 'Romania',
currency_code: 'RON'
},
{
iso_code: 'RW',
name: 'Rwanda',
currency_code: 'RWF'
},
{
iso_code: 'WS',
name: 'Samoa',
currency_code: 'WST'
},
{
iso_code: 'SM',
name: 'San Marino',
currency_code: 'EUR'
},
{
iso_code: 'ST',
name: 'São Tomé & Príncipe',
currency_code: 'STD'
},
{
iso_code: 'SA',
name: 'Saudi Arabia',
currency_code: 'SAR'
},
{
iso_code: 'SN',
name: 'Senegal',
currency_code: 'XOF'
},
{
iso_code: 'RS',
name: 'Serbia',
currency_code: 'RSD'
},
{
iso_code: 'SC',
name: 'Seychelles',
currency_code: 'SCR'
},
{
iso_code: 'SL',
name: 'Sierra Leone',
currency_code: 'SLL'
},
{
iso_code: 'SG',
name: 'Singapore',
currency_code: 'SGD'
},
{
iso_code: 'SX',
name: 'Sint Maarten',
currency_code: 'USD'
},
{
iso_code: 'SK',
name: 'Slovakia',
currency_code: 'EUR'
},
{
iso_code: 'SI',
name: 'Slovenia',
currency_code: 'EUR'
},
{
iso_code: 'SB',
name: 'Solomon Islands',
currency_code: 'SBD'
},
{
iso_code: 'ZA',
name: 'South Africa',
currency_code: 'ZAR'
},
{
iso_code: 'KR',
name: 'South Korea',
currency_code: 'KRW'
},
{
iso_code: 'ES',
name: 'Spain',
currency_code: 'EUR'
},
{
iso_code: 'LK',
name: 'Sri Lanka',
currency_code: 'LKR'
},
{
iso_code: 'BL',
name: 'St. Barthélemy',
currency_code: 'EUR'
},
{
iso_code: 'SH',
name: 'St. Helena',
currency_code: 'SHP'
},
{
iso_code: 'KN',
name: 'St. Kitts & Nevis',
currency_code: 'XCD'
},
{
iso_code: 'LC',
name: 'St. Lucia',
currency_code: 'XCD'
},
{
iso_code: 'MF',
name: 'St. Martin',
currency_code: 'EUR'
},
{
iso_code: 'VC',
name: 'St. Vincent & Grenadines',
currency_code: 'XCD'
},
{
iso_code: 'SR',
name: 'Suriname',
currency_code: 'SRD'
},
{
iso_code: 'SE',
name: 'Sweden',
currency_code: 'SEK'
},
{
iso_code: 'CH',
name: 'Switzerland',
currency_code: 'CHF'
},
{
iso_code: 'TW',
name: 'Taiwan',
currency_code: 'TWD'
},
{
iso_code: 'TZ',
name: 'Tanzania',
currency_code: 'TZS'
},
{
iso_code: 'TH',
name: 'Thailand',
currency_code: 'THB'
},
{
iso_code: 'TL',
name: 'Timor-Leste',
currency_code: 'USD'
},
{
iso_code: 'TG',
name: 'Togo',
currency_code: 'XOF'
},
{
iso_code: 'TO',
name: 'Tonga',
currency_code: 'TOP'
},
{
iso_code: 'TT',
name: 'Trinidad & Tobago',
currency_code: 'TTD'
},
{
iso_code: 'TN',
name: 'Tunisia',
currency_code: 'USD'
},
{
iso_code: 'TM',
name: 'Turkmenistan',
currency_code: 'USD'
},
{
iso_code: 'TC',
name: 'Turks & Caicos Islands',
currency_code: 'USD'
},
{
iso_code: 'TV',
name: 'Tuvalu',
currency_code: 'AUD'
},
{
iso_code: 'UG',
name: 'Uganda',
currency_code: 'UGX'
},
{
iso_code: 'AE',
name: 'United Arab Emirates',
currency_code: 'AED'
},
{
iso_code: 'GB',
name: 'United Kingdom',
currency_code: 'GBP'
},
{
iso_code: 'US',
name: 'United States',
currency_code: 'USD'
},
{
iso_code: 'UY',
name: 'Uruguay',
currency_code: 'UYU'
},
{
iso_code: 'UZ',
name: 'Uzbekistan',
currency_code: 'UZS'
},
{
iso_code: 'VU',
name: 'Vanuatu',
currency_code: 'VUV'
},
{
iso_code: 'VA',
name: 'Vatican City',
currency_code: 'EUR'
},
{
iso_code: 'VE',
name: 'Venezuela',
currency_code: 'USD'
},
{
iso_code: 'VN',
name: 'Vietnam',
currency_code: 'VND'
},
{
iso_code: 'WF',
name: 'Wallis & Futuna',
currency_code: 'XPF'
},
{
iso_code: 'ZM',
name: 'Zambia',
currency_code: 'ZMW'
},
{
iso_code: 'ZW',
name: 'Zimbabwe',
currency_code: 'USD'
}
]
};
window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","badge_star_color":"#f5b400","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"{{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank you! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"{{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"last_initial","widget_rating_filter_color":"#4C21FF","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","widget_star_color":"#f5b400","verified_badge_text":"Verified","verified_badge_bg_color":"#4C21FF","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":true,"widget_location_format":"country_iso_code","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":true,"widget_theme":"","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"text","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"vintage","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":true,"widget_pagination_use_custom_color":true,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":true,"mute_video_by_default":true,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":true,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":true,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":false,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":true,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":true,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subtitle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#232b36","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }}","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":true,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":true,"widget_reviewer_name_color":"#232B36","widget_write_review_text_color":"","widget_write_review_bg_color":"#232B36","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"load_more","widget_load_more_text":"Load More","widget_load_more_color":"#4C21FF","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":true,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":true,"widget_translate_review_content_method":"automatic","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":true,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":false,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"default","review_form_corner_style":"soft","review_form_star_color":{},"review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":{},"review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":true,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":true,"show_negative_reviews_help_screen":true,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":true,"transparency_badges_from_another_provider":true,"transparency_badges_collected_from_store_visitor":true,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":true,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_store_review_label_text":"Review about the store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural":"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"We’ll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"platform":"shopify","branding_url":"https://app.judge.me/reviews/stores/rayconglobal.com","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Raycon ","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":true,"shop_locale":"en","enable_multi_locales_translations":true,"show_review_title_input":false,"review_verification_email_status":"never","require_verification_before_submit":false,"negative_review_notification_email":"support@rayconglobal.com","can_be_branded":true,"reply_name_text":"Raycon "}; .jdgm-xx{left:0}:root{--jdgm-primary-color: #232b36;--jdgm-secondary-color: rgba(35,43,54,0.1);--jdgm-star-color: #f5b400;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #232B36;--jdgm-paginate-color: #4C21FF;--jdgm-border-radius: 10;--jdgm-reviewer-name-color: #232B36}.jdgm-histogram__bar-content{background-color:#4C21FF}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#4C21FF}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-preview-badge .jdgm-star.jdgm-star{color:#f5b400}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-fullname{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Raycon '}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )}
@-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important}
!function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/019c89b5-c5cd-7f86-b71c-6141193be68a/judgeme-extensions-366/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/",
jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){
!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!",
a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))},
jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))},
t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_HOST+"widget_v3/base.css"):
jdgm.loadCSS(jdgm.CDN_HOST+"widget/base.css"):jdgm.loadCSS(jdgm.CDN_HOST+"shopify_v2.css")
)}))}(document);
(function() {
var jdgmThemeFixes = null;
if (!jdgmThemeFixes) return;
var thisThemeFix = jdgmThemeFixes[Shopify.theme.id];
if (!thisThemeFix) return;
if (thisThemeFix.html) {
document.addEventListener("DOMContentLoaded", function() {
var htmlDiv = document.createElement('div');
htmlDiv.classList.add('jdgm-theme-fix-html');
htmlDiv.innerHTML = thisThemeFix.html;
document.body.append(htmlDiv);
});
};
if (thisThemeFix.css) {
var styleTag = document.createElement('style');
styleTag.classList.add('jdgm-theme-fix-style');
styleTag.innerHTML = thisThemeFix.css;
document.head.append(styleTag);
};
if (thisThemeFix.js) {
var scriptTag = document.createElement('script');
scriptTag.classList.add('jdgm-theme-fix-script');
scriptTag.innerHTML = thisThemeFix.js;
document.head.append(scriptTag);
};
})();
(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 24040041,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());
(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 24040041,storefrontBaseUrl: "https://rayconglobal.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["2dca8a86"],webPixelsConfigList: [{"id":"1289781271","configuration":"{\"shopUrl\":\"raycon.myshopify.com\",\"apiUrl\":\"https:\\\/\\\/services.nofraud.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0cf396a0daab06a8120b15747f89a0e3","type":"APP","apiClientId":1380557,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"873791511","configuration":"{\"pixelCode\":\"C9UJV83C77UDNJM2S2I0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"762085399","configuration":"{\"eventKey\":\"197c4174-a796-4e5f-9c70-ea44be1047b3\",\"name\":\"offline_raycon.myshopify.com - Axon Pixel\",\"storefrontToken\":\"c48c136974cfe4555a5f67712a06f508\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b6816321e6f89f6ea406acf7824f1697","type":"APP","apiClientId":256560922625,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"658243607","configuration":"{\"shopId\":\"3994\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e57a43765e0d230c1bcb12178c1ff13f","type":"APP","apiClientId":2328352,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"638124055","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"34ad157958823915625854214640f0bf","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"527695895","configuration":"{\"Enabled\":\"false\",\"DeveloperPreview\":\"false\",\"UpdatedAt\":\"2026-02-23T09:04:51.491Z\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9ffa6f465e95a46be44df3f42fbd3ef7","type":"APP","apiClientId":34646425601,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"518717463","configuration":"{\"accountID\":\"LuhenE\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"524f6c1ee37bacdca7657a665bdca589","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"407470103","configuration":"{\"shopId\":\"raycon.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"407339031","configuration":"{\"accountID\":\"1220658\",\"workspaceId\":\"f3180089-b890-48ef-9464-c496e212cf54\",\"projectId\":\"fb26f090-0ab1-4b11-bb96-9f0ab37adae9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"52fc54f4608fa63b89d7f7c4f9344a98","type":"APP","apiClientId":5461967,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"304644119","configuration":"{\"shopDomain\":\"raycon.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7f2de0ecb6b420d2fa07cf04a37a4dbf","type":"APP","apiClientId":2436932,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"200441879","configuration":"{\"hashed_organization_id\":\"5d6f70e26cc4422e7f895a9db17fa18a_v1\",\"app_key\":\"raycon\",\"allow_collect_personal_data\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"da79698a1971ddd00d23b0a5b73c0d33","type":"APP","apiClientId":4551725,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"180322327","configuration":"{\"accountId\":\"Global-e\",\"merchantId\":\"1720\",\"baseApiUrl\":\"https:\/\/checkout-service.global-e.com\/api\/v1\",\"siteId\":\"7ce243a1e1a2\",\"BorderfreeMetaCAPIEnabled\":\"False\",\"FT_IsLegacyAnalyticsSDKEnabled\":\"True\",\"FT_IsAnalyticsSDKEnabled\":\"False\",\"CDNUrl\":\"https:\/\/webservices.global-e.com\/\",\"BfGoogleAdsEnabled\":\"false\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"07f17466e0885c524b92de369a41e2cd","type":"APP","apiClientId":5806573,"privacyPurposes":["SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2719767","configuration":"{\"northbeamId\": \"89574596_2232_4ac4_a31d_4adf38d20c77\", \"collectorDomain\": \"i.rayconglobal.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e46c2d6352a678fc6581f4bd0bc772e1","type":"APP","apiClientId":3188721,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1671191","configuration":"{\"config_url\": \"\/a\/elevar\/static\/configs\/eaf3284a91c577096e0e52bbfe2a36e0b2d2c0a0\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ab86028887ec2044af7d02b854e52653","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"24346647","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Elevar - Checkout Tracking"},{"id":"24543255","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["SALE_OF_DATA"],"name":"Northbeam - Checkout"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Raycon ","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"raycon.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/rayconglobal.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"purchasingCompany":null},},"https://rayconglobal.com/cdn","3c1f2529w4065d210p03530cb8m151179d6",{"modern":"","legacy":""},{"shopId":"24040041","storefrontBaseUrl":"https:\/\/rayconglobal.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"2dca8a86\"]","isMerchantRequest":"false","hashVersion":"3c1f2529w4065d210p03530cb8m151179d6","publish":"custom","events":"[[\"page_viewed\",{}]]"});
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'USD';
var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":47354675223,"requestId":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 24040041,
theme_id: 172276023319,
app_name: "storefront",
context_url: window.location.href,
source_url: "//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//rayconglobal.com/cdn/s/trekkie.storefront.79c9ee2a1f7d217701a15e49200b1e976848d6d6.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":24040041,"isMerchantRequest":null,"themeId":172276023319,"themeCityHash":"7981963829326285226","contentLanguage":"en","currency":"USD"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["65f19447","b5387b81"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":47354675223,"requestId":"6ff09647-59c5-4945-aac0-5c955681f72b-1771838369","shopifyEmitted":true});
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//rayconglobal.com/cdn/shopifycloud/storefront/assets/shop_events_listener-3da45d37.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();
if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
window.ga = function ga() {
(window.ga.q = window.ga.q || []).push(arguments);
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
}
console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
};
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
}
}