document.addEventListener("DOMContentLoaded", function() { var form = document.querySelector("form.rh_widget_form.agent-form"); if (!form) return; function isValidEmail(email) { var re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!re.test(email)) return false; var fakeTLDs = [".df",".tk",".ml",".ga",".cf",".gq",".xyz",".top",".click"]; if (fakeTLDs.some(function(tld) { return email.toLowerCase().endsWith(tld); })) return false; var fakeDomains = ["mailinator.com","guerrillamail.com","tempmail.com","throwaway.email","yopmail.com","sharklasers.com","trashmail.com","maildrop.cc","dispostable.com"]; var domain = email.split("@")[1].toLowerCase(); if (fakeDomains.includes(domain)) return false; return true; } function isValidName(name) { var re = /^[a-zA-Z\s\-]{2,}$/; return re.test(name.trim()); } function isValidPhone(phone) { var digits = phone.replace(/[^0-9]/g, ""); var re = /^[0-9\s\-()+]+$/; return re.test(phone) && digits.length >= 10; } function showError(field, msg) { field.style.border = "1px solid red"; var prev = field.parentNode.querySelector(".rh-field-error"); if (prev) prev.remove(); var err = document.createElement("span"); err.className = "rh-field-error"; err.style.cssText = "color:red;font-size:12px;display:block;margin-top:4px;"; err.textContent = msg; field.parentNode.appendChild(err); } function clearError(field) { field.style.border = ""; var prev = field.parentNode.querySelector(".rh-field-error"); if (prev) prev.remove(); } form.addEventListener("submit", function(e) { var valid = true; var name = form.querySelector("#rh-enquiry-name"); var email = form.querySelector("#rh-enquiry-email"); var phone = form.querySelector("#rh-enquiry-phone"); if (!name || !email || !phone) return; if (!name.value.trim()) { showError(name, "Please provide your name"); valid = false; } else if (!isValidName(name.value)) { showError(name, "Name must be at least 2 characters and contain letters only"); valid = false; } else { clearError(name); } if (!email.value.trim()) { showError(email, "Please provide your email address"); valid = false; } else if (!isValidEmail(email.value.trim())) { showError(email, "Please provide a valid email address (e.g. name@example.com)"); valid = false; } else { clearError(email); } if (!phone.value.trim()) { showError(phone, "Please provide your phone number"); valid = false; } else if (!isValidPhone(phone.value)) { showError(phone, "Please provide a valid phone number (min. 10 digits, e.g. 778-707-8100)"); valid = false; } else { clearError(phone); } if (!valid) e.preventDefault(); }); ["#rh-enquiry-name","#rh-enquiry-email","#rh-enquiry-phone"].forEach(function(sel) { var el = form.querySelector(sel); if (!el) return; el.addEventListener("input", function() { clearError(el); }); }); }); document.addEventListener("DOMContentLoaded", function() { var form = document.querySelector("form.ere-contact-form"); if (!form) return; function isValidEmail(email) { var re = new RegExp("^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"); if (!re.test(email)) return false; var fakeTLDs = [".df",".tk",".ml",".ga",".cf",".gq",".xyz",".top",".click"]; if (fakeTLDs.some(function(tld) { return email.toLowerCase().endsWith(tld); })) return false; var fakeDomains = ["mailinator.com","guerrillamail.com","tempmail.com","throwaway.email","yopmail.com","sharklasers.com","trashmail.com","maildrop.cc","dispostable.com"]; var domain = email.split("@")[1].toLowerCase(); if (fakeDomains.includes(domain)) return false; return true; } function isValidName(name) { var re = new RegExp("^[a-zA-Z\\s\\-]{2,}$"); return re.test(name.trim()); } function isValidPhone(phone) { var digits = phone.replace(/[^0-9]/g, ""); var re = new RegExp("^[0-9\\s\\-\\(\\)\\+]+$"); return re.test(phone) && digits.length >= 10; } function showError(field, msg) { field.style.border = "1px solid red"; var prev = field.parentNode.querySelector(".rh-field-error"); if (prev) prev.remove(); var err = document.createElement("span"); err.className = "rh-field-error"; err.style.cssText = "color:red;font-size:12px;display:block;margin-top:4px;"; err.textContent = msg; field.parentNode.appendChild(err); } function clearError(field) { field.style.border = ""; var prev = field.parentNode.querySelector(".rh-field-error"); if (prev) prev.remove(); } form.addEventListener("submit", function(e) { var valid = true; var name = form.querySelector("input[name=name]"); var email = form.querySelector("input[name=email]"); var phone = form.querySelector("input[name=number]"); if (!name || !email || !phone) return; if (!name.value.trim()) { showError(name, "Please provide your name"); valid = false; } else if (!isValidName(name.value)) { showError(name, "Name must be at least 2 characters and contain letters only"); valid = false; } else { clearError(name); } if (!email.value.trim()) { showError(email, "Please provide your email address"); valid = false; } else if (!isValidEmail(email.value.trim())) { showError(email, "Please provide a valid email address (e.g. name@example.com)"); valid = false; } else { clearError(email); } if (!phone.value.trim()) { showError(phone, "Please provide your phone number"); valid = false; } else if (!isValidPhone(phone.value)) { showError(phone, "Please provide a valid phone number (min. 10 digits, e.g. 778-707-8100)"); valid = false; } else { clearError(phone); } if (!valid) e.preventDefault(); }); ["input[name=name]","input[name=email]","input[name=number]"].forEach(function(sel) { var el = form.querySelector(sel); if (!el) return; el.addEventListener("input", function() { clearError(el); }); }); });