	function soNums(e,args){		
		if (document.all){var evt=event.keyCode;} // caso seja IE
		else{var evt = e.charCode;}	// do contrário deve ser Mozilla
		var valid_chars = '0123456789'+args;	// criando a lista de teclas permitidas
		var chr= String.fromCharCode(evt);	// pegando a tecla digitada
		if (valid_chars.indexOf(chr)>-1 ){return true;}	// se a tecla estiver na lista de permissão permite-a
		// para permitir teclas como <BACKSPACE> adicionamos uma permissão para 
		// códigos de tecla menores que 09 por exemplo (geralmente uso menores que 20)
		if (valid_chars.indexOf(chr)>-1 || evt < 9){return true;}	// se a tecla estiver na lista de permissão permite-a
		return false;	// do contrário nega
	}
	
	
	//FUN??O DE VALIDA??O DAS PARTES DA DATA NO MOMENTO EM QUE EST? SENDO DIGITADA  (DEVE SER USADA NAS FUN??ES OnKeyUp E OnKeyDown)
	function validata_onkeyupdown(obj, evnt){
		var data = obj;
		var tecla;
		var BACKSPACE = 8;
		var key;
		CheckTAB = true;
		
		//FAZ A VERIFICA??O DO NAVEGADOR UTILIZADO
		if(navigator.appName.indexOf("Netscape") != -1){
			tecla = evnt.which;
		}else{
			tecla = evnt.keyCode;
			key = String.fromCharCode(tecla);
		}
		
		if (tecla == 13){return false;}
		if (tecla == BACKSPACE){return true;}
		if (tecla == 46){return true;}
		//alert(data.value.length);
		
		if (((data.value.length != 2)&&(tecla == 47))&&((data.value.length != 5)&&(tecla == 47))){ // permite teclar '/'
		   return false;
		}
		
		if ((data.value.substring(0,2) > 31) || (data.value.substring(0,2) == '00')){
			alert('Dia Incorreto');
			data.value = '';
			return false;
		
		}else{
		
			if ((data.value.substring(3,5) > 12) || (data.value.substring(3,5) == '00')){
				alert('Mes Incorreto');
				data.value = data.value.substring(0,3);
				return false;
			}else{
				if (((data.value.substring(6,10).length > 3) && (data.value.substring(6,10) > 2033)) || ((data.value.substring(6,10).length > 3) && (data.value.substring(6,10) < 1920))){
					alert('Ano Incorreto');
					data.value = data.value.substring(0,6);
					data.focus(); 
					return false;
				}else{
					if ((data.value.length == 2) && (tecla != 47)){data.value += "/";}
					if ((data.value.length == 5) && (tecla != 47)){data.value += "/";}
				}
			}
		}
		if(!soNums(evnt,'/')){
			return false
		};
	}
	
	
	function FG_Bissexto(ano){
		var resto;
		if (ano == 0){return true;}
		
		resto = (ano % 400);
		if (resto == 0){return true;}
		
		resto = (ano % 100);
		if (resto == 0){return false;}
		
		resto = (ano % 4);
		if (resto == 0){return true;}
		
		return false;
	}
	
	//FUN??O QUE AUTO COMPLETA A DATA  (DEVE SER USADA NO OnBlur DO TEXT)
	function validata_Onblur(obj){
		var comp;
		
		comp = obj.value.substring(6,8);
		if ((comp > 20) && (comp < 100) && (obj.value.length == 8)){
			obj.value = obj.value.substring(0,6) + "19" + comp;
		}
		
		if ((comp < 20) && (obj.value.length == 8)){
			obj.value = obj.value.substring(0,6) + "20" + comp;
		}
		
		if ((obj.value.length < 10)&&(obj.value.length >0)){
			alert('Preencha a data no formato correto!\nFormato: dd/mm/aaaa.');;
			obj.value='';
			obj.focus();
			return (false);
		}
		return (true);
	}
	
	//FUN??O PARA VALIDA??O DE DATA
	function TestaData(obj){
		strdata = obj.value;
		
		if ((strdata.length < 10) || (strdata.substring(2,3) != '/') || (strdata.substring(5,6) != '/')){
			if (!FG_ValData(strdata))
			{
				alert('Preencha a data no formato correto!\nFormato: dd/mm/aaaa.');
				return (false);
			}
		}
		return (true);
	}
	
	//FUN??O QUE VERIFICA SE A DATA DIGITADA ? V?LIDA
	function FG_ValData(SData){
		var Sano;
		var Smes;
		var Sdia;
		SData = FG_TiraBrancosData(SData);
		
		if (!(SData.length == 10)){
			return (false);
		};
		
		Sdia = SData.substring(0,2);
		
		if (isNaN(Sdia)){
			return(false);
		};
		
		Sdia = parseInt(Sdia,10);
		Smes = SData.substring(3,5);
		if (isNaN(Smes)){
			return(false);
		};
		
		Smes = parseInt(Smes,10);
		Sano = SData.substring(6,10);
		if (isNaN(Sano)){
			return(false);
		};
		
		Sano = parseInt(Sano,10);
		if ((Sano > 2079) || (Sano < 1900)){
			return (false);
		};
		if ((Sdia < 1) || (Sdia > 31)){
			return (false);
		};
		if ((Smes < 1) || (Smes > 12)){
			return (false);
		};
		if (((Smes == 4) || (Smes == 6) || (Smes == 9) || (Smes == 11)) && (Sdia > 30) ){
			return (false);
		};
		if ((Smes == 2) && (Sdia > 29)){
			return (false);
		};
		if ((Smes == 2) && (Sdia == 29) && !(FG_Bissexto(Sano))){
			return (false);
		};
		return (true);
	}
	
	//FUN??O PARA RETIRAR OS ESPA?OS EM BRANCO DA DATA
	function FG_TiraBrancosData(Texto){
		i = 0;
		auxiliar = "";
		
		while (i < Texto.length){
			if (Texto.charAt(i) == " "){
				auxiliar = auxiliar + "";
			}else{
				auxiliar = auxiliar + Texto.charAt(i);
			}
			i++;
		}
		return auxiliar;
	}
	
	//FUN??O PARA VERIFICAR SE O ANO DIGITADO ? BISSEXTO
	function FG_Bissexto(ano){
		var resto;
		if (ano == 0){
			return(true);
		}
		
		resto = (ano % 400);
		
		if (resto == 0){
			return (true);
		}
		
		resto = (ano % 100);
		
		if (resto == 0){
			return (false);
		}
		
		resto = (ano % 4);
		if (resto == 0){
			return (true);
		}
		
		return (false);
	}