
var yearToDisplay=new Date().getFullYear();
var curDate=new Date();
var curYear = curDate.getFullYear();
var curMonth = curDate.getMonth();
var curDayInMonth = curDate.getDate();

var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var daysOfWeek = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
function toMyDateString (inDate)
{
	return daysOfWeek[inDate.getDay()] + ' ' + months[inDate.getMonth()] + ' ' + inDate.getDate() + ', ' + inDate.getFullYear() + ' ' + inDate.toLocaleTimeString();
}
function daysInMonth (inYear, inMonth)
{
var daycounts = [31,28,31,30,31,30,31,31,30,31,30,31]; 
if (((0 == (inYear%4)) && ( (0 != (inYear%100)) || (0 == (inYear%400)))) && inMonth == 1) 
 return 29;
 else 
 return daycounts[inMonth];
}
function firstdaysInMonth (inYear, inMonth)
{
	 return new Date (inYear, inMonth, 1).getDay();
}
function getHolidayDateTag (inYear, inMonth, inDay, inMessage)
{
   var str="<a class='calendarhol' title='" + inMessage + "' onMouseOut='this.className=\"calendarhol\"' onMouseOver='this.className=\"calendarholhover\"; setCalEventDiv (" + inYear + ","+inMonth+","+inDay+", \""+inMessage+ "\" " +");'>" + inDay + "</a>";
	 return str;
}
function isDayHoliday (inYear, inMonth, inDay, inAppointment)
{
 var strAppStart=inAppointment[0];
 var strAppEnd=inAppointment[1];
 var strAppMessage=inAppointment[2]; 
 var startArray =strAppStart.split("/");
 var endArray=strAppEnd.split("/");
 var hasStart = strAppStart.length > 0;
 var hasEnd = strAppEnd.length > 0;
 var startDay, startMonth, startYear;
 var endDay, endMonth, endYear;
 if (hasStart)
 {
	 startDay=startArray[1];
	 startMonth=startArray[0];
	 if(startArray.length==3)	 
	 startYear=startArray[2]; 	
		else
  	 startYear=inYear
 }
 if (hasEnd)
 {
	 endDay=endArray[1];
	 endMonth=endArray[0];
	 if(endArray.length==3)	 
	 endYear=endArray[2]; 	
		else
  	 endYear=inYear
 }
 else if (hasStart)
 {
 	endDay=startDay;
	endMonth=startMonth;
	endYear=startYear;
 }
 if (!hasStart)
 {
 startDay=endDay;
 startMonth=endMonth;
 startYear=endYear;
 }
 return ( (inDay >= startDay && inMonth >= startMonth && inYear >= startYear)
 && ( inDay <= endDay && inMonth <=endMonth && inYear <= endYear));
}
function CheckDate(year,month,dayno)
{
  var retval = new String(dayno);
  var m = month + 1;
  var appMessage="";
  var numMessages=0;
  for (var i = 0 ; i < appointments.length; i++)
  {
	  if (isDayHoliday(year,month+1,dayno, appointments[i]))
	  {
  		  if (numMessages > 0)
		  appMessage += ", ";
		  numMessages++;
		  appMessage+=appointments[i][2];
	  } 
  }
  if (appMessage.length >	0)
	  retval = getHolidayDateTag(year, month+1, dayno, appMessage);

	if (year == curYear && month == curMonth && dayno == curDayInMonth)
		retval='<b>' + retval +'<b>';
	return retval;
}
function PrintMonth(year, month)
{
  var done = false;
  var day = 0;
  var strMonth=("<table class=\"calendarinner\"> <div class=\"calendarmonthtitle\">" + months[month] + "</div><thead>");
  for(var j = 0; j < 7; j++)
  {
	 strMonth+=("<th align='left' class='calendardayofweek'>" + daysOfWeek[j]+ "</th>");
	}
	strMonth+=("</thead>");
	var numWeeks=0;
  while(!done)
  {
  numWeeks++;
	 strMonth+=("<tr>");
	 strMonth+=PrintWeek(month,day, firstdaysInMonth(year,month), daysInMonth (year, month));
	 strMonth+=("</tr>");

	 day += 7;
	 if( day > daysInMonth (year, month) + firstdaysInMonth(year,month))
	 {
		 done = true;
	 }
  }
  for (; numWeeks < 6; numWeeks++)
	  strMonth+=("<tr><td>&nbsp;</td></tr>");
  strMonth+=("</tbody></table>");
  return(strMonth);
}

function PrintWeek(monthno,start,min,max)
{
  var d;
  var desc;
  var strWeek="";
  for(var j = 0; j < 7; j++)
  {
  	 d = start + j;
 	if (yearToDisplay == curYear && monthno == curMonth && (d - min + 1) == curDayInMonth)
	 strWeek+=("<td class=\"calendartoday\">");
	else		 
	 strWeek+=("<td class=\"calendarDay\">");

	 if(d >= min && d < max + min)
	 {
		 desc = CheckDate(yearToDisplay, monthno,d - min + 1);
		 strWeek+=(desc);
	 }
	 strWeek+=("</td>");
  }
  return (strWeek);
}
function PrintYear (inYear)
{
	var leftBtnString ="<a href=\"#\" onMouseOut=\"MM_swapImgRestore()\" onMouseUp=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('prevYearButton','','../images/nav/ButtonLeft_f2.png',1)\" onMouseDown=\"writePreviousYear(); MM_swapImage('prevYearButton','','../images/nav/ButtonLeft_f3.png',1); \"><img src=\"../images/nav/ButtonLeft.png\" name=\"prevYearButton\" width=\"28\" height=\"28\" border=\"0\"></a>";
	var rightBtnString="<a href=\"#\" onMouseOut=\"MM_swapImgRestore()\" onMouseUp=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('nextYearButton','','../images/nav/ButtonRight_f2.png',1)\" onMouseDown=\"writeNextYear(); MM_swapImage('nextYearButton','','../images/nav/ButtonRight_f3.png',1);\"><img src=\"../images/nav/ButtonRight.png\" name=\"nextYearButton\" width=\"28\" height=\"28\" border=\"0\"></a>";
	calendarString="<table cellpadding=\"0\" cellspacing=\"2\"><tr><td  align=\"right\">" + leftBtnString + 
	"</td><td align=\"center\"><a href=\"javascript:writeCurrentYear();\"><h2 id=\"calYearToDisplayDiv\"> </a>" +
	 yearToDisplay +"</h2></td><td align=\"left\">"+ rightBtnString +"</td>  </tr>";
  
	for (var i=0; i < 12; i++)
	{
	quarterStart=i%3==0;
	quarterEnd=(i-2)%3==0;
		if (quarterStart) calendarString+= ("<tr>");			
			calendarString+= ("<td class='calendarouter' valign='top'>");
			calendarString+= (PrintMonth(inYear, i));
			calendarString+= ("</td>");
		if (quarterEnd) calendarString += ("</tr>");
	}					
	calendarString+= ("</table>");	
	return calendarString;
}
function writeCurrentYear()
{
	yearToDisplay=new Date().getFullYear();
	writeYear();
}
function writeNextYear()
{
	yearToDisplay++;
	writeYear();	
}
function writePreviousYear()
{
	if (yearToDisplay > 2000) 
	{
		yearToDisplay--;
		writeYear();
	}
}	
function writeYear()
{	
		calDiv.innerHTML=PrintYear(yearToDisplay);		
		calYearToDisplayDiv.innerText=yearToDisplay;
}
function setCalEventDiv (inYear, inMonth, inDay, inMessage)
{
 calEventDiv.innerHTML=inMonth +"/"+inDay+"/"+inYear+ " "+inMessage;
}

