// פונקציה לאיתור קואורדינטות (נשמרת ללא שינוי)
async function fetchCoordinates() {
    const city = document.querySelector('input[name="city"]').value;
    const street = document.querySelector('input[name="street"]').value;
    const num = document.querySelector('input[name="house_number"]').value;

    if(city && street && num) {
        const query = `${street} ${num}, ${city}, Israel`;
        try {
            const response = await fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(query)}`);
            const data = await response.json();
            if(data && data.length > 0) {
                document.getElementById('lat').value = data[0].lat;
                document.getElementById('lng').value = data[0].lon;
                document.getElementById('formatted_address').value = data[0].display_name;
            }
        } catch (error) { console.error("Error geocoding"); }
    }
}

// אלמנטים
const form = document.getElementById('registerForm');
const passwordInput = document.getElementById('password');
const confirmInput = document.getElementById('password_confirm');
const emailInput = document.getElementById('email');
const phoneInput = document.getElementById('phone');
const submitBtn = document.getElementById('submit-btn');

// ניהול חשיפת סיסמה (עין)
function setupToggle(iconId, inputId) {
    const icon = document.getElementById(iconId);
    if(icon) {
        icon.addEventListener('click', function() {
            const input = document.getElementById(inputId);
            const type = input.type === 'password' ? 'text' : 'password';
            input.type = type;
            this.classList.toggle('fa-eye-slash');
        });
    }
}
setupToggle('togglePassword', 'password');
setupToggle('togglePasswordConfirm', 'password_confirm');

// פונקציות עזר לבועות
function showBubble(el, msg, isValid) {
    if(!el) return;
    el.innerText = msg;
    el.classList.add('show');
    el.classList.toggle('valid', isValid);
}
function hideBubble(el) { if(el) el.classList.remove('show'); }

// --- בדיקות תקינות ---

function isEmailValid(email) {
    return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}

function isPasswordStrong(p) {
    return p.length >= 8 && /[0-9]/.test(p) && /[a-zA-Z]/.test(p);
}

// בדיקת מצב כפתור שליחה - הפונקציה המרכזית
function checkFormValidity() {
    const emailVal = emailInput.value;
    const passVal = passwordInput.value;
    const confirmVal = confirmInput.value;
    const phoneVal = phoneInput.value;
    
    // בדיקת שדות חובה נוספים (שם וכתובת)
    const firstName = document.querySelector('input[name="first_name"]').value;
    const lastName = document.querySelector('input[name="last_name"]').value;
    const city = document.querySelector('input[name="city"]').value;
    const street = document.querySelector('input[name="street"]').value;
    const hNum = document.querySelector('input[name="house_number"]').value;

    const allFieldsFull = firstName && lastName && emailVal && passVal && confirmVal && phoneVal && city && street && hNum;
    
    const emailOk = isEmailValid(emailVal);
    const passStrong = isPasswordStrong(passVal);
    const passMatch = passVal === confirmVal && passVal !== "";
    const phoneOk = phoneVal.length >= 9;

    // הכפתור יהיה פעיל רק אם הכל מלא והכל תקין
    submitBtn.disabled = !(allFieldsFull && emailOk && passStrong && passMatch && phoneOk);
}

// --- מאזינים לאירועים בזמן אמת ---

// אימייל
emailInput.addEventListener('input', () => {
    const bubble = document.getElementById('email-error');
    if (emailInput.value === "") hideBubble(bubble);
    else if (!isEmailValid(emailInput.value)) showBubble(bubble, "❌ אימייל לא תקין", false);
    else showBubble(bubble, "✅ אימייל תקין", true);
    checkFormValidity();
});

// סיסמה
passwordInput.addEventListener('input', () => {
    const bubble = document.getElementById('password-feedback');
    if (passwordInput.value === "") hideBubble(bubble);
    else if (!isPasswordStrong(passwordInput.value)) showBubble(bubble, "❌ מינימום 8 תווים, אות ומספר", false);
    else showBubble(bubble, "✅ סיסמה חזקה", true);
    checkFormValidity();
});

// אימות סיסמה
confirmInput.addEventListener('input', () => {
    const bubble = document.getElementById('confirm-feedback');
    if (confirmInput.value === "") hideBubble(bubble);
    else if (confirmInput.value !== passwordInput.value) showBubble(bubble, "❌ אין התאמה", false);
    else showBubble(bubble, "✅ יש התאמה", true);
    checkFormValidity();
});

// טלפון
phoneInput.addEventListener('input', function() {
    this.value = this.value.replace(/[^0-9]/g, '');
    const bubble = document.getElementById('phone-error');
    if (this.value.length > 0 && this.value.length < 9) showBubble(bubble, "❌ טלפון קצר מדי", false);
    else hideBubble(bubble);
    checkFormValidity();
});

// הוספת האזנה לכל שאר השדות (שמות וכתובת)
document.querySelectorAll('input[required]').forEach(input => {
    input.addEventListener('input', checkFormValidity);
});

// איתור כתובת
document.querySelectorAll('input[name="city"], input[name="street"], input[name="house_number"]')
    .forEach(input => input.addEventListener('blur', fetchCoordinates));

// הפעלה ראשונית כדי לוודא שהכפתור אפור
checkFormValidity(); 