/*
Para que funcione o calendário :
	-> deve ser passada para a função CarregarDataCalendario o ID do <INPUT> que será utilizado.
	-> o <INPUT> deve estar dentro de <FORM>
	-> o incCalendario.js deve ser colocado dentro do <BODY>
*/

var weekend = [0,6];
var weekendColor = "#F7F7F7";
var fontface = "Verdana";
var tamfonte = 1;

var gBGColor = "white";
var gHeaderColor = "navy";

var gNow = new Date();

Months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
          "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];

DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

document.writeln("<Div name='DvDataPicker' id='DvDataPicker' Style='display:none;position:absolute'></Div>");

function Calendar_get_month(monthNo) {
	return Months[monthNo];
}

function get_daysofmonth(monthNo, p_year) {
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return DOMonth[monthNo];
	
		return lDOMonth[monthNo];
	} else
		return DOMonth[monthNo];
}



function write_weekend_string (vday) {
	var i;
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

function format_data(p_day, v_month, v_year, v_format) {
	var vData;
	var vMonth = 1 + parseInt(v_month);
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	var vMon = Calendar_get_month(v_month).substr(0,3).toUpperCase();
	var vFMon = Calendar_get_month(v_month).toUpperCase();
	var vY4 = new String(v_year);
	var vY2 = new String(v_year.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	switch (v_format) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;

		case "DD\/MON\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		case "DD\/MON\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		case "DD-MON-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		case "DD-MON-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;
		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;
		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;
		default :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
	}

	return vData;
}
//Função alterada por CRISTIANO GOMES EM 25/07/2003
function CarregarDataCalendario(TextName,pIntPosMateriais)
{
	
	//pIntPosMateriais é um valor passado na tela de Materiais para poder fixar o calendário nessa posição.
	if (pIntPosMateriais == null){
		pIntPosMateriais = "";
	}
	
//	alert(TextName);
	
	var DivRelative = document.all("DvDataPicker");
	var TextRelative = document.all(TextName);
	
//	alert('passou 1')
	
	 //Pré definidas dimensão da figura
	IntFigH = 16
	IntFigW = 17
	
	IntOffYSetLista = 0  //Espaço entre o data-picker e a figura
	IntOffXSetLista = 0
  
	IntYTela = event.clientY
	IntXTela = event.clientX
	
	IntOffSetYObj = event.offsetY
	IntOffSetXObj = event.offsetX
	
	IntTopDataPic = (IntYTela - IntOffSetYObj) + IntFigH + IntOffYSetLista
 	IntLefDataPic = (IntXTela - IntOffSetXObj) + IntOffXSetLista
	
	if (DivRelative.style.display == "none") {
		DisabilitaSelects(TextName);
		DivRelative.style.display = "block";
		DivRelative.style.width = 150;
		//DivRelative.style.top = PosicaoDiv(TextRelative.id,0) + TextRelative.offsetHeight + 1;
		//DivRelative.style.left = PosicaoDiv(TextRelative.id,1) + 1;
		
		DivRelative.style.top = IntTopDataPic;
		if (pIntPosMateriais != ""){
			DivRelative.style.top = 565;
		}
		DivRelative.style.left = IntLefDataPic;
		
		if (TextRelative.value == "") {
			DivRelative.innerHTML = MontaDataPicker(DivRelative.id, TextRelative.id);
		}
		else {
			DivRelative.innerHTML = MontaDataPicker(DivRelative.id, TextRelative.id, TextRelative.value.substr(0,2), TextRelative.value.substr(3,2), TextRelative.value.substr(6,4));
		}
	}
	else {
		DivRelative.style.display = "none";
		HabilitaSelects();
		
		//Alterado pra poder usar o evento onblur no campo alterado
		TextRelative.focus();
		//document.formulario.elements[0].focus();
		
	}
}

function MontaDataPicker(DivRelativo, TextRelativo)
{
	if (arguments[2] == null) {
		p_day = ""; }
	else {
		p_day = parseInt(arguments[2]); }

	if (arguments[3] == null) {
		p_month = new String(gNow.getMonth()); }
	else {
		p_month = parseInt(arguments[3]-1); }
	if (arguments[4] == "" || arguments[4] == null){
		p_year = new String(gNow.getFullYear().toString()); }
	else {
		p_year = arguments[4]; }
	if (arguments[5] == null) {
		p_format = "DD/MM/YYYY"; }
	else {
		p_format = arguments[5]; }
	return (MontaCabecalho(DivRelativo, TextRelativo, p_day, p_month, p_year, p_format));
}

function MontaCabecalho(DivRelativo, TextRelativo, v_day, v_month, v_year, v_format) 
{
	var StrInnerHTML;
	StrInnerHTML = ""
	
	StrInnerHTML = StrInnerHTML + "<TABLE align='center' WIDTH='100%' BORDER=1 bordercolor=#003366 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#FFFFFF'" + gBGColor + "'><TR><TD ALIGN=center>";
	
	StrInnerHTML = StrInnerHTML + "<TABLE align='center' WIDTH='100%' BORDER=0 bordercolor=#333399 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#FFFFFF'" + gBGColor + "'><TR><TD BGCOLOR='#FFFFFF'ALIGN=center>";
	StrInnerHTML = StrInnerHTML + "<SELECT ID='id_obj_ano_escolhido'  STYLE='FONT-SIZE:9PX;FONT-FAMILY:" + fontface + "' OnChange=\"" + "Recarrega_Calendario(" + DivRelativo + ",'" + TextRelativo + "','','"  + v_month + "', '" + eval('this.value') + "', '" + v_format + "'" + ");" + "\" >";
	for (var ano=1930; ano < 2025;ano++)
	{
		if(v_year == ano )
		{
			StrInnerHTML = StrInnerHTML + "<OPTION VALUE='" + ano + "' selected>" + ano + "</OPTION>"
		}else{
			StrInnerHTML = StrInnerHTML + "<OPTION VALUE='" + ano + "'>" + ano + "</OPTION>"
		}
	}
	StrInnerHTML = StrInnerHTML + "</SELECT>"
	StrInnerHTML = StrInnerHTML + "</TD><TD ALIGN=center><SELECT ID='id_obj_mes_escolhido'  STYLE='FONT-SIZE:9PX;FONT-FAMILY:" + fontface + "' OnChange=\"" + "Recarrega_Calendario(" + DivRelativo + ",'" + TextRelativo + "','','"  + v_month + "', '" + eval('this.value') + "', '" + v_format + "'" + ");" + "\" >";
	for (var mes=0; mes < 12;mes++)
	{
		if(v_month == mes )
		{
			StrInnerHTML = StrInnerHTML + "<OPTION VALUE='" + mes + "' selected>" + Calendar_get_month(mes).substring(0,3) + "</OPTION>"
		}else{
			StrInnerHTML = StrInnerHTML + "<OPTION VALUE='" + mes + "'>" + Calendar_get_month(mes).substring(0,3) + "</OPTION>"
		}
	}
	StrInnerHTML = StrInnerHTML + "</SELECT></TD><TD width='25' height='25' ALIGN=center>"
	StrInnerHTML = StrInnerHTML + "<INPUT Type='Button' value='X' style='color:red;font-weight:bold; Width:20;font-family:Verdana;font-size:9' title='Apagar Data' onClick=\"" + TextRelativo + ".value='';CarregarDataCalendario('" + TextRelativo + "');\">";	
	StrInnerHTML = StrInnerHTML + "</TD></TR><TR><TD ColsPan=4 Align='Center'>";
	StrInnerHTML = StrInnerHTML + "<FONT FACE='" + fontface + "' SIZE=1 color='" + gHeaderColor + "'><B>";
	StrInnerHTML = StrInnerHTML + Calendar_get_month(v_month) + " " + v_year;
	StrInnerHTML = StrInnerHTML + "</B><BR></TD></TR></TABLE>";
	StrInnerHTML = StrInnerHTML + "<TABLE align='center' WIDTH='100%' CELLSPACING='3' CELLPADDING='3'  BORDER=0 BGCOLOR='#FFFFFF'" + gBGColor + "'>";
	StrInnerHTML = StrInnerHTML + "<TR Align='Center'>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>D</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>S</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>T</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>Q</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>Q</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>S</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "<TD><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='" + gHeaderColor + "'><B>S</B></FONT></TD>";
	StrInnerHTML = StrInnerHTML + "</TR>";
	StrInnerHTML = StrInnerHTML + DatasdoMesCorrente(DivRelativo, TextRelativo, v_day, v_month, v_year, v_format)
	StrInnerHTML = StrInnerHTML + "</TABLE><BR>";
	StrInnerHTML = StrInnerHTML + "</font>";
	
		StrInnerHTML = StrInnerHTML + "</TR>";
	StrInnerHTML = StrInnerHTML + "</TABLE><BR>";
	return StrInnerHTML;
}

function Recarrega_Calendario(DivRelativo, TextRelativo, v_day, v_month, v_year, v_format)
{
var v_year  = document.all('id_obj_ano_escolhido').value
var v_month = document.all('id_obj_mes_escolhido').value
var Texto = document.all(TextRelativo);
	if (Texto.value == "") {
		DivRelativo.innerHTML = MontaCabecalho(DivRelativo.id, TextRelativo, v_day, v_month, v_year, v_format);
	}
	else {
		if (parseInt(Texto.value.substr(3,2)) == (parseInt(v_month)+1) && parseInt(Texto.value.substr(6,4)) == v_year)
		{
			DivRelativo.innerHTML = MontaCabecalho(DivRelativo.id, TextRelativo, Texto.value.substr(0,2), v_month, v_year, v_format);
		}
		else
		{
			DivRelativo.innerHTML = MontaCabecalho(DivRelativo.id, TextRelativo, v_day, v_month, v_year, v_format);
		}
	}
}

function DatasdoMesCorrente(DivRelativo, TextRelativo, v_day, v_month, v_year, v_format)
{
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(v_month);
	vDate.setFullYear(v_year);
	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=get_daysofmonth(v_month, v_year);
	var vOnLastDay=0;
	var vCode = "";
	vCode = vCode + "<TR Align='Center'>";
	for (i=0; i<vFirstDay; i++) {
		vCode = vCode + "<TD " + write_weekend_string(i) + "><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "'> </FONT></TD>";
	}
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD " + write_weekend_string(j) + "><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "'><DIV STYLE='Cursor:hand' onClick=\"" + TextRelativo + ".value='" + format_data(vDay, v_month, v_year, v_format) + "';CarregarDataCalendario('" + TextRelativo + "');\">" + format_day(vDay, v_day, v_month, v_year) + "</FONT></TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR Align='Center'>";
		for (j=0; j<7; j++) {
			vCode = vCode + "<TD " + write_weekend_string(j) + "><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "'>" + "<DIV STYLE='Cursor:hand' " + "onClick=\"" + TextRelativo + ".value='" + format_data(vDay, v_month, v_year, v_format) + "';CarregarDataCalendario('" + TextRelativo + "');\">" + format_day(vDay, v_day, v_month, v_year) + "</FONT></TD>";
			vDay=vDay + 1;
			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}
		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	for (m=1; m<(7-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD " + write_weekend_string(j+m) + 
			"><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD " + write_weekend_string(j+m) + 
			"><FONT SIZE='" + tamfonte + "' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
	}
	return vCode;
}

function format_day(vday, v_day, v_month, v_year) {
	var vNowDay   = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear  = gNow.getFullYear();
	if (vday == vNowDay && v_month == vNowMonth && v_year == vNowYear) 
	{return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>"); }
	else 
	{
		if (vday == v_day){return ("<FONT COLOR=\"BLUE\"><B>" + vday + "</B></FONT>");}
		else{return (vday);}
	}
}

function DisabilitaSelects(TextName) 
{
var acheitexto = false;
var TipoObjeto;
	for (atual=0; atual<document.all.length; atual++)
	{
		if (document.all[atual].id == TextName) {
			acheitexto = true;
		}
		else {
			if (acheitexto) {
				TipoObjeto = new String(document.all[atual].type)
				if (TipoObjeto == "select-one" || TipoObjeto == "select-multiple" || TipoObjeto.substr(0,23) == "Microsoft HTML Document") {
					document.all[atual].style.visibility = "hidden";
				}
			}
		}
	}
}

function HabilitaSelects() 
{
var TipoObjeto;
	for (atual=0;atual < document.all.length; atual++)
	{
		if (document.all[atual].type != "undefined") {
			TipoObjeto = new String(document.all[atual].type)
			if (TipoObjeto == "select-one" || TipoObjeto == "select-multiple" || TipoObjeto.substr(0,23) == "Microsoft HTML Document") {
				if (document.all[atual].style.visibility == "hidden") {
					document.all[atual].style.visibility = "visible";
				}
			}
		}
	}
}

function PosicaoDiv(TextId, Posicao)
{
var Objeto;
var PrimeiroParent = 0;
var entrada = true;

	Objeto = document.all(TextId);
	i = 0;
	while (Objeto.parentElement.tagName != "FORM")
	{
		Objeto = Objeto.parentElement;
		if (Objeto.tagName == "TD")
		{
			entrada = false;
			if (Posicao == 0)
			{PrimeiroParent = PrimeiroParent + Objeto.offsetTop + 85;}
			else
			{PrimeiroParent = PrimeiroParent + Objeto.offsetLeft + 118;}
		}
	}
	if (entrada){PrimeiroParent = 0;}
	if (Posicao == 0){return (Objeto.offsetTop+PrimeiroParent);}
	else {return (Objeto.offsetLeft+PrimeiroParent);}
}

