万年历 加 日程安排

<!doctype html public "-//w3c//dtd html 4.01 tRANSITIONAL//en" "HTTP://WWW.W3.ORG/tr/HTML4/LOOSE.DTD">
<html>
<head>
    <title>nEW dOCUMENT </title>
    <meta name="gENERATOR" content="eDITpLUS">
    <meta name="aUTHOR" content="">
    <meta name="kEYWORDS" content="">
    <meta name="dESCRIPTION" content="">
    <style>
        body {
            margin: 0px;
            padding: 0px;
            font-family: Arial;
        }

        .aorange {
            font-size: 20px;
            color: #ff5f07;
            font-family: "黑体",serif;
            font-weight: bold;
        }

        .agreen {
            font-size: 20px;
            color: #55e8df;
            font-weight: bold;
        }

        .one {
            font-family: "黑体",serif;
            font-size: 20px;
            color: #000;
            font-weight: normal;
            width: 70px;
            height: 50px;
            cursor: pointer;
        }

        .spc {
            color: #ff5f07;
        }

        div, select, p {
            font-size: 12px;
            color: #000;
        }

            div#festival {
                color: #d8f6f8;
                width: 130px;
                padding: 2px;
                margin: 0;
                background-color: #0978a6;
            }

            div#datedetail {
                width: 130px;
                border: 0;
                padding: 2px;
                margin: 0;
                background-color: #e8f5f9;
                text-align: right;
            }

                div#datedetail span {
                    color: #23460f;
                }

            div#detail {
                position: absolute;
                visibility: hidden;
                margin: 0;
                border: 1px solid #a6a8ab;
            }

            div#date {
                width: 98%;
                font-size: 16px;
                padding: 5px;
                border: 1px solid #a6a8ab;
                background-color: #e6f0fa;
            }

            div#calendar {
                float: left;
                text-align: center;
                width: 500px;
                border: 1px solid #a6a8ab;
                border-top: 0;
                height: auto;
            }

        #calendarhead {
            color: #fafbfb;
            border: 0;
            padding: 0;
            margin: 0;
            background-color: #0978a6;
        }

            #calendarhead tr td {
                width: 70px;
                font-weight: bold;
                font-family: "黑体",serif;
                font-size: 20px;
                padding: 1px;
            }

        div#panel {
            margin: 0;
            padding: 10px;
        }

            div#panel div {
                padding: 2px;
                margin-top: 20px;
                background: #e8f5f9;
                border: 1px solid #a6a8ab;
                font-size: 9pt;
                cursor: pointer;
            }

        #week {
            background-color: #fcfcfc;
            border: 0;
            padding: 0;
            margin: 0;
        }

            #week tr td {
                padding: 1px;
                margin: 0;
                width: 70px;
                border-bottom: 1px solid #efefef;
                border-left: 1px solid #efefef;
            }

        .tr2 td {
            background-color: #e8f5f9;
        }

        #valid {
            float: left;
            margin: 0;
            padding: 30px;
        }

            #valid div {
                padding: 2px;
                margin-top: 20px;
            }

            #valid a img {
                border: 0;
            }

        #ganler {
            margin: 0px auto;
        }
    </style>
    <script type="text/javascript">
        var debug = 2; // -1: disable; 0: all; N: show level N debug msg.

        //农历数据信息
        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 monthName = new Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");

        //国历节日 *表示节假日
        var sFtv = new Array(
                "0101*元旦",
                "0214 情人节",
                "0308 妇女节",
                "0312 植树节",
                "0315 消费者权益日",
                "0321 世界森林日、世界儿歌日",
                "0322 世界水日",
                "0323 世界气象日",
                "0324 世界防治结核病日",

                "0401 愚人节",
                "0407 世界卫生日",
                "0422 世界地球日",

                "0501*劳动节",
                "0504 青年节",
                "0505 碘缺乏病防治日",
                "0508 世界红十字日",
                "0512 国际护士节",
                "0515 国际家庭日",
                "0517 世界电信日",
                "0518 国际博物馆日",
                "0520 全国学生营养日",
                "0523 国际牛奶日",
                "0531 世界无烟日",

                "0601 儿童节",
                "0605 世界环境日",
                "0606 全国爱眼日",
                "0616 防治荒漠化和干旱日",
                "0623 国际奥林匹克日",
                "0625 全国土地日",
                "0626 国际反毒品日",

                "0701 建党节 香港回归纪念 国际建筑日",
                "0707 中国人民抗日战争纪念日",
                "0711 世界人口日",

                "0801 建军节",
                "0808 父亲节",

                "0908 国际扫盲日",
                "0909 老毛逝世纪念",
                "0910 教师节",
                "0912 嘻嘻日",
                "0916 国际臭氧层保护日",
                "0920 国际爱牙日",
                "0927 世界旅游日",
                "0928 孔子诞辰",

                "1001*国庆节 国际音乐日",
                "1004 世界动物日",
                "1006 老人节",
                "1008 全国高血压日 世界视觉日",
                "1009 世界邮政日",
                "1015 国际盲人节",
                "1016 世界粮食日",
                "1017 世界消除贫困日",
                "1024 联合国日",

                "1108 中国记者日",
                "1109 消防宣传日",
                "1112 孙中山诞辰纪念",
                "1114 世界糖尿病日",
                "1117 国际大学生节",

                "1201 世界艾滋病日",
                "1203 世界残疾人日",
                "1209 世界足球日",
                "1220 澳门回归纪念",
                "1225 圣诞节",
                "1226 老毛诞辰纪念",
                "1229 国际生物多样性日"
                );

        //农历节日 *表示节假日
        var lFtv = new Array(
                "0101*春节",
                "0115 元宵节",
                "0505 端午节",
                "0707 七夕情人节",
                "0715 中元节",
                "0815 中秋节",
                "0909 重阳节",
                "1208 腊八节",
                "1223 小年",
                "0100*除夕"
                );

        //按周计算 月周日
        var wFtv = new Array(
                "0520 国际母亲节",
                "0530 全国助残日",
                "0630 国际父亲节",
                "0932 国际和平日",
                "0940 国际聋人节",
                "1013 国际减轻自然灾害日",
                "1011 国际住房日"
                );

        function log(level, msg) {
            if (debug == 0 || debug == level)
                if (window.console) {
                    window.console.log("[DEBUG]" + msg);
                }
        }

        function lYearDays(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) {
            if (leapMonth(y)) return ((lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
            else return (0);
        }

        function leapMonth(y) {
            return (lunarInfo[y - 1900] & 0xf);
        }

        function monthDays(y, m) {
            return ((lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
        }

        function Lunar(objDate) {
            var m = ""; // msg for log
            var i, leap = 0, temp = 0;
            var baseDate = new Date(1900, 0, 31);
            // changed by hmisty 2005/07/23
            //   var offset   = (objDate - baseDate)/86400000;
            var offset = Math.floor((objDate.getTime() + 2206425600000) / 86400000);
            m += "objDate=" + objDate.getTime() + ", new Date(1900,0,31)=" + baseDate.getTime();
            m += "offset=" + offset;

            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;

            m += "\noffset=" + offset + ", year=" + this.year + ", yearCyl=" + this.yearCyl + ", month=" + this.month + ",\n monthCyl=" + this.monthCyl + ", day=" + this.day + ", dayCyl=" + this.dayCyl;
            log(2, m);
        }

        function solarDays(y, m) {
            if (m == 1)
                return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
            else
                return (solarMonth[m]);
        }

        function cyclical(num) {
            return (Gan[num % 10] + Zhi[num % 12]);
        }

        function calElement(sYear, sMonth, sDay, week, lYear, lMonth, lDay, isLeap, cYear, cMonth, cDay) {

            this.isToday = false;
            this.sYear = sYear;
            this.sMonth = sMonth;
            this.sDay = sDay;
            this.week = week;
            this.lYear = lYear;
            this.lMonth = lMonth;
            this.lDay = lDay;
            this.isLeap = isLeap;
            this.cYear = cYear;
            this.cMonth = cMonth;
            this.cDay = cDay;

            this.color = '';

            this.lunarFestival = '';
            this.solarFestival = '';
            this.solarTerms = '';

        }

        function sTerm(y, n) {
            log(1, "y=" + y + " n=" + n + " sTermInfo[n]=" + sTermInfo[n] + " Date.UTC(1900,0,6,2,5)=" + Date.UTC(1900, 0, 6, 2, 5) + " Date.UTC(1970,0,1,0,0)=" + Date.UTC(1970, 0, 1, 0, 0));
            // changed by hmisty 2005/07/23
            //   var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) );
            var offDate = new Date((31556925974.7 * (y - 1900) + sTermInfo[n] * 60000) - 2208549300000);
            // Negative epoch (time_t) values are not officially supported by the
            // POSIX standards.  On some systems, they are known not to work.
            // -- perldoc Time::Local

            return (offDate.getUTCDate());
        }

        function calendar(y, m) {
            log(1, "i am in calendar() now");
            var sDObj, lDObj, lY, lM, lD = 1, lL, lX = 0, tmp1, tmp2;
            var lDPOS = new Array(3);
            var n = 0;
            var firstLM = 0;

            sDObj = new Date(y, m, 1);

            this.length = solarDays(y, m);
            this.firstWeek = sDObj.getDay();

            log(1, "this.length: " + this.length);
            log(1, "begin loop for(var i=0;i<this.length;i++)");
            for (var i = 0; i < this.length; i++) {

                if (lD > lX) {
                    sDObj = new Date(y, m, i + 1);
                    lDObj = new Lunar(sDObj);
                    lY = lDObj.year;
                    lM = lDObj.month;
                    lD = lDObj.day;
                    lL = lDObj.isLeap;
                    lX = lL ? leapDays(lY) : monthDays(lY, lM);

                    if (n == 0) firstLM = lM;
                    lDPOS[n++] = i - lD + 1;
                }

                //log(1,  "lDObj.dayCyl: "+lDObj.dayCyl);
                this[i] = new calElement(y, m + 1, i + 1, nStr1[(i + this.firstWeek) % 7],
                                       lY, lM, lD++, lL,
                                       cyclical(lDObj.yearCyl), cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++));


                if ((i + this.firstWeek) % 7 == 0) this[i].color = '#ff5f07';
                if ((i + this.firstWeek) % 14 == 13) this[i].color = '#ff5f07';
            }
            log(1, "end loop for(var i=0;i<this.length;i++)");

            tmp1 = sTerm(y, m * 2) - 1;
            tmp2 = sTerm(y, m * 2 + 1) - 1;
            log(1, "m: " + m + " tmp1: " + tmp1 + " " + solarTerm[m * 2] + " tmp2: " + tmp2 + " " + solarTerm[m * 2 + 1]);
            this[tmp1].solarTerms = solarTerm[m * 2];
            this[tmp2].solarTerms = solarTerm[m * 2 + 1];
            if (m == 3) this[tmp1].color = '#ff5f07';

            log(1, "begin loop for(i in sFtv)");
            for (i in sFtv)
                if (sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
                    if (Number(RegExp.$1) == (m + 1)) {
                        this[Number(RegExp.$2) - 1].solarFestival += RegExp.$4 + ' ';
                        if (RegExp.$3 == '*') this[Number(RegExp.$2) - 1].color = '#ff5f07';
                    }

            log(1, "begin loop for(i in wFtv)");
            for (i in wFtv)
                if (wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
                    if (Number(RegExp.$1) == (m + 1)) {
                        tmp1 = Number(RegExp.$2);
                        tmp2 = Number(RegExp.$3);
                        this[((this.firstWeek > tmp2) ? 7 : 0) + 7 * (tmp1 - 1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
                    }

            log(1, "begin loop for(i in lFtv)");
            for (i in lFtv)
                if (lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
                    log(1, lFtv[i]);
                    tmp1 = Number(RegExp.$1) - firstLM;
                    if (tmp1 == -11) tmp1 = 1;
                    if (tmp1 >= 0 && tmp1 < n) {
                        tmp2 = lDPOS[tmp1] + Number(RegExp.$2) - 1;
                        if (tmp2 >= 0 && tmp2 < this.length) {
                            log(1, "tmp2 >= 0 && tmp2(" + tmp2 + ")<this.length(" + this.length + ")");
                            log(1, RegExp.$4);
                            log(1, this[tmp2].lunarFestival);
                            this[tmp2].lunarFestival += RegExp.$4 + ' ';
                            log(1, RegExp.$3);
                            if (RegExp.$3 == '*') this[tmp2].color = '#ff5f07';
                        }
                    }
                }

            log(1, "begin 黑色星期五");
            if ((this.firstWeek + 12) % 7 == 5)
                this[12].solarFestival += '黑色星期五 ';

            if (y == tY && m == tM) {
                this[tD - 1].isToday = true;
            }
        }

        function cDay(d) {
            var s;
            switch (d) {
                case 10:
                    s = '初十';
                    break;
                case 20:
                    s = '二十';
                    break;
                case 30:
                    s = '三十';
                    break;
                default:
                    s = nStr2[Math.floor(d / 10)];
                    s += nStr1[d % 10];
            }
            return (s);
        }

        var cld;

        function drawCld(SY, SM) {
            log(1, "i am in drawCld() now");
            var i, sD, s, size;
            log(1, "begin to create calendar cld");
            cld = new calendar(SY, SM);
            log(1, "calendar cld creation finished");
            /*
               if(SY>1874 && SY<1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874)
               if(SY>1908 && SY<1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908)
               if(SY>1911 && SY<1950) yDisplay = '民国' + (((SY-1911)==1)?'元':SY-1911)
               if(SY>1949) yDisplay = '共和国' + (((SY-1949)==1)?'元':SY-1949)
             */
            var curYear, curMonth;
            curYear = SY;
            curMonth = SM;

            document.getElementById("gz").innerHTML = '&nbsp;&nbsp;农历'
                + cyclical(SY - 1900 + 36) + '年 &nbsp;&nbsp;【' + Animals[(SY - 4) % 12] + '';
            log(1, "innerHTML of gz is " + document.getElementById("gz").innerHTML);
            //YMBG.innerHTML = "&nbsp;" + SY + "<BR>&nbsp;" + monthName[SM];

            for (i = 0; i < 42; i++) {

                sObj = document.getElementById('sd' + i);
                lObj = document.getElementById('ld' + i);

                sObj.style.background = '';
                lObj.style.background = '';

                sD = i - cld.firstWeek;
                if (sD > -1 && sD < cld.length) {

                    //在这里根据用户的选择可以拼接出一个当前选择的日期字符串 你可以在这里判断对比并且添加内容
                    // alert(SY + "-" + (SM+1) + "-" + (sD + 1)); 
                    var TheNewContent = SY + "-" + (SM + 1) + "-" + (sD + 1);
                    for (var v = 0; v < Tlist.length; v++) { 
                        if (TheNewContent == Tlist[v]) {
                            sObj.innerHTML = sD + 1 + "<br/><span style='color:red;font-size:12px;'>日程</span>";
                            break;
                        }else
                            sObj.innerHTML = sD + 1;
                    }  
                    

                    if (cld[sD].isToday) {
                        //设置今天的背景色
                        sObj.style.background = '#005eac'; 
                        //lObj.style.background = 'red';
                    }

                    sObj.style.color = cld[sD].color;
                    if (cld[sD].lDay == 1)
                        lObj.innerHTML = '<b>' + (cld[sD].isLeap ? '' : '')
                            + cld[sD].lMonth + ''
                            + (monthDays(cld[sD].lYear, cld[sD].lMonth) == 29 ? '' : '') + '</b>';
                    else
                        lObj.innerHTML = cDay(cld[sD].lDay);
                    s = cld[sD].lunarFestival;
                    if (s.length > 0) {
                        //农历节日名称大于5个字截去
                        //if(s.length>5) s = s.substr(0, 3)+'…';
                        if (s.length > 7) s = s.substr(0, 5) + '';
                        s = s.fontcolor('#ff5f07');
                    }
                    else {
                        s = cld[sD].solarFestival;
                        if (s.length > 0) {
                            //阳历节日名称截去
                            //size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;            
                            size = (s.charCodeAt(0) > 0 && s.charCodeAt(0) < 128) ? 9 : 5;
                            if (s.length > size + 1) s = s.substr(0, size - 1) + '';
                            s = s.fontcolor('#0168ea');
                        }
                        else {
                            s = cld[sD].solarTerms;
                            if (s.length > 0) s = s.fontcolor('#44d7cf');
                        }
                    }
                    if (s.length > 0) lObj.innerHTML = s;

                }
                else {
                    sObj.innerHTML = ' ';
                    lObj.innerHTML = ' ';
                }
            }
            //alert(document.getElementById("clock").innerHTML);
        }


        function changeCld() {
            var y, m;
            y = document.getElementById("sy").selectedIndex + 1900;
            if (y > 2050) {
                alert("对不起 大于2050年的万年历无法产生 请重新选择");
                var nows = new Date();
                document.getElementById("sy").selectedIndex = nows.getFullYear() - 1900;
                document.getElementById("sm").selectedIndex = nows.getMonth();
                drawCld(nows.getFullYear(), nows.getMonth());
                return;
            }
            m = document.getElementById("sm").selectedIndex;
            drawCld(y, m);
        }

        function pushBtm(K) {
            switch (K) {
                case 'YU':
                    if (document.getElementById("sy").selectedIndex > 0)
                        document.getElementById("sy").selectedIndex--;
                    break;
                case 'YD':
                    if (document.getElementById("sy").selectedIndex < 149)
                        document.getElementById("sy").selectedIndex++;
                    break;
                case 'MU':
                    if (document.getElementById("sm").selectedIndex > 0) {
                        document.getElementById("sm").selectedIndex--;
                    }
                    else {
                        document.getElementById("sm").selectedIndex = 11;
                        if (document.getElementById("sy").selectedIndex > 0)
                            document.getElementById("sy").selectedIndex--;
                    }
                    break;
                case 'MD':
                    if (document.getElementById("sm").selectedIndex < 11) {
                        document.getElementById("sm").selectedIndex++;
                    }
                    else {
                        document.getElementById("sm").selectedIndex = 0;
                        if (document.getElementById("sy").selectedIndex < 149)
                            document.getElementById("sy").selectedIndex++;
                    }
                    break;
                default:
                    document.getElementById("sy").selectedIndex = tY - 1900;
                    document.getElementById("sm").selectedIndex = tM;
            }
            changeCld();
        }

        var Today = new Date();
        var tY = Today.getFullYear();
        var tM = Today.getMonth();
        var tD = Today.getDate();

        var width = "130"; //detail层宽度
        var offsetx = 2;
        var offsety = 16;

        var x = 0;
        var y = 0;
        var show = 0;
        var sw = 0;
        var cnt = 0;

        var dStyle;
        document.onmousemove = mEvn;

        //用detail层显示详细信息
        function mOvr(v) {
            var festival = document.getElementById("festival");
            var datedetail = document.getElementById("datedetail");

            var sObj = document.getElementById('sd' + v);
            //alert(v);
            var d = sObj.innerHTML - 1;

            if (sObj.innerHTML != '') {
                sObj.style.cursor = 'hand';
                if (cld[d].solarTerms == ''
                        && cld[d].solarFestival == ''
                        && cld[d].lunarFestival == '') {
                    festival.innerHTML = "";
                    festival.style.display = "none";
                }
                else {

                    festival.innerHTML = cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival;

                    festival.style.display = "block";
                }
                datedetail.innerHTML = cld[d].sYear + '' + cld[d].sMonth
                + '' + cld[d].sDay + ' 日<br />星期' + cld[d].week + '<br />'
                + '<span>农历' + (cld[d].isLeap ? '' : ' ')
                + cld[d].lMonth + '' + cld[d].lDay + ' 日<br />'
                + cld[d].cYear + '' + cld[d].cMonth
                + '' + cld[d].cDay + '日</span>';

                if (show == 0) {
                    dStyle.left = (x + offsetx - (width / 2)) + "px";
                    dStyle.top = (y + offsety) + "px";
                    dStyle.visibility = "visible";
                    show = 1;
                }
                sObj.onclick = function () {
                    alert(cld[d].sYear + '-' + cld[d].sMonth + '-' + cld[d].sDay + '');
                }
            }
        }

        function mOut() {
            if (cnt >= 1) { sw = 0 }
            if (sw == 0) { show = 0; dStyle.visibility = "hidden"; }
            else cnt++;
        }

        //获取鼠标坐标
        function mEvn(e) {
            if (!show) return;
            if (window.event) {
                x = event.x;
                y = event.y;
                if (document.body.scrollLeft) {
                    x += document.body.scrollLeft;
                    y += document.body.scrollTop;
                }
                // changed by hmisty 2005/07/23
                dStyle.left = (x + offsetx - (width / 2)) + "px";
                dStyle.top = (y + offsety) + "px";
            }
            else {
                dStyle.left = (e.pageX + offsetx - (width / 2)) + "px";
                dStyle.top = (e.pageY + offsety) + "px";
            }
        }

        function changeTZ() {
            document.getElementById("city").innerHTML = document.getElementById("tz").value.substr(6);
            setCookie("TZ", document.getElementById("tz").selectedIndex);
        }

        function tick() {
            var today;
            today = new Date();
            document.getElementById("clock").innerHTML = today.getFullYear() + ""
                + today.getMonth() + "" + today.getDay() + "" + today.getTime();
            /*
               document.getElementById("clock").innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, ""); 
               document.getElementById("clock").innerHTML = TimeAdd(today.toGMTString(), document.getElementById("tz").value);
             */
            //alert(document.getElementById("clock").innerHTML);
            window.setTimeout("tick()", 1000);
        }

        function setCookie(name, value) {
            var today = new Date()
            var expires = new Date()
            expires.setTime(today.getTime() + 1000 * 60 * 60 * 24 * 365)
            document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
        }

        function getCookie(Name) {
            var search = Name + "=";
            if (document.cookie.length > 0) {
                offset = document.cookie.indexOf(search);
                if (offset != -1) {
                    offset += search.length;
                    end = document.cookie.indexOf(";", offset);
                    if (end == -1) end = document.cookie.length;
                    return unescape(document.cookie.substring(offset, end));
                }
                else return "";
            }
        }

        function fillSelect() {
            syd = document.getElementById("sy");
            syd.innerHTML = "";
            for (i = 1900; i < 2050; i++) {
                ins = document.createElement("OPTION");
                ins.innerHTML = i;
                syd.appendChild(ins);
            }
            smd = document.getElementById("sm");
            smd.innerHTML = "";
            for (i = 1; i < 13; i++) {
                ins = document.createElement("OPTION");
                ins.innerHTML = i;
                smd.appendChild(ins);
            }
        }

        function fillCalendar() {
            var gNum;
            var tablex = document.createElement("table");
            tablex.setAttribute("id", "week");
            for (i = 0; i < 6; i++) {
                var trx1 = document.createElement("tr");
                var trx2 = document.createElement("tr");
                trx1.setAttribute("class", "tr1");
                trx2.setAttribute("class", "tr2");
                for (j = 0; j < 7; j++) {
                    gNum = i * 7 + j;
                    var tdx = document.createElement("td");
                    tdx.setAttribute("id", "sd" + gNum);
                    tdx.setAttribute("onMouseOver", 'mOvr(' + gNum + ')');
                    tdx.setAttribute("onMouseOut", "mOut()");
                    if (j == 0) {
                        tdx.setAttribute("class", "aorange");
                    }
                    else if (j == 6) {
                        if (i % 2 == 1) tdx.setAttribute("class", "aorange");
                        else tdx.setAttribute("class", "agreen");
                    }
                    else {
                        tdx.setAttribute("class", "one");
                    }
                    trx1.appendChild(tdx);

                    tdx = document.createElement("td");
                    tdx.setAttribute("id", "ld" + gNum);
                    tdx.setAttribute("onMouseOver", 'mOvr(' + gNum + ')');
                    tdx.setAttribute("onMouseOut", "mOut()");
                    trx2.appendChild(tdx);
                }
                tablex.appendChild(trx1);
                tablex.appendChild(trx2);
            }
            document.getElementById("calendar").appendChild(tablex);
        }
        //界面初始化
        function initial() {
            //select

            dStyle = document.getElementById("detail").style;
            //fillSelect();
            //fillCalendar();

            document.getElementById("sy").selectedIndex = tY - 1900;
            document.getElementById("sm").selectedIndex = tM;
            log(1, "initial call drawCld() now");

            drawCld(tY, tM);
            //document.getElementById("tz").selectedIndex=getCookie("TZ");
            //if(document.getElementById("tz").selectedIndex<1)
            //    document.getElementById("tz").selectedIndex=39;
            //changeTZ();
            tick();


        }

        function TimeAdd(UTC, T) {
            var PlusMinus, DST, y;
            //alert(T); 
            if (T.substr(0, 1) == "-") {
                PlusMinus = -1;
            }
            else {
                PlusMinus = 1;
            }
            //UTC = UTC.substr(1
        }
        var Tlist = ["2013-5-6", "2013-5-16", "2013-5-7","2014-1-11"];
    </script>
</head>
<body onload="initial()">
<p>var Tlist = ["2013-5-6", "2013-5-16", "2013-5-7","2014-1-11"]; 日程</p>
    <div id="ganler" style="background-color: #E6F0FA; width: 600px; border: solid 1px gray;">
        <div style="margin: auto 0px;">
            这个div用来控制位置
        </div>
        <table width="600" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td style="text-align: center;">
                    <table width="600" cellpadding="0" cellspacing="0">
                        <tr>
                            <td colspan="2" valign="top">
                                <!--头部开始-->
                                <div id="date" style="text-align: center; border: 0px; border-bottom: solid 1px #E6F0FA">
                                    <p>
                                        公历
        <select name="select" id="sy" onchange="changeCld()">
            <option>1900</option>
            <option>1901</option>
            <option>1902</option>
            <option>1903</option>
            <option>1904</option>
            <option>1905</option>
            <option>1906</option>
            <option>1907</option>

            <option>1908</option>
            <option>1909</option>
            <option>1910</option>
            <option>1911</option>
            <option>1912</option>
            <option>1913</option>

            <option>1914</option>
            <option>1915</option>
            <option>1916</option>
            <option>1917</option>
            <option>1918</option>
            <option>1919</option>

            <option>1920</option>
            <option>1921</option>
            <option>1922</option>
            <option>1923</option>
            <option>1924</option>
            <option>1925</option>

            <option>1926</option>
            <option>1927</option>
            <option>1928</option>
            <option>1929</option>
            <option>1930</option>
            <option>1931</option>

            <option>1932</option>
            <option>1933</option>
            <option>1934</option>
            <option>1935</option>
            <option>1936</option>
            <option>1937</option>

            <option>1938</option>
            <option>1939</option>
            <option>1940</option>
            <option>1941</option>
            <option>1942</option>
            <option>1943</option>

            <option>1944</option>
            <option>1945</option>
            <option>1946</option>
            <option>1947</option>
            <option>1948</option>
            <option>1949</option>

            <option>1950</option>
            <option>1951</option>
            <option>1952</option>
            <option>1953</option>
            <option>1954</option>
            <option>1955</option>

            <option>1956</option>
            <option>1957</option>
            <option>1958</option>
            <option>1959</option>
            <option>1960</option>
            <option>1961</option>

            <option>1962</option>
            <option>1963</option>
            <option>1964</option>
            <option>1965</option>
            <option>1966</option>
            <option>1967</option>

            <option>1968</option>
            <option>1969</option>
            <option>1970</option>
            <option>1971</option>
            <option>1972</option>
            <option>1973</option>

            <option>1974</option>
            <option>1975</option>
            <option>1976</option>
            <option>1977</option>
            <option>1978</option>
            <option>1979</option>

            <option>1980</option>
            <option>1981</option>
            <option>1982</option>
            <option>1983</option>
            <option>1984</option>
            <option>1985</option>

            <option>1986</option>
            <option>1987</option>
            <option>1988</option>
            <option>1989</option>
            <option>1990</option>
            <option>1991</option>

            <option>1992</option>
            <option>1993</option>
            <option>1994</option>
            <option>1995</option>
            <option>1996</option>
            <option>1997</option>

            <option>1998</option>
            <option>1999</option>
            <option>2000</option>
            <option>2001</option>
            <option>2002</option>
            <option>2003</option>

            <option>2004</option>
            <option>2005</option>
            <option>2006</option>
            <option>2007</option>
            <option>2008</option>
            <option>2009</option>

            <option>2010</option>
            <option>2011</option>
            <option>2012</option>
            <option>2013</option>
            <option>2014</option>
            <option>2015</option>

            <option>2016</option>
            <option>2017</option>
            <option>2018</option>
            <option>2019</option>
            <option>2020</option>
            <option>2021</option>

            <option>2022</option>
            <option>2023</option>
            <option>2024</option>
            <option>2025</option>
            <option>2026</option>
            <option>2027</option>

            <option>2028</option>
            <option>2029</option>
            <option>2030</option>
            <option>2031</option>
            <option>2032</option>
            <option>2033</option>

            <option>2034</option>
            <option>2035</option>
            <option>2036</option>
            <option>2037</option>
            <option>2038</option>
            <option>2039</option>

            <option>2040</option>
            <option>2041</option>
            <option>2042</option>
            <option>2043</option>
            <option>2044</option>
            <option>2045</option>

            <option>2046</option>
            <option>2047</option>
            <option>2048</option>
            <option>2049</option>
            <option>2050</option>
            <option>2051</option>
        </select><select name="select2" id="sm" onchange="changeCld()">
            <option>1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
            <option>5</option>
            <option>6</option>

            <option>7</option>
            <option>8</option>
            <option>9</option>
            <option>10</option>
            <option>11</option>
            <option>12</option>

        </select><span id="gz">&nbsp;</span>
                                    </p>
                                </div>
                                <!--头部结束-->
                            </td>
                        </tr>
                        <tr>
                            <!--日期开始-->
                            <td align="center" valign="top" style="width: 500px; border: solid 0px #E6F0FA">
                                <div id="calendar">
                                    <div id="detail">

                                        <div id="datedetail"></div>
                                        <div id="festival"></div>
                                    </div>
                                    <table id="calendarhead">
                                        <tr>
                                            <td></td>
                                            <td></td>
                                            <td></td>

                                            <td></td>
                                            <td></td>
                                            <td></td>
                                            <td></td>
                                        </tr>
                                    </table>
                                    <table id="week">

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(0)" id="sd0"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(1)" id="sd1"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(2)" id="sd2"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(3)" id="sd3"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(4)" id="sd4"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(5)" id="sd5"></td>
                                            <td class="agreen" onmouseout="mOut()" onmouseover="mOvr(6)" id="sd6"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(0)" id="ld0"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(1)" id="ld1"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(2)" id="ld2"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(3)" id="ld3"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(4)" id="ld4"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(5)" id="ld5"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(6)" id="ld6"></td>
                                        </tr>

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(7)" id="sd7"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(8)" id="sd8"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(9)" id="sd9"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(10)" id="sd10"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(11)" id="sd11"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(12)" id="sd12"></td>
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(13)" id="sd13"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(7)" id="ld7"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(8)" id="ld8"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(9)" id="ld9"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(10)" id="ld10"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(11)" id="ld11"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(12)" id="ld12"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(13)" id="ld13"></td>
                                        </tr>

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(14)" id="sd14"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(15)" id="sd15"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(16)" id="sd16"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(17)" id="sd17"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(18)" id="sd18"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(19)" id="sd19"></td>
                                            <td class="agreen" onmouseout="mOut()" onmouseover="mOvr(20)" id="sd20"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(14)" id="ld14"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(15)" id="ld15"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(16)" id="ld16"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(17)" id="ld17"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(18)" id="ld18"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(19)" id="ld19"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(20)" id="ld20"></td>
                                        </tr>

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(21)" id="sd21"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(22)" id="sd22"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(23)" id="sd23"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(24)" id="sd24"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(25)" id="sd25"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(26)" id="sd26"></td>
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(27)" id="sd27"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(21)" id="ld21"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(22)" id="ld22"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(23)" id="ld23"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(24)" id="ld24"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(25)" id="ld25"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(26)" id="ld26"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(27)" id="ld27"></td>
                                        </tr>

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(28)" id="sd28"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(29)" id="sd29"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(30)" id="sd30"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(31)" id="sd31"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(32)" id="sd32"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(33)" id="sd33"></td>
                                            <td class="agreen" onmouseout="mOut()" onmouseover="mOvr(34)" id="sd34"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(28)" id="ld28"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(29)" id="ld29"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(30)" id="ld30"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(31)" id="ld31"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(32)" id="ld32"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(33)" id="ld33"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(34)" id="ld34"></td>
                                        </tr>

                                        <tr class="tr1">
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(35)" id="sd35"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(36)" id="sd36"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(37)" id="sd37"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(38)" id="sd38"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(39)" id="sd39"></td>
                                            <td class="one" onmouseout="mOut()" onmouseover="mOvr(40)" id="sd40"></td>
                                            <td class="aorange" onmouseout="mOut()" onmouseover="mOvr(41)" id="sd41"></td>
                                        </tr>

                                        <tr class="tr2">
                                            <td onmouseout="mOut()" onmouseover="mOvr(35)" id="ld35"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(36)" id="ld36"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(37)" id="ld37"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(38)" id="ld38"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(39)" id="ld39"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(40)" id="ld40"></td>
                                            <td onmouseout="mOut()" onmouseover="mOvr(41)" id="ld41"></td>
                                        </tr>

                                    </table>
                                </div>
                                <!--头部结束-->
                            </td>
                            <td valign="top">
                                <!--选择项开始-->
                                <div id="panel">
                                    <div onclick="pushBtm('YU')">上一年↑</div>
                                    <div onclick="pushBtm('YD')">下一年↓</div>
                                    <div onclick="pushBtm('MU')">上一月↑</div>
                                    <div onclick="pushBtm('MD')">下一月↓</div>
                                    <div onclick="pushBtm('')">当前月</div>
                                </div>
                                <!--选择项结束-->
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
        <script language="javascript">
            function addFav(title, url) {   //  加入收藏夹
                if (document.all) {
                    window.external.addFavorite(url, title);
                }
                else if (window.sidebar) {
                    window.sidebar.addPanel(title, url, "");
                }
            }
        </script>
    </div>
</body>
</html>

 

posted @ 2013-05-11 22:11  Ganler1988  阅读(521)  评论(2编辑  收藏  举报