/***********************************************************************
FUNÇÃO PRINCIPAL DA MASCARA
-------------------------------------------------------------------
Função: fnMascara
Dados de Entrada: objeto (nome do campo no formulário), evt (evento do campo), mask(O Formato de mascara que deseja)
Dados de Saída:
Processamento: Enquanto o usuario for digitando automaticamente ele ja 
vai colocando os pontos(se necessario), barras(se necessario), traço(se necessario) e entre outros.
Uso no formulário: onkeypress="return fnMascara(this, event,'#####-###');"
Lembrando que #####-### é o formato da mascara que você quer, no caso é a de CEP

Responsavél: Marcelo Abib Cardoso
Data: 17/08/2006
************************************************************************/
//Funcao da Mascara
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006

function fnMascara(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;
}

/***********************************************************************
FUNÇÃO PARA TRATAMENTO DE CAMPO MOEDA
-------------------------------------------------------------------
Função: formatCurrency
Dados de Entrada: pValor (valor do campo no formulário)
Dados de Saída: pValor formatado para reais
Processamento: Inverte posicionamento dos pontos, formata uso
do cifrão, trata sinal e centavos, no final retorna o valor
formatado no padrão R$N.NNN,NN
Uso no formulário: onBlur="this.value=formatCurrency(this.value);">

Responsavél: Pestana
Data: 18/05/2006

Alteração / Correção
-------------------------------------------------------------------
André Ferraro
Data: 18/07/2006
	Quando o formulário era de alteração, ou seja, já continha
	dados, o javascript zera o campo text deixando R$0,00, pois
	depois do R e antes do cifrão deve existir um caracter de
	escape agora está correto.
************************************************************************/

function formatCurrency(pValor)
{
	pValor = pValor.toString().replace(/\.|\./g,'');		//retira os pontos da string
	pValor = pValor.toString().replace(/\,|\,/g,'.');		//transforma virgula em ponto
	pValor = pValor.toString().replace(/\R\$|\ |\,/g,'');		//retira o R$ da string
	if(isNaN(pValor)) pValor = "0";					//se mesmo assim não numérico então o valor fica 0
	sign = (pValor == (pValor = Math.abs(pValor)));			//trabalha com o sinal de negativo
	pValor = Math.floor(pValor*100+0.50000000001);			//retira as casas decimais e faz arredondamento (meio porco)
	cents = pValor%100;						//separa os centavos
	pValor = Math.floor(pValor/100).toString();			//divide o valor por 100 para retirar casas decimais e tranf. em string
	if(cents<10) cents = "0" + cents;				//se centavos igual 1..9 então coloca 0 na frente
	for (var i = 0; i < Math.floor((pValor.length-(1+i))/3); i++)
		pValor = pValor.substring(0,pValor.length-(4*i+3))+'.'+ pValor.substring(pValor.length-(4*i+3));
	return (((sign)?'':'-') + 'R$ ' + pValor + ',' + cents);
}
function formatCurrency2(pValor)
{
	pValor = pValor.toString().replace(/\.|\./g,'');		//retira os pontos da string
	pValor = pValor.toString().replace(/\,|\,/g,'.');		//transforma virgula em ponto
	pValor = pValor.toString().replace(/\R\$|\ |\,/g,'');		//retira o R$ da string
	if(isNaN(pValor)) pValor = "0";					//se mesmo assim não numérico então o valor fica 0
	sign = (pValor == (pValor = Math.abs(pValor)));			//trabalha com o sinal de negativo
	pValor = Math.floor(pValor*100+0.50000000001);			//retira as casas decimais e faz arredondamento (meio porco)
	cents = pValor%100;						//separa os centavos
	pValor = Math.floor(pValor/100).toString();			//divide o valor por 100 para retirar casas decimais e tranf. em string
	if(cents<10) cents = "0" + cents;				//se centavos igual 1..9 então coloca 0 na frente
	for (var i = 0; i < Math.floor((pValor.length-(1+i))/3); i++)
		pValor = pValor.substring(0,pValor.length-(4*i+3))+'.'+ pValor.substring(pValor.length-(4*i+3));
	return (((sign)?'':'-') + pValor + ',' + cents);
}

//Mascara para CPF - no campo: onkeypress="return fnMascaraCPF(this, event);"
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006
function fnMascaraCPF(objeto, evt)
{
	return fnMascara(objeto, evt, '###.###.###-##');
}

//Mascara para CEP - no campo: onkeypress="return fnMascaraCEP(this, event);"
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006
function fnMascaraCEP(objeto, evt) 
{
	return fnMascara(objeto, evt, '#####-###');
}

//Mascara para Telefone - no campo: onkeypress="return fnMascaraTelefone(this, event);"
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006
function fnMascaraTelefone(objeto, evt)
{
	return fnMascara(objeto, evt, '(##) ####-####');
}

//Mascara para placa de carro - no campo: onkeypress="return fnMascaraPlacaCarro(this, event);"
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006
function fnMascaraPlacaCarro(objeto, evt)
{
	return fnMascara(objeto, evt, 'AAA-####');
}

//Mascara para Data - no campo: onkeypress="return fnMascaraData(this, event);"
//Responsavél: Marcelo Abib Cardoso
//Data: 10/02/2006
function fnMascaraData(objeto, evt)
{
	return fnMascara(objeto, evt, '##/##/####');
}