function setCampaignCookie(source){const expires=new Date();expires.setTime(expires.getTime()+(30*24*60*60*1000));document.cookie=`campaignSource=${source}; expires=${expires.toUTCString()}; path=/; SameSite=Lax`;console.log('Campaign source cookie set:',source)}
function getCampaignCookie(){const name="campaignSource=";const decodedCookie=decodeURIComponent(document.cookie);const ca=decodedCookie.split(';');for(let i=0;i<ca.length;i++){let c=ca[i];while(c.charAt(0)===' '){c=c.substring(1)}
if(c.indexOf(name)===0){return c.substring(name.length,c.length)}}
return null}
function captureSourceParameter(){const urlParams=new URLSearchParams(window.location.search);const source=urlParams.get('source');if(source){setCampaignCookie(source);console.log('Campaign source captured from URL and stored:',source);return source}
const existingSource=getCampaignCookie();if(existingSource){console.log('Existing campaign source found in cookie:',existingSource)}else{console.log('No campaign source found in URL or cookie')}
return existingSource}
function waitForIframeAndPopulate(campaignSource,maxAttempts=20){let attempts=0;function attemptPopulation(){attempts++;console.log(`Attempt ${attempts}: Looking for Cognito iframe...`);const cognitoIframe=document.querySelector('iframe[src*="cognitoforms.com"]');if(!cognitoIframe){if(attempts<maxAttempts){console.log('Iframe not found yet, retrying in 500ms...');setTimeout(attemptPopulation,500)}else{console.log('Cognito iframe not found after all attempts')}
return}
console.log('Cognito iframe found:',cognitoIframe.src);if(!cognitoIframe.src.includes('entry=')){const originalSrc=cognitoIframe.src;const referrer=document.referrer||'direct';let referrerSource='direct';if(referrer&&referrer!=='direct'){try{const referrerDomain=new URL(referrer).hostname;referrerSource=referrerDomain}catch(e){referrerSource='unknown'}}
const userAgent=navigator.userAgent.toLowerCase();let deviceType='Desktop';if(userAgent.includes('mobile')||userAgent.includes('android')||userAgent.includes('iphone')){deviceType='Mobile'}else if(userAgent.includes('tablet')||userAgent.includes('ipad')){deviceType='Tablet'}
const rawLanguage=navigator.language||navigator.userLanguage||'unknown';let browserLanguage='Unknown';if(rawLanguage!=='unknown'){const languageCode=rawLanguage.split('-')[0].toLowerCase();const languageMap={'en':'English','es':'Spanish','fr':'French','de':'German','it':'Italian','pt':'Portuguese','ru':'Russian','zh':'Chinese','ja':'Japanese','ko':'Korean','ar':'Arabic','hi':'Hindi','nl':'Dutch','sv':'Swedish','no':'Norwegian','da':'Danish','fi':'Finnish','pl':'Polish','tr':'Turkish','he':'Hebrew','th':'Thai','vi':'Vietnamese'};browserLanguage=languageMap[languageCode]||`Other (${languageCode})`}
let entryObject={"ReferrerSource":referrerSource,"DeviceType":deviceType,"BrowserLanguage":browserLanguage};if(campaignSource){entryObject.CampaignSource=campaignSource}
const entryData=encodeURIComponent(JSON.stringify(entryObject));const newSrc=`${originalSrc}?entry=${entryData}`;cognitoIframe.src=newSrc;console.log('Iframe src modified from:',originalSrc);console.log('Iframe src modified to:',newSrc);console.log('Referrer captured:',referrerSource);console.log('Device type captured:',deviceType);console.log('Browser language captured:',browserLanguage);if(campaignSource){console.log('Campaign source captured:',campaignSource)}else{console.log('No campaign source - referrer, device, and language only')}}
function tryDirectAccess(){try{const iframeDoc=cognitoIframe.contentDocument||cognitoIframe.contentWindow.document;if(!iframeDoc){console.log('Iframe document not accessible yet, will try postMessage...');return!1}
const campaignField=iframeDoc.querySelector('input[name="CampaignSource"]');const referrerField=iframeDoc.querySelector('input[name="ReferrerSource"]');const deviceField=iframeDoc.querySelector('input[name="DeviceType"]');const languageField=iframeDoc.querySelector('input[name="BrowserLanguage"]');const referrer=document.referrer||'direct';let referrerSource='direct';if(referrer&&referrer!=='direct'){try{const referrerDomain=new URL(referrer).hostname;referrerSource=referrerDomain}catch(e){referrerSource='unknown'}}
const userAgent=navigator.userAgent.toLowerCase();let deviceType='Desktop';if(userAgent.includes('mobile')||userAgent.includes('android')||userAgent.includes('iphone')){deviceType='Mobile'}else if(userAgent.includes('tablet')||userAgent.includes('ipad')){deviceType='Tablet'}
const rawLanguage=navigator.language||navigator.userLanguage||'unknown';let browserLanguage='Unknown';if(rawLanguage!=='unknown'){const languageCode=rawLanguage.split('-')[0].toLowerCase();const languageMap={'en':'English','es':'Spanish','fr':'French','de':'German','it':'Italian','pt':'Portuguese','ru':'Russian','zh':'Chinese','ja':'Japanese','ko':'Korean','ar':'Arabic','hi':'Hindi','nl':'Dutch','sv':'Swedish','no':'Norwegian','da':'Danish','fi':'Finnish','pl':'Polish','tr':'Turkish','he':'Hebrew','th':'Thai','vi':'Vietnamese'};browserLanguage=languageMap[languageCode]||`Other (${languageCode})`}
if(campaignField&&campaignSource){campaignField.value=campaignSource;['input','change','blur','keyup'].forEach(eventType=>{campaignField.dispatchEvent(new Event(eventType,{bubbles:!0}))});console.log('Campaign field populated via direct access:',campaignSource)}
if(referrerField){referrerField.value=referrerSource;['input','change','blur','keyup'].forEach(eventType=>{referrerField.dispatchEvent(new Event(eventType,{bubbles:!0}))});console.log('Referrer field populated via direct access:',referrerSource)}
if(deviceField){deviceField.value=deviceType;['input','change','blur','keyup'].forEach(eventType=>{deviceField.dispatchEvent(new Event(eventType,{bubbles:!0}))});console.log('Device field populated via direct access:',deviceType)}
if(languageField){languageField.value=browserLanguage;['input','change','blur','keyup'].forEach(eventType=>{languageField.dispatchEvent(new Event(eventType,{bubbles:!0}))});console.log('Language field populated via direct access:',browserLanguage)}
return!0}catch(error){console.log('Direct iframe access blocked (CORS):',error.message);return!1}}
cognitoIframe.addEventListener('load',function(){console.log('Iframe load event fired, attempting field population...');setTimeout(()=>{tryDirectAccess()},100);setTimeout(()=>tryDirectAccess(),500);setTimeout(()=>tryDirectAccess(),1000);setTimeout(()=>tryDirectAccess(),2000)});setTimeout(()=>tryDirectAccess(),100);setTimeout(()=>tryDirectAccess(),500);setTimeout(()=>tryDirectAccess(),1000)}
attemptPopulation()}
function initializeCampaignTracking(){console.log('Initializing Campaign Tracking System (Iframe Mode)...');console.log('Current URL:',window.location.href);console.log('Current Path:',window.location.pathname);console.log('Referrer:',document.referrer||'direct');const campaignSource=captureSourceParameter();const isPreAppPage=window.location.pathname.includes('/preapp/')||window.location.pathname.includes('/resident-hub/preapp/');console.log('Is PreApp page?',isPreAppPage);if(isPreAppPage){if(campaignSource){console.log('On PreApp page with campaign source, starting form population...');waitForIframeAndPopulate(campaignSource)}else{console.log('On PreApp page without campaign source, capturing referrer only...');waitForIframeAndPopulate(null)}}else if(campaignSource){console.log('Campaign source available but not on PreApp page yet')}}
window.addEventListener('message',function(event){if(event.data&&event.data.type==='COGNITO_FIELD_UPDATED'){console.log('Received confirmation from Cognito iframe:',event.data)}});window.debugCampaignTracking=function(){console.log('=== CAMPAIGN TRACKING DEBUG (Iframe Mode) ===');console.log('Current URL:',window.location.href);console.log('Current Path:',window.location.pathname);console.log('URL Parameters:',Object.fromEntries(new URLSearchParams(window.location.search)));console.log('Campaign Cookie:',getCampaignCookie());console.log('Referrer:',document.referrer||'direct');console.log('All Cookies:',document.cookie);console.log('Cognito iframes found:',document.querySelectorAll('iframe[src*="cognitoforms.com"]').length);const iframes=document.querySelectorAll('iframe');console.log('All iframes on page:');iframes.forEach((iframe,index)=>{console.log(`Iframe ${index + 1}:`,iframe.src)});console.log('Testing cookie set/get...');setCampaignCookie('TEST_DEBUG_VALUE');console.log('Test cookie retrieved:',getCampaignCookie())};if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initializeCampaignTracking)}else{initializeCampaignTracking()}
window.addEventListener('load',function(){setTimeout(initializeCampaignTracking,500)});if(window.MutationObserver){const observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(mutation.addedNodes.length>0){mutation.addedNodes.forEach(function(node){if(node.nodeType===1&&(node.tagName==='IFRAME'||node.querySelector('iframe'))){console.log('New iframe detected, re-initializing...');setTimeout(initializeCampaignTracking,100)}})}})});observer.observe(document.body,{childList:!0,subtree:!0})}
if(window.location.pathname.includes('/preapp/')||window.location.pathname.includes('/resident-hub/preapp/')){console.log('Setting up simple redirect detection - PreApp page confirmed');window.addEventListener('message',function(event){if(event.origin==='https://www.cognitoforms.com'){if(event.data&&event.data.type==='submitted'){console.log('Form submission detected, redirecting parent window...');window.location.href='https://boulderhousing.org/initial-screening-completed/'}}})}else{console.log('Not on PreApp page - redirect detection disabled')}