	
	// Setar o evento
	function SetarMascara(elemento, Tipo)
	{
		// Filtra navegadores conhecidos
		var s = QualNavegador();
		if (s.length == 0 || ((s == "IE") && (QualVersao() < 6)) || ((s == "NE") && (QualVersao() < 5)))
		{
			return;
		}
	
		if (elemento.onkeypress == null)
		{
			elemento.tipo = Tipo;
			elemento.onkeypress = VerificaTecla;
		}
/*		if (elemento.onkeyup == null)
		{
			elemento.tipo = Tipo;
			elemento.onkeypress = VerificaDigitado;
		}*/

//		elemento.className = "input-sel";
		
//		alert(elemento.onfocus);
	}
	
	function VerificarMascara(elemento, tipo)
	{
		if (elemento.value)
		{
			var valor = elemento.value;
			var result = "";
//alert(valor);
			for (var i = 0; i < valor.length; i++)
			{
				if (TeclaPermitida(valor.charCodeAt(i), elemento))
				{
					result += valor.charAt(i);
				}
			}

//alert(result);
			elemento.value = result;
		}
	}
	
	function VerificaTecla(evnt)
	{
		var tecla;
		var ret = true;
	
		tecla = ( (QualNavegador()=="IE") ? event.keyCode : evnt.which);
	
		// Sï¿?aceita teclas alfanumï¿?icas. Nï¿? aceita teclas de controle
		if (tecla < 32)
			return true;
	
		return TeclaPermitida(tecla, this, true);
	}
	
	function TeclaPermitida(tecla, elemento, digitando)
	{
		var tipo = elemento.tipo;
		var ret = true;
		switch (tipo)
		{
			case "___tel"://telefone
				ret = (tecla >= 48 && tecla <= 57 );
				if (digitando)
				{
					ret = formatar_valor_mascara(tecla,elemento,"(##)####-####");
				}
				else
				{
					ret = ret || (String.fromCharCode(tecla) == '(' || String.fromCharCode(tecla) == ')' || String.fromCharCode(tecla) == '-');
				}
			break;
			case "___cpf"://cpf
				ret = (tecla >= 48 && tecla <= 57 );
				if (digitando)
				{
					ret = formatar_valor_mascara(tecla,elemento,"###.###.###-##");
				}
				else
				{
					ret = ret || (String.fromCharCode(tecla) == '.' || String.fromCharCode(tecla) == '-');
				}
			break;
	
			case "___cep"://CEP
			case "___cpc"://CEP Correios
				ret = (tecla >= 48 && tecla <= 57 );
				if (digitando)
				{
					ret = formatar_valor_mascara(tecla,elemento,"##.###-###");
				}
				else
				{
					ret = ret || (String.fromCharCode(tecla) == '.' || String.fromCharCode(tecla) == '-');
				}
			break;

			case "___cnj"://CNPJ
				ret = (tecla >= 48 && tecla <= 57 );
				if (digitando)
				{
					ret = formatar_valor_mascara(tecla,elemento,"##.###.###/####-##");
				}
				else
				{
					ret = ret || (String.fromCharCode(tecla) == '.' || String.fromCharCode(tecla) == '-');
				}
			break;
	
			case "___hms"://hora minuto segundo
			case "___dth"://data hora
			case "___hmi"://hora minuto
			case "___dta"://data
				ret = (tecla >= 48 && tecla <= 57 );
			break;
	
			case "___inp":
				if (tecla == 45)
				{
					ret = false;
					break;
				}
			case "___inm":
			case "___num":
			case "___int": // Digitos e menos(-)
				ret = (tecla >= 48 && tecla <= 57 ) || (tecla == 45 && elemento.value.search("-") < 0);
			break;
	
			case "___edt"://editor
			case "___txt"://textarea
			case "___str": // Texto
			break;
	
			case "___psw": // senha
				if ((tecla > 96) && (tecla < 123)) //transformando para maiusculo, 97 = a && 122 = z
					tecla = tecla - 32;
					
				if(!((tecla > 47 && tecla < 58) || ((tecla > 64) && (tecla < 91))) && (tecla != 32)) // Valido p/ numeros e letras
				{
					alert("Este campo só pode ser preenchido com números e letras.");
					ret = false;
				}
			break;
	
			case "___rea"://real
				ret = (tecla >= 48 && tecla <= 57 ) || (tecla == 44) || (tecla == 45) || (tecla == 46);//Digito , - .
			break;
	
			case "___ckb"://checkbox
			case "___rad"://radio
			case "___vet"://vetor
			case "___cor"://cor
			break;
		}
		return ret;
	}




	function formatar_valor_mascara(tecla,elemento, mascara)
	{
		if(tecla > 47 && tecla < 58) //numeros
		{
			var i = elemento.value.length; 
			var saida = mascara.substring(0,1); 
			var texto = mascara.substring(i);
			
			if(texto.substring(0,1) != "#") 
			{ 
				elemento.value += texto.substring(0,1); 
			}

			if (mascara.substring(0,1) != "#" && elemento.value.substring(0,1) != mascara.substring(0,1))
			{
				elemento.value = mascara.substring(0,1)+elemento.value; 
			}
			
			return true; 
		}
		else 
		{ 
			if(tecla != 8) 
			{ 
				return false; 
			}
			else 
			{ 
				return true; 
			}
		}
	}
	
	function VerificaDigitado(evnt)
	{
		switch (this.tipo)
		{
			case "___inm":
				formata_inteiro(this);
			break;
		}
	}


	function format_inteiro(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
		num = "0";	
	
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);

		num = Math.floor(num/100).toString();
	
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
		var ret = (((sign)?'':'-')+num);
		return ret;
	}
	
	function unformat_inteiro(num) 
	{
		num = num.replace(/\$|\./g,'');
		num = num.replace(/\$|\,/g,'');
		return num;
	}
	

	function format_real(num, casas_decimais) 
	{
		var fator_casa = 0;
	
		if (casas_decimais == "undefined" || isNaN(casas_decimais))
		{
			if (PRECISAO_CASAS_DECIMAIS)
			{
				casas_decimais = PRECISAO_CASAS_DECIMAIS;
			}
			else
			{
				casas_decimais = 2;
			}
		}
		if (casas_decimais > 0)
		{
			fator_casa = 1;
			for (var i = 0; i < casas_decimais; i++)
			{
				fator_casa = fator_casa*10;
			}
		}
	
	
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
			num = "0";	
	
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*fator_casa+0.50000000001);
	
		cents = num%fator_casa;

		num = Math.floor(num/fator_casa).toString();

		var s = cents+"";
		if(s.length < casas_decimais)
		{
			for (var i = 0; i < casas_decimais-s.length; i++)
			{
				cents = "0" + cents;
			}
		}
	
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
		return (((sign)?'':'-')+num + ',' + cents);
	}
	
	function unformat_real(num) 
	{
		num = num.replace(/\$|\./g,'');
		num = num.replace(/\$|\,/g,'.');
		return num;
	}

	function filtraCampo(campo){
		var s = "";
		var cp = "";
		vr = campo.value;
		tam = vr.length;
		for (i = 0; i < tam ; i++) {  
			if (vr.substring(i,i + 1) != "/" && vr.substring(i,i + 1) != "-" && vr.substring(i,i + 1) != "."  && vr.substring(i,i + 1) != "," ){
			 	s = s + vr.substring(i,i + 1);}
		}
		campo.value = s;
		return cp = campo.value
	}	