window.tqbUtmTracking = window.tqbUtmTracking || {}; if (!window.tqbUtmTracking.hasInitialized) { // Define expiration time window.tqbUtmTracking.EXPIRATION_TIME = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds window.tqbUtmTracking.getParamsFromURL = function () { const urlParams = new URLSearchParams(window.location.search); return { utm_medium: urlParams.get("utm_medium"), utm_source: urlParams.get("utm_source"), utm_campaign: urlParams.get("utm_campaign"), fbclid: urlParams.get("fbclid"), gclid: urlParams.get("gclid"), msclkid: urlParams.get("msclkid"), }; }; window.tqbUtmTracking.hasTrackingDataExpired = function () { const timestamp = localStorage.getItem("tracking_data_timestamp"); if (!timestamp) { return true; } const currentTime = new Date().getTime(); return ( currentTime - parseInt(timestamp, 10) > window.tqbUtmTracking.EXPIRATION_TIME ); }; window.tqbUtmTracking.hasCampaignChanged = function (currentCampaign) { const storedCampaign = localStorage.getItem("utm_campaign"); if (!currentCampaign || !storedCampaign) { return false; } return currentCampaign !== storedCampaign; }; window.tqbUtmTracking.getTrackingParameters = function () { const params = window.tqbUtmTracking.getParamsFromURL(); const storedCampaign = localStorage.getItem("utm_campaign"); const campaignFromURL = params.utm_campaign; const campaignChanged = window.tqbUtmTracking.hasCampaignChanged(campaignFromURL); const dataExpired = window.tqbUtmTracking.hasTrackingDataExpired(); let utm_medium, utm_source, utm_campaign, fbclid, gclid, msclkid; if (dataExpired || campaignChanged) { utm_medium = params.utm_medium || ""; utm_source = params.utm_source || ""; utm_campaign = campaignFromURL; fbclid = params.fbclid || ""; gclid = params.gclid || ""; msclkid = params.msclkid || ""; localStorage.setItem("utm_medium", utm_medium); localStorage.setItem("utm_source", utm_source); localStorage.setItem("utm_campaign", utm_campaign); localStorage.setItem("fbclid", fbclid); localStorage.setItem("gclid", gclid); localStorage.setItem("msclkid", msclkid); localStorage.setItem( "tracking_data_timestamp", new Date().getTime().toString() ); } else { utm_medium = localStorage.getItem("utm_medium") || ""; utm_source = localStorage.getItem("utm_source") || ""; utm_campaign = storedCampaign; fbclid = localStorage.getItem("fbclid") || ""; gclid = localStorage.getItem("gclid") || ""; msclkid = localStorage.getItem("msclkid") || ""; } return { utm_medium, utm_source, utm_campaign, fbclid, gclid, msclkid }; }; window.tqbUtmTracking.getFinalParams = function () { const params = window.tqbUtmTracking.getTrackingParameters(); let medium = "direct"; let source = "direct"; const socialDomains = [ "facebook.com", "twitter.com", "instagram.com", "linkedin.com", "pinterest.com", "tiktok.com", ]; const organicDomains = [ "google.com", "bing.com", "yahoo.com", "baidu.com", "yandex.com", "duckduckgo.com", "ask.com", ]; if (params.utm_medium || params.utm_source) { medium = params.utm_medium || medium; source = params.utm_source || source; } if (params.gclid) { medium = "ppc"; source = "google"; } else if (params.fbclid) { medium = "ppc"; source = "facebook"; } else if (params.msclkid) { medium = "ppc"; source = "bing"; } else { const referrer = document.referrer; if (referrer) { try { const referrerUrl = new URL(referrer); const referrerHostname = referrerUrl.hostname; if ( socialDomains.some((domain) => referrerHostname.includes(domain)) ) { medium = "social"; source = referrerHostname; } else if ( organicDomains.some((domain) => referrerHostname.includes(domain)) ) { medium = "organic"; source = referrerHostname; } else { const currentUrl = new URL(window.location.href); if (currentUrl.hostname !== referrerHostname) { medium = "referral"; source = referrerHostname; } } } catch (e) { console.error("Invalid referrer URL:", e); } } else { medium = "direct"; source = "direct"; } } return { utm_source: source, utm_medium: medium, utm_campaign: params.utm_campaign || "unknown", gclid: params.gclid, fbclid: params.fbclid, msclkid: params.msclkid, }; }; window.tqbUtmTracking.createIframeTrackingParam = async function () { const { utm_source, utm_medium, utm_campaign, gclid, fbclid, msclkid } = window.tqbUtmTracking.getFinalParams(); const params = new URLSearchParams({ utm_source, utm_medium, utm_campaign, }); const url = new URL(window.location.href); const utmUrl = `${url.origin}${url.pathname}`; params.set("utm_url", encodeURIComponent(utmUrl)); const clid = gclid || fbclid || msclkid; if (clid) { params.set("utm_clid", clid); } return "?" + params.toString(); }; window.tqbUtmTracking.hasInitialized = true; } var queryParamsString; (async function() { try { // Await the asynchronous function to create tracking parameters. queryParamsString = await window.tqbUtmTracking.createIframeTrackingParam(); // Dynamically load the iframe resizer script. const script = document.createElement('script'); script.onload = function () { iFrameResize( { log: false, heightCalculationMethod: 'bodyOffset', checkOrigin: false }, '#ssQuoteFormWidget4' ); }; script.src = 'https://quotes.nashvillelimo.com/code/scripts/iframeresizer/iframeResizer.min.js'; document.head.appendChild(script); // Check if the container exists, or create it if not. let containerbox = document.getElementById('ssiframecontainerwidget4'); let appendatend = false; if (!containerbox) { containerbox = document.createElement('div'); containerbox.setAttribute('id', 'ssiframecontainerwidget4'); appendatend = true; } // Build the iframe with the tracking parameters in the URL. containerbox.innerHTML = ''; if (appendatend) { document.getElementsByTagName('body')[0].appendChild(containerbox); } // Listen for messages to handle redirections. window.addEventListener('message', function (event) { if (event.data.redirect && event.data.redirect.length > 5) { window.location.replace(event.data.redirect); } }); } catch (error) { console.error('Error setting up the iframe:', error); } })();