document.addEventListener('DOMContentLoaded', function() {
const emailField = document.getElementById('email');
let emailCheckTimer;
let lastCheckedEmail = '';
const ajaxUrl = '/wp-admin/admin-ajax.php';
const emailMessageDiv = document.createElement('div');
emailMessageDiv.id = 'email-validation-message';
if (emailField) {
emailField.parentElement.appendChild(emailMessageDiv);
emailField.addEventListener('input', handleEmailInput);
emailField.addEventListener('blur', handleEmailInput);
}
function handleEmailInput() {
clearTimeout(emailCheckTimer);
const email = emailField.value.trim();
if (!email) {
emailMessageDiv.innerHTML = '';
lastCheckedEmail = '';
return;
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
if (email.length > 0) {
emailMessageDiv.innerHTML = '
Please enter a valid email format';
}
return;
}
emailCheckTimer = setTimeout(function() {
validateEmailNow();
}, 500);
}
function validateEmailNow() {
const email = emailField.value.trim();
if (!email || email === lastCheckedEmail) {
return;
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
if (email.length > 0) {
emailMessageDiv.innerHTML = '
Please enter a valid email format';
}
return;
}
emailMessageDiv.innerHTML = '
Checking email...';
lastCheckedEmail = email;
validateEmailV2(email);
}
function validateEmailV2(email) {
const xhr = new XMLHttpRequest();
xhr.open('POST', ajaxUrl, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
try {
const response = JSON.parse(xhr.responseText);
if (response.success) {
const data = response.data;
if (data.emailExists) {
emailMessageDiv.innerHTML = '
Email is already registered';
const submitButton = document.getElementById('submitButton');
if (submitButton) {
submitButton.disabled = true;
submitButton.style.opacity = '0.5';
submitButton.style.cursor = 'not-allowed';
}
} else {
emailMessageDiv.innerHTML = '
Email is available';
const submitButton = document.getElementById('submitButton');
if (submitButton) {
submitButton.disabled = false;
submitButton.style.opacity = '1';
submitButton.style.cursor = 'pointer';
}
}
} else {
emailMessageDiv.innerHTML = '
Error checking email';
}
} catch (error) {
console.error('Error parsing response:', error);
emailMessageDiv.innerHTML = '
Error checking email';
}
} else {
emailMessageDiv.innerHTML = '
Connection error';
}
}
};
xhr.send('action=validate_email_v2&email=' + encodeURIComponent(email));
}
});
document.addEventListener('wpcf7mailsent', function(event) {
const emailMessageDiv = document.getElementById('email-validation-message');
if (emailMessageDiv) {
emailMessageDiv.innerHTML = '';
}
setTimeout(function() {
const successMessage = event.target.querySelector('.wpcf7-response-output');
if (successMessage) {
successMessage.style.transition = 'opacity 0.5s ease-out';
successMessage.style.opacity = '0';
setTimeout(function() {
successMessage.style.display = 'none';
}, 500);
}
}, 10000);
});
document.addEventListener('wpcf7beforesubmit', function (event) {
const formData = event.detail.formData;
if (formData.has('your-bloodType')) {
const bloodType = formData.getAll('your-bloodType');
if (Array.isArray(bloodType) && bloodType.length > 0) {
formData.delete('your-bloodType');
formData.append('your-bloodType', bloodType[0]);
}
}
if (formData.has('customerType')) {
const customerType = formData.getAll('customerType');
if (Array.isArray(customerType) && customerType.length > 0) {
formData.delete('customerType');
formData.append('customerType', customerType[0]);
}
}
if (formData.has('avatarType')) {
const avatarType = formData.getAll('avatarType');
if (Array.isArray(avatarType) && avatarType.length > 0) {
formData.delete('avatarType');
formData.append('avatarType', avatarType[0]);
}
}
});
function initAgeAutopopulate() {
const birthDateField = document.getElementById('birth-date');
const ageField = document.querySelector('input[name="your-age"]');
if (!birthDateField || !ageField) {
setTimeout(initAgeAutopopulate, 500);
return;
}
ageField.setAttribute('readonly', true);
ageField.style.backgroundColor = '#f0f0f0';
ageField.style.cursor = 'not-allowed';
birthDateField.addEventListener('change', function () {
const birthDateValue = birthDateField.value;
if (!birthDateValue) {
ageField.value = '';
return;
}
const birthDate = new Date(birthDateValue);
const today = new Date();
if (isNaN(birthDate.getTime()) || birthDate > today) {
ageField.value = '';
return;
}
let age = today.getFullYear() - birthDate.getFullYear();
const monthDiff = today.getMonth() - birthDate.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() = 18 && age {
element.textContent = cleanCountryName(element.textContent);
});
// Add onChange event listener to input box
jQuery('#uacf7_countries_home-country').change(function(event) {
jQuery('#uacf7_countries_home-country').val(cleanCountryName(event.target.value));
jQuery('#uacf7_countries_home-country_code').val(cleanCountryName(event.target.value));
});
});
function cleanCountryName(text) {
// Remove the last set of parentheses and everything after it
// This keeps Congo (DRC) but removes the localized part like (Jamhuri ya Kidemokrasia ya Kongo)
text = text.replace(/\s*\([^)]*\)\s*$/, '');
return text.trim();
}
#email-validation-message {
font-size: 14px;
margin-top: 5px;
min-height: 20px;
line-height: 1.4;
}
#email-validation-message span {
display: inline-block;
}