(function(){ const form = document.getElementById('leadForm'); if(!form) return; let formSubmitting = false; function isValidEmail(email){ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function isValidPhone(phone){ return /^[2-9][0-9]{9}$/.test(phone); } function isNumeric(value){ return !isNaN(value) && value.trim() !== ''; } form.addEventListener('submit', function(e){ /* Prevent double submit in same page instance */ if(formSubmitting){ e.preventDefault(); return; } const firstName = form.firstName.value.trim(); const lastName = form.lastName.value.trim(); const email = form.businessEmail.value.trim().toLowerCase(); const phone = form.phoneNumber.value.trim(); const carrier = form.carrier.value; const monthlyBudget = form.monthlyBudget.value.trim(); const dailyVolume = form.dailyVolume.value.trim(); const producers = form.producers.value; const location = form.location.value; const multiState = form.multiState.value; const startDateValue = form.startDate.value; /* ===== Required Field Check ===== */ if(!firstName || !lastName || !email || !phone || !carrier || !monthlyBudget || !dailyVolume || !producers || !location || !multiState || !startDateValue){ alert('Please complete all required fields.'); e.preventDefault(); return; } /* ===== Email Validation ===== */ if(!isValidEmail(email) || email.endsWith('@mailinator.com')){ alert('Please enter a valid business email address.'); e.preventDefault(); return; } /* ===== Phone Validation ===== */ if(!isValidPhone(phone)){ alert('Please enter a valid 10-digit phone number that does not start with 0 or 1.'); e.preventDefault(); return; } /* ===== Numeric Validation ===== */ if(!isNumeric(monthlyBudget)){ alert('Monthly budget must be a valid number.'); e.preventDefault(); return; } if(!isNumeric(dailyVolume)){ alert('Daily volume must be a valid number.'); e.preventDefault(); return; } /* ===== Date Validation (No Past Dates) ===== */ const selectedDate = new Date(startDateValue + 'T00:00:00'); const today = new Date(); today.setHours(0,0,0,0); if(selectedDate < today){ alert('Preferred Go-Live Date cannot be in the past.'); e.preventDefault(); return; } /* ===== Carrier-Specific Validation ===== */ if(carrier === 'Allstate' && (!email.startsWith('a0') || !email.endsWith('@allstate.com'))){ alert('Allstate requires an email starting with "a0" and ending with "@allstate.com".'); e.preventDefault(); return; } if(carrier === 'State Farm' && !email.endsWith('@statefarm.com')){ alert('State Farm requires an email ending with "@statefarm.com".'); e.preventDefault(); return; } if(carrier === 'Farmers Insurance' && !(email.endsWith('@farmersagent.com') || email.endsWith('@farmersagency.com'))){ alert('Farmers Insurance requires @farmersagent.com or @farmersagency.com email.'); e.preventDefault(); return; } /* ===== Gmail Confirmation ===== */ if(email.endsWith('@gmail.com')){ const userConfirmed = confirm('You have entered a Gmail address. For optimal communication and support, we recommend not using gmail. Do you want to proceed with this email?'); if(!userConfirmed){ e.preventDefault(); // Prevents form submission if user cancels return; } } /* ===== Lock form after all validation passes ===== */ formSubmitting = true; const submitBtn = form.querySelector('button[type="submit"], input[type="submit"]'); const loader = form.querySelector('#loader, [data-qw-loader]'); if(submitBtn){ submitBtn.disabled = true; if(submitBtn.tagName.toLowerCase() === 'button'){ submitBtn.dataset.originalText = submitBtn.textContent; submitBtn.textContent = 'Submitting...'; } else { submitBtn.dataset.originalText = submitBtn.value; submitBtn.value = 'Submitting...'; } } if(loader){ loader.style.display = 'block'; } }); })();