﻿var CalendarData = new Array(20);
var madd = new Array(12);
var TheDate = new Date();
var tgString = "甲乙丙丁戊己庚辛壬癸";
var dzString = "子丑寅卯辰巳午未申酉戌亥";
var numString = "一二三四五六七八九十";
var monString = "正二三四五六七八九十冬腊";
var weekString = "日一二三四五六";
var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
var cYear;
var cMonth;
var cDay;
var cHour;
var cDateString;
var DateString;
var Browser = navigator.appName;

function init() {
    CalendarData[0] = 0x41A95;
    CalendarData[1] = 0xD4A;
    CalendarData[2] = 0xDA5;
    CalendarData[3] = 0x20B55;
    CalendarData[4] = 0x56A;
    CalendarData[5] = 0x7155B;
    CalendarData[6] = 0x25D;
    CalendarData[7] = 0x92D;
    CalendarData[8] = 0x5192B;
    CalendarData[9] = 0xA95;
    CalendarData[10] = 0xB4A;
    CalendarData[11] = 0x416AA;
    CalendarData[12] = 0xAD5;
    CalendarData[13] = 0x90AB5;
    CalendarData[14] = 0x4BA;
    CalendarData[15] = 0xA5B;
    CalendarData[16] = 0x60A57;
    CalendarData[17] = 0x52B;
    CalendarData[18] = 0xA93;
    CalendarData[19] = 0x40E95;
    madd[0] = 0;
    madd[1] = 31;
    madd[2] = 59;
    madd[3] = 90;
    madd[4] = 120;
    madd[5] = 151;
    madd[6] = 181;
    madd[7] = 212;
    madd[8] = 243;
    madd[9] = 273;
    madd[10] = 304;
    madd[11] = 334;
}

function GetBit(m, n) {
    return (m >> n) & 1;
}

function e2c() {
    var totalmnk;
    var isEnd = false;
    var tmp = TheDate.getYear();
    if (tmp < 1900) tmp += 1900;
    total = (tmp - 2001) * 365
            + Math.floor((tmp - 2001) / 4)
            + madd[TheDate.getMonth()]
            + TheDate.getDate()
            - 23;
    if (TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1)
        total++;
    for (m = 0; ; m++) {
        k = (CalendarData[m] < 0xfff) ? 11 : 12;
        for (n = k; n >= 0; n--) {
            if (total <= 29 + GetBit(CalendarData[m], n)) {
                isEnd = true;
                break;
            }
            total = total - 29 - GetBit(CalendarData[m], n);
        }
        if (isEnd) break;
    }
    cYear = 2001 + m;
    cMonth = k - n + 1;
    cDay = total;
    if (k == 12) {
        if (cMonth == Math.floor(CalendarData[m] / 0x10000) + 1)
            cMonth = 1 - cMonth;
        if (cMonth > Math.floor(CalendarData[m] / 0x10000) + 1)
            cMonth--;
    }
    cHour = Math.floor((TheDate.getHours() + 3) / 2);
}

function GetcDateString() {
    var tmp = "";
    tmp += tgString.charAt((cYear - 4) % 10);       //年干
    tmp += dzString.charAt((cYear - 4) % 12);       //年支
    tmp += "年(";
    tmp += sx.charAt((cYear - 4) % 12);
    tmp += ")　";
    if (cMonth < 1) {
        tmp += "闰";
        tmp += monString.charAt(-cMonth - 1);
    }
    else
        tmp += monString.charAt(cMonth - 1);
    tmp += "月";
    tmp += (cDay < 11) ? "初" : ((cDay < 20) ? "十" : ((cDay < 30) ? "廿" : "卅"));
    if (cDay % 10 != 0 || cDay == 10)
        tmp += numString.charAt((cDay - 1) % 10);
    cDateString = tmp;
    return tmp;
}

function GetDateString() {
    var tmp = "";
    var t1 = TheDate.getYear();
    if (t1 < 1900) t1 += 1900;
    tmp += t1
            + "年"
            + (TheDate.getMonth() + 1) + "月"
            + TheDate.getDate() + "日　"
            + "星期" + weekString.charAt(TheDate.getDay()) + "　";
    DateString = tmp;
    return tmp;
}

init();
e2c();
GetDateString();
document.write(DateString);
// GetcDateString();
// document.write(DateString + cDateString);