﻿function validaNumeros(field, evt) {
    evt = getEvent(evt);
    var key = getKeyCode(evt);
    
    if (!validKey(key))
        return;
    value = field.value = filterNumbers(filterField(field));
    field.value = value;
}

// Formata o campo valor monetário
function formatCurrency(field, evt) {
    //1.000.000,00
    evt = getEvent(evt);
    var key = getKeyCode(evt);
    
    if (!validKey(key))
        return;
    value = field.value = filterNumbers(filterField(field));
    size = value.length;
    
    if (size <= 2) {
        field.value = value;
    }
    
    if ((size > 2) && (size <= 5)) {
        field.value = value.substr(0, size - 2) + ',' + value.substr(size - 2, size);
    }
    
    if ((size >= 6) && (size <= 8)) {
        field.value = value.substr(0, size - 5) + '.' + value.substr(size - 5, 3) + ',' + value.substr(size - 2, size);
    }
    
    if ((size >= 9) && (size <= 11)) {
        field.value = value.substr(0, size - 8) + '.' + value.substr(size - 8, 3) + '.' + value.substr(size - 5, 3) + ',' + value.substr(size - 2, size);
    }
    
    if ((size >= 12) && (size <= 14)) {
        field.value = value.substr(0, size - 11) + '.' + value.substr(size - 11, 3) + '.' + value.substr(size - 8, 3) + '.' + value.substr(size - 5, 3) + ',' + value.substr(size - 2, size);
    }
    
    if ((size >= 15) && (size <= 18)) {
        field.value = value.substr(0, size - 14) + '.' + value.substr(size - 14, 3) + '.' + value.substr(size - 11, 3) + '.' + value.substr(size - 8, 3) + '.' + value.substr(size - 5, 3) + ',' + value.substr(size - 2, size);
    }
}

// limpa todos os caracteres especiais do campo solicitado
function filterField(field) {
    var s = "";
    var cp = "";
    
    value = field.value;
    size = value.length;
    
    for (i = 0; i < size; i++) {
        if (value.substring(i, i + 1) != "/"
            && value.substring(i, i + 1) != "-"
            && value.substring(i, i + 1) != "."
            && value.substring(i, i + 1) != ":"
            && value.substring(i, i + 1) != ",") {
            s = s + value.substring(i, i + 1);
        }   
    }

    return s;
}

// limpa todos caracteres que não são números
function filterNumbers(field) {
    var s = "";
    var cp = "";
    
    value = field;
    size = value.length;
    
    for (i = 0; i < size; i++) {
        if (value.substring(i, i + 1) == "0" ||
            value.substring(i, i + 1) == "1" ||
            value.substring(i, i + 1) == "2" ||
            value.substring(i, i + 1) == "3" ||
            value.substring(i, i + 1) == "4" ||
            value.substring(i, i + 1) == "5" ||
            value.substring(i, i + 1) == "6" ||
            value.substring(i, i + 1) == "7" ||
            value.substring(i, i + 1) == "8" ||
            value.substring(i, i + 1) == "9") {
            s = s + value.substring(i, i + 1);
        }
    }

    return s;
}

//recupera tecla
//evita criar mascara quando as teclas são pressionadas
function validKey(key) {
    if (key == 8 //backspace
        || key == 45 //insert
        || key == 46 //delete
        || key == 36 //home
        || key == 37 //esquerda
        || key == 38 //cima
        || key == 39 //direita
        || key == 40)//baixo
        return false;
    else return true;
}

// recupera o evento do form
function getEvent(evt) {
    if (!evt) evt = window.event; //IE
    return evt;
}

//Recupera o código da tecla que foi pressionado
function getKeyCode(evt) {
    var code;
    if (typeof (evt.keyCode) == 'number')
        code = evt.keyCode;
    else if (typeof (evt.which) == 'number')
        code = evt.which;
    else if (typeof (evt.charCode) == 'number')
        code = evt.charCode;
    else return 0;
    
    return code;
}