// © Copyright BMC Web 2025 var BMCWeb = { site: { id: "0d6ccbc2-d05d-4d59-bc0c-7bb9e402d88d", name: "Euan Orlando", website: "https://euanorlando.com/", hostname: "euanorlando.com", timezone: "Australia/Sydney", foundedAt: new Date("2025-09-20"), siteAge: 0.19677275516678017, contact: {"email":"","phone":[]}, address: null }, geo: { regionCode: "OH", regionName: "Ohio", countryCode: "US", countryName: "United States", coLocation: "ORD" }, view: { id: crypto.randomUUID(), start: new Date().getTime() }, scripts: {}, content: { legal: {"privacyPolicy":"https://bmcweb.co.nz/legal/2aa5a309-5768-40d2-a091-e07a9c1cbec0"} }, notepad: {"loadDuration":"1194"}, metadata: [] }; sessionStorage.setItem("d2bcfe3b", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIyYmNiM2FlYy02MmQ5LTQzZTctYWY3OC01OWU3ZTBkODA2NGYiLCJpYXQiOjE3NjQ1MzkzMDYxMjB9.f0bcec72404233cb47a7d11533956634752dc6cfdb33a4847f65abcd4924d781"); localStorage.getItem("f4d7bf9e") || localStorage.setItem("f4d7bf9e", JSON.stringify({ id: crypto.randomUUID(), addedAt: new Date().getTime() })); sessionStorage.getItem("96b23474") || sessionStorage.setItem("96b23474", JSON.stringify({ id: crypto.randomUUID(), start: new Date().getTime(), end: new Date().getTime() })); fetch("https://api.bmcweb.co.nz/user/token/get", { method: "POST", body: JSON.stringify({ url: window.location.href, screen: [screen.width, screen.height] }) }) .then(data => data.json()) .then(data => { if (data.jwt) localStorage.setItem("ae0e1be9", data.jwt); }); BMCWeb.scripts.refresh = function() { var sess = JSON.parse(sessionStorage.getItem("96b23474")); sess.end = new Date().getTime(); sessionStorage.setItem("96b23474", JSON.stringify(sess)); }; BMCWeb.scripts.refresh(); window.addEventListener("popstate", BMCWeb.scripts.refresh); window.addEventListener("mousemove", BMCWeb.scripts.refresh); window.addEventListener("click", BMCWeb.scripts.refresh); window.addEventListener("focus", BMCWeb.scripts.refresh); window.addEventListener("blur", BMCWeb.scripts.refresh); BMCWeb.scripts.getActiveTime = function() { var user = JSON.parse(localStorage.getItem("f4d7bf9e")); var now = new Date().getTime(); var session = JSON.parse(sessionStorage.getItem("96b23474")); return { view: now - BMCWeb.view.start, session: now - session.start, user: now - user.addedAt }; }; BMCWeb.scripts.getPerformance = function() { if (!performance) return {}; const timing = performance.timing; return { loadTime: timing.loadEventEnd - timing.navigationStart, domContentLoaded: timing.domContentLoadedEventEnd - timing.navigationStart, firstPaint: performance.getEntriesByType('paint').find(p => p.name === 'first-paint')?.startTime || 0 }; }; BMCWeb.scripts.stringToSlug = function(string) { return String(string) .toLowerCase() .replaceAll("ā", "a") .replaceAll("ē", "e") .replaceAll("ī", "i") .replaceAll("ō", "o") .replaceAll("ū", "u") .split("") .filter((elem) => /^[a-zA-Z0-9 ]+$/.test(elem)) .join("") .split(" ") .filter((elem) => elem) .join("-"); }; var stringToSlug = BMCWeb.scripts.stringToSlug; BMCWeb.scripts.getSearchParams = function(url) { url = url || window.location.href; try { url = new URL(url); } catch (error) { return { success: false, error: "Invalid URL" }; }; var search = Object.fromEntries(url.searchParams.entries()); return { success: true, search }; }; BMCWeb.scripts.waitForVar = function(gtr, interval = 100) { return new Promise((resolve) => { const timer = setInterval(() => { try { const val = gtr(); if (val && typeof val !== "undefined") { clearInterval(timer); resolve(val); }; } catch (e) {}; }, interval); }); }; BMCWeb.scripts.normalString = function(str) { return str.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/[-_]/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' '); }; BMCWeb.scripts.getScrollPercent = function() { const scrollX = window.scrollX || document.documentElement.scrollLeft; const scrollY = window.scrollY || document.documentElement.scrollTop; const docWidth = document.documentElement.scrollWidth - window.innerWidth; const docHeight = document.documentElement.scrollHeight - window.innerHeight; return [(scrollX / docWidth) * 100, (scrollY / docHeight) * 100]; }; BMCWeb.scripts.setFavicon = function(url) { let link = document.querySelector("link[rel~='icon']"); if (!link) { link = document.createElement('link'); link.rel = 'icon'; document.head.appendChild(link); }; link.href = url; }; BMCWeb.scripts.importCSS = function(url) { var link = document.createElement("link"); link.rel = "stylesheet"; link.href = url; document.head.appendChild(link); }; BMCWeb.scripts.importJS = function(src) { var s = document.createElement("script"); s.src = src; document.head.appendChild(s); }; document.addEventListener("DOMContentLoaded", function(){ var comp = window["Components"] || window["components"] || window["comps"]; if (comp && Object.keys(comp)?.length) { BMCWeb.components = Object.keys(comp).map((c) => c = { id: c, data: comp[c] }).filter(i => /<\/?[a-z][\s\S]*>/i.test(i.data)); }; if (BMCWeb.components?.length) BMCWeb.components.forEach((elem) => { ["data-component", "component", "data-comp", "site-component"].forEach((key) => { document.querySelectorAll(`[${key}="${elem.id}"]`).forEach((item) => { item.className = elem.id; item.innerHTML = elem.data; }); }); }); document.dispatchEvent(new CustomEvent("complete.componentsLoad")); }); BMCWeb.scripts.getTimezone = function(timeZone) { const date = new Date(); const options = { timeZone, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }; const parts = new Intl.DateTimeFormat('en-US', options).formatToParts(date); const get = type => parts.find(p => p.type === type).value; return new Date(`${get('year')}-${get('month')}-${get('day')}T${get('hour')}:${get('minute')}:${get('second')}`); }; var getTimezone = BMCWeb.scripts.getTimezone; BMCWeb.scripts.addToNewsletter = async function(email, newsletterId) { var req = await (await fetch(`https://api.bmcweb.co.nz/apps/newsletter/add-email`, { method: "POST", body: JSON.stringify({ url: window.location.href, email, newsletterId }) })).json(); alert(req.success ? `Added to Mailing List` : `Something went wrong`); }; (function(){ var user = JSON.parse(localStorage.getItem("f4d7bf9e")); user.allowCookies = user.allowCookies === true; localStorage.setItem("f4d7bf9e", JSON.stringify(user)); })(); BMCWeb.scripts.enableCookies = function() { var user = JSON.parse(localStorage.getItem("f4d7bf9e")); user.allowCookies = true; localStorage.setItem("f4d7bf9e", JSON.stringify(user)); }; BMCWeb.scripts.waitMultiVars = async function(arr) { arr = Array.isArray(arr) ? arr : []; for (var item of arr) await BMCWeb.scripts.waitForVar(item); }; BMCWeb.scripts.findInArr = { hex: function(arr, backup) { arr = Array.isArray(arr) ? arr : []; var val = arr.findIndex(e => /^#?([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(e)); return { position: val === -1 ? null : val, value: arr[val] || backup || null }; } }; BMCWeb.scripts.getGeo = async function(callback) { var data = await (await fetch("https://api.bmcweb.co.nz/user/geo")).json(); if (callback && typeof callback === "function") callback(data); return data; }; BMCWeb.scripts.formatNames = function(names) { const len = names.length; if (len === 0) return ''; if (len === 1) return names[0]; if (len === 2) return `${names[0]} & ${names[1]}`; return `${names.slice(0, -1).join(', ')} & ${names[len - 1]}`; }; if (!BMCWeb.metadata.limitRequests) { navigator.sendBeacon("https://api.bmcweb.co.nz/process"); navigator.sendBeacon("https://api.bmcweb.co.nz/process/uptime"); }; BMCWeb.dataFill = {}; BMCWeb.scripts.addToDataFill = function(key, value) { BMCWeb.scripts.updateDataFill(); if (!key || value === undefined) return { success: false, error: "Missing Content" }; if (typeof value !== "string") return { success: false, error: "Value Must Be String" }; if (BMCWeb.dataFill[key] === value) return { success: false, error: "Already Exists", value }; BMCWeb.dataFill[key] = value; BMCWeb.scripts.updateDataFill(); return { success: true, value }; }; BMCWeb.scripts.updateDataFill = function() { var data = Object.keys(BMCWeb.dataFill).map((key) => key = { key, value: BMCWeb.dataFill[key] }); for (var item of data) { function getElem(elem) { if (elem && elem instanceof HTMLElement && elem.innerHTML !== item.value) elem.innerHTML = item.value; }; document.querySelectorAll(`[data-fill="${item.key}"]`).forEach(getElem); document.querySelectorAll(`[datafill="${item.key}"]`).forEach(getElem); document.querySelectorAll(`[filldata="${item.key}"]`).forEach(getElem); document.querySelectorAll(`[fillcontent="${item.key}"]`).forEach(getElem); document.querySelectorAll(`[content-fill="${item.key}"]`).forEach(getElem); }; }; BMCWeb.scripts.updateDataFill(); document.addEventListener("DOMContentLoaded", BMCWeb.scripts.updateDataFill); BMCWeb.scripts.checkTracking = function() { return localStorage.getItem("BMCWeb_DNT") === "true"; }; document.addEventListener("DOMContentLoaded", function(){ function getLogo(logo) { if (logo instanceof HTMLElement) { logo.setAttribute("title", logo.getAttribute("title") || BMCWeb.site.name); }; }; document.querySelectorAll(`[data-fitlogo]`).forEach(getLogo); document.querySelectorAll(`[fitlogo]`).forEach(getLogo); document.querySelectorAll(`.fitLogo`).forEach(getLogo); document.querySelectorAll(`.fitlogo`).forEach(getLogo); }); (function(){ if (BMCWeb.metadata.limitRequests || BMCWeb.scripts.checkTracking() || !Number(BMCWeb.notepad?.loadDuration)) return; const paint = performance.getEntriesByType('paint'); fetch("https://api.bmcweb.co.nz/analytics/load-stats", { method: "POST", body: JSON.stringify({ url: window.location.href, session: sessionStorage.getItem("96b23474") ? JSON.parse(sessionStorage.getItem("96b23474")).id : null, time: new Date().getTime(), colo: BMCWeb.geo.coLocation, times: { scriptLoad: Number(BMCWeb.notepad.loadDuration), firstPaint: paint.find(e=>e.name==='first-paint')?.startTime, firstContentfulPaint: paint.find(e=>e.name==='first-contentful-paint')?.startTime, domContentLoaded: performance.timing.domContentLoadedEventEnd - performance.timing.navigationStart } }) }); })(); BMCWeb.scripts.importCSS("https://scripts.bmcweb.co.nz/import?site=0d6ccbc2-d05d-4d59-bc0c-7bb9e402d88d&type=style"); sessionStorage.getItem("22db1b7a") || sessionStorage.setItem("22db1b7a", JSON.stringify({ pages: [], pings: [], events: [] })); BMCWeb.scripts.logAnalytics = function() { if (BMCWeb.metadata.limitRequests || BMCWeb.scripts.checkTracking()) return; BMCWeb.scripts.refresh(); var data = { url: window.location.href, site: BMCWeb.site.id, time: new Date().getTime(), platform: navigator.platform, documentSize: [document.documentElement?.scrollWidth, document.documentElement?.scrollHeight], languages: navigator.languages, referer: document.referrer || document.referer, user: localStorage.getItem("f4d7bf9e") ? JSON.parse(localStorage.getItem("f4d7bf9e")) : {}, session: sessionStorage.getItem("96b23474") ? JSON.parse(sessionStorage.getItem("96b23474")) : {}, ...(sessionStorage.getItem("22db1b7a") ? JSON.parse(sessionStorage.getItem("22db1b7a")) : { pages: [], pings: [], events: [] }), performance: BMCWeb.scripts.getPerformance() }; navigator.sendBeacon("https://api.bmcweb.co.nz/analytics/log", JSON.stringify(data)); }; BMCWeb.scripts.analyticsPing = function() { var session = JSON.parse(sessionStorage.getItem("22db1b7a")); var ping = { url: window.location.href, title: document.title, view: BMCWeb.view.id, screen: [screen.width, screen.height, screen.availWidth, screen.availHeight], hidden: document.hidden, referrer: document.referrer || document.referer, online: navigator.onLine }; if (!session.pings[0] || session.pings[0].data !== JSON.stringify(ping)) session.pings.unshift({ id: crypto.randomUUID(), time: new Date().getTime(), data: JSON.stringify(ping) }); if (!session.pages[0] || session.pages[0].url !== window.location.href || session.pages[0].view !== BMCWeb.view.id) session.pages.unshift({ id: crypto.randomUUID(), view: BMCWeb.view.id, url: window.location.href, start: new Date().getTime(), end: new Date().getTime() }); var page = session.pages[0]; page.end = new Date().getTime(); sessionStorage.setItem("22db1b7a", JSON.stringify(session)); }; BMCWeb.scripts.analyticsPing(); window.addEventListener("mousemove", BMCWeb.scripts.analyticsPing); window.addEventListener("click", BMCWeb.scripts.analyticsPing); window.addEventListener("popstate", BMCWeb.scripts.analyticsPing); window.addEventListener("focus", BMCWeb.scripts.analyticsPing); window.addEventListener("blur", BMCWeb.scripts.analyticsPing); BMCWeb.scripts.logAnalytics(); window.addEventListener("beforeunload", BMCWeb.scripts.logAnalytics); BMCWeb.scripts.refreshAnalytics = function() { if (BMCWeb.scripts.checkTracking()) return; setTimeout(BMCWeb.scripts.refreshAnalytics, BMCWeb.metadata.limitRequests ? 50000 : 10000); if (!sessionStorage.getItem("96b23474")) return; navigator.sendBeacon("https://api.bmcweb.co.nz/analytics/ping", JSON.stringify({ site: BMCWeb.site.id, session: JSON.parse(sessionStorage.getItem("96b23474")).id, url: window.location.href })); }; BMCWeb.scripts.refreshAnalytics(); BMCWeb.content.socialMedia = [{"appId":"instagram","appName":"Instagram","appIcon":"fa-brands fa-instagram","username":"euanorlandomusic","id":"","url":"https://instagram.com/euanorlandomusic","addedAt":"2025-10-01T20:26:07.425Z"},{"appId":"tiktok","appName":"TikTok","appIcon":"fa-brands fa-tiktok","username":"euanorlandomusic","id":"","url":"https://www.tiktok.com/@euanorlandomusic","addedAt":"2025-10-01T20:26:07.425Z"},{"appId":"youtube","appName":"YouTube","appIcon":"fa-brands fa-youtube","username":"EuanOrlandoMusic","id":"","url":"https://www.youtube.com/@EuanOrlandoMusic","addedAt":"2025-10-01T20:26:07.425Z"}];