// JavaScript Document - Funcao que valida a data com expressão regular
//validaData(data)
function validaData(data){
	var array_data = new Array;
	var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");

	//vetor que contem o dia o mes e o ano
	array_data = data.split("/");

	//Valido se a data esta no formato dd/mm/yyyy e se o dia tem 2 digitos e esta entre 01 e 31

	//Se o mes tem 2 digitos e esta entre 01 e 12 e se o ano tem 4 digitos e esta entre 1000 e 2999
	if(data.search(ExpReg) == -1){
		return false;

	//Valido os meses que nao tem 31 dias com execao de fevereiro
	}else if(((array_data[1] == 4) || (array_data[1] == 6) || (array_data[1] == 9) || (array_data[1] == 11)) && (array_data[0] > 30)){
		return false;

	//Valido o mes de fevereiro
	}else if(array_data[1] == 2){
		//Valido ano que nao e bissexto
		if((array_data[0] > 28) && ((array_data[2] % 4) != 0)) return false;

		//Valido ano bissexto
		if((array_data[0] > 29) && ((array_data[2] % 4) == 0)) return false;
	}

	return true;
}


function isValidData(vfield, vfieldName)
{
var diaStr, mesStr, anoStr
var diaInt, mesInt, anoInt
var tam, sep1, sep2, verAno

tam = vfield.value.length;
	
if(vfield.value.length == 0)
 {
  return false;
 }	

sep1 = parseInt(vfield.value.indexOf("/", 0));

	
		
if (sep1<0)
{
alert("A Data digitada deve ter o seguinte formato: DD/MM/AAAA !");
vfield.value='';
vfield.focus();
return false;
}

sep2 = parseInt(vfield.value.indexOf("/", sep1+1))

if (sep2<5)
{
alert("A Data digitada deve ter o seguinte formato: DD/MM/AAAA !");
vfield.value='';
vfield.focus();
return false;
}

verAno = tam-sep2;

if(verAno < 5 )
{
alert("As datas devem ser preenchidas utilizando 4 dígitos para informar o Ano (ex.: DD/MM/AAAA)!");
vfield.value='';
vfield.focus();
return false;
}

diaStr = vfield.value.substring(0, sep1);

if(diaStr.substring(0, 1) == "0")
diaStr = diaStr.substring(1, 2);

	if (isValidNumberValue(diaStr, vfieldName))
	{
	mesStr = vfield.value.substring(sep1+1, sep2); 
	
		if(mesStr.substring(0, 1) == "0")
		mesStr = mesStr.substring(1, 2);
		
		if (isValidNumberValue(mesStr, vfieldName))
		{
		anoStr = vfield.value.substring(sep2+1, tam);
		
		if (isValidNumberValue(anoStr, vfieldName))
		{
		diaInt = parseInt(diaStr);
		mesInt = parseInt(mesStr);
		anoInt = parseInt(anoStr);
			
			if(anoInt <= 1900)
				{
				alert('O ano informado não é válido.\n Informe um ano superior a 1900.');
				vfield.value='';
				vfield.focus();
				return false;
				}
			
			if ((diaInt <= 0) || (diaInt > 31))
			{
			alert("O dia informado não é válido!");
			vfield.value='';
			vfield.focus();
			return false;
			}
			
			if ((mesInt <= 0) || (mesInt > 12))
			{
			alert("O mês informado não é válido!");
			vfield.value='';
			vfield.focus();
			return false;
			}
			
			if ((mesInt == 4) || (mesInt == 6) || (mesInt == 9) || (mesInt == 11))
			{
				if( diaInt > 30)
				{
				alert("O mês informado não possui mais de 30 dias!");
				vfield.value='';
				vfield.focus();
				return false;
				}
			}
			
			if (mesInt == 2)
			{
				if ((anoInt % 4 == 0) && ( (anoInt % 100 != 0) || (anoInt % 400 == 0)))
				{
					if (diaInt > 29)
					{
					alert("O mês informado não possui mais de 29 dias!");
					vfield.value='';
					vfield.focus();
					return false;
					}
				}
				else
				{
					if(diaInt > 28)
					{
					alert("O mês informado não possui mais de 28 dias!");
					vfield.value='';
					vfield.focus();
					return false;
					}
				}
				return true;
			} 
			return true;
			}
						
		else
		return false;
	}
	else
	return false;
}
else
return false;
}


function isValidNumberValue (objTextControl, strFieldName) 
{
var strValidNumber = "1234567890";

for (nCount=0; nCount < objTextControl.length; nCount++) 
{
strTempChar=objTextControl.substring(nCount,nCount+1);
if ( strValidNumber.indexOf(strTempChar,0)==-1) 
{
alert("O campo " + strFieldName + " deve conter somente números!");
return false; 
}
} 

return true;
}