var strSetMonth = new Array(13);
// ********************
// ** 休診日指定 **
// ********************
// strSetMonth[1]	は月の指定。[1]は1月、[2]は2月を表す。
// = "1,2,3";	は日の指定。複数の日を入れる際は「,」で区切る。
// ※指定がない月は""にする。




// --- 日付の指定はここから ----------------------------//
strSetMonth[1] = "1,2,3,4,5,6,11,14,21,28,23,24";
strSetMonth[2] = "4,11,18,25,6,21";
strSetMonth[3] = "4,11,18,25,7,22";
strSetMonth[4] = "1,8,15,22,29,30";
strSetMonth[5] = "3,4,5,6,13,20,27";
strSetMonth[6] = "3,10,17,24";
strSetMonth[7] = "1,8,15,22,29,19";
strSetMonth[8] = "5,12,19,26,13,14,15";
strSetMonth[9] = "";
strSetMonth[10] = "";
strSetMonth[11] = "";
strSetMonth[12] = "";
// --- 日付の指定はここまで ----------------------------//








// ****************
// ** 下準備 **
// ****************
var strMonthTbl = new Array(31,28,31,30,31,30,31,31,30,31,30,31);		// 月定義
var strWeekTbl = new Array("日","月","火","水","木","金","土");			// 曜日定義
var strDate = new Date();							// 現在の日付を取得（クライアント側）




// ************************
// ** カレンダー作成 **
// ************************
function showCalendar(offcetMonth) {						// カレンダー表示関数








 // # カレンダー枠を定義
 // ######################




 strDate.setMonth(strDate.getMonth() + offcetMonth);				// オフセット（Month）
 var strYear = strDate.getYear();						// 年を取得
 if (strYear < 2000) {
 strYear += 1900;							// ブラウザの違いによる年の違いを修正
 }
 var strMonth = strDate.getMonth()+1;					// 月を取得
 var strToday = strDate.getDate();						// 日を取得




 var strClosedDay = new Array();						// 休診日配列宣言
 strClosedDay = strSetMonth[strMonth].split(",");				// 休診日代入




 if (((strYear%4) == 0 && (strYear%100) != 0) || (strYear%400) == 0) {	// 閏年なら
 strMonthTbl[1] = 29;							// 2月を29日とする
 }




 strDate.setDate(1);								// 日付を'1日'に変える
 var strWeek = strDate.getDay();						// 月初の曜日を取得




 var strTblLine = Math.ceil((strWeek+strMonthTbl[strMonth-1])/7);		// カレンダーの行数
 var strTable = new Array(7*strTblLine);					// 表のセル数分定義




 var intDayNum = 1;								// 「日」の表示用インデックス
 var intCellNum = 1;								// 表示枠の位置用インデックス
 for (intCellNum = 0; intCellNum < 7*strTblLine; intCellNum++) {		// 表示枠の数分繰り返す
 if (strWeek > intCellNum) {						// 月初の枠位置まで
 strTable[intCellNum] = "　";					// 枠にブランクを挿入
 } else if (strWeek+strMonthTbl[strMonth-1] <= intCellNum) {		// 月末の枠位置まで
 strTable[intCellNum] = "　";					// 枠にブランクを挿入
 } else {
 strTable[intCellNum] = intDayNum;					// 日付を埋め込む
 intDayNum = intDayNum + 1;						// 「日」の表示用インデックスをカウントアップ
 }
 }








 // # カレンダーの表示
 // ####################




 var intRowIdx;										// 行の位置用インデックス
 var intColIdx;										// 列の位置用インデックス
 var intCloseIdx;										// 休診日用インデックス




 if (strSetMonth[strMonth] || strSetMonth[strMonth] == "") {					// 休診日指定で表示月が存在していれば
 document.write("<span>",strYear, "年", (strMonth), "月</span>");			// 表題（○年○月）
 document.write("<table summary='カレンダー'>");						// タグの表示
 document.write("<tr>");									// タグの表示
 for (intColIdx=0; intColIdx < 7; intColIdx++) {						// 表の「列」のループ
 document.write("<th>",strWeekTbl[intColIdx],"</th>");				// 曜日見出しセット
 }
 document.write("</tr>");								// タグの表示




 for (intRowIdx = 0; intRowIdx < strTblLine; intRowIdx++) {				// 表の「行」のループ
 document.write("<tr>");								// タグの表示
 for (intColIdx = 0; intColIdx < 7; intColIdx++) {					// 表の「列」のループ
 strDayOne = "";									// 表の「行」を格納する変数
 strDat = strTable[intColIdx + (intRowIdx*7)];					// 書きこむ内容の取得




 for (var intCloseIdx=0; intCloseIdx < strClosedDay.length; intCloseIdx++) {	// 休診日の数分ループ
 if (strDat == strClosedDay[intCloseIdx]) {					// 表示の「日」と休診日が一致すれば
 strDayOne = "<td class='close'>"+strDat+"</td>";			// 特定日の書き出し
 }
 }
 if (strDayOne == "") {								// 表の「行」の変数が空なら
 if (intColIdx == 0) {							// 表の「列」が1番目なら
 strDayOne = "<td class='openShort'>"+strDat+"</td>";			// 日曜の書き出し
 } else if (intColIdx == 6) {						// 表の「列」が7番目なら
 strDayOne = "<td class='openShort'>"+strDat+"</td>";			// 土曜の書き出し
 } else {
 strDayOne = "<td class='openNormal'>"+strDat+"</td>";			// 月～金曜の書き出し
 }
 }
 document.write(strDayOne);							// 作成した表の「行」を表示
 }
 document.write("</tr>");								// タグの表示
 }
 document.write("</table>");								// タグの表示
 }
}