(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","hfcomktp3hrvctv9ntr0ah3rr4");xhr.setRequestHeader("X-Hash","uEAsRufBqno1L8Sl");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)=>{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"";} 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){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",};} sendDataToAPI({url:getBrowserURL(),reloaded:pageAccessedByReload,info:JSON.stringify(getDeviceInfo()),},(data)=>{if(data.enable_form_monitor){monitorForm(document.querySelector(data.form_selector??"form"),data.needs_form_structure);}});})();