	/*Valida a data */
	function checkdate(d, m, y){
	var valid= true, isleap, maxday;
	
		if(testanobis(y))
			isleap= 1;
		else
			isleap= 0;
		
		maxday= ndiasmes(m);
		if(!maxday)
			valid= false;
		else{
			if(m==2)
				maxday+= isleap;
			
			if(d>maxday)
				valid= false;
		}
		
		return valid;
	}
	
	/*Verifica bissesto*/
	function testanobis(y){
		
		if(y%4) //Se nao e multiplo de quatro
			return 0;
		else
			return 1;
	}
	
	/*Numero o maximo de dias de um mes 
	Obs.: NAO CONSIDERA ANO BISSESTO*/
	function ndiasmes(m){
		if(m==1)
			return 31;
		else if(m==2)
			return 28;
		else if(m==3)
			return 31;
		else if(m==4)
			return 30;
		else if(m==5)
			return 31;
		else if(m==6)
			return 30;
		else if(m==7)
			return 31;
		else if(m==8)
			return 31;
		else if(m==9)
			return 30;
		else if(m==10)
			return 31;
		else if(m==11)
			return 30;
		else if(m==12)
			return 31
		else
			return 0;
	}
	
	/*Formata o ano para dois ou quatro digitos*/
	function setcentury(valyear, swcentury){
		var lenyear;
		lenyear= String(valyear).length;
		//se a formatacao esta correta nao faz nada
		if( (lenyear==4&&swcentury)||(lenyear==2&&!swcentury) )
			return valyear;
		else{ //se deve reduzir para dois digitos
			if(lenyear==4)
				return valyear.substring(2,4);
			else //se deve aumentar para quatro digitos
				if(valyear>10) // mostra 50->1950
					return (19+valyear);
				else
					if(valyear==10)
						return (20+valyear); //mostra 9->2009
					else
					/*Se for 0x fica 20 + 0x(2001), se nao, se for x fica 200 + x(2001)*/
						return (valyear.length==2?20+valyear:200+valyear);
		}
	}
	
	/*Verifica se um caracter é numérico*/
	function isdigit(ch){
		ch = String(ch);
		if(ch=="0")
			return true;
		else if(ch=="1")
			return true;
		else if(ch=="2")
			return true;
		else if(ch=="3")
			return true;
		else if(ch=="4")
			return true;
		else if(ch=="5")
			return true;
		else if(ch=="6")
			return true;
		else if(ch=="7")
			return true;
		else if(ch=="8")
			return true;
		else if(ch=="9")
			return true;
		else return false;
	}
		
	/*Formata um campo com valor data
	function formatdata([Obj input que contem valor da data], [caracter separador], [true->ano com 4 dig false->ano com dois dig]);*/
	function formatdata(obj, divisor, showcentury){
	var vday=0, vmonth, vyear, strdate=" ", count;
	
	if(divisor.length!=1)
		divisor= "/";
			
		if(obj.value==""){
		}
		else{
			strdate  = obj.value;
			vday     = strdate.substring(0,2);
			if(!isdigit(vday.substring(0,1)))
				vday= '0' + strdate.substring(1,2);
				
			if(!isdigit(vday.substring(1,2))){
				if(vday.substring(0,1)=='0')
					vday= '0' + '1';
				else
					vday= '0' + vday.substring(0,1);
			}
			strdate= vday + (strdate.substring(2,3)==divisor?"":divisor) + strdate.substring(2,strdate.length);
			
			
			/*recuperar mes apartir do primeiro digito invalido*/
			for(count=0;isdigit(strdate.substring(count,count+1));count++)
				;//comando vazio apenas para achar o ultimo digito valido

			count++;
			vmonth= strdate.substring(count,count + 2);
			
			if(!isdigit(strdate.substring(3,4)))
				vmonth= '0' + vmonth.substring(1,2);
				
			if(!isdigit(strdate.substring(4,5))){
				if(vmonth=='0')
					vmonth= "01";
				else
					vmonth= '0' + vmonth.substring(0,1);
			}
			
			/*Se o enésimo digito for um divisor, concatena dali ate o final, senao
			  Se nao for um divisor, concatena um divisor mais dali ate o final;*/
			strdate= vday + divisor + vmonth + (strdate.substring(5,6)==divisor?(""+strdate.substring(5,strdate.length)):(divisor+strdate.substring(5,strdate.length)) );
			
			for(count=strdate.length-1;isdigit(strdate.substring(count,count+1));count--)
				vyear= strdate.substring(count,strdate.length);
						
			vyear    = setcentury(vyear, showcentury);
			
			obj.value= vday + divisor +
						 vmonth + divisor +
						 vyear;
			
			
		}
	}
	
	/*EXEMPLO DE CHAMADA DE FUNCOES
	Na saída do campo data dispara codigos de validacao
	function nascimento_onblur(){
	var dd, mm, aaaa, strdata;
		if(document.frm.nascimento.value!=""){
			//Formata campo data
			//function formatdata([Obj input que contem valor da data], [caracter separador], [true->ano com 4 dig false->ano com dois dig]);
			formatdata(document.frm.nascimento, '/', true);
		
			strdata= document.frm.nascimento.value;
		
			dd  = strdata.substring(0,2);
			mm  = strdata.substring(3,5);
			aaaa= strdata.substring(6,10);
		
			if( !checkdate(dd, mm, aaaa) ){
				window.alert("Data inválida!");
				document.frm.nascimento.focus();
			} //if( !checkdate(dd, mm, aaaa) ){
		} //if(document.frm.nascimento.value==""){
	}


*/