$(function(){loadItems();$('#searchBox').on('input',debounce(loadItems,300));$('#btnAdd').on('click',function(){clearForm();$('#modalTitle').text('Add Authority');$('#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);var lvl=r.context||'mixed';$('#itemLevel').val(lvl.toLowerCase());$('#modalTitle').text('Edit Authority');new bootstrap.Modal(document.getElementById('itemModal')).show();});$(document).on('click','.btn-toggle',function(){var r=_cache.find(function(x){return String(x.id)===String($(this).data('id'));});if(!r)return;var ns=(r.is_active==1)?0:1;$.post('api/compliance.php?action=toggle_setup_item',{setup_type:'authorities',id:r.id,is_active:ns,csrf_token:window.CSRF_TOKEN},function(res){if(res.status==='success'){loadItems();showAlert('Authority '+(ns?'activated':'deactivated'),'success');}else showAlert(res.message,'danger');},'json');});});var _cache=[];
function clearForm(){$('#itemId,#itemName').val('');$('#itemLevel').val('federal');}
function loadItems(){$.get('api/compliance.php',{action:'setup_list',setup_type:'authorities',search:$('#searchBox').val()},function(r){if(r.status!=='success')return;var data=r.data||[];_cache=data;var t=0,a=0,i=0;data.forEach(function(x){t++;if(x.is_active==1)a++;else i++;});$('#kpiTotal').text(t);$('#kpiActive').text(a);$('#kpiInactive').text(i);var html='';if(!data.length)html='<tr><td colspan="4" class="text-center py-4 text-muted">No authorities</td></tr>';else data.forEach(function(x){html+='<tr><td class="fw-semibold">'+esc(x.name)+'</td><td>'+esc(x.context||'-')+'</td><td>'+(x.is_active==1?'<span class="badge bg-success">Active</span>':'<span class="badge bg-secondary">Inactive</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><button class="btn btn-sm '+(x.is_active==1?'btn-outline-warning':'btn-outline-success')+' btn-toggle" data-id="'+x.id+'" title="'+(x.is_active==1?'Deactivate':'Activate')+'"><i class="bi bi-power"></i></button></div></td></tr>';});$('#tableBody').html(html);},'json');}
function saveItem(){var p={setup_type:'authorities',name:$('#itemName').val().trim(),authority_level:$('#itemLevel').val(),csrf_token:window.CSRF_TOKEN};if(!p.name){showAlert('Authority 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('Authority 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);};}
