function Valida_Data(campo)
{
	/********************************************************************/
	/*            se data OK, retorna TRUE, cc, retorna FALSE           */
	/********************************************************************/
   var valor = campo.value;

   if ( valor != '' ) {
      Mes   = new Array ("01","02","03","04","05","06","07","08","09","10","11","12");
      Dia   = new Array ("31","29","31","30","31","30","31","31","30","31","30","31");
      Data  = new Date();
      Barra1 = valor.indexOf("/");
      Barra2 = valor.lastIndexOf("/");
      DiaCampo = parseInt(valor.substring(0,Barra1),10);
      MesCampo = parseInt(valor.substring(Barra1 + 1,Barra2),10);
      AnoCampo = parseInt(valor.substring(Barra2 + 1,valor.length),10);

      if (isNaN(DiaCampo) || isNaN(MesCampo) || isNaN(AnoCampo)){
         alert('Data inválida. A data deve ter o formato dd/mm/aaaa');
         campo.focus();
         return false;	  
      }

      var Ano = parseInt(Data.getYear(),10);
      var AnoBissexto = 0;
   	var j = -1;
   	for (var i = 0; i <= 11; i++) {
         if (Mes[i] == parseInt(MesCampo,10)) { 
            j = i; 
         }
      }
      if (valor.length < 10) {
         alert('Data inválida. A data deve ter o formato dd/mm/aaaa');
         campo.focus();
         return false;
      }
      else { 
         if (AnoCampo < 1900) {
            alert('Data inválida.');
            campo.focus();
            return false;
         }
         else {
            if (j == -1) {
               alert ('Data inválida.');
               campo.focus();
               return false;
            }
            else {
               if ((parseInt(DiaCampo,10) < 1) || (parseInt(DiaCampo,10) > parseInt(Dia[j],10))) { 
                  alert ('Data inválida.');
                  campo.focus();
                  return false;
               }
               else {
                  if (AnoCampo % 4 == 0)
                     AnoBissexto = 1;
                     if (AnoBissexto != 1 && parseInt(DiaCampo,10) == 29 && parseInt(MesCampo,10) == 2) {
                        alert ('Data inválida. Ano não é bissexto!');
                        campo.focus();
                        return false;
                     }
                     else { 
                        return true; 
                     }
               }
	         }
	      }
	   }
   }
   else {
      return false; 
   }
}
