// JavaScript Document
// グローバル変数
var aDays_library = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // 月毎の日数
var aWeek_library = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sta");  // 曜日表示文字列
var objParent_library;        // 親オブジェクト
var tCalendar_library;        // カレンダーオブジェクト（テーブル）
var nYear_library = 0;        // 現在表示中の年
var nMonth_library = 0;      // 現在表示中の月
var maxYear_library = 2013; 
var aYear_library = new Array();    // 祝日用の配列
var bYear_library  = new Array();    // 祝日用の配列
// メンテナンス部分 --------------------------------------
// ADMT休館日リスト（日曜以外）： 月の区切りは"0".配列の終端は"-1" 
aYear_library["A.D.2002"] = new Array(0,0,0,0,0,0,0,0,0,0,0,9,16,24,30,31,-1);
aYear_library["A.D.2003"] = new Array(1,2,3,4,5,6,14,20,27,0,3,10,17,24,0,3,10,17,24,31,0,7,14,21,28,0,6,12,19,26,0,2,9,16,23,30,0,7,14,22,28,0,4,11,18,25,0,1,8,16,22,29,0,6,14,20,27,0,4,10,17,25,0,1,8,15,22,29,30,31,-1);
aYear_library["A.D.2004"] = new Array(1,2,3,5,13,19,26,0,2,9,16,23,0,1,8,15,22,29,0,5,12,19,26,0,10,17,24,31,0,7,14,21,28,0,5,12,20,26,0,2,9,16,23,30,0,6,13,21,27,0,4,12,18,25,0,1,8,15,22,29,0,6,13,20,27,29,30,31,-1);
aYear_library["A.D.2005"] = new Array(1,3,4,5,11,17,24,31,0,7,14,21,28,0,7,14,22,28,0,4,11,18,25,0,2,9,16,23,30,0,6,13,20,27,0,4,11,19,25,0,1,8,15,22,29,0,5,12,20,26,0,3,11,17,24,31,0,7,14,21,28,0,5,12,19,26,29,30,31,-1);
aYear_library["A.D.2006"] = new Array(2,3,4,5,10,16,23,30,0,6,13,20,27,0,6,13,20,27,0,3,10,17,24,0,1,8,15,22,29,0,5,12,19,26,0,3,10,18,24,31,0,7,14,21,28,0,4,11,19,25,0,2,10,16,23,30,0,6,13,20,27,0,4,11,18,25,29,30,-1);
aYear_library["A.D.2007"] = new Array(1,2,3,4,5,9,15,22,29,0,5,13,19,26,0,5,12,19,26,0,2,9,16,23,0,1,7,14,21,28,0,4,11,18,25,0,2,9,17,23,30,31,0,6,13,20,27,0,3,10,18,25,26,0,1,9,15,22,29,0,5,12,19,26,0,3,10,17,25,29,31,-1);
aYear_library["A.D.2008"] = new Array(1,2,3,4,7,15,21,28,0,4,12,18,25,0,3,10,17,24,31,0,7,14,21,28,0,7,12,19,26,0,2,9,16,23,30,0,7,14,22,28,29,0,4,11,18,25,0,1,8,16,22,29,30,0,6,14,20,27,0,4,10,17,25,0,1,8,15,22,29,30,31,-1);
aYear_library["A.D.2009"] = new Array(1,2,3,5,13,19,26,0,2,9,16,23,0,2,9,16,23,30,0,6,13,20,27,0,7,11,18,25,0,1,8,15,22,29,0,6,13,21,27,28,0,3,10,17,24,31,0,7,14,24,28,0,5,6,13,19,26,0,2,9,16,24,30,0,7,14,21,28,29,30,31,-1);
aYear_library["A.D.2010"] = new Array(1,2,4,5,6,12,18,25,0,1,8,15,22,0,1,8,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,5,12,19,26,0,6,10,17,24,31,0,7,14,21,28,0,5,12,20,26,27,28,29,0,2,9,16,23,30,0,6,13,21,27,0,4,5,12,18,25,0,1,8,15,22,29,0,6,13,20,27,28,29,30,31,-1);
aYear_library["A.D.2011"] = new Array(1,3,4,5,6,11,17,21,24,31,0,7,14,21,28,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,28,0,4,11,18,25,0,2,9,10,11,12,13,14,15,16,23,30,0,6,13,20,27,0,4,11,19,25,26,27,28,0,1,8,15,22,29,0,5,12,20,26,0,3,11,12,17,24,31,0,7,14,21,28,0,5,12,19,26,29,30,31,-1);
aYear_library["A.D.2012"] = new Array(2,3,4,10,11,16,23,30,0,6,13,20,27,0,5,12,19,20,21,22,23,24,26,0,2,9,16,23,0,1,7,14,21,28,0,4,11,18,25,0,2,9,17,23,30,0,6,13,20,27,0,3,10,18,24,0,1,9,15,22,29,0,5,12,19,26,0,3,10,17,25,29,30,31,-1);
//祝日リスト（日曜以外）： 月の区切りは"0".配列の終端は"-1" 
bYear_library["B.D.2002"] = new Array(1,14,0,11,0,21,0,29,0,3,4,6,0,0,20,0,0,16,23,0,14,0,4,23,0,23,-1);
bYear_library["B.D.2003"] = new Array(1,13,0,11,0,21,0,29,0,3,5,0,0,21,0,0,15,23,0,13,0,3,24,0,23,-1);
bYear_library["B.D.2004"] = new Array(1,12,0,11,0,20,0,29,0,3,4,5,0,0,19,0,0,20,23,0,11,0,3,23,0,23,-1);
bYear_library["B.D.2005"] = new Array(1,10,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
bYear_library["B.D.2006"] = new Array(2,9,0,11,0,2,0,29,0,3,4,5,0,0,17,0,0,18,23,0,9,0,3,23,0,23,-1);
bYear_library["B.D.2007"] = new Array(1,8,0,12,0,21,0,30,0,3,4,5,0,0,16,0,0,17,24,0,8,0,3,23,0,24,-1);
bYear_library["B.D.2008"] = new Array(1,14,0,11,0,20,0,29,0,3,5,6,0,0,21,0,0,15,23,0,13,0,3,24,0,23,-1);
bYear_library["B.D.2009"] = new Array(1,12,0,11,0,20,0,29,0,4,5,6,0,0,20,0,0,21,22,23,0,12,0,3,23,0,23,-1);
bYear_library["B.D.2010"] = new Array(1,11,0,11,0,22,0,29,0,3,4,5,0,0,19,0,0,20,23,0,11,0,3,23,0,23-1);
bYear_library["B.D.2011"] = new Array(1,10,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
bYear_library["B.D.2012"] = new Array(1,16,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
//-----------------------------------------------------

// 初期化（最初に呼び出す）
function InitCalendar_library(parent_id_library) {
    if (document.getElementById) {
        objParent_library = document.getElementById(parent_id_library);
        SetThisMonth_library();
    }
}

// カレンダーの表示
// 引数 : year（表示年）, month（表示月）
function SetCalendar_library(year, month) {
    // 変数
    var nDate = new Date();            // 現在のDateオブジェクト
    var nToday = nDate.getDate();   // 今日の日にち 
    var nDays;            // 表示月の日数
    var nFirstDay;       // 表示月初日の曜日インデックス
    var bToday;          // 表示月に今日が含まれるかどうか
    var i, j;

    nYear_library = year;
    nMonth_library = month
    bToday = (nYear_library == nDate.getFullYear() && nMonth_library == nDate.getMonth() + 1)? true: false;

    // ひと月の日数
    nDays = aDays_library [nMonth_library -1];
    if (nMonth_library == 2) {    /* 閏月のチェック */
        if (nYear_library % 400 == 0) nDays =29;
        else if (nYear_library % 100 == 0) nDays = 28;
        else if (nYear_library % 4 == 0) nDays= 29;
    }

    // 年月の描画
    tCalendar_library = document.createElement("table");
    with (tCalendar_library) {
        style.width = "280px";
        style.margin = "0";
        style.tableLayout = "fixed";
        style.border = "1px solid #777777";
        style.backgroundColor = "#ffffff";
        style.fontSize = "12px";
        style.lineHeight = "150%";

    }
    var tbCalendar = document.createElement("tbody");

    // 見出し行（年月）
    var trCaption = document.createElement("tr");
    var tdCaption = document.createElement("td");

    var strCaption = document.createTextNode(nMonth_library + " / " + nYear_library)
    with (tdCaption) {
        colSpan = "7";
        style.padding = "3";
        style.borderBottom = "1px solid #777777";
        style.textAlign = "center";
		style.fontWeight = "bold";
		style.fontSize= "14px";
    }	
    trCaption.appendChild(tdCaption);    // 見出しセル
    tdCaption.appendChild(strCaption);

    // 月移動ボタン（リンク）
    var aHref = new Array("SetPrevMonth_library()", "SetThisMonth_library()", "SetNextMonth_library()");
    var aTarget = new Array("<<", "this month", ">>");
    for (i = 0; i < 3; i++) {
        var lnk = document.createElement("a");
        lnk.style.marginLeft = "5px";
        lnk.style.fontSize= "10px";
        lnk.style.color = "gray";
        lnk.href = "javascript:" + aHref[i];
        lnk.appendChild(document.createTextNode(aTarget[i]));
        tdCaption.appendChild(lnk);
    }

    tbCalendar.appendChild(trCaption);  // 見出し行

    // 曜日行
    var trWeek = document.createElement("tr");
    for (i = 0; i < 7; i++) {
        var tdWeek = document.createElement("td");
        with (tdWeek) {
            style.padding = "3";
            style.textAlign = "center";
			style.fontWeight = "bold";
			style.backgroundColor = "#D6D6E4";
            appendChild(document.createTextNode(aWeek_library [i]));
			    if (i == 0)	style.color = "#CC0000";    //日曜日
                else if (i == 6) style.color = "#0000CC"; // 土曜日
        }
        trWeek.appendChild(tdWeek);
    }
    tbCalendar.appendChild(trWeek);  // 曜日行

    // 日にち行
    nDate.setFullYear(nYear_library );
    nDate.setDate(1);                // Dateオブジェクトに表示月の1日をセット
    nDate.setMonth(nMonth_library -1);
    nFirstDay = nDate.getDay();   //月初の曜日インデックス

    // 月末まで表示
    var row = document.createElement("tr");
    var cell = new Array(nDays);
    for (i = -nFirstDay, j = 0; i < nDays; i++) {
        cell[i] = document.createElement("td");
        with (cell[i]) {
            style.padding = "3";
            style.textAlign = "center";
			style.borderTop = "1px solid #999999";
			style.borderBottom = "1px solid #999999";
			style.borderLeft = "1px solid #999999";
			style.borderRight = "1px solid #999999";
            if (i < 0) {    /* 一日まで空白で埋める */
                appendChild(document.createTextNode(" "));
            } else {
                appendChild(document.createTextNode(i+1));    // 日付
                // 背景色
                if (j == 0){
					style.backgroundColor = "#ffccff";    //日曜日の背景
					style.color = "#CC0000";//日曜日の文字色
				}
                else if (j == 6) style.color = "#0000CC"; // 土曜日
                else style.backgroundColor = "transparent";     // 平日
            }
            row.appendChild(cell[i]);
        }
        if (++j == 7 && i != nDays-1) {    /* 土曜でかつ月末以外の時 */
            tbCalendar.appendChild(row);
			//appendChild(document.createTextNode(" "));
            row = document.createElement("tr");
            j = 0;
        } 
    }

    // ADMT休館日の背景色を変更 
    var aRefHoliday = aYear_library ["A.D."+nYear_library ];       // 休館日配列の参照
    if (aRefHoliday) {
        for (i=0, j=1; j+1<=nMonth_library ; i++) {    /* 該当月までスキップ */
            if (aRefHoliday[i] == -1) break;
            if (aRefHoliday[i] == 0) j++;
        }
        while (aRefHoliday[i] > 0) {    /* 該当月の終り(0か-1)までループ */
            cell[aRefHoliday[i++]-1].style.backgroundColor = "#ffccff";
        }
    }
    // 国民の祝日の文字色を変更 
    var bRefHoliday = bYear_library ["B.D."+nYear_library ];       // 祝日配列の参照
    if (bRefHoliday) {
        for (i=0, j=1; j+1<=nMonth_library ; i++) {    /* 該当月までスキップ */
            if (bRefHoliday[i] == -1) break;
            if (bRefHoliday[i] == 0) j++;
        }
        while (bRefHoliday[i] > 0) {    /* 該当月の終り(0か-1)までループ */
            cell[bRefHoliday[i++]-1].style.color = "#CC0000";
        }
    }

    // 今日が含まれる時は該当部分の文字色を変更
    if (bToday){
		cell[nToday-1].style.fontWeight = "bold";
		cell[nToday-1].style.textDecoration = "underline";		
	}
    tbCalendar.appendChild(row);

    //テーブルの表示
    tCalendar_library.appendChild(tbCalendar);
    objParent_library.appendChild(tCalendar_library);
}   

// 前月の表示
function SetPrevMonth_library() {
    if (nMonth_library == 1) {    /* 表示が1月の時は年を調整 */
        nMonth_library = 12;
        nYear_library --;
    } else {
		if (nYear_library !=2002){
			nMonth_library --;
		}
    }
    if (tCalendar_library) objParent_library.removeChild(tCalendar_library);
    SetCalendar_library(nYear_library , nMonth_library );
}

// 翌月の表示
function SetNextMonth_library() {
    if (nMonth_library == 12) {    /* 表示が12月の時は年を調整 */
        nMonth_library = 1;
        nYear_library ++;
    } else {
		if (nYear_library <maxYear_library){
            nMonth_library ++;
		}
    }
    if (tCalendar_library) objParent_library.removeChild(tCalendar_library);
    SetCalendar_library(nYear_library , nMonth_library );
}

// 今月の表示
function SetThisMonth_library() {
    if (tCalendar_library) objParent_library.removeChild(tCalendar_library);
    var nDate = new Date();        // 現在の年、月の取得
    SetCalendar_library(nDate.getFullYear(), nDate.getMonth() + 1);
}
