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); });
});
});