﻿// JavaScript Document

var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var now = new Date();
now.setDate(now.getDate());
var SY = now.getFullYear();
var SM = now.getMonth();
var SD = now.getDate();

//==== 传入 offset 传回干支, 0=甲子
function cyclical(num) { return(Gan[num%10]+Zhi[num%12])}

//==== 传回农历 y年的总天数
function lYearDays(y) {
var i, sum = 348
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
return(sum+leapDays(y))
}

//==== 传回农历 y年闰月的天数
function leapDays(y) {
if(leapMonth(y))   return((lunarInfo[y-1900] & 0x10000)? 30: 29)
else return(0)
}

//==== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
function leapMonth(y) { return(lunarInfo[y-1900] & 0xf)}

//====================================== 传回农历 y年m月的总天数
function monthDays(y,m) { return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )}

//==== 算出农历, 传入日期物件, 传回农历日期物件
//该物件属性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
function Lunar(objDate) {
var i, leap=0, temp=0
var baseDate = new Date(1900,0,31)
var offset   = (objDate - baseDate)/86400000

this.dayCyl = offset + 40
this.monCyl = 14

for(i=1900; i<2050 && offset>0; i++) {
	temp = lYearDays(i)
	offset -= temp
	this.monCyl += 12
}
if(offset<0) {
	offset += temp;
	i--;
	this.monCyl -= 12
}

this.year = i
this.yearCyl = i-1864

leap = leapMonth(i) //闰哪个月
this.isLeap = false

for(i=1; i<13 && offset>0; i++) {
	//闰月
	if(leap>0 && i==(leap+1) && this.isLeap==false)
		{ --i; this.isLeap = true; temp = leapDays(this.year); }
	else
		{ temp = monthDays(this.year, i); }

	//解除闰月
	if(this.isLeap==true && i==(leap+1)) this.isLeap = false

	offset -= temp
	if(this.isLeap == false) this.monCyl ++
}

if(offset==0 && leap>0 && i==leap+1)
	if(this.isLeap)
		{ this.isLeap = false; }
	else
		{ this.isLeap = true; --i; --this.monCyl;}

if(offset<0){ offset += temp; --i; --this.monCyl; }

this.month = i
this.day = offset + 1
}

function YYMMDD(){
	var cl = '<font color="#000000" STYLE="font-size:9pt;">';
	if (now.getDay() == 0) cl = '<font color="#000000" STYLE="font-size:9pt;">';
	if (now.getDay() == 6) cl = '<font color="#000000" STYLE="font-size:9pt;">';
	return (cl + SY + '年' + (SM + 1) + '月' + SD + '日</font>');
}
function weekday(){
	var day = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
	var cl = '<font color="#000000" STYLE="font-size:9pt;">';
	if (now.getDay() == 0) cl = '<font color="#ff0000" STYLE="font-size:9pt;">';
	if (now.getDay() == 6) cl = '<font color="#ff0000" STYLE="font-size:9pt;">';
	return(cl+ day[now.getDay()]+ '</font>');
}
//==== 中文日期
function cDay(m,d){
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
var nStr2 = new Array('初','十','廿','卅','　');
var s;
if (m>10){s = '十'+nStr1[m-10]} else {s = nStr1[m]} s += '月'
switch (d) {
case 10:s += '初十'; break;
case 20:s += '二十'; break;
case 30:s += '三十'; break;
default:s += nStr2[Math.floor(d/10)]; s += nStr1[d%10];
}
return(s);
}
function solarDay1(){
	var sDObj = new Date(SY,SM,SD);
	var lDObj = new Lunar(sDObj);
	var cl = '<font color="violet" STYLE="font-size:9pt;">';
	//var tt = '【'+Animals[(SY-4)%12]+'】'+cyclical(lDObj.monCyl)+'月 '+cyclical(lDObj.dayCyl++)+'日' ;
	var tt = '【'+cyclical(lDObj.yearCyl)+'】年 ' ;
	return(cl+tt+'</font>');
}
function solarDay2(){
	var sDObj = new Date(SY,SM,SD);
	var lDObj = new Lunar(sDObj);
	var cl = '<font color="#000066" STYLE="font-size:9pt;">';
	//农历BB'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日
	var tt = '农历'+cDay(lDObj.month,lDObj.day);
	return(cl+tt+'</font>');
}
function solarDay3(){
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
var solarTerm = new Array("今日节气：小寒！","今日节气：大寒！","今日节气：立春！","今日节气：雨水！","今日节气：惊蛰！","今日节气：春分！","今日节气：清明！","今日节气：谷雨！","今日节气：立夏！","今日节气：小满！","今日节气：芒种！","今日节气：夏至！","今日节气：小暑！"," 今日节气：大暑！","今日节气：立秋！","今日节气：处暑！","今日节气：白露！","今日节气：秋分！","今日节气：寒露！","今日节气：霜降！","今日节气：立冬！","今日节气：小雪！","今日节气：大雪！","今日节气：冬至！")
var lFtv = new Array("0101*今天是春节，",
"0102*今天是大年初二！",
"0115 今天是元宵节！",
"0505*今天是端午节！",
"0707 今天是七夕情人节！",
"0715 今天是中元节！",
"0815*今天是中秋节！",
"0909 今天是重阳节！",
"1208 今天是腊八节！",
"1223 今天是小年！",
"0100*今天是除夕！")
var sFtv = new Array(
"0214 也是情人节！ ",
"0305 也是学雷锋纪念日！",
"0401 今天是愚人节！",
"0531 世界无烟日！",
"0601 国际儿童节！",
"0605 世界环境保护日！",
"0623 国际奥林匹克日！",
"0624 欢迎您访问17k！",
"0625 全国土地日！",
"0626 国际禁毒日！",
"0701 香港回归纪念日 中共诞辰！",
"0702 国际体育记者日！",
"0711 世界人口日！",
"0730 非洲妇女日！",
"0731 欢迎您访问17k！",
"0801 建军节！",
"0815 为逝者默哀，舟曲加油！",
"0909 毛泽东逝世纪念！",
"0910 中国教师节！",
"0918 今天是九·一八事变纪念日！",
"0927 世界旅游日！",
"0928 孔子诞辰！",
"1001 国庆节 世界音乐日！",
"1002 国庆节假日！",
"1003 国庆节假日！",
"1004 世界动物日！",
"1006 老人节！",
"1009 世界邮政日 万国邮联日！",
"1010 辛亥革命纪念日！",
"1013 世界保健日 国际教师节",
"1015 国际盲人节(白手杖节)",
"1017 世界消除贫困日",
"1022 世界传统医药日 ",
"1024 联合国日 ",
"1031 世界勤俭日",
"1108 中国记者日！",
"1109 全国消防安全宣传教育日！",
"1110 世界青年节！",
"1201 今天是世界艾滋病日！",
"1212 欢迎您访问17K！今天是西安事变纪念日",
"1213 今天是南京大屠杀纪念日！勿忘国耻！",
"1224 今天是平安夜！",
"1225 今天是圣诞节！",
"1226 毛泽东诞辰纪念！")
var sDObj = new Date(SY,SM,SD);
var lDObj = new Lunar(sDObj);
var lDPOS = new Array(3)
var festival='',solarTerms='',solarFestival='',lunarFestival='',tmp1,tmp2;
//农历节日
for(i in lFtv)
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Number(RegExp.$1)-lDObj.month
tmp2=Number(RegExp.$2)-lDObj.day
if(tmp1==0 && tmp2==0) lunarFestival=RegExp.$4
}
//国历节日
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/)){
tmp1=Number(RegExp.$1)-(SM+1)
tmp2=Number(RegExp.$2)-SD
if(tmp1==0 && tmp2==0) solarFestival = RegExp.$4
}
//节气
tmp1 = new Date((31556925974.7*(SY-1900)+sTermInfo[SM*2+1]*60000)+Date.UTC(1900,0,6,2,5))
tmp2 = tmp1.getUTCDate()
if (tmp2==SD) solarTerms = solarTerm[SM*2+1]  
tmp1 = new Date((31556925974.7*(SY-1900)+sTermInfo[SM*2]*60000)+Date.UTC(1900,0,6,2,5))
tmp2= tmp1.getUTCDate()
if (tmp2==SD) solarTerms = solarTerm[SM*2]

if(solarTerms == '' && solarFestival == '' && lunarFestival == '')
	festival = '';
else
	festival = '<FONT COLOR="#ff0000" STYLE="font-size:9pt;">'+solarTerms + ' ' + lunarFestival + ' ' + solarFestival +'</FONT>';

var cl = '<font color="#000066" STYLE="font-size:9pt;">';
return(cl+festival+'</font>');
}


function HHsfuction(){
	var Str='您好!';
	var HHs = now.getHours();
	if(HHs < 6){Str="凌晨好!";} 
	else if (HHs < 11){Str="上午好， ";} 
	else if (HHs < 13){Str="中午好， ";} 
	else if (HHs < 18){Str="下午好， ";} 
	else{Str="晚上好！ ";} 
	return Str;
}

