var EventCalendar = Class.create();
EventCalendar.prototype = {
	dayURL: null,
	monthURL: null,
	calDate: null,
	linkText: null,

	initialize: function(){
		this.calDate = new Date();
		this.calDate.setDate(1);
	},

	cal: function (date){
		var str = '<table cellpadding="0" cellspacing="2" class="' + this.cssTableClass + '">\n';
		str += '<tr class="days"><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>\n';

		var maxday = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		var year = date.getFullYear();
		var month = date.getMonth() + 1;

		var d = new Date();
		var today = ( date.getFullYear() == d.getFullYear() && date.getMonth() == d.getMonth() ) ? d.getDate() : 0;

		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { maxday[1]++; }	//うるう年
		var yo1 = date.getDay();
		var flag = 0;
		var daycnt = 1;
		var url;
		var url1 = this.dayURL + year + "%2F" + ( month < 10 ? ("0" + month) : month ) + "%2F";

		while (flag < 2) {
			for (yo = 0; yo < 7; yo++) {
				if (flag == 0 && yo1 == yo) { flag = 1; }	// 1日
				if (flag == 1) {	// 日付あり
					url = url1 + ( daycnt < 10 ? ("0" + daycnt) : daycnt );
					//過去
					if (daycnt < today) {
						str += '<td style="padding:4px 0px;color:#999999;">' + daycnt + '</td>';
					}
					else if (daycnt == today) {
						str += '<td><a href="' + url + '" class="today">' + daycnt + '</a></td>';
					}
					else{
						str += '<td><a href="' + url + '">' + daycnt + '</a></td>';
					}

					if (++daycnt > maxday[month - 1]) { flag = 2; }	// 最終日
				} else {	// 日付なし
					str += '<td>&nbsp;</td>';
				}
			}
			str += '</tr>\n';
		}

		str += '</table>';
		return str;
	},

	nextMonth: function (m){
		var d = new Date();
		// fix safari's Date#setMonth 1月の時に前の月への場合
		if(m == -1 && this.calDate.getMonth() == 0){
			this.calDate.setMonth(11);
			this.calDate.setYear(this.calDate.getFullYear() - 1);
		}else{
			this.calDate.setMonth(this.calDate.getMonth() + m);
		}
		var month = this.calDate.getMonth() + 1;

		//カレンダーを表示する
		$("cal").innerHTML = this.cal(this.calDate);

		$("calTitle").innerHTML = this.calDate.getFullYear() + "年" + month + "月";
		$("calListMonth").innerHTML = (this.calDate.getFullYear() > d.getFullYear() ? this.calDate.getFullYear() + '年' : '') + month + '月の' + this.linkText + '一覧&raquo;';
		$("calListMonth").href = this.monthURL + this.calDate.getFullYear() + '%2F' + ( month < 10 ? ("0" + month) : month );

		//今月の場合、「前へ」ボタンを無効にする
		if(m <= 0 && this.calDate.getMonth() == d.getMonth() && this.calDate.getFullYear() == d.getFullYear()){
			$("calPrev").blur();
			$("calPrev").innerHTML = "";
		}
		//来月の場合、「前へ」ボタンを有効にする
		else if(m > 0 && (this.calDate.getMonth() == d.getMonth() + 1) && this.calDate.getFullYear() == d.getFullYear()){
			$("calPrev").innerHTML = '<img height="17" width="20" alt="前の月へ" src="/img/2008cat/l_carebtnL.gif"/>';
		}

		return false;
	}
};

