模仿万年历,制作的考勤功能

来源:互联网 发布:石油库存公布数据 编辑:程序博客网 时间:2024/05/29 03:50
$(function () {    GetHolidayfristday();    var selectY;    var selectM;    GetHoliday(selectY, selectM);$(".c-dropdown2-btn-group").click(function() {$(".c-dropdown2-menu").css("visibility", "hidden");$(this).next(".c-dropdown2-menu").css("visibility", "visible");return false;});    //年下拉框    $("#currentYear ul li").mouseover(function () {$(this).addClass("c-dropdown2-hover");}).mouseout(function() {$(".c-dropdown2-hover").removeClass("c-dropdown2-hover");}).click(function() {$(".c-dropdown2-selected").removeClass("c-dropdown2-selected");$(this).addClass("c-dropdown2-selected");$(this).parent().parent().parent().prev().find(".c-dropdown2-btn").html($(".c-dropdown2-selected").html()); selectY = $("#c_dropdown2_id").text(); selectM = $("#c_dropdown2_m_id").text();GetHoliday(selectY, selectM);});    //月下拉框    $("#currentMonth ul li").mouseover(function () {        $(this).addClass("c-dropdown2-hover");    }).mouseout(function () {        $(".c-dropdown2-hover").removeClass("c-dropdown2-hover");    }).click(function () {        $(".c-dropdown2-selected").removeClass("c-dropdown2-selected");        $(this).addClass("c-dropdown2-selected");        $(this).parent().parent().parent().prev().find(".c-dropdown2-btn").html($(".c-dropdown2-selected").html());        var selectM= $("#c_dropdown2_m_id").text();        var selectY = $("#c_dropdown2_id").text();        GetHoliday(selectY, selectM);    });    //节日下拉框    $("#selectholidayId ul li").mouseover(function () {        $(this).addClass("c-dropdown2-hover");    }).mouseout(function () {        $(".c-dropdown2-hover").removeClass("c-dropdown2-hover");    }).click(function () {        $(".c-dropdown2-selected").removeClass("c-dropdown2-selected");        $(this).addClass("c-dropdown2-selected");        $(this).parent().parent().parent().prev().find(".c-dropdown2-btn").html($(".c-dropdown2-selected").html());        var holidaydt=getTimeByHoliday($("#holidayId").text());        var selholiYear = holidaydt.split('-')[0];        var selholiMonth = holidaydt.split('-')[1];        var selholiDay = holidaydt.split('-')[2];        //var selectY = $("#c_dropdown2_id").text();        GetHoliday(selholiYear, selholiMonth);    });$(document).click(function() {$(".c-dropdown2-menu").css("visibility", "hidden");});    //上个月按钮$("#prevMonthId").click(function () {    selectM = $("#c_dropdown2_m_id").text().replace('月', '');    selectY = $("#c_dropdown2_id").text().replace('年', '');    if (selectM == 1) {        $("#c_dropdown2_m_id").text(12 + "月");        $("#c_dropdown2_id").text((Number(selectY)-1) + "年");    }    else {        $("#c_dropdown2_m_id").text((Number(selectM) - 1) + "月");    }     selectM = $("#c_dropdown2_m_id").text();     selectY = $("#c_dropdown2_id").text();    GetHoliday(selectY, selectM);});$(".save_btn").click(function () {    //获取选中的节日类别id    var holidaytypeid = $("#holidaytypeId").find("option:selected").attr("value");    //获取选中的预留属性    var hasdt = $("#selectdtId").attr("hasd");   var selectM1 = $("#c_dropdown2_m_id").text().replace('月', '');    var selectY1 = $("#c_dropdown2_id").text().replace('年', '');    //获取选中的节日    var holiday = $("#selectdtId ").text();    var type;    var guid;    var date;    var remark;    var isdelete;    //=5属于正常工作日,新增处理    if (hasdt == 5) {        if (holidaytypeid == 0) {            alert("已经属于正常!"); return;        } else {            type = holidaytypeid;            guid = null;            date = holiday;            remark = "";        }    } else {        var hasguid = hasdt.split(',')[1];        // var hasweek = hasguid.split(',')[2];        if (holidaytypeid == 0) {            //非正常工作日,当类型id=0时,表示删除假日,否则表示修改            type = holidaytypeid;            guid = null;            date = holiday;            remark = "delete";            isdelete = 1;        } else {            type = holidaytypeid;            guid = hasguid;            date = holiday;            remark = "";        }    }    $.ajax({        type: "POST",        url: "/c/h/SaveHoliday",        data: { "Guid": guid, "DayType": type, "Date": date, "Remark": escape(remark), "isdelete": isdelete },        //url: "Ajax/HolidayHanlder.ashx?Type=SaveHoliday&Guid=" + guid + "&DayType=" + type + "&Date=" + date + "&Remark=" + escape(remark),        success: function (msg) {            alert(msg.msg);            //刷新            GetHoliday(selectY1, selectM1);        },        error: function (msg) {        }    });});    //返回今天$("#returnTodayId").click(function () {    var currentdt = new Date();    var currentM = Number(currentdt.getMonth()+1).toString()+"月";    var currentY = currentdt.getFullYear()+"年";    $("#c_dropdown2_m_id").text(currentM);    $("#c_dropdown2_id").text(currentY);    GetHoliday(currentY, currentM);    var solart = calendar.solar2lunar(currentdt.getFullYear(),Number(currentdt.getMonth()+1).toString(),currentdt.getDate());    $(".op-calendar-new-right-date").text(currentdt.getFullYear() + '-' + Number(currentdt.getMonth() + 1).toString() + '-' + currentdt.getDate() + '  ' + solart.ncWeek);    $(".op-calendar-new-right-day").text(currentdt.getDate());    $("#mdid").text(solart.IMonthCn + '' + solart.IDayCn);    $("#nYid").text(solart.gzYear + '年' + '【' + solart.Animal + '年' + '】');    $("#gmdid").text(solart.gzMonth + '月' + ' ' + solart.gzDay + '日')});    //下个月按钮$("#nextMonthId").click(function () {     selectM = $("#c_dropdown2_m_id").text().replace('月', '');     selectY = $("#c_dropdown2_id").text().replace('年', '');    if (selectM == 12) {        $("#c_dropdown2_m_id").text(1 + "月");        $("#c_dropdown2_id").text((Number(selectY) + 1) + "年");    }    else {        $("#c_dropdown2_m_id").text((Number(selectM) + 1) + "月");    }     selectM = $("#c_dropdown2_m_id").text();     selectY = $("#c_dropdown2_id").text();    GetHoliday(selectY, selectM);});    $("#ddlWeeks").click(function () {        CtorRemark();    });    $("#ddlHolidays").click(function () {        CtorRemark();    });    $("#btnAdd").click(function () {        ClearValue();    });    $("#txtDate").blur(function () {        if (!CheckDate($(this).val())) {            $("#txtDate").focus();            alert("时间格式不正确");            return;        }        var inputDate = new Date($(this).val());        var d = inputDate.getDay();        if (d == 0) {            $("#ddlWeeks").val(2);            $("#ddlWeeks").click();        } else if (d == 6) {            $("#ddlWeeks").val(1);            $("#ddlWeeks").click();        } else {            $("#ddlWeeks").val(0);            $("#ddlWeeks").click();        }    });});//判断当月的下个月初是不是星期一function getNextMonthfirstIsFri() {   var selectM = $("#c_dropdown2_m_id").text().replace('月', '');   var selectY = $("#c_dropdown2_id").text().replace('年', '');   if (selectM != 12) {       var a =selectY + '/' + (Number(selectM) + 1).toString() + '/' + 01;       alert(a);   } else if (selectM == 12) {       var b = (Number(selectY) + 1).toString() + '/' + 1 + '/' + 01;       alert(b);   }}//判断是否是闰年function isLeapYear(year) {    var pYear = year;    if (!isNaN(parseInt(pYear))) {        if ((pYear % 4 == 0 && pYear % 100 != 0) || (pYear % 100 == 0 && pYear % 400 == 0)) {            return true;        } else {            return false;        }    } }//初始化日历function GetHolidayfristday() {    var currentYear = new Date();    var currentM = currentYear.getMonth();    var currentY = currentYear.getFullYear();    $("#currentYear ul li").each(function () {        if ($(this).attr("data-value") == currentY) {            $(this).attr("data-selected", "selected").addClass("c-dropdown2-selected");            $("#c_dropdown2_id").text($(this).attr("data-value") + "年");        }    });    $("#currentMonth ul li").each(function () {        if ($(this).attr("data-value") == currentM + 1) {            $(this).attr("data-selected", "selected").addClass("c-dropdown2-selected");            $("#c_dropdown2_m_id").text($(this).attr("data-value") + "月");        }    });}//根据节日function getTimeByHoliday(holiday) {    var holidaydate;    var year = $("#c_dropdown2_id").text().substring(0, 4);    switch (holiday) {        case "元旦": holidaydate = year+"-1-1"; break;        case "春节":            var cale = calendar.lunar2solar(year,1,1);            holidaydate = cale.cYear + '-' + cale.cMonth + '-' +cale.cDay;             break;        case "清明节": holidaydate =year+"-4-5"; break;        case "劳动节": holidaydate = year+"-5-1"; break;        case "端午节":            var cale = calendar.lunar2solar(year,5,5);            holidaydate = cale.cYear + '-' + cale.cMonth + '-' + cale.cDay; break;        case "中秋节":            var cale = calendar.lunar2solar(year,8,15);            holidaydate = cale.cYear + '-' + cale.cMonth + '-' + cale.cDay; break;        case "国庆节": holidaydate =year+"-10-1"; break;    }    return holidaydate;}function btnInsert() {    var year = 0;    if ($("#DDLYear").val() != "" && $("#DDLYear").val() != null) {        year = $("#DDLYear").val();    }    $.ajax({        type: "POST",        url: "/c/h/SetHolidays",        data: { "Year": year },        dataType: "JSON",        success: function (data) {            GetHoliday();        },        error: function (msg) {        }    });}//获取数据function GetHoliday(selectY, selectM) {    var currenttime = new Date();    var year = currenttime.getFullYear();    var selectMonth;    var selectYear;    if ($("#dv_scroll").val() != "" && $("#dv_scroll").val() != null)        year = $("#dv_scroll").val();    var typeFilter = $("#dv_scroll").val();    if (selectY != '' && selectY != null) {         selectYear = selectY.replace('年', '');    } else {         selectYear = $("#c_dropdown2_id").text().replace('年', '');    }    if (selectM != '' && selectM != null) {         selectMonth = selectM.replace('月', '');    } else {         selectMonth = $("#c_dropdown2_m_id").text().replace('月', '');    }    var selectYMD = selectYear + '/' + selectMonth + '/' + 01;    var seldate = new Date(Date.parse(selectYMD));    //选中月的最大天数    var monthDays = MaxDayOfDate(selectYear,selectMonth);    var beforeMonthMaxDays = getCurrentYMbeforeM(selectYear, selectMonth);    //alert(getWeekNumByCurrentYM(selectYear + '/' + selectMonth + '/' + 01));    var nextMonthDayC = getWeekofCurrentDt(selectYear + '/' + selectMonth + '/' + monthDays);    //alert(nextMonthDayC);    $.ajax({        type: "POST",        url: "/c/h/GetHolidays",        data: { "year": year, "TypeFilter": typeFilter },        dataType: "JSON",        success: function (data) {            //初始化哈希表,将数据库中的数据放到表里            var hashtable = new jQuery.Hashtable();            var b = new Date();            for (var i = 0; i < data.length; i++) {                b.setTime(Date.parse(eval('new ' + (data[i].RestDate.replace(/\//g, '')))));                var selectym = tool.getDate(b);                var selecttype = data[i].HolidayType+','+data[i].HolidayID+','+data[i].Memo;               // var selecttype = data[i].HolidayType;                hashtable.add(selectym, ["" + selecttype + ""]);            };                //获取当前年月初星期几,数字表示                var weekNum = getWeekNumByCurrentYM(seldate);                //日期号                var dayNum = 0;                //记录循环次数                var idN = 1;                var prevYM = getPrevYMbyCurrentYM(selectYear, selectMonth);                var nextYM = getNextYMbyCurrentYM(selectYear, selectMonth);                var html = "<table class='op-calendar-new-table' id='tb_2'><tbody>";                for (var i = 0; i < 5; i++) {                    if (i == 0) {                        html += "<tr><th>一</th><th>二</th><th>三</th> <th>四</th><th>五</th><th class='op-calendar-new-table-weekend'>六</th><th class='op-calendar-new-table-weekend'>日</th></tr>";                    }                    html += "<tr>";                    if (dayNum < weekNum && idN <= monthDays) {                        for (var jm = beforeMonthMaxDays - (weekNum - 1) + 1 ; jm <= beforeMonthMaxDays; jm++) {                            if (hashtable.isexist(prevYM.split('-')[0] + '-' + prevYM.split('-')[1] + '-' + jm)) {                                var holidaytype = hashtable.get(prevYM.split('-')[0] + '-' + prevYM.split('-')[1] + '-' + jm)[0].split(',')[0];                                var hasguid = hashtable.get(prevYM.split('-')[0] + '-' + prevYM.split('-')[1] + '-' + jm)[0];                                //var hasmemo = hashtable.get(prevYM.split('-')[0] + '-' + prevYM.split('-')[1] + '-' + jm)[0].split(',')[2];                                if (holidaytype == 1) {                                    html += "<td><div id='" + '1' + jm + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + prevYM + '-' + jm + "'><span class='op-calendar-new-table-holiday-sign'>休</span>  <span class='op-calendar-new-daynumber'>" + jm + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                } else if (holidaytype == 2) {                                    html += "<td><div id='" + '1' + jm + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + prevYM + '-' + jm + "'> <span class='op-calendar-new-table-holiday-sign'>休</span> <span class='op-calendar-new-daynumber'>" + jm + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                } else {                                    html += "<td><div id='" + '1' + jm + "' class='op-calendar-new-relative'hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + prevYM + '-' + jm + "'> <span class='op-calendar-new-daynumber'>" + jm + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                }                            } else {                                html += "<td><div id='" + '1' + jm + "' class='op-calendar-new-relative'hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + prevYM + '-' + jm + "'> <span class='op-calendar-new-daynumber'>" + jm + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                            }                        }                    }                    for (var j = 1; j <= 7; j++) {                        dayNum++;                        //.op-calendar-new-daynumber                        if (dayNum >= weekNum && idN <= monthDays) {                           // idN++;                            if (hashtable.isexist(selectYear + '-' + selectMonth + '-' + idN)) {                                var holidaytype = hashtable.get(selectYear + '-' + selectMonth + '-' + idN)[0].split(',')[0].split(',')[0];                                var hasguid= hashtable.get(selectYear + '-' + selectMonth + '-' + idN)[0];                                //1为休假,2为上班                                if (holidaytype == 1) {                                    if (year ==selectYear && selectMonth == (Number(currenttime.getMonth()) + 1).toString() && jm == currenttime.getDate()) {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-today' date='2014-12-30'><span class='op-calendar-new-table-holiday-sign'>休</span> <span class='op-calendar-new-daynumber'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    } else {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-rest op-calendar-new-table-festival' date='2014-12-30'><span class='op-calendar-new-table-holiday-sign'>休</span> <span class='op-calendar-new-daynumber'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    }                                }                                else if (holidaytype == 2) {                                    if (year ==selectYear && selectMonth == (Number(currenttime.getMonth()) + 1).toString() && jm == currenttime.getDate()) {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-today' date='2014-12-30'> <span class='op-calendar-new-table-holiday-sign'>班</span><span class='op-calendar-new-daynumber'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    } else {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-work op-calendar-new-table-weekend' date='2014-12-30'> <span class='op-calendar-new-table-holiday-sign'>班</span><span class='op-calendar-new-daynumber'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    }                                } else {                                    if (year == selectYear && selectMonth == (Number(currenttime.getMonth()) + 1).toString() && jm == currenttime.getDate()) {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative''hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-today' date='2014-12-30'> <span class='op-calendar-new-daynumber' style='display: block;height: 22px;font-size: 18px;color: #000;'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    } else {                                        html += "<td><div id='" + idN + "' class='op-calendar-new-relative'hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='2014-12-30'> <span class='op-calendar-new-daynumber' style='display: block;height: 22px;font-size: 18px;color: #000;'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                    }                                }                            } else {                                if (year == Number(selectYear) && selectMonth == (Number(currenttime.getMonth()) + 1).toString() && jm == currenttime.getDate()) {                                } else {                                    html += "<td><div id='" + idN + "' class='op-calendar-new-relative'hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='2014-12-30'> <span class='op-calendar-new-daynumber' style='display: block;height: 22px;font-size: 18px;color: #000;'>" + idN++ + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                }                            }                        }                    }                    if (idN> monthDays && nextMonthDayC != 1) {                        for (var jd = 1; jd <= 7 - nextMonthDayC + 1; jd++) {                            if (hashtable.isexist(nextYM.split('-')[0] + '-' + nextYM.split('-')[1] + '-' + jd)) {                                var holidaytype = hashtable.get(nextYM.split('-')[0] + '-' + nextYM.split('-')[1] + '-' + jd)[0].split(',')[0];                                var hasguid= hashtable.get(nextYM.split('-')[0] + '-' + nextYM.split('-')[1] + '-' + jd)[0]                                if (holidaytype == 1) {                                    html += "<td><div id='" + '100' + jd + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + nextYM + '-' + jd + "'> <span class='op-calendar-new-table-holiday-sign'>休</span><span class='op-calendar-new-daynumber'>" + jd + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                }                                else if (holidaytype == 2) {                                    html += "<td><div id='" + '100' + jd + "' class='op-calendar-new-relative' hasdt='" + hasguid + "'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + nextYM + '-' + jd + "'><span class='op-calendar-new-table-holiday-sign'>班</span> <span class='op-calendar-new-daynumber'>" + jd + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                } else {                                    html += "<td><div id='" + '100' + jd + "' class='op-calendar-new-relative' hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + nextYM + '-' + jd + "'> <span class='op-calendar-new-daynumber'>" + jd + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                                }                            } else {                                html += "<td><div id='" + '100' + jd + "' class='op-calendar-new-relative' hasdt='5'><a href='javascript:;' hidefocus='true' class='op-calendar-new-table-other-month' date='" + nextYM + '-' + jd + "'> <span class='op-calendar-new-daynumber'>" + jd + "</span> <span class='op-calendar-new-table-almanac'></span> <span class='op-calendar-new-table-ticket'></span> </a></div></td>"                            }                        }                    }                    html += "</tr>";                }            html += "</tbody></table>";            $("#divData").html(html);            // 弹出层            $(".op-calendar-new-relative").each(function () {                $(this).click(function () {                    $(".Alertbg,.AlertDiv").show();                    //将数据存在弹出层属性中                    if ($(this).attr("id") > 100) {                        $("#selectdtId").text($(this).find(".op-calendar-new-table-other-month").attr("date"));                        $("#selectdtId").attr("hasd", $(this).attr("hasdt"));                    } else {                        $("#selectdtId").text(selectYear + '-' + selectMonth + '-' + $(this).find(".op-calendar-new-daynumber").text());                        $("#selectdtId").attr("hasd", $(this).attr("hasdt"));                    }                });            });            $(".close").click(function () {                $(".Alertbg,.AlertDiv").hide();            });            //鼠标移动事件显示当前时间农历信息            $(".op-calendar-new-relative").each(function () {                $(this).mouseover(function () {                    //当前选中的日期                    var selectdt = $(this).find(".op-calendar-new-daynumber").text();                    //当前选中的id                    var selectid = $(this).attr("id");                   // var dfd = calendar.solar2lunar(selectYear, selectMonth, selectdt);                    //判断如果大于100即为上个月的                    if (selectid > 100&&selectid<1000) {                        //alert("上个月的");                        var solart;                        var attrYear = $(this).find("a").attr("date").split('-')[0];                        var attrMonth = $(this).find("a").attr("date").split('-')[1];                        var attrdt = $(this).find("a").attr("date").split('-')[2];                        solart = calendar.solar2lunar(attrYear, attrMonth, attrdt);                        $(".op-calendar-new-right-date").text(attrYear + '-' + attrMonth + '-' + attrdt + '  ' + solart.ncWeek);                        $(".op-calendar-new-right-day").text(attrdt);                        $("#mdid").text(solart.IMonthCn + '' + solart.IDayCn);                        $("#nYid").text(solart.gzYear + '年' + '【' + solart.Animal + '年' + '】');                        $("#gmdid").text(solart.gzMonth + '月' + ' ' + solart.gzDay + '日');                    }//大于1000即为下个月的                    else if (selectid > 1000) {                        var solart;                        var attrYear = $(this).find("a").attr("date").split('-')[0];                        var attrMonth = $(this).find("a").attr("date").split('-')[1];                        var attrdt = $(this).find("a").attr("date").split('-')[2];                        solart = calendar.solar2lunar(attrYear, attrMonth, attrdt);                        $(".op-calendar-new-right-date").text(attrYear + '-' + attrMonth + '-' + attrdt + '  ' + solart.ncWeek);                        $(".op-calendar-new-right-day").text(attrdt);                        $("#mdid").text(solart.IMonthCn + '' + solart.IDayCn);                        $("#nYid").text(solart.gzYear + '年' + '【' + solart.Animal + '年' + '】');                        $("#gmdid").text(solart.gzMonth + '月' + ' ' + solart.gzDay + '日')                    } else {                      // alert(selectYear+','+selectMonth+','+selectdt);                        var solart = calendar.solar2lunar(selectYear, selectMonth, selectdt);                        $(".op-calendar-new-right-date").text(selectYear + '-' + selectMonth + '-' + selectdt + '  ' + solart.ncWeek);                        $(".op-calendar-new-right-day").text(selectdt);                        $("#mdid").text(solart.IMonthCn + '' + solart.IDayCn);                        $("#nYid").text(solart.gzYear + '年' + '【' + solart.Animal + '年' + '】');                        $("#gmdid").text(solart.gzMonth + '月' + ' ' + solart.gzDay + '日')                    }                });             });        },        error: function (msg) {        }    });    function EditOneDay(obj) {        $("#hidSelDayGuid").val($(obj).attr("guid"));        $("#hidSelDayType").val($(obj).attr("type"));        $("#txtDate").val($(obj).attr("restDate"));        $("#txtRemark").val($(obj).attr("remark"));        var type = $(obj).attr("type");        $("#ddlWeeks").val("0");        $("#ddlWeeks").find("option").each(function () {            if ($(this).val() != 0 && type.indexOf($(this).val()) > -1) {                $(this).attr("selected", "selected");            }        });        $("#ddlHolidays").val("0");        $("#ddlHolidays").find("option").each(function () {            if ($(this).val() != 0 && type.indexOf($(this).val()) > -1) {                $(this).attr("selected", "selected");            }        });        var timer = setInterval(function () {            setScrollTop(Math.floor(getScrollTop() / 2)); //这行代码是关键,取得滚动条竖直距离,除以speed后再给滚动条设置竖直距离             if (getScrollTop() == 0)                clearInterval(timer);        }, 100);        //$("#txtDate").focus();    }    //返回当前年月的下个月的年月    function getNextYMbyCurrentYM(year, month) {        var selectYear;        var selectMonth;        if (month == 12) {            selectYear = (Number(year) + 1).toString();            selectMonth = 1;            return selectYear + '-' + selectMonth;        }        else {            selectMonth = (Number(month) + 1).toString();            return year + '-' + selectMonth;        }    }    //返回当前年月上个月的年月    function getPrevYMbyCurrentYM(year, month) {        var selectYear;        var selectMonth;        if (month ==1) {            selectYear = (Number(year)-1).toString();            selectMonth = 12;            return selectYear + '-' + selectMonth;        }        else {            selectMonth = (Number(month) - 1).toString();            return year + '-' + selectMonth;        }    }    function getScrollTop() { //取得滚动条的竖直距离         return document.documentElement.scrollTop || document.body.scrollTop;    }    //获取当前年月的前月的最大天数    function getCurrentYMbeforeM(year, month) {        var lastMonth = year + '/' + month + '/' + 0;        var lastMonthD = new Date(lastMonth);        return lastMonthD.getDate();    }    //获取当前年月的下一个月的最大天数    function getCurrentYMnextM(year, month) {        var nextMonth = year + '/' + month + '/' + 1;        var nextMonthD = new Date(nextMonth);        return nextMonthD.getDate();    }    function getWeekofCurrentDt(date) {        var day = new Date(Date.parse(date));   //需要正则转换的则 此处为 : var day = new Date(Date.parse(date.replace(/-/g, '/')));          var today = new Array( '星期一', '星期二', '星期三', '星期四', '星期五', '星期六','星期日');        var WeekNum = 0;        switch (today[day.getDay()]) {            case "星期一": WeekNum = 1; break;            case "星期二": WeekNum = 2; break;            case "星期三": WeekNum = 3; break;            case "星期四": WeekNum = 4; break;            case "星期五": WeekNum = 5; break;            case "星期六": WeekNum = 6; break;            case "星期日": WeekNum = 7; break;        }        return WeekNum;    }    function setScrollTop(value) { //设置滚动条的竖直距离,实现效果的关键就是在很短的间隔时间内不断地修改滚动条的竖直距离,以实现滚动效果         document.documentElement.scrollTop = value;        document.body.scrollTop = value;    }    function CtorRemark() {        var txt = "";        var value = "";        if ($("#ddlWeeks").val() != "0") {            txt = $("#ddlWeeks").find("option:selected").text();            value = $("#ddlWeeks").val();        }        if ($("#ddlHolidays").val() != "0") {            value += "," + $("#ddlHolidays").val()            if (txt != "")                txt += "&&" + $("#ddlHolidays").find("option:selected").text();            else txt = $("#ddlHolidays").find("option:selected").text();        }        $("#txtRemark").val(txt);        $("#hidSelDayType").val(value);    }    //function CtorYearOption() {    //    var year = new Date().getFullYear();    //    for (var i = year - 10; i < year + 10; i++) {    //        document.getElementById("ddlYearFilter").options.add(new Option(i, i));    //        document.getElementById("DDLYear").options.add(new Option(i, i));    //    }    //    $("#ddlYearFilter").val(year);    //    $("#DDLYear").val(year);    //}    function ClearValue() {        $("#hidSelDayGuid").val("");        $("#hidSelDayType").val("");        $("#ddlWeeks").val("0");        $("#ddlHolidays").val("0");        $("#txtDate").val("");        $("#txtRemark").val("");    }    function btnDays() {        var startTime = $("#StartTime").val();        var endTime = $("#EndTime").val();        if (startTime == "") {            alert("开始日期必填");            return false;        }        if (endTime == "") {            alert("结束日期必填");            return false;        }        $.ajax({            type: "POST",            url: "/c/h/GetDays",            data: { "startTime": startTime, "endTime": endTime },            dataType: "JSON",            success: function (data) {                $("#Label1").html(data.msg);            },            error: function (msg) {            }        });    }    function btnHours() {        var startTime = $("#StartTime").val();        var endTime = $("#EndTime").val();        if (startTime == "") {            alert("开始日期必填");            return false;        }        if (endTime == "") {            alert("结束日期必填");            return false;        }        $.ajax({            type: "POST",            url: "/c/h/GetHours",            data: { "startTime": startTime, "endTime": endTime },            dataType: "JSON",            success: function (data) {                $("#Label1").html(data.msg);                $("#Label2").html(data.TimeSpan);            },            error: function (msg) {            }        });    }    //短时间验证,形如 (13:04:06)     function CheckTime(str) {        if (str == "" || str == null) return true;        var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);        if (a == null) { alert('输入的参数不是时间格式'); return false; }        if (a[1] > 24 || a[3] > 60 || a[4] > 60) {            alert("时间格式不对");            return false;        }        return true;    }    //短日期验证,形如 (2013-12-05)     function CheckDate(str) {        if (str == "" || str == null) return true;        var r = str.match(/^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2})$/);        if (r == null) return false;        var d = new Date(r[1], r[3] - 1, r[4]);        return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);    }    //长时间验证,形如 (2013-12-05 13:04:06)     function CheckDateTime(str) {        if (str == "" || str == null) return true;        var reg = /^(\d{1,4})(-|\/|.)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;        var r = str.match(reg);        if (r == null) return false;        var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);        return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);    }    function getWeekNumByCurrentYM(YMD) {        var today = new Date(Date.parse(YMD));        var d = new Array( "星期日","星期一", "星期二", "星期三", "星期四", "星期五", "星期六");        var WeekNum = 0;        switch (d[today.getDay()]) {            case "星期一": WeekNum = 1; break;            case "星期二": WeekNum = 2; break;            case "星期三": WeekNum = 3; break;            case "星期四": WeekNum = 4; break;            case "星期五": WeekNum = 5; break;            case "星期六": WeekNum = 6; break;            case "星期日": WeekNum = 7; break;        }        return WeekNum;    }    function getNowDate() {        var today = new Date();        var d = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");        var nowDate = "";        nowDate = showLocale();// 获取当前时间 年月日 时分秒        nowDate = nowDate + " " + d[today.getDay()];// 获取当前星期        nowDate = nowDate + " " + (CnDateofDateStr(today)); // 显示农历        nowDate = nowDate + " " + SolarTerm(today); // 显示二十四节气        return nowDate;    }    function showLocale() {        var str;        var objD;        objD = new Date();        var yy = objD.getYear();        if (yy < 1900) {            yy = yy + 1900;        }        var MM = objD.getMonth() + 1;        if (MM < 10) {            MM = '0' + MM;        }        var dd = objD.getDate();        if (dd < 10) {            dd = '0' + dd;        }        var hh = objD.getHours();        if (hh < 10) {            hh = '0' + hh;        }        var mm = objD.getMinutes();        if (mm < 10) {            mm = '0' + mm;        }        var ss = objD.getSeconds();        if (ss < 10) {            ss = '0' + ss;        }        var ww = objD.getDay();        // + hh + ":" + mm + ":" + ss +        str = yy + "年" + MM + "月" + dd + "日      ";        return (str);    }    function DaysNumberofDate(DateGL) {        return parseInt((Date.parse(DateGL) - Date.parse(DateGL.getFullYear() + "/1/1")) / 86400000) + 1;    }    function CnDateofDate(DateGL) {        var CnData = new Array(                0x16, 0x2a, 0xda, 0x00, 0x83, 0x49, 0xb6, 0x05, 0x0e, 0x64, 0xbb, 0x00, 0x19, 0xb2, 0x5b, 0x00,                0x87, 0x6a, 0x57, 0x04, 0x12, 0x75, 0x2b, 0x00, 0x1d, 0xb6, 0x95, 0x00, 0x8a, 0xad, 0x55, 0x02,                0x15, 0x55, 0xaa, 0x00, 0x82, 0x55, 0x6c, 0x07, 0x0d, 0xc9, 0x76, 0x00, 0x17, 0x64, 0xb7, 0x00,                0x86, 0xe4, 0xae, 0x05, 0x11, 0xea, 0x56, 0x00, 0x1b, 0x6d, 0x2a, 0x00, 0x88, 0x5a, 0xaa, 0x04,                0x14, 0xad, 0x55, 0x00, 0x81, 0xaa, 0xd5, 0x09, 0x0b, 0x52, 0xea, 0x00, 0x16, 0xa9, 0x6d, 0x00,                0x84, 0xa9, 0x5d, 0x06, 0x0f, 0xd4, 0xae, 0x00, 0x1a, 0xea, 0x4d, 0x00, 0x87, 0xba, 0x55, 0x04        );        var CnMonth = new Array();        var CnMonthDays = new Array();        var CnBeginDay;        var LeapMonth;        var Bytes = new Array();        var I;        var CnMonthData;        var DaysCount;        var CnDaysCount;        var ResultMonth;        var ResultDay;        var yyyy = DateGL.getFullYear();        var mm = DateGL.getMonth() + 1;        var dd = DateGL.getDate();        if (yyyy < 100) {            yyyy += 1900;        }        if ((yyyy < 1997) || (yyyy > 2020)) {            return 0;        }        Bytes[0] = CnData[(yyyy - 1997) * 4];        Bytes[1] = CnData[(yyyy - 1997) * 4 + 1];        Bytes[2] = CnData[(yyyy - 1997) * 4 + 2];        Bytes[3] = CnData[(yyyy - 1997) * 4 + 3];        if ((Bytes[0] & 0x80) != 0) {            CnMonth[0] = 12;        } else {            CnMonth[0] = 11;        }        CnBeginDay = (Bytes[0] & 0x7f);        CnMonthData = Bytes[1];        CnMonthData = CnMonthData << 8;        CnMonthData = CnMonthData | Bytes[2];        LeapMonth = Bytes[3];        for (I = 15; I >= 0; I--) {            CnMonthDays[15 - I] = 29;            if (((1 << I) & CnMonthData) != 0) {                CnMonthDays[15 - I]++;            }            if (CnMonth[15 - I] == LeapMonth) {                CnMonth[15 - I + 1] = -LeapMonth;            } else {                if (CnMonth[15 - I] < 0) {                    CnMonth[15 - I + 1] = -CnMonth[15 - I] + 1;                } else {                    CnMonth[15 - I + 1] = CnMonth[15 - I] + 1;                }                if (CnMonth[15 - I + 1] > 12) {                    CnMonth[15 - I + 1] = 1;                }            }        }        DaysCount = DaysNumberofDate(DateGL) - 1;        if (DaysCount <= (CnMonthDays[0] - CnBeginDay)) {            if ((yyyy > 1901) && (CnDateofDate(new Date((yyyy - 1) + "/12/31")) < 0)) {                ResultMonth = -CnMonth[0];            } else {                ResultMonth = CnMonth[0];            }            ResultDay = CnBeginDay + DaysCount;        } else {            CnDaysCount = CnMonthDays[0] - CnBeginDay;            I = 1;            while ((CnDaysCount < DaysCount) && (CnDaysCount + CnMonthDays[I] < DaysCount)) {                CnDaysCount += CnMonthDays[I];                I++;            }            ResultMonth = CnMonth[I];            ResultDay = DaysCount - CnDaysCount;        }        if (ResultMonth > 0) {            return ResultMonth * 100 + ResultDay;        } else {            return ResultMonth * 100 - ResultDay;        }    }    function CnYearofDate(DateGL) {        var YYYY = DateGL.getFullYear();        var MM = DateGL.getMonth() + 1;        var CnMM = parseInt(Math.abs(CnDateofDate(DateGL)) / 100);        if (YYYY < 100) {            YYYY += 1900;        }        if (CnMM > MM) {            YYYY--;        }        YYYY -= 1864;        return CnEra(YYYY) + "年";    }    function CnMonthofDate(DateGL) {        var CnMonthStr = new Array("零", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊");        var Month;        Month = parseInt(CnDateofDate(DateGL) / 100);        if (Month < 0) {            return "闰" + CnMonthStr[-Month] + "月";        } else {            return CnMonthStr[Month] + "月";        }    }    function CnDayofDate(DateGL) {        var CnDayStr = new Array("零",                "初一", "初二", "初三", "初四", "初五",                "初六", "初七", "初八", "初九", "初十",                "十一", "十二", "十三", "十四", "十五",                "十六", "十七", "十八", "十九", "二十",                "廿一", "廿二", "廿三", "廿四", "廿五",                "廿六", "廿七", "廿八", "廿九", "三十");        var Day;        Day = (Math.abs(CnDateofDate(DateGL))) % 100;        return CnDayStr[Day];    }    function DaysNumberofMonth(DateGL) {        var MM1 = DateGL.getFullYear();        MM1 < 100 ? MM1 += 1900 : MM1;        var MM2 = MM1;        MM1 += "/" + (DateGL.getMonth() + 1);        MM2 += "/" + (DateGL.getMonth() + 2);        MM1 += "/1";        MM2 += "/1";        return parseInt((Date.parse(MM2) - Date.parse(MM1)) / 86400000);    }    function CnEra(YYYY) {        var Tiangan = new Array("甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸");        var Dizhi = new Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥");        return Tiangan[YYYY % 10] + Dizhi[YYYY % 12];    }//获取年月的最大天数    function MaxDayOfDate(year, month) {        if (isLeapYear(year)) {            return '29';        } else {            var d = new Date();            return new Date(d.getFullYear(), month, 0).getDate();        }    }    //function CnDateofDateStr(DateGL) {    //    if (CnMonthofDate(DateGL) == "零月") {    //        return " 请调整您的计算机日期!";    //    } else {    //        return "农历" + CnYearofDate(DateGL) + " " + CnMonthofDate(DateGL) + CnDayofDate(DateGL);    //    }    //}}/*** @1900-2100区间内的公历、农历互转* @charset  UTF-8* @Author  Ajing(JJonline@JJonline.Cn) * @Time  2014-7-21* @Version  $ID$* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]*/var calendar = {    /**      * 农历1900-2100的润大小信息表      * @Array Of Property      * @return Hex       */    lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,//1900-19090x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,//1910-19190x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,//1920-19290x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,//1930-19390x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,//1940-19490x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0,//1950-19590x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,//1960-19690x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6,//1970-19790x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,//1980-19890x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0,//1990-19990x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,//2000-20090x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,//2010-20190x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,//2020-20290x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,//2030-20390x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0,//2040-2049/**Add By JJonline@JJonline.Cn**/0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0,//2050-20590x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4,//2060-20690x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0,//2070-20790x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160,//2080-20890x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252,//2090-20990x0d520],//2100    /**      * 公历每个月份的天数普通表      * @Array Of Property      * @return Number       */    solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],    /**      * 天干地支之天干速查表      * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]      * @return Cn string       */    Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],    /**      * 天干地支之地支速查表      * @Array Of Property       * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]      * @return Cn string       */    Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c", "\u4ea5"],    /**      * 天干地支之地支速查表<=>生肖      * @Array Of Property       * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]      * @return Cn string       */    Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21", "\u72d7", "\u732a"],    /**      * 24节气速查表      * @Array Of Property       * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]      * @return Cn string       */    solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206", "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691", "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d", "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"],    /**      * 1900-2100各年的24节气日期速查表      * @Array Of Property       * @return 0x string For splice      */    sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f','97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e','97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f','b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f','97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa','97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2','9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f','97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e','97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f','97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e','97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722','9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f','97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e','97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2','9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722','7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e','97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e','97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722','9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e','97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2','9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721','7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa','97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722','9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722','7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721','7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2','977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722','977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd','7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722','977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722','7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721','7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5','7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722','7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721','7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35','7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722','7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721','7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd','7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35','7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722','7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721','7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5','7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35','665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721','7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35','7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],    /**      * 数字转中文速查表      * @Array Of Property       * @trans ['日','一','二','三','四','五','六','七','八','九','十']      * @return Cn string       */    nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],    /**      * 日期转农历称呼速查表      * @Array Of Property       * @trans ['初','十','廿','卅']      * @return Cn string       */    nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],    /**      * 月份转农历称呼速查表      * @Array Of Property       * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']      * @return Cn string       */    nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac", "\u814a"],    /**      * 返回农历y年一整年的总天数      * @param lunar Year      * @return Number      * @eg:var count = calendar.lYearDays(1987) ;//count=387      */    lYearDays: function (y) {        var i, sum = 348;        for (i = 0x8000; i > 0x8; i >>= 1) { sum += (calendar.lunarInfo[y - 1900] & i) ? 1 : 0; }        return (sum + calendar.leapDays(y));    },    /**      * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0      * @param lunar Year      * @return Number (0-12)      * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6      */    leapMonth: function (y) { //闰字编码 \u95f0        return (calendar.lunarInfo[y - 1900] & 0xf);    },    /**      * 返回农历y年闰月的天数 若该年没有闰月则返回0      * @param lunar Year      * @return Number (0、29、30)      * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29      */    leapDays: function (y) {        if (calendar.leapMonth(y)) {            return ((calendar.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);        }        return (0);    },    /**      * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法      * @param lunar Year      * @return Number (-1、29、30)      * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29      */    monthDays: function (y, m) {        if (m > 12 || m < 1) { return -1 }//月份参数从1至12,参数错误返回-1        return ((calendar.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);    },    /**      * 返回公历(!)y年m月的天数      * @param solar Year      * @return Number (-1、28、29、30、31)      * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30      */    solarDays: function (y, m) {        if (m > 12 || m < 1) { return -1 } //若参数错误 返回-1        var ms = m - 1;        if (ms == 1) { //2月份的闰平规律测算后确认返回28或29            return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);        } else {            return (calendar.solarMonth[ms]);        }    },    /**      * 传入offset偏移量返回干支      * @param offset 相对甲子的偏移量      * @return Cn string      */    toGanZhi: function (offset) {        return (calendar.Gan[offset % 10] + calendar.Zhi[offset % 12]);    },    /**      * 传入公历(!)y年获得该年第n个节气的公历日期      * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起       * @return day Number      * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春      */    getTerm: function (y, n) {        if (y < 1900 || y > 2100) { return -1; }        if (n < 1 || n > 24) { return -1; }        var _table = calendar.sTermInfo[y - 1900];        var _info = [parseInt('0x' + _table.substr(0, 5)).toString(),parseInt('0x' + _table.substr(5, 5)).toString(),parseInt('0x' + _table.substr(10, 5)).toString(),parseInt('0x' + _table.substr(15, 5)).toString(),parseInt('0x' + _table.substr(20, 5)).toString(),parseInt('0x' + _table.substr(25, 5)).toString()        ];        var _calday = [_info[0].substr(0, 1),_info[0].substr(1, 2),_info[0].substr(3, 1),_info[0].substr(4, 2),_info[1].substr(0, 1),_info[1].substr(1, 2),_info[1].substr(3, 1),_info[1].substr(4, 2),_info[2].substr(0, 1),_info[2].substr(1, 2),_info[2].substr(3, 1),_info[2].substr(4, 2),_info[3].substr(0, 1),_info[3].substr(1, 2),_info[3].substr(3, 1),_info[3].substr(4, 2),_info[4].substr(0, 1),_info[4].substr(1, 2),_info[4].substr(3, 1),_info[4].substr(4, 2),_info[5].substr(0, 1),_info[5].substr(1, 2),_info[5].substr(3, 1),_info[5].substr(4, 2),        ];        return parseInt(_calday[n - 1]);    },    /**      * 传入农历数字月份返回汉语通俗表示法      * @param lunar month      * @return Cn string      * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'      */    toChinaMonth: function (m) { // 月 => \u6708        if (m > 12 || m < 1) { return -1 } //若参数错误 返回-1        var s = calendar.nStr3[m - 1];        s += "\u6708";//加上月字        return s;    },    /**      * 传入农历日期数字返回汉字表示法      * @param lunar day      * @return Cn string      * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'      */    toChinaDay: function (d) { //日 => \u65e5        var s;        switch (d) {            case 10:                s = '\u521d\u5341'; break;            case 20:                s = '\u4e8c\u5341'; break;                break;            case 30:                s = '\u4e09\u5341'; break;                break;            default:                s = calendar.nStr2[Math.floor(d / 10)];                s += calendar.nStr1[d % 10];        }        return (s);    },    /**      * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”      * @param y year      * @return Cn string      * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'      */    getAnimal: function (y) {        return calendar.Animals[(y - 4) % 12]    },    /**      * 传入公历年月日获得详细的公历、农历object信息 <=>JSON      * @param y  solar year      * @param m solar month      * @param d  solar day      * @return JSON object      * @eg:console.log(calendar.solar2lunar(1987,11,01));      */    solar2lunar: function (y, m, d) { //参数区间1900.1.31~2100.12.31        if (y < 1900 || y > 2100) { return -1; }//年份限定、上限        if (y == 1900 && m == 1 && d < 31) { return -1; }//下限        if (!y) { //未传参  获得当天            var objDate = new Date();        } else {            var objDate = new Date(y, parseInt(m) - 1, d)        }        var i, leap = 0, temp = 0;        //修正ymd参数        var y = objDate.getFullYear(), m = objDate.getMonth() + 1, d = objDate.getDate();        var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000;        for (i = 1900; i < 2101 && offset > 0; i++) { temp = calendar.lYearDays(i); offset -= temp; }        if (offset < 0) { offset += temp; i--; }        //是否今天        var isTodayObj = new Date(), isToday = false;        if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {            isToday = true;        }        //星期几        var nWeek = objDate.getDay(), cWeek = calendar.nStr1[nWeek];        if (nWeek == 0) { nWeek = 7; }//数字表示周几顺应天朝周一开始的惯例        //农历年        var year = i;        var leap = calendar.leapMonth(i); //闰哪个月        var isLeap = false;        //效验闰月        for (i = 1; i < 13 && offset > 0; i++) {            //闰月            if (leap > 0 && i == (leap + 1) && isLeap == false) {                --i;                isLeap = true; temp = calendar.leapDays(year); //计算农历闰月天数            }            else {                temp = calendar.monthDays(year, i);//计算农历普通月天数            }            //解除闰月            if (isLeap == true && i == (leap + 1)) { isLeap = false; }            offset -= temp;        }        if (offset == 0 && leap > 0 && i == leap + 1)            if (isLeap) {                isLeap = false;            } else {                isLeap = true; --i;            }        if (offset < 0) { offset += temp; --i; }        //农历月        var month = i;        //农历日        var day = offset + 1;        //天干地支处理        var sm = m - 1;        var term3 = calendar.getTerm(year, 3); //该农历年立春日期        var gzY = calendar.toGanZhi(year - 4);//普通按年份计算,下方尚需按立春节气来修正        //依据立春日进行修正gzY        if (sm < 2 && d < term3) {            gzY = calendar.toGanZhi(year - 5);        } else {            gzY = calendar.toGanZhi(year - 4);        }        //月柱 1900年1月小寒以前为 丙子月(60进制12)        var firstNode = calendar.getTerm(y, (m * 2 - 1));//返回当月「节」为几日开始        var secondNode = calendar.getTerm(y, (m * 2));//返回当月「节」为几日开始        //依据12节气修正干支月        var gzM = calendar.toGanZhi((y - 1900) * 12 + m + 11);        if (d >= firstNode) {            gzM = calendar.toGanZhi((y - 1900) * 12 + m + 12);        }        //传入的日期的节气与否        var isTerm = false;        var Term = null;        if (firstNode == d) {            isTerm = true;            Term = calendar.solarTerm[m * 2 - 2];        }        if (secondNode == d) {            isTerm = true;            Term = calendar.solarTerm[m * 2 - 1];        }        //日柱 当月一日与 1900/1/1 相差天数        var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;        var gzD = calendar.toGanZhi(dayCyclical + d - 1);        return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': calendar.getAnimal(year), 'IMonthCn': (isLeap ? "\u95f0" : '') + calendar.toChinaMonth(month), 'IDayCn': calendar.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': "\u661f\u671f" + cWeek, 'isTerm': isTerm, 'Term': Term };    },    /**      * 传入公历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON      * @param y  lunar year      * @param m lunar month      * @param d  lunar day      * @param isLeapMonth  lunar month is leap or not.      * @return JSON object      * @eg:console.log(calendar.lunar2solar(1987,9,10));      */    lunar2solar: function (y, m, d, isLeapMonth) {//参数区间1900.1.31~2100.12.1        var leapOffset = 0;        var leapMonth = calendar.leapMonth(y);        var leapDay = calendar.leapDays(y);        if (isLeapMonth && (leapMonth != m)) { return -1; }//传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同        if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1; }//超出了最大极限值        var day = calendar.monthDays(y, m);        if (y < 1900 || y > 2100 || d > day) { return -1; }//参数合法性效验        //计算农历的时间差        var offset = 0;        for (var i = 1900; i < y; i++) {            offset += calendar.lYearDays(i);        }        var leap = 0, isAdd = false;        for (var i = 1; i < m; i++) {            leap = calendar.leapMonth(y);            if (!isAdd) {//处理闰月                if (leap <= i && leap > 0) {                    offset += calendar.leapDays(y); isAdd = true;                }            }            offset += calendar.monthDays(y, i);        }        //转换闰月农历 需补充该年闰月的前一个月的时差        if (isLeapMonth) { offset += day; }        //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)        var stmap = Date.UTC(1900, 1, 30, 0, 0, 0);        var calObj = new Date((offset + d - 31) * 86400000 + stmap);        var cY = calObj.getUTCFullYear();        var cM = calObj.getUTCMonth() + 1;        var cD = calObj.getUTCDate();        return calendar.solar2lunar(cY, cM, cD);    }};jQuery.Hashtable = function () {    this.items = new Array();    this.itemsCount = 0;    this.add = function (key, value) {        if (!this.containsKey(key)) {            this.items[key] = value;            this.itemsCount++;        }        else {            //throw "key '" + key + "' allready exists."            this.items[key] = value;        }    }    this.get = function (key) {        if (this.containsKey(key))            return this.items[key];        else           return null;    }    this.isexist = function (key) {        if (this.containsKey(key))            return true;        else            return false;    }    this.remove = function (key) {        if (this.containsKey(key)) {            delete this.items[key];            this.itemsCount--;        }        else            throw "key '" + key + "' does not exists."    }    this.containsKey = function (key) {        return typeof (this.items[key]) != "undefined";    }    this.containsValue = function containsValue(value) {        for (var item in this.items) {            if (this.items[item] == value)                return true;        }        return false;    }    this.contains = function (keyOrValue) {        return this.containsKey(keyOrValue) || this.containsValue(keyOrValue);    }    this.clear = function () {        this.items = new Array();        itemsCount = 0;    }    this.size = function () {        return this.itemsCount;    }    this.isEmpty = function () {        return this.size() == 0;    }};

0 0