(function () { 'use strict'; var STORAGE_PREFIX = 'bs_attribution_'; var COOKIE_MAX_AGE = 60 * 60 * 24 * 90; var QUERY_FIELDS = [ 'gclid', 'gbraid', 'wbraid', 'gad_source', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'utm_id' ]; var FORM_FIELDS = QUERY_FIELDS.concat([ 'landing_page', 'first_page', 'referrer' ]); function cookieDomain() { return /(^|\.)blackswanbss\.com$/i.test(window.location.hostname) ? '; Domain=.blackswanbss.com' : ''; } function setStoredValue(name, value, overwrite) { if (!value) return; var key = STORAGE_PREFIX + name; var existing = getStoredValue(name); if (existing && !overwrite) return; try { window.localStorage.setItem(key, value); } catch (error) { // Cookies remain the fallback when localStorage is unavailable. } document.cookie = encodeURIComponent(key) + '=' + encodeURIComponent(value) + '; Path=/; Max-Age=' + COOKIE_MAX_AGE + '; SameSite=Lax; Secure' + cookieDomain(); } function getStoredValue(name) { var key = STORAGE_PREFIX + name; try { var localValue = window.localStorage.getItem(key); if (localValue) return localValue; } catch (error) { // Continue to the cookie fallback. } var encodedKey = encodeURIComponent(key) + '='; var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0; i < cookies.length; i += 1) { if (cookies[i].indexOf(encodedKey) === 0) { return decodeURIComponent(cookies[i].slice(encodedKey.length)); } } return ''; } function clearStoredValue(name) { var key = STORAGE_PREFIX + name; try { window.localStorage.removeItem(key); } catch (error) { // Continue to clear the cookie fallback. } document.cookie = encodeURIComponent(key) + '=; Path=/; Max-Age=0' + '; SameSite=Lax; Secure' + cookieDomain(); } function captureAttribution() { var params = new URLSearchParams(window.location.search); var hasCampaignParams = QUERY_FIELDS.some(function (name) { return Boolean(params.get(name)); }); if (hasCampaignParams) { QUERY_FIELDS.forEach(clearStoredValue); clearStoredValue('referrer'); } QUERY_FIELDS.forEach(function (name) { var value = params.get(name); if (value) setStoredValue(name, value, true); }); setStoredValue('landing_page', window.location.href, hasCampaignParams); setStoredValue('first_page', window.location.href, false); setStoredValue('referrer', document.referrer, hasCampaignParams); } function populateForms(root) { var scope = root && root.querySelectorAll ? root : document; FORM_FIELDS.forEach(function (name) { var value = getStoredValue(name); if (!value) return; var fields = scope.querySelectorAll('input[name="' + name + '"]'); for (var i = 0; i < fields.length; i += 1) { fields[i].value = value; } }); } captureAttribution(); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { populateForms(document); }); } else { populateForms(document); } document.addEventListener('focusin', function (event) { var form = event.target && event.target.closest ? event.target.closest('.wpcf7-form') : null; if (form) populateForms(form); }); document.addEventListener('wpcf7beforesubmit', function (event) { populateForms(event.target || document); }); if (window.MutationObserver) { var observer = new MutationObserver(function (mutations) { for (var i = 0; i < mutations.length; i += 1) { if (mutations[i].addedNodes.length) { populateForms(document); break; } } }); observer.observe(document.documentElement, { childList: true, subtree: true }); } }());