﻿var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; 
var Mn="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月";
var FIRSTYEAR = 1936;
var LASTYEAR = 2031;
var today=new Date();
var SolarYear = today.getYear();
 if ( SolarYear > FIRSTYEAR && SolarYear <= LASTYEAR ) {
 LunarCal = [
  new tagLunarCal(23, 3, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0 ), /* 1936 */ 
  new tagLunarCal( 41, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 ), 
  new tagLunarCal( 30, 7, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 49, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ), 
  new tagLunarCal( 38, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ), /* 1940 */ 
  new tagLunarCal( 26, 6, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 45, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 35, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 24, 4, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 ), /* 1944 */ 
  new tagLunarCal( 43, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 ), 
  new tagLunarCal( 32, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 ), 
  new tagLunarCal( 21, 2, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ), 
  new tagLunarCal( 40, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ), /* 1948 */ 
  new tagLunarCal( 28, 7, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 47, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 36, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 26, 5, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ), /* 1952 */ 
  new tagLunarCal( 44, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 33, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 ), 
  new tagLunarCal( 23, 3, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ), 
  new tagLunarCal( 42, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ), /* 1956 */ 
  new tagLunarCal( 30, 8, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 48, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 38, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 27, 6, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 ), /* 1960 */ 
  new tagLunarCal( 45, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 35, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 24, 4, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ), 
  new tagLunarCal( 43, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ), /* 1964 */ 
  new tagLunarCal( 32, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 20, 3, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ), 
  new tagLunarCal( 39, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 29, 7, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 ), /* 1968 */ 
  new tagLunarCal( 47, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 36, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0 ), 
  new tagLunarCal( 26, 5, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1 ), 
  new tagLunarCal( 45, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 ), /* 1972 */ 
  new tagLunarCal( 33, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1 ), 
  new tagLunarCal( 22, 4, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 41, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1 ), 
  new tagLunarCal( 30, 8, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ), /* 1976 */ 
  new tagLunarCal( 48, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1 ), 
  new tagLunarCal( 37, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ), 
  new tagLunarCal( 27, 6, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0 ), 
  new tagLunarCal( 46, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0 ), /* 1980 */ 
  new tagLunarCal( 35, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1 ), 
  new tagLunarCal( 24, 4, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1 ), 
  new tagLunarCal( 43, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1 ), 
  new tagLunarCal( 32, 10, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1 ), /* 1984 */ 
  new tagLunarCal( 50, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 39, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1 ), 
  new tagLunarCal( 28, 6, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 ), 
  new tagLunarCal( 47, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), /* 1988 */ 
  new tagLunarCal( 36, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0 ), 
  new tagLunarCal( 26, 5, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1 ), 
  new tagLunarCal( 45, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0 ), 
  new tagLunarCal( 34, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0 ), /* 1992 */ 
  new tagLunarCal( 22, 3, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 40, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ), 
  new tagLunarCal( 30, 8, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1 ), 
  new tagLunarCal( 49, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1 ), /* 1996 */ 
  new tagLunarCal( 37, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 27, 5, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ), 
  new tagLunarCal( 46,  0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 ), /* 1999 */
  new tagLunarCal( 35,  0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1 ), /* 2000 */
  new tagLunarCal( 23,  4, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 42,  0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 31,  0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 21,  2, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 ), /* 2004 */
  new tagLunarCal( 39,  0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 28,  7, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 ),
  new tagLunarCal( 48,  0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 ),
  new tagLunarCal( 37,  0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 ), /* 2008 */
  new tagLunarCal( 25,  5, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
  new tagLunarCal( 44,  0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
  new tagLunarCal( 33,  0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 22,  4, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ), /* 2012 */
  new tagLunarCal( 40,  0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 30,  9, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 49,  0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 38,  0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 ), /* 2016 */
  new tagLunarCal( 27,  6, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ),
  new tagLunarCal( 46,  0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0 ),
  new tagLunarCal( 35,  0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ),
  new tagLunarCal( 24,  4, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ), /* 2020 */
  new tagLunarCal( 42,  0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 31,  0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 ),
  new tagLunarCal( 21,  2, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
  new tagLunarCal( 40,  0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), /* 2024 */
  new tagLunarCal( 28,  6, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ),
  new tagLunarCal( 47,  0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1 ),
  new tagLunarCal( 36,  0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 ),
  new tagLunarCal( 25,  5, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ), /* 2028 */
  new tagLunarCal( 43,  0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ),
  new tagLunarCal( 32,  0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0 ),
  new tagLunarCal( 22,  3, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 ) ];

 
 /* 西曆年每月之累積日數, 平年與閏年 */
 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 ];

 Dn=Dn.split(";"); 
 Mn=Mn.split(";"); 

var sm = today.getMonth();
var SolarDate = today.getDate();
var leap = GetLeap( SolarYear );
var y = SolarYear - FIRSTYEAR;
var acc = SolarDays[ leap*14 + sm ] + SolarDate;
 if ( acc <= LunarCal[y].BaseDays ) {
  y--;
  LunarYear = SolarYear - 1;
  leap = GetLeap( LunarYear );
  sm += 12;
  acc = SolarDays[leap*14 + sm] + SolarDate;
  }
 else
  LunarYear = SolarYear;
  
 l1 = LunarCal[y].BaseDays;
 for ( i=0; i<13; i++ ) {
  l2 = l1 + LunarCal[y].MonthDays[i] + 29;
  if ( acc <= l2 ) break;
  l1 = l2;
  }

 LunarMonth = i + 1;
 LunarDate = acc - l1;
 im = LunarCal[y].Intercalation;

 if ( im != 0 && LunarMonth > im ) {
  LunarMonth--;
  if ( LunarMonth == im ) LunarMonth = -im;
  }

 if ( LunarMonth > 12 ) LunarMonth -= 12;
var timeValue = (LunarMonth < 0) ? "闰"+Mn[-LunarMonth-1] :Mn[LunarMonth-1];
 
document.write("<font color=#FFFFFF style='font-size:9pt;font-family: 宋体'>","农历" + timeValue + Dn[LunarDate-1] );
               
}

/* 闰年, 返回 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, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13) {
 this.BaseDays = d;         /* 1 月 1 日到正月初一的累计日 */
 this.Intercalation = i;    /* 闰月月份. 0==此年沒有闰月 */
 this.MonthDays = [ m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13 ]; /* 此农历年每月之大小, 0==小月(29日), 1==大月(30日) */
}
