var MonthName  = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var _month     = "#006600";
var _weekday   = "#000066";
var _holiday   = "#FF0000";
var _saturday  = "#0000FF";
var _closeday  = "#990000";
var _today     = "#FFFFFF";
var _thismonth = "#CCCCFF";
function _calendar(diff, style) {
    var Now = new Date();
    with(Now) {
        var tday = getDate();
        var tmon = getMonth();
        var tyear = getFullYear();

        setDate(1);
        setMonth(tmon + diff);
        var csday = getDay();
        var cmon = getMonth();
        var cyear = getFullYear();

        setMonth(cmon + 1);
        setDate(getDate() - 1);
        var cfday = getDate();
    }
    var ctitle = cyear + "年" + (cmon + 1) + "月 - " + MonthName[cmon];
    var bgcolor = (tmon == cmon && tyear == cyear) ? " bgcolor='" + _thismonth + "'" : "";
    with(document) {
        write("<table border=0" + bgcolor + style + "><tr>");
        write("<th><font color=" + _holiday + ">日</font></th>");
        write("<th>月</th><th>火</th><th>水</th><th>木</th><th>金</th>");
        write("<th><font color=" + _saturday + ">土</font></th>");
        write("</tr><tr>");
        for (var i = 1; i <= csday; i++) {
            write("<th></th>");
        }
        for (var i = 1; i <= cfday; i++) {
            var fontcolor = _holiday_check(cyear, cmon + 1, i, csday);
            var bgcolor = (i == tday && tmon == cmon && tyear == cyear) ? " bgcolor='" + _today + "'" : "";
            var si = i.toString();
            write("<th" + bgcolor + ">" + si.fontcolor(fontcolor) + "</th>");
            if ((i + csday) % 7 == 0 && (i + csday < 35 || i < cfday)) {
                write("</tr><tr>");
            }
        }
        write("</tr>");
        write("<caption>" + ctitle.fontcolor(_month).bold() + "</caption>");
        write("</table>");
    }
}
function _holiday_check(y, m, d, s) {
    var sat = (d + s) % 7 == 0 ? 1 : 0;
    var sun = (d + s) % 7 == 1 ? 1 : 0;
    var mon = (d + s) % 7 == 2 ? 1 : 0;
    var tue = (d + s) % 7 == 3 ? 1 : 0;
    var wed = (d + s) % 7 == 4 ? 1 : 0;
    var spr = Math.floor(20.8431 + 0.242194 * (y - 1980)) - Math.floor((y - 1980) / 4); //1980-2099
    var aut = Math.floor(23.2488 + 0.242194 * (y - 1980)) - Math.floor((y - 1980) / 4); //1980-2099
    var week = Math.ceil(d / 7);
    switch (m) {
        case 1:
            switch (true) {
                case (d == 1 || d == 1 + mon):
                case y >= 2000 && week == 2 && mon == 1:
                case y <= 1999 && (d == 15 || d == 15 + mon):
                    return _holiday;
            }
            break;
        case 2:
            switch (true) {
                case (d == 11 || d == 11 + mon):
                    return _holiday;
            }
            break;
        case 3:
            switch (true) {
                case (d == spr || d == spr + mon):
                    return _holiday;
            }
            break;
        case 4:
            switch (true) {
                case (d == 29 || d == 29 + mon):
                    return _holiday;
            }
            break;
        case 5:
            switch (true) {
                case (d == 3 || d == 3 + mon):
                case y >= 1986 && d == 4:
                case y <= 2006 && (d == 5 || d == 5 + mon):
                case y >= 2007 && (d == 5 || d == 5 + mon || d == 5 + tue || d == 5 + wed):
                    return _holiday;
            }
            break;
        case 6:
            break;
        case 7:
            switch (true) {
                case y >= 2003 && week == 3 && mon == 1:
                case y <= 2002 && y >= 1996 && (d == 20 || d == 20 + mon):
                    return _holiday;
            }
            break;
        case 8:
            break;
        case 9:
            switch (true) {
                case y >= 2003 && week == 3 && mon == 1:
                case y <= 2002 && (d == 15 || d == 15 + mon):
                case y >= 2003 && d + 1 == aut && tue == 1:
                case (d == aut || d == aut + mon):
                    return _holiday;
            }
            break;
        case 10:
            switch (true) {
                case y >= 2000 && week == 2 && mon == 1:
                case y <= 1999 && (d == 10 || d == 10 + mon):
                    return _holiday;
            }
            break;
        case 11:
            switch (true) {
                case (d == 3 || d == 3 + mon):
                case (d == 23 || d == 23 + mon):
                    return _holiday;
            }
            break;
        case 12:
            switch (true) {
                case y >= 1989 && (d == 23 || d == 23 + mon):
                    return _holiday;
            }
            break;
    }
    switch (y * 10000 + m * 100 + d) {
        case 19890107:
        case 19890224:
        case 19901112:
        case 19930609:
            return _holiday;
    }
    switch (true) {
        case sun == 1:
            return _holiday;
        case y <= 1988 && m == 12 && (d == 29 || d == 30):
        case m == 12 && d == 31:
        case m == 1 && (d == 2 || d == 3):
            return _closeday;
        case sat == 1 && y * 100 + m <= 198307:
            return week == 3 ? _saturday : _weekday;
        case sat == 1 && y * 100 + m <= 198607:
            return week == 2 ? _saturday : _weekday;
        case sat == 1 && y * 100 + m <= 198901:
            return (week == 2 || week == 3) ? _saturday : _weekday;
        case sat == 1:
            return _saturday;
    }
    return _weekday;
}
function _Time() {
    var Now = new Date();
    with(Now) {
        var tyear = getFullYear();
        var tmon  = getMonth() + 1;
        var tday  = getDate();
        var thour = getHours();
        var tmin  = getMinutes();
        var tsec  = getSeconds();
        if (tmon  < 10) tmon  = "0" + tmon;
        if (tday  < 10) tday  = "0" + tday;
        if (thour < 10) thour = "0" + thour;
        if (tmin  < 10) tmin  = "0" + tmin;
        if (tsec  < 10) tsec  = "0" + tsec;
    }
    with(document) {
        Form.Time.value = tyear + "/" + tmon + "/" + tday + " " + thour + ":" + tmin + ":" + tsec;
    }
}
