var formIndex=function(n){"use strict";window.addEventListener("error",function(n){console.error("🚨 JavaScript error detected",{message:n.message,filename:n.filename,lineno:n.lineno,colno:n.colno,stack:n.error?n.error.stack:"No stack trace available",timestamp:(new Date).toISOString(),userAgent:navigator.userAgent,url:window.location.href})});window.addEventListener("unhandledrejection",function(n){console.error("🚨 Unhandled promise rejection",{reason:n.reason,promise:n.promise,timestamp:(new Date).toISOString(),url:window.location.href})});var t={indexUrl:"",postUrl:"",formSectionsUrl:"",hasLayoutRecurring:!1,hasPaymentLayout:!1,allowZero:!1,allowBillMe:!1,billMeFormField:"",signIn:{loginButtonSizeClass:"",signInPostUrl:"",isGuestLoginEnabled:!1,guestButtonSizeClass:"",signInGuestPostUrl:"",isRegistrationEnabled:!1,registerButtonSizeClass:"",registerPostUrl:"",recoverPasswordPostUrl:""},fillDropdownAmountUrl:"",donationAmountInputName:"",isDonationAmountReadonly:!1,isDropdownFillAmount:!1,lookupAmounts:null,recaptchaSiteKey:"",showCaptcha:!1,shouldCoverProcessingFee:!1,processingFeePercent:0,proccessor:"",stripeClientAccountID:"",stripePublicKey:"",stripeDefaultCurrency:"usd",formGuid:"",formTimeoutMinutes:30,heartbeatIntervalSeconds:60,isOnSiteSession:!1},ht="",u=0,ct="",r=null,h=null,k=null,c="",l=null,d=!1,f=null,a=0,v=null,i=null,g=new Date,e,y=!1,nt=function(){if(!t.showCaptcha){console.log("recaptchaRender: Skipping - captcha not enabled");return}if(a++,console.log("recaptchaRender: reCaptchaRenderTries = ["+a+"]"),a>9){console.error("recaptchaRender: Failed after 10 attempts");return}if(d===!0&&n("#reCaptchaContainer").length>0){var i=document.getElementById("reCaptchaContainer");f=grecaptcha.render(i,{sitekey:t.recaptchaSiteKey,callback:vt});return}window.setTimeout(nt,1e3)},lt=function(t){t.code===103&&(u=t.code);t.code===105&&(u=t.code,ht=t.cryptogram,n("[name=checkout-cryptogram]").val(t.cryptogram),r.validateInput(n("#checkout-cryptogram")));t.code===106&&(u=t.code,alert(t.message))},at=function(){d=!0},vt=function(t){n("#reCaptchaVerifyToken").val(t)},yt=function(){return n("body").hasClass("modal-open")},pt=function(t){yt()?setTimeout(pt(t),1e3):n(t).modal("show")},tt=function(t,i){n(t).modal("hide");setTimeout(function(){n(i).modal("show")},1e3)},p=function(){t.showCaptcha&&typeof grecaptcha!="undefined"&&grecaptcha.reset(f)},it=function(){if(t.processingFeePercent>0){var r=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox").value(),i=r/100*t.processingFeePercent;i>0?n("#TJ-DonationPercentLabel").text(" Add "+t.processingFeePercent+"% ($"+i.toFixed(2)+") to cover payment processing fees."):n("#TJ-DonationPercentLabel").text(" Add "+t.processingFeePercent+"% ($0) to cover payment processing fees.")}},o=function(){var r,u,f;if(t.isDonationAmountReadonly)r=0,t.isDropdownFillAmount&&(n("select.linked-fill-amount").each(function(){var u=n(this),f=u.prop("name"),i;t.lookupAmounts&&t.lookupAmounts[f]&&(i=t.lookupAmounts[f],i.length>0&&u.find(":selected").each(function(){var n=u.val(),t,f;if(n!=undefined&&n!=="none"&&n!=="")for(t=0;t<i.length;t++)if(f=i[t],f.DisplayValue===n){r+=f.LookupAmount;break}}))}),n("input.linked-fill-amount").each(function(){var e=n(this),s=e.prop("name"),u,h,i,f,o;if(t.lookupAmounts&&t.lookupAmounts[s]&&(u=t.lookupAmounts[s],u.length>0&&(h=e.prop("checked"),h))){if(i=e.val(),i==undefined||i==="none"||i==="")return;for(f=0;f<u.length;f++)if(o=u[f],o.DisplayValue===i){r+=o.LookupAmount;break}}})),n("input.user-money-field").each(function(){var t=n(this).data("kendoNumericTextBox");t&&(r+=t.value())}),u=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),u.value(r),f=n("[type=hidden][name="+t.donationAmountInputName+"]"),f.val(r).trigger("change"),t.proccessor=="Stripe"&&i.update({amount:r*100});else{var o=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),e=o.value(),s=n("[type=hidden][name="+t.donationAmountInputName+"]");s.val(e);t.proccessor=="Stripe"&&i.update({amount:e*100})}it()},wt=function(n){n&&t.isDropdownFillAmount&&o()},rt=function(){var i=n("#RecurringFrequency option:selected").val(),e=n("#RecurringStartDate").data("kendoDatePicker"),o=n("#RecurringEndDate").data("kendoDatePicker"),u=n("#RecurringNoEndDate"),f=u.prop("checked"),t=!0;(i==undefined||i==="none"||i==="")&&(t=!1);n("#RecurringStartDate").attr("required",t);n("#RecurringEndDate").attr("required",t&&!f);e.enable(t);o.enable(t&&!f);t?(n("#RecurringStartDateGroup").show(),n("#RecurringEndDateGroup").show()):(n("#RecurringStartDateGroup").hide(),n("#RecurringEndDateGroup").hide(),r.validateInput(n("#RecurringStartDate")),r.validateInput(n("#RecurringEndDate")));u.trigger("change")},bt=function(){var u=n("#RecurringFrequency option:selected").val(),f=!0,i,t;(u==undefined||u==="none"||u==="")&&(f=!1);i=n("#RecurringNoEndDate").prop("checked");t=n("#RecurringEndDate").data("kendoDatePicker");n("#RecurringEndDate").attr("required",f&&!i);t.enable(f&&!i);i?(l=t.value(),t.value(null)):l?t.value(l):t.value(null);r.validateInput(n("#RecurringEndDate"))},w=function(){n("[name^='DonationBillMe']").is(":checked")?(n("#AchAba").attr("required",!1),n("#AchDda").attr("required",!1),n("#AchAccountType").attr("required",!1),n("#AchAccountTypeChecking").attr("required",!1),n("#AchAccountTypeSavings").attr("required",!1),n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("[id^='AchAccountTypeGroup']").hide(),n("[id^='AchDdaGroup']").hide(),n("[id^='AchAbaGroup']").hide(),n("[id^='gem-containerGroup']").hide(),n("#payment-elementGroup").hide(),n("#payment-element").hide()):n("[type=text][name="+t.donationAmountInputName+"]")[0].value>0&&(n("[name^='PaymentTypeCcAch']").length?(n("[name^='PaymentTypeCcAch']").parent().parent().show(),n("#PaymentTypeCcAchCC").prop("checked")?(n(".credit-card-form-group").show(),n(".ach-form-group").hide()):n("#PaymentTypeCcAchAch").prop("checked")?(n(".credit-card-form-group").hide(),n(".ach-form-group").show(),n(".ach-form-group").length>0&&(n("#AchAba").attr("required",!0),n("#AchDda").attr("required",!0),n("#AchAccountType").attr("required",!0),n("#AchAccountTypeChecking").attr("required",!0),n("#AchAccountTypeSavings").attr("required",!0))):(n(".credit-card-form-group").hide(),n(".ach-form-group").hide())):(n(".credit-card-form-group").show(),n("#payment-elementGroup").show(),n("#payment-element").show(),n(".ach-form-group").show(),n(".ach-form-group").length>0&&(n("#AchAba").attr("required",!0),n("#AchDda").attr("required",!0),n("#AchAccountType").attr("required",!0),n("#AchAccountTypeChecking").attr("required",!0),n("#AchAccountTypeSavings").attr("required",!0))))},ut=function(){n("[type=text][name="+t.donationAmountInputName+"]")[0].value>0?(n("[name^='PaymentTypeCcAch']").length&&n("[name^='PaymentTypeCcAch']").parent().parent().show(),w()):t.allowBillMe?(n("[name^='PaymentTypeCcAch']").length&&(n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("#AchAba").attr("required",!1),n("#AchDda").attr("required",!1),n("#AchAccountType").attr("required",!1),n("#AchAccountTypeChecking").attr("required",!1),n("#AchAccountTypeSavings").attr("required",!1),n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("[id^='AchAccountTypeGroup']").hide(),n("[id^='AchDdaGroup']").hide(),n("[id^='AchAbaGroup']").hide(),n("[id^='gem-containerGroup']").hide()),w()):t.allowZero&&(n("#AchAba").attr("required",!1),n("#AchDda").attr("required",!1),n("#AchAccountType").attr("required",!1),n("#AchAccountTypeChecking").attr("required",!1),n("#AchAccountTypeSavings").attr("required",!1),n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("[id^='AchAccountTypeGroup']").hide(),n("[id^='AchDdaGroup']").hide(),n("[id^='AchAbaGroup']").hide(),n("[id^='gem-containerGroup']").hide())},ft=function(){var t=!1;n("#PaymentTypeCcAchCC").length>0?n("#PaymentTypeCcAchCC").prop("checked")?(n(".credit-card-form-group").show(),n(".ach-form-group").hide()):n("#PaymentTypeCcAchAch").prop("checked")?(n(".credit-card-form-group").hide(),n(".ach-form-group").show(),t=!0):(n(".credit-card-form-group").hide(),n(".ach-form-group").hide()):n(".credit-card-form-group").length>0?(t=!1,n(".credit-card-form-group").show()):n(".ach-form-group").length>0&&(t=!0,n(".ach-form-group").show());n(".ach-form-group").length>0&&(n("#AchAba").attr("required",t),n("#AchDda").attr("required",t),n("#AchAccountType").attr("required",t),n("#AchAccountTypeChecking").attr("required",t),n("#AchAccountTypeSavings").attr("required",t))},kt=function(){console.log("💰 Loading dropdown amounts",{url:t.fillDropdownAmountUrl,formGuid:n("#formGuid").val(),userKey:n("#registerUserKey").val(),timestamp:(new Date).toISOString()});waitSpinner.addSpinner();var i={Guid:n("#formGuid").val(),RegisterUserKey:n("#registerUserKey").val()};n.ajax(t.fillDropdownAmountUrl,{data:JSON.stringify(i),type:"POST",contentType:"application/json",dataType:"json",success:function(i){if(console.log("✅ Dropdown amounts loaded successfully",{data:i,timestamp:(new Date).toISOString()}),i.IsSuccess===!0){if(t.donationAmountInputName=i.DonationAmountInputName,t.isDonationAmountReadonly=i.IsDonationAmountReadonly,t.isDropdownFillAmount=i.IsDropDownFillAmount,t.lookupAmounts=i.LookupItems,t.isDonationAmountReadonly){var r=n(".form-field-money [name="+t.donationAmountInputName+"]").data("kendoNumericTextBox");r.enable(!1);n(".linked-fill-amount").change(wt);setTimeout(o(),500)}it()}waitSpinner.removeSpinner()},error:function(n,i,r){if(i=i||"error",r=r||"",console.error("GetFillDropDownAmounts failed:",{textStatus:i,errorThrown:r,response:n?n.responseText:"No response",url:t.fillDropdownAmountUrl}),typeof notification!="undefined"&&notification&&notification.show){var u="Failed to load form configuration. ";u+=i!=="error"||r?"Error: "+(r||i||"Unknown error"):"Please refresh the page and try again.";notification.show(u,notification.notificationType.error)}waitSpinner&&waitSpinner.removeSpinner()}})},dt=function(){var r=!1,u=kendo.parseDate(n("#RecurringStartDate").val()),f=kendo.parseDate(n("#RecurringEndDate").val()),t=u,e=n("#RecurringFrequency option:selected").val(),i="";switch(e){case"daily":t.setDate(t.getDate()+1);i="one day";break;case"weekly":t.setDate(t.getDate()+7);i="one week";break;case"biweekly":t.setDate(t.getDate()+14);i="two weeks";break;case"triweekly":t.setDate(t.getDate()+21);i="three weeks";break;case"monthly":t.setMonth(t.getMonth()+1);i="one month";break;case"bimonthly":t.setMonth(t.getMonth()+2);i="two months";break;case"quarterly":t.setMonth(t.getMonth()+3);i="one quarter";break;case"semiannually":t.setMonth(t.getMonth()+6);i="six months";break;case"annually":t.setYear(t.getFullYear()+1);i="one year"}return r=t==null||t.getTime()<f.getTime(),c=r?"":"End Date must be after "+(t.getMonth()+1)+"/"+t.getDate()+"/"+t.getFullYear()+" (Start Date + "+i+").",r},et=function(){var e,u,f,s;console.log("🚀 Form initialization started",{formGuid:t.formGuid,hasPaymentLayout:t.hasPaymentLayout,hasRecurring:t.hasLayoutRecurring,showCaptcha:t.showCaptcha,processor:t.proccessor,timestamp:(new Date).toISOString()});n("#no-script").hide();n(".form-field-dropdown").kendoDropDownList();n(".form-field-integer").kendoNumericTextBox({decimals:0,restrictDecimals:!0,min:0,format:"#"});n(".form-field-money").kendoNumericTextBox({decimals:2,restrictDecimals:!0,min:0,change:o});n(".form-field-date").kendoDatePicker();r=n("#form").kendoValidator({rules:{requiredMoneyGreaterThanZero:function(n){var i=n.prop("required");return n.is(".form-field-money")&&i&&t.allowZero?n.val()>=0:n.is(".form-field-money")&&i?n.val()>0:!0},requiredIntegerGreaterThanZero:function(n){var t=n.prop("required");return n.is(".form-field-integer")&&t?n.val()>0:!0},radioRequired:function(i){var r=!1,u;return(n("[name^='DonationBillMe']").length?r=n("[name^='DonationBillMe']")[0].value:t.allowZero&&(u=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),u.value()===0&&(r=!0)),i.is("[type=radio]")&&i.is("[name ='PaymentTypeCcAch']")&&r)?!0:i.is("[type=radio]")&&i.attr("required")?n("form").find("[name="+i.attr("name")+"]").is(":checked"):!0},cryptogramRequired:function(i){var r=!1,u;if(n("[name^='DonationBillMe']").length?r=n("[name^='DonationBillMe']")[0].value:t.allowZero&&(u=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),u.value()===0&&(r=!0)),r)return!0;if(n("#PaymentTypeCcAchCC").length>0?n("#PaymentTypeCcAchCC").prop("checked")&&(r=!0):n("#gem-container").length>0&&(r=!0),t.billMeFormField&&t.billMeFormField.trim()!==""){const i="#"+t.billMeFormField;n(i).length&&n(i).prop("checked")&&(r=!1)}return r&&i.is("[name=checkout-cryptogram]")?n("[name=checkout-cryptogram]").length>0?n.trim(i.val())!=="":!1:!0},multiSelectRequired:function(t){return t.is("[type=checkbox]")&&t.is(".form-field-multiselect")&&n("form").find("[name="+t.attr("name")+"Required]").length>0?n("form").find("[name="+t.attr("name")+"]").is(":checked"):!0},recurringStartDateGreater:function(n){if(n.is("#RecurringStartDate")&&n.is(":enabled")&&n.val()!=""){var i=kendo.parseDate(n.val()),t=(new Date).toLocaleString("en-US",{timeZone:"America/New_York"});return t=new Date(t),t.setHours(0,0,0,0),t.getTime()<=i.getTime()}return!0},recurringEndDateGreater:function(t){var i=n("#RecurringNoEndDate").prop("checked");return t.is("#RecurringEndDate")&&!i&&t.is(":enabled")&&t.val()!==""?dt():!0}},messages:{requiredMoneyGreaterThanZero:"Must supply an amount greater than 0.00.",requiredIntegerGreaterThanZero:"Must supply an amount greater than 0.",cryptogramRequired:"Please provide correct Credit Card information.<br /><br />If you don't see a green indicator with the word 'Online' next to the Comodo Secure logo, please ensure you have <strong>Third Party Cookies<\/strong> enabled in your browser settings.",multiSelectRequired:"At least one item is required to be checked.",recurringStartDateGreater:"Start date can't be before today. <br /><br /> All payments are made using Eastern Time.",recurringEndDateGreater:function(){return c}}}).data("kendoValidator");n("input[type=text]").on("focus",function(){var t=n(this),i;clearTimeout(t.data("selectTimeId"));i=setTimeout(function(){t.select()});t.data("selectTimeId",i)}).blur(function(){clearTimeout(n(this).data("selectTimeId"))});n("#submit-button").on("click",ii);if(t.hasLayoutRecurring===!0&&(n("#RecurringFrequency").change(rt),n("#RecurringNoEndDate").change(bt),setTimeout(rt,500)),n("[name^='DonationBillMe']").length&&n("[name^='DonationBillMe']").change(w),n("[name^='DonationAmount']").change(ut),t.allowZero&&n("[name^='DonationAmount']")[1].value<=0&&(n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("#AchAba").attr("required",!1),n("#AchDda").attr("required",!1),n("#AchAccountType").attr("required",!1),n("#AchAccountTypeChecking").attr("required",!1),n("#AchAccountTypeSavings").attr("required",!1),n("[name^='PaymentTypeCcAch']").parent().parent().hide(),n("[id^='AchAccountTypeGroup']").hide(),n("[id^='AchDdaGroup']").hide(),n("[id^='gem-containerGroup']").hide(),n("[id^='AchAbaGroup']").hide(),n("#payment-element").hide()),kt(),n(".payment-type-radio"))n("input[name=PaymentTypeCcAch]:radio").on("change",ft);t.showCaptcha&&nt();n("input[name^='DonationBillMe']").off("click.checks").on("click.checks",function(){n(this).val(n(this).is(":checked"))});if(n("#DonationProcessingFeePercentGroup").length&&(n("#DonationProcessingFeePercentGroup").hide(),e=n("#DonationProcessingFeePercentGroup").children("label")[0].attributes.style.nodeValue,n("#TJ-DonationPercentCheckGroup").attr("style",e),u=n("#DonationProcessingFeePercentGroup").children("label")[0].attributes.for.nodeValue,f=Number(n("#"+u).val()),f>0?(t.processingFeePercent=f,t.shouldCoverProcessingFee=!0):(t.processingFeePercent=f*-1,t.shouldCoverProcessingFee=!1),s='<div class="form-group" id="TJ-DonationPercentCheckGroup"><div class="col-sm-offset-6 col-sm-6"><input class="form-field-checkbox" id="TJ-DonationPercentCheck" name="TJ-DonationPercentCheck" type="checkbox"><label style="margin-left : 5px" class="control-label" for="TJ-DonationPercentCheck" id="TJ-DonationPercentLabel">&nbsp;Add '+t.processingFeePercent+"% to cover payment processing fees.<\/label><\/div><\/div>",n(s).insertAfter("#DonationProcessingFeePercentGroup"),n("#TJ-DonationPercentCheck").prop("checked",f>0),n("#TJ-DonationPercentCheck").change(function(){var i=Number(n("#"+u).val());n(this).is(":checked")?(t.shouldCoverProcessingFee=!0,i<0&&n("#"+u).val(i*-1)):(t.shouldCoverProcessingFee=!1,i>0&&n("#"+u).val(i*-1));o()})),t.proccessor=="Stripe"){v=Stripe(t.stripePublicKey,{stripeAccount:t.stripeClientAccountID});const n={mode:"payment",amount:100,paymentMethodCreation:"manual",currency:t.stripeDefaultCurrency,paymentMethodOptions:{us_bank_account:{verification_method:"instant"}},setupFutureUsage:"off_session"};i=v.elements(n);const r=i.create("payment",{layout:{type:"tabs",defaultCollapsed:!1}});r.mount("#payment-element")}setTimeout(ft,500)},gt=function(){var e,u,o;if(f==null&&n("#reCaptchaVerifyToken").prop("required",!1),r.validate()){if(waitSpinner.addSpinner(),e=n("#payment-notification-container").kendoNotification({appendTo:"#payment-notification-container",allowHideAfter:1e3,autoHideAfter:0,button:!0,hideOnClick:!0}).data("kendoNotification"),e!==undefined&&e!=null&&e.hide(),u=0,t.hasPaymentLayout){var s=n("[type=text][name="+t.donationAmountInputName+"]").val(),h=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),c=n("[type=hidden][name="+t.donationAmountInputName+"]");u=h.value();u===0&&s>0&&(u=s);i.update({amount:u*100});t.shouldCoverProcessingFee&&(o=u,h.value(o),c.val(o),i.update({amount:o*100}))}i.submit().then(function(){var f=n("#RecurringStartDate").data("kendoDatePicker"),r,o;f&&(r=(new Date).toLocaleString("en-US",{timeZone:"America/New_York"}),r=new Date(r),r.setHours(0,0,0,0),o=r.getTime()<f.value().getTime(),o&&i.update({mode:"setup"}));v.createConfirmationToken({elements:i}).then(function(i){if(i.error)waitSpinner.removeSpinner(),notification.show("Payment Method Invalid",notification.notificationType.error),console.log("An error occurred: "+i.error);else{var r=n("#form").serializeArray();r.push({name:"checkout-cryptogram",value:i.confirmationToken.id});console.log(r);n.ajax(t.postUrl,{data:n.param(r),type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",success:function(i){var o,s,r,h,u,f,c;if(waitSpinner.removeSpinner(),i.IsSuccess===!0)notification.show("Successfully saved!",notification.notificationType.success),o=i.ConfirmationUrl,window.location.replace(o);else if(i.isSoftLocked===!0)n("#submit-button").prop("disabled",!0),s=i.message||"We're experiencing a high volume of requests at the moment. Please wait a few minutes before trying again.",notification.show(s,notification.notificationType.error),n("#form input, #form select, #form textarea").prop("disabled",!0),console.log("Form soft-locked - Stripe submission blocked");else{r=n("[name=formId]");r.val()===""&&r.val(i.FormId);t.showCaptcha&&(h=n("[name=captchaGuid]"),h.val(i.captchaGuid),p());n("#submit-button").prop("disabled",!i.CanRetry);u=i.Message||"An unexpected error occurred. Please try again.";console.log("Form submission error response:",i);f=u.replace(/<[^>]*>/g,"").trim();try{n.ajax({url:"/Form/LogClientError",type:"POST",timeout:2e3,data:{formGuid:t.formGuid||"unknown",errorType:"FormSubmissionError",errorMessage:f,errorDetails:JSON.stringify({message:f,isSuccess:i.IsSuccess,hasPayment:i.HasPayment,isPaymentSuccess:i.IsPaymentSuccess,formId:i.FormId,canRetry:i.CanRetry,timestamp:(new Date).toISOString(),userAgent:navigator.userAgent,sessionId:n("[name=sessionId]").val()})},error:function(){}})}catch(l){}notification.show("Failed to process form: "+u,notification.notificationType.error);i.HasPayment===!0&&i.IsPaymentSuccess===!1&&e!==undefined&&e!=null&&(c=i.Message||"Payment processing error. Please try again.",e.show(c,"error"))}},error:function(i,r){var e,o,f;t.hasPaymentLayout&&(e=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),o=n("[type=hidden][name="+t.donationAmountInputName+"]"),e.value(u),o.val(u));waitSpinner.removeSpinner();f="Error processing form. Please try again.";r==="timeout"&&(f="Request timed out. Please try again.");notification.show(f,notification.notificationType.error)}})}})})}else n(".k-invalid-msg").show()},b=function(){var i,u,e,h,o,c,l,s;if(f==null&&n("#reCaptchaVerifyToken").prop("required",!1),r.validate()){waitSpinner.addSpinner();i=n("#payment-notification-container").kendoNotification({appendTo:"#payment-notification-container",allowHideAfter:1e3,autoHideAfter:0,button:!0,hideOnClick:!0}).data("kendoNotification");i!==undefined&&i!=null&&i.hide();u=0;t.hasPaymentLayout&&(e=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),h=n("[type=hidden][name="+t.donationAmountInputName+"]"),u=e.value(),t.shouldCoverProcessingFee&&(o=u,e.value(o),h.val(o)));try{c=n("[name=formId]").val()||"empty";l=n("[name=formGuid]").val()||"empty";n.ajax({url:"/Form/LogFormSubmissionAttempt",type:"POST",data:{formGuid:l,formId:c,postUrl:t.postUrl,userAgent:navigator.userAgent,sessionId:n("[name=sessionId]").val(),timestamp:(new Date).toISOString()},async:!1})}catch(a){}s=n("#form").serializeArray();console.log(s);n.ajax(t.postUrl,{data:n.param(s),type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",success:function(r){var o,s,u,h,f,e,c;if(waitSpinner.removeSpinner(),r.IsSuccess===!0)notification.show("Successfully saved!",notification.notificationType.success),o=r.ConfirmationUrl,window.location.replace(o);else if(r.isSoftLocked===!0)n("#submit-button").prop("disabled",!0),s=r.message||"We're experiencing a high volume of requests at the moment. Please wait a few minutes before trying again.",notification.show(s,notification.notificationType.error),n("#form input, #form select, #form textarea").prop("disabled",!0),console.log("Form soft-locked - submission blocked");else{u=n("[name=formId]");u.val()===""&&u.val(r.FormId);h=n("[name=captchaGuid]");h.val(r.captchaGuid);t.showCaptcha&&p();n("#submit-button").prop("disabled",!r.CanRetry);f=r.Message||"An unexpected error occurred. Please try again.";console.log("Form submission error response:",r);e=f.replace(/<[^>]*>/g,"").trim();try{n.ajax({url:"/Form/LogClientError",type:"POST",timeout:2e3,data:{formGuid:t.formGuid||"unknown",errorType:"FormSubmissionError",errorMessage:e,errorDetails:JSON.stringify({message:e,isSuccess:r.IsSuccess,hasPayment:r.HasPayment,isPaymentSuccess:r.IsPaymentSuccess,formId:r.FormId,canRetry:r.CanRetry,timestamp:(new Date).toISOString(),userAgent:navigator.userAgent,sessionId:n("[name=sessionId]").val()})},error:function(){}})}catch(l){}notification.show("Failed to process form: "+f,notification.notificationType.error);r.HasPayment===!0&&r.IsPaymentSuccess===!1&&i!==undefined&&i!=null&&(c=r.Message||"Payment processing error. Please try again.",i.show(c,"error"))}},error:function(i,r){var e,o,f;t.hasPaymentLayout&&(e=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),o=n("[type=hidden][name="+t.donationAmountInputName+"]"),e.value(u),o.val(u));waitSpinner.removeSpinner();f="Failed to process form. Please try again.";r==="timeout"&&(f="Request timed out. Please try again.");notification.show(f,notification.notificationType.error)}})}else n(".k-invalid-msg").show()},ni=function(){var t,i,u;if(f==null&&n("#reCaptchaVerifyToken").prop("required",!1),r.validate()){if(t=document.getElementById("terminal-select"),!t||!t.value){notification.show("Please select a terminal for payment processing",notification.notificationType.error);return}waitSpinner.addSpinner();i=document.querySelector(".thin-header").dataset.sck;u=n("#formGuid").val();n.ajax(`/onsite/GetTerminalStatus?id=${u}&sck=${i}`,{type:"GET",success:function(n){if(n==="offline"){waitSpinner.removeSpinner();notification.show("Selected terminal is offline. Please select another terminal or try again later.",notification.notificationType.error);return}ti()},error:function(){waitSpinner.removeSpinner();notification.show("Failed to check terminal status. Please try again.",notification.notificationType.error)}});return}n(".k-invalid-msg").show()},ti=function(){var i=n("#payment-notification-container").kendoNotification({appendTo:"#payment-notification-container",allowHideAfter:1e3,autoHideAfter:0,button:!0,hideOnClick:!0}).data("kendoNotification"),r,f,s,e,u,o;i!==undefined&&i!=null&&i.hide();r=0;t.hasPaymentLayout&&(f=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),s=n("[type=hidden][name="+t.donationAmountInputName+"]"),r=f.value(),t.shouldCoverProcessingFee&&(e=r,f.value(e),s.val(e)));n("#isSwipeInput").remove();n("<input>").attr({type:"hidden",id:"isSwipeInput",name:"isSwipe",value:!0}).appendTo("#form");u=document.getElementById("terminal-select");u&&u.value&&n.ajax({url:"/onsite/SetTerminal",type:"POST",data:JSON.stringify({terminalId:u.value}),contentType:"application/json",async:!1});o=n("#form").serializeArray();console.log(o);notification.show("Processing payment at terminal. Please follow the instructions on the card reader...",notification.notificationType.info);n.ajax(t.postUrl,{data:n.param(o),type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",timeout:9e4,success:function(r){var e,f,o,u;waitSpinner.removeSpinner();r.IsSuccess===!0?(notification.show("Successfully saved!",notification.notificationType.success),e=r.ConfirmationUrl,window.location.replace(e)):(f=n("[name=formId]"),f.val()===""&&f.val(r.FormId),o=n("[name=captchaGuid]"),o.val(r.captchaGuid),t.showCaptcha&&p(),n("#submit-button").prop("disabled",!r.CanRetry),u="Failed to process payment: "+r.Message,r.Message&&r.Message.toLowerCase().includes("timeout")?u="Payment timeout: The transaction took too long. Please try again.":r.Message&&r.Message.toLowerCase().includes("no terminal selected")?u="No terminal selected. Please select a payment terminal and try again.":r.Message&&r.Message.toLowerCase().includes("card was declined")&&(u="Card declined: Please check your card details or try a different payment method."),notification.show(u,notification.notificationType.error),r.HasPayment===!0&&r.IsPaymentSuccess===!1&&i!==undefined&&i!=null&&i.show(u,"error"))},error:function(i,u){var e,o,f;t.hasPaymentLayout&&(e=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),o=n("[type=hidden][name="+t.donationAmountInputName+"]"),e.value(r),o.val(r));waitSpinner.removeSpinner();f="Failed to process form. Please try again.";u==="timeout"&&(f="Request timed out. Please try again.");notification.show(f,notification.notificationType.error)}})},ii=function(i){var r,f;i.preventDefault();r=!1;n("#PaymentTypeCcAchCC").length>0?n("#PaymentTypeCcAchCC").prop("checked")&&(r=!0):n("#gem-container").length>0&&(r=!0);n("[name^='DonationBillMe']").length?r=!n("[name^='DonationBillMe']").is(":checked"):t.allowZero&&(f=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),f.value()===0&&(r=!1));n("#PaymentTypeCcAchCC").length>0&&n("#PaymentTypeCcAchAch").prop("checked")&&(r=!1);console.log("processor:::"+t.proccessor);t.proccessor=="Stripe"&&(r=!0,n("[name^='DonationBillMe']").length?r=!n("[name^='DonationBillMe']").is(":checked"):t.allowZero&&(f=n("[type=text][name="+t.donationAmountInputName+"]").data("kendoNumericTextBox"),f.value()===0&&(r=!1)));t.proccessor=="Stripe"&&r?gt():r?u!==105?u===106?alert("Current Credit Card Invalid \n"+ct):u===103?setTimeout(b,2e3):alert("Current Credit Card Invalid"):b():b()},s=function(){console.log("📋 Loading form sections",{url:t.formSectionsUrl,formGuid:n("#formGuid").val(),userKey:n("#registerUserKey").val(),contactToken:n("#contactToken").val(),timestamp:(new Date).toISOString()});waitSpinner.addSpinner();var i={Guid:n("#formGuid").val(),RegisterUserKey:n("#registerUserKey").val(),UserToken:n("#contactToken").val()};n.ajax(t.formSectionsUrl,{data:JSON.stringify(i),type:"POST",contentType:"application/json",dataType:"html",success:function(t,i){console.log("✅ Form sections loaded successfully",{dataLength:t?t.length:0,textStatus:i,timestamp:(new Date).toISOString()});var r=n("#form-sections-container");r.html(t);console.log("🔄 Re-initializing form after sections loaded");et();waitSpinner.removeSpinner()},error:function(n,i,r){console.error("❌ Form sections loading failed",{status:n?n.status:"unknown",statusText:n?n.statusText:"unknown",textStatus:i||"unknown",errorThrown:r||"unknown",responseText:n?n.responseText:"no response",url:t.formSectionsUrl,timestamp:(new Date).toISOString()});var u="Failed to load form sections. Please refresh the page and try again.";window.notification&&notification.show?notification.show(u,notification.notificationType.error):window.alert(u);waitSpinner.removeSpinner()}})},ri=function(i){waitSpinner.addSpinner();var r={Guid:n("#formGuid").val(),RegisterUserKey:n("#registerUserKey").val(),UserToken:i};n.ajax(t.formSectionsUrl,{data:JSON.stringify(r),type:"POST",contentType:"application/json",dataType:"html",success:function(t){var i=n("#form-sections-container");i.html(t);et();waitSpinner.removeSpinner()},error:function(n,t,i){console.error("GetFormSections failed:",{textStatus:t,errorThrown:i});var r="Failed to load form sections. Please refresh the page and try again.";window.notification&&notification.show?notification.show(r,notification.notificationType.error):window.alert(r);waitSpinner.removeSpinner()}})},ui=function(i){i.preventDefault();notification.hideAll();h.validate()&&(waitSpinner.addSpinner(),n.ajax(t.signIn.signInPostUrl,{data:n("#SignInForm").serialize(),type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",success:function(t){t.IsSuccess===!0?t.IsLoggedIn===!0?(notification.show("Successfully logged in!",notification.notificationType.success),n("#registerUserKey").val(t.RegisterUserKey),s(),n("#SignInContainer").modal("hide")):notification.showSignin("Failed to log in: "+t.Message,notification.notificationType.error):notification.showSignin("Failed to log in: "+t.Message+"<br />&nbsp;<br />Please ensure you have <strong>Third Party Cookies<\/strong> enabled in your browser settings.",notification.notificationType.error);waitSpinner.removeSpinner()},error:function(n,t,i){console.error("Sign-in request failed:",{textStatus:t,errorThrown:i});var r=t==="timeout"?"Request timed out. Please try again.":t==="error"?"Sign-in failed. Please check your connection and try again.":"Sign-in failed: "+(i||t||"Unknown error");notification.showSignin(r,notification.notificationType.error);waitSpinner.removeSpinner()}}))},fi=function(i){if(i.preventDefault(),notification.hideAll(),h.validateInput(n("#SignInEmail"))){waitSpinner.addSpinner();var r={FormGuid:n("#SignInFormGuid").val(),UserEmail:n("#SignInEmail").val(),SiteName:n("#SiteName").val()};n.ajax(t.signIn.recoverPasswordPostUrl,{data:JSON.stringify(r),type:"POST",contentType:"application/json",dataType:"json",success:function(n){n.IsSuccess===!0?notification.showSignin(n.Message,notification.notificationType.success):notification.showSignin(n.Message+"<br />&nbsp;<br />Please ensure you have <strong>Third Party Cookies<\/strong> enabled in your browser settings.",notification.notificationType.error);waitSpinner.removeSpinner()},error:function(n,t,i){console.error("Sign-in request failed:",{textStatus:t,errorThrown:i});var r=t==="timeout"?"Request timed out. Please try again.":t==="error"?"Sign-in failed. Please check your connection and try again.":"Sign-in failed: "+(i||t||"Unknown error");notification.showSignin(r,notification.notificationType.error);waitSpinner.removeSpinner()}})}},ei=function(i){i.preventDefault();notification.hideAll();waitSpinner.addSpinner();n.ajax(t.signIn.signInGuestPostUrl,{data:n("#SignInForm").serialize(),type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",success:function(t){t.IsSuccess===!0?(notification.show("Successfully logged in as guest!",notification.notificationType.success),s(),n("#SignInContainer").modal("hide")):notification.showSignin("Failed to log in guest: "+t.Message+"<br />&nbsp;<br />Please ensure you have <strong>Third Party Cookies<\/strong> enabled in your browser settings.",notification.notificationType.error);waitSpinner.removeSpinner()},error:function(n,t,i){console.error("Sign-in request failed:",{textStatus:t,errorThrown:i});var r=t==="timeout"?"Request timed out. Please try again.":t==="error"?"Sign-in failed. Please check your connection and try again.":"Sign-in failed: "+(i||t||"Unknown error");notification.showSignin(r,notification.notificationType.error);waitSpinner.removeSpinner()}})},oi=function(n){n.preventDefault();tt("#SignInContainer","#RegisterContainer")},ot=function(){var t=n("#CreatePassword").val(),i=n("#CheckPassword"),r=i.val();return t===r},si=function(i){if(i.preventDefault(),k.validate()){waitSpinner.addSpinner();var r=n("#RegistrationForm").serialize();n.ajax(t.signIn.registerPostUrl,{data:r,type:"POST",contentType:"application/x-www-form-urlencoded",dataType:"json",success:function(t){t.IsSuccess===!0?t.IsLoggedIn===!0?(notification.show("Successfully registered!",notification.notificationType.success),n("#registerUserKey").val(t.RegisterUserKey),s(),n("#RegisterContainer").modal("hide")):t.UserExists===!0&&notification.showRegister(t.Message,notification.notificationType.info):notification.showRegister("Failed to save registration: "+t.Message+"<br />&nbsp;<br />Please ensure you have <strong>Third Party Cookies<\/strong> enabled in your browser settings.",notification.notificationType.error);waitSpinner.removeSpinner()},error:function(n,t,i){console.error("Registration request failed:",{textStatus:t,errorThrown:i});var r=t==="timeout"?"Request timed out. Please try again.":t==="error"?"Registration failed. Please check your connection and try again.":"Registration failed: "+(i||t||"Unknown error");notification.showRegister(r,notification.notificationType.error);waitSpinner.removeSpinner()}})}},hi=function(n){n.preventDefault();notification.hideAll();tt("#RegisterContainer","#SignInContainer")},ci=function(){console.log("🔄 Starting heartbeat timer",{formGuid:t.formGuid,heartbeatInterval:t.heartbeatIntervalSeconds,formTimeout:t.formTimeoutMinutes,timestamp:(new Date).toISOString()});e=setInterval(function(){var i=(new Date-g)/6e4,r;if(console.log("💓 Heartbeat tick",{elapsedMinutes:i.toFixed(2),timeoutMinutes:t.formTimeoutMinutes,warningShown:y,formGuid:t.formGuid,timestamp:(new Date).toISOString()}),!y&&i>t.formTimeoutMinutes-5&&(y=!0,console.log("⚠️ Showing timeout warning",{elapsedMinutes:i.toFixed(2)}),ai()),i>t.formTimeoutMinutes){console.log("⏰ Form timeout reached, clearing heartbeat",{elapsedMinutes:i.toFixed(2)});clearInterval(e);st();return}r={formGuid:t.formGuid,captchaGuid:n("#captchaGuid").val(),sessionId:n("[name=sessionId]").val()};console.log("📡 Sending heartbeat request",r);n.ajax({url:"/Form/FormHeartbeat",type:"POST",data:r,success:function(n){console.log("✅ Heartbeat success",{response:n,elapsedMinutes:i.toFixed(2),timestamp:(new Date).toISOString()})},error:function(n,t,r){console.error("❌ Heartbeat failed",{status:n.status,statusText:n.statusText,textStatus:t,errorThrown:r,responseText:n.responseText,responseJSON:n.responseJSON,elapsedMinutes:i.toFixed(2),timestamp:(new Date).toISOString()});n.responseJSON&&n.responseJSON.message==="Session not found"?(console.log("🔒 Session not found, clearing heartbeat and showing timeout"),clearInterval(e),st()):n.status===0?console.log("🔌 Network error or request aborted"):n.status>=500&&console.log("🚨 Server error during heartbeat")}});li(i)},t.heartbeatIntervalSeconds*1e3)},li=function(t){var u=n("#form-elapsed-time");if(u.length>0){var i=Math.floor(t/60),f=Math.floor(t%60),r="";i>0&&(r=i+" hour"+(i>1?"s":"")+" ");r+=f+" minute"+(f!==1?"s":"");u.text("Time on form: "+r)}},ai=function(){n("body").append('<div id="timeout-warning" style="position: fixed; top: 20px; right: 20px; background: #fff3cd; border: 1px solid #ffeaa7; color: #856404; padding: 15px; border-radius: 5px; box-shadow: 0 2px 5px rgba(0,0,0,0.2); z-index: 9999; max-width: 350px;"><strong>Session Expiring Soon<\/strong><br/>Your form session will expire in 5 minutes. Please submit your form soon to avoid losing your progress.<button onclick="$(\'#timeout-warning\').remove();" style="float: right; background: none; border: none; font-size: 20px; cursor: pointer; margin: -10px -5px 0 0;">&times;<\/button><\/div>')},st=function(){clearInterval(e);n("body").append('<div style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); z-index: 10000; display: flex; align-items: center; justify-content: center;"><div style="background: white; padding: 30px; border-radius: 5px; text-align: center; max-width: 400px;"><h3 style="color: #dc3545; margin: 0 0 15px 0;">Form Session Expired<\/h3><p>Your form session has expired due to inactivity. Please refresh the page to start a new session.<\/p><button onclick="window.location.reload();" style="background: #007bff; color: white; border: none; padding: 10px 30px; border-radius: 5px; cursor: pointer;">Refresh Page<\/button><\/div><\/div>');n("form").on("submit",function(n){return n.preventDefault(),!1})},vi=function(i){if(console.log("🏁 Form initialization entry point",{options:i,timestamp:(new Date).toISOString()}),n.extend(t,i),console.log("⚙️ Form configuration merged",{formGuid:t.formGuid,formTimeoutMinutes:t.formTimeoutMinutes,heartbeatIntervalSeconds:t.heartbeatIntervalSeconds,hasPaymentLayout:t.hasPaymentLayout,showCaptcha:t.showCaptcha,isRegistrationEnabled:t.signIn.isRegistrationEnabled,timestamp:(new Date).toISOString()}),t.signIn.isRegistrationEnabled===!0){h=n("#SignInForm").kendoValidator().data("kendoValidator");n("#signin-button").on("click",ui);n("#recover-password").on("click",fi);if(t.signIn.loginButtonSizeClass.length>0&&n(".signin-button").addClass(t.signIn.loginButtonSizeClass),t.signIn.isGuestLoginEnabled===!0){t.signIn.guestButtonSizeClass.length>0&&n(".guest-button").addClass(t.signIn.guestButtonSizeClass);n("#guest-button").on("click",ei)}k=n("#RegistrationForm").kendoValidator({rules:{passwordMatch:function(n){return n.is("#CheckPassword")?ot():!0}},messages:{passwordMatch:"Password and Confirm Password must match.",required:"Confirm Password is required."}}).data("kendoValidator");t.signIn.registerButtonSizeClass.length>0&&(n(".show-register-button").addClass(t.signIn.registerButtonSizeClass),n(".register-button").addClass(t.signIn.registerButtonSizeClass));n("#show-register-button").on("click",oi);n("#CheckPassword").on("input",ot);n("#register-button").on("click",si);n("#register-cancel-button").on("click",hi);n("#SignInContainer").modal("show")}else console.log("📋 Loading form sections directly (no sign-in required)"),s();t.formGuid?t.isOnSiteSession?console.log("🏢 OnSite session detected - heartbeat disabled",{formGuid:t.formGuid,isOnSiteSession:t.isOnSiteSession,timestamp:(new Date).toISOString()}):(console.log("⏰ Initializing form timing and heartbeat",{formGuid:t.formGuid,loadTime:(new Date).toISOString()}),g=new Date,ci()):console.warn("⚠️ No form GUID provided - heartbeat disabled")};return{initialize:vi,onReCaptchaLoad:at,onGEMResponse:lt,onGEMFinalLoad:ut,formSectionReload:ri,submitWithAlternateLogic:ni}}(jQuery);(function(n,t){"use strict";var i={isIframe:n.self!==n.top,fingerprint:null,behavior:{startTime:Date.now(),fieldInteractions:[],focusSequence:[],lastInteractionTime:Date.now()},init:function(){var t=this;n.console&&n.console.log&&console.log("[Fingerprint] Initializing device fingerprinting - iframe context:",this.isIframe);this.generateFingerprint(function(i){t.fingerprint=i;n.console&&n.console.log&&(i?console.log("[Fingerprint] Successfully generated",t.isIframe?"weak":"strong","fingerprint:",i.substring(0,8)+"..."):console.warn("[Fingerprint] Failed to generate fingerprint"));t.populateFormFields()});this.setupBehaviorTracking()},generateFingerprint:function(n){var t=[],u=this.isIframe,i,r;t.push(this.getTimezone());t.push(this.getLanguage());t.push(this.getUserAgent());u?(t.push(this.getColorDepth()),t.push(this.getPixelRatio()),r=this.hashComponents(t),n(r)):(i=this,t.push(this.getScreenProperties()),this.getCanvasFingerprint(function(r){t.push(r);t.push(i.getFontList());t.push(i.getWebGLInfo());t.push(i.getPlatformInfo());var u=i.hashComponents(t);n(u)}))},getTimezone:function(){return(new Date).getTimezoneOffset()},getLanguage:function(){return navigator.language||navigator.userLanguage||"unknown"},getUserAgent:function(){return navigator.userAgent},getScreenProperties:function(){return[screen.width,screen.height,screen.availWidth,screen.availHeight,screen.colorDepth,screen.pixelDepth||-1].join("x")},getColorDepth:function(){return screen.colorDepth||-1},getPixelRatio:function(){return n.devicePixelRatio||1},getCanvasFingerprint:function(i){var u,r,f;try{if(u=t.createElement("canvas"),r=u.getContext("2d"),!r){i("no-canvas");return}u.width=200;u.height=50;r.textBaseline="top";r.font='14px "Arial"';r.textBaseline="alphabetic";r.fillStyle="#f60";r.fillRect(125,1,62,20);r.fillStyle="#069";r.fillText("Canvas fingerprint 🎨",2,15);r.fillStyle="rgba(102, 204, 0, 0.7)";r.fillText("Canvas fingerprint 🎨",4,17);f=u.toDataURL();i(this.simpleHash(f))}catch(e){n.console&&n.console.warn&&console.warn("[Fingerprint] Canvas fingerprinting blocked:",e.message);i("canvas-blocked")}},getFontList:function(){var i=["monospace","sans-serif","serif"],s=["Andale Mono","Arial","Arial Black","Comic Sans MS","Courier New","Georgia","Impact","Times New Roman","Trebuchet MS","Verdana"],h=[],n=t.createElement("span"),e,r,f,o,u;for(n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="72px",n.innerHTML="mmmmmmmmmmlli",t.body.appendChild(n),e={},r=0;r<i.length;r++)n.style.fontFamily=i[r],e[i[r]]=n.offsetWidth;for(f=0;f<s.length;f++)for(o=s[f],u=0;u<i.length;u++)if(n.style.fontFamily='"'+o+'",'+i[u],n.offsetWidth!==e[i[u]]){h.push(o);break}return t.body.removeChild(n),h.join(",")},getWebGLInfo:function(){var r,n,i;try{return(r=t.createElement("canvas"),n=r.getContext("webgl")||r.getContext("experimental-webgl"),!n)?"no-webgl":(i=n.getExtension("WEBGL_debug_renderer_info"),i)?n.getParameter(i.UNMASKED_VENDOR_WEBGL)+"~"+n.getParameter(i.UNMASKED_RENDERER_WEBGL):"webgl-no-debug"}catch(u){return"webgl-error"}},getPlatformInfo:function(){return[navigator.platform,navigator.hardwareConcurrency||-1,navigator.deviceMemory||-1,navigator.maxTouchPoints||0].join("|")},simpleHash:function(n){var t=0,i,r;if(!n||n.length===0)return t;for(i=0;i<n.length;i++)r=n.charCodeAt(i),t=(t<<5)-t+r,t=t&t;return Math.abs(t).toString(16)},hashComponents:function(n){return this.simpleHash(n.join("|||"))},setupBehaviorTracking:function(){var n=this;t.addEventListener("focus",function(t){if(t.target.matches("input, select, textarea")){var i=Date.now(),r=t.target.name||t.target.id||"unknown";n.behavior.focusSequence.push(r);n.behavior.fieldInteractions.push({field:r,action:"focus",time:i,timeSinceStart:i-n.behavior.startTime,timeSinceLast:i-n.behavior.lastInteractionTime});n.behavior.lastInteractionTime=i}},!0);t.addEventListener("input",function(t){if(t.target.matches("input, textarea")){var i=Date.now(),r=t.target.name||t.target.id||"unknown",u=n.behavior.fieldInteractions.some(function(n){return n.field===r&&n.action==="input"});u||(n.behavior.fieldInteractions.push({field:r,action:"input",time:i,timeSinceStart:i-n.behavior.startTime,timeSinceLast:i-n.behavior.lastInteractionTime}),n.behavior.lastInteractionTime=i)}},!0)},getBehaviorSummary:function(){var n=Date.now();return{totalTime:n-this.behavior.startTime,fieldCount:this.behavior.focusSequence.length,uniqueFields:[...new Set(this.behavior.focusSequence)].length,averageFieldTime:this.calculateAverageFieldTime(),focusPattern:this.behavior.focusSequence.slice(0,10).join(",")}},calculateAverageFieldTime:function(){var r,n,t,i;if(this.behavior.fieldInteractions.length<2)return 0;for(r=0,n=0,t=1;t<this.behavior.fieldInteractions.length;t++)i=this.behavior.fieldInteractions[t].timeSinceLast,i>0&&i<6e4&&(r+=i,n++);return n>0?Math.round(r/n):0},updateBehaviorField:function(n){var t=n.querySelector?n.querySelector("#__behavior"):n.find("#__behavior")[0];t&&(t.value=JSON.stringify(this.getBehaviorSummary()))},populateFormFields:function(){var i,r,u,n;if(t.readyState==="loading"){t.addEventListener("DOMContentLoaded",this.populateFormFields.bind(this));return}if(i=t.getElementById("__fingerprint"),i&&this.fingerprint&&(i.value=this.fingerprint),r=t.getElementById("__isIframe"),r&&(r.value=this.isIframe?"true":"false"),u=t.querySelectorAll("form"),n=this,u.forEach(function(t){t.addEventListener("submit",function(){n.updateBehaviorField(t)})}),typeof jQuery!="undefined"){jQuery(t).on("submit","form",function(){n.updateBehaviorField(this)});jQuery(t).ajaxSend(function(i,r,u){if(u.type==="POST"&&u.data&&u.url&&(u.url.indexOf("SubmitForm")>-1||u.url.indexOf("SaveForm")>-1)){var f=t.getElementById("__fingerprint"),e=t.getElementById("__isIframe"),o=t.getElementById("__behavior");f&&n.fingerprint&&u.data.indexOf("__fingerprint")===-1&&(u.data+="&__fingerprint="+encodeURIComponent(n.fingerprint));e&&u.data.indexOf("__isIframe")===-1&&(u.data+="&__isIframe="+encodeURIComponent(n.isIframe));o&&u.data.indexOf("__behavior")===-1&&(u.data+="&__behavior="+encodeURIComponent(JSON.stringify(n.getBehaviorSummary())))}})}}};t.readyState==="loading"?t.addEventListener("DOMContentLoaded",function(){i.init()}):i.init();n.DonorSnapFingerprint=i})(window,document),function(){"use strict";function r(n,t,i,r){return n+"|"+t+"|"+i+"|"+r}function t(n){return typeof n!="string"?n:(n.length>1e3&&(n=n.substring(0,997)+"..."),n=n.replace(/\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g,"[REDACTED_CC]"),n=n.replace(/\b\d{3}-\d{2}-\d{4}\b/g,"[REDACTED_SSN]"),n.toLowerCase().includes("password")&&(n=n.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,"[REDACTED_EMAIL]")),n)}var n=[],i=50;window.onerror=function(u,f,e,o,s){var c,h,l;try{if(c=r(u,f,e,o),n.indexOf(c)!==-1)return!0;n.push(c);n.length>i&&n.shift();h={message:t(u||"Unknown error"),source:t(f||"Unknown source"),lineno:e||0,colno:o||0,stack:s&&s.stack?t(s.stack):"No stack trace available",userAgent:navigator.userAgent,timestamp:(new Date).toISOString(),url:window.location.href,referrer:document.referrer||"direct"};l="unknown";try{l=window.formGuid||$("[data-form-guid]").data("form-guid")||$('[name="FormGuid"]').val()||"unknown"}catch(a){}$.ajax({url:"/Form/LogClientError",type:"POST",timeout:2e3,data:{formGuid:l,errorType:"JavaScriptError",errorMessage:h.message,errorDetails:JSON.stringify(h)},error:function(){}});window.console&&console.error&&console.error("Global error caught:",h)}catch(v){}return!0};window.addEventListener("unhandledrejection",function(n){try{var i=n.reason,r="Unhandled Promise Rejection";i&&(typeof i=="string"?r=i:i.message?r=i.message:i.toString&&(r=i.toString()));window.onerror(t(r),"Promise",0,0,i)}catch(u){}})}()