{"webLayers":[{"_id":"623cd40fc4128709dbc140a9","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"sms_banner=home","type":"contains"}],"exclude_pages":null},"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]},{"_id":"6a0dcea7268563b2a63c9f4d","date_filter":{"enabled":false,"from_date":null,"to_date":null},"trigger":{"include_pages":[{"url":"#subscribethankyou","type":"contains"}],"exclude_pages":null},"device_target":{"type":"any"},"frequency":"always","uses_personalization":true,"data":"","variables_target":null,"page_vars":[]}],"experiments":[],"constantManagedTags":[{"uses_overlay":false,"type":"js","parametrized_definition":"function getCookie(cname) {\n        var name = cname + \"=\";\n        var ca = document.cookie.split(';');\n        for (var i = 0; i \u003c ca.length; i++) {\n            var c = ca[i];\n            while (c.charAt(0) == ' ') {\n                c = c.substring(1);\n            }\n            if (c.indexOf(name) == 0) {\n                return c.substring(name.length, c.length);\n            }\n        }\n        return undefined;\n    }\n    \nlet br_cookie = getCookie(\"__exponea_etc__\");\n\nwindow._svq = window._svq || [];  \n\nwindow._svq.push(['_setUID', br_cookie]);\n\n   window._svq.push(['_trackPageView']);\n\n   (function (d, c) {           \n\n        var sv=d.createElement(c); sv.type='text/javascript';             \n\n            sv.src='//track.sv.rkdms.com/js/sv.js?sv_cid=2591_03914\u0026sv_origin=raymourflanigan.com';         \n\n        var s=d.getElementsByTagName(c)[0]; s.parentNode.insertBefore(sv, s);    \n\n})(document, 'script');","trigger":{"include_pages":[{"type":"any"}],"exclude_pages":null},"_id":"6616bdcb08df9caba3c605fc"},{"uses_overlay":false,"type":"js","parametrized_definition":"function getCookie(cname) {\n    var name = cname + \"=\";\n    var ca = document.cookie.split(';');\n    for (var i = 0; i \u003c ca.length; i++) {\n        var c = ca[i];\n        while (c.charAt(0) == ' ') {\n            c = c.substring(1);\n        }\n        if (c.indexOf(name) == 0) {\n            return c.substring(name.length, c.length);\n        }\n    }\n    return undefined;\n}\n\nlet br_cookie = getCookie(\"__exponea_etc__\");\n\n!function(){\n    var geq = window.geq = window.geq || [];\n    if (geq.initialize) return;\n    if (geq.invoked) {\n        if (window.console \u0026\u0026 console.error) {\n            console.error(\"GE snippet included twice.\");\n        }\n        return;\n    }\n    geq.invoked = true;\n    geq.methods = [\"page\", \"suppress\", \"track\", \"doNotTrack\", \"trackOrder\", \"identify\", \"addToCart\", \"callBack\", \"event\"];\n    geq.factory = function(method){\n        return function(){\n            var args = Array.prototype.slice.call(arguments);\n            args.unshift(method);\n            geq.push(args);\n            return geq;\n        };\n    };\n    for (var i = 0; i \u003c geq.methods.length; i++) {\n        var key = geq.methods[i];\n        geq[key] = geq.factory(key);\n    }\n    geq.load = function(key){\n        var script = document.createElement(\"script\");\n        script.type = \"text/javascript\";\n        script.async = true;\n        if (location.href.includes(\"vge=true\")) {\n            script.src = \"https://s3-us-west-2.amazonaws.com/jsstore/a/\" + key + \"/ge.js?v=\" + Math.random();\n        } else {\n            script.src = \"https://s3-us-west-2.amazonaws.com/jsstore/a/\" + key + \"/ge.js\";\n        }\n        var first = document.getElementsByTagName(\"script\")[0];\n        first.parentNode.insertBefore(script, first);\n    };\n    geq.SNIPPET_VERSION = \"1.6.1\";\n    geq.load(\"JKRHXWRN\"); // Replace with actual key\n}();\n\nif (br_cookie) {\n    var userIdentifier = { user_id: br_cookie };\n    geq.identify(userIdentifier);\n}","trigger":{"include_pages":[{"type":"any"}],"exclude_pages":null},"_id":"67e2eee5105918d50414cbe6"},{"uses_overlay":false,"type":"js","parametrized_definition":"(function() {\n    /*\n     jQuery v1.9.1 (c) 2005, 2012\n     jQuery Foundation, Inc. jquery.org/license.\n    */\n    var g = /\\[object (Boolean|Number|String|Function|Array|Date|RegExp)\\]/;\n\n    function h(a) {\n        return null == a ? String(a) : (a = g.exec(Object.prototype.toString.call(Object(a)))) ? a[1].toLowerCase() : \"object\"\n    }\n\n    function k(a, b) {\n        return Object.prototype.hasOwnProperty.call(Object(a), b)\n    }\n\n    function m(a) {\n        if (!a || \"object\" != h(a) || a.nodeType || a == a.window) return !1;\n        try {\n            if (a.constructor \u0026\u0026 !k(a, \"constructor\") \u0026\u0026 !k(a.constructor.prototype, \"isPrototypeOf\")) return !1\n        } catch (b) {\n            return !1\n        }\n        for (var c in a);\n        return void 0 === c || k(a, c)\n    };\n    /*\n     Copyright 2012 Google Inc. All rights reserved. */\n    function n(a, b, c) {\n        this.b = a;\n        this.f = b || function() {};\n        this.d = !1;\n        this.a = {};\n        this.c = [];\n        this.e = p(this);\n        r(this, a, !c);\n        var d = a.push,\n            e = this;\n        a.push = function() {\n            var b = [].slice.call(arguments, 0),\n                c = d.apply(a, b);\n            r(e, b);\n            return c\n        }\n    }\n    window.DataLayerHelper = n;\n    n.prototype.get = function(a) {\n        var b = this.a;\n        a = a.split(\".\");\n        for (var c = 0; c \u003c a.length; c++) {\n            if (void 0 === b[a[c]]) return;\n            b = b[a[c]]\n        }\n        return b\n    };\n    n.prototype.flatten = function() {\n        this.b.splice(0, this.b.length);\n        this.b[0] = {};\n        s(this.a, this.b[0])\n    };\n\n    function r(a, b, c) {\n        for (a.c.push.apply(a.c, b); !1 === a.d \u0026\u0026 0 \u003c a.c.length;) {\n            b = a.c.shift();\n            if (\"array\" == h(b)) a: {\n                var d = b,\n                    e = a.a;\n                if (\"string\" == h(d[0])) {\n                    for (var f = d[0].split(\".\"), u = f.pop(), d = d.slice(1), l = 0; l \u003c f.length; l++) {\n                        if (void 0 === e[f[l]]) break a;\n                        e = e[f[l]]\n                    }\n                    try {\n                        e[u].apply(e, d)\n                    } catch (v) {}\n                }\n            }\n            else if (\"function\" == typeof b) try {\n                    b.call(a.e)\n                } catch (w) {} else if (m(b))\n                    for (var q in b) s(t(q, b[q]), a.a);\n                else continue;\n            c || (a.d = !0, a.f(a.a, b), a.d = !1)\n        }\n    }\n\n    function p(a) {\n        return {\n            set: function(b, c) {\n                s(t(b, c), a.a)\n            },\n            get: function(b) {\n                return a.get(b)\n            }\n        }\n    }\n\n    function t(a, b) {\n        for (var c = {}, d = c, e = a.split(\".\"), f = 0; f \u003c e.length - 1; f++) d = d[e[f]] = {};\n        d[e[e.length - 1]] = b;\n        return c\n    }\n\n    function s(a, b) {\n        for (var c in a)\n            if (k(a, c)) {\n                var d = a[c];\n                \"array\" == h(d) ? (\"array\" == h(b[c]) || (b[c] = []), s(d, b[c])) : m(d) ? (m(b[c]) || (b[c] = {}), s(d, b[c])) : b[c] = d\n            }\n    };\n})();\n\nfunction process(model, m) {\n\tif (m.event == \"add-to-cart\") {\n\t\t\n\t\t// console.log(\"BR TEST\")\n\t\t\n\t\texponea.showBanner(\"66d1d1f67e5a5ebef5f8f0d7\")\n\t\t\n\t\t/*\n\t\t*\tMODIFY EVENT PROPERTIES\n\t\t*/\n\t\t\n\t\t// switch(m.event_name){\n\t\t// \tcase \"view_item\":\n\t\t// \t\tm.event_properties.price = parseFloat(price.split(\"€\")[0]);\n\t\t// \t\tbreak;\n\t\t// \tdefault:\n\t\t// \t\tbreak;\n\t\t// }\n\t\t\n\t\t// exponea.track(m.event_name,m.event_properties);\n\t}\n}\n\nnew DataLayerHelper(dataLayer, process, true);","trigger":{"include_pages":[{"type":"regex","regex":".*\\d{9}.*"}],"exclude_pages":null},"_id":"66cf609474c0c8db3003ef44"},{"uses_overlay":true,"type":"html","parametrized_definition":"\u003cscript\u003e\n(function() {\n  let attempts = 0;\n  const interval = setInterval(() =\u003e {\n    attempts++;\n\n    // Get email from DOM\n    const subheading = document.querySelector('.OrderConfirmation__OrderSubheading');\n    const label = document.querySelector('.OrderSummaryRow__Item .OrderSummaryRow__Label');\n    const email = subheading?.textContent.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/)?.[0]\n               || label?.textContent.trim();\n\n    // Get order number and amount from GA4\n    const ga4 = window.dataLayer?.find(d =\u003e d.event === 'ga4_transaction');\n    const order_number_rt = ga4?.ecommerce?.transaction_id || \"\";\n    const order_amount_rt = ga4?.ecommerce?.value;\n\n    // Send only if all required data is available\n    if (email \u0026\u0026 order_number_rt \u0026\u0026 order_amount_rt) {\n      //console.log(\"Tracking order\", { order_number: order_number_rt, order_amount: order_amount_rt, email });\n      geq.trackOrder({\n        order_number: order_number_rt,\n        order_amount: order_amount_rt,\n        order_email: email,\n      });\n      clearInterval(interval);\n    }\n\n    if (attempts \u003e 20) clearInterval(interval);\n  }, 250);\n})();\n\u003c/script\u003e\n","trigger":{"include_pages":[{"url":"/checkout/thank-you","type":"contains"}],"exclude_pages":null},"_id":"67e5b36678adeaa53cc391c4"}],"vars":{"data":[{"id":"6a0dda6cfc56b443f319f42a","name":"email_from_url","variable":{"type":"query","query":{"key":"email"}}}]}}