// Function to handle password decryption
function getpwd(th) {
    var temp = th.id.split('_');
    var pid = temp[1];
    var act = jQuery(th).attr('class');
    var crypwd = jQuery('#user_pwd' + pid).val();
    var key = crypwd;
    var btn_action = act;
    var did = '';

    if (act !== 'decrypt') {
        did = jQuery('#' + th.id).data('id');
    }

    // AJAX request for decryption
    jQuery.ajax({
        url: MyAjax.ajaxurl,
        method: "POST",
        data: {
            user_pwd: key,
            saction: btn_action,
            did: did,
            module: 'password',
            action: "decrypt_pass",
            security_nonce: MyAjax.security_nonce
        },
        success: function (rest) {
            var input = jQuery('#user_pwd' + pid);
            if (input.attr("type") === "password") {
                jQuery('#' + th.id).find('i').removeClass("fa-eye").addClass('fa-eye-slash');
                input.val(rest).attr("type", "text");
                jQuery('#' + th.id).attr("class", "encrypt"); // decrypt
            } else {
                jQuery('#' + th.id).find('i').removeClass("fa-eye-slash").addClass('fa-eye');
                input.val(rest).attr("type", "password");
                jQuery('#' + th.id).attr("class", "decrypt");
            }
        },
        error: function () {
            alert('Error occurred while processing the password.');
        }
    });
}

// Page load function to initialize DataTables
jQuery(document).ready(function () {
    var count = jQuery('.cname').length;
    for (var i = 1; i <= count; i++) {
        var cname = jQuery('#cname_' + i).html();

        // Initialize DataTable for each record
        jQuery('#front_pass_table_' + i).DataTable({
            "processing": false,
            "paging": true,
            "responsive": true,
            "language": {
                processing: '<i class="fa fa-spinner fa-spin fa-3x fa-fw text-white"></i>',
            },
            "bLengthChange": false,
            "bFilter": false,
            "bInfo": true,
            "bAutoWidth": true,
            "serverSide": true,
            "ajax": {
                url: MyAjax.ajaxurl,
                type: "POST",
                data: {
                    action: 'get_new_pass',
                    cat_name: cname,
                    security_nonce: MyAjax.security_nonce
                }
            },
            "columnDefs": [
                {
                    "targets": [1, 2],
                    "orderable": false,
                },
            ],
            "pageLength": 5,
        });

        // Hide category name column
        jQuery('#cname_' + i).css('display', 'none');
    }
});




/*! DataTables Bootstrap 5 integration
 * © SpryMedia Ltd - datatables.net/license
 */

(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery', 'datatables.net'], function ($) {
            return factory($, window, document);
        });
    }
    else if (typeof exports === 'object') {
        // CommonJS
        var jq = require('jquery');
        var cjsRequires = function (root, $) {
            if (!$.fn.dataTable) {
                require('datatables.net')(root, $);
            }
        };

        if (typeof window === 'undefined') {
            module.exports = function (root, $) {
                if (!root) {
                    // CommonJS environments without a window global must pass a
                    // root. This will give an error otherwise
                    root = window;
                }

                if (!$) {
                    $ = jq(root);
                }

                cjsRequires(root, $);
                return factory($, root, root.document);
            };
        }
        else {
            cjsRequires(window, jq);
            module.exports = factory(jq, window, window.document);
        }
    }
    else {
        // Browser
        factory(jQuery, window, document);
    }
}(function ($, window, document) {
    'use strict';
    var DataTable = $.fn.dataTable;



    /**
     * DataTables integration for Bootstrap 5.
     *
     * This file sets the defaults and adds options to DataTables to style its
     * controls using Bootstrap. See https://datatables.net/manual/styling/bootstrap
     * for further information.
     */

    /* Set the defaults for DataTables initialisation */
    $.extend(true, DataTable.defaults, {
        renderer: 'bootstrap'
    });


    /* Default class modification */
    $.extend(true, DataTable.ext.classes, {
        container: "dt-container dt-bootstrap5",
        search: {
            input: "form-control form-control-sm"
        },
        length: {
            select: "form-select form-select-sm"
        },
        processing: {
            container: "dt-processing card"
        },
        layout: {
            row: 'row mt-2 justify-content-between',
            cell: 'd-md-flex justify-content-between align-items-center',
            tableCell: 'col-12',
            start: 'dt-layout-start col-md-auto me-auto',
            end: 'dt-layout-end col-md-auto ms-auto',
            full: 'dt-layout-full col-md'
        }
    });


    /* Bootstrap paging button renderer */
    DataTable.ext.renderer.pagingButton.bootstrap = function (settings, buttonType, content, active, disabled) {
        var btnClasses = ['dt-paging-button', 'page-item'];

        if (active) {
            btnClasses.push('active');
        }

        if (disabled) {
            btnClasses.push('disabled')
        }

        var li = $('<li>').addClass(btnClasses.join(' '));
        var a = $('<button>', {
            'class': 'page-link',
            role: 'link',
            type: 'button'
        })
            .html(content)
            .appendTo(li);

        return {
            display: li,
            clicker: a
        };
    };

    DataTable.ext.renderer.pagingContainer.bootstrap = function (settings, buttonEls) {
        return $('<ul/>').addClass('pagination').append(buttonEls);
    };


    return DataTable;
}));