$(function () {
    loadItems();
    $('#searchBox').on('input', debounce(loadItems, 300));
    $('#btnAdd').on('click', function () { clearForm(); $('#modalTitle').text('Add Department'); $('#itemId').val(0); new bootstrap.Modal(document.getElementById('itemModal')).show(); });
    $('#btnSave').on('click', saveItem);
    $(document).on('click', '.btn-edit', function () {
        var r = _cache.find(function (x) { return String(x.id) === String($(this).data('id')); });
        if (!r) return;
        $('#itemId').val(r.id); $('#itemName').val(r.name);
        $('#modalTitle').text('Edit Department');
        new bootstrap.Modal(document.getElementById('itemModal')).show();
    });
});
var _cache = [];
function clearForm() { $('#itemId, #itemName').val(''); }
function loadItems() {
    $.get('api/compliance.php', { action: 'setup_list', setup_type: 'departments', search: $('#searchBox').val() }, function (r) {
        if (r.status !== 'success') return;
        var data = r.data || []; _cache = data;
        $('#kpiTotal').text(data.length); $('#kpiActive').text(data.length);
        var html = '';
        if (!data.length) html = '<tr><td colspan="3" class="text-center py-4 text-muted">No departments</td></tr>';
        else data.forEach(function (x) {
            html += '<tr><td class="fw-semibold">' + esc(x.name) + '</td>'
                + '<td><span class="badge bg-success">Active</span></td>'
                + '<td class="text-end"><div class="d-flex gap-1 justify-content-end">'
                + '<button class="btn btn-sm btn-outline-primary btn-edit" data-id="' + x.id + '"><i class="bi bi-pencil"></i></button>'
                + '</div></td></tr>';
        });
        $('#tableBody').html(html);
    }, 'json');
}
function saveItem() {
    var p = { setup_type: 'departments', name: $('#itemName').val().trim(), csrf_token: window.CSRF_TOKEN };
    if (!p.name) { showAlert('Department name is required', 'danger'); return; }
    $.post('api/compliance.php?action=save_setup_item', p, function (r) {
        if (r.status !== 'success') { showAlert(r.message, 'danger'); return; }
        bootstrap.Modal.getInstance(document.getElementById('itemModal')).hide(); loadItems(); showAlert('Department saved!', 'success');
    }, 'json').fail(function () { showAlert('Server error', 'danger'); });
}
function showAlert(msg, type) { var box = $('#alertBox'); box.removeClass('d-none alert-success alert-danger alert-warning alert-info').addClass('alert-' + type).text(msg); setTimeout(function () { box.addClass('d-none'); }, 5000); }
function esc(t) { return $('<div>').text(t || '').html(); }
function debounce(fn, ms) { var t; return function () { var c = this, a = arguments; clearTimeout(t); t = setTimeout(function () { fn.apply(c, a); }, ms); }; }
