/*Validaciones............................................................*/
function validaLetra(e){
    tecla = (document.all) ? e.keyCode : e.which;

    //Tecla de retroceso para borrar, siempre la permite
    if (tecla==8){
    return true;
    }

    // Patron de entrada, en este caso solo acepta numeros
    patron =/[" ÁÉÍÓÚáéíóúabcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789"]/;
    tecla_final = String.fromCharCode(tecla);
    return patron.test(tecla_final);
}
function valida(e){
    tecla = (document.all) ? e.keyCode : e.which;

    //Tecla de retroceso para borrar, siempre la permite
    if (tecla==8){
      return true;
    }

    // Patron de entrada, en este caso solo acepta numeros
    patron =/["0123456789"]/;
    tecla_final = String.fromCharCode(tecla);
    return patron.test(tecla_final);
}  
//Función que valida que acepte un numero decimal
function validaPunto(e){
    tecla = (document.all) ? e.keyCode : e.which;

    //Tecla de retroceso para borrar, siempre la permite
    if (tecla==8){
      return true;
    }

    // Patron de entrada, en este caso solo acepta numeros
    patron =/["0123456789."]/;
    tecla_final = String.fromCharCode(tecla);
    return patron.test(tecla_final);
}
/*fin de validaciones*/

//Inicio Listar clientes
var tabla;
var base_url = window.location.origin + '/' + window.location.pathname.split ('/') [1] + '/';
 $(document).ready(function() {
    tabla = $('#tabla-gastos').DataTable( { 
        dom: 'lrtip',
        responsive: true,
        ServerSide: true,
         destroy: true,
         footer: true,
         processing: true,
         "lengthChange": false,
         "pageLength": 20,  
        "ajax":{
            //"url":"<?php echo base_url();?>gastos/Franquiciatario/GastosF/gastos/",
            "url":base_url+"gastos/Franquiciatario/GastosF/gastos",
            "type": 'POST'
            },
            "language": {
                "lengthMenu": "Mostrar _MENU_ registros por pagina",
                "zeroRecords": "No se encontraron resultados en su busqueda",
                "searchPlaceholder": "Buscar registros",
                "info": "Mostrando registros de _START_ al _END_ de un total de  _TOTAL_ registros",
                "infoEmpty": "No existen registros",
                "infoFiltered": "(filtrado de un total de _MAX_ registros)",
                "search": "Buscar:",
                "paginate": {
                    "first": "Primero",
                    "last": "Último",
                    "next": "Siguiente",
                    "previous": "Anterior"
                }
            }
            });
            
            $('#tabla-gastos').wrap("<div id='scrollbar-tabla' class='scrollbar-tabla'></div>");
            $('#scrollbar-tabla').doubleScroll({
                  resetOnWindowResize: true
                });

            document.getElementById('cargando').classList.add('invisible');
            var table = $('#tabla-gastos').DataTable();
            $('#query').on( 'input', function () {
                table.search( this.value ).draw();
            } );

        //Búsqueda con y sin acento... 
        (function(){
            function removeAccents ( data ) {
                if ( data.normalize ) {
                    /* Use la API I18n si está disponible para dividir caracteres y acentos, luego elimine
                       los acentos al por mayor. Tenga en cuenta que utilizamos los datos originales, así como
                       lo nuevo para permitir la búsqueda de cualquiera de los formularios.*/
                    return data +' '+ data
                        .normalize('NFD')
                        .replace(/[\u0300-\u036f]/g, '');
                }
             
                return data;
            }
             
            var searchType = jQuery.fn.DataTable.ext.type.search; 
            searchType.string = function ( data ) {
                return ! data ?
                    '' :
                    typeof data === 'string' ?
                        removeAccents( data ) :
                        data;
            };
             
            searchType.html = function ( data ) {
                return ! data ?
                    '' :
                    typeof data === 'string' ?
                        removeAccents( data.replace( /<.*?>/g, '' ) ) :
                        data;
            };
        }());
    });
//Fin Listar gastos...
/*onchange...*/
function total(){
    var cantidad = jQuery("#cantidadGasto").val();
    var precio = jQuery("#precioGasto").val();
    var total = cantidad*precio;

    document.getElementById("total").innerHTML = '<b>Total: </b> $'+total.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')+'<br><br>';
    $("#total").css("display", "block");
}
/*end...*/


Dropzone.autoDiscover = false;
// or disable for specific dropzone:
// Dropzone.options.myDropzone = false;
var myDropzone;
$(function() {
  // Now that the DOM is fully loaded, create the dropzone, and setup the
  // event listeners
  myDropzone = new Dropzone("#myDropzoneArchivo", {url: base_url+'gastos/Franquiciatario/GastosF/main',
  paramName: 'file',
  maxFiles:1,
  timeout: 180000,
  uploadMultiple: false,
  parallelUploads: 1,
  resizeHeight: 500,
  //resizeMethod: 'contain', 
  resizeQuality: 1.0,
  maxFilesize:3,
  acceptedFiles:'.pdf, .jpg,.jpeg,.png', 
  autoProcessQueue:false,
  addRemoveLinks:true,
  dictDefaultMessage: 'Pulse para seleccionar su archivo o arrastre hasta aquí',
  dictFileTooBig:'Archivo demasiado grande, tamaño permitido de 3 MB',
  dictInvalidFileType:'Archivo no permitido',
  dictRemoveFile:'<button type="button" class="eliminar boton-color"><span class="glyphicon glyphicon-remove"></span> Quitar archivo</button>',
  dictMaxFilesExceeded:'Solo es permitido un archivo',
  dictCancelUpload: '<button type="button" class="eliminar boton-color"><span class="glyphicon glyphicon-remove"></span> Quitar archivo 2</button>',
  //dictCancelUpload:"",
  accept: function(file, done) {
     done(); 
  }
    });
    myDropzone.on('error', function(file, response){
        //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
        if (response == 'Upload canceled.') {
            alert('Imagen subida correctamente');
        }else{
            alert(response);
             myDropzone.removeFile(file);
        }
    });
      myDropzone.on("addedfile", function(file) {
        /* Maybe display some more file information on your page */
      });

    myDropzone.on("sending", 
        function(data, xhr, formData) { 
            formData.append("tipoGasto", jQuery("#tipoGasto").val()); 
            console.log(formData);
    });
});

//document.getElementById("sendRegistro").addEventListener("click", function(e) { 
function sendRegistroContinuo(){ 
    if(!document.querySelector('input[name="tipoGasto"]:checked')) {
        $("#tipoG").notify('Selecciona un tipo de gasto',{
            position:'top center',
            className:'error',
        });
        //alert('Error, rellena el campo tipoGasto');
        hasError = true;
    } else{
        console.log("click");
        myDropzone.on("sending", 
            function(data, xhr, formData) { 
                formData.append("tipoGasto", jQuery("#tipoGasto").val()); 
                console.log(formData);
        });

        var datos = new FormData(document.getElementById("formGasto")); 
        $.ajax({
            url: base_url+'gastos/Franquiciatario/GastosF/insertGastos',
            type:"POST",
            dataType:'json',
            data:datos, 
            cache: false,
            contentType: false,
            processData: false,
            success:function(data){
                myDropzone.processQueue();

                switch(data['type']){
                    case "success":
                        // myDropzone.on('success', function(file, response){
                        //     //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
                        //     alert('success'+response);
                        // });
                        swal(
                            'Guardado!',
                            'El gasto fue registrado correctamente!',
                            'success'
                        );
                        //if (true) {}
                        document.getElementById("formGasto").reset();
                        document.getElementById("total").innerHTML = "";
                        $("#total").css("display", "none");
                        //$('#modalGasto').modal('hide');
                        myDropzone.removeAllFiles(true);
                        tabla.ajax.reload(null,false);  
                    break;
                    case "error":
                        swal(
                            'Advertencia!',
                            data['result'],
                            'warning'
                        );
                    break;
                    // case "errorArchivo":
                    //     $("#myDropzoneArchivo").notify(data['result'],{
                    //         position:'top center',
                    //         className:'error',
                    //     });
                    // break;
                    case "errorGasto":
                        $("#txtgasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    case "errorCantidad":
                        $("#cantidadGasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    case "errorPrecio":
                        $("#precioGasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    default:
                }
            },
            error:function(jqXHR, textStatus, error){
                // swal(
                //     'Error',
                //     'Ocurrio un error',
                //     'error'
                // );
                alert("error: " + jqXHR.responseText);
            }
        }); 
    } 
}

function deshabilitar(){
    //alert("yes...");
    var boton = document.getElementById('agregar');
	$('#agregar').focus(function(){
        $(this).blur();
      });
    // document.nombreform.nombreboton.disabled=true;
    // $('#agregar').blur();
    // $('#agregar').disabled = true;
    // $('#agregar').blur();
}

function sendRegistro(){  
//$('#agregar').disabled = true;
var boton = document.getElementById('agregar');
    //boton.trigger('blur');
    $('#id1').focus(function(){
        $(this).blur();
      });
    if(!document.querySelector('input[name="tipoGasto"]:checked')) {
        $("#tipoG").notify('Selecciona un tipo de gasto',{
            position:'top center',
            className:'error',
        });
        //alert('Error, rellena el campo tipoGasto');
        hasError = true;
    } else{
        console.log("hhfcdj");
        myDropzone.on("sending", 
            function(data, xhr, formData) { 
                formData.append("tipoGasto", jQuery("#tipoGasto").val()); 
                console.log(formData);
        });
        
        var datos = new FormData(document.getElementById("formGasto")); 
        $.ajax({
            url: base_url+'gastos/Franquiciatario/GastosF/insertGastos',
            type:"POST",
            dataType:'json',
            data:datos, 
            cache: false,
            contentType: false,
            processData: false,
            success:function(data){
                myDropzone.processQueue();

                switch(data['type']){
                    case "success":
                        //myDropzone.processQueue();
                        // myDropzone.on('success', function(file, response){
                        //     //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
                        //     alert('success'+response);
                        // });
                        // swal(
                        //     'Guardado!',
                        //     'El gasto fue registrado correctamente!',
                        //     'success'
                        // );
                        document.getElementById("formGasto").reset();
                        document.getElementById("total").innerHTML = "";
                        $("#total").css("display", "none");
                        myDropzone.removeAllFiles(true);
                        tabla.ajax.reload(null,false);  
                        $('#modalGasto').modal('hide');
                        //boton.disabled = false;
                        swal(
                            'Guardado!',
                            'El gasto fue registrado correctamente!',
                            'success'
                        );
                        
                    break;
                    case "error":
                        swal(
                            'Advertencia!',
                            data['result'],
                            'warning'
                        );
                    break;
                    // case "errorArchivo":
                    //     $("#myDropzoneArchivo").notify(data['result'],{
                    //         position:'top center',
                    //         className:'error',
                    //     });
                    // break;
                    case "errorGasto":
                        $("#txtgasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    case "errorCantidad":
                        $("#cantidadGasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    case "errorPrecio":
                        $("#precioGasto").notify(data['result'],{
                            position:'top center',
                            className:'error',
                        });
                    break;
                    default:
                }
            },
            error:function(jqXHR, textStatus, error){
                swal(
                    'Error',
                    'Ocurrio un error',
                    'error'
                );
                //alert("error: " + jqXHR.responseText);
            }
        }); 
    } 
}

//Fin insert gastos con dropzone.............
var myDropzoneUpdate;
//Fin update gastos con dropzone.............
function editarGasto(id){
  $.ajax({
    url:base_url+'gastos/Franquiciatario/GastosF/obtenerDatos'+'/'+id,
    type:"POST",
    dataType: 'json',
    success:function(data){
        var cadena = data['datos'].NombreArchivo;
        var ext = cadena.substr(-4);
        //alert(data['datos'].Tipo);
        $('[id="fijoUpdate"]').attr('checked', false);
        $('[id="variableUpdate"]').attr('checked', false);

        $('[name="idGastoUpdate"]').val(data['datos'].IdGasto);
        if (data['datos'].Tipo === 'fijo') {
            $('[id="fijoUpdate"]').attr('checked', true);
            $('[id="variableUpdate"]').attr('checked', false);
        }else if(data['datos'].Tipo != 'fijo') {
            $('[id="variableUpdate"]').attr('checked', true);
            $('[id="fijoUpdate"]').attr('checked', false);
        }
        $('[name="txtgastoUpdate"]').val(data['datos'].NombreGasto);
        $('[name="cantidadGastoUpdate"]').val(data['datos'].Cantidad);
        $('[name="precioGastoUpdate"]').val(data['datos'].Precio);
        document.getElementById("totalUpdate").innerHTML = '<b>Total $: </b>'+data['datos'].Total+'<br><br>';
        document.getElementById("contenedor").innerHTML = '';

            var arc= data['datos'].ruta;
            var peso;
            if(data['peso']){
                peso = data['peso'];
            }
            
            $(function() {
                Dropzone.options.myDropzoneUpdate = false;
                Dropzone.autoDiscover= false;
                if (myDropzoneUpdate != undefined) {
                    Dropzone.forElement("#myDropzoneUpdate").destroy();
                   
                }
                myDropzoneUpdate = new Dropzone("#myDropzoneUpdate", {url: base_url+'gastos/Franquiciatario/GastosF/mainUpdate',
                    paramName: 'fileUpdate',
                    maxFiles:1,
                    timeout: 180000,
                    uploadMultiple: false,
                    parallelUploads: 1,
                    resizeHeight: 500,
                    resizeMethod: 'contain', 
                    resizeQuality: 1.0,
                    maxFilesize:3,
                    acceptedFiles:'.pdf, .jpg,.jpeg,.png', 
                    autoProcessQueue:false,
                    addRemoveLinks:true,
                    dictDefaultMessage: 'Pulse para seleccionar su archivo o arrastre hasta aquí',
                    dictFileTooBig:'Archivo demasiado grande, tamaño permitido de 3 MB',
                    dictInvalidFileType:'Archivo no permitido',
                    dictRemoveFile:'<button type="button" class="eliminar boton-color" onclick="borrar('+data['datos'].IdGasto+');"><span class="glyphicon glyphicon-remove"></span> Quitar archivo</button>',
                    dictMaxFilesExceeded:'Solo es permitido un archivo',
                    //dictCancelUpload:"",
                    init: function () {
                    this.on("maxfilesexceeded", function (file) {
                    //this.removeAllFiles();
                    this.addFile(file);
                    });
                    }
                });
                myDropzoneUpdate.on('error', function(file, response){
                    //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
                    //alert('error al subir archivo.......dropzone'+response);
                    if (response == 'Upload canceled.') {
                        alert('Imagen subida correctamente');
                    }else{
                        alert(response);
                         myDropzone.removeFile(file);

                    }
                });

                if ((ext == '.pdf')|| (ext == '.PDF') || (ext == '.jpg') || (ext == '.JPG') || (ext == 'jpeg') || (ext == 'JPEG') || (ext == '.png') || (ext == '.PNG')) {
                    var mockFile = { name: data['datos'].NombreArchivo, size: peso };
                    //var myDropzone = new Dropzone("#my-awesome-dropzone");
                    myDropzoneUpdate.options.addedfile.call(myDropzoneUpdate, mockFile);
                    if ((ext == '.pdf')|| (ext == '.PDF')) {
                        document.getElementById("contenedor").innerHTML ='<embed src="'+base_url+data['datos'].Ruta+'" type="application/pdf" width="100%" height="300px" />';
                        myDropzoneUpdate.options.thumbnail.call(myDropzoneUpdate, mockFile, base_url+'files/ComprobantesGasto/imagenPDF.png');
                    }else if ((ext == '.jpg') || (ext == '.JPG') || (ext == 'jpeg') || (ext == 'JPEG') || (ext == '.png') || (ext == '.PNG')) {
                        document.getElementById("contenedor").innerHTML ='<center><img src="'+base_url+data['datos'].Ruta+'" width="100%"/></center>';
                        myDropzoneUpdate.options.thumbnail.call(myDropzoneUpdate, mockFile, base_url+data['datos'].Ruta);
                    }

                    myDropzoneUpdate.files.push(mockFile); // here you add them into the files array
                    // myDropzoneUpdate.on(addedfile, function(file){
                    // 	console.log('file added!');
                    // });
                }else{
                    if (myDropzoneUpdate == undefined) {
                        Dropzone.forElement("#myDropzoneUpdate").destroy();
                        Dropzone.removeAllFiles(true);
                        myDropzoneUpdate.removeAllFiles(true);
                    }
                }

                    // myDropzoneUpdate.on("sending", 
                    //     function(data, xhr, formData) { 
                    //         formData.append("idGastoUpdate", jQuery("#idGastoUpdate").val()); 
                    //         console.log(formData);
                    // });
                                 
            });
        }
    });
  }

  function borrar(id){
    $.ajax({
        url: base_url+'gastos/Franquiciatario/GastosF/deleteArchivo'+'/'+id,
        type:"POST",
        dataType:'json',
        cache: false,
        contentType: false,
        processData: false,
        success:function(data){
            if (data['type'] == "success") {
                tabla.ajax.reload(null,false);
            }
        }
    });
  }
/*Fin update 1° parte*/

/*Inicio update 2ª parte*/
    /*var modified = false;
    $("input, div").change(function () {   
         modified = true;  
    }); */
    function updateGasto(){
            myDropzoneUpdate.on("sending", function(data, xhr, formData) { 
                formData.append("idGastoUpdate", jQuery("#idGastoUpdate").val()); 
                console.log(formData);
            });
            myDropzoneUpdate.on('error', function(file, response){
                //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
                alert('error al subir archivo.......dropzone'+response);
            });
            //return confirm('Puede haber cambios sin guardar en el formulario, ¿Desea salir de todas formas?'); 
            var datos = new FormData(document.getElementById("formGastoUpdate")); 
            $.ajax({
                url: base_url+'gastos/Franquiciatario/GastosF/updateGasto',
                type:"POST",
                dataType:'json',
                data: datos,
                cache: false,
                contentType: false,
                processData: false,
                success:function(data){
                    switch(data['type']){
                        case "success":
                        myDropzoneUpdate.processQueue();
                        // myDropzoneUpdate.on('success', function(file, response){
                        //     //$(file.previewElement).addClass("dz-error").find('.dz-error-message').text(message.Message)
                        //     alert('success'+response);
                        // });
                        swal(
                            'Guardado!',
                            'El gasto fue actualizado correctamente!',
                            'success'
                        );
                            tabla.ajax.reload(null,false);
                            document.getElementById("formGastoUpdate").reset();
                            document.getElementById("totalUpdate").innerHTML = "";
                            $("#totalUpdate").css("display", "none");
                            $('#modalUpdateGasto').modal('hide');
                            tabla.ajax.reload(null,false);  
                        break;
                        case "error":
                            swal(
                                'Advertencia!',
                                data['result'],
                                'warning'
                            );
                        break;
                        // case "errorArchivo":
                        //     $("#fileUpdate").notify(data['result'],{
                        //         position:'top center',
                        //         className:'error',
                        //     });
                        // break;
                        case "errorGasto":
                            $("#txtgastoUpdate").notify(data['result'],{
                                position:'top center',
                                className:'error',
                            });
                        break;
                        case "errorCantidad":
                            $("#cantidadGastoUpdate").notify(data['result'],{
                                position:'top center',
                                className:'error',
                            });
                        break;
                        case "errorPrecio":
                            $("#precioGastoUpdate").notify(data['result'],{
                                position:'top center',
                                className:'error',
                            });
                        break;
                        default:
                    }
                },
                error:function(jqXHR, textStatus, error){
                    // swal(
                    //     'Error',    
                    //     'Ocurrio un error',
                    //     'error'
                    // );
                    alert("error: " + jqXHR.responseText);
                }
            });
    }
/*Fin update 2ª parte*/

/*fin de update*/

/*Inicio delete*/
function eliminarGasto(id){
      swal({
          title: "Eliminar Gasto",
          text: '¿Está seguro que desea eliminar el registro?',
          icon: "warning",
          buttons: true,
          dangerMode: true,
        })
        .then((willDelete) => {
          if (willDelete) {
            $.ajax({
                url: base_url+'gastos/Franquiciatario/GastosF/deleteGasto'+'/'+id,
                type:"POST",
                dataType:'json',
                cache: false,
                contentType: false,
                processData: false,
                success:function(data){
                  if (data['type'] == "success") {
                    swal(
                      'Registro eliminado!',
                      '',
                      'success'
                    );
                     tabla.ajax.reload(null,false);
                  }else if (data['type'] == "error") {
                    swal(
                      'Error!',
                      data['result'],
                      'error'
                    ); 
                  }
                },
                error:function(jqXHR, textStatus, error){
                  swal(
                    'Error',
                    'Ocurrio un error',
                    'error'
                  );
                  //alert("error: " + jqXHR.responseText);
                }
              });
            //swal("Deleted!", "Your imaginary file has been deleted.", "success");
          } else {
            swal("Cancelado", "¡Su archivo está a salvo!", "error");
          }
        });
}