$('body').on('hidden.bs.modal', function() {
    if ($('.modal.in').length > 0) {
        $('body').addClass('modal-open');
    }
});


$('.modal').on('show.bs.modal', reposition);

$(window).on('resize', function() {
    $('.modal:visible').each(reposition);
});


function reposition() {
    var modal = $(this),
        dialog = modal.find('.modal-dialog');
    modal.css('display', 'block');
    dialog.css("margin-top", Math.max(0, ($(window).height() - dialog.height()) / 3));
}


$(document).ready(function() {
    $.validator.addMethod("validar_solo_letras", function(value, element) {
        return this.optional(element) || /^([^\x00-\x7F]|[a-zA-Z\s])+$/i.test(value);
    }, "Sólo letras");

    $.validator.addMethod("validar_numeros", function(value, element) {
        return this.optional(element) || /^[0-9]+$/i.test(value);
    }, "Sólo números.");

    $.validator.addMethod("validar_letras_numeros", function(value, element) {
        return this.optional(element) || /^[a-z0-9áéíóúñÁÉÍÓÚÑ\ ]+$/i.test(value);
    }, "Sólo letras ó números.");

    $.validator.addMethod("validar_rut", function(value, element) {
        if (value.length > 0) {
            return validarRut(value);
        } else {
            return true;
        }
    }, "Debe ingresar un RUT válido.");

    $('#cmb_rpt_cliente_vencimiento_estado').change(function() {
        var v_estado = $('#cmb_rpt_cliente_vencimiento_estado').val();
        if (v_estado == 'Concluido' || v_estado == 'Vigente') {
            $('#div_rpt_cliente_vencimiento_dias').show();
        } else {
            $('#div_rpt_cliente_vencimiento_dias').hide();
        }
    });
});

function soloNumeros(evt){
	var keynum = window.event ? window.event.keyCode : evt.which;
	if(keynum <= 13 || (keynum >= 48 && keynum <= 57)){
		return true;
	}
	return /\d/.test(String.fromCharCode(keynum));
}

function quitar_coma_punto(par) {
    return par.replace('.', '').replace(',', '')
}

function fecha_agregar_dias(p_fecha, p_dias) {
    var v_fecha = p_fecha.split('-');
    var date    = new Date(v_fecha[2] + '/' + v_fecha[1] + '/' + v_fecha[0]),
        days    = parseInt(p_dias, 10);

    if (!isNaN(date.getTime())) {
        date.setDate(date.getDate() + days);
        return date.toInputFormat();
    } else {
        return '';
    }
}

Date.prototype.toInputFormat = function() {
    var yyyy = this.getFullYear().toString();
    var mm   = (this.getMonth() + 1).toString(); // getMonth() is zero-based
    var dd   = this.getDate().toString();
    return (dd[1] ? dd : "0" + dd[0]) + "-" + (mm[1] ? mm : "0" + mm[0]) + "-" + yyyy; // padding
};

function mostrar_blockUI() {
    $.blockUI({ message: '<h2>&nbsp;Espere un momento, procesando solicitud...</h2>' });
}

function ocultar_blockUI() {
    $.unblockUI();
}

function darformatoRut(Rut) {
    var digitoVerificador = true;
    var sRut = new String(Rut);
    var sRutFormateado = '';
    sRut = quitarformatoRut(sRut);
    if (digitoVerificador) {
        var sDV = sRut.charAt(sRut.length - 1);
        sRut = sRut.substring(0, sRut.length - 1);
    }

    while (sRut.length > 3) {
        sRutFormateado = "." + sRut.substr(sRut.length - 3) + sRutFormateado;
        sRut = sRut.substring(0, sRut.length - 3);
    }

    sRutFormateado = sRut + sRutFormateado;
    if (sRutFormateado != "" && digitoVerificador) {
        sRutFormateado += "-" + sDV;
    } else if (digitoVerificador) {
        sRutFormateado += sDV;
    }

    return sRutFormateado;
}

function digitoValidoRut(dv) {
    if (dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' &&
        dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' &&
        dv != 'k' && dv != 'K') {
        return false;
    }
    return true;
}

function digitoCorrectoRut(crut) {
    largo = crut.length;
    if (largo < 2) {
        return false;
    }

    if (largo > 2) {
        rut = crut.substring(0, largo - 1);
    } else {
        rut = crut.charAt(0);
    }
    dv = crut.charAt(largo - 1);
    digitoValidoRut(dv);

    if (rut == null || dv == null) {
        return 0;
    }

    dvr = getDigitoRut(rut);
    if (dvr != dv.toLowerCase()) {
        return false;
    }
    return true;
}



function getDigitoRut(rut) {
    var dvr = '0';
    suma = 0;
    mul = 2;
    for (i = rut.length - 1; i >= 0; i--) {
        suma = suma + rut.charAt(i) * mul;
        if (mul == 7) {
            mul = 2;
        } else {
            mul++;
        }
    }
    res = suma % 11;
    if (res == 1) {
        return 'k';
    } else if (res == 0) {
        return '0';
    } else {
        return 11 - res;
    }
}



function quitarformatoRut(rut) {
    var strRut = new String(rut);
    while (strRut.indexOf(".") != -1) {
        strRut = strRut.replace(".", "");
    }
    while (strRut.indexOf("-") != -1) {
        strRut = strRut.replace("-", "");
    }
    return strRut;
}

function validarRut(texto) {
    texto = quitarformatoRut(texto);
    largo = texto.length;
    if (largo < 2) {
        return false;
    }

    for (i = 0; i < largo; i++) {
        if (!digitoValidoRut(texto.charAt(i))) {
            return false;
        }
    }

    var invertido = "";
    for (i = (largo - 1), j = 0; i >= 0; i--, j++) {
        invertido = invertido + texto.charAt(i);
    }

    var dtexto = "";
    dtexto = dtexto + invertido.charAt(0);
    dtexto = dtexto + '-';
    cnt = 0;
    for (i = 1, j = 2; i < largo; i++, j++) {
        if (cnt == 3) {
            dtexto = dtexto + '.';
            j++;
            dtexto = dtexto + invertido.charAt(i);
            cnt = 1;
        } else {
            dtexto = dtexto + invertido.charAt(i);
            cnt++;
        }
    }

    invertido = "";
    for (i = (dtexto.length - 1), j = 0; i >= 0; i--, j++) {
        invertido = invertido + dtexto.charAt(i);
    }

    if (digitoCorrectoRut(texto)) {
        return true;
    }
    return false;
}

function texto_capitalize(p_texto) {
    var text   = p_texto,
        tokens = text.split(" ").filter(function(t) { return t != ""; }),
        res = [],
        i,
        len,
        component;

    var v_resultado = '';
    for (i = 0, len = tokens.length; i < len; i++) {
        component   = tokens[i];
        v_resultado = v_resultado +
            component.substring(0, 1).toUpperCase() +
            component.substring(1).toLowerCase();
        if (i != (len - 1))
            v_resultado = v_resultado + ' ';
    }
    return v_resultado;
}

$.fn.capitalise = function() {
    return this.each(function() {
        var $this  = $(this),
            text   = $this.text(),
            tokens = text.split(" ").filter(function(t) { return t != ""; }),
            res    = [],
            i,
            len,
            component;

        for (i = 0, len = tokens.length; i < len; i++) {
            component = tokens[i];
            res.push(component.substring(0, 1).toUpperCase());
            res.push(component.substring(1));
            res.push(" ");
        }
        $this.text();
    });
};

function Contar(entrada, salida, caracteres) {
    var entradaObj = $('#' + entrada).val();
    var longitud   = caracteres - entradaObj.length;
    if (longitud > 0) {
        $('#' + salida).text(longitud + ' caracteres restantes');
    } else {
        $('#' + entrada).val(entradaObj.substr(0, caracteres));
        $('#' + salida).text('0 caracteres restantes');
    }
}

function abrir_enlace(par) {
    window.open(par, '_blank');
}

function cerrar_sesion(pagina) {
    location.href = '/login/logout.php';
}

function redireccionar(pagina) {
    location.href = pagina;
}

function recargar() {
    location.reload();
}

function mostrar_filtro_reporte_pagos() {
    var v_hoy = new Date();
    $("#txt_rpt_pago_fec_inicio").datetimepicker({
        locale: 'es',
        format: "dd-mm-yyyy",
        autoclose: true,
        todayBtn: true,
        minView: 2,
        pickerPosition: "bottom",
        endDate: v_hoy
    });
    $("#txt_rpt_pago_fec_fin").datetimepicker({
        locale: 'es',
        format: "dd-mm-yyyy",
        autoclose: true,
        todayBtn: true,
        minView: 2,
        pickerPosition: "bottom",
        endDate: v_hoy
    });

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

function modalMensajeMostrar( titulo, mensaje, funcionCerrar = null ) {
    $('#md_modal_mensaje_cerrar').unbind();
    if( funcionCerrar != null ) {
        $('#md_modal_mensaje_cerrar').click(funcionCerrar);
    }
    $('#md_modal_mensaje_titulo').text(titulo);
    $('#md_modal_mensaje_div_contenido').html(mensaje);
    $('#md_modal_mensaje').modal('show');
}

function modalMensajeOcultar() {
    $('#md_modal_mensaje').modal('hide');
}

function modalConfirmarMostrar( titulo, mensaje, funcionConfirmar, 
                                infoId = null, 
                                botonTexto = 'Aceptar', botonIcono = 'picons-thin-icon-thin-0154_ok_successful_check',
                                infoAuxiliar = null, infoFuncion = null ) {
    if( infoId != null ) {
        $('#md_modal_confirmar_txt_id').val(infoId);
    }
    if( infoAuxiliar != null ) {
        $('#md_modal_confirmar_txt_aux').val(infoAuxiliar);
    }
    if( infoFuncion != null ) {
        $('#md_modal_confirmar_fn').val(infoFuncion);
    }
    $('#md_modal_confirmar_titulo').text(titulo);
    $('#md_modal_confirmar_div_contenido').html(mensaje);
    if( botonIcono != null ) {
        $('#md_modal_confirmar_btn_aceptar').attr("class", 'btn btn-primary '+ botonIcono);
    } else {
        $('#md_modal_confirmar_btn_aceptar').attr("class", 'btn btn-primary picons-thin-icon-thin-0154_ok_successful_check');
    }
    $('#md_modal_confirmar_btn_aceptar').text(' ' + botonTexto)
    $('#md_modal_confirmar_btn_aceptar').unbind()
    $('#md_modal_confirmar_btn_aceptar').click(funcionConfirmar);
    
    $('#md_modal_confirmar').modal('show');
}

function modalConfirmarOcultar() {
    $('#md_modal_confirmar').modal('hide');
}

function controlDarFormatoRut( control ) {
    let rut = darformatoRut( control.value );
    control.value = rut;
}