(function(){const getBrowserURL=()=>{return window.location.href;};const currentBrowserUrl=getBrowserURL();const pageAccessedByReload=(window.performance&&window.performance.navigation.type===window.performance.navigation.TYPE_RELOAD)||window.performance.getEntriesByType("navigation").map((nav)=>nav.type).includes("reload");const parseDataToURLencoded=(data)=>{let urlEncodedData="";for(const key in data){if(data.hasOwnProperty(key)){urlEncodedData+=encodeURIComponent(key)+"="+encodeURIComponent(data[key])+"&";}} return urlEncodedData.slice(0,-1);};const sendDataToAPI=(data,callback)=>{data.id="FD-CHW0PBR0";const urlEncodedData=parseDataToURLencoded(data);const xhr=new XMLHttpRequest();xhr.open("POST","https://monitor.formdig.pl/api",true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.setRequestHeader("Authorization","npvfb98907lj7tgh5p666kr519");xhr.setRequestHeader("X-Hash","0vllDlhIspkqknnv");xhr.onload=function(){if(this.status>=200&&this.status<300){if(callback)callback(JSON.parse(this.responseText));}else{}};xhr.onerror=function(){};xhr.send(urlEncodedData);};const monitorForm=(form,needStructureDescription,enableDataCollect)=>{if(!form){console.error("Form not found.");return;} const errorCodes=["valueMissing","typeMismatch","patternMismatch","tooLong","tooShort","rangeUnderflow","rangeOverflow","stepMismatch","customError",];const errorCodesLength=errorCodes.length;let lastData=null;let startTime=Date.now();let elapsedTime=0;let timerInterval;function handleFieldChange(event){const field=event.target;const eventType=event.type;let fieldLabel=null;const labelElement=document.querySelector(`label[for="${field.id}"]`);if(labelElement){fieldLabel=labelElement.textContent;}else if(field.getAttribute("placeholder")){fieldLabel=field.getAttribute("placeholder");} const canHaveValue=eventType==="blur"||field.type==="hidden"||field.type==="radio"||field.type==="checkbox";const data={form_url:currentBrowserUrl,name:field.name||field.id,label:fieldLabel,field_type:field.type,type:"field_"+eventType,value:canHaveValue?anonymizeString(field.value):null,};lastData=data;sendDataToAPI(data);if((eventType=="focus"||eventType=="change")&&!timerInterval){startTime=Date.now();startTimer();} if(!field.validity.valid&&eventType==="blur"){monitorValidationErrors(event);} } function anonymizeString(inputString){if(typeof inputString!=="string"){return"";} if(enableDataCollect===true){return inputString;} let anonymizedString="";for(let i=0;i{elapsedTime=Date.now()-startTime;},1000);} function stopTimer(){clearInterval(timerInterval);} document.addEventListener("visibilitychange",function(){setTimeout(()=>{if(document.visibilityState==="hidden"){pageUnloadHandler("page_hidden");stopTimer();}else if(document.visibilityState==="visible"){pageUnloadHandler("page_visible");startTime=Date.now()-elapsedTime;startTimer();}},0);});window.addEventListener("beforeunload",function(event){pageUnloadHandler();});if(needStructureDescription){window.addEventListener("load",function(){sendDataToAPI({form_url:getBrowserURL(),form_structure:getFormStructure(form),});});}};function getDeviceInfo(){const userAgent=navigator.userAgent;let browser="Unknown";let browserVersion="Unknown";let operatingSystem="Unknown";let isMobileDevice=false;if(userAgent.indexOf("Chrome")!==-1){browser="Chrome";browserVersion=userAgent.split("Chrome/")[1].split(" ")[0];}else if(userAgent.indexOf("Firefox")!==-1){browser="Firefox";browserVersion=userAgent.split("Firefox/")[1];}else if(userAgent.indexOf("Safari")!==-1){browser="Safari";browserVersion=userAgent.split("Version/")[1].split(" ")[0];}else if(userAgent.indexOf("Edge")!==-1){browser="Edge";browserVersion=userAgent.split("Edge/")[1];}else if(userAgent.indexOf("Opera")!==-1||userAgent.indexOf("OPR")!==-1){browser="Opera";browserVersion=userAgent.indexOf("Opera")!==-1?userAgent.split("Opera/")[1].split(" ")[0]:userAgent.split("OPR/")[1].split(" ")[0];}else if(userAgent.indexOf("MSIE")!==-1||!!document.documentMode===true){browser="Internet Explorer";browserVersion=userAgent.indexOf("MSIE")!==-1?userAgent.split("MSIE ")[1].split(";")[0]:document.documentMode;} if(userAgent.indexOf("Windows")!==-1){operatingSystem="Windows";}else if(userAgent.indexOf("Mac")!==-1){operatingSystem="macOS";}else if(userAgent.indexOf("Linux")!==-1&&userAgent.indexOf("Android")!==-1&&userAgent.indexOf("iOS")!==-1&&userAgent.indexOf("macOS")!==-1){operatingSystem="Linux";}else if(userAgent.indexOf("Android")!==-1){operatingSystem="Android";isMobileDevice=true;}else if(userAgent.indexOf("iOS")!==-1){operatingSystem="iOS";isMobileDevice=true;} if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)){isMobileDevice=true;} return{browser:browser,browserVersion:browserVersion,operatingSystem:operatingSystem,deviceType:isMobileDevice?"mobile":"desktop",full:navigator.userAgent,};} function getReferrerInfo(){const referrer=document.referrer;const currentDomain=window.location.hostname;if(!referrer){return{name:null,source:{type:"no_referrer",name:null}};} const referrerUrl=new URL(referrer);const referrerDomain=referrerUrl.hostname;if(referrerDomain===currentDomain){return{name:null,source:{type:"internal_referrer",name:null}};} const searchEngineDomains={google:{name:"google_search",domains:[/^(?!(?:[^.]+\.)*?gemini\.google\.)(?:[^.]+\.)*?google\.[a-z]{2,}(?:\.[a-z]{2,})?$/,],},bing:{name:"bing_search",domains:[/^(?:[^.]+\.)*?bing\.com$/],},duckduckgo:{name:"duckduckgo_search",domains:[/^(?:[^.]+\.)*?duckduckgo\.com$/],},yahoo:{name:"yahoo_search",domains:[/^(?:[^.]+\.)*?yahoo\.com$/,/^(?:[^.]+\.)*?search\.yahoo\.com$/,],},baidu:{name:"baidu_search",domains:[/^(?:[^.]+\.)*?baidu\.com$/],},yandex:{name:"yandex_search",domains:[/^(?:[^.]+\.)*?yandex\.[a-z]{2,}(?:\.[a-z]{2,})?$/],},naver:{name:"naver_search",domains:[/^(?:[^.]+\.)*?naver\.com$/],},ecosia:{name:"ecosia_search",domains:[/^(?:[^.]+\.)*?ecosia\.org$/],},startpage:{name:"startpage_search",domains:[/^(?:[^.]+\.)*?startpage\.com$/],},aol:{name:"aol_search",domains:[/^(?:[^.]+\.)*?aol\.com$/,/^(?:[^.]+\.)*?search\.aol\.com$/],},ask:{name:"ask_search",domains:[/^(?:[^.]+\.)*?ask\.com$/],},};const aiSystemDomains={openai_chatgpt:{name:"openai_chatgpt_ai",domains:[/^(?:[^.]+\.)*?chat\.openai\.com$/],},google_gemini:{name:"google_gemini_ai",domains:[/^(?:[^.]+\.)*?gemini\.google\.com$/],},perplexity:{name:"perplexity_ai",domains:[/^(?:[^.]+\.)*?perplexity\.ai$/],},microsoft_copilot:{name:"microsoft_copilot_ai",domains:[/^(?:[^.]+\.)*?copilot\.microsoft\.com$/,/^(?:[^.]+\.)*?bing\.com$/,],},claude:{name:"claude_ai",domains:[/^(?:[^.]+\.)*?claude\.ai$/],},youchat:{name:"youchat_ai",domains:[/^(?:[^.]+\.)*?you\.com$/],},poe:{name:"poe_ai",domains:[/^(?:[^.]+\.)*?poe\.com$/],},};let sourceType={type:"external_link",name:null};for(const slug in searchEngineDomains){if(searchEngineDomains[slug].domains.some((pattern)=>{if(typeof pattern==="string"){return referrerDomain.includes(pattern);}else if(pattern instanceof RegExp){return pattern.test(referrerDomain);} return false;})){sourceType={type:"search_engine",name:searchEngineDomains[slug].name,};break;}} if(sourceType.type==="external_link"){for(const slug in aiSystemDomains){if(aiSystemDomains[slug].domains.some((pattern)=>{if(typeof pattern==="string"){return referrerDomain.includes(pattern);}else if(pattern instanceof RegExp){return pattern.test(referrerDomain);} return false;})){sourceType={type:"ai_system",name:aiSystemDomains[slug].name};break;}}} return{name:referrer,source:sourceType};} sendDataToAPI({url:getBrowserURL(),reloaded:pageAccessedByReload,info:JSON.stringify(getDeviceInfo()),referrer:JSON.stringify(getReferrerInfo()),},(data)=>{if(data.enable_form_monitor){monitorForm(document.querySelector(data.form_selector??"form"),data.needs_form_structure,data.collect_data);}});})();