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 now = new Date(); 
var SY = now.getFullYear(); 
var SM = now.getMonth(); 
var SD = now.getDate(); 
//==== 传回农历 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 = ''; 
     if (now.getDay() == 0) cl = ''; 
     if (now.getDay() == 6) cl = ''; 
     return(cl+SY+'年'+(SM+1)+'月'+SD+'日'); 
} 
function weekday(){ 
     var day = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); 
     var cl = ''; 
     if (now.getDay() == 0) cl = ''; 
     if (now.getDay() == 6) cl = ''; 
     return(cl+ day[now.getDay()]+ ''); 
} 
//==== 中文日期 
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 solarDay2(){ 
     var sDObj = new Date(SY,SM,SD); 
     var lDObj = new Lunar(sDObj); 
     return('【<u>农历'+cDay(lDObj.month,lDObj.day)+'</u>】'); 
} 

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 春节","0115 元宵节","0202 春龙节","0303 上巳节","0505 端午节","0606 天贶节","0624 火把节","0707 七夕情人节","0715 中元节","0730 地藏节","0815 中秋节","0825 昌龙生日","0909 重阳节","1001 祭祖节","1208 腊八节","1224 小年","0100 除夕") 
var sFtv = new Array("0101 元旦","0214 情人节","0308 妇女节","0312 植树节","0315 消费者权益日","0401 愚人节","0501 劳动节","0504 青年节","0512 护士节","0601 儿童节","0701 香港回归、建党节", "0801 建军节","0808 父亲节","0910 教师节","0928 孔子诞辰","1001 国庆节", "1006 老人节","1024 联合国日","1031 万圣节","1108 中国记者日","1112 孙中山诞辰","1220 澳门回归日","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 = ''+solarTerms + ' ' + solarFestival + ' ' + lunarFestival+''; 
         
   var cl = ''; 
   return(cl+festival+''); 
} 
//新增
/* 求此民國年是否為閏年, 返回 0 為平年, 1 為閏年 */
function GetLeap( year )
{
   if ( year % 400 == 0 )
     return 1;
   else if ( year % 100 == 0 )
     return 0;
   else if ( year % 4 == 0 )
     return 1;
   else
     return 0;
}
function tagLunarCal( d, i, w, k, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13) {
this.BaseDays = d;         /* 到民國 1 月 1 日到農曆正月初一的累積日數 */
this.Intercalation = i;    /* 閏月月份. 0==此年沒有閏月 */
this.BaseWeekday = w;      /* 此年民國 1 月 1 日為星期幾再減 1 */
this.BaseKanChih = k;      /* 此年民國 1 月 1 日之干支序號減 1 */
this.MonthDays = [ m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13 ]; /* 此農曆年每月之大小, 0==小月(29日), 1==大月(30日) */
}
function CalConv()
{
FIRSTYEAR = 1998;
LASTYEAR = 2031;

today = new Date();
SolarYear = today.getFullYear();
SolarMonth = today.getMonth() + 1;
SolarDate = today.getDate();

LunarCal = [
  new tagLunarCal( 27,  5, 3, 43, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ),
  new tagLunarCal( 46,  0, 4, 48, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 ), /* 88 */
  new tagLunarCal( 35,  0, 5, 53, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1 ), /* 89 */
  new tagLunarCal( 23,  4, 0, 59, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 42,  0, 1,  4, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 31,  0, 2,  9, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 21,  2, 3, 14, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 ), /* 93 */
  new tagLunarCal( 39,  0, 5, 20, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 28,  7, 6, 25, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 ),
  new tagLunarCal( 48,  0, 0, 30, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 ),
  new tagLunarCal( 37,  0, 1, 35, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 ), /* 97 */
  new tagLunarCal( 25,  5, 3, 41, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
  new tagLunarCal( 44,  0, 4, 46, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
  new tagLunarCal( 33,  0, 5, 51, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 22,  4, 6, 56, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ), /* 101 */
  new tagLunarCal( 40,  0, 1,  2, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 30,  9, 2,  7, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 49,  0, 3, 12, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 38,  0, 4, 17, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 ), /* 105 */
  new tagLunarCal( 27,  6, 6, 23, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ),
  new tagLunarCal( 46,  0, 0, 28, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0 ),
  new tagLunarCal( 35,  0, 1, 33, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ),
  new tagLunarCal( 24,  4, 2, 38, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ), /* 109 */
  new tagLunarCal( 42,  0, 4, 44, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 31,  0, 5, 49, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 21,  2, 6, 54, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 40,  0, 0, 59, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), /* 113 */
  new tagLunarCal( 28,  6, 2,  5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ),
  new tagLunarCal( 47,  0, 3, 10, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1 ),
  new tagLunarCal( 36,  0, 4, 15, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 ),
  new tagLunarCal( 25,  5, 5, 20, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ), /* 117 */
  new tagLunarCal( 43,  0, 0, 26, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ),
  new tagLunarCal( 32,  0, 1, 31, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0 ),
  new tagLunarCal( 22,  3, 2, 36, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 ) ];
/* 民國年每月之日數 */
SolarCal = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];

/* 民國年每月之累積日數, 平年與閏年 */ 
SolarDays = [  0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365, 396,  0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, 397 ];
AnimalIdx = ["马", "羊", "猴", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇" ];
LocationIdx = [ "南", "东", "北", "西" ];

sm = SolarMonth - 1;
if ( sm < 0 || sm > 11 ) return 2;
leap = GetLeap( SolarYear );
if ( sm == 1 )
d = leap + 28;
else
d = SolarCal[sm];
if ( SolarDate < 1 || SolarDate > d ) return 3;
y = SolarYear - FIRSTYEAR;
acc = SolarDays[ leap*14 + sm ] + SolarDate;
kc = acc + LunarCal[y].BaseKanChih;
Kan = kc % 10;
Chih = kc % 12;
Location = LocationIdx[kc % 4];
Age = kc % 60;
if ( Age < 22 )
Age = 22 - Age;
else
Age = 82 - Age;
Animal = AnimalIdx[ Chih ];
document.write( "煞" + Location + " 沖" + Animal + Age + "岁" ); 
}
function setCalendar(){ 
     document.write("<span class=\"jsdhtml\"> ");
     document.write( '<a target=_blank href=http://www.ccler.com/minsu/minsujieri/ style=color:red;>'+solarDay3()+'</a> <a href=http://sm.ccler.com/huangli/ target=_blank title=昌龙老黄历查询>'+YYMMDD()+' '+weekday()+''+solarDay2()+' '); 
	 CalConv();
	 document.write( "</a></span>" );
} 
setCalendar(); 