var mes, ano, dia, bisexto;
var aData, bData;
var mes_act, ano_act, dia_act;

aData = new Array (12);
aData = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];



function separaData(data)
{
	if( data.length != 10)
		return false;
	else
	{
		var data_ins, i;
		data_ins = data.split("/");
		if ( (data_ins.length > 3) || (data_ins.length < 0))
			return false;
		else
		{
			if(isNaN(data_ins[2]))
				return false;
			else
				ano = parseInt(data_ins[2]);
			if(isNaN(data_ins[1]))
				return false;
			else
				mes = parseFloat(data_ins[1]);
			if(isNaN(data_ins[0]))
				return false;
			else
				dia = parseFloat(data_ins[0]);
		}
	}
	return true;
}


function verificaAno()
{
	if ( (ano > ano_act) || (ano < 1900) )
	{
		return false;
	}
	else
		return true;
}

function verificaMes()
{
	if( ano == ano_act)
	{
		if( ( mes > mes_act) || (mes < 1) )
			return false;
		else
			return true;
	}
	else
	{
		if( (mes <= 12) && (mes > 0 ) )
			return true;
		else
			return false;
	}
}


function verificaDia()
{
	if ((ano % 4) == 0) 
	{
		if ((ano % 100) == 0 && (ano % 400) != 0)
			bisexto = false;
		else
			bisexto = true;
	} 
	else
		bisexto = false;
	
	if (dia < 1) return false;
			
	if( (mes == mes_act) && (ano == ano_act) )
	{
		if(dia > dia_act)
			return false;
	}
	else
	{
		switch(mes)
		{
			case 1: if( dia > aData[0]) return false;
					break;
			case 2: 
					if( bisexto == true )
					{
						if(dia > 29) return false;
					}
					else
						if( dia > aData[1])	return false;
					break;
			case 3: if( dia > aData[2] ) return false;
					break;
			case 4: if( dia > aData[3] ) return false;
					break;
			case 5: if( dia > aData[4] ) return false;
					break;
			case 6: if( dia > aData[5] ) return false;
					break;
			case 7: if( dia > aData[6] ) return false;
					break;
			case 8: if( dia > aData[7] ) return false;
					break;
			case 9: if( dia > aData[8] ) return false;
					break;
			case 10: if( dia > aData[9] ) return false;
					break;
			case 11: if( dia > aData[10]) return false;
					break;
			case 12: if( dia > aData[11]) return false;
					break;
			default: return false;
					break;
		}
	}
	return true;
}

function verificaData(data, data_serv)
{
	var mensagem;
	ano_act = parseFloat(data_serv.split("/")[2]);
	mes_act = parseFloat(data_serv.split("/")[1]);
	dia_act = parseFloat(data_serv.split("/")[0]);
	
	if(separaData(data))
	{
		if(verificaAno())
		{
			if(verificaMes())
			{
				if(verificaDia())
					mensagem = false;
				else
					mensagem = true;
			}
			else
				mensagem = true;
		}
		else
			mensagem = true;
	}
	else
		mensagem = true;
	
	if(mensagem == true)
		return false;
	else
		return true;
		
}

// ----------------- Se a data puder ser superior à data actual ---

function verificaAno2()
{
	if (ano < 1900)
		return false;
	else
		return true;
}

function verificaMes2()
{
	if( (mes <= 12) && (mes > 0 ) )
		return true;
	else
		return false;
}


function verificaDia2()
{
	
	if ((ano % 4) == 0) 
	{
		if ((ano % 100) == 0 && (ano % 400) != 0)
			bisexto = false;
		else
			bisexto = true;
	} 
	else
		bisexto = false;
	
	if (dia < 1) return false;
			
	switch(mes)
	{
		case 1: if( dia > aData[0]) return false;
				break;
		case 2: 
				if( bisexto == true )
				{
					if(dia > 29) return false;
				}
				else
					if( dia > aData[1])	return false;
				break;
		case 3: if( dia > aData[2] ) return false;
				break;
		case 4: if( dia > aData[3] ) return false;
				break;
		case 5: if( dia > aData[4] ) return false;
				break;
		case 6: if( dia > aData[5] ) return false;
				break;
		case 7: if( dia > aData[6] ) return false;
				break;
		case 8: if( dia > aData[7] ) return false;
				break;
		case 9: if( dia > aData[8] ) return false;
				break;
		case 10: if( dia > aData[9] ) return false;
				break;
		case 11: if( dia > aData[10]) return false;
				break;
		case 12: if( dia > aData[11]) return false;
				break;
		default: return false;
				break;
	}
	return true;
}

function verificaData2(data)
{
	var mensagem;
	
	if(separaData(data))
	{
		if(verificaAno2())
		{
			if(verificaMes2())
			{
				if(verificaDia2())
					mensagem = false;
				else
					mensagem = true;
			}
			else
				mensagem = true;
		}
		else
			mensagem = true;
	}
	else
		mensagem = true;
	
	if(mensagem == true)
		return false;
	else
		return true;
}



// ----------------- Se a data tiver que ser igual ou superior à data actual ---

function verificaAno3()
{
	if (ano < ano_act)
		return false;
	else
		return true;
}

function verificaMes3()
{
	if( ano == ano_act)
	{
		if( ( mes < mes_act) || (mes < 1) )
			return false;
		else
			return true;
	}
	else
	{
		if( (mes <= 12) && (mes > 0 ) )
			return true;
		else
			return false;
	}
}


function verificaDia3()
{
	if ((ano % 4) == 0) 
	{
		if ((ano % 100) == 0 && (ano % 400) != 0)
			bisexto = false;
		else
			bisexto = true;
	} 
	else
		bisexto = false;
	
	if (dia < 1) return false;
	
	if( (mes == mes_act) && (ano == ano_act) )
	{
		if(dia < dia_act)
			return false;
	}
	else
	{
		switch(mes)
		{
			case 1: if( dia > aData[0]) return false;
					break;
			case 2: 
					if( bisexto == true )
					{
						if(dia > 29) return false;
					}
					else
						if( dia > aData[1])	return false;
					break;
			case 3: if( dia > aData[2] ) return false;
					break;
			case 4: if( dia > aData[3] ) return false;
					break;
			case 5: if( dia > aData[4] ) return false;
					break;
			case 6: if( dia > aData[5] ) return false;
					break;
			case 7: if( dia > aData[6] ) return false;
					break;
			case 8: if( dia > aData[7] ) return false;
					break;
			case 9: if( dia > aData[8] ) return false;
					break;
			case 10: if( dia > aData[9] ) return false;
					break;
			case 11: if( dia > aData[10]) return false;
					break;
			case 12: if( dia > aData[11]) return false;
					break;
			default: return false;
					break;
		}
	}
	return true;
}

function verificaData3(data, data_serv)
{
	
	var mensagem;
	ano_act = parseFloat(data_serv.split("/")[2]);
	mes_act = parseFloat(data_serv.split("/")[1]);
	dia_act = parseFloat(data_serv.split("/")[0]);
	
	if(separaData(data))
	{
		if(verificaAno3())
		{
			if(verificaMes3())
			{
				if(verificaDia3())
					mensagem = false;
				else
					mensagem = true;
			}
			else
				mensagem = true;
		}
		else
			mensagem = true;
	}
	else
		mensagem = true;
	
	if(mensagem == true)
		return false;
	else
		return true;
}
