function mascara(objeto, evt, mask) {

var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var LetrasL = 'abcdefghijklmnopqrstuvwxyz';
var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var Numeros = '0123456789';
var Fixos  = '().-:/ '; 
var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";

evt = (evt) ? evt : (window.event) ? window.event : "";
var value = objeto.value;
if (evt) {
 var ntecla = (evt.which) ? evt.which : evt.keyCode;
 tecla = Charset.substr(ntecla - 32, 1);
 if (ntecla < 32) return true;

 var tamanho = value.length;
 if (tamanho >= mask.length) return false;

 var pos = mask.substr(tamanho,1); 
 while (Fixos.indexOf(pos) != -1) {
  value += pos;
  tamanho = value.length;
  if (tamanho >= mask.length) return false;
  pos = mask.substr(tamanho,1);
 }

 switch (pos) {
   case '#' : if (Numeros.indexOf(tecla) == -1) return false; break;
   case 'A' : if (LetrasU.indexOf(tecla) == -1) return false; break;
   case 'a' : if (LetrasL.indexOf(tecla) == -1) return false; break;
   case 'Z' : if (Letras.indexOf(tecla) == -1) return false; break;
   case '*' : objeto.value = value; return true; break;
   default : return false; break;
 }
}
objeto.value = value; 
return true;
}

/*

Exemplos de mascara
CEP -> 99.999-999 
CPF -> 999.999.999-99 
CNPJ -> 99.999.999/9999-99 
Data -> 99/99/9999 
Tel Resid -> (99) 999-9999 
Tel Cel -> (99) 9999-9999 
Processo -> 99.999999999/999-99 
C/C -> 999999-! 

criar mascaras
"#" - Numeros
"A" - Letras UpperCase
"a" - Letras LowerCase
"Z" - Letras
"*" - Qualquer Caracter
"/", ".", "-", " ", ":" - Caracteres Fixos

*/

function masc_mes_ano(objeto, evt) { return mascara(objeto, evt, '##'); }
function masc_cartao(objeto, evt) { return mascara(objeto, evt, '################'); }
function masc_cod_seguranca(objeto, evt) { return mascara(objeto, evt, '###'); }

function masc_peso(objeto, evt) { return mascara(objeto, evt, '##.###'); }
function masc_data(objeto, evt) { return mascara(objeto, evt, '##/##/####'); }
function masc_cep(objeto, evt) { return mascara(objeto, evt, '#####-###'); }
function masc_telefone(objeto, evt) { return mascara(objeto, evt, '(##) ####-####'); }
function masc_celular(objeto, evt) { return mascara(objeto, evt, '(##) ####-####'); }
function masc_cpf(objeto, evt) { return mascara(objeto, evt, '###.###.###-##'); }
function masc_placacarro(objeto, evt) { return mascara(objeto, evt, 'AAA-####'); }
function masc_cnpj(objeto, evt) { return mascara(objeto, evt, '##.###.###/####-##'); }

function masc_preco(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if ((whichCode == 13) || (whichCode == 0) || (whichCode == 8))
return true;
key = String.fromCharCode(whichCode);  // Valor para o código da Chave
if (strCheck.indexOf(key) == -1) return false;  // Chave inválida
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ decSep + '0' + aux;
if (len == 2) fld.value = '0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}

