﻿function CalConv() {
	FIRSTYEAR = 1998;
	LASTYEAR = 2031;

	today = new Date();
	SolarYear = today.getFullYear();
	SolarMonth = today.getMonth() + 1;
	SolarDate = today.getDate();
	Weekday = today.getDay();
	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 = [ "南", "东", "北", "西" ];
	if ( SolarYear <= FIRSTYEAR || SolarYear > LASTYEAR ) return 1;
	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 ];
	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;
 	today=new Date();
        function initArray(){
                         this.length=initArray.arguments.length
                         for(var i=0;i<this.length;i++)
                         this[i+1]=initArray.arguments[i]  }
       var d=new initArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
             document.write("", today.getFullYear(),"年",today.getMonth()+1,"月",today.getDate(),"日","&nbsp;&nbsp;", d[today.getDay()+1], "&nbsp;");
	  //document.write( "<br>" );
	  var NLunarMonth="";
	  if (LunarMonth == "1") { NLunarMonth="一";}
	  if (LunarMonth == "2") { NLunarMonth="二";}
	  if (LunarMonth == "3") { NLunarMonth="三";}
	  if (LunarMonth == "4") { NLunarMonth="四";}
	  if (LunarMonth == "5") { NLunarMonth="五";}
	  if (LunarMonth == "6") { NLunarMonth="六";}
	  if (LunarMonth == "7") { NLunarMonth="七";}
	  if (LunarMonth == "8") { NLunarMonth="八";}
	  if (LunarMonth == "9") { NLunarMonth="九";}
	  if (LunarMonth == "10") { NLunarMonth="十";}
	  if (LunarMonth == "11") { NLunarMonth="十一";}
	  if (LunarMonth == "12") { NLunarMonth="十二";}
	  if (LunarDate == "1") { NLunarDate="一";}
	  if (LunarDate == "2") { NLunarDate="二";}
	  if (LunarDate == "3") { NLunarDate="三";}
	  if (LunarDate == "4") { NLunarDate="四";}
	  if (LunarDate == "5") { NLunarDate="五";}
	  if (LunarDate == "6") { NLunarDate="六";}
	  if (LunarDate == "7") { NLunarDate="七";}
	  if (LunarDate == "8") { NLunarDate="八";}
	  if (LunarDate == "9") { NLunarDate="九";}
	  if (LunarDate == "10") { NLunarDate="十";}
	  if (LunarDate == "11") { NLunarDate="十一";}
	  if (LunarDate == "12") { NLunarDate="十二";}
	  if (LunarDate == "13") { NLunarDate="十三";}
	  if (LunarDate == "14") { NLunarDate="十四";}
	  if (LunarDate == "15") { NLunarDate="十五";}
	  if (LunarDate == "16") { NLunarDate="十六";}
	  if (LunarDate == "17") { NLunarDate="十七";}
	  if (LunarDate == "18") { NLunarDate="十八";}
	  if (LunarDate == "19") { NLunarDate="十九";}
	  if (LunarDate == "20") { NLunarDate="二十";}
	  if (LunarDate == "21") { NLunarDate="二十一";}
	  if (LunarDate == "22") { NLunarDate="二十二";}
	  if (LunarDate == "23") { NLunarDate="二十三";}
	  if (LunarDate == "24") { NLunarDate="二十四";}
	  if (LunarDate == "25") { NLunarDate="二十五";}
	  if (LunarDate == "26") { NLunarDate="二十六";}
	  if (LunarDate == "27") { NLunarDate="二十七";}
	  if (LunarDate == "28") { NLunarDate="二十八";}
	  if (LunarDate == "29") { NLunarDate="二十九";}
	  if (LunarDate == "30") { NLunarDate="三十";}
	  if (LunarDate == "31") { NLunarDate="三十一";}
	  document.write( " 农历" + LunarMonth + "月" + LunarDate + "日" );
    return 0; 
}

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;         
 this.Intercalation = i;    
 this.BaseWeekday = w;      
 this.BaseKanChih = k;      
 this.MonthDays = [ m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13 ]; 
}