var miy=0;	//月份的下标
var datenum2=0;
var iyear=0;	//年份标记
var dayim=0;	//当月第几天
var thisdate;
var thistime;
var ww;
var step;
var Festvname;
var Festvname2;
var bsYear2;

// 数组LunarDaysOfMonth存入农历2001年到2050年每年中的月天数信息
// 农历每月只能是29或30天，一年用12(或13)个二进制位表示，从高到低，对应位为1表示30天，否则29天 
var LunarDaysOfMonth = new Array
(
    0xd4a8, 0xd4a0, 0xda50, 0x5aa8, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, // 2001-2010 
    0xb4a0, 0xb550, 0xb550, 0x55a8, 0x4ba0, 0xa5b0, 0x52b8, 0x52b0, 0xa930, 0x74a8, // 2011-2020 
    0x6aa0, 0xad50, 0x4da8, 0x4b60, 0x9570, 0xa4e0, 0xd260, 0xe930, 0xd530, 0x5aa0, // 2021-2030 
    0x6b50, 0x96d0, 0x4ae8, 0x4ad0, 0xa4d0, 0xd258, 0xd250, 0xd520, 0xdaa0, 0xb5a0, // 2031-2040 
    0x56d0, 0x4ad8, 0x49b0, 0xa4b8, 0xa4b0, 0xaa50, 0xb528, 0x6d20, 0xada0, 0x55b0  // 2041-2050 
);

// 数组LunarLeapYear存放农历2001年到2050年闰月的月份，如没有则为0，从高到低，每字节存两年 
var LunarLeapYear = new Array
(
    0x40, 0x02, 0x07, 0x00, 0x50, // 2001-2010 
    0x04, 0x09, 0x00, 0x60, 0x04, // 2011-2020 
    0x00, 0x20, 0x60, 0x05, 0x00, // 2021-2030 
    0x30, 0xb0, 0x06, 0x00, 0x50, // 2031-2040 
    0x02, 0x07, 0x00, 0x50, 0x03  // 2041-2050 
);


// 返回农历iLunarYear年的闰月月份，如没有则返回0 
function GetLeapMonth(iLunarYear)
{ 
    var Leap = LunarLeapYear[(iLunarYear - 2001) >> 1];
    return (((iLunarYear - 2001) & 1) == 0) ? (Leap >> 4) : (Leap & 0x0f);
} 

// 返回农历iLunarYer年iLunarMonth月的天数，结果是一个长整数
// 如果iLunarMonth不是闰月， 高字为0，低字为该月的天数
// 如果iLunarMonth是闰月， 高字为后一个月的天数，低字为前一个月的天数
function LunarMonthDays(iLunarYear, iLunarMonth)
{ 
    var High;
    var Low;
    var Bit;

    High = 0;
    Low = 29;
    Bit = 16 - iLunarMonth;
    if ((iLunarMonth > GetLeapMonth(iLunarYear)) && (GetLeapMonth(iLunarYear) > 0))  Bit--;
    if ((LunarDaysOfMonth[iLunarYear - 2001] & (1 << Bit)) > 0)  Low++;
    if (iLunarMonth == GetLeapMonth(iLunarYear))
    {
        High = ((LunarDaysOfMonth[iLunarYear - 2001] & (1 << (Bit-1))) > 0) ?  30 : 29;
    }

    return Low + (High << 16);
} 

// 返回农历iLunarYear年的总天数
function LunarYearDays(iLunarYear)
{ 
    var Days;
    var tmp;

    Days = 0;
    for (var i=1; i <= 12; i++)
    {
        tmp = LunarMonthDays(iLunarYear, i);
        Days = Days + ((tmp >> 16) & 0xffff); //取高位 
        Days = Days + (tmp & 0xffff); //取低位 
    }

    return Days;
} 

// 将农历iLunarYear年格式化成天干地支记年法表示的字符串 
function FormatLunarYear(iLunarYear)
{ 
    var szText1 = new String("甲乙丙丁戊己庚辛壬癸");
    var szText2 = new String("子丑寅卯辰巳午未申酉戌亥");
    var strYear;
  
    strYear = szText1.substr((iLunarYear - 4) % 10, 1);
    strYear = strYear + szText2.substr((iLunarYear - 4) % 12, 1);

    return strYear + "年";
}

// 将农历iLunarMonth月格式化成农历表示的字符串
function FormatLunarMonth(iLunarMonth)
{ 
    var szText = new String("正二三四五六七八九十");
    var strMonth;

    if (iLunarMonth <= 10)
    {
        strMonth = szText.substr(iLunarMonth - 1, 1);
    }
    else if (iLunarMonth == 11) strMonth = "十一";
    else strMonth = "十二";

    return strMonth + "月";
} 

// 将农历iLunarDay日格式化成农历表示的字符串
function FormatLunarDay(iLunarDay)
{ 
    var szText1 = new String("初十廿三");
    var szText2 = new String("一二三四五六七八九十");
    var strDay;
    if ((iLunarDay != 20) && (iLunarDay != 30))
    {
        strDay = szText1.substr((iLunarDay - 1) / 10, 1) + szText2.substr((iLunarDay - 1) % 10, 1);
    }
    else if (iLunarDay != 20)
    {
        strDay = szText1.substr(iLunarDay / 10, 1) + "十";
    }
    else
    {
        strDay = "二十";
    }
  
    return strDay;
} 

// 将公历日期转换为农历日期，返回农历表示的字符串
function GetLunarDateString(SolarDate)
{
    var tmp;
    var iLunarYear;
    var iLunarMonth;
    var iLunarDay;
    var Leap = false;
    var MinMilli = 1000 * 60;
    var HrMilli = MinMilli * 60;
    var DyMilli = HrMilli * 24;
  
    // 从2001年1月1日算起，给定的公历日期已经过去的天数
    // 11323是1970年1月1日到2001年1月1日之间的天数，因为Date是从1970年1月1日作为起点的
    var iSpanDays = Math.floor(SolarDate.getTime() / DyMilli) - 11323;

    // 公历2001年1月24日为农历2001年正月初一，差23天
    if (iSpanDays < 23)
    {
        iYear = 2000;
        iLunarMonth = 12;
        iLunarDay = iSpanDays + 7;
    }
    else
    {
        // 从农历2001年正月初一算起 
        iSpanDays = iSpanDays - 23;
        iLunarYear = 2001;
        iLunarMonth = 1;
        iLunarDay = 1;
  
        // 计算农历年 
        tmp = LunarYearDays(iLunarYear);
        while (iSpanDays >= tmp)
        {
            iSpanDays -= tmp;
            iLunarYear++;
            tmp = LunarYearDays(iLunarYear);
        }

        // 计算农历月 
        tmp = LunarMonthDays(iLunarYear, iLunarMonth) & 0xffff; //取低字
        while (iSpanDays >= tmp)
        {
            iSpanDays -= tmp;
            if (iLunarMonth == GetLeapMonth(iLunarYear))  // 该年该月闰月
            {
                tmp = LunarMonthDays(iLunarYear, iLunarMonth) >> 16; //取高字
                if (iSpanDays < tmp)
                {
                    Leap = (tmp > 0) ? true : false;  // 闰月的后个月？
                    break;
                }
                iSpanDays = iSpanDays - tmp;
            }
  
            iLunarMonth++;
            tmp = LunarMonthDays(iLunarYear,iLunarMonth) & 0xffff; //取低字
        }
  
        // 计算农历日 
        iLunarDay += iSpanDays;
    }
  miy=iLunarMonth;
  dayim=iLunarDay;
    return "农历："+FormatLunarYear(iLunarYear) + (Leap ? "闰  " : "  ") + FormatLunarMonth(iLunarMonth) + FormatLunarDay(iLunarDay);
}

function clockon() {

today= new Date();
var years=today.getYear();
var months=today.getMonth()+1;
var dates=today.getDate();
var hours=today.getHours();
var minutes=today.getMinutes();
var seconds=today.getSeconds();

if (eval(hours) <10) {hours="0"+hours;}
if (eval(minutes) < 10) {minutes="0"+minutes;}
if (seconds < 10) {seconds="0"+seconds;}
var today= new Date();   // 今天是2004-3-5
var str = GetLunarDateString(today);//生成农历日期
var step
if(eval(hours)<1)
{
step="午夜";
}
else if(eval(hours)<6)
{
step="凌晨";
}
else if(eval(hours)<9)
{
step="早上";
}
else if(eval(hours)<11)
{
step="上午";
}
else if(eval(hours)<14)
{
step="中午";
}
else if(eval(hours)<18)
{
step="下午";
}
else if(eval(hours)<23)
{
step="晚上";
}
else if(eval(hours)<24)
{
step="午夜";
}

var D=new Date();
var yy=D.getYear();
var mm=D.getMonth()+1;
var dd=D.getDate();
var ww=D.getDay();
if (ww==0) ww="<font color=RED>星期日";
if (ww==1) ww="星期一";
if (ww==2) ww="星期二";
if (ww==3) ww="星期三";
if (ww==4) ww="星期四";
if (ww==5) ww="星期五";
if (ww==6) ww="<font color=RED>星期六";
ww=ww;

//国历节日 *表示放假日
var sFtv = new Array(
"0101*元旦节",
"0202*世界湿地日",
"0210*国际气象节",
"0214*情人节",
"0301*国际海豹日",
"0303*全国爱耳日",
"0305*学雷锋纪念日",
"0308*妇女节",
"0312*植树节 孙中山逝世纪念日",
"0314*国际警察日",
"0315*消费者权益日",
"0317*中国国医节 国际航海日",
"0321*世界森林日 消除种族歧视国际日 世界儿歌日",
"0322*世界水日",
"0323*世界气象日",
"0324*世界防治结核病日",
"0325*全国中小学生安全教育日",
"0330*巴勒斯坦国土日",
"0401*愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)",
"0407*世界卫生日",
"0422*世界地球日",
"0423*世界图书和版权日",
"0424*亚非新闻工作者日",
"0501*劳动节",
"0502*劳动节假日",
"0503*劳动节假日",
"0504*青年节",
"0505*碘缺乏病防治日",
"0508*世界红十字日",
"0512*国际护士节",
"0515*国际家庭日",
"0517*国际电信日",
"0518*国际博物馆日",
"0520*全国学生营养日",
"0523*国际牛奶日",
"0531*世界无烟日",
"0601*国际儿童节",
"0605*世界环境保护日",
"0606*全国爱眼日",
"0617*防治荒漠化和干旱日",
"0623*国际奥林匹克日",
"0625*全国土地日",
"0626*国际禁毒日",
"0701*香港回归纪念日 中共诞辰 世界建筑日",
"0702*国际体育记者日",
"0707*抗日战争纪念日",
"0711*世界人口日",
"0730*非洲妇女日",
"0801*建军节",
"0808*中国男子节(爸爸节)",
"0815*抗日战争胜利纪念",
"0908*国际扫盲日 国际新闻工作者日",
"0909*毛泽东逝世纪念",
"0910*中国教师节",
"0914*世界清洁地球日",
"0916*国际臭氧层保护日",
"0918*九·一八事变纪念日",
"0920*国际爱牙日",
"0927*世界旅游日",
"0928*孔子诞辰",
"1001*国庆节 世界音乐日 国际老人节",
"1002*国庆节假日 国际和平与民主自由斗争日",
"1003*国庆节假日",
"1004*世界动物日",
"1006*老人节",
"1008*全国高血压日 世界视觉日",
"1009*世界邮政日 万国邮联日",
"1010*辛亥革命纪念日 世界精神卫生日",
"1013*世界保健日 国际教师节",
"1014*世界标准日",
"1015*国际盲人节(白手杖节)",
"1016*世界粮食日",
"1017*世界消除贫困日",
"1022*世界传统医药日",
"1024*联合国日",
"1031*世界勤俭日",
"1107*十月社会主义革命纪念日",
"1108*中国记者日",
"1109*全国消防安全宣传教育日",
"1110*世界青年节",
"1111*国际科学与和平周(本日所属的一周)",
"1112*孙中山诞辰纪念日",
"1114*世界糖尿病日",
"1117*国际大学生节 世界学生节",
"1120*彝族年",
"1121*彝族年 世界问候日 世界电视日",
"1122*彝族年",
"1129*国际声援巴勒斯坦人民国际日",
"1201*世界艾滋病日",
"1203*世界残疾人日",
"1205*国际经济和社会发展志愿人员日",
"1208*国际儿童电视日",
"1209*世界足球日",
"1210*世界人权日",
"1212*西安事变纪念日",
"1213*南京大屠杀(1937年)纪念日！紧记血泪史！",
"1220*澳门回归纪念",
"1221*国际篮球日",
"1224*平安夜",
"1225*圣诞节",
"1226*毛泽东诞辰纪念")

//农历节日 *表示放假日
var lFtv = new Array(
"0101*春节",
"0102*初二",
"0103*初三",
"0115*元宵节",
"0505*端午节",
"0707*七夕情人节",
"0715*中元节",
"0815*中秋节",
"0909*重阳节",
"1208*腊八节",
"1223*小年",
"0100*除夕")

//判断国历节日
if(months<10&&dates<10)  {datenum="0"+months+"0"+dates;}
if(months<10&&dates>=10)  {datenum="0"+months+dates;}
if(months>=10&&dates>=10)  {datenum=months+dates;}
if(months>=10&&dates<10) {datenum=months+"0"+dates;}

if(miy<10&&dayim<10)  {datenum2="0"+miy+"0"+dayim;}
if(miy<10&&dayim>=10)  {datenum2="0"+miy+dayim;}
if(miy>=10&&dayim>=10)  {datenum2=miy+dayim;}
if(miy>=10&&dayim<10) {datenum2=miy+"0"+dayim;}


sl=sFtv.length;
for(i=0;i<sl;i++)
{
Festv=sFtv[i].split("*");
if(datenum==Festv[0])
{
Festvname=Festv[1]+"&nbsp;";
break;
}	
else
Festvname="";	
}

nl=lFtv.length;
for(i=0;i<nl;i++)
{
Festv=lFtv[i].split("*");
if(datenum2==Festv[0])
{
Festvname2 = Festv[1]+"&nbsp;";
break;
}	
else
Festvname2="";	
}
//输出结果///////////////////////////////////////////////////////////////////////////////////////////
thistime = hours+":"+minutes+":"+seconds;
thisdate = months+"月"+dates+"日";
//document.write (thisdate+"&nbsp;&nbsp;"+ww+"&nbsp;"+step+"&nbsp;&nbsp;"+thistime+"<br>"+Festvname+str +"&nbsp;"+Festvname2);
document.getElementById("time").innerHTML=thisdate+"&nbsp;&nbsp;"+ww+"&nbsp;"+step+"&nbsp;&nbsp;"+thistime+"<br>"+Festvname+str+"&nbsp;"+Festvname2;
var timer=setTimeout("clockon()",1000);
}

//-->
