﻿
var holyday = new Array();
holyday["2009/1/1"] = "元旦";
holyday["2009/1/12"] = "成人の日";
holyday["2009/2/11"] = "建国記念日";
holyday["2009/3/20"] = "春分の日";
holyday["2009/4/29"] = "昭和の日";
holyday["2009/5/3"] = "憲法記念日";
holyday["2009/5/4"] = "みどりの日";
holyday["2009/5/5"] = "こどもの日";
holyday["2009/5/6"] = "振り替え休日";
holyday["2009/7/20"] = "海の日";
holyday["2009/9/21"] = "敬老の日";
holyday["2009/9/22"] = "国民の休日";
holyday["2009/9/23"] = "秋分の日";
holyday["2009/10/12"] = "体育の日";
holyday["2009/11/3"] = "文化の日";
holyday["2009/11/23"] = "勤労感謝の日";
holyday["2009/12/23"] = "天皇誕生日";
holyday["2010/1/1"] = "元旦";
holyday["2010/1/11"] = "成人の日";

var dialyDay = new Array();

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;
var defaultBackgroundColors = new Object();
var to_year = cal_year;
var to_month = cal_month;
var to_day = cal_day;
var calendarmode = "";

var poscalx;
var poscaly;

function putCalendar(mode, pox, poy,str) {
    poscalx = pox;
    poscaly = poy;
    
    calendarmode = mode;
    if ($("calendar").innerHTML == "") {
        if (calendarmode == 'load')
        {
            var paras = 'Date=' + cal_year + '/' + cal_month + '/' + cal_day + "&cache=" + (new Date()).getTime();
            new Ajax.Request("js/checkexistfolder.cgi", {
                method: "post",
                parameters: paras,
                onSuccess: GetExistDate,
                onFailure: function(httpObj) { $("messageWin").innerHTML = "エラーで読み込めませんでした<br>" + httpObj.status; }
            });
        } else if (calendarmode == 'load2') {
            var paras2 = str.split('/');
            cal_year = parseInt(paras2[0]);
            cal_month = parseInt(paras2[1]);
            cal_day = parseInt(paras2[2]);
            var paras = 'Date=' + cal_year + '/' + cal_month + '/' + cal_day + "&cache=" + (new Date()).getTime();
            new Ajax.Request("js/checkexistfolder.cgi", {
                method: "post",
                parameters: paras,
                onSuccess: GetExistDate,
                onFailure: function(httpObj) { $("messageWin").innerHTML = "エラーで読み込めませんでした<br>" + httpObj.status; }
            });
        } else {
            writeCal(cal_year, cal_month, cal_day);
            $("calendar").setStyle("border:solid 2px gray;margin:4px;padding:4px;background-color:#ffffaa;");
        }
    }
    else {
        $("calendar").innerHTML = "";
        $("calendar").setStyle("border:0px;margin:0px;padding:0px;background-color:#ffffff;");
        $("calendartip").innerHTML = "";
        $("calendartip").setStyle("border:0px;margin:0px;padding:0px;background-color:#ffffff;");
    }
}
function GetExistDate(httpObj) {
    dialyDay.length = 0;
    $("messageWin").innerHTML = httpObj.responseText;
    var str = httpObj.responseText.split(",");
    for (var i = 0; i < str.length; i++) {
        dialyDay[str[i]] = 0;
    }
    writeCal(cal_year, cal_month, cal_day);
    $("calendar").setStyle("border:solid 2px gray;margin:4px;padding:4px;background-color:#ffffaa;");
}
function tdOver(obj,str) {
    defaultBackgroundColors[obj] = obj.style.backgroundColor;
    obj.style.backgroundColor = '#E8EEF9';
    if (holyday[str] != undefined) {
        $("calendartip").innerHTML = holyday[str];
        $("calendartip").setStyle("border:solid 2px gray;margin:4px;padding:4px;background-color:#ffffee;");
    }
}
function tdOut(obj) {
    obj.style.backgroundColor = defaultBackgroundColors[obj];
    $("calendartip").innerHTML = "";
    $("calendartip").setStyle("border:0px;margin:0px;padding:0px;background-color:#ffffff;");
}
function tdClick(str) {
    $("inputdate").value = str;
    $("calendar").innerHTML = "";
    $("calendar").setStyle("border:0px;margin:0px;padding:0px;background-color:#ffffff;");
    $("calendartip").innerHTML = "";
    $("calendartip").setStyle("border:0px;margin:0px;padding:0px;background-color:#ffffff;");
    if (calendarmode == "load") {
        loadAndPut(str);
    } else if (calendarmode == 'load2') {
        getNTBday(str);
    }
}
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;
    var paras = 'Date=' + cal_year + '/' + cal_month + '/' + cal_day + "&cache=" + (new Date()).getTime();
    new Ajax.Request("js/checkexistfolder.cgi", {
        method: "post",
        parameters: paras,
        onSuccess: GetExistDate,
        onFailure: function(httpObj) { $("messageWin").innerHTML = "エラーで読み込めませんでした<br>" + httpObj.status; }
    });
//    writeCal(cal_year, cal_month, cal_day);
}
function prevCal() {
    cal_month -= 1;
    if (cal_month < 1) {
        cal_month = 12;
        cal_year -= 1;
    }
    var paras = 'Date=' + cal_year + '/' + cal_month + '/' + cal_day + "&cache=" + (new Date()).getTime();
    new Ajax.Request("js/checkexistfolder.cgi", {
        method: "post",
        parameters: paras,
        onSuccess: GetExistDate,
        onFailure: function(httpObj) { $("messageWin").innerHTML = "エラーで読み込めませんでした<br>" + httpObj.status; }
    });
//    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("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
    var monthName = new Array('none', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

    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 += 'style="position:absolute;top:' + poscaly + 'px;left:' + poscalx + 'px;">';
    cal_tags += "<tr><th colspan='7'>";
    cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='nextCal();'><img src='js/calendar/arrowright.gif' alt='次の月' /></span>";
    cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='currentCal();'><img src='js/calendar/arrownow.gif' alt='今月' /></span>";
    cal_tags += "<span onMouseOver='spanOver(this);' onMouseOut='spanOut(this);' onClick='prevCal();'><img src='js/calendar/arrowleft.gif' alt='前の月' /></span>";
    cal_tags += monthName[month] + " . " + year + "</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
    var month2str = "00" + month;
    month2str = month2str.substr(month2str.length - 2, 2);
    for (var cal_day_cnt = 1; cal_day_cnt <= calendars[month]; cal_day_cnt++) {
        var day2str = "00" + cal_day_cnt;
        var cal_day_match = year + "/" + month2str + "/" + day2str.substr(day2str.length - 2, 2);
        var dayClass = "";

        if (holyday[cal_day_match] != undefined) {
            dayClass = ' class="holyday"';
        }
        else if ((year == to_year)&&(month == to_month)&&(cal_day_cnt == to_day))
        {
            dayClass = ' class="Today"';
        }
        else if (cal_start_day == 0) {
            dayClass = ' class="Sun"';
        }
        else if (cal_start_day == 6) {
            dayClass = ' class="Sat"';
        }
        if ((calendarmode == "load")||(calendarmode == "load2")) {
            cal_tags += "<td onMouseOver='tdOver(this,\"" + cal_day_match + "\");' onMouseOut='tdOut(this);'" + dayClass + ">";
            if (dialyDay[cal_day_match] != undefined)
                cal_tags += '<a href=\'javascript:tdClick("' + cal_day_match + '")\'>' + cal_day_cnt + "</a>";
            else
                cal_tags += cal_day_cnt;
        } else if (calendarmode == "date") {
            cal_tags += "<td style=\"cursor:hand;\" onClick='tdClick(\"" + cal_day_match + "\");' onMouseOver='tdOver(this,\"" + cal_day_match + "\");' onMouseOut='tdOut(this);'" + dayClass + ">";
            cal_tags += cal_day_cnt;
        }
        cal_tags += "</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++;
        }
    }
    //		$("calendar").innerHTML = "X" + cal_start_day+":"+cal_tags+":"+cal;
    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>";
    $("calendar").innerHTML = cal_tags;
}


