// -------------------------------------------------------------------
// My カレンダー
// by Mamiko.S(http://www.nmt.ne.jp/~mamiko/) 2000.1.15
// このJavaScriptは営利を目的としない個人ホームページでの利用を前提として、
// 無料で提供しています。営利を目的としたサイトでご利用の場合は、
// 必ず mamiko@nmt.ne.jp へご連絡ください。
//
// +++ 履歴 +++
// 2001.10.31 開始日の日付セット方法を変更。年→月→日から、日→月→年にした。
// 2001. 3.21 ゴールデンウィークの日付指定を変更。
// -------------------------------------------------------------------

function calender(ayear, amonth, aday, backCol) {
	
	var day_end = daymonth(ayear,amonth);
	
	if(backCol == ""){
		var backCol1 = "Gold";	//カレンダーの背景色
		var backCol2 = "Gold";	//カレンダーの背景色
	}else{
		var backCol1 = backCol;	//カレンダーの背景色
		var backCol2 = backCol;	//カレンダーの背景色
	}

	var holiCol = "red";	//休日の文字の色
	var satCol = "blue";	//土曜の文字の色
	var fontSize = 2;		//文字のサイズ

	var weekStr = new Array("s","m","t","w","t","f","s");	//曜日の表示
	var monthStr = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");	//月の表示
	var holi_day = new Array(new Holiday(1,1), 
						new Holiday(1,14),
						new Holiday(2,11),
						new Holiday(3,20),
						new Holiday(4,29),
						new Holiday(5,3),
						new Holiday(5,5),
						new Holiday(5,6),
						new Holiday(7,21),
						new Holiday(9,15),
						new Holiday(9,23),
						new Holiday(10,13),
						new Holiday(11,3),
						new Holiday(11,24),
						new Holiday(12,23)
					);		//祭日の指定

	var i;

	var sdate = new Date();

	sdate.setDate(1);
	var amonth_ = amonth - 1;

	sdate.setMonth(amonth_);
	sdate.setFullYear(ayear);

	var wday = sdate.getDay();

	html = "<table border=0 bgcolor=" + backCol + " cellspacing=0 cellpadding=1>";
	html = html + "<tr>";
	html = html + "<td colspan='7'>" + ayear + "." + monthStr[amonth-1] + "</td>";
	html = html + "</tr>";
	html = html + "<tr>";
	html = html + "<td align='center'><font color='" + holiCol + "'>" + weekStr[0]+ "</font></td>";
	html = html + "<td align='center'>" + weekStr[1]+ "</td><td align='center'>" + weekStr[2] + "</td>";
	html = html + "<td align='center'>"+ weekStr[3]+ "</td><td align='center'>" + weekStr[4]+ "</td>";
	html = html + "<td align='center'>" + weekStr[5]+ "</td><td align='center'>" + weekStr[6]+ "</td>";
	html = html + "</tr>";

	var day = -wday +1;

	for(j=1; j<=6; j++){
		html = html + "<tr>";
		for(k=1; k<=7; k++){
			if( 1 <= day && day <= day_end ){
				if(day == aday){
					bgcol = "yellow";
				}else{
					bgcol = backCol2;
				}
				if( wday  == 0 ){
					fontcol = holiCol;
				}else if( wday  == 6 ) {
					fontcol = satCol;
				}else{
					fontcol = "black";
				}

				for( h=0; h < holi_day.length; h++ ){
					
					if( ( holi_day[h].Mon == amonth ) && ( holi_day[h].Day == day ) ){
						fontcol = holiCol;
					}
				}

				html = html + "<td align=center bgcolor="+ bgcol +">";
				html = html + "<font size=" + fontSize + " color=" + fontcol + ">" + day + "</font></td>";
				
				wday++;
			} else {
				html = html + "<td><font size=" + fontSize + ">　</font></td>";
			}
			day++;

		}
		html = html + "</tr>";
		wday = 0;
	}
	html = html + "</table>";

	return html;
}

//閏年を判別
function leapyear( year ) {
	return (year%4==0 && year%100!=0 || year%400==0);
}

//月の日数を求める
function daymonth( year, month ) {
	var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if( month==2 && leapyear(year)) return 29;
	return day[month-1];
}


//祭日をセット
function Holiday(mon, day){	//祭日
	this.Mon = mon;
	this.Day = day;

}

