﻿
var Selected_Month;
var Selected_Year;
var Current_Date = new Date();
var Current_Month = Current_Date.getMonth();

var Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var Month_Label = new Array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月');

var Current_Year = Current_Date.getYear();
if (Current_Year < 1000)
Current_Year+=1900


var Today = Current_Date.getDate();

function numTo16(num) {
	if (num == 10) 
		return 'A';
	else if (num == 11) 
		return 'B';
	else if (num == 12)
		return 'C';
	else if (num == 13) 
		return 'D';
	else if (num == 14)
		return 'E';
	else if (num == 15) 
		return 'F';	
	return num;	
}
function SDate (message, color) {
	this.message = message;
	this.color = color;
}
function Header(Year, Month) {

   if (Month == 1) {
   Days_in_Month[1] = ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 !=0))) ? 29 : 28;
   }
   var Header_String = '<span style="color:#';
   Header_String += '' + numTo16(Month) + '5' + numTo16((Month+Year) % 16) + '5' +  numTo16((Month*Year) % 16) + '5';
   Header_String += '" >';	
   Header_String += Month_Label[Month] + ' ' + Year;
   return Header_String;
}


function Make_Calendar(Year, Month) {
	
   var First_Date = new Date(Year, Month, 1);
   var Heading = Header(Year, Month);
   getObject("calendarHeader").innerHTML = '<div style="text-align:center;font-weight:bold;" >' + Heading + '</div>';
   var First_Day = First_Date.getDay() + 1;
   if (((Days_in_Month[Month] == 31) && (First_Day >= 6)) ||
       ((Days_in_Month[Month] == 30) && (First_Day == 7))) {
      var Rows = 6;
   }
   else if ((Days_in_Month[Month] == 28) && (First_Day == 1)) {
      var Rows = 4;
   }
   else {
      var Rows = 5;
   }

   var HTML_String = '<table id="calendar">';

   HTML_String += '<tr>		<th style="color:#CC0000;" >日</th>		<th >一</th>		<th >二</th>		<th >三</th>		<th >四</th>		<th >五</th>		<th >六</th>	</tr>';

   var Day_Counter = 1;
   var Loop_Counter = 1;
   for (var j = 1; j <= Rows; j++) {
      HTML_String += '<tr ALIGN="left" VALIGN="top">';
      for (var i = 1; i < 8; i++) {
	  	date_str = 'date' + str_num(Day_Counter) + str_num(Selected_Month) + Selected_Year;		
		 if ((Loop_Counter >= First_Day) && (Day_Counter <= Days_in_Month[Month])) {
		 	HTML_String += '<td class="calendarTD" ';					
		 	HTML_String += 'style="background-color:#f9f9ff;';
			if (i == 1) { // Sunday
				HTML_String += 'color:#CC0000;';					
			} 
			if ((Day_Counter == Today) && (Year == Current_Year) && (Month == Current_Month)) {	// today
				HTML_String +='text-decoration:underline;text;font-weight:bold;';
			}	
			if (eval('window.' + date_str)) {
				// backgroundcolor
				HTML_String += 'background-color:' + eval(date_str).color + ';';
				HTML_String += 'cursor:pointer;" onmouseover="showMessage(';				
				HTML_String += "'" + eval(date_str).message + "'";
				HTML_String += ')" onmouseout="hideMessage()"';
			} else {
				HTML_String += '"';
			}
			HTML_String += '>';
		    HTML_String += Day_Counter 
		    HTML_String += '</td>';
			
            Day_Counter++;    
         }
         else {
            HTML_String += '<td></td>';
         }
         Loop_Counter++;
      }
      HTML_String += '</tr>';
   }
   
   HTML_String += '</table>';
   getObject("calendarTable").innerHTML = HTML_String;
}

function Next_Month() {
	if (Selected_Month == 11) {
		Selected_Year ++;
		Selected_Month = 0;
	} else 
		Selected_Month++;
	Make_Calendar(Selected_Year, Selected_Month);	
}

function Prev_Month() {
	if (Selected_Month == 0) {
		Selected_Year --;
		Selected_Month = 11;
	} else 
		Selected_Month--;
	Make_Calendar(Selected_Year, Selected_Month);	
}

function Reset_Month() {
	Selected_Month = Current_Month;
	Selected_Year = Current_Year;
	Make_Calendar(Current_Year, Current_Month);
}
function str_num(num) {
	if (num < 10) {
		return ('0' + num);
	} else
		return num;
}
function showMessage (message) {
	getObject("calendarMessage").innerHTML = message;
}
function hideMessage() {
	getObject("calendarMessage").innerHTML = '將鼠標移至特殊日子上<br />，即可顯示當日事項';
}
function calendar_init() {
	// manual setting, month x = real month x + 1, eg. month 9 = October
	// holidays
	

	for (i = 22; i <= 31; i++) {
		eval ("date" + str_num(i) + "112009 = new SDate ('聖誕節及新年假期', '#FF3399');");
	}
	for (i = 11; i <= 20; i++) {
		eval ("date" + str_num(i) + "012010 = new SDate ('農曆新年假期', '#FF3399');");
	}
	for (i = 2; i <= 10; i++) {
		eval ("date" + str_num(i) + "032010 = new SDate ('復活節假期', '#FF3399');");
	}
	for (i = 4; i <= 7; i++) {
		eval ("date" + str_num(i) + "102008 = new SDate ('期中考(六年級呈分試)', '#00CCFF');");
	}
	for (i = 13; i <= 16; i++) {
		eval ("date" + str_num(i) + "002009 = new SDate ('期考', '#00CCFF');");
	}
	for (i = 24; i <= 27; i++) {
		eval ("date" + str_num(i) + "022009 = new SDate ('期中考(六年級呈分試)', '#00CCFF');");
	}
	for (i = 8; i <= 11; i++) {
		eval ("date" + str_num(i) + "052009 = new SDate ('期考(五年級呈分試)', '#00CCFF');");
	}	
	for (i = 11; i <= 31; i++) {
		eval ("date" + str_num(i) + "062009 = new SDate ('暑假', '#FF3399');");
	}	
	for (i = 1; i <= 31; i++) {
		eval ("date" + str_num(i) + "072009 = new SDate ('暑假', '#FF3399');");
	}
	date01002010 = new SDate ('聖誕節及新年假期', '#FF3399');
	date02002010 = new SDate ('聖誕節及新年假期', '#FF3399');
	// saturdays

date05082009 = date19082009 = date10092009 = date24092009 = date07102009 = date21102009 = date05112009 = date05112009 = date19112009 = date16002010 = date30002010 = date27012010 = date13022010 = date27022010 = date24032010 = date15042010 = date29042010 = date12052010 = date26052010 = new SDate ('長週', '#FF9900');
date12082009 = date26082009 = date17092009 = date31092009 = date14102009 = date28102009 = date12112009 = date09002010 = date23002010 = date06012010 = date06022010 = date20022010 = date17032010 = date08042010 = date22042010 = date05052010 = date19052010 = date03062010 = new SDate ('短週', '#FFFF33');
	

		date01082009 = new SDate ('上學期開學', '#66FF00');
		date03092009 = new SDate ('中秋節', '#FF3399');
		date01092009 = new SDate ('國慶日', '#FF3399');
		date26092009 = new SDate ('重陽節', '#FF3399');
		date21092008 = new SDate ('陸運會', '#66FF00');
		date22092008 = new SDate ('陸運會翌日', '#FF3399');
		date13012009 = new SDate ('上午校旅行', '#66FF00');
		date14012009 = new SDate ('上午校旅行翌日', '#FF3399');
		date25002010 = new SDate ('下學期開始', '#66FF00');
		date06032010 = new SDate ('清明節翌日', '#FF3399');
		date01042010 = new SDate ('勞動節', '#FF3399');
		date21042010 = new SDate ('佛誔', '#FF3399');
		date16052010 = new SDate ('端午節', '#FF3399');
		date01062010 = new SDate ('香港特別行政區成立日', '#FF3399');
		date25032009 = new SDate ('長週及家長日', '#66FF00');


	
	Selected_Month = Current_Month;
	Selected_Year = Current_Year;
	Make_Calendar(Current_Year, Current_Month);
	hideMessage();
}