﻿
function NumFormat(Campo, Evento, AceitaNegativo) {

    if ((Evento.keyCode >= 96 && Evento.keyCode <= 105) || (Evento.keyCode >= 48 && Evento.keyCode <= 57)
	|| Evento.keyCode == 188 || Evento.keyCode == 190
	|| Evento.keyCode == 8 || Evento.keyCode == 46 || (Evento.keyCode == 189 && AceitaNegativo)) {
        campoTmp = Campo.value;
        reg = /[^0-9]/g;

        if (campoTmp.indexOf("-") == 0)
            negativo = "-";
        else
            negativo = "";

        campoTmp = campoTmp.replace(reg, "");
        result = "";
        i = 4;
        len = campoTmp.length;
        if (len > 2) {
            parteDecimal = campoTmp.substr(len - 2, 2)
            campoTmp = campoTmp.substr(0, len - 2)
            len = campoTmp.length;
            while (i <= campoTmp.length) {
                result = '.' + campoTmp.substr(len - 3, 3) + result;
                i += 3;
                len -= 3;
            }
            result = campoTmp.substr(0, len) + result;
            Campo.value = negativo + result + ',' + parteDecimal;
        }
        else
            Campo.value = negativo + Campo.value.replace(reg, "");
    }
    else
        if ((Evento.keyCode < 35 || Evento.keyCode > 40) && Evento.keyCode != 9 && Evento.keyCode != 16) {
        if (AceitaNegativo)
            reg = /[^0-9,-\.]/g;
        else
            reg = /[^0-9,\.]/g;

        Campo.value = Campo.value.replace(reg, "");
    }
}