var gdCtrl      = new Object();
var goSelectTag = new Array();

var gdCurDate   = new Date();
var giYear      = gdCurDate.getFullYear();
var giMonth     = gdCurDate.getMonth()+1;
var giDay       = gdCurDate.getDate();
var gMonths = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

var gerado = false;

String.prototype.trim = function() { 
  var aux = this;
  while (aux.substr(0,1)=="\n"||aux.substr(0,1)=="\r"||aux.substr(0,1)==" ")
    aux = aux.substr(1);
  while (aux.substr(aux.length-1,aux.length)=="\n"||aux.substr(aux.length-1,aux.length)=="\r"||aux.substr(aux.length-1,aux.length)==" ")
    aux = aux.substr(0,aux.length-1);
  return aux;
};

function fSetDate(iYear, iMonth, iDay){
  document.getElementById("VicPopCal").style.visibility = "hidden";

  iMonth = iMonth+'';
  iDay   = iDay  +'';
  iMonth = iMonth.length < 2 ? '0'+iMonth : iMonth;
  iDay   = iDay.length   < 2 ? '0'+iDay   : iDay;

  gdCtrl.value = iDay+'/'+iMonth+"/"+iYear;
}

function fSetSelected(aCell){
  var iOffset= 0;
  var iYear  = parseInt(document.getElementById("tbSelYear").value);
  var iMonth = parseInt(document.getElementById("tbSelMonth").value);

  var texto = null;
  var aux = aCell.getElementsByTagName("font");
  for (i=0;i<aux.length;i++) {
    if (aux[i].id.substr(0,8)=="cellText")
      texto = aux[i];
  }

  with (texto){
  	var iDay = parseInt(innerHTML);
	iMonth += iOffset;
	if (iMonth<1) {
		iYear--;
		iMonth = 12;
	}else if (iMonth>12){
		iYear++;
		iMonth = 1;
	}
  }
  fSetDate(iYear, iMonth, iDay);
}

function Point(iX, iY){
	this.x = iX;
	this.y = iY;
}

function fBuildCal(iYear, iMonth) {
  var aDay = new Array();
  for(i=1;i<7;i++) {
  	aDay[i] = new Array(i);
  }

  var dCalDate     = new Date(iYear, iMonth-1, 1);
  var iDayOfFirst  = dCalDate.getDay();
  var iDaysInMonth = new Date(iYear, iMonth, 0).getDate();
  var iOffsetLast  = new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;
  var iDate = 1;
  var iNext = 1;

  for (d = 0; d < 7; d++) {
	aDay[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
  }
  for (w = 2; w < 7; w++)
  	for (d = 0; d < 7; d++) {
		aDay[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
        }
  return aDay;
}

function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize) {
  var WeekDay = new Array("DOM","SEG","TER","QUA","QUI","SEX","SAB");
  var styleTD = " valign='middle' align='center' height='"+iCellHeight+"' ";
  var styleTD2= " valign='middle' align='center' height='"+iCellHeight+"' ";
  with (document) {
	write("<tr style=\"FONT-WEIGHT: bold;BACKGROUND-COLOR: #000066;COLOR: #FFFFFF;\">");
	for(i=0; i<7; i++)
		write("<td "+styleTD2+">" + WeekDay[i] + "</td>");
	write("</tr>");

	var aux = 0;
  	for (var w = 1; w < 7; w++) {
		write("<tr>");
		for (d = 0; d < 7; d++) {
			write("<td id=calCell "+styleTD+">");
			write("<font id=\"cellText" + (aux++) + "\"> </font>");
			write("</td>")
		}
		write("</tr>");
	}
  }
}

function fUpdateCal(iYear, iMonth) {
  myMonth = fBuildCal(iYear, iMonth);
  var i = 0;
  for (var w = 0; w < 6; w++)
	for (var d = 0; d < 7; d++) {
		with (document.getElementById("cellText" + ((7*w)+d))) {
			Victor = i++;
			if (myMonth[w+1][d]<0) {
                                parentNode.onmouseover = null;
                                parentNode.onmouseout = null;
                                parentNode.onclick = null;
                                parentNode.style.cursor = "default";
                                parentNode.style.color = "#AAAAAA";
				innerHTML = -myMonth[w+1][d];
			} else {
                                parentNode.onmouseover = function() {this.style.fontWeight='bold';this.style.backgroundColor='#C09100';this.style.color='#FFF'};
                                parentNode.onmouseout = function() {this.style.fontWeight='';this.style.backgroundColor='';this.style.color=''};
                                parentNode.onclick = function() {fSetSelected(this)};
                                parentNode.style.cursor = "pointer";
                                parentNode.style.color = "#000000";
				innerHTML = myMonth[w+1][d];
			}
		}
	}
}

function fSetYearMon(iYear, iMon){
  gerado = true;
  document.getElementById("tbSelMonth").options[iMon-1].selected = true;
  for (i = 0; i < document.getElementById("tbSelYear").length; i++)
	if (document.getElementById("tbSelYear").options[i].value == iYear)
		document.getElementById("tbSelYear").options[i].selected = true;
  fUpdateCal(iYear, iMon);
}

function fPrevMonth(){
  var iMon = document.getElementById("tbSelMonth").value;
  var iYear = document.getElementById("tbSelYear").value;

  if (--iMon<1) {
	  iMon = 12;
	  iYear--;
  }

  fSetYearMon(iYear, iMon);
}

function fNextMonth(){
  var iMon = document.getElementById("tbSelMonth").value;
  var iYear = document.getElementById("tbSelYear").value;

  if (++iMon>12) {
	  iMon = 1;
	  iYear++;
  }

  fSetYearMon(iYear, iMon);
}

function fGetXY(aTag){
  var oTmp = aTag;
  var pt = new Point(0,0);
  do {
  	pt.x += oTmp.offsetLeft;
  	pt.y += oTmp.offsetTop;
  	oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");
  return pt;
}

function abrirCalendario(dateCtrl){
  gdCtrl = document.getElementById(dateCtrl);
  if (!gerado)
    fSetYearMon(giYear, giMonth);
  var point = fGetXY(gdCtrl);
  with (document.getElementById("VicPopCal").style){

	left = point.x;
	top  = point.y+gdCtrl.offsetHeight;

	width = document.getElementById("VicPopCal").offsetWidth;
	height = document.getElementById("VicPopCal").offsetHeight;
	visibility = 'visible';
	
  }
}

with (document) {
   write("<Div id='VicPopCal' style='POSITION:absolute;VISIBILITY:hidden;border:2px ridge;_width:10;MAX-WIDTH:234px;z-index:100;BACKGROUND-COLOR:#FFFFFF;'>");
   write("<table width='100%' border='0' cellspacing='0' cellpadding='4' style=\"FONT-WEIGHT: bold;BACKGROUND-COLOR: #000044;COLOR: #FFFFFF;\"><tr>");
   write("<td width='99%'align='center'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendário</td>");
   write("<td width='1%' onClick='document.getElementById(\"VicPopCal\").style.visibility = \"hidden\";'><img src='imagens/icn_load_fechar.gif'></td>");
   write("</tr></table>");
   write("<table border='0'>");
   write("<TR style=\"FONT-WEIGHT: bold;BACKGROUND-COLOR: #000044;COLOR: #FFFFFF;\">");
   write("<td valign='middle' align='center' nowrap><input type='button' name='PrevMonth' value='<' onClick='fPrevMonth()'>");
   write("&nbsp;<SELECT name='tbSelYear' id='tbSelYear' onChange='fUpdateCal(this.value, document.getElementById(\"tbSelMonth\").value)' Victor='Won'>");
   for(i=giYear-120;i<giYear+10;i++)
      write("<OPTION value='"+i+"'>Ano: "+i+"</OPTION>");
   write("</SELECT>");
   write("&nbsp;<select name='tbSelMonth' id='tbSelMonth' onChange='fUpdateCal(document.getElementById(\"tbSelYear\").value, this.value)' Victor='Won'>");
   for (i=0; i<12; i++)
      write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
   write("</SELECT>");
   	write("&nbsp;<input type='button' name='PrevMonth' value='>' onclick='fNextMonth()'>");
   write("</td>");
   write("</TR><TR>");
   write("<td align='center'>");
   write("<DIV style=\"BACKGROUND-COLOR:#FFFFFF;\"><table width='100%' border='0' cellspacing='0' cellpadding='1'>");
   fDrawCal(giYear, giMonth, 18, '9');
   write("</table></DIV>");
   write("</td>");
   write("</TR><TR style\"BACKGROUND-COLOR:#F7F7F7;\"><TD align='center'>");
   giMonth = giMonth+'';
   giDay   = giDay+'';
   giMonth = giMonth.length < 2 ? '0'+giMonth : giMonth;
   giDay   = giDay.length   < 2 ? '0'+giDay   : giDay;
   write("<B style='cursor:pointer' onclick='fSetDate(giYear,giMonth,giDay)' onMouseOver='this.style.color=\"red\"' onMouseOut='this.style.color=0'>Hoje: "+giDay+"/"+giMonth+"/"+giYear+"</B>");
   write("</TD></TR>");
   write("</TABLE></Div>");
};