// <Sintaxe>: aplicaMascara( <mascara>, <conteudo> );
// <mascara>: (string) Máscara que será aplicada à <conteudo>
// <conteudo>: (string) Conteúdo em que será aplicada <mascara>
//
// Caracteres especiais para <mascara>
// # - Somente números (0-9)
// @ - Somente letras(a-Z)
// A - Somente letras maiúsculas (A-Z) (converte minúsculas para maiúsculas)
// a - Somente letras minúsculas (a-z) (converte maiúsculas para minúsculas)
// ? - Letras ou números apenas
//
// Exemplos:
// DATA - '##/##/####'
// CPF - '###.###.###-##'
// TEL - '(##) ####-####'
// TESTE - '??a ##.###/AA AAA @! Aa#@?'
//
// © 2008 Klauss Sant'Ana Guimarães - <klaussantana.com>
function aplicaMascara( mascara, valor )
{
trabalho = '';
extra = 0;
tamanho = valor.length;

for( i =0; i <=mascara.length; i++ )
if( mascara.charAt(i) !='A' )
if( mascara.charAt(i) !='a' )
valor = valor.replace(mascara.charAt(i), '');

for( i =0; i <mascara.length; i++ )
{
if( i > (tamanho -1 +extra) )
break;

MASK = mascara.charAt(i);
VAL = valor.charAt(i -extra);

switch( MASK )
{
// Números
case '#':
if( (VAL.charCodeAt(0) >=48) && (VAL.charCodeAt(0) <=57) )
trabalho += VAL;
break;
case '@':
if( ((VAL.charCodeAt(0) >=65) && (VAL.charCodeAt(0) <=90)) || ((VAL.charCodeAt(0) >=97) && (VAL.charCodeAt(0) <=122)) )
trabalho += VAL;
break;
case 'A':
if( ((VAL.charCodeAt(0) >=65) && (VAL.charCodeAt(0) <=90)) || ((VAL.charCodeAt(0) >=97) && (VAL.charCodeAt(0) <=122)) )
trabalho += VAL.toUpperCase();
break;
case 'a':
if( ((VAL.charCodeAt(0) >=65) && (VAL.charCodeAt(0) <=90)) || ((VAL.charCodeAt(0) >=97) && (VAL.charCodeAt(0) <=122)) )
trabalho += VAL.toLowerCase();
break;
case '?':
if( ((VAL.charCodeAt(0) >=48) && (VAL.charCodeAt(0) <=57)) || ((VAL.charCodeAt(0) >=65) && (VAL.charCodeAt(0) <=90)) || ((VAL.charCodeAt(0) >=97) && (VAL.charCodeAt(0) <=122)) )
trabalho += VAL;
break;
default:
trabalho += MASK;
extra++;
break;
}

}

return trabalho;
}
