$(document).ready(function () {
    //Funcion de prueba para Sweet Alert 2
    $('#form').submit(function (e) {
        e.preventDefault();
        //captura todos los valores que tiene el formulario es decir todos los input que esten en ese formulario...
        var datos=$(this).serialize();
      /*swal(
         'Titulo del Mensaje',
         'Mensaje',
         'Tipo de mesaje'
         );*/
        $.ajax({
            type:"POST",
            url:"./vistas/contenidos/ejecucion.php",
            data:datos,
            success:function(data){
                swal({
                    title: "¿Estás seguro?",   
                    text: "Quieres borrar",   
                    type: "question",   
                    showCancelButton: true,
                    confirmButtonColor: "#3085d6",
                    cancelButtonColor: "#d33",     
                    confirmButtonText: "Aceptar",
                    cancelButtonText: "Cancelar"
                }).then((result) => {
                    swal(
                            "Sweet Alert 2",
                            "Acepto",
                            "success"
                        )
                })
                
                //imprimo el resultado en el div mensaje que procesa ajax
                $("#mensaje").html(data);
            }
        });
    });

    //Funcion para validar los formularios  
    
    $('#FormularioValidar').bootstrapValidator({
        message: 'Este valor no es valido',
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },    
        fields: {
            // de Cliente
            rifreg: {
                validators: {
                    notEmpty: {
                        message: 'El rif o cedula es obligatorio y no puede estar vacio'
                    }
                }
            },
            telefonoreg: {
                message: 'El teléfono no es valido',
                validators: {
                    regexp: {
                        regexp: /^[0-9]+$/,
                        message: 'El teléfono solo puede contener números'
                    }
                }
            },
            razonreg: {
                validators: {
                    notEmpty: {
                        message: 'La Razon Social o nombre es obligatorio y no puede estar vacio'
                    }
                }
            },
            emailreg: {
                validators: {
                    emailAddress: {
                        message: 'La direccion correo no es valida'
                    }
                }
            },
            direccionreg: {
                validators: {
                    stringLength: {
                        message: 'La direccion debe tener mas de 5 letras y menos de 100',
                        min: 5,
                        max: 100
                    }
                }
            },
            // de Usuario
            nombrereg: {
                validators: {
                    stringLength: {
                        message: 'El Nombre debe tener al menos una letras',
                        min: 1,
                        max: 100
                    },
                    regexp: {
                        regexp: /^[A-Z\s]+$/i,
                        message: 'El nombre solo debe tener caracteres alfabetico'
                    }
                }
            },
            apellidoreg: {
                validators: {
                    stringLength: {
                        message: 'El Apellido debe tener al menos una letras',
                        min: 1,
                        max: 100
                    },
                    regexp: {
                        regexp: /^[A-Z\s]+$/i,
                        message: 'El Apellido solo debe tener caracteres alfabetico'
                    }
                }
            },
            emailureg: {
                validators: {
                    notEmpty: {
                        message: 'El correo es obligatorio y no puede estar vacio'
                            },
                    emailAddress: {
                        message: 'La direccion correo no es valida'
                    }
                }
            },
            usuarioreg: {
                validators: {
                    notEmpty: {
                        message: 'El usuario es obligatorio y no puede estar vacio'
                    },
                    regexp: {
                        regexp: /^[a-zA-Z0-9_\.]+$/,
                        message: 'El usuario solo debe tener caracteres alfanumerico'
                    },
                    different: {
                        field: 'clavereg',
                        message: 'La clave no puede ser igual a la clave'
                    }
                }
             },
            clavereg: {
                validators: {
                    notEmpty: {
                        message: 'La clave es obligatoria'
                    },
                    different: {
                        field: 'usuarioreg',
                        message: 'La clave no puede ser igual al usuario'
                    }
                }
            },
            rolreg: {
                validators: {
                    notEmpty: {
                        message: 'Debe seleccionar el Rol no puede estar vacio'
                    }
                }
            },
            // Borrar Cliente
            idclienteDel: {
                validators: {
                    notEmpty: {
                        message: 'Debe seleccionar el Rol no puede estar vacio'
                    }
                }
            }
        }
    })
    //Se verifica si la validacion se completo correctamente
    .on('success.form.bv', function(e) {
        // Se esta previniendo el evento submit del boton guardar
        e.preventDefault();
        var form=$(this);
        var tipo=form.attr('data-form');
        var accion=form.attr('action');
        var metodo=form.attr('method');
        var respuesta=form.children('.RespuestaAjax');
        var msjError="<script>swal('Ocurrió un error inesperado','Por favor recargue la página','error');</script>";
        var formdata = new FormData(this);
        var textoAlerta;
        if(tipo==="guardar"){
            textoAlerta="Los datos que enviaras quedaran almacenados en el sistema";
        }else if(tipo==="borrar"){
            textoAlerta="Los datos serán eliminados completamente del sistema";
        }else if(tipo==="actualizar"){
        	textoAlerta="Los datos del sistema serán actualizados";
        }else{
            textoAlerta="Quieres realizar la operación solicitada";
        }
        swal({
            title: "¿Estás seguro?",   
            text: textoAlerta,   
            type: "question",   
            showCancelButton: true,     
            confirmButtonText: "Aceptar",
            cancelButtonText: "Cancelar"
        }).then(function ()        {
            $.ajax({
                type: metodo,
                url: accion,
                data: formdata ? formdata : form.serialize(),
                cache: false,
                contentType: false,
                processData: false,
                xhr: function(){
                    var xhr = new window.XMLHttpRequest();
                    xhr.upload.addEventListener("progress", function(evt) {
                      if (evt.lengthComputable) {
                        var percentComplete = evt.loaded / evt.total;
                        percentComplete = parseInt(percentComplete * 100);
                        if(percentComplete<100){
                        	respuesta.html('<p class="text-center">Procesado... ('+percentComplete+'%)</p><div class="progress progress-striped active"><div class="progress-bar progress-bar-info" style="width: '+percentComplete+'%;"></div></div>');
                      	}else{
                      		respuesta.html('<p class="text-center"></p>');
                      	}
                      }
                    }, false);
                    return xhr;
                },
                success: function (data) {
                    respuesta.html(data);
                },
                error: function() {
                    respuesta.html(msjError);
                }
            });
            return false;
        });
    });
    //Fin de la validacion del formulario
        
    // Funciones para mandar a validar los formulario
    $('#guardarBtn').click(function() {
        $('#FormularioValidar').bootstrapValidator('validate');
    });

    $('.FormularioAjaxLineas').submit(function(e){
        e.preventDefault();
        var form=$(this);
        var tipo=form.attr('data-form');
        var accion=form.attr('action');
        var metodo=form.attr('method');
        var respuesta=form.children('.RespuestaAjax');
        var msjError="<script>swal('Ocurrió un error inesperado','Por favor recargue la página','error');</script>";
        var formdata = new FormData(this);
        var textoAlerta;
        if(tipo==="guardar"){
            textoAlerta="Los datos que enviaras quedaran almacenados en el sistema";
        }else if(tipo==="borrar"){
            textoAlerta="Los datos serán eliminados completamente del sistema";
        }else if(tipo==="actualizar"){
        	textoAlerta="Los datos del sistema serán actualizados";
        }else{
            textoAlerta="Quieres realizar la operación solicitada";
        }
        swal({
            title: "¿Estás seguro?",   
            text: textoAlerta,   
            type: "question",   
            showCancelButton: true,     
            confirmButtonText: "Aceptar",
            cancelButtonText: "Cancelar"
        }).then(function () {
            $.ajax({
                type: metodo,
                url: accion,
                data: formdata ? formdata : form.serialize(),
                cache: false,
                contentType: false,
                processData: false,
                xhr: function(){
                    var xhr = new window.XMLHttpRequest();
                    xhr.upload.addEventListener("progress", function(evt) {
                      if (evt.lengthComputable) {
                        var percentComplete = evt.loaded / evt.total;
                        percentComplete = parseInt(percentComplete * 100);
                        if(percentComplete<100){
                        	respuesta.html('<p class="text-center">Procesado... ('+percentComplete+'%)</p><div class="progress progress-striped active"><div class="progress-bar progress-bar-info" style="width: '+percentComplete+'%;"></div></div>');
                      	}else{
                      		respuesta.html('<p class="text-center"></p>');
                      	}
                      }
                    }, false);
                    return xhr;
                },
                success: function (data) {
                    respuesta.html(data);
                },
                error: function() {
                    respuesta.html(msjError);
                }
            });
            return false;
        }); 
    });

    //Funcion para los formularios
    $('#limpiarBtn').click(function() {
        $('#FormularioValidar').data('bootstrapValidator').resetForm(true);
    });
 });

// Funcion para cargar las tablas
$(function () {
    $('#tablageneral').DataTable()
    $('#tablageneralOpcional').DataTable({
      'paging'      : true,
      'lengthChange': false,
      'searching'   : false,
      'ordering'    : true,
      'info'        : true,
      'autoWidth'   : false
    })
})

/******************************************************************
 * **** Funciones para el formateo de los valores numericos  ******
 ******************************************************************/
// Funcion convertir en numerico
function numero(amount) {
    amount += ''; // por si pasan un numero en vez de un string
    amount = amount.replace(/[^0-9\,-]/g, ''); // elimino cualquier cosa que no sea numero o coma
	amount = amount.replace(',','.');
	amount = parseFloat(amount);
    return amount;
}

// Funcion para dar formato a los numeros

function number_format(amount, decimals) {

    amount += ''; // por si pasan un numero en vez de un string
    amount = parseFloat(amount.replace(/[^0-9\.-]/g, '')); // elimino cualquier cosa que no sea numero o punto

    decimals = decimals || 0; // por si la variable no fue fue pasada

    // si no es un numero o es igual a cero retorno el mismo cero
    if (isNaN(amount) || amount === 0) 
        return parseFloat(0).toFixed(decimals);

    // si es mayor o menor que cero retorno el valor formateado como numero
    amount = '' + amount.toFixed(decimals);

    var amount_parts = amount.split('.'),
        regexp = /(\d+)(\d{3})/;

    while (regexp.test(amount_parts[0]))
        amount_parts[0] = amount_parts[0].replace(regexp, '$1' + '.' + '$2');

    return amount_parts.join(',');

return sign ? '-' + amount_parts.join('.') : amount_parts.join('.')

}