//CSSのクラス名を指定してください
var classNames = new Array('holyday','xday','birthday');

//定休日などはここで設定します。
//holyday[ここに日にちを半角で] = X; Xにはクラスの配列番号を。
var holyday = new Object();
//下記の場合だと2006/9/18はclassNamesで指定されている0番目のクラスにするという意味
//0=休業日（赤色）
//1=予約営業日（青色）
holyday["2009/10/24"] = 1;
holyday["2009/10/25"] = 1;
holyday["2009/11/1"] = 1;
holyday["2009/11/3"] = 1;
holyday["2009/11/7"] = 1;
holyday["2009/11/8"] = 1;
holyday["2009/11/14"] = 1;
holyday["2009/11/15"] = 1;
holyday["2009/11/21"] = 1;
holyday["2009/11/22"] = 1;
holyday["2009/11/23"] = 0;
holyday["2009/11/28"] = 1;
holyday["2009/11/29"] = 1;
holyday["2009/12/5"] = 1;
holyday["2009/12/6"] = 1;
holyday["2009/12/12"] = 1;
holyday["2009/12/13"] = 1;
holyday["2009/12/19"] = 1;
holyday["2009/12/20"] = 1;
holyday["2009/12/23"] = 1;
holyday["2009/12/26"] = 1;
holyday["2009/12/27"] = 1;
holyday["2009/12/30"] = 1;
holyday["2009/12/31"] = 1;
holyday["2010/1/1"] = 0;
holyday["2010/1/2"] = 0;
holyday["2010/1/3"] = 0;
holyday["2010/1/9"] = 1;
holyday["2010/1/10"] = 0;
holyday["2010/1/11"] = 0;
holyday["2010/1/16"] = 1;
holyday["2010/1/17"] = 0;
holyday["2010/1/23"] = 1;
holyday["2010/1/24"] = 0;
holyday["2010/1/30"] = 1;
holyday["2010/1/31"] = 0;
holyday["2010/2/6"] = 1;
holyday["2010/2/7"] = 1;
holyday["2010/2/11"] = 0;
holyday["2010/2/13"] = 1;
holyday["2010/2/14"] = 1;
holyday["2010/2/20"] = 1;
holyday["2010/2/21"] = 1;
holyday["2010/2/27"] = 1;
holyday["2010/2/28"] = 1;
holyday["2010/3/6"] = 1;
holyday["2010/3/7"] = 1;
holyday["2010/3/13"] = 1;
holyday["2010/3/14"] = 1;
holyday["2010/3/20"] = 1;
holyday["2010/3/21"] = 1;
holyday["2010/3/22"] = 1;
holyday["2010/3/27"] = 1;
holyday["2010/3/28"] = 1;
holyday["2010/4/3"] = 1;
holyday["2010/4/4"] = 1;
holyday["2010/4/10"] = 1;
holyday["2010/4/11"] = 1;
holyday["2010/4/17"] = 1;
holyday["2010/4/18"] = 1;
holyday["2010/4/24"] = 1;
holyday["2010/4/25"] = 1;
holyday["2010/4/29"] = 1;
holyday["2010/5/1"] = 1;
holyday["2010/5/2"] = 0;
holyday["2010/5/3"] = 0;
holyday["2010/5/4"] = 0;
holyday["2010/5/5"] = 0;
holyday["2010/5/8"] = 1;
holyday["2010/5/9"] = 1;
holyday["2010/5/15"] = 1;
holyday["2010/5/16"] = 1;
holyday["2010/5/22"] = 1;
holyday["2010/5/23"] = 1;
holyday["2010/5/29"] = 1;
holyday["2010/5/30"] = 1;
holyday["2010/6/5"] = 1;
holyday["2010/6/6"] = 1;
holyday["2010/6/12"] = 1;
holyday["2010/6/13"] = 1;
holyday["2010/6/19"] = 1;
holyday["2010/6/20"] = 1;
holyday["2010/6/26"] = 1;
holyday["2010/6/27"] = 1;
holyday["2010/7/3"] = 1;
holyday["2010/7/4"] = 1;
holyday["2010/7/10"] = 1;
holyday["2010/7/11"] = 1;
holyday["2010/7/17"] = 1;
holyday["2010/7/18"] = 1;
holyday["2010/7/19"] = 1;
holyday["2010/7/24"] = 1;
holyday["2010/7/25"] = 1;
holyday["2010/7/31"] = 1;
holyday["2010/7/31"] = 1;
holyday["2010/8/1"] = 1;
holyday["2010/8/7"] = 1;
holyday["2010/8/8"] = 1;
holyday["2010/8/13"] = 0;
holyday["2010/8/14"] = 0;
holyday["2010/8/15"] = 0;
holyday["2010/8/21"] = 1;
holyday["2010/8/22"] = 1;
holyday["2010/8/28"] = 1;
holyday["2010/8/29"] = 1;
holyday["2010/9/4"] = 1;
holyday["2010/9/5"] = 1;
holyday["2010/9/11"] = 1;
holyday["2010/9/12"] = 1;
holyday["2010/9/18"] = 1;
holyday["2010/9/19"] = 1;
holyday["2010/9/20"] = 1;
holyday["2010/9/23"] = 1;
holyday["2010/9/25"] = 1;
holyday["2010/9/26"] = 1;
holyday["2010/10/2"] = 1;
holyday["2010/10/3"] = 1;
holyday["2010/10/9"] = 1;
holyday["2010/10/10"] = 1;
holyday["2010/10/11"] = 1;
holyday["2010/10/16"] = 1;
holyday["2010/10/17"] = 1;
holyday["2010/10/23"] = 1;
holyday["2010/10/24"] = 1;
holyday["2010/10/30"] = 1;
holyday["2010/10/31"] = 1;
holyday["2010/11/3"] = 1;
holyday["2010/11/6"] = 1;
holyday["2010/11/7"] = 1;
holyday["2010/11/13"] = 1;
holyday["2010/11/14"] = 1;
holyday["2010/11/20"] = 1;
holyday["2010/11/21"] = 1;
holyday["2010/11/23"] = 1;
holyday["2010/11/27"] = 1;
holyday["2010/11/28"] = 1;
holyday["2010/12/4"] = 1;
holyday["2010/12/5"] = 1;
holyday["2010/12/11"] = 1;
holyday["2010/12/12"] = 1;
holyday["2010/12/18"] = 1;
holyday["2010/12/19"] = 1;
holyday["2010/12/23"] = 1;
holyday["2010/12/25"] = 1;
holyday["2010/12/26"] = 1;
holyday["2010/12/30"] = 1;
holyday["2010/12/31"] = 1;




var today = new Date();
var cal_year = today.getYear();
var cal_month = today.getMonth() + 1;
var cal_day = today.getDate();
if (cal_year < 1900) cal_year += 1900;
document.write("<div id='calendar'></div>");
var cal = document.getElementById("calendar");
var defaultBackgroundColors = new Object();
var to_year = cal_year;
var to_month = cal_month;
var to_day = cal_day;

function tdOver(obj){
	defaultBackgroundColors[obj] = obj.style.backgroundColor;
	obj.style.backgroundColor = '#E8EEF9';
}
function tdOut(obj){
	obj.style.backgroundColor = defaultBackgroundColors[obj];
}
function spanOver(obj){
	defaultBackgroundColors[obj] = obj.style.backgroundColor;
	obj.style.color = '#FF9900';
}
function spanOut(obj){
	obj.style.color = defaultBackgroundColors[obj];
}

function currentCal(){
	cal_year = to_year;
	cal_month = to_month;
	cal_day = to_day;
	writeCal(cal_year,cal_month,cal_day);
}
function prevCal(){
	cal_month -= 1;
	if(cal_month < 1){
		cal_month = 12;
		cal_year -= 1;
	}
	writeCal(cal_year,cal_month,0);
}
function nextCal(){
	cal_month += 1;
	if(cal_month > 12){
		cal_month = 1;
		cal_year += 1;
	}
	writeCal(cal_year,cal_month,0);
}
function getWeek(year,month,day){
	if (month == 1 || month == 2) {
		year--;
		month += 12;
	}
	var week = Math.floor(year + Math.floor(year/4) - Math.floor(year/100) + Math.floor(year/400) + Math.floor((13 * month + 8) / 5) + day) % 7;
	return week;
}
function writeCal(year,month,day){
	var calendars = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	var weeks = new Array("日","月","火","水","木","金","土");
	var monthName = new Array('none','1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月');
	
	var cal_flag = 0;
	if(year % 100 == 0 || year % 4 != 0){
		if(year % 400 != 0){
			cal_flag = 0;
		}
		else{
			cal_flag = 1;
		}
	}
	else if(year % 4 == 0){
		cal_flag = 1;
	}
	else{
		cal_flag = 0;
	}
	calendars[2] += cal_flag;
	
	var cal_start_day = getWeek(year,month,1);
	var cal_tags = "<table border='0' cellspacing='0' cellpadding='0' class='calendar'>";
	cal_tags += "<tr><th colspan='7'>";
	cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='nextCal();'>&nbsp;▼</span>";
	cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='currentCal();'>今月</span>";
	cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='prevCal();'>▲&nbsp;</span>";
	cal_tags +=  year + "年" +monthName[month] + "</th></tr>";
	cal_tags += "<tr class='headline'>";
	for(var i=0;i<weeks.length;i++){
		cal_tags += "<td>" + weeks[i] + "</td>";
	}
	cal_tags += "</tr><tr>";
	for(var i=0;i < cal_start_day;i++){
		cal_tags += "<td>&nbsp;</td>";
	}
	
	//main
	for(var cal_day_cnt = 1;cal_day_cnt <= calendars[month];cal_day_cnt++){
		var cal_day_match = year + "/" + month + "/" + cal_day_cnt;
		var dayClass = "";
		
		if(holyday[cal_day_match] != undefined){
			dayClass = ' class="'+classNames[holyday[cal_day_match]]+'"';
		}
		else if(cal_day_cnt == day){
			dayClass = ' class="Today"';
		}
		else if(cal_start_day == 0){
			dayClass = ' class="Sun"';
		}
		else if(cal_start_day == 6){
			dayClass = ' class="Sat"';
		}
		cal_tags += "<td onMouseOver='tdOver(this);' onMouseOut='tdOut(this);'"+dayClass+">" + cal_day_cnt + "</td>";
		if(cal_start_day == 6){
			cal_tags += "</tr>";
			if(cal_day_cnt < calendars[month]){
				cal_tags += "<tr>";
			}
			cal_start_day = 0;
		}
		else{
			cal_start_day++;
		}
	}
	while(cal_start_day <= 6 && cal_start_day != 0){
		cal_tags += "<td>&nbsp;</td>";
		if(cal_start_day == 6){
			cal_tags += "</tr>";
		}
		cal_start_day++;
	}
	cal_tags += "</table>";
	cal.innerHTML = cal_tags;
}
writeCal(cal_year,cal_month,cal_day);
