//*****************************************************************************
//Objetivo:					Encapsular funcionalidades do Calendário utilizado
//Autor:					-
//Data:						-
//Autor:					Alan A. Oliveira (Vertente)
//Data Ultima alteração:	25/11/2003
//Motivo:					Padronização de código
//Autor:					Liana C. M. de Almeida (7COMm)
//Data Ultima alteração:	01/12/2003
//Motivo:					Padronização de código e manutenções em algumas funções
//Autor:					Leandro Reis
//Data Ultima alteração:	31/08/2006
//Motivo:					Ajustes de validação e Padronização de código
//*****************************************************************************

//*****************************************************************************
// DECLARAÇÃO DAS VARIÁVEIS
//*****************************************************************************


//Variáveis Globais
var gArrMeses = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"); //Array com os meses do ano
var gdtmHoy = new Date(); 							//variável data utilizada para cálculo
var gobjCampoData; 								//objeto com o nome do calendário
var gintYearLow = 1990;								//ano mínimo
var garrDaysMonth = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);	//array com os dias do mês
var garrDiasPorMes=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];		//array com os dias do mês
var gintLeft = 0; 								//Medida Left							
var gintTop = 0; 								//medida Top
var gintDiaSelecionado= ""+gintDiaSelecionado;					//dia selecionado
var gintLeftCalendario="0";							// Medida Left do calendário
var gintTopCalendario="0";							// Medida Top do calendário
var gdtmFechaReal;								//data de fechamento real

//adaptacao para agencia de noticia
var intQuantDias = 365 								// define quantidade de dias aptos para busca
var gdtmDataAtual = new Date() 							//recebe a data atual
var glngDiaMilessecouds = 1000*60*60*24*intQuantDias 					// recebe a quantidade de milessegundos
var gdtmDataInicio=new Date(gdtmDataAtual - glngDiaMilessecouds) 				// recebe a data inicio


//*****************************************************************************
//Objetivo:	Limpa Options
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function limpa_option(){
	frmCalendario.periodo[0].checked=false
	frmCalendario.periodo[1].checked=false
	frmCalendario.periodo[2].checked=false
}
   
//*****************************************************************************
//Objetivo:	Chama a função que mostra o calendário
//Entradas:	objInput - objeto calendário
//			intLeft - medida da lateral esquerda
//			intTop - medida do topo
//Saída:	Nenhuma
//*****************************************************************************
function Calendario(objInput,intLeft ,intTop)
{
	if (typeof(objInput) == "object")
	{
		 gobjCampoData = objInput;
         if (intLeft!=null)
         {
			gintLeftCalendario=intLeft;
			gintTopCalendario=intTop;
         }
         else
         {
			intLeftCalendario="";
			gintTopCalendario="";
         }
		if (calendario.style.visibility=="visible")
		{
			cerrarCalendario();
			EscondeElementos(calendario);
  			return;
		}
		abrirCalendario('');
		EscondeElementos(calendario);
	}
	else
	{
		alert("Campo Data não informado!");
		return(false);
	}
	
}

//*****************************************************************************
//Objetivo:	Mostrar calendário
//Entradas:	strParam: "" - deve mostrar a data informada no campo
//Saída:	Nenhuma
//*****************************************************************************

function abrirCalendario(strParam)
{
	var strCal="";						//string que contém o div
	var intAuxAno;						//ano
	var intAuxMes;						//mês
	var intAuxDia;						//dia
	var strFechaSeleccionada;				//string de fechamento da data selecionada
	var intNDias;						//número de dias
	var dtmPrimerDia;					//data do primeiro dia
	var intCont;						//contador
	var intColumna;						//número da coluna
	var strEstilo;						//estilo
	var intMesSelecionado;					//mês selecionado
	var dtmEsteDia = gdtmHoy.getDate();			//dia atual
	var dtmCampoData = new Date(gobjCampoData.value.substring(gobjCampoData.value.lastIndexOf('/')+1,gobjCampoData.value.length), gobjCampoData.value.substring(gobjCampoData.value.indexOf('/')+1,gobjCampoData.value.lastIndexOf('/'))-1, gobjCampoData.value.substring(0,gobjCampoData.value.indexOf('/'))); //Data do campo
	var strFechaInputSelecionada;				//data inserida quando calendario fechado
	var strFechaSelecionada;				//data selecionada quando calendario fechado
	var strMesSelecionado;					//Mes selecionado quando calendario fechado
	  	
	//Inicializa a variável do tipo data
	gdtmFechaReal = new Date();
	
	// Verifica se o ano é maior que 1999 ou se não foi informada uma data	
	if ( gobjCampoData.value.substring(gobjCampoData.value.lastIndexOf('/')+1,gobjCampoData.value.length)>1909 || gobjCampoData.value=="")
	{
		//Verifica se é para mostrar o calendário apenas

		if(strParam == "")
		{
			//Se o campo estiver vazio ou a data for 31/12/9999, mostra a data atual
			if((gobjCampoData.value=="") || (gobjCampoData.value=="31/12/9999") || (dtmCampoData < gdtmDataInicio) || (dtmCampoData > gdtmDataAtual))
			{
				intAuxAno = gdtmFechaReal.getFullYear();
				intAuxMes = gdtmFechaReal.getMonth();
				intAuxDia = "";

			}
			//Senão, pega a data que estiver no campo
			else
			{	
				intAuxDia = gobjCampoData.value.substring(0,gobjCampoData.value.indexOf('/'));
				intAuxMes = gobjCampoData.value.substring(gobjCampoData.value.indexOf('/')+1,gobjCampoData.value.lastIndexOf('/'))-1;
				intAuxAno = gobjCampoData.value.substring(gobjCampoData.value.lastIndexOf('/')+1,gobjCampoData.value.length);				
			}




			//Seta a variável gdtmHoy com as datas obtidas
			if(intAuxDia != "")
			{
				gdtmHoy.setDate(intAuxDia);
			}
			gdtmHoy.setMonth(intAuxMes);
			gdtmHoy.setYear(intAuxAno);
		}
		//Caso contrário, pega o mês e o ano da gdtmHoy
		else
		{
			intAuxAno = gdtmHoy.getFullYear();
			intAuxMes = gdtmHoy.getMonth();
			//Se a data do campo for diferente de vazio ou igual a 31/12/9999, pega a data da gdtmHoy
			if(gobjCampoData.value!="" && gobjCampoData.value!="31/12/9999") 
				intAuxDia = gdtmHoy.getDate();
			//Caso contrário o dia vai ficar vazio
			else
				intAuxDia = "";
		}

		 //Caso o ano seja ValidaBissexto, seta o mês de fevereiro com 29 dias
		 if (((intAuxAno % 4 == 0) && (intAuxAno % 100 != 0)) || (intAuxAno % 400 == 0))
		 {
		   garrDiasPorMes[1] = 29;
		 }
		 else
		 {
		   garrDiasPorMes[1] = 28;		 
		 }
		   
		 // Guarda o número total de dias do mês a ser apresentado na variável intNDias
		 intNDias = garrDiasPorMes[intAuxMes];
		 
		 //Caso o dia fornecido seja maior que o dia limite do mês, não mostra o calendário
		if(intAuxDia > intNDias)
		 {
			alert("Data inválida.");
			return;
		 }
		 
		 // Calculo do primeiro dia da semana do mês
		 dtmPrimerDia = gdtmHoy;
		 dtmPrimerDia.setDate(1);
		 strDiaSemIni=dtmPrimerDia.getDay();

		// Determinação da tabela com o mês

		  strCal="<div id='calendario' style='position:absolute; VISIBILITY: hidden;z-index=28;left:"+gintLeftCalendario+";top:"+gintTopCalendario+"'>"
		  strCal=strCal+"<CENTER>"
		  strCal=strCal+"<TABLE BORDER=0 cellspacing=0 cellpadding=1 bgcolor=000000>"
		  strCal=strCal+"<tr><td>"
		  strCal=strCal+"<TABLE BORDER=0 cellspacing=0 cellpadding=0 bgcolor=FFFFFF>"
		  strCal=strCal+"<TR bgcolor=CC0000 class=B>"


	// Se a data for janeiro de 1910 não mostra a seta para voltar pra trás
	if (gdtmHoy.getMonth() == gdtmDataInicio.getMonth() && gdtmHoy.getFullYear() == gdtmDataInicio.getFullYear())
	{
	strCal=strCal+"<TD align=left width=20>&nbsp;"
	}
	else
	{
	strCal=strCal+"<TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAtras(gobjCampoData)'><img src='imagens/pic012.gif' border=0 ></a>"
	}
			
	strCal=strCal+"</TD>"
	strCal=strCal+'<td COLSPAN=5 align=center>'+gArrMeses[intAuxMes]
	strCal=strCal+ " "
	strCal=strCal + intAuxAno


	if (gdtmHoy.getMonth() == gdtmDataAtual.getMonth() && gdtmHoy.getFullYear() == gdtmDataAtual.getFullYear())
	{
	strCal=strCal+"<TD align=left width=20>&nbsp;"
	}
	else
	{
	strCal=strCal+"<TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAdiante(gobjCampoData)'><img src='imagens/pic013.gif' border=0 ></a>"
	}
	strCal=strCal+"</TD></TR>"
	strCal=strCal+"<tr><td colspan=7 bgcolor=000000><img src='images/t.gif' height=1 border=0></td></tr>"
			
	//dias da semana
	strCal=strCal+"<TR class=B344 bgcolor=FFFFFF><td align=center>D<td align=center>S<td align=center>T<td align=center>Q<td align=center>Q<td align=center>S<td align=center>S</TR>"

	strCal=strCal+"<tr><td colspan=7 bgcolor=000000><img src='images/t.gif' height=1 border=0></td></tr>"

	// Determinação dos espaços em branco
	strCal=strCal+"<TR>"
	intColumna=0;
	for (intCont=0; intCont<strDiaSemIni; intCont++)
	{
	  strCal=strCal+"<TD>"
	  intColumna++;
	  strCal=strCal+"</TD>"
	}

	// Determinação dos dias do mês
		strFechaInputSelecionada = gobjCampoData.value.substring(gobjCampoData.value.indexOf('/'),gobjCampoData.value.lenght);
		if((gdtmHoy.getMonth()+1) > 9)
			strFechaSelecionada = "/" + (gdtmHoy.getMonth()+1) + "/" + gdtmHoy.getFullYear();
		else
			strFechaSelecionada = "/0" + (gdtmHoy.getMonth()+1) + "/" + gdtmHoy.getFullYear();


		for (intCont=1; intCont<=intNDias; intCont++)
		{
			strCal=strCal+"<TD width='20' class=B>"

		    if((intCont == intAuxDia) && (strFechaInputSelecionada == strFechaSelecionada))
		         strEstilo="class='azul'";

		    else if (intColumna == 0)
				strEstilo="class='rojo'";
			else 
			        strEstilo="class='normal'";

			if ((gdtmDataInicio.getMonth()>gdtmHoy.getMonth())&&(gdtmDataInicio.getFullYear()>gdtmHoy.getFullYear()))
			{

			strCal=strCal+"<center><font color=#CCCCCC>"+intCont+"</font></center>"
			}
			else
			{
			if ((gdtmDataInicio.getMonth()==gdtmHoy.getMonth() && gdtmDataInicio.getDate() > intCont && gdtmHoy.getFullYear() == gdtmDataInicio.getFullYear())||(gdtmDataAtual.getMonth()==gdtmHoy.getMonth() && gdtmDataAtual.getDate() < intCont && gdtmHoy.getFullYear() == gdtmDataAtual.getFullYear()))
			{
			strCal=strCal+"<center><font color=#CCCCCC>" + intCont + "</font></center>"
			}	
			else{
			    strCal=strCal+"<center><div id=" + intCont + " style='cursor:hand' onclick='javascript:gintDiaSelecionado="+intCont+";verDiaSeleccionado();limpa_option();'><a href='Javascript:void(null)' "+strEstilo+">"+intCont+ "</a></div></center>"
			}

}


		        if (intCont == dtmEsteDia || intColumna == 6)
		             strCal=strCal
		        else if (intColumna == 0)
		             strCal=strCal
		        strCal=strCal+"</TD>"
				intColumna++;
				if (intColumna == 7)
				{ 
					strCal=strCal+"</TR><TR>";
					intColumna=0;
				}
		}

		strCal=strCal+"</TR>"
		strCal=strCal+"<TR>"
		strCal=strCal+"<TD colspan=5></td><td colspan=2 align=right><a href='Javascript:void(null)' onClick='cerrarCalendario();'><img src='imagens/pic014.gif' border='0' hspace='1' vspace='1'></a>"
		strCal=strCal+"</TD>"
		strCal=strCal+"</TR>"
		strCal=strCal+"</TABLE>"
		strCal=strCal+"</TD>"
		strCal=strCal+"</TR>"
		strCal=strCal+"</TABLE>"
		strCal=strCal+"</CENTER>"
		strCal=strCal+"</div>"

		calendario.outerHTML=strCal;
		calendario.style.visibility="visible";
	
		return(true);
	}
	else
		alert("Data Inválida para Consulta no Calendário, por favor entre com uma data maior que 1909.");
}

//*****************************************************************************
//Objetivo:	Esconde o calendário
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function cerrarCalendario()
{
     calendario.style.visibility="hidden";
}


//*****************************************************************************
//Objetivo:	Seleciona o dia escolhido no calendário
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function verDiaSeleccionado()
{
	var intMesAtual;		//mês atual
	var intAnoAtual;		//ano atual
	
	intMesAtual = gdtmHoy.getMonth()+1;		
	intAnoAtual = gdtmHoy.getYear();
	intAnoAtual = intAnoAtual < 2000 ?  "19"+intAnoAtual : ""+intAnoAtual;
	intMesAtual = ""+intMesAtual;
	intMesAtual = intMesAtual.length==2 ? intMesAtual : "0"+intMesAtual;
	gintDiaSelecionado = ""+gintDiaSelecionado;
	gintDiaSelecionado = gintDiaSelecionado.length==2 ? gintDiaSelecionado : "0"+gintDiaSelecionado;

	gobjCampoData.value=gintDiaSelecionado+"/"+intMesAtual+"/"+intAnoAtual.substring(0,4);

	// Utilizar esta função na página principal que contem o calendario.js quando precisar 
	// executar funções/regras após a data ser selecionada
	if (typeof(onClickDataCalendario) == "function"){
		onClickDataCalendario(gobjCampoData.name);
	}	

	calendario.style.visibility="hidden";
}

//*****************************************************************************
//Objetivo:	Mostra o mês anterior
//Entradas:	objCampoData - Recebe a data
//Saída:	Nenhuma
//*****************************************************************************
function mesAtras(objCampoData)
{
	var intMes;		//mês 
	var intAno;		//ano 
	var intDia;		//dia

   if (gdtmHoy.getMonth()==0)
   {
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			intDia = gdtmFechaReal.getDate();
		intMes=11;
		intAno=gdtmHoy.getYear()-1;
	}
	else
	{
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			//intDia = gdtmFechaReal.getDate();
   			intDia = "";
		intMes = gdtmHoy.getMonth()-1;
		intAno = gdtmHoy.getYear();
	}
	if(intDia > garrDiasPorMes[intMes])
		intDia = garrDiasPorMes[intMes];
	gdtmHoy.setYear(intAno);
	gdtmHoy.setMonth(intMes);
	if(intDia!="")
	{
		gdtmHoy.setDate(intDia);
	}
	
	abrirCalendario('Anterior');
	
}

//*****************************************************************************
//Objetivo:	Mostra o mês seguinte
//Entradas:	objCampoData - Recebe a data
//Saída:	Nenhuma
//*****************************************************************************
function mesAdiante(objCampoData)
{
	var intMes;		//mês 
	var intAno;		//ano 
	var intDia;		//dia	

   if (gdtmHoy.getMonth()==11)
   {
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			intDia = gdtmFechaReal.getDate();
		intMes = 0;
		
		intAno=gdtmHoy.getYear();
		
		if (intAno < 2000){
			if(intAno < 10)
				intAno = "190"+ intAno;
			else
				intAno = "19"+ intAno;
			
			
		}
		intAno++;
	}
	else
	{
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			//intDia = gdtmFechaReal.getDate();
   			intDia = "";
		intMes = gdtmHoy.getMonth()+1;
		intAno = gdtmHoy.getYear();
	}
	if(intDia > garrDiasPorMes[intMes])
		intDia = garrDiasPorMes[intMes];
		
	gdtmHoy.setYear(intAno);
	gdtmHoy.setMonth(intMes);
	if(intDia!="")
	{
		gdtmHoy.setDate(intDia);
	}	abrirCalendario('Adiante');
}

//INÍCIO ESCONDE OBJETOS

//*****************************************************************************
//Objetivo:	Prepara os elementos SELECT guardando-os num array
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function PreparaElementos()
{
	// Array de Tipos que podem ser escondidos quando o menu for exibido
	var arrElementTypes = new Array (  "SELECT" );		
	//var arrElementTypes = new Array (  "TEXTAREA", "SELECT", "INPUT" );
	
	var intElement;			//índice de um elemento	
	var objElement;			//objeto elemento
	var intType;			//tipo
	
	// cria array de elementos no documento
	document.arrElements = new Array();
	
	for (intElement=0; intElement < document.all.length; intElement++)
	{
		objElement = document.all[intElement];
		
		// Se for de um dos tipos desejados, armazena elemento no array
		for ( intType = 0; intType < arrElementTypes.length; intType++)
		{
			if (objElement.tagName == arrElementTypes[intType])
			{
				document.arrElements[document.arrElements.length] = objElement;
			}
		} // tipos
	} // elementos
}

//*****************************************************************************
//Objetivo:	Esconde os elementos SELECT
//Entradas:	objDiv - DIV que irá aparecer
//Saída:	Nenhuma
//*****************************************************************************
function EscondeElementos (objDiv)
{
	var objElement;			//objeto Elemento
	
	if(objDiv.style.visibility=="hidden")
	{
		RestauraElementos();
		return;
	}
	
	// testa se array foi inicializado
	if ( ! document.arrElements )
		return;
	
	if ( document.arrElements.constructor != Array )
		return;

	// testa se array tem pelo menos um elemento
	if ( document.arrElements.length == 0 )
		return;

	// Varre elementos
	for ( var intElement = 0; intElement <document.arrElements.length; intElement++)
	{
		objElement = document.arrElements[intElement];
		
		//Se o combo for atrapalhar a visibilidade do div, ele será escondido
		if ( (! objElement.visibilidadeAnterior))
		{
			objElement.visibilidadeAnterior = objElement.style.visibility;
		
			if ( ! objElement.visibilidadeAnterior )
				objElement.visibilidadeAnterior = "visible";
				
			objElement.style.visibility = "hidden";
		}
	} // elementos
}


//*****************************************************************************
//Objetivo:	Restaura os elementos escondidos
//Entradas:	Nenhuma
//Saída:	verdadeiro ou falso
//*****************************************************************************
function RestauraElementos ()
{
	var intElement;			//índice do elemento
	var objElement;			//objeto elemento
	
	// testa se array foi inicializado
	if ( ! document.arrElements )
		return;

	if ( document.arrElements.constructor != Array )
		return;

	// testa se array tem pelo menos um elemento
	if ( document.arrElements.length == 0 )
		return;
		
	// Varre elementos
	for ( intElement = 0; intElement <document.arrElements.length; intElement++)
	{
		objElement = document.arrElements[intElement];
		
		// se existia visibilidade anterior => restaura.
		if (objElement.visibilidadeAnterior)
		{
			objElement.style.visibility = objElement.visibilidadeAnterior;
			objElement.visibilidadeAnterior = null;
		}
			
	} // elementos
}


//*****************************************************************************
//Objetivo:	Verifica a validade de dias da data
//Entradas:	Nenhuma
//Saída:	verdadeiro ou falso
//*****************************************************************************
function ValidaPeriodo(){
	var strfechaI					//Data fechaI
	var strfechaV					//Data fechaV
	var dtmInicio
	var dtmFim	
	
	dtmInicio = frmCalendario.fechaI.value		//Recebe valor de fechaI da página
	dtmFim=frmCalendario.fechaV.value		//Recebe valor de fechaI da página
	strfechaI = new Date(dtmInicio.substring(6,10),dtmInicio.substring(3,5)-1,dtmInicio.substring(0,2))
	strfechaV = new Date(dtmFim.substring(6,10),dtmFim.substring(3,5)-1,dtmFim.substring(0,2))

	if(((strfechaV-strfechaI)/glngDiaMilessecouds)< 0){
		alert("A Data final não pode ser inferior à Data inicio.")
		return false;
	}
	else{
		if(gdtmDataInicio -  1000*60*60*24 >  strfechaI)
		{
		alert("A data inicio não deve ultrapassar 365 dias.")
			return false;
		}
		else
			document.body.style.cursor = 'wait'
			document.frmCalendario.busca.disabled = true
			carregando.style.visibility = 'visible'
			return true
	}
	
}

//*****************************************************************************
//Objetivo:	Valida as datas imputadas
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function ValidaDados(){
	
	if(frmCalendario.fechaI.value=="" || frmCalendario.fechaV.value=="") {
		alert("Selecione o período desejado.")
	}
	else {
		 if (!ConfiguraData(frmCalendario.fechaI.value)) {
			alert("Data de início incorreta.")
		 }
		else {
			if(!ConfiguraData(frmCalendario.fechaV.value)){
				alert("Data final incorreta.")
			}
			else{
				if(ValidaPeriodo()){
				 frmCalendario.submit()
				}
			}
		}
	}
	
}

//*****************************************************************************
//Objetivo:	Recebe os valores de data
//Entradas:	Nenhuma
//Saída:	Nenhuma
//*****************************************************************************
function ConfiguraPeriodo(){
	var strData					//data do calendário

	if (frmCalendario.periodo[0].checked==true){
		strData=frmCalendario.periodo[0].value.split("|");
		frmCalendario.fechaI.value=strData[0];
		frmCalendario.fechaV.value=strData[1];
	}
	if (frmCalendario.periodo[1].checked==true){
		strData=frmCalendario.periodo[1].value.split("|");
		frmCalendario.fechaI.value=strData[0];
		frmCalendario.fechaV.value=strData[1];
	}
	if (frmCalendario.periodo[2].checked==true){
		strData=frmCalendario.periodo[2].value.split("|");
		frmCalendario.fechaI.value=strData[0];
		frmCalendario.fechaV.value=strData[1];
	}
}

//*****************************************************************************
//Objetivo:	Organiza os elementos da data como DD/MM/AAAA
//Entradas:	strData - Recebe a data
//Saída:	verdadeiro ou falso
//*****************************************************************************
function ConfiguraData(strData)
{
var intDia	// recebe o dia
var intMes	// recebe o mês
var intAno	// recebe o ano
	if(strData.length < 10)
		return false

	intDia = strData.substr(0, 2)
	intMes = strData.substr(3, 2)
	intAno = strData.substr(6, 4)
	if((strData.charAt(2) != '/') || (strData.charAt(5) != '/') || (!ValidaNumero(intDia)) || (!ValidaNumero(intMes)) || (!ValidaNumero(intAno)))
		return false
	if(!ValidaData(intDia, intMes, intAno))
		return false
	return true

}

//*****************************************************************************
//Objetivo:	valida se é uma data valida
//Entradas: intDia - recebe o dia
//			intMes - recebe o mês
//			intAno - recebe o ano
//Saída:	verdadeiro ou falso
//*****************************************************************************
function ValidaData(intDia, intMes, intAno)
{

	if ((intDia > 31) || (intDia < 01) || (intMes > 12) || (intMes < 01) || (intAno == 0000))
		return (false);
	if (((intMes == 04) || (intMes == 06) || (intMes == 09) || (intMes == 11)) && (intDia >30))
		return (false);
	if ((intMes == 02) && (intDia > 29))
		return (false);
	if (( intAno < 1900 ) || ( intAno > 2100 ))
		return (false);
	if ((!ValidaBissexto(intAno)) && (intMes == 02) && (intDia == 29))
		return (false);
	return (true);
}
//*****************************************************************************
//Objetivo:	Verifica Ano ValidaBissexto
//Entradas:	intAno - recebe o ano
//Saída:	verdadeiro ou falso
//*****************************************************************************
function ValidaBissexto(intAno){
	
	if (((intAno % 4)==0) && ((intAno % 100)!=0) || ((intAno % 400)==0))
		return (true);
	else
		return (false);
}
//*****************************************************************************
//Objetivo:	Verifica se é numerico
//Entradas:	strNumero - numero que será verificado
//Saída:	verdadeiro ou falso
//*****************************************************************************
function ValidaNumero(strNumero)
{
	var intContador;					//contador
	for(intContador = 0; intContador < strNumero.length; intContador++)
		if((strNumero.charAt(intContador) < '0') || (strNumero.charAt(intContador) > '9'))
			return false
	return true	
}