// Utility functions for validation function isValidFullName(name) { const words = name.trim().split(/\s+/); return /^[A-Za-z]/.test(name) && words.length >= 2; } // Main validation function function validateInput(input, isValidFn) { const parent = input.closest('.customer-step-info'); if (!isValidFn(input.value.trim())) { parent.classList.add('error'); } else { parent.classList.remove('error'); } validateStepInfo(); } function isValidTaxID(value) { const trimmed = value.trim(); const regex = /^[A-Za-z0-9@.+-]{5,}$/; return regex.test(trimmed); } function validateCuit(cuit) { const validTypes = [20, 23, 24, 27, 30, 33, 34]; const multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]; const number = cuit.replace(/-/g, '').trim(); if (number.length !== 11) return false; const typePrefix = parseInt(number.slice(0, 2), 10); if (!validTypes.includes(typePrefix)) return false; let sum = 0; for (let i = 0; i < 10; i++) { sum += parseInt(number[i], 10) * multipliers[i]; } let checksum = 11 - (sum % 11); if (checksum === 11) checksum = 0; else if (checksum === 10) checksum = 9; return checksum === parseInt(number[10], 10); } function checkCuit(cuit) { const isValid = validateCuit(cuit); return isValid; } function validateStepInfo() { const sections = document.querySelectorAll('.customer-step-info'); let isValid = true; sections.forEach(section => { // If the section has class 'error', it's invalid if (section.classList.contains('error')) { isValid = false; return; } // Check if every input in the section has a value const inputs = section.querySelectorAll('input'); inputs.forEach(input => { if (!input.value.trim()) { isValid = false; } }); }); const submitButton = document.getElementById('step-form-button-submit'); if (isValid) { submitButton.classList.remove('disabled'); } else { submitButton.classList.add('disabled'); } }