let t_ven;
const form = document.getElementById('formulario');
const id_vendedor = document.getElementById('id');
const title = document.getElementById('title');
const btnAccion = document.getElementById('btnAccion');

const nombre = document.getElementById('nombre');
const telefono = document.getElementById('telefono');
const mensajeria = document.getElementById('mensajeria');
const tipoid = document.getElementById('tipoid');
const nit = document.getElementById('nit');

const direccion = document.getElementById('direccion');
const municipio = document.getElementById('municipio');
const departamento = document.getElementById('departamento');
const pais = document.getElementById('pais');
const coordenadas = document.getElementById('coordenadas');

const contacto = document.getElementById('contacto');
const telcontacto = document.getElementById('telcontacto');
const observaciones = document.getElementById('observaciones');

const limite_credito = document.getElementById('limite_credito');
const dias_credito = document.getElementById('dias_credito');
const id_vendedor1 = document.getElementById('id_vendedor1');
const tipocliente = document.getElementById('tipocliente');

const formAnotaciones = document.getElementById('formularioAnotaciones');
const id_vendedor_anotaciones = document.getElementById('id_vendedor_anotaciones');
const observaciones_anotaciones = document.getElementById('observaciones_anotaciones');

let active_row=false;
let active_obj=false;

let option=null;

document.addEventListener('DOMContentLoaded', function(){


    //DataTables Clientes - Ajax
    t_ven = $('#t_ven').DataTable({
        "aPreocesing": true,
        "aServerSide": false,
        "ajax": {
            "url": "" + base_url + "vendedores/listar",
            "dataSrc": ""
        },
        "columns": [{"data": "id"},
            {"data": "codven"},
            {"data": "nombre"},
            {"data": "telefono"},
            {"data": "comision"},
            {"data": "estado"},
/*            {
                "data": "ultimaventa",
                "render": function ( data, type, row, meta ) {
                    //console.log(row['diasdiferencia'],data)
                    let  arr = data.split("-");
                    if(row['diasdiferencia']<=30){
                        return `<span class='badge badge-success'>${arr[2]}/${arr[1]}/${arr[0]}</span>`;
                    } else if(row['diasdiferencia']<=60) {
                        return `<span class='badge badge-warning'>${arr[2]}/${arr[1]}/${arr[0]}</span>`;
                    } else if(row['diasdiferencia']>60) {
                        return `<span class='badge badge-danger'>${arr[2]}/${arr[1]}/${arr[0]}</span>`;
                    }

                },
            },
            {
                "data": "ultimopago",
                "render": function ( data, type, row, meta ) {
                    //console.log(row['diasdiferencia'],data)
                    let  arr = data.split("-");
                    return `<span class='badge badge-success'>${arr[2]}/${arr[1]}/${arr[0]}</span>`;                    

                },
            },            
            {"data": "editar"},
            {"data": "eliminar"}*/
        ],

        "dom": "<'row'<'col-sm-4'l><'col-sm-4 text-center'B><'col-sm-4'f>>" +
                "<'row'<'col-sm-12'tr>>" +
                "<'row'<'col-sm-5'i><'col-sm-7'p>>",
        buttons,
        language,
        "resonsieve": true,
        "bDestroy": true,
        "iDisplayLength": 10,
        "order": [
            [0, "asc"]
        ]
    });

    t_ven.on( 'draw', function () {
        $('#t_ven tbody tr').removeClass('selected');
        activo_buttons(false)
        //frmCliente()
        //btnEditarCli(15)
    } );

    $('#t_ven tbody').on( 'click', 'tr', function (e) {
        let classList = e.currentTarget.classList;
       
        if (classList.contains('selected')) {
            classList.remove('selected');
        }
        else {
            t_ven.rows('.selected').nodes().each((row) => row.classList.remove('selected'));
            classList.add('selected');
        }
        activo_buttons( t_ven.row( this ).data()  );
    } );

    function activo_buttons(obj)
    {
        active_obj=obj;
        active_row=active_obj.id;

        if($('#t_ven tbody tr.selected').length==0)
        {
            active_row=false;
            $('BUTTON.btn-toolbar-status').attr('disabled', 'disabled');
            $('BUTTON.btn-recuperar').hide();
            $('BUTTON.btn-eliminar').show();            
        } else {
            $('BUTTON.btn-toolbar-status').removeAttr('disabled');
            
            if(active_obj.estado_txt==='activo') {
                $('BUTTON.btn-recuperar').hide();
                $('BUTTON.btn-eliminar').show();
            } else {
                $('BUTTON.btn-recuperar').show();
                $('BUTTON.btn-eliminar').hide();
            }            
        }
    }

    var forms = document.getElementsByClassName('needs-validation');
    // Loop over them and prevent submission
    var validation = Array.prototype.filter.call(forms, function (form) {
        form.addEventListener('submit', function (event) {
            event.preventDefault();

            if (form.checkValidity() === false) {
                event.stopPropagation();
                form.classList.add('was-validated');
                $('#nuevo_cliente li a#'+$('FORM.needs-validation INPUT:invalid').first().parents('DIV.tab-pane').prop('id')+'-tab').tab('show')
            } else {
                const url = base_url + 'vendedores/registrar';
                const http = new XMLHttpRequest();
                http.open("POST", url, true);
                http.send(new FormData(this));
                http.onreadystatechange = function () {
                    if (this.readyState == 4 && this.status == 200) {
                        const res = JSON.parse(this.responseText);
                        alertas(res.msg, res.icono);
                        if (res.icono == 'success') {
                            $('#nuevo_cliente').modal('hide');
                            t_ven.ajax.reload();
                        }
                    }
                }
            }

        }, false);
    });

        formAnotaciones.addEventListener('submit', function (event) {
            event.preventDefault();

            const url = base_url + 'vendedores/editarAnotaciones';
            const http = new XMLHttpRequest();
            http.open("POST", url, true);
            http.send(new FormData(this));
            http.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    const res = JSON.parse(this.responseText);
                    
                    alertas(res.msg, res.icono);
                    if (res.icono == 'success') {
                        $('#modal_anotaciones').modal('hide');
                        //t_ven.ajax.reload();
                    }
                }
            }

        }, false);

})

function frmCliente() {
    id_vendedor.value = '';
    title.textContent = 'Nuevo Cliente';
    btnAccion.textContent = 'Registrar';
    form.classList.remove('was-validated');    
    form.reset();

    const url = base_url + 'vendedores/insertar';
    const http = new XMLHttpRequest();
    http.open("GET", url, true);
    http.send();

    http.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            const res = JSON.parse(this.responseText);
            
            pais.innerHTML = "";
            option = document.createElement("option");
            option.text = "Seleccione país";
            option.value = '';
            pais.add(option);

            res.paises.forEach(function(element) {
                option = document.createElement("option");
                option.text = element['pais'];
                option.value = element['cod'];
                pais.add(option);
            });            

            id_vendedor1.innerHTML = "";
            option = document.createElement("option");
            option.text = "Seleccione vendedor";
            option.value = '';
            id_vendedor1.add(option);

            res.vendedores.forEach(function(element) {
                option = document.createElement("option");
                option.text = element['nombre'];
                option.value = element['codven'];
                id_vendedor1.add(option);
            }); 

            pais.value = 'GT';
            id_vendedor1.value = '';

            $('#nuevo_cliente').modal('show');
            $('#nuevo_cliente li a#generales-tab').tab('show')
        }
    }


}

let newtab;

function btnWhatsappCli(id)
{
    if(id===false) return;

    let mensajeria=t_ven.rows('.selected').data();
    const filteredStr = mensajeria[0].mensajeria.replace(/\D/g, '');
    if(filteredStr.length==8)
    {
        newTab = window.open('https://api.whatsapp.com/send?phone=502'+filteredStr, "myNewWindow", "width=500,height=500");
        setTimeout(() => { 
            newTab.window.close();
        }, 1000);
    } else {
        alertas('No tiene definido un número de mensajería válido', 'danger');
    }
   
}

function btnReporteEstadoCuenta(id)
{
    window.open(base_url +'vendedores/generarReporteEstadoCuenta/'+id, "_blank");
}

function btnReporteAntiguedadSaldos(id)
{
    window.open(base_url +'vendedores/generarReporteAntiguedadSaldos/'+id, "_blank");
}

function btnReporteCuentasxCobrar(id)
{
    window.open(base_url +'vendedores/generarReporteCuentasCobrar/'+id, "_blank");
}



function btnEditarCli(id) {
    if(id===false) return
    
    form.classList.remove('was-validated');
    form.reset();
    $('#nuevo_cliente li a#generales-tab').tab('show')
    //$('#nuevo_cliente li a#tdireccion-tab').tab('show')
    //$('#nuevo_cliente li a#parametros-tab').tab('show')
    //$('#nuevo_cliente li a#tcontacto-tab').tab('show') 

    title.textContent = 'Modificar Cliente';
    btnAccion.textContent = 'Modificar';
    const url = base_url + 'vendedores/editar/' + id;
    const http = new XMLHttpRequest();
    http.open("GET", url, true);
    http.send();
    http.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            const res = JSON.parse(this.responseText);
            
            pais.innerHTML = "";
            option = document.createElement("option");
            option.text = "Seleccione país";
            option.value = '';
            pais.add(option);

            res.paises.forEach(function(element) {
                option = document.createElement("option");
                option.text = element['pais'];
                option.value = element['cod'];
                pais.add(option);
            });            

            id_vendedor1.innerHTML = "";
            option = document.createElement("option");
            option.text = "Seleccione vendedor";
            option.value = '';
            id_vendedor1.add(option);

            res.vendedores.forEach(function(element) {
                option = document.createElement("option");
                option.text = element['nombre'];
                option.value = element['codven'];
                id_vendedor1.add(option);
            }); 

            id_vendedor.value = res.id;
            nombre.value = res.nombre;
            telefono.value = res.telefono;
            mensajeria.value = res.mensajeria;
            tipoid.value = res.tipoid;
            nit.value = res.nit;
            direccion.value = res.direccion;
            municipio.value = res.municipio;
            departamento.value = res.departamento;
            pais.value = res.pais;
            coordenadas.value = res.coordenadas;
            
            tipocliente.value = res.tipocliente;

            contacto.value = res.contacto;
            telcontacto.value = res.telcontacto;
            observaciones.value = res.observaciones;

            limite_credito.value = res.limite_credito;
            dias_credito.value = res.dias_credito;
            id_vendedor1.value = res.id_vendedor1;
            

            if(res.estado==0) {
                $('#estado-0').addClass('d-inline-block').removeClass('d-none');
                $('#estado-1').addClass('d-none').removeClass('d-inline-block');
            } else {
                $('#estado-1').addClass('d-inline-block').removeClass('d-none');
                $('#estado-0').addClass('d-none').removeClass('d-inline-block');
            }

            $('#nuevo_cliente').modal('show');
        }
    }
}

function btnAnotacionesCli(id) {
    if(id===false) return
    form.classList.remove('was-validated');
    form.reset();
    $('#modal_anotaciones li a#tcontacto-tab').tab('show')

    const url = base_url + 'vendedores/editar/' + id;
    const http = new XMLHttpRequest();
    http.open("GET", url, true);
    http.send();
    http.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            const res = JSON.parse(this.responseText);
            
            id_vendedor_anotaciones.value = res.id;
            observaciones_anotaciones.value = res.observaciones;

            $('#modal_anotaciones').modal('show');
        }
    }
}

function btnEliminarCli(id) {
    if(id===false) return
    Swal.fire({
        title: 'Esta seguro de eliminar?',
        text: "El cliente no se eliminará de forma permanente, solo cambiará el estado a inactivo!",
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Si!',
        cancelButtonText: 'No'
    }).then((result) => {
        if (result.isConfirmed) {
            const url = base_url + "vendedores/eliminar/" + id;
            const http = new XMLHttpRequest();
            http.open("GET", url, true);
            http.send();
            http.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    const res = JSON.parse(this.responseText);
                    alertas(res.msg, res.icono);
                    if (res.icono == 'success') {
                        t_ven.ajax.reload();
                    }
                    
                }
            }
        }
    })
}

function btnReingresarCli(id) {
    Swal.fire({
        title: 'Esta seguro de reingresar?',
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Si!',
        cancelButtonText: 'No'
    }).then((result) => {
        if (result.isConfirmed) {
            const url = base_url + "vendedores/reingresar/" + id;
            const http = new XMLHttpRequest();
            http.open("GET", url, true);
            http.send();
            http.onreadystatechange = function () {
                if (this.readyState == 4 && this.status == 200) {
                    const res = JSON.parse(this.responseText);
                    alertas(res.msg, res.icono);
                    if (res.icono == 'success') {
                        t_ven.ajax.reload();
                    }
                }
            }

        }
    })
} //fin vendedores


let map
let marker
function btnUbicacionCli(id) {
    if(id===false) return
    form.classList.remove('was-validated');
    form.reset();
    $('#modal_anotaciones li a#tcontacto-tab').tab('show')

    const url = base_url + 'vendedores/editar/' + id;
    const http = new XMLHttpRequest();
    http.open("GET", url, true);
    http.send();
    http.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            const res = JSON.parse(this.responseText);
            
            id_vendedor_anotaciones.value = res.id;
            //

            if(res.coordenadas===null) {
                alertas('No tiene coordenadas definidas', 'danger');
            } else {
                let params = res.coordenadas.split('|');

                let lat=Number( params[1] )  //14.640189
                let lng=Number( params[2] ) //-90.519828;

                if(isNaN(lat)===true || isNaN(lng)===true)
                {
                    alertas('No tiene coordenadas definidas', 'danger');
                } else {
                    $('#modal_map').modal('show');
    
                    map = new google.maps.Map(document.getElementById("googleMap"),{
                        center:new google.maps.LatLng(lat, lng),
                        zoom:14,
                    });
    
                    marker = new google.maps.Marker({
                        position: { lat: lat, lng:lng  },
                        map: map,
                        title: res.nombre,
                    });

                }
            }



        }
    }
}

//btnUbicacionCli(15)