const API_BASE = '/api/limit';

  function showMessage(msg, isError = false) {
    const box = document.getElementById('msgBox');
    box.textContent = msg;
    box.className = 'status-msg ' + (isError ? 'error' : 'success');
    box.style.display = 'block';
    setTimeout(() => { box.style.display = 'none'; }, 4000);
  }

  // Handle Enter key
  document.getElementById('identityKey').addEventListener('keydown', e => {
    if (e.key === 'Enter') checkInfo();
  });

  async function checkInfo() {
    const key = document.getElementById('identityKey').value.trim();
    if (!key) { alert('Vui lòng nhập Identity Key'); return; }

    setLoading('btnInfo', true, '🔍');
    try {
      const res = await fetch(`${API_BASE}/info?identity_key=${encodeURIComponent(key)}`);
      const data = await res.json();
      
      const statsRow = document.getElementById('statsRow');
      statsRow.style.display = 'grid';
      
      if (data.status === 'success') {
        const info = data.info || {};
        
        const limit = Number(info.limit || 0);
        const used = Number(info.used || 0);
        const remaining = Number(info.remaining || 0);
        const isAuth = info.is_authenticated;
        const isBlocked = remaining <= 0 && limit > 0;
        
        document.getElementById('statTotal').textContent = limit;
        document.getElementById('statUsed').textContent = used;
        
        const remainingEl = document.getElementById('statRemaining');
        remainingEl.textContent = remaining;
        remainingEl.className = 'value ' + (remaining <= 0 ? 'error' : (remaining <= 2 ? 'warn' : 'success'));
        
        const statusEl = document.getElementById('statStatus');
        statusEl.textContent = isBlocked ? 'BỊ CHẶN' : 'BÌNH THƯỜNG';
        statusEl.className = 'value ' + (isBlocked ? 'error' : 'success');
        
        document.getElementById('statType').textContent = isAuth ? 'Loại: Đăng nhập (User)' : 'Loại: Khách (Guest/Device)';
        
        // Progress
        const pct = limit > 0 ? Math.min(100, Math.round((used / limit) * 100)) : 0;
        document.getElementById('statProgressText').textContent = pct + '% đã dùng';
        
        const pFill = document.getElementById('progressFill');
        pFill.style.width = pct + '%';
        pFill.className = 'progress-bar-fill ' + (pct >= 100 ? 'danger' : (pct >= 80 ? 'warn' : ''));
        
      } else {
        showMessage(data.message || 'Không thể lấy thông tin', true);
        statsRow.style.display = 'none';
      }
    } catch (e) {
      showMessage('Lỗi: ' + e.message, true);
    } finally {
      setLoading('btnInfo', false, '🔍');
    }
  }

  async function resetLimit() {
    const key = document.getElementById('identityKey').value.trim();
    if (!key) { alert('Vui lòng nhập Identity Key'); return; }

    if (!confirm(`Bạn có chắc chắn muốn reset (thêm) limit cho ${key}?\nDữ liệu số tin nhắn đã gửi hôm nay sẽ tự động về 0.`)) return;

    setLoading('btnReset', true, '⚡');
    try {
      const res = await fetch(`${API_BASE}/reset`, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ identity_key: key })
      });
      const data = await res.json();
      
      if (data.status === 'success') {
        showMessage('✅ ' + data.message, false);
        // Tự động tải lại thông tin sau khi reset
        setTimeout(checkInfo, 300);
      } else {
        showMessage('❌ ' + (data.message || 'Không thể reset'), true);
      }
    } catch (e) {
      showMessage('Lỗi: ' + e.message, true);
    } finally {
      setLoading('btnReset', false, '⚡');
    }
  }

  function setLoading(btnId, isLoading, icon) {
    const btn = document.getElementById(btnId);
    if (isLoading) {
      btn.dataset.og = btn.innerHTML;
      btn.innerHTML = `<span class="spinner-sm" style="margin-right:6px;width:14px;height:14px;border-width:2px;display:inline-block;vertical-align:middle;border-top-color:transparent;"></span> Đang tải...`;
      btn.disabled = true;
    } else {
      btn.innerHTML = btn.dataset.og || btn.innerHTML;
      btn.disabled = false;
    }
  }