﻿function trim(str) {

    var regexp = /[\n\r\t ]+$/;
    str = str.replace(regexp, "");

    regexp = /^[\n\r\t ]+/;
    str = str.replace(regexp, "");

    return str;

}

function soNumeros(v) {

    return v.replace(/\D/g, "")

}

function isDate(day, month, year) {
    
    var date = new Date();
    var blnRet = false;
    var blnDay;
    var blnMonth;
    var blnYear;
    
    year = parseInt(year, 10);
    if (year < 100) {
        return false;
    }
    
    date.setFullYear(year, month - 1, day);

    blnDay = (date.getDate() == day);
    blnMonth = (date.getMonth() == month - 1);
    blnYear = (date.getFullYear() == year);

    if (blnDay && blnMonth && blnYear)
        blnRet = true;

    return blnRet;
    
}

function cvData(sender, args) {

    var strData = args.Value;
    var cDate, cMonth, cYear;
    var arrDMY;

    arrDMY = strData.split("/");
    cDate = 0;
    cMonth = 0;
    cYear = 0;
    if (arrDMY.length == 3) {
        cDate = arrDMY[0];
        cMonth = arrDMY[1];
        cYear = arrDMY[2];
    }

    if (isDate(cDate, cMonth, cYear)) {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }

}

function cvEmail(sender, args) {

    var strEmail = args.Value;

    if (ehEmail(strEmail)) {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }

}

function ehEmail(v) {

    if (v.indexOf("..") > -1) return false;
    if (v.indexOf("@") == -1) return false;
    if (v.indexOf("@.") > -1) return false;
    if (v.indexOf(" ") > -1) return false;
    if (v.indexOf("@gmail.com.br") > -1) return false;
    if (v.indexOf("@hotamil.com.br") > -1) return false;

    v = trim(v);
    var re = /^[a-zA-Z._0-9-]+@[a-zA-Z0-9]{1}[a-zA-Z._0-9-]+\.[a-zA-Z]+[.]?[a-zA-Z]{0,3}$/;
    
    return re.test(v);

}


function cvCPF(sender, args) {

    var strCPF = args.Value;
    if (ehCPF(strCPF)) {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }

}

function cvSelect(sender, args) {
    
    var strSelectedValue = args.Value;
    
    if (strSelectedValue != "0") {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }

}

function fillLeftChars(v, size, ch) {

    var i = 0;
    var dif = 0;
    var buf = '';

    if (v == '' || v == null) return '';
    if (v.length >= size) return v;

    dif = size - v.length;

    for (i = 0; i < dif; i++) {
        buf += ch;
    }

    buf += v;
    
    return buf;

}

function extrairMascaraCPF(cpf) {

    var tam = cpf.length;
    var cpfNumerico = "";
    
    for (var idx = 0; idx < tam; idx++) {
        ch = cpf.substring(idx, idx + 1);
        if (ch != '.' && ch != '-') {
            cpfNumerico += ch;
        }
    }

    return fillLeftChars(cpfNumerico, 11, '0');
}


function ehCPF(CPFValue) {

    var i;
    var dig1 = 0;
    var dig2 = 0;

    CPFValue = extrairMascaraCPF(CPFValue);

    // Controle contra digitação de dados do tipo 111111111111, 222222222222, etc
    var temp = '';
    var ctr = 0;
    
    for (i = 0; i < CPFValue.length; i++) {
        if (temp == CPFValue.charAt(i)) {
            ctr++;
        }
        temp = CPFValue.charAt(i);
    }
    
    if (ctr >= 9) {
        return false;
    }

    if (trim(CPFValue) == null || trim(CPFValue).length != 11) {
        return false;
    }
    
    for (i = 1; i <= 9; i++) {
        dig1 = dig1 + parseInt(CPFValue.substring(i - 1, i), 10) * i;
    }

    dig1 = dig1 % 11;
    if (dig1 == 10) dig1 = 0;
    if (dig1 != CPFValue.substring(9, 10)) return false;

    for (i = 2; i <= 10; i++) {
        dig2 = dig2 + parseInt(CPFValue.substring(i - 1, i), 10) * (i - 1);
    }

    dig2 = dig2 % 11;
    if (dig2 == 10) dig2 = 0;
    if (dig2 != CPFValue.substring(10, 11)) {
        return false;
    }
    else {
        return true;
    }

}


