var ChineseCalendar={lunarInfo:[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,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,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,0x04afb,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,0x14b63,0x09370,0x049f8,0x04970,0x064b0,0x168a6,0x0ea50,0x06b20,0x1a6c4,0x0aae0,0x0a2e0,0x0d2e3,0x0c960,0x0d557,0x0d4a0,0x0da50,0x05d55,0x056a0,0x0a6d0,0x055d4,0x052d0,0x0a9b8,0x0a950,0x0b4a0,0x0b6a6,0x0ad50,0x055a0,0x0aba4,0x0a5b0,0x052b0,0x0b273,0x06930,0x07337,0x06aa0,0x0ad50,0x14b55,0x04b60,0x0a570,0x054e4,0x0d160,0x0e968,0x0d520,0x0daa0,0x16aa6,0x056d0,0x04ae0,0x0a9d4,0x0a2d0,0x0d150,0x0f252,0x0d520],Gan:["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],Zhe:["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],Animals:["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],solarTerm:["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"],weekend:['日','一','二','三','四','五','六','七','八','九','十'],lunarStr:['初','十','廿','卅'],lunarMonStr:['正','二','三','四','五','六','七','八','九','十','冬','腊'],sTermInfo:[0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758],wFestive:['0520-母亲节','0630-父亲节','1144-感恩节'],cFestive:['0101-元旦','0214-情人节','0305#1963-雷锋日','0308-妇女节','0312-植树节','0401-愚人节','0501-劳动日','0504-青年节','0512-护士节','0601#1925-儿童节','0701#1997-建党节','0801#1927-建军节','0910-教师节','1001#1949-国庆节','1224-平安夜','1225-圣诞节',],lFestive:['1230-除夕','0101-春节','0102-正月初二','0115-元宵节','0505-端午节','0707-七夕节','0715-中元节','0815-中秋节','0909-重阳节','1208-腊八节','1224-小年'],lunarYearLength:function(y){var sum=12*29;for(var i=0x8000;i>0x8;i=i>>1){sum+=(ChineseCalendar.lunarInfo[y-1900]&i?1:0);} sum+=ChineseCalendar.leapMonthLengths(y);return sum;},lunarMonthLength:function(y,m){return ChineseCalendar.lunarInfo[y-1900]&(0x10000>>m)?30:29;},isLeapMonth:function(y){return ChineseCalendar.lunarInfo[y-1900]&0xf?true:false;},leapMonth:function(y){if(ChineseCalendar.isLeapMonth(y)){return ChineseCalendar.lunarInfo[y-1900]&0xf;} return 0;},leapMonthLengths:function(y){if(ChineseCalendar.isLeapMonth(y)){return ChineseCalendar.lunarInfo[y-1900]&0x10000?30:29;} return 0;},year2GanZhe:function(y){var gan=(y-3)%10;if(gan===0){gan=10;} var zhe=(y-3)%12;if(zhe===0){zhe=12;} return ChineseCalendar.Gan[gan-1]+ChineseCalendar.Zhe[zhe-1];},month2GanZhe:function(y,m){var ganY=(y-3)%10;if(ganY===0){ganY=10;} var month=((ganY-1)%5)*12+m+1;return ChineseCalendar.Gan[month%10]+ChineseCalendar.Zhe[month%12];},day2GanZhe:function(offset){var temp=40+offset;return ChineseCalendar.Gan[temp%10]+ChineseCalendar.Zhe[temp%12];},sTerm:function(y,n){var ms=31556925974.7*(y-1900)+ChineseCalendar.sTermInfo[n]*60000;var base=Date.UTC(1900,0,6,2,5);var date=new Date(ms+base);return date;},isTerm:function(y,m,d){var date=new Date(y,m-1,d);var n=(m-1)*2;var dateTerm=ChineseCalendar.sTerm(y,n);if(ChineseCalendar.isSameDay(dateTerm,date)){return ChineseCalendar.solarTerm[n];} n=n+1;dateTerm=ChineseCalendar.sTerm(y,n);if(ChineseCalendar.isSameDay(dateTerm,date)){return ChineseCalendar.solarTerm[n];} return false;},isSameDay:function(date1,date2){return date1.getFullYear()===date2.getFullYear()&&date1.getMonth()===date2.getMonth()&&date1.getDate()===date2.getDate();},getStar:function(month,day){var start=['魔羯','水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','魔羯'],limit=[20,19,21,21,21,22,23,23,23,23,22,22],result=(month-1)+(day>limit[month-1]?1:0);return start[result]+'座';},toLunarMonth:function(m,flag){if(flag){return '闰'+ChineseCalendar.lunarMonStr[m-1]+'月';} return ChineseCalendar.lunarMonStr[m-1]+'月';},toLunarDay:function(d){if(d===10){return '初十';} return ChineseCalendar.lunarStr[Math.floor(d/10)]+(d%10===0?'十':ChineseCalendar.weekend[d%10]);},getAnimal:function(y){return ChineseCalendar.Animals[(y-4)%12];},isTody:function(date){var now=new Date();return date.getFullYear()===now.getFullYear()&&date.getMonth()===now.getMonth()&&date.getDate()===now.getDate();},isFestive:function(y,m,d,ly,lm,ld){var lstr=lm>9?(lm+''):'0'+lm;lstr+=ld>9?(ld+''):'0'+ld;var cstr=m>9?(m+''):'0'+m;cstr+=d>9?(d+''):'0'+d;var festive=ChineseCalendar.lFestive;for(var i=0,l=festive.length;iyear[1]){if(year[0]===cstr){return test[2];}}else if(!year[1]){if(test[1]===cstr){return test[2];}}} festive=ChineseCalendar.wFestive;var date=new Date(y,m-1,d);for(var i=0,l=festive.length;i9?(m+''):'0'+m;if(str===month&&date.getDay()===parseInt(day)){var temp=ChineseCalendar.theNoWeek(y,m,d);if(temp===parseInt(nWeek)){return test[2];}}} return false;},theNoWeek:function(y,m,d){var first=new Date(y,m-1,d);first.setDate(1);var date=new Date(y,m-1,d);var day=first.getDay(),current=date.getDate();if(day===0){day=7;} var head=1,tail=8-day,result=1;while(1){if(current>=head&¤t<=tail){return result;} result+=1;head=tail+1;tail=head+6;}},isRunYear:function(year){return year%400===0||(year%4===0&&year%100!==0);},getlunarYMD:function(date){var result={year:date.getFullYear(),month:date.getMonth()+1,day:date.getDate()};var offset=(Date.UTC(result.year,result.month-1,result.day)-Date.UTC(1900,0,31))/(60*60*24*1000),temp=0;for(var i=1900;i<2101&&offset>0;i++){temp=ChineseCalendar.lunarYearLength(i);offset-=temp;} if(offset<0){offset+=temp;i--;} result.lunarYear=i;var isLear=false,lunarMonth=ChineseCalendar.leapMonth(result.lunarYear);for(var i=1;i<13&&offset>=0;i++){temp=ChineseCalendar.lunarMonthLength(result.lunarYear,i);offset-=temp;isLear=false;if(i===lunarMonth){if(offset<0){i--;isLear=true;}else{temp=ChineseCalendar.leapMonthLengths(result.lunarYear);offset-=temp;}}} if(offset<0){if(i===lunarMonth&&isLear){offset+=temp;isLear=false;}else if(i===(lunarMonth+1)){offset+=temp;isLear=true;i--;}else{offset+=temp;i--;}} result.lunarMonth=i;result.lunarMonthChiness=ChineseCalendar.toLunarMonth(result.lunarMonth,isLear);result.lunarDay=offset+1;result.lunarDayChiness=ChineseCalendar.toLunarDay(result.lunarDay);return result;},lunarFestival:function(date){var result=ChineseCalendar.getlunarYMD(date);var festive=ChineseCalendar.isFestive(result.year,result.month,result.day,result.lunarYear,result.lunarMonth,result.lunarDay);var term=ChineseCalendar.isTerm(result.year,result.month,result.day);if(festive){return festive}},lunarTerm:function(date){var result=ChineseCalendar.getlunarYMD(date);var term=ChineseCalendar.isTerm(result.year,result.month,result.day);if(term){return term}},lunarTime:function(date){var result=ChineseCalendar.getlunarYMD(date);return result.lunarDayChiness;},date2lunar:function(date){date=date||new Date();var result={year:date.getFullYear(),month:date.getMonth()+1,day:date.getDate()};var offset=(Date.UTC(result.year,result.month-1,result.day)-Date.UTC(1900,0,31))/(60*60*24*1000),temp=0;result.gzD=ChineseCalendar.day2GanZhe(offset);for(var i=1900;i<2101&&offset>0;i++){temp=ChineseCalendar.lunarYearLength(i);offset-=temp;} if(offset<0){offset+=temp;i--;} result.lunarYear=i;var isLear=false,lunarMonth=ChineseCalendar.leapMonth(result.lunarYear);for(var i=1;i<13&&offset>=0;i++){temp=ChineseCalendar.lunarMonthLength(result.lunarYear,i);offset-=temp;isLear=false;if(i===lunarMonth){if(offset<0){i--;isLear=true;}else{temp=ChineseCalendar.leapMonthLengths(result.lunarYear);offset-=temp;}}} if(offset<0){if(i===lunarMonth&&isLear){offset+=temp;isLear=false;}else if(i===(lunarMonth+1)){offset+=temp;isLear=true;i--;}else{offset+=temp;i--;}} result.lunarMonth=i;result.lunarMonthChiness=ChineseCalendar.toLunarMonth(result.lunarMonth,isLear);result.lunarDay=offset+1;result.lunarDayChiness=ChineseCalendar.toLunarDay(result.lunarDay);result.animal=ChineseCalendar.getAnimal(result.year);result.week="星期"+ChineseCalendar.weekend[date.getDay()];result.start=ChineseCalendar.getStar(result.month,result.day);result.gzY=ChineseCalendar.year2GanZhe(result.lunarYear);result.isTody=ChineseCalendar.isTody(date);result.gzM=ChineseCalendar.month2GanZhe(result.lunarYear,result.lunarMonth);result.isTerm=ChineseCalendar.isTerm(result.year,result.month,result.day);if(result.isTerm){result.term=result.isTerm;result.isTerm=true;} result.isFestive=ChineseCalendar.isFestive(result.year,result.month,result.day,result.lunarYear,result.lunarMonth,result.lunarDay);if(result.isFestive){result.festive=result.isFestive;result.isFestive=true;} return result;}}