/**
 * $Header: //depot/Projects/CIMIT/website/web/lib/hpCalendar.js#5 $
 *
 * COPYRIGHT:
 *
 * This software is Copyright (c) 2006-2008 Marc Davignon
 *                         <mpdavig@users.sourceforge.net>
 *
 * LICENSE:
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of Version 2 of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * The functions contained within this document replace the standard MacroMedia
 * (now Adobe) JavaScript functions. The renamed functions will be ignored by
 * Dreamweaver and not be re-added when updating the templates. In particular
 * <body onload="MM_preloadImages()"> will not be added.
 */


/**
 *
 */
function daysInMonth(month,year) {
  // Returns the last day of the prior month, "month + 1" required
  if (month == 11) { month = 0; } else { month++; }
  var dd = new Date(year, month, 0);
  return dd.getDate();
} // function daysInMonth(month,year)


/**
 *
 */
function firstDayOfTheWeek(month,year) {
  var dd = new Date(year, month, 1);
  return dd.getDay();
} // function firstDayOfTheWeek(month,year)


/**
 * Not used
 */
function WeekStart(Month, Year, StartOfWeekDay) {
  _Date = new Date(Year, Month, 1)
  _LastDate = new Date()
  _LastDate = new Date(_Date)
  _LastDate.setMonth(_Date.getMonth() + 1)
  _LastDate.setHours(_LastDate.getHours() - 24)
  _Returns = new Array()
  if (StartOfWeekDay == null) {
    StartOfWeekDay = 0
  }

  var I = 1
  while (I <= _LastDate.getDate()) {
    _Date.setDate(I)
    if (_Date.getDay() == StartOfWeekDay) {
      _Returns[_Returns.length] = new Date(_Date)
      I += 6
    }
    I++
  }
  return(_Returns)
}


/**
 *
 */
function startCalendar() {
  var now = new Date();

  var hour        = now.getHours();
  var minute      = now.getMinutes();
  var second      = now.getSeconds();
  var monthnumber = now.getMonth();
  var monthday    = now.getDate();
  var year        = now.getYear();

  var months = new Array(13);
  months[0]  = "January";
  months[1]  = "February";
  months[2]  = "March";
  months[3]  = "April";
  months[4]  = "May";
  months[5]  = "June";
  months[6]  = "July";
  months[7]  = "August";
  months[8]  = "September";
  months[9]  = "October";
  months[10] = "November";
  months[11] = "December";

  if(year < 2000) { year = year + 1900; }

  //alert(daysInMonth(monthnumber, year)); // Testing
  //alert(firstDayOfTheWeek(monthnumber, year)); // Testing

  document.writeln("<div id=\"Accordion1\" class=\"Accordion\" tabindex=\"0\" width=\"175\">");

  // Build month 1
  buildCalendarHtml(daysInMonth(monthnumber, year), firstDayOfTheWeek(monthnumber, year), months[monthnumber], monthnumber + 1, year, 1);

  // Determine and build month 2
  monthnumber = monthnumber + 1;
  if (monthnumber > 11) { monthnumber = 0; year = year + 1; }
  buildCalendarHtml(daysInMonth(monthnumber, year), firstDayOfTheWeek(monthnumber, year), months[monthnumber], monthnumber + 1, year, 2);

  // Determine and build month 3
  monthnumber = monthnumber + 1;
  if (monthnumber > 11) { monthnumber = 0; year = year + 1; }
  buildCalendarHtml(daysInMonth(monthnumber, year), firstDayOfTheWeek(monthnumber, year), months[monthnumber], monthnumber + 1, year, 3);

  document.writeln("</div>");
} // function startCalendar()


/**
 *
 */
function buildCalendarHtml(calTotalMonthDays, calFirstWeekDay, calMonthName, calMonth, calYear, accordionPanel) {

  document.writeln("<div class=\"AccordionPanel\">");
       document.writeln("<div class=\"AccordionPanelTab style1\">");
         document.writeln("<div align=\"left\">" + calMonthName.toUpperCase() + " " + calYear + "</div>");
       document.writeln("</div>");
    document.writeln("<div class=\"AccordionPanelContent\">");
      document.writeln("<table width=\"175\" border=\"0\" id=\"wp-calendar3\" summary=\"Calendar\">");
        document.writeln("<thead>");

          document.writeln("<tr>");
            document.writeln("<th abbr=\"Monday\" scope=\"col\" title=\"Monday\"><strong><font size=\"1\">Su</font></strong></th>");
            document.writeln("<th abbr=\"Tuesday\" scope=\"col\" title=\"Tuesday\"><strong><font size=\"1\">Mo</font></strong></th>");
            document.writeln("<th abbr=\"Wednesday\" scope=\"col\" title=\"Wednesday\"><strong><font size=\"1\">Tu</font></strong></th>");
            document.writeln("<th abbr=\"Thursday\" scope=\"col\" title=\"Thursday\"><strong><font size=\"1\">We</font></strong></th>");
            document.writeln("<th abbr=\"Friday\" scope=\"col\" title=\"Friday\"><strong><font size=\"1\">Th</font></strong></th>");
            document.writeln("<th abbr=\"Saturday\" scope=\"col\" title=\"Saturday\"><strong><font size=\"1\">Fr</font></strong></th>");
            document.writeln("<th abbr=\"Sunday\" scope=\"col\" title=\"Sunday\"><strong><font size=\"1\">Sa</font></strong></th>");
          document.writeln("</tr>");

        document.writeln("</thead>");
        document.writeln("<tfoot>");

        document.writeln("</tfoot>");
        document.writeln("<tbody>");

        var trackDayOfWeek = 0;
        var trackFirstDayNotUsed = true;
        var linkContent = "";
        var realDayOfTheMonth;

        for (var incr=1; incr <= calTotalMonthDays + calFirstWeekDay; incr++) {

          // Adjust for beginning calendar entries
          realDayOfTheMonth = incr - calFirstWeekDay;
          if (trackFirstDayNotUsed && calFirstWeekDay > trackDayOfWeek) {
            linkContent = "<td><div align=\"center\"><font size=\"1\"></font></div></td>";
          } else {
            trackFirstDayNotUsed = false;
            linkContent = "<td><div align=\"center\"><font size=\"1\">" + realDayOfTheMonth +  "</font></div></td>";

            // Skip the first and last events which are just place holders
            for (var eventCnt=1; eventCnt < eventListArray.length; eventCnt++) {
              if ( eventListArray[eventCnt][0] == calYear && eventListArray[eventCnt][1] == calMonth && eventListArray[eventCnt][2] == realDayOfTheMonth ) {
                // Determine if an event link exists
                linkContent = "<td style=\"border:solid 1px #003366\"><div align=\"center\"><font size=\"1\"><a class=\"calendar\" href=\"" + eventListArray[eventCnt][3] + "\" title=\""  + calMonthName + " " + realDayOfTheMonth + ", " + calYear + ";;" + eventListArray[eventCnt][4] + "\">" + realDayOfTheMonth + "</a></font></div></td>";
              }
            } // for (var eventCnt=1; eventCnt < eventListArray.length; eventCnt++)

          }

          if (trackDayOfWeek == 0) {
            document.writeln("<tr>");
          }

          document.writeln(linkContent);

          // Bottom of for loop
          trackDayOfWeek++;
          if (trackDayOfWeek > 6) {
            trackDayOfWeek = 0;
            document.writeln("</tr>");
          }

        } // for (var incr=1; incr <= calTotalMonthDays; incr++)


        // Finish out the calendar
        if (trackDayOfWeek <= 6) {
          for (var incr=trackDayOfWeek; incr <= 6; incr++) {
            document.writeln("<td><div align=\"center\"><font size=\"1\"></font></div></td>");
          }
          document.writeln("</tr>");
        }

        document.writeln("</tbody>");
      document.writeln("</table>");

    document.writeln("</div>");
  document.writeln("</div>");

} // function buildCalendarHtml(calTotalMonthDays, calFirstWeekDay, calMonthName, calMonth, calYear, accordionPanel)
