
/*
Uso:
onkeypress="return MaskCPF(this, event)"
onkeypress="return MaskTelefone(this, event)"

Testado no IE 5.5+ e Firefox 1.0+

*/
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;
}


function MaskCEP(objeto, evt) {
	return Mascara(objeto, evt, '##.###-###');
}

function MaskTel(objeto, evt) {
	return Mascara(objeto, evt, '(##) ####-####');
}

function MaskCPF(objeto, evt) {
	return Mascara(objeto, evt, '###.###.###-##');
}

function MaskCNPJ(objeto, evt) {
	return Mascara(objeto, evt, '##.###.###/####-##');
}

function MaskPlacaCarro(objeto, evt) {
	return Mascara(objeto, evt, 'AAA-####');
}

function MaskData(objeto, evt) {
	return Mascara(objeto, evt, '##/##/####');
}

function defineCpfCnpj(objeto, evt)
{
	var tamanho = objeto.value.length;
	
	if(tamanho <= 14)
		return Mascara(objeto, evt, '###.###.###-##');
	else if(tamanho > 14)
		return Mascara(objeto, evt, '##.###.###/####-##');
}


/* Função para definir se a mascara a ser adotada para o telefone */ 
function maskTelefones(objeto, evt)
{
	campo   = objeto.value;
	tamanho = campo.length;
	
	
	if(tamanho <= 7)
		return  MaskTel(objeto, evt, '(##) ###-####');
	else if(tamanho > 7)
		return  MaskTel(objeto, evt, '(##) ####-####');
}

/* Função para mascaras gerais.       */
/* @parameters object objForm     ->  */
/*			   string strField    ->  */
/*			   string sMask       ->  */	
/*			   event  evtKeyPress ->  */
function txtBoxFormat(objForm, strField, sMask, evtKeyPress) 
{
	var i, nCount, sValue, fldLen, mskLen, bolMask, sCod, nTecla;
		
	if(document.all) 
	{ // Internet Explorer
	 	nTecla = evtKeyPress.keyCode; 
	}
	
	else if(document.layers) 
	{ // NestcapenTecla = 
    	evtKeyPress.which;
	}
	
	sValue = objForm[strField].value;// Limpa todos os caracteres de formatação que já estiverem no campo.
	sValue = sValue.toString().replace( "-", "");
	sValue = sValue.toString().replace( "-", "");
	sValue = sValue.toString().replace( ".", "");
	sValue = sValue.toString().replace( ".", "");
	sValue = sValue.toString().replace( "/", "");
	sValue = sValue.toString().replace( "/", "");
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "");
	sValue = sValue.toString().replace( ")", "");
	sValue = sValue.toString().replace( ")", "");
	sValue = sValue.toString().replace( " ", "");
	sValue = sValue.toString().replace( " ", "");
	
	fldLen = sValue.length;
	mskLen = sMask.length;
	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;
	
	while (i <= mskLen) 
    {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
		
		if (bolMask) 
		{
			sCod += sMask.charAt(i);mskLen++; 
		}
		
		else 
		{
			sCod += sValue.charAt(nCount);
			nCount++;
		}
		
		i++;
	}
	
	objForm[strField].value = sCod;
	
	if (nTecla != 8) 
	{ // backspace
		if (sMask.charAt(i - 1) == "9") 
		{ // apenas números...
			return ((nTecla > 47) && (nTecla < 58)); 
		} // números de 0 a 9
		else 
		{ // qualquer caracter...
			return true;
		} 
	}
	
	else 
	{
		return true;
	}

}//Fim da Função Máscaras Gerais


/* Função para definir se a mascara a ser adotada para é para CPF ou CNPJ */ 
function maskCnpjCpf(objForm, strField, evtKeyPress)
{
	campo   = objForm[strField].value;
	tamanho = campo.length;
	
	if(tamanho <= 14)
		return txtBoxFormat(objForm, strField, '999.999.999-999', evtKeyPress);
	else if(tamanho > 14)
		return txtBoxFormat(objForm, strField, '99.999.999/9999-99', evtKeyPress);
}


/* 
	Função para formatar valores monetários 
   	Modelo de uso : onKeyPress="return(formataMoeda(this, '.', ',', event))" 
*/
function formataMoeda(fld, milSep, decSep, e) 
{
	
	len = fld.value.length;
	if (len == 9)  // tamanho máximo do valor incluindo as vírgulas.
		return false;
	
	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) 
		return true;  
	key = String.fromCharCode(whichCode);  
	if (strCheck.indexOf(key) == -1)
		return false;  
	
	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;
}
