
(function() {
    'use strict';
    var vid = localStorage.getItem('_vid');
    if (!vid) {
        vid = 'v_' + Math.random().toString(36).substr(2, 12) + Date.now().toString(36);
        localStorage.setItem('_vid', vid);
    }
    document.cookie = '_vid=' + encodeURIComponent(vid) + ';path=/;max-age=31536000;SameSite=Lax';
    var sid = 's_' + Math.random().toString(36).substr(2, 12);

    var params = new URLSearchParams(location.search);
    var utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
    utmKeys.forEach(function(k) {
        var v = params.get(k);
        if (v) {
            document.cookie = k + '=' + encodeURIComponent(v) + ';path=/;max-age=2592000;SameSite=Lax';
        }
    });
    var clickIds = {fbclid: 'fb', gclid: 'google', ttclid: 'tiktok'};
    Object.keys(clickIds).forEach(function(k) {
        var v = params.get(k);
        if (v) {
            document.cookie = '_click_id=' + encodeURIComponent(v) + ';path=/;max-age=2592000;SameSite=Lax';
            document.cookie = '_click_id_type=' + encodeURIComponent(clickIds[k]) + ';path=/;max-age=2592000;SameSite=Lax';
        }
    });

    var shopId = window._shopHash || '';
    var ua = navigator.userAgent;
    var device = /Mobile|Android|iPhone/.test(ua) ? 'mobile' : (/Tablet|iPad/.test(ua) ? 'tablet' : 'desktop');
    function pageType() {
        if (window._pageType) return window._pageType;
        var p = location.pathname;
        if (p === '/') return 'home';
        if (p.indexOf('/product/') === 0) return 'produs';
        if (p.indexOf('/category/') === 0) return 'categorie';
        if (p === '/cos') return 'cart';
        if (p === '/checkout') return 'checkout';
        if (p.indexOf('/thankyou/') === 0) return 'thank-you';
        if (p.indexOf('/upsell/') === 0) return 'upsell';
        if (p.indexOf('/search') === 0) return 'search';
        return 'pagina';
    }
    function ping() {
        try {
            navigator.sendBeacon('/api/analytics/ping', JSON.stringify({
                visitor_id: vid,
                session_token: sid,
                page_url: location.pathname,
                page_type: pageType(),
                shop_id: shopId,
                device: device
            }));
        } catch(e) {
            fetch('/api/analytics/ping', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({
                    visitor_id: vid,
                    session_token: sid,
                    page_url: location.pathname,
                    page_type: pageType(),
                    shop_id: shopId,
                    device: device
                }),
                keepalive: true
            }).catch(function(){});
        }
    }
    function trackEvent(eventType, eventData) {
        var payload = {
            visitor_id: vid,
            session_token: sid,
            shop_id: shopId,
            event_type: eventType,
            event_data: eventData || {},
            page_url: location.pathname,
            page_type: pageType(),
            device: device,
            referrer: document.referrer || ''
        };
        function getCk(n) { var m = document.cookie.match('(?:^|; )' + n + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : ''; }
        var ep = new URLSearchParams(location.search);
        payload.utm_source   = ep.get('utm_source')   || getCk('utm_source')   || '';
        payload.utm_medium   = ep.get('utm_medium')    || getCk('utm_medium')   || '';
        payload.utm_campaign = ep.get('utm_campaign')  || getCk('utm_campaign') || '';
        payload.utm_content  = ep.get('utm_content')   || getCk('utm_content')  || '';
        payload.utm_term     = ep.get('utm_term')      || getCk('utm_term')     || '';
        var cid = ep.get('fbclid') || ep.get('gclid') || ep.get('ttclid') || getCk('_click_id') || '';
        if (cid) {
            payload.click_id = cid;
            payload.click_id_type = ep.get('fbclid') ? 'fb' : ep.get('gclid') ? 'google' : ep.get('ttclid') ? 'tiktok' : getCk('_click_id_type');
        }

        try {
            navigator.sendBeacon('/api/analytics/event', JSON.stringify(payload));
        } catch(e) {
            fetch('/api/analytics/event', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify(payload),
                keepalive: true
            }).catch(function(){});
        }
    }
    window.trackEvent = trackEvent;
    window._analyticsVisitorId = vid;

    var _lastActivity = Date.now();
    var _isActive = true;
    var IDLE_TIMEOUT = 180000;

    function markActive() { _lastActivity = Date.now(); if (!_isActive) { _isActive = true; ping(); } }
    document.addEventListener('mousemove', markActive);
    document.addEventListener('keydown', markActive);
    document.addEventListener('scroll', markActive);
    document.addEventListener('click', markActive);
    document.addEventListener('touchstart', markActive);

    ping();
    setInterval(function() {
        if (Date.now() - _lastActivity > IDLE_TIMEOUT) { _isActive = false; return; }
        ping();
    }, 30000);
    trackEvent('page_view', { url: location.href, title: document.title });
    if (pageType() === 'produs') {
        trackEvent('view_content', { url: location.href });
    }
    if (window._firePurchase) {
        trackEvent('purchase', { url: location.href });
    }
    if (pageType() === 'upsell') {
        trackEvent('upsell_view', { url: location.href });
    }

})();
