function validaTecla(campo, event)
{
	var BACKSPACE= 8;
	var key;
	var tecla;

	CheckTAB=true;
	
	if(navigator.appName.indexOf('Netscape')!= -1)
	{ 
		tecla= event.which;
	}
	else
	{
		tecla=event.keyCode;
		key = String.fromCharCode(tecla);
		//alert( 'key: ' + tecla + ' -> campo: ' + campo.value);
	}

	if ( tecla == 13 )
	{
		return false;
	}
	 
	if (( campo.value.length > 5 ) && ( campo.name == 'Pesquisar' ))
	{
		return false;
	} 
	 
	if ( tecla == BACKSPACE )
	{
		return true;
	}
	 
	return (isNum(key));
}

function maskEvent(field, _mask, event, tipo_campo) {
	var key ='';
	var aux='';
	var len=0;
	var i=0;
	var strCheck = '0123456789';
	var rcode = (window.Event) ? event.which : event.keyCode;
	if(rcode == 13)  {
		//Enter
		return true;
	}
	
	//Get key value from key code
	key=String.fromCharCode(rcode);
	
    
	if((tipo_campo=='cgc') && (field.value.length > 17))
	{
		return false;	
	}
	
	if((tipo_campo=='cep') && (field.value.length > 8) )
	{
		return false;	
	}
	
	if((field.value.length > 14) && (tipo_campo == 'inscricao_estadual'))
	{
		return false;	
	}
	
	if((field.value.length > 13) && (tipo_campo == 'cic'))
	{
		return false;	
	}
	
	if ((tipo_campo == 'moeda') && (field.value.length > 13) ) {
		return false;  // Enter
	}
	
	if(strCheck.indexOf(key)==-1) {
		//Not a valid key
		return false;
	}
	
	
	aux=field.value+key;
	//window.alert(aux);
	aux=mask(_mask,aux);
	//window.alert(aux);
	field.value=aux;	
	return false;
}

function currencyFormat(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) {
		return true;  // Enter
	}
	
	if ((fld.value.length > 13)) {
		return false;  
	}
	
	key = String.fromCharCode(whichCode);  // Get key value from key code
	if (strCheck.indexOf(key) == -1) {
		return false;  // Not a valid key
	}
	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 = '';
	} else if (len == 1) {
		fld.value = '0'+ decSep + '0' + aux;
	} else if (len == 2) {
		fld.value = '0'+ decSep + aux;
	} else 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;
}

/*
 * formatar_mascara ( string src, string mask)
 * 
 *  @detalhe	  função que constroi máscara para cpf, cnpj ou o que você quizer 
 *  @observação   você neessita apresentar o modelo de máscara como argumento:
 *                   Exemplos:
 *                   CEP
 *                   OnKeyPress="formatar(this, '#####-###')"
 *                   CPF
 *                   OnKeyPress="formatar(this, '###.###.###-##')"
 *                   DATA
 *                   OnKeyPress="formatar(this, '##/##/####')" 
 *	@autor        Tiago Takamoto 
 *  @parametro    src => string( campo preenchido do formulário)  
 *  @parametro    mask => string( máscara editada manualmente para comparação)
 *  @retorno      Usando Onkeypress ele cria a máscara ao mesmo tempo que o campo é preenchido
 *  @data         23 de janeiro de 2006
*/   
function formatar_mascara (src, mask) 
{
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i);
	if (texto.substring(0,1) != saida) 
  	{
		src.value += texto.substring(0,1);
  	}
}

/*
 * formatar_mascara2 ( string src, string mask, string campo, event)
 * 
 *  @detalhe	  função que constroi máscara para cpf, cnpj ou o que você quiser 
 *				  verificando quando a tecla backspace é precionada.
 *  @observação   você necessita apresentar o modelo de máscara como argumento:
 *                   Exemplos:
 *                   CEP
 *                   OnKeyPress="formatar(this, '#####-###')"
 *                   CPF
 *                   OnKeyPress="formatar(this, '###.###.###-##')"
 *                   DATA
 *                   OnKeyPress="formatar(this, '##/##/####')" 
 *	@autor        Victor de Abreu Iizuka, Marcos Cirne e Tiago Takamoto
 *  @parametro    src => string( campo preenchido do formulário)  
 *  @parametro    mask => string( máscara editada manualmente para comparação) 
 *  @parametro    evento => sempre receberá event
 *  @retorno      Usando Onkeypress ele cria a máscara ao mesmo tempo que o campo é preenchido
 *  @data         23 de janeiro de 2006
*/   
function formatar_mascara2 (src, mask, evento) 
{
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i);
	//IIZ: usa a função somente_numero() para pode pegar qual a última tecla pressionada
	
	//CIRNE: Pegando valor da tecla pressionada
	var backsp = somente_numero(src, evento);
	if (texto.substring(0,1) != saida) 
  	{
		//IIZ: verifica se a ultima tecla foi o backspace
		if (backsp != "true")
		{
			src.value += texto.substring(0,1);
		}
  	}
}
/*
 * is_number ( string text)
 * 
 *  @detalhe	  função que valida campo para saber se são apenas números
 *  @observação   Funciona apenas com Onkeypress e não com OnChange
 *	@autor        Tiago Takamoto 
 *  @parametro    text => string( campo preenchido do formulário)  
 *  @retorno      Usando Onkeypress ele não permite que o usuáio preencha o campo com caracteres que não sejam números
 *  @data         30 de janeiro de 2006
*/   
function is_number (text)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	for (i = 0; i < text.length && IsNumber == true; i++) 
    { 
   	   	Char = text.charAt(i); 
       	if (ValidChars.indexOf(Char) == -1) 
        {
    		IsNumber = false;
        }
    }
	return IsNumber;
}

/*
 * somente_numero ( string campo, event)
 * 
 *  @detalhe	  função que não deixa o usuário preencher o campo com uma tecla que não sejanúmeros
 *  @observação   Funciona atribuindo com onkeypress="return somente_numero(this, event)"
 *	@autor        Tiago Takamoto 
 *  @parametro    campo => string( campo preenchido do formulário)  
 *  @parametro    evento => sempre receberá event
 *  @retorno      Usando Onkeypress ele não permite que o usuáio preencha o campo com caracteres que não sejam números
 *  @data         2 de fevereiro de 2006
*/ 
function somente_numero(campo, evento)
{
	var tecla;
	CheckTAB=true;

	if(navigator.userAgent.indexOf("MSIE")== -1)
	{ 
		tecla = evento.which;

	}
	else
	{
		tecla = evento.keyCode;
	}
	
	//CIRNE: Criação de uma variável que verifica se a tecla backspace
	//		 foi pressionada ou não.
	var bool = "false";
	if ( tecla == 13 )
	{
		return false;
	}
	else if ( tecla == 8 || tecla == 0 || tecla == 6 )
	{
		//IIZ: arruma o problema do backspace
		
		if (tecla == 8)
		{
			//CIRNE: Backspace pressionada
			bool = "true";
		}
		return bool;
	}
	else if (is_number (String.fromCharCode (tecla)))
	{
		return true;
	}
	else
	{
		return false;
	}
}
