var days  = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var dow   = ["日","一","二","三","四","五","六"];
var today     = new Date();
var thisDay   = today.getDate();
var thisMonth = today.getMonth();
var thisYear  = y2k(today.getYear());
var month = thisMonth;
var year = thisYear;

var eventList;

$('document').ready(function(){
	initCalendar(month, year);
});

function initCalendar(month, year){
	this.month = month;
	this.year = year;
	var prevMonth = month - 1 > -1 ? month - 1 : 11;
	var prevYear = prevMonth != 11 ? year : year - 1;
	var nextMonth = month + 1 > 11 ? 0 : month + 1;
	var nextYear = nextMonth != 0 ? year : year + 1;
	$('.calendar .prev a').attr('href', 'javascript:initCalendar(' + prevMonth + ', ' + prevYear + ')');
	$('.calendar .next a').attr('href', 'javascript:initCalendar(' + nextMonth + ', ' + nextYear + ')');
	
	$.ajaxSetup ({ cache: false });
	// ajax code here
	$('div.eventList').load("activitySchedule.action?year="+year+"&month="+month, function(){
	  eventList = innerXHTML(document.getElementById('monthEventList')).split(",");
	  
	  getMonthYear(month, year);
	  getCalendar(month, year);
	  
	  $('span.jt').cluetip({
		  splitTitle: '|',
		  arrows: true,
		  sticky: true,
		  mouseOutClose: true,
		  closePosition: 'title',
		  closeText: '[關閉]'
		});
	});
}

function getMonthYear(Month, Year){
	var m = (Month+1).toString();
	while ( m.length < 2 ){
	  m = "0" + m;
	}
	$('a.now').text(Year + "/" + m);
}

function getCalendar(Month,Year){
	// output String temp
	var outputString = null;
	
	firstDay = new Date(Year,Month,1);
    startDay = firstDay.getDay();
    
    // 處理閏年
    if (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0))
      days[1] = 29; 
    else
      days[1] = 28;
	
	// initial
	outputString = "<table><tr>";
	// 放入星期列
    for (i=0; i<7; i++){
      switch (i){
        case 0:
        	outputString += "<th scope=\"col\" class=\"sat\" >" + dow[i] + "</th>";
        	break;
        case 6:
        	outputString += "<th scope=\"col\" class=\"sun\" >" + dow[i] + "</th>";
        	break;
        default:
        	outputString += "<th>" + dow[i] + "</th>";
        	break;
      }
    }
	outputString += "</tr>";
	
	// 放入日期
	outputString += "<tr>";
	var column = 0;
    var lastMonth = Month - 1;
    if (lastMonth == -1)
      lastMonth = 11;
    // 放入前一個月的空白
    for (i=0; i<startDay; i++){
      outputString += "<td>&nbsp;</td>";
      column++;
    }
    // 放入當月日期
    for (i=1; i<=days[Month]; i++){
      // 活動變色及事件
      if (eventList[i-1] != null && eventList[i-1] != "")
      	outputString += "<td class=\"act\"><span class=\"jt\" style=\"display:block; width:100%; height:100%; text-align:center;\" title=\"" + (Month+1) + "月" + i + "日|" + eventList[i-1] + "\">" + i + "</span></td>";
      else if ((i == thisDay)  && (Month == thisMonth) && (Year == thisYear))
      	outputString += "<td>" + i + "</td>";	// 當日
      else
        outputString += "<td>" + i + "</td>";
      column++;
      if (column == 7){
      	outputString += "</tr><tr>";
        column = 0;
      }
    }
    // 處理最末行空格
    if (column > 0){
      while ( column < 7 ){
      	outputString += "<td>&nbsp;</td>";
        column++;
      }
    }
    outputString += "</tr></table>";
    
    $('div.calendarTable').html(outputString);
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }
