
function CriticaData( DataAtual, field, fieldName, obrig, MaiorqueAtual)
{
// Campo MaiorqueAtual
if ( MaiorqueAtual == null )
	MaiorqueAtual = false;

//  Campo de Preenchimento obrigatório
campo = Preenchido(field, obrig);

if (campo == false)
	{
    msg = "O campo " + fieldName + " é de preenchimento obrigatório.";
	error(field," " + msg);
	return false;
	}

//  Campo não pode ser igual a zeros
campo = CampoZero(field, false);
if (campo == false) 
	{
	msg = "O campo " + fieldName + " não pode ter valor igual a zeros.";
	error(field," " + msg);
	return false;
	}

//  Campo só pode ter números ou barra (/)

var checkOK  = "1234567890/ ";
var checkStr = field.value;
var onlynumber   = "";
for (i = 0;  i < checkStr.length;  i++)
	{
	ch = checkStr.charAt(i);
	if (ch != "/")
		{
	   onlynumber = onlynumber + ch;
		}   
	for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
			break;
	if (j == checkOK.length)
		{
   		msg = "O campo " + fieldName + " só pode ter números(1234567890) e/ou barra (/).";
   		error(field," " + msg);
		return false;
		break;
		}
	}
//  Verifica o tamanho do campo
if (onlynumber.length == 0 && obrig == false)
{
	return true;
}
else if (onlynumber.length != 8)
	{
   	msg = "O campo " + fieldName + " deve conter 8 dígitos.";
   	error(field," " + msg);
	return false;
	}

// Formata dia, mês e ano que foi digitado

var dia	= onlynumber.substring(0,2);
var mes	= onlynumber.substring(2,4);
var ano = onlynumber.substring(4,9);

// Verifica se o dia é inválido
if ((dia < 1) || (dia > 31))
	{ 
	error( field, "O campo " + fieldName + " está com o dia inválido." ); 
	return false ;   
	}

if ((dia > 29) && (mes == 02))
	{
	 error( field, "O campo " + fieldName + " contém dia ou mês inválido." ); 
     return false ;    	
    }
          
// Verifica se o mês é inválido

if ( (mes < 1) || (mes > 12) )
	{ 
	error( field, "O campo " + fieldName + " está com o mês inválido." ); 
	return false ;   
	}
	  
// Verifica se o ano é menor que 1500

if (ano < 1800)
	{ 
	error( field, "O campo " + fieldName + " está com o ano inválido." ); 
	return false ;   
	}

// Verifica se o ano digitado é maior que o ano corrente

Today   = DataAtual;
Day		= Today.substring(0,2);
Month	= Today.substring(3,5);
Year	= Today.substring(6,10);
if ( MaiorqueAtual == false )
{
	if (ano > Year)
	{
		error(field," O ano do campo " + fieldName + " não pode ser maior que o ano corrente.");
		return false;
	}
}

if ( (dia > 30) && ( (mes == "04") || (mes == "06") || (mes == "09") || (mes == "11") ) )
	{
	error( field, "O campo " + fieldName + " está com dia e mês incompatíveis." ); 
	return false ;   
  	}

// Verifica se é ano bissexto
if ( (dia == 29) && (mes == 02) )
{
    if (((ano % 4) != 0 || (ano % 100) == 0) && (ano % 400) != 0)     
  	 {
  	    error( field, "O campo " + fieldName + " contém dia/mês/ano incompatíveis." ); 
  	    return false;
  	 }
}        

// Verifica se a data digitada é maior que a atual
if ( MaiorqueAtual == false )
{
	if ( (ano + mes + dia) > (Year + Month + Day) )
	{
		error( field, "O campo " + fieldName + " contém data posterior à data corrente." ); 
  	    return false;
  	}
}

field.value = dia + "/" + mes + "/" + ano;
return true;

}


