
//*****************************************************************************
//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
//*****************************************************************************

//*****************************************************************************
// DECLARAÇÃO DAS VARIÁVEIS
//*****************************************************************************


//Variáveis Globais
var arrMeses = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"); //Array com os meses do ano
var arrMesesIng = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); //Array com os meses do ano 
var dtmHoy = new Date(); //variável data utilizada para cálculo
var objCampoData; //objeto com o nome do calendário
var intYearLow = 1990;	//ano mínimo
var arrDaysMonth = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);	//array com os dias do mês
var arrDiasPorMes=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];	//array com os dias do mês
var intLeft = 0; //Medida Left							
var intTop = 0; //medida Top
var intDiaSelecionado= ""+intDiaSelecionado;	//dia selecionado
var intLeftCalendario="0";	// Medida Left do calendário
var intTopCalendario="0";	// Medida Top do calendário
var dtmFechaReal;					//data de fechamento real

   
//*****************************************************************************
//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, intLang, strOrigem)
{
	if (typeof(objInput) == "object")
	{
		 objCampoData = objInput;
         if (intLeft!=null)
         {
           intLeftCalendario=intLeft;
           intTopCalendario=intTop;
         }
         else
         {
           intLeftCalendario="";
           intTopCalendario="";
         }
		if (calendario.style.visibility=="visible")
		{
		   cerrarCalendario();		   
  		   return;
		}
		abrirCalendario('', intLang, strOrigem);
	}
	else
	{
		alert("Campo Data não informado!");
		return(false);
	}
}

//*****************************************************************************
//Objetivo:					Mostrar calendário
//Entradas:					Nenhuma
//Saída:					Nenhuma
//*****************************************************************************

function abrirCalendario(strParam, intLang, strOrigem)
{
	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
	  	
	dtmFechaReal = new Date();
	
	if ( objCampoData.value.substring(objCampoData.value.lastIndexOf('/')+1,objCampoData.value.length)>1909 || objCampoData.value=="")
	{
		if(strParam == "")
		{
			if(objCampoData.value=="" || objCampoData.value=="31/12/9999" )
			{
				intAuxAno = dtmFechaReal.getFullYear();
				intAuxMes = dtmFechaReal.getMonth();
				intAuxDia = "";
			}
			else
			{
				intAuxDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
				intAuxMes = objCampoData.value.substring(objCampoData.value.indexOf('/')+1,objCampoData.value.lastIndexOf('/'))-1;
				intAuxAno = objCampoData.value.substring(objCampoData.value.lastIndexOf('/')+1,objCampoData.value.length);
				
			}
	
			dtmHoy.setDate(intAuxDia);
			dtmHoy.setMonth(intAuxMes);
			dtmHoy.setYear(intAuxAno);
		}
		else
		{
			intAuxAno = dtmHoy.getFullYear();
			intAuxMes = dtmHoy.getMonth();
			if(objCampoData.value!="" && objCampoData.value!="31/12/9999" )
				intAuxDia = dtmHoy.getDate();
			else
				intAuxDia = "";
		}

		var dtmEsteDia = dtmHoy.getDate();

		 // Determinação de anos bissexto
		 if (((intAuxAno % 4 == 0) && (intAuxAno % 100 != 0)) || (intAuxAno % 400 == 0))
		   arrDiasPorMes[1] = 29;
		 // Numero de dias do mês
		 intNDias = arrDiasPorMes[intAuxMes];

		 // Calculo do primeiro dia da semana do mês
		 dtmPrimerDia = dtmHoy;
		 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:"+intLeftCalendario+";top:"+intTopCalendario+"'>"
		  strCal=strCal+"<CENTER>"
		  strCal=strCal+"<TABLE BORDER=0 cellspacing=0 cellpadding=1 bgcolor=999999 height=131 width=141>"
		  strCal=strCal+"<tr><td>"
		  strCal=strCal+"<TABLE BORDER=0 cellspacing=0 cellpadding=0 bgcolor=FFFFFF height=100% width=100%>"
		  strCal=strCal+"<TR bgcolor=FFC56C class=CalendDiaMes height=17>"

	// Identificação do mês exibido

	if (dtmHoy.getMonth() == 0 && dtmHoy.getFullYear() == 1910)
			strCal=strCal+"<TD align=left width=20> "
	else
			if (strOrigem == 1) { 	
				strCal=strCal+"<TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAtras(objCampoData,"+intLang+","+strOrigem+")'><img src='/cblc/Imagem/SetaCalendEsq.gif' border=0 ></a>" }
			else if (strOrigem == 2) {			
				strCal=strCal+"<TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAtras(objCampoData,"+intLang+","+strOrigem+")'><img src='/cblc/Imagem/SetaCalendEsq.gif' border=0 ></a>" } 

			strCal=strCal+"</TD>"													   																				
          
			if (intLang == 1) {
				strCal=strCal+'<td COLSPAN=5 align=center><b>'+arrMeses[intAuxMes]}
			else{ 
				strCal=strCal+'<td COLSPAN=5 align=center><b>'+arrMesesIng[intAuxMes]}		
			
			strCal=strCal+ " "
			strCal=strCal + intAuxAno
			
			//altera os caminhos das imagens de seta do calendario
			if (strOrigem == 1) { 	
				strCal=strCal+"</b><TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAdiante(objCampoData,"+intLang+","+strOrigem+")'><img src='/cblc/Imagem/SetaCalendDir.gif' border=0 ></a>" }				
			else {
				strCal=strCal+"</b><TD align=center width='20'><a href='Javascript:void(null)' onClick='mesAdiante(objCampoData,"+intLang+","+strOrigem+")'><img src='/cblc/Imagem/SetaCalendDir.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
			if (intLang == 1) {
				strCal=strCal+"<TR class=CalendDiaSemana ><td align=center><b>D</b><td align=center><b>S</b><td align=center><b>T</b><td align=center><b>Q</b><td align=center><b>Q</b><td align=center><b>S</b><td align=center><b>S</b></TR>" }
			else {
				strCal=strCal+"<TR class=CalendDiaSemana ><td align=center><b>M</b><td align=center><b>S</b><td align=center><b>T</b><td align=center><b>W</b><td align=center><b>T</b><td align=center><b>F</b><td align=center><b>S</b></TR>" }
			
			strCal=strCal+"<tr></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

		for (intCont=1; intCont<=intNDias; intCont++)
		{
			strCal=strCal+"<TD width='20'>"
		    if ((intAuxDia != "") &&(intCont == intAuxDia))
		         strEstilo="class='Selecionado'";

		    else if (intColumna == 0)
					strEstilo="class='Domingo'";
				 else 
			         strEstilo="class='OutrosDias'";
				strCal=strCal+"<center><div id="+intCont+" style='cursor:hand' onclick='javascript:intDiaSelecionado="+intCont+";verDiaSeleccionado("+intLang+");'><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+"</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 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(intLanguage)
{
	var intMesAtual;		//mês atual
	var intAnoAtual;		//ano atual
	var dtDate = new Date();
	
	intMesAtual = dtmHoy.getMonth()+1;		
	intAnoAtual = dtmHoy.getYear();
	intAnoAtual = intAnoAtual < 2000 ?  "19"+intAnoAtual : ""+intAnoAtual;
	intMesAtual = ""+intMesAtual;
	intMesAtual = intMesAtual.length==2 ? intMesAtual : "0"+intMesAtual;
	intDiaSelecionado = ""+intDiaSelecionado;
	intDiaSelecionado = intDiaSelecionado.length==2 ? intDiaSelecionado : "0"+intDiaSelecionado;

	if (intLanguage == 2)  {
		//if ( ((dtDate.getMonth()+1) - (intMesAtual) < 0) ) {
		//	alert('Data Inválida.');
		//	return;
		//}
		//else { 		
			objCampoData.value=intMesAtual+"/"+intDiaSelecionado+"/"+intAnoAtual.substring(0,4); 
			AtualizaVencimentos(intLanguage);		
		}
	else{
		//alert(objCampoData.value);
		//alert(intDiaSelecionado+"/"+intMesAtual+"/"+intAnoAtual.substring(0,4));
		//if ( (objCampoData.value) > (intDiaSelecionado+"/"+intMesAtual+"/"+intAnoAtual.substring(0,4)) ) {
		//	alert("Data Inválida!");
		//}
		objCampoData.value=intDiaSelecionado+"/"+intMesAtual+"/"+intAnoAtual.substring(0,4);
		AtualizaVencimentos(intLanguage);
	}	

	// 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(objCampoData.name);
	}	

	calendario.style.visibility="hidden";
}

//*****************************************************************************
//Objetivo:					Mostra o mês anterior
//Entradas:					Nenhuma
//Saída:					Nenhuma
//*****************************************************************************
function mesAtras(objCampoData, intLang, strOrigem)
{
	var intMes;		//mês 
	var intAno;		//ano 
	var intDia;		//dia

   if (dtmHoy.getMonth()==0)
   {
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			intDia = dtmFechaReal.getDate();
		intMes=11;
		intAno=dtmHoy.getYear()-1;
	}
	else
	{
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			//intDia = dtmFechaReal.getDate();
   			intDia = "";
		intMes = dtmHoy.getMonth()-1;
		intAno = dtmHoy.getYear();
	}
	if(intDia > arrDiasPorMes[intMes])
		intDia = arrDiasPorMes[intMes];
	dtmHoy.setYear(intAno);
	dtmHoy.setMonth(intMes);
	if(intDia!="")
	{
		dtmHoy.setDate(intDia);
	}
	
	abrirCalendario('Anterior', intLang, strOrigem);
	
}

//*****************************************************************************
//Objetivo:					Mostra o mês seguinte
//Entradas:					Nenhuma
//Saída:					Nenhuma
//*****************************************************************************
function mesAdiante(objCampoData, intLang, strOrigem)
{

	var intMes;		//mês 
	var intAno;		//ano 
	var intDia;		//dia	
	
 if (dtmHoy.getMonth()==11)
   {
   		if(objCampoData.value!="" && objCampoData.value!="31/12/9999")
   			intDia = objCampoData.value.substring(0,objCampoData.value.indexOf('/'));
   		else
   			intDia = dtmFechaReal.getDate();
		intMes = 0;
		
		intAno=dtmHoy.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 = dtmFechaReal.getDate();
   			intDia = "";
		intMes = dtmHoy.getMonth()+1;
		intAno = dtmHoy.getYear();
	}
	if(intDia > arrDiasPorMes[intMes])
		intDia = arrDiasPorMes[intMes];
		
	dtmHoy.setYear(intAno);
	dtmHoy.setMonth(intMes);
	if(intDia!="")
	{
		dtmHoy.setDate(intDia);
	}	abrirCalendario('Adiante', intLang, strOrigem);
}

