// File: admin/js/admin-script.js

jQuery(document).ready(function($) {
    'use strict';
    
    // Confirm delete actions
    $('.pc-hfap-snippets-table .button-link-delete').on('click', function(e) {
        if (!confirm(pc_hfap_admin.confirm_delete)) {
            e.preventDefault();
            return false;
        }
    });
    
    // Form validation
    $('.pc-hfap-snippet-form').on('submit', function(e) {
        var title = $('#pc_hfap_title').val().trim();
        var code = $('#pc_hfap_code').val().trim();
        var location = $('#pc_hfap_location').val();
        
        if (!title) {
            alert('Please enter a title for the snippet.');
            $('#pc_hfap_title').focus();
            e.preventDefault();
            return false;
        }
        
        if (!location || (location !== 'header' && location !== 'body' && location !== 'footer')) {
            alert('Please select a valid location for the snippet.');
            $('#pc_hfap_location').focus();
            e.preventDefault();
            return false;
        }
        
        if (!code) {
            alert('Please enter the code for the snippet.');
            $('#pc_hfap_code').focus();
            e.preventDefault();
            return false;
        }
    });
    
    // Code editor enhancement (if CodeMirror is available)
    if (typeof wp !== 'undefined' && wp.codeEditor) {
        var codeEditorSettings = wp.codeEditor.defaultSettings ? _.clone(wp.codeEditor.defaultSettings) : {};
        codeEditorSettings.codemirror = _.extend({}, codeEditorSettings.codemirror, {
            lineNumbers: true,
            lineWrapping: true,
            mode: 'htmlmixed',
            indentUnit: 4,
            tabSize: 4,
            theme: 'default'
        });
        var editor = wp.codeEditor.initialize($('#pc_hfap_code'), codeEditorSettings);
    }
    
    // Character counter for code preview
    $('.pc-hfap-code-preview').each(function() {
        var text = $(this).text();
        var charCount = text.length;
        var $counter = $('<span class="pc-hfap-char-count"> (' + charCount + ' chars)</span>');
        $(this).after($counter);
    });
    
    // Highlight new rows
    if (window.location.hash === '#new') {
        var $newRow = $('.pc-hfap-snippets-table tbody tr:first-child');
        $newRow.addClass('highlight');
        
        // Scroll to the new row
        $('html, body').animate({
            scrollTop: $newRow.offset().top - 100
        }, 500);
        
        // Remove hash without scrolling
        history.replaceState(null, null, ' ');
    }
    
    // Toggle for code snippet preview
    $('.pc-hfap-code-preview').on('click', function() {
        var $preview = $(this);
        var fullCode = $preview.data('full-code');
        
        if (!fullCode) {
            fullCode = $preview.text();
            $preview.data('full-code', fullCode);
            $preview.data('is-expanded', false);
        }
        
        if ($preview.data('is-expanded')) {
            // Collapse
            $preview.text(fullCode.length > 100 ? fullCode.substring(0, 100) + '...' : fullCode);
            $preview.data('is-expanded', false);
        } else {
            // Expand
            $preview.text(fullCode);
            $preview.data('is-expanded', true);
        }
    });
});
