<!--

var months = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var days = new Array("D", "S", "T", "Q", "Q", "S", "S");

today = new getToday();	

var element_id = "";

function getDays(month, year) {
  // Test for leap year when February is selected.
  if ( 1 == month )
    return ((0 == year % 4) && (0 != (year % 100))) ||
			(0 == year % 400) ? 29 : 28;
  else
    return daysInMonth[month];
}

function getToday() {
  // Generate today's date.
  this.now = new Date();
  this.year = this.now.getFullYear() ; // Returned year XXXX
  this.month = this.now.getMonth();
  this.day = this.now.getDate();
}

 
function newCalendar() {
  var parseYear = parseInt(FindObject(element_id+"year")[FindObject(element_id+"year").selectedIndex].text);
  
  var newCal = new Date(parseYear, FindObject(element_id+"month").selectedIndex, 1);
  var day = -1;
  var startDay = newCal.getDay();
  var daily = 0; 
  
  today = new getToday(); // 1st call
  if ( ( today.year == newCal.getFullYear() ) && ( today.month == newCal.getMonth() ) ) day = today.day;
  // Cache the calendar table's tBody section, dayList.
  var tableCal = FindObject(element_id+"TCalendar").tBodies.dayList;
  
  var intDaysInMonth = getDays(newCal.getMonth(), newCal.getFullYear() );

  for ( var intWeek = 0; intWeek < tableCal.rows.length;  intWeek++ )
    for ( var intDay = 0; intDay < tableCal.rows[intWeek].cells.length; intDay++ ) {
      var cell = tableCal.rows[intWeek].cells[intDay];
      
      // Start counting days.
      if ( ( intDay == startDay ) && ( 0 == daily ) ) daily = 1;
      
      var holiday = feriados(daily, newCal.getMonth()+1, parseYear); cell.title = holiday; 
      
      if ( intDay == 0 ) cell.className = "sunday"; //cell.style.color = "red"; // Highlight sunday.
      else if ( day == daily ) cell.className = "today"; //cell.style.color = "red"; // Highlight the current day.
	  else if ( holiday != "" ) cell.className = "holiday"; //cell.style.color = "red"; // Highlight holiday.
      else cell.className = ""; //cell.style.color = "";
      
      FindObject(element_id+"todayday").innerHTML = "Hoje: " +  today.day + "/" + ( today.month + 1 ) + "/" + today.year;
      
      // Output the day number into the cell.
      if ( ( daily > 0 ) && ( daily <= intDaysInMonth ) ) cell.innerHTML = daily++;
      else cell.innerHTML = "";
    }
}
	  
function getTodayDay() {
  FindObject(element_id).value = today.day + "/" + ( today.month + 1 ) + "/" + today.year; 
  FindObject(element_id+"_D").selectedIndex = today.day;
  FindObject(element_id+"_M").selectedIndex = today.month + 1;
  FindObject(element_id+"_Y").value = today.year;
  FindObject(element_id+"_Calendar").style.visibility = "hidden";
  FindObject(element_id+"TCalendar").style.display = "none";
  FindObject(element_id+"year").selectedIndex = 100;   
  FindObject(element_id+"month").selectedIndex = today.month; 
}
 
function getDateDay(element) {
  // This code executes when the user clicks on a day in the Calendar.
  // Test whether day is valid.
  if ( element.innerHTML != "" ) { 
    var mn = FindObject(element_id+"month").selectedIndex + 1;
    var Year = FindObject(element_id+"year")[FindObject(element_id+"year").selectedIndex].text;
    FindObject(element_id).value = element.innerHTML + "/" + mn + "/" + Year;
    FindObject(element_id+"_D").selectedIndex = parseInt(element.innerHTML);
    FindObject(element_id+"_M").selectedIndex = mn;
    FindObject(element_id+"_Y").value = Year;
    FindObject(element_id+"_Calendar").style.visibility = "hidden";
    FindObject(element_id+"TCalendar").style.display = "none";
  }
}
 
function SetCalendarOnElement(elem_name) {
  if ( elem_name == "" ) elem_name = element_id;
  var div = new Dimension(elem_name);
  var TCalendar = FindObject(elem_name+"TCalendar");
  TCalendar.style.pixelLeft = div.x;
  TCalendar.style.pixelTop = div.y + 25;
}
	           
function ShowCalendar(elem_name) {
  if ( elem_name == "" ) elem_name = element_id;
  element_id = elem_name; // element_id is global variable
  FindObject(element_id+"year").selectedIndex = parseInt(FindObject(elem_name+"_Y").value) - 1900;   
  FindObject(element_id+"month").selectedIndex = FindObject(elem_name+"_M").selectedIndex - 1;
  newCalendar();
  SetCalendarOnElement(elem_name);
  FindObject(elem_name+"TCalendar").style.display = "inline";
  FindObject(elem_name+"_Calendar").style.visibility = "visible";
}

function HideCalendar(elem_name) {
  if ( elem_name == "" ) elem_name = element_id;
  FindObject(elem_name+"_Calendar").style.visibility = "hidden";
  FindObject(elem_name+"TCalendar").style.display = "none";
}

function ToggleCalendar(elem_name) {
  if ( elem_name == "" ) elem_name = element_id;
  else if ( element_id != "" && FindObject(element_id+"_Calendar") ) {
    if ( FindObject(element_id+"_Calendar").style.visibility != "hidden" ) HideCalendar(element_id);
  }
  if ( FindObject(elem_name+"_Calendar").style.visibility == "hidden" || FindObject(elem_name+"TCalendar").style.display == "none" )
    ShowCalendar(elem_name);
  else 
    HideCalendar(elem_name);
}

function CreateCalendar(elem_name) {
  document.write("<TABLE id="+elem_name+"TCalendar border=0 cellSpacing=3 cellPadding=0>");
  document.write("<TBODY><TR>");
  document.write("<TD id="+elem_name+"todayday colSpan=5 class=todayday onclick=getTodayDay();></TD>");
  document.write("<TD colSpan=2 align=right><a href=\"JavaScript:HideCalendar('"+elem_name+"');\"><img src=images/small_close.gif border=0 title=Fechar /></a></TD>");
  document.write("</TR></TBODY>");
  document.write("<TBODY><TR>");
  document.write("<TD colSpan=7 vAlign=center>");
  // Month combo box
  document.write("<SELECT id="+elem_name+"month size=1 onchange=\"JavaScript:newCalendar();\"> ");
  // Output months into the document.
  // Select current month.
  for ( var intLoop = 0; intLoop < months.length; intLoop++ )
    document.write("<OPTION " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</OPTION>");
  document.write("</SELECT> ");
  // Year combo box
  document.write("<SELECT id="+elem_name+"year size=1 onchange=\"JavaScript:newCalendar();\"> ");
  // Output years into the document.
  // Select current year.
  for ( var intLoop = 1900; intLoop < 2028; intLoop++ ) document.write("<OPTION " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</OPTION>");
  document.write("</SELECT> ");
  document.write("</TD>");
  document.write("</TR>");
  document.write("<TR class=days>");
  // Generate column for each day.
  // Output days.
  for ( var intLoop = 0; intLoop < days.length; intLoop++ ) document.write("<TD align=center>" + days[intLoop] + "</TD>");
  document.write("</TR></TBODY>");
  document.write("<TBODY id=dayList class=dates vAlign=center>");
  // Generate grid for individual days.
  for ( var intWeeks = 0; intWeeks < 6; intWeeks++ ) {
    document.write("<TR>");
    for ( var intDays = 0; intDays < days.length; intDays++ ) document.write("<TD align=right onclick=\"JavaScript:getDateDay(this);\"></TD>");
    document.write("</TR>");
  }
  // Generate today day.
  document.write("</TBODY>");
  document.write("</TABLE>");
  
  HideCalendar(elem_name);
}

function fixYear(y) {
  var fy = 0;
  if ( y >= 0 && y <= 99 ) fy = y + 1900;
  else if ( y >= 100 && y <= 1100 ) fy = y + 1900;
  else if ( y < 0 ) fy = 1900 - Math.abs(y);
  else fy = y;
  return (fy);
}

function makeArray() {
  this[0] = makeArray.arguments.length;
  for ( i = 0; i < makeArray.arguments.length; i++ )
    this[i+1] = makeArray.arguments[i];
}

var civMonth = new makeArray("January", "February", "March", "April", "May", "June",
                             "July", "August", "September", "October", "November", "December");
  
function CalculaPascoaCrista(AAno) {
  var R1, R2, R3, R4, R5 = 0;
  var FPascoa = new Date;
  var VD = 0;

  R1 = AAno % 19;
  R2 = AAno % 4;
  R3 = AAno % 7;
  R4 = ( (19 * R1) + 24 ) % 30;
  R5 = ( (6 * R4) + (4 * R3) + (2 * R2) + 5 ) % 7;

  FPascoa = new Date(civMonth[3] + " " + (22 + R4 + R5) + ", " + AAno);

  VD = FPascoa.getDate();

  if ( VD == 26 ) FPascoa = FPascoa = new Date(civMonth[4] + " 19, " + AAno);
  if ( VD == 25 && R1 > 10 ) FPascoa = new Date(civMonth[4] + " 18, " + AAno);
  
  return FPascoa;
}

function CalculaFeriadosCristaos(AAno, ATipo) {
  var Aux = CalculaPascoaCrista(AAno);
  var z, VJ, VM, VD = 0;
  VJ=Aux.getYear();VM=Aux.getMonth();VD=Aux.getDate();VJ=fixYear(VJ);
  if (ATipo == "Carnaval") {
    for (z=1;z<=47;z++) {
      Aux = new Date(civMonth[VM+1] + " " + (VD - 1) + ", " + VJ);
      VJ=Aux.getYear();VM=Aux.getMonth();VD=Aux.getDate();VJ=fixYear(VJ);
    }
  }
  if (ATipo == "SextaSanta") {
    for (z=1;z<=2;z++) {
      Aux = new Date(civMonth[VM+1] + " " + (VD - 1) + ", " + VJ);
      VJ=Aux.getYear();VM=Aux.getMonth();VD=Aux.getDate();VJ=fixYear(VJ);
    }
  }
  if (ATipo == "CorpusChristi") {
    for (z=1;z<=60;z++) {
      Aux = new Date(civMonth[VM+1] + " " + (VD + 1) + ", " + VJ);
      VJ=Aux.getYear();VM=Aux.getMonth();VD=Aux.getDate();VJ=fixYear(VJ);
    }
  }
  return Aux;
}

function feriados(cday, cmonth, cyear) {
  // feriados brasileiros oficiais
  var AData = new Date(civMonth[cmonth] + " " + cday + ", " + cyear);
  //var Pascoa = CalculaFeriadosCristaos(cyear, "Pascoa");
  var Carnaval = CalculaFeriadosCristaos(cyear, "Carnaval");
  var SextaSanta = CalculaFeriadosCristaos(cyear, "SextaSanta");
  var CorpusChristi = CalculaFeriadosCristaos(cyear, "CorpusChristi");
  if ( cmonth == 1 && cday == 1 )
    return "Ano Novo";
  else if ( AData.getYear() == Carnaval.getYear() && AData.getMonth() == Carnaval.getMonth() && AData.getDate() == Carnaval.getDate() )
    return "Carnaval";
  else if ( AData.getYear() == SextaSanta.getYear() && AData.getMonth() == SextaSanta.getMonth() && AData.getDate() == SextaSanta.getDate() )
    return "Sexta-Feira Santa";
  //else if ( AData.getYear() == Pascoa.getYear() && AData.getMonth() == Pascoa.getMonth() && AData.getDate() == Pascoa.getDate() ) return "Páscoa";
  else if ( cmonth == 4 && cday == 21 )
    return "Tiradentes";
  else if ( cmonth == 5 && cday == 1 )
    return "Dia do Trabalho";
  else if ( AData.getYear() == CorpusChristi.getYear() && AData.getMonth() == CorpusChristi.getMonth() && AData.getDate() == CorpusChristi.getDate() )
    return "Corpus Christi";
  else if ( cmonth == 9 && cday == 7 )
    return "Dia da Independência";
  else if ( cmonth == 10 && cday == 12 )
    return "Nossa Senhora Aparecida";
  else if ( cmonth == 11 && cday == 2 )
    return "Finados";
  else if ( cmonth == 11 && cday == 15 )
    return "Proclamação da República";
  else if ( cmonth == 12 && cday == 25 )
    return "Natal";

  return "";
}

//-->

