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  solarMonth=new  Array(31,28,31,30,31,30,31,31,30,31,30,31);
var  Gan=new  Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var  Zhi=new  Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var  Animals=new  Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var  solarTerm  =  new  Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
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  nStr1  =  new  Array('天','一','二','三','四','五','六','七','八','九','十','十一','腊')
var  nStr2  =  new  Array('初','十','廿','卅','　')
//国历节日  *表示放假日
var  sFtv  =  new  Array(
"0101*元旦",
"0308  妇女节",
"0501  劳动节",
"0504  青年节",
"0601  儿童节",
"0701  建党节  香港回归纪念",
"0801  建军节",
"0808  父亲节",
"0910  教师节",
"0928  孔子西历圣诞日",
"1001*国庆节")
//农历节日  *表示放假日
var  lFtv  =  new  Array(
"0101*春节、弥勒佛圣诞",
"0106  定光佛圣诞",
"0115  元宵节",
"0208  释迦牟尼佛出家",
"0215  释迦牟尼佛涅槃",
"0219  观世音菩萨圣诞",
"0221  普贤菩萨圣诞",
"0316  准提菩萨圣诞",
"0404  文殊菩萨圣诞",
"0408  释迦牟尼佛圣诞",
"0415  佛吉祥日",
"0505  端午节",
"0513  伽蓝菩萨圣诞",
"0603  护法韦驮菩萨圣诞",
"0619  观世音菩萨成道日",
"0707  七夕节",
"0713  大势至菩萨圣诞",
"0715  盂兰盆会/佛欢喜日/僧自恣日",
"0724  龙树菩萨圣诞",
"0730  地藏王菩萨圣诞",
"0815  中秋节",
"0822  燃灯佛圣诞",
"0827  孔子诞辰",
"0909  重阳节",
"0919  观世音菩萨出家日",
"0930  药师佛圣诞",
"1005  达摩祖师圣诞",
"1117  阿弥陀佛圣诞",
"1208  释迦如来成道日,腊八节",
"1223  小年",
"1229  华严菩萨圣诞",
"0100*除夕")

function  lYearDays(y)  //传回农历  y年的总天数
{	var i,sum=348
	for(i=0x8000; i>0x8; i>>=1)  sum+=(lunarInfo[y-1900]&i)? 1: 0
	return(sum+leapDays(y))
}

function  leapDays(y)  //传回农历  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
}

//传入  offset  传回干支,  0=甲子
function  cyclical(num)  {		return(Gan[num%10]+Zhi[num%12])	}

function  cDay(d)//中文日期
{	switch  (d)  
	{	case  10:	s  =  '初十';  break;
		case  20:	s  =  '二十';  break;
		case  30:	s  =  '三十';  break;break;
		default:	s  =  nStr2[Math.floor(d/10)];	s  +=  nStr1[d%10];
	}return(s);
}

function  sTerm(y,n)  //某年的第n个节气为几日(从0小寒起算)
{	var offDate = new Date((31556925974.7*(y-1900)+sTermInfo[n]*60000)+Date.UTC(1900,0,6,2,5))
	return(offDate.getUTCDate())
}

function  drawCld(sY,sM,sD)  //输出函数
{	var  i,s,l,f,sDObj,lDObj,jieqiDate,zhongqiDate,jieqi,zhongqi;
	sDObj =new Date(sY,sM,sD);	lDObj =new Lunar(sDObj)
	s='&nbsp;&nbsp;';
	jieqiDate=sTerm(sY,sM*2)-1;	zhongqiDate=sTerm(sY,sM*2+1)-1;
	jieqi=solarTerm[sM*2];		zhongqi=solarTerm[sM*2+1];
	if(sDObj.getDate()==(jieqiDate+1)) 	s+='<font color=#ff00ff>'+jieqi+'</font>';
	if(sDObj.getDate()==(zhongqiDate+1)) 	s+='<font color=#FF3300>'+zhongqi+'</font>';
	sDay=sDObj.getDay();
	s+='&nbsp;&nbsp;星期'+nStr1[sDay%7];
	//正月初一之前属相不变
	animal=(sM>=0 && sM<=3 && lDObj.month>10 && lDObj.month<=12)?((sY-4)%12-1):(sY-4)%12;
	if(animal<0)	animal=11;
	l='【'+Animals[animal]+'】&nbsp;夏历：'+cyclical(lDObj.yearCyl)+'年 '+(lDObj.isLeap?'<b>闰</b>':'')+(lDObj.month==1?'正':nStr1[lDObj.month%13])+'月('+(monthDays(lDObj.year,lDObj.month)==29?'小':'大')+')&nbsp;&nbsp;'+cDay(lDObj.day)
	
	sf="&nbsp;";
	if(sY>=1949)
	{	for(i  in  sFtv)//国历节日
		  if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
			if(Number(RegExp.$1)==(sDObj.getMonth()+1))
				if(Number(RegExp.$2)==sDObj.getDate())  {	sf+=RegExp.$4;	break		}
	}

	lf="&nbsp;";
	for(j in lFtv)//农历节日
		if(lFtv[j].match(/^(\d{2})(.{2})([\s\*])(.+)$/))  
			if(Number(RegExp.$1)==lDObj.month)
				if(Number(RegExp.$2)==lDObj.day)	{	lf+=RegExp.$4;	break		}
	
	if(monthDays(lDObj.year,lDObj.month)==29&&lDObj.day==29)
	{	if(lDObj.month==7)	 lf+='&nbsp;地藏王菩萨圣诞';
		if(lDObj.month==9)  lf+='&nbsp;药师佛圣诞';
	}
	
	SOLAR.innerHTML=s; LUNE.innerHTML=l; L_FESTIVAL.innerHTML=lf; S_FESTIVAL.innerHTML=sf;
}

function  changeCld()  
{	var  y,m;
	y=parseInt(CLD.SY.options[CLD.SY.selectedIndex].value);	
	m=parseInt(CLD.SM.options[CLD.SM.selectedIndex].value)-1; 
	d=parseInt(CLD.SD.options[CLD.SD.selectedIndex].value);
	drawCld(y,m,d);
}

var Today=new Date();
var  tY  =Today.getFullYear();
var  tM  =Today.getMonth();
var  tD  =Today.getDate();

function showdiv(pass,today) 
{	if (document.getElementById) // DOM3 = IE5, NS6 
	{	pass.style.visibility="visible";  today.style.visibility="hidden";}
	else if (document.layers) // Netscape 4 
	{	document.layers[pass].display = 'visible'; document.layers[today].display = 'hidden';}
	else // IE 4 
	{	document.all.pass.visibility = 'visible'; document.all.today.visibility="hidden";}
}