var tabla;
function init() {
    $("#formulario").on("submit", function(e) {
        guardar(e);
    });
    listar();
}

function guardar(e) {
    e.preventDefault();
    var formData = new FormData($("#formulario")[0]);

    $.ajax({
        url: "../../controller/colaborador.php?op=guardaryeditar",
        type: "POST",
        data: formData,
        contentType: false,
        processData: false,
        dataType: 'json',
        success: function(response) {
            if(response.success) {
                $("#formulario")[0].reset();
                $('#modalmantenimiento').modal('hide');
                $('#colaborador_data').DataTable().ajax.reload();
                Swal.fire("Éxito!", "Colaborador guardado correctamente", "success");
                  console.log(response); // ← esto te mostrará la respuesta completa, incluyendo errores
            } else {
                Swal.fire("Error!", response.msg || "No se pudo guardar el colaborador", "error");
            }
        },
        error: function() {
            Swal.fire("Error!", "Error al procesar la solicitud", "error");
        }
    });
}


function listar() {

 tabla=$('#colaborador_data').dataTable({
       "aProcessing": true,
       "aServerSide": true,
        "dom": '<"top"f>rt<"bottom"lip><"clear">',
       "searching": true,
       "columnDefs": [
        {
            "targets": 0,  // índice de la columna que quieres ocultar (ej: la primera columna que es ID)
            "visible": false,
            "searchable": false
        }
                     ],
       lengthChange: false,
       colReorder: true,
       "ajax":{
           url: '../../controller/colaborador.php?op=listar',
           type : "post",
           dataType : "json",
           error: function(e){
              console.log(e.responseText);	
           }
       },
       "bDestroy": true,
       "responsive": true,
       "bInfo":true,
       "iDisplayLength": 10,
       "autoWidth": false,
       "language": {
           "sProcessing":     "Procesando...",
           "sLengthMenu":     "Mostrar _MENU_ registros",
           "sZeroRecords":    "No se encontraron resultados",
           "sEmptyTable":     "Ningún dato disponible en esta tabla",
           "sInfo":           "Mostrando un total de _TOTAL_ registros",
           "sInfoEmpty":      "Mostrando un total de 0 registros",
           "sInfoFiltered":   "(filtrado de un total de _MAX_ registros)",
           "sInfoPostFix":    "",
           "sSearch":         "Buscar:",
           "sUrl":            "",
           "sInfoThousands":  ",",
           "sLoadingRecords": "Cargando...",
           "oPaginate": {
               "sFirst":    "Primero",
               "sLast":     "Último",
               "sNext":     "Siguiente",
               "sPrevious": "Anterior"
           },
           "oAria": {
               "sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
               "sSortDescending": ": Activar para ordenar la columna de manera descendente"
           }
       }
   })
   $('#colaborador_data_wrapper .top').prepend(`
    <button type="button" id="btnnuevo" onclick="abrirModal()" class="btn btn-primary me-2">
        <i class="fas fa-plus"></i> Nuevo Registro
    </button>
    `);




}

function editar(id_colab) {
    $.post("../../controller/colaborador.php?op=mostrar", { id_colab: id_colab }, function(data) {
        data = JSON.parse(data);
        $("#id_colab").val(data.id_colab);
        $("#rut_colab").val(data.rut_colab);
        $("#nombre_colab").val(data.nombre_colab);
        $("#email_colab").val(data.email_colab);
        $("#estado_colab").val(data.estado_colab);
         $("#id_prof").val(data.id_prof);
        
        $("#modalmantenimiento").modal("show");
    });
}

function eliminar(id_colab) {
    swal({
        title: "¿Eliminar colaborador?",
        text: "No podrás deshacer esta acción.",
        icon: "warning",
        buttons: true,
        dangerMode: true
    }).then((willDelete) => {
        if (willDelete) {
            $.post("../../controller/colaborador.php?op=eliminar", { id_colab: id_colab }, function(data) {
                $('#colaborador_data').DataTable().ajax.reload();
                swal("Eliminado correctamente", { icon: "success" });
            });
        }
    });
}

function abrirModal() {
  // Limpiar campos
  $("#formulario")[0].reset();
  $("#id_colab").val(""); // importante si vas a usar para editar también
  $("#modalmantenimiento").modal("show");
}


$(document).ready(function() {
    init();
    cargarProfesiones();
});
function cargarProfesiones() {
    $.ajax({
        url: "../../controller/profesion.php?op=combo",
        type: "GET",
        dataType: "json",
        success: function(data) {
            var select = $("#id_prof");
            select.empty();
            select.append('<option value="">Seleccione profesión</option>');
            $.each(data, function(index, item) {
                select.append('<option value="' + item.id_prof + '">' + item.nombre_prof + '</option>');
            });
        },
        error: function() {
            alert("Error al cargar las profesiones");
        }
    });
}

document.addEventListener("DOMContentLoaded", function () {
    const rutInput = document.getElementById("rut_colab");

    rutInput.addEventListener("input", function () {
        const limpio = rutInput.value.replace(/[^\dkK]/gi, '').toUpperCase();

        if (limpio.length > 1) {
            const cuerpo = limpio.slice(0, -1);
            const dv = limpio.slice(-1);
            rutInput.value = formatearRUT(cuerpo + dv);

            // Validar en tiempo real
            if (validarRUT(rutInput.value)) {
                rutInput.classList.add("is-valid");
                rutInput.classList.remove("is-invalid");
            } else {
                rutInput.classList.add("is-invalid");
                rutInput.classList.remove("is-valid");
            }
        } else {
            // Si está vacío o incompleto, quitamos clases
            rutInput.classList.remove("is-valid", "is-invalid");
        }
    });

    rutInput.addEventListener("blur", function () {
        const rut = rutInput.value;

        if (rut && !validarRUT(rut)) {
            rutInput.classList.add("is-invalid");
            rutInput.classList.remove("is-valid");
        } else if (rut) {
            rutInput.classList.add("is-valid");
            rutInput.classList.remove("is-invalid");
        }
    });

    function formatearRUT(rutCompleto) {
        let rut = rutCompleto.slice(0, -1);
        let dv = rutCompleto.slice(-1);
        let invertido = rut.split("").reverse();
        let formateado = "";

        for (let i = 0; i < invertido.length; i++) {
            if (i !== 0 && i % 3 === 0) {
                formateado = "." + formateado;
            }
            formateado = invertido[i] + formateado;
        }

        return formateado + "-" + dv;
    }

    function validarRUT(rutCompleto) {
        rutCompleto = rutCompleto.replace(/\./g, '').replace(/-/g, '').toUpperCase();

        const rut = rutCompleto.slice(0, -1);
        const dv = rutCompleto.slice(-1);

        if (!/^\d+$/.test(rut)) return false;

        let suma = 0;
        let multiplo = 2;

        for (let i = rut.length - 1; i >= 0; i--) {
            suma += parseInt(rut.charAt(i)) * multiplo;
            multiplo = multiplo === 7 ? 2 : multiplo + 1;
        }

        const dvEsperado = 11 - (suma % 11);
        let dvFinal = "";

        if (dvEsperado === 11) dvFinal = "0";
        else if (dvEsperado === 10) dvFinal = "K";
        else dvFinal = dvEsperado.toString();

        return dvFinal === dv;
    }
});


