function checkdate(objName)
//checagem da data na tela de entrada 
{
	datefield = objName;
	var ret=chkdate(objName);
	
	if ( ret == 0)
	{
		return true;
	}
	else
	{
		datefield.select();
		var Msg="";
		switch (ret)
		{
			case 1:
				Msg=" A data não está em um dos seguintes formatos:\nDD/MM/AA ou DDMMAA ou DDMMAAAA. ";
				break;
			case 2:
				Msg=" Dia não é numérico";
				break;
			case 3:
				Msg=" Mês não é numérico";
				break;
			case 4:
				Msg=" Ano não é numérico";
				break;
			case 5:
				Msg=" Mes inválido";
				break;
			case 6:
				Msg=" Mês com 31 dias";
				break;
			case 7:
				Msg=" Mês com 30 dias";
				break;
			case 8:
				Msg=" Dia inválido";
				break;
			case 9:
				Msg=" Mês com 29 dias";
				break;
			case 10:
				Msg=" Mês com 28 dias";
				break;
			case 11:
				Msg=" O Ano só aceita dois ou Quatro Digitos !";
				break;
			case 12:
				Msg=" A data deve conter apenas caracteres númericos.";     
				break;
		}
	}
	alert("Data Inválida." + Msg + " Tente Novamente.");
	datefield.value = datefield.defaultValue;
	return false;
}

//********************************************************************************//

function chkdate(objName)
{
	var strData;
	var strDataAux;
	var strDataArray;
	var strDia;
	var strMes;
	var strAno;
	var intDia;
	var intMes;
	var intAno;

	var SepEncontrado = false;
	var datefield = objName;
	var strSeparadorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;

	var strMesArray = new Array(12);
	strMesArray[0] = "Jan";
	strMesArray[1] = "Fev";
	strMesArray[2] = "Mar";
	strMesArray[3] = "Abr";
	strMesArray[4] = "Mai";
	strMesArray[5] = "Jun";
	strMesArray[6] = "Jul";
	strMesArray[7] = "Ago";
	strMesArray[8] = "Set";
	strMesArray[9] = "Out";
	strMesArray[10] = "Nov";
	strMesArray[11] = "Dez";

	strData = datefield.value;
	strDataAux = datefield.value;
	//alert("strData: " + strData);

	if (strData.length < 1)
	{
		return 0; //campo vazio
	}
	for (intElementNr = 0; intElementNr < strSeparadorArray.length; intElementNr++)
	{
		if (strData.indexOf(strSeparadorArray[intElementNr]) != -1)
		{
			strDataArray = strData.split(strSeparadorArray[intElementNr]);

			if (strDataArray.length != 3) //quebra a string em tres blocos: mes, dia e ano
			{
				err = 1; //A data não está no formato DD/MM/AAAA
				return err;
			}
			else
			{
				strDia = strDataArray[0];
				strMes = strDataArray[1];
				strAno = strDataArray[2];
				strDataAux = strDia + strMes + strAno;
				//alert("Dia:" + strDia + " Mes:" + strMes +" Ano:" + strAno);
			}
			SepEncontrado = true; //encontrou separador
		}
	}

	if (SepEncontrado == false) //se não encontrou o separador
	{
		if (strData.length > 5)
		{
			strDia = strData.substr(0, 2);
			strMes = strData.substr(2, 2);
			strAno = strData.substr(4);
			strDataAux = strDia + strMes + strAno;
			//alert("Dia:" + strDia + " Mes:" + strMes +" Ano:" + strAno);
		}
		else
		{
			err=1;
			return err;
		}
	}

	//verifica se tem algum caracter nao numerico
	for (i=0; i < strDataAux.length; i++)
	{
		cod=strDataAux.charCodeAt(i);
		if (cod < 48 || cod > 57)
		{
			err = 12;
			return err;
		}
	}

	if (strAno.length == 2)
	{
		if (strAno >= 20)
			strAno = '19' + strAno;
		else
			strAno = '20' + strAno;
	}
	else if (strAno.length == 4)
	{
		if ((strAno.substr(0, 2) != 19) && (strAno.substr(0, 2) != 20))
		{
			if (strAno.substr(2, 2) >= 20)
				strAno = '19' + strAno.substr(2, 2);
			else
				strAno = '20' + strAno.substr(2, 2);
		}
		else if ((strAno.substr(0, 2) == 20) && (strAno.substr(2, 2) >= 20))
		{
			strAno = '19' + strAno.substr(2, 2);
		}
	}

	//verifica se o dia é numérico
	intDia = parseInt(strDia, 10);
	if (isNaN(intDia))
	{
		err = 2;//Dia não é numérico
		return err;
	}

	//verifica se o mês é numérico
	intMes = parseInt(strMes, 10);
	if (isNaN(intMes))
	{
		//se o mês não for numérico deve ser um dos que estão no array strMesArray
		for (i = 0; i <12; i++)
		{
			if (strMes.toUpperCase() == strMesArray[i].toUpperCase())
			{
				intMes = i+1;
				strMes = strMesArray[i];
				i = 12;
			}
		}
		if (isNaN(intMes))
		{
			err = 3; //Mês não é numérico
			return err;
		}
	}

	//verifica se o ano é númerico
	intAno = parseInt(strAno, 10);
	if (isNaN(intAno))
	{
		err = 4; //Ano não é numérico
		return err;
	}

	if (intMes > 12 || intMes < 1)
	{
		err = 5; //Mes inválido
		return err;
	}

	//meses que tem 31 dias
	if ((intMes == 1 || intMes == 3 || intMes == 5 || intMes == 7 || intMes == 8 || intMes == 10 || intMes == 12) && (intDia > 31 || intDia < 1))
	{
		err = 6; //nro de dias inválido para o mês correspondente
		return err;
	}

	//meses que tem 30 dias
	if ((intMes == 4 || intMes == 6 || intMes == 9 || intMes == 11) && (intDia > 30 || intDia < 1))
	{
		err = 7; //nro de dias inválido para o mês correspondente
		return err;
	}

	//se o mes for fevereiro
	if (intMes == 2)
	{
		if (intDia < 1)
		{
			err = 8; //dia inválido
			return err;
		}
		if (Bissexto(intAno) == true) //se for bissexto
		{
			if (intDia > 29)
			{
				err = 9; //nro de dias inválido para o mês correspondente
				return err;
			}
		}
		else
		{
			if (intDia > 28)
			{
				err = 10;
				return err;
			}
		}
	}

	if (intDia < 10)
	{
		if (intMes < 10)
			datefield.value = "0" + intDia + "/" + "0" + intMes + "/" + strAno;
		else
			datefield.value = "0" + intDia + "/" + intMes + "/" + strAno;
		if ((strAno.length < 4) || (strAno.length > 4))
		{
			err = 11;
			return err;
		}
	}
	else
	{
		if (intMes < 10)
			datefield.value = intDia + "/" + "0" + intMes + "/" + strAno;
		else
			datefield.value = intDia + "/" + intMes + "/" + strAno;
		if ((strAno.length < 4) || (strAno.length > 4))
		{
			err = 11;
			return err;
		}
	}
	return 0;
}

//********************************************************************************//

function Bissexto(intAno)
{
	if (intAno % 100 == 0)
	{
		if (intAno % 400 == 0)
		{
			return true;
		}
	}
	else
	{
		if ((intAno % 4) == 0)
		{
			return true;
		}
	}
	return false;
}