﻿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 total, m, n, k;
	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);
	tmp += " ";
	if (cHour == 13) tmp += "夜";
	tmp += dzString.charAt((cHour - 1) % 12);
	tmp += "时";
	cDateString = tmp;
	return tmp;
}

function GetDateString() {
	var tmp = "";
	var t1 = TheDate.getYear();
	if (t1 < 1900) t1 += 1900;
	tmp += t1
		+ "年"
		+ (TheDate.getMonth() + 1) + "月"
		+ TheDate.getDate() + "日 "
//		+ TheDate.getHours() + ":"
//		+ ((TheDate.getMinutes() < 10) ? "0" : "")
//		+ TheDate.getMinutes()
		+ " 星期" + weekString.charAt(TheDate.getDay());
	DateString = tmp;
	return tmp;
}

//取得当前时间，格式为:2011年11月8日 星期二 农历十月十
function getNowDate() {
	init();
	e2c();
	GetDateString();
	GetcDateString();
	return DateString + " " + cDateString;
	// document.write(DateString," ",cDateString);
}

