// الحصول على مفاتيح التتبع من الإعدادات أو النموذج
function getCampaignKeys() {
    let campaignKeys = [];
    
    // محاولة قراءة المفاتيح من الإعدادات
    try {
        if (DS1InitInfo?.cookieReg?.length) {
            campaignKeys = [...DS1InitInfo.cookieReg];
        }
    } catch (e) {}
    
    // إذا لم توجد مفاتيح، استخرجها من النموذج
    if (!campaignKeys.length) {
        document.querySelectorAll('.custom-camp input[name]').forEach(input => {
            const keyName = input.getAttribute('name');
            if (keyName && !campaignKeys.includes(keyName)) {
                campaignKeys.push(keyName);
            }
        });
    }
    
    return campaignKeys;
}

// قراءة بيانات التتبع من localStorage أو إنشاء جديد
function getTrackingData(keyName) {
    try {
        const storageKey = 'campaign_tracking';
        const allData = JSON.parse(localStorage.getItem(storageKey) || '{}');
        return allData[keyName] || {};
    } catch (e) {
        return {};
    }
}

// حفظ بيانات التتبع في localStorage
function saveTrackingData(keyName, newValue) {
    try {
        const storageKey = 'campaign_tracking';
        const allData = JSON.parse(localStorage.getItem(storageKey) || '{}');
        
        if (!allData[keyName]) {
            allData[keyName] = {};
        }
        
        // زيادة عدد مرات هذه القيمة
        if (allData[keyName][newValue]) {
            allData[keyName][newValue]++;
        } else {
            allData[keyName][newValue] = 1;
        }
        
        localStorage.setItem(storageKey, JSON.stringify(allData));
        
        // حفظ أيضاً في الكوكيز للتوافق مع الأنظمة الأخرى
        if (typeof RMsetCookie === 'function') {
            RMsetCookie(keyName, newValue, 30, '/');
        }
        
    } catch (e) {
        // fallback للكوكيز فقط في حالة فشل localStorage
        if (typeof RMsetCookie === 'function') {
            RMsetCookie(keyName, newValue, 30, '/');
        }
    }
}

// معالجة قيم التتبع
function processTrackingValue(keyName) {
    // قراءة المعامل من الرابط أولاً
    let urlParam = '';
    if (typeof RMget_param === 'function') {
        urlParam = RMget_param(keyName);
    }
    
    // إذا وجد معامل جديد، حفظه
    if (urlParam) {
        saveTrackingData(keyName, urlParam);
    }
    
    // قراءة جميع البيانات المحفوظة لهذا المفتاح
    const trackingData = getTrackingData(keyName);
    
    // تحويل البيانات لصيغة نص مقروء
    const formattedData = Object.keys(trackingData)
        .map(value => `${value}: ${trackingData[value]}`)
        .join(', ');
    
    return formattedData;
}

// تحديث عناصر النموذج
function updateFormElements(keyName, value) {
    const selector = `.custom-camp.${keyName} input, .custom-camp input[name="${keyName}"]`;
    
    document.querySelectorAll(selector).forEach(element => {
        element.value = value;
        element.dispatchEvent(new Event('change', { bubbles: true }));
    });
}

// تشغيل النظام الرئيسي
function initCampaignTracker() {
    const campaignKeys = getCampaignKeys();
    
    campaignKeys.forEach(keyName => {
        if (keyName?.trim()) {
            const trackingValue = processTrackingValue(keyName);
            updateFormElements(keyName, trackingValue);
        }
    });
}

// دالة لعرض إحصائيات التتبع
function showTrackingStats() {
    try {
        const data = JSON.parse(localStorage.getItem('campaign_tracking') || '{}');
        console.log('إحصائيات التتبع:');
        
        Object.keys(data).forEach(key => {
            console.log(`\n${key}:`);
            Object.keys(data[key]).forEach(value => {
                console.log(`  ${value}: ${data[key][value]} مرة`);
            });
        });
    } catch (e) {
        console.log('لا توجد بيانات تتبع');
    }
}

// تشغيل النظام
initCampaignTracker();