//Formata número tipo moeda usando o evento onKeyDown
function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
dec=decimal

if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

if (tecla == 8 )
{ tam = tam - 1 ; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{

if ( tam <= dec )
{ campo.value = vr ; }

if ( (tam > dec) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;}
} 

}
function Limpar(valor, validos) {
// retira caracteres invalidos da string
var result = "";
var aux;
for (var i=0; i < valor.length; i++) {
aux = validos.indexOf(valor.substring(i, i+1));
if (aux>=0) {
result += aux;
}
}
return result;
}
// JavaScript Document 
//Input somente numeros usado: onkeypress="return campo_numerico(event)" 
function campo_numerico(evt)
{
         var charCode = (evt.which) ? evt.which : event.keyCode;
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
}
//Mascaras Uso: onkeyup="mascara(this.value, this.id, '####.##.##.#######-#/#', event)"
function mascara(valor, id, mascara, evento){

//inicializa a variavel que vai conter o valor final
var valorFinal = "";
//verifica o que foi digitada para que seja verificado se é somente números ou não
var tecla = evento.keyCode;
//manetem o tamanho original do campo sem retirar a máscara
var valorOriginal = valor;
//inicializa um array com todos os caracteres que serão retirado
var arrNaoPermitidos = new Array("-", ".", "/", "\\", "|", "(", ")", ":", " ");
//retira qualquer máscatra que já tenho sido colocada
for(i1=0;i1<valor.length;i1++)
{
for(i2=0;i2<arrNaoPermitidos.length;i2++)
{
if(valor.charAt(i1) == arrNaoPermitidos[i2])
{
valor = valor.toString().replace( arrNaoPermitidos[i2], "" );
}
}
}
//verifica se foi precionado o backspae
if(tecla != 8)
{
//verifica se já não ultrapassou o tamanha máximo da máscara
if(mascara.length >= valorOriginal.length)
{
//loop em cima do valor do campo sem a máscara
jaTemMascara = false;
for(i=0;i<valor.length;i++)
{
//verifica se a string já recebeu alguma máscara ou não
if(jaTemMascara == false)
{
//verifica se o tipo da entrada de dados tem que ser némerica
if(mascara.charAt(i) == "#")
{
//verifica se foi digitado somente números
if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
{
//0 = 96 ou 48
//1 = 97 ou 49
//2 = 98 ou 50
//3 = 99 ou 51
//4 = 100 ou 52
//5 = 101 ou 53
//6 = 102 ou 54
//7 = 103 ou 55
//8 = 104 ou 56
//9 = 105 ou 57
//tecla == 9 = tab
valorFinal = valorFinal+ valor.charAt(i);
}
else//se não foi digitado um número é retirado o caracter da string
{
valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
}
}
else if(mascara.charAt(i) == "@")//verifica se o tipo da entrada é qualquer caracter
{
valorFinal = valorFinal+ valor.charAt(i);
}
else//se não for quelaquer caracter é algum elemento da máscara
{
//verifica se o próxima depois da máscara é númerica 
if(mascara.charAt(i + 1) == "#")
{
//verifica se foi digitado somente números
if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
{
//0 = 96 ou 48
//1 = 97 ou 49
//2 = 98 ou 50
//3 = 99 ou 51
//4 = 100 ou 52
//5 = 101 ou 53
//6 = 102 ou 54
//7 = 103 ou 55
//8 = 104 ou 56
//9 = 105 ou 57
//tecla == 9 = tab
valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)+ valor.charAt(i);
jaTemMascara = jaTemMascara + 1;
}
else//se não foi digitado um número é retirado o caracter da string
{
valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
}
}
else// se não é númerico então pode ser qualuqer caracter
{
valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)+ valor.charAt(i);
jaTemMascara = jaTemMascara + 1;
}
}
}
else//else da verificação da máscara
{
//verifica se foi digitado somente números
if(mascara.charAt(i + jaTemMascara) == "#")
{
//verifica se foi digitado somente números
if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
{
//0 = 96 ou 48
//1 = 97 ou 49
//2 = 98 ou 50
//3 = 99 ou 51
//4 = 100 ou 52
//5 = 101 ou 53
//6 = 102 ou 54
//7 = 103 ou 55
//8 = 104 ou 56
//9 = 105 ou 57
//tecla == 9 = tab
valorFinal = valorFinal+ valor.charAt(i);
}
else//se não foi digitado um número é retirado o caracter da string
{
valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
}
}
else if(mascara.charAt(i + jaTemMascara) == "@")//verifica se o tipo da entrada é qualquer caracter
{
valorFinal = valorFinal+ valor.charAt(i);
}
else
{
//verifica se foi digitado somente números
if(mascara.charAt(i + jaTemMascara +1) == "#")
{
//verifica se foi digitado somente números
if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
{
//0 = 96 ou 48
//1 = 97 ou 49
//2 = 98 ou 50
//3 = 99 ou 51
//4 = 100 ou 52
//5 = 101 ou 53
//6 = 102 ou 54
//7 = 103 ou 55
//8 = 104 ou 56
//9 = 105 ou 57
//tecla == 9 = tab
valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)+ valor.charAt(i);
jaTemMascara = jaTemMascara + 1;
}
else//se não foi digitado um número é retirado o caracter da string
{
valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
}
}
else// se não é númerico então pode ser qualuqer caracter
{
valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)+ valor.charAt(i);
jaTemMascara = jaTemMascara + 1;
}
}
}//fim da verificação da máscara
}
}
else
{
valorFinal = valorOriginal.substring(0, mascara.length);
}//final da verificação do tamanha máximo da string
}
else
{
//valorFinal = valorOriginal.substring(0, valorOriginal.length -1)
valorFinal = valorOriginal.substring(0, valorOriginal.length);
}//final da verificação do backspace
document.getElementById(id).value = valorFinal;
}
