	var caracteresInt = '1234567890';
	var mascaraCep = '#####-###';
	var mascaraCpf = '###.###.###-##';
	var mascaraCnpj = '##.###.###/####-##';
	var mascaraData = '##/##/####';
	var mascaraHora = '##:##';

	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)||(ntecla == 46)) 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) {
	         /*
	        "#" - Numeros
	        "A" - Letras UpperCase
	        "a" - Letras LowerCase
	        "Z" - Letras
	        "*" - Qualquer Caracter
	        "/", ".", "-", " ", ":" - Caracteres Fixos
	         */ 
	       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 formataMascara(strFonte, strMascara, event) {
		var tecla;
		var i = strFonte.value.length;
		var strResult = strMascara.substring(0, 1);
		var strTexto = strMascara.substring(i)
			
		if(navigator.appName.indexOf("Netscape") != -1)
			tecla = event.which;
		else
			tecla = event.keyCode;
	
		if (tecla == 13 || tecla == 8)
			return false;
			
		if (strTexto.substring(0, 1) != strResult) {
			strFonte.value += strTexto.substring(0, 1);
		}
		return true;
	}

	/**
	 * Validacao de campos do tipo text no evento onkeypress
	 * campo --> Campo do form a ser validado, ex: document.formulario.Data.
	 * caracteres --> String com os caracteres permitidos para o campo, ex: 'abcdefgaijklmnopqrstuvxz'
	 * strMascara --> String com a mascara, ex: '###.###.###-##'  
	 * espacoDuplo --> bloqueia a entrada de 2 espacos entre as palavras: true ou false
	 * event
	 */
	function validaCampo(campo, caracteres, strMascara, espacoDuplo, event) {  
		var palavra = campo.value;
		var ultimaPalavra;
		
		if (navigator.appName.indexOf("Netscape") != -1) 
			tecla = event.which; 
		else 
			tecla = event.keyCode; 
		
		ultimaPalavra = (palavra.substring((campo.value.length - 1), campo.value.length));
		if(tecla == 32 && (ultimaPalavra == " " || ultimaPalavra.length == 0) && espacoDuplo)
			return false;	
		else {
			formataMascara(campo, strMascara, event);
			return (validaCaracteres(String.fromCharCode(tecla), caracteres) ||
																 tecla == 13 || //enter 
																 tecla == 8  || //backspace
																 tecla == 0);  //outras teclas
		}
	}
	
	function validaCaracteres(item, strValida) {	
		var auxStr;	
		for (var i = 0; i < item.length; i++)
		{
			auxStr = item.substring(i, (i + 1));
			lastWord = auxStr;		
			if (strValida.indexOf(auxStr) == -1)
			{
				return false;
			}
		}
		return true;
	}
	
	//Verifica se uma data é válida (fomato dd/mm/aaaa)
	function ValidaData(str) {
	
		var wd = new wData();
	
		if (str.length < 1)
			return true;
	
		if (str.length != 10) 
			return false;      
	
		for (i = 0; i < str.length; i++)
			if (str.charAt(i) == "/" ||
					(str.charAt(i) >= "0" &&
					 str.charAt(i) <= "9"))
				continue;
			else
				return false;
	
		if (str.charAt(2) != "/" ||
		    str.charAt(5) != "/")
			return false;
	
		wd.dia = str.substring(0,2);
		wd.mes = str.substring(3,5);
		wd.ano = str.substring(6,10);
			
		if (wd.ano < 1900)
			return false;
			
		if (wd.dia < 1 || wd.dia > 31)
			return false;
	
		if (wd.mes < 1 || wd.mes > 12)
			return false;
	
		if (wd.mes == 4 || wd.mes == 6 ||
			wd.mes == 9 || wd.mes == 11)
			if (wd.dia > 30)
				return false;
			else
				return true;
	
		if (wd.mes == 2)
			if (wd.dia > 29)
				return false;
			else
				if (wd.dia == 29)
					if (Bissexto(wd.ano))
						return true;
					else
						return false;
	
		return true;
	}
	
	function wData() {
		this.dia = 0;
		this.mes = 0;
		this.ano = 0;
	}
