var CALENDAR_ASP_URL = "http://198.252.241.11/homecal/calendar.aspx";

var _calendarMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var _calendarWeekDays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var _calendarDepartment = null;
var _calendar = null;
var _calendarSelectedDays = null;

function CreateCalendar()
{
  var obj = new Object();
  var date = new Date();
  obj.date = date.getDate();
  obj.month = date.getMonth();
  obj.year = date.getFullYear();
  var maxDays = new Array(31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  if (obj.month == 1)
  {
    obj.maxDays = ((obj.year % 100 != 0) && (obj.year % 4 == 0)) || (obj.year % 400 == 0) ? 29 : 28;
  }
  else
  {
    obj.maxDays = maxDays[obj.month];
  }

  function getCells()
  {
    var date = new Date(this.year, this.month, 1);
    var day = date.getDay();
    var cells = new Array(42);

    for (var i = 1; i <= 42; i++)
    {
      cells[i - 1] = (i - day >= 1) && (i - day <= this.maxDays) ? i - day : -1;
    }

    return cells;
  }

  obj.getCells = getCells;
  return obj;
}

var _calCellBgMsOver, _calCellBgMsOut;

function CalendarCellMsOver(cell)
{
  //cell.style.backgroundColor = "#e6e6e6";

  if (_calCellBgMsOver == null)
  {
    _calCellBgMsOver = new Image();
    _calCellBgMsOver.src = "images/cal_cell_bg_ms_over.gif";
  }

  if (cell.className == "selected")
  {
    //cell.style.backgroundImage = "url(images/cal_cell_bg_ms_over.gif)";
    cell.style.backgroundImage = "url(" + _calCellBgMsOver.src + ")";
    cell.style.cursor = "pointer";
  }
  else
  {
    cell.style.cursor = "default";
  }
}

function CalendarCellMsOut(cell)
{
  //cell.style.backgroundColor = "white";
  cell.style.fontSize = "9pt";
  cell.style.textDecoration = "none";

  if (_calCellBgMsOut == null)
  {
    _calCellBgMsOut = new Image();
    _calCellBgMsOut.src = "images/cal_cell_bg_ms_out.gif";
  }

  //cell.style.backgroundImage = "url(images/cal_cell_bg_ms_out.gif)";
  cell.style.backgroundImage = "url(" + _calCellBgMsOut.src + ")";
}

function LoadCalendarEvents(day)
{
  var day = day < 10 ? "0" + day : day;
  var month = _calendar.month + 1;

  if (month < 10)
  {
    month = "0" + month;
  }

  var date = month + "/" + day + "/" + _calendar.year;
  document.getElementById("calendarEventsDate").innerHTML = "(" + date + ")";
  var params = "action=GetCalendarEvents&department=" + _calendarDepartment + "&date=" + date;
  document.getElementById("calendarEventsOut").src = CALENDAR_ASP_URL + "?" + params;
}

function LoadTodaysEvents()
{
  if (_calendarSelectedDays != null)
  {
    for (var i = _calendar.date; i <= _calendar.maxDays; i++)
    {
      for (var j = 0; j < _calendarSelectedDays.length; j++)
      {
        if (i == _calendarSelectedDays[j])
        {
          document.getElementById("calendarEventsOut").style.display = "block";
          LoadCalendarEvents(i);
          return;
        }
      }
    }
  }

  document.getElementById("calendarEventsError").style.display = "block";
}

function PrintCalendar(department)
{
  _calendarDepartment = department;
  _calendar = CreateCalendar();
  var cells = _calendar.getCells();
  document.write('<' + 'table id="calendar" cellpadding="0" cellspacing="0">');
  document.write('<' + 'caption>' + _calendarMonths[_calendar.month] + ' ' + _calendar.year + '<' + '/caption>');
  document.write('<' + 'tr>');

  for (var i = 0; i < 7; i++)
  {
    document.write('<' + 'th' + (i == 0 ? ' class="first"' : (i == 6 ? ' class="last"' : "")) + '>' + _calendarWeekDays[i].substring(0, 3) + '<' + '/th>');
  }

  document.write('<' + '/tr>');

  for (var i = 0; i < cells.length; i += 7)
  {
    if (cells[i] == -1 && cells[i + 6] == -1)
    {
      break;
    }

    document.write('<' + 'tr>');

    for (var j = 0; j < 7; j++)
    {
      var day = cells[i + j];

      if (day == -1)
      {
        document.write('<' + 'td class="empty">&nbsp;<' + '/td>');
        continue;
      }

      var selected = false;

      if (_calendarSelectedDays != null)
      {
        for (var k = 0; k < _calendarSelectedDays.length; k++)
        {
          if (day == _calendarSelectedDays[k])
          {
            selected = true;
            break;
          }
        }
      }

      document.write('<' + 'td align="center" onmouseover="CalendarCellMsOver(this)" onmouseout="CalendarCellMsOut(this)"' + (selected ? ' onclick="LoadCalendarEvents(' + day + ')" class="selected"' : '') + '>' + day + '<' + '/td>');
    }

    document.write('<' + '/tr>');
  }

  document.write('<' + '/table>');
}

