// JavaScript Document

//コンストラクタ
function Calendar(year, month, closed) {
	this.rclosed = closed;

	this.theYear = year;
	this.theMonth = month;
	this.getCal = getCal;
	this.nextMonth = nextMonth;
	this.prevMonth = prevMonth;
}

//カレンダーを戻す
function getCal() {
		var col = 1; //カラム
		var calStr;
		var numOfDays = getMonthDays(this.theYear, this.theMonth);
		var dayOfWeek = getFirstDay(this.theYear, this.theMonth);
		var dayStr;
		var days = new Array("日", "月", "火", "水", "木", "金", "土");

		//曜日を表示
		calStr ="<table><tr>";
		for (var i = 0; i < days.length; i++) {
			calStr += "<td>" + days[i] + "</td>";
		}
		calStr += "</tr><tr>";
			
		//最初の日までカラムをスキップ
		for (var i = 1; i <= dayOfWeek; i++) {
			col++;
			calStr += "<td></td>";
		};
			
		//日を順に書き出す
		for (var day = 1; day <= numOfDays; day++) {
			if (col == this.rclosed) {

				//dayStr = "<td id='d" + day + "' style='color:red'>" + day + "</td>";
				dayStr = "<td id='d" + day + "'>" + day + "</td>";
			} else {
				dayStr = "<td id='d" + day + "'>" + day + "</td>";
				//dayStr = "<td id='d" + day + "' bgcolor='#ffffff'>" + day + "</td>";
			} 		
			if (col == 7) {
				calStr += dayStr + "</tr><tr>";
				col = 1;
			} else {
				calStr += dayStr;
				col++;
			}
		}
		calStr += "</tr></table>";
		return calStr;
}

function nextMonth() {
	if (this.theMonth == 11) {
		this.theMonth = 0;
		this.theYear++;
	} else {
		this.theMonth++;
	}
}

function prevMonth() {
	if (this.theMonth == 0) {
		this.theMonth= 11;
		this.theYear--;
	} else {
		this.theMonth--;
	}
}
	
// 閏年かどうかを調べる
function isLeapYear(year) {
	if (((year % 4 == 0) && (year % 100 != 0)) 
			|| (year % 400 == 0)) {
		return true;
	} else {
		return false;
	}
}

// 月の最初の曜日を求める
function getFirstDay(theYear, theMonth){
	var tmpDate = new Date(theYear, theMonth, 1);
	return tmpDate.getDay();
}

// 月の日数を求める
function getMonthDays(theYear, theMonth){
	var monthDays = new Array (31, 28, 31, 30, 31, 30, 31,
									31, 30, 31, 30, 31);
	if (isLeapYear(theYear)) {
		monthDays[1] = 29;
	}
	return monthDays[theMonth];
}

function init() {
	var theDate = new Date();
	myCal = new Calendar(theDate.getFullYear(), theDate.getMonth(), rClosed);
	setCalendar();
}


function setCalendar() {
	var cal = document.getElementById("calContent");
	cal.innerHTML = myCal.getCal();
	var hContent = "<div id='calHeaer' style='text-align:center'>" 
			+ "<span id='prev'> &#171; </span>"
			+myCal.theYear + "年"
			+ (myCal.theMonth +1) + "月" 
			+ "<span id='next'> &#187;</span>"
			+ "</div>";
	var header = document.getElementById("calHeader");
	header.innerHTML = hContent;

	//ハンドラ
	document.getElementById("prev").onclick = toPrevMonth;
	document.getElementById("next").onclick = toNextMonth;

	// 休業日を設定	
	setHolidays();
}
	
function toPrevMonth() {
	myCal.prevMonth();
	setCalendar();
}

function toNextMonth() {
	myCal.nextMonth();
	setCalendar();
}

//休業日のセルの背景色をピンクで表示
function setHolidays() {
	for (var i = 0; i < Holidays.length; i++) {
		var aDay = Holidays[i];
		if ((myCal.theYear == aDay.getFullYear()) 
			&& (myCal.theMonth == (aDay.getMonth()))) {
			//document.getElementById("d" + aDay.getDate()).style.color = "red";
			document.getElementById("d" + aDay.getDate()).style.backgroundColor="#FFB6C1"
		}
	}
}

function aHoliday(year, month ,day) {
	return new Date(year, month - 1, day);
}


