/* Copyright 2006, David H. Marlin
 */

var WEEKDAYS=new Array(7);
WEEKDAYS[0]="Sunday";
WEEKDAYS[1]="Monday";
WEEKDAYS[2]="Tuesday";
WEEKDAYS[3]="Wednesday";
WEEKDAYS[4]="Thursday";
WEEKDAYS[5]="Friday";
WEEKDAYS[6]="Saturday";

var MONTHS=new Array(12);
MONTHS[0]="Jan";
MONTHS[1]="Feb";
MONTHS[2]="Mar";
MONTHS[3]="Apr";
MONTHS[4]="May";
MONTHS[5]="Jun";
MONTHS[6]="Jul";
MONTHS[7]="Aug";
MONTHS[8]="Sep";
MONTHS[9]="Oct";
MONTHS[10]="Nov";
MONTHS[11]="Dec";

var DATETIME=new Date();
var YEAR=DATETIME.getFullYear();
var MONTH=DATETIME.getMonth();
//var MONTH=6;
var DATE=DATETIME.getDate();
//var DATE=30;
var DAY=DATETIME.getDay();
//var DAY=0;
var HOUR=DATETIME.getHours();
var MIN=DATETIME.getMinutes();
if(DATETIME.getSeconds()>30)
  MIN++;

function today1(){return WEEKDAYS[DAY];}
function today2(){return MONTHS[MONTH]+" "+DATE;}
function today3()
{
   if (MIN==0)
      if (HOUR==0)
         return "Midnight";
      else if (HOUR==12)
         return "Noon";

   if (MIN<10)
      min=":0"+MIN;
   else
      min=":"+MIN;

   if (HOUR>11)
      mm=" pm";
   else
      mm=" am";

   if (HOUR>12)
      hour=HOUR-12;
   else if (HOUR==0)
      hour=12;
   else
      hour=HOUR;
   return hour+min+mm;
}

function update()
{
   MIN++;
   if (MIN==60)
   {
      HOUR++;
      MIN=0;
   }
   if (HOUR==24)
      window.setTimeout(location.refresh(),31000);
   else
      document.getElementById('theTime').innerHTML=today3();
}  

function sjulian(month,date,year)
{
   julian=365*year;
   if (year==05 || year==09) // need to make room if previous year was leapyear
      julian++;

   julian+=31*month; // first approx at months, need to fine tune next

   if (month>1) // feb
      julian-=3;
   if (year==8 || year==12) // put one back for leapyear
         julian++;

   if (month>3) // apr
      julian-=1;

   if (month>5) // jun
      julian-=1;

   if (month>8) // sep
      julian-=1;

   if (month>10) // nov
      julian-=1;

   return julian+date;
}


/*******************************************
 *  ThisMonth (Calendar Summary)
 *******************************************/

function ThisMonth(width,numann)
{
   this.theGreenBox=new GreenBox(width,1);
   this.theGreenBox.SetWidths(17,83,0);
   this.theGreenBox.AddTitle("Upcoming Events");
   var today=sjulian(MONTH,DATE,YEAR-2000);
   this.minDateM=today;
   //this.maxDateM=this.minDateM+31;
   //this.maxRowsM=7+2*Math.ceil(numann/2);
   this.maxRowsM=2+2*numann;
   this.numRowsM=0;

   this.events=new Array();
   this.years=new Array();
   this.months=new Array();
   this.dates=new Array();
   this.numEvents=0;
   this.minDateW=today-DAY;
   this.maxDateW=this.minDateW+6;
}

ThisMonth.prototype.AddBoth=function(month,date,year,event)
{
   this.AddMonth(month,date,year,event);
   this.AddWeek(month,date,year,event);
}

ThisMonth.prototype.AddWeek=function(month,date,year,event)
{
   var eventd=sjulian(month-1,date,year);
   if (eventd>=this.minDateW && eventd<=this.maxDateW)
   {
      this.events[this.numEvents]=event;
      this.years[this.numEvents]=year;
      this.months[this.numEvents]=month-1;
      this.dates[this.numEvents]=date;
      this.numEvents++;
   }
}

ThisMonth.prototype.AddMonth=function(month,date,year,event)
{
   var eventd=sjulian(month-1,date,year);
   if (eventd>=this.minDateM && this.numRowsM<=this.maxRowsM)
   {
      this.theGreenBox.Add2("<b>"+MONTHS[month-1]+" "+date+"</b>",event);
      this.numRowsM++;
   }
}

ThisMonth.prototype.GetMonth=function(){return this.theGreenBox.GetTable();}

ThisMonth.prototype.WriteMonth=function(){document.write(this.theGreenBox.GetTable());}

ThisMonth.prototype.GetWeek=function()
{
   var theTable;
   theTable="<table class=thisweek><tr>";
   theTable+="<td class=thisweekdt><b>"+today1()+"<br>"+today2()+"<br><span class=thisweek id=theTime>"+today3()+"</span></b></td>";
   theTable+="<td class=thisweeke><table>";

   var today=sjulian(MONTH,DATE,YEAR-2000);
   for (var ii=0;ii<this.numEvents;ii++)
   {
      var event=sjulian(this.months[ii],this.dates[ii],this.years[ii]);
      var day=event-today;
      if (day<0)
         clss="old";
      else
         clss="current";
      theTable+="<tr><td valign=top class="+clss+">";

      if (day==-1)
         theTable+="<b>Yesterday: </b></td><td valign=top class="+clss+">"+this.events[ii];
      else if (day==0)
         theTable+="<b>Today: </b></td><td valign=top class="+clss+">"+this.events[ii];
      else if (day==1)
         theTable+="<b>Tomorrow: </b></td><td valign=top class="+clss+">"+this.events[ii];
      else
         theTable+="<b>"+WEEKDAYS[day+DAY]+": </b></td><td valign=top class="+clss+">"+this.events[ii];
      theTable+="</td></tr>";
   }
   if (this.numEvents==0)
      theTable+="<tr><td class=current>There are no MHS Band events this week.</td></tr>";

   theTable+="</table></td><td class=thisweekdt></td>";
   theTable+="</tr></table>";

   window.setInterval("update();",60000);

   return theTable;//+offset;
}
