PageSourceSearch

https://www.ccf.org.cn/js/index_calendar_ch.js?tm=1.2

js ccf.org.cn collected 2026-09-24 09:00:12 UTC 33,892 bytes, 912 lines download raw bytes

1var Calendar = function (element, options) {
2
3    this.el = $(element);
4    this.options = $.extend(true, {}, this.options, options);
5  //console.log(this.options)
6    this.init();
7}
8Calendar.prototype = {
9
10    options: {
11        mode: "month",
12        newDate: new Date(),
13        width: null,
14        height: null,
15       
16        showModeBtn: true,
17        showEvent: true,
18        maxEvent: null
19    },
20
21    init: function () {
22        var me = this,
23            el = me.el,
24            opts = me.options;
25
26        el.addClass("calendar");
27        opts.width = el.width();
28        opts.height = el.height();
29
30        typeof (opts.newDate) == "string" ? opts.newDate = me._getDateByString(opts.newDate) : "";
31
32        me._createCalendar();
33
34        //绑定事件
35        //changeMode
36        el.on("click", ".calendar-mode-select .btn", function (e) {
37            e.stopPropagation();
38            var modeText = $(this).text();
39            var mode = modeText == "月" ? "month" : "year";
40            me.changeMode(mode);
41        })
42        //calendar-cell日期点击事件
43        el.on("click", ".calendar-cell", function (e) {
44            e.stopPropagation();
45            $(".dropdown-month").removeClass("open");
46            $(".dropdown-year").removeClass("open");
47			$(".dropdown-day").removeClass("open");
48
49            var cellDate = $(this).attr("title");
50
51            var viewData = me.viewData;
52            var year = parseInt(cellDate.split("å¹´")[0]);
53            var month = parseInt(cellDate.split("年")[1].split("月")[0]) - 1;
54            var date = parseInt(cellDate.split("年")[1].split("月")[1].split("日")[0]);
55
56            if (opts.mode == "year") {
57                if (opts.cellClick) opts.cellClick.call(me, viewData[month])
58            }
59            else if (opts.mode == "month" && month == opts.newDate.getMonth()) {
60
61                if (opts.cellClick) opts.cellClick.call(me, viewData[date])
62            }
63        })
64
65        //年份下拉
66        el.on("click", ".calendar-year-select", function (e) {
67            e.stopPropagation();
68            $(".dropdown-month").removeClass("open");
69			$(".dropdown-day").removeClass("open");
70            $(".dropdown-year").toggleClass("open");
71            //创建下拉数据
72            var yearText = opts.newDate.getFullYear();
73            var s = '';
74            for (var i = 0; i < 21; i++) {
75                if (i == 10) {
76                    s += '<li class="year-item active">'
77                }
78                else {
79                    s += '<li class="year-item">'
80                }
81                s += '<span class="year-check">' + (yearText - 10 + i) + '</span>'
82                s += '<span ></span>'
83                s += '</li>'
84            }
85            me.el.find(".dropdown-year").html(s);
86        })
87        //年份改变
88        el.on("click", ".year-item", function (e) {
89            e.stopPropagation();
90            $(".dropdown-year").removeClass("open");
91            var yearText = $(this).text();
92            var yearNum = yearText.split("å¹´")[0];
93            if (yearNum == opts.newDate.getFullYear()) return;
94            opts.newDate.setFullYear(yearNum);
95            opts.mode == "month" ? me._refreshCalendar(opts.newDate) : me._refreshYearCalendar(opts.newDate);
96            $(".calendar-year-text").text(yearText);
97						me.myMethods()
98						
99
100        })
101        //触发选择月份
102        el.on("click", ".calendar-month-select", function (e) {
103            e.stopPropagation();
104            $(".dropdown-year").removeClass("open");
105						$(".dropdown-day").removeClass("open");
106            $(".dropdown-month").toggleClass("open");
107        })
108        //月份check事件
109        el.on("click", ".month-item", function (e) {
110            e.stopPropagation();
111            $(".dropdown-month").removeClass("open");
112            var monthText = $(this).text();
113            var monthNum = monthText.split("月")[0];
114            if (monthNum == (opts.newDate.getMonth() + 1)) return;
115
116            var beforeDate = opts.newDate.getDate();
117            opts.newDate.setMonth(monthNum - 1);
118            var afterDate = opts.newDate.getDate();
119
120            //处理日期30号,切换到2月不存在30号
121            if (beforeDate != afterDate) {
122                opts.newDate.setDate(opts.newDate.getDate() - 1);
123            }
124            me._refreshCalendar(opts.newDate);
125            $(".calendar-month-text").text(monthText);
126						me.myMethods()
127
128        })
129				 //天数下拉
130					el.on("click", ".calendar-day-select", function (e) {
131							e.stopPropagation();
132							$(".dropdown-month").removeClass("open");
133							$(".dropdown-year").removeClass("open");
134							$(".dropdown-day").toggleClass("open");
135							//创建下拉数据
136							var monthText = $(".calendar-month-text").text();
137									monthText = parseInt(monthText)
138							var dyearText = $(".calendar-year-text").text()
139									dyearText = parseInt(dyearText)
140							var d = myDate.getDate() - 1;
141							// opts.newDate.setMonth(monthNum - 1);
142							opts.newDate.setDate(opts.newDate.getDate())
143							
144							var daymonth = parseInt(monthText, 10);
145							var date = new Date(dyearText, daymonth, 0);
146							var daysum = date.getDate()
147							var s = '';
148							for (var i = 0; i < daysum; i++) {
149									if (i == d) {
150											s += '<li class="day-item active">'
151									}
152									else {
153											s += '<li class="day-item">'
154									}
155									if (i < 9) {
156										s += '<span class="day-check">0' + (1 + i) + '</span>'
157									} else {
158										s += '<span class="day-check">' + (1 + i) + '</span>'
159									}
160									s += '<span ></span>'
161									s += '</li>'
162							}
163							me.el.find(".dropdown-day").html(s);
164					})
165					//天数改变
166					el.on("click", ".day-item", function (e) {
167							e.stopPropagation();
168							$(".dropdown-day").removeClass("open");
169							var dayText = $(this).text();
170							var dayNum = dayText;
171							if (dayNum == opts.newDate.getDate()) return;
172							opts.newDate.setDate(dayNum);
173							me._refreshCalendar(opts.newDate)
174							$(".calendar-day-text").text(dayText);
175							me.myMethods()
176					})
177				//回到当天
178					el.on("click", ".goto-today", function (e) {
179						var myDate = new Date();
180						var f = myDate.getFullYear();   
181						var m = myDate.getMonth() + 1; 
182						var day = myDate.getDate();
183						if (m < 10) {
184							m = "0" + m
185						}
186						if (day < 10) {
187							day = "0" + day
188						}
189						var d = myDate.getDate();
190						// 回到当年
191						var yearText = f;
192						var yearNum = yearText
193						var dayText = day
194						// if (yearNum == opts.newDate.getFullYear()) return;
195						opts.newDate.setFullYear(yearNum);
196						opts.mode == "month" ? me._refreshCalendar(opts.newDate) : me._refreshYearCalendar(opts.newDate);
197						$(".calendar-year-text").text(yearText + "/");
198						// 回到当月
199						var monthText = m;
200						var monthNum = monthText
201						if (monthNum == (opts.newDate.getMonth() + 1));
202
203						var beforeDate = opts.newDate.getDate();
204						opts.newDate.setMonth(monthNum - 1);
205						var afterDate = opts.newDate.getDate();
206                      
207						me.myMethods()
208						me._refreshCalendar(opts.newDate);
209						$(".calendar-month-text").text(monthText + "/");
210						$(".calendar-day-text").text(dayText);
211					})
212					// 左箭头   
213					 el.on("click", ".arrow-left", function (e) {
214							e.stopPropagation();
215							$(".dropdown-month").removeClass("open");
216							$(".dropdown-year").removeClass("open");
217							$(".dropdown-day").removeClass("open");
218							var monthText = $(".calendar-month-text").text();
219							var yearText = $(".calendar-year-text").text();
220							var mNum = parseInt(monthText)
221							var yNUm = parseInt(yearText)
222							mNum -= 1
223							if (mNum < 1) {
224								mNum = 12
225								yNUm -= 1
226							}
227							var monthNum = mNum;
228							if (monthNum == (opts.newDate.getMonth() + 1)) return;
229							var beforeDate = opts.newDate.getDate();
230							opts.newDate.setMonth(monthNum - 1);
231							opts.newDate.setFullYear(yNUm);
232							var afterDate = opts.newDate.getDate();
233	
234							//处理日期30号,切换到2月不存在30号
235							if (beforeDate != afterDate) {
236								opts.newDate.setDate(opts.newDate.getDate() - 1);
237							}
238							me.myMethods();
239							me._refreshCalendar(opts.newDate);
240							if (mNum < 10) {
241								mNum = "0" + mNum
242							}
243							$(".calendar-month-text").text(mNum + "/");
244							$(".calendar-year-text").text(yNUm + "/");
245					})
246					// 右箭头
247					el.on("click", ".arrow-right", function (e) {
248							e.stopPropagation();
249							$(".dropdown-month").removeClass("open");
250							$(".dropdown-year").removeClass("open");
251							$(".dropdown-day").removeClass("open");
252							var monthText = $(".calendar-month-text").text();
253							var yearText = $(".calendar-year-text").text();
254							var mNum = parseInt(monthText)
255							var yNUm = parseInt(yearText)
256							mNum += 1
257							if (mNum > 12) {
258								mNum = 1
259								yNUm += 1
260							}
261							var monthNum = mNum;
262							if (monthNum == (opts.newDate.getMonth() + 1)) return;
263	
264							var beforeDate = opts.newDate.getDate();
265							opts.newDate.setMonth(monthNum - 1);
266							opts.newDate.setFullYear(yNUm);
267							var afterDate = opts.newDate.getDate();
268	
269							//处理日期30号,切换到2月不存在30号
270							if (beforeDate != afterDate) {
271									opts.newDate.setDate(opts.newDate.getDate() - 1);
272							}
273							me.myMethods()
274							me._refreshCalendar(opts.newDate);
275							if (mNum < 10) {
276								mNum = "0" + mNum
277							}
278							$(".calendar-month-text").text(mNum + "/");
279							$(".calendar-year-text").text(yNUm + "/");
280	
281					})
282        $(document.body).on("click", function (e) {
283            $(".dropdown-month").removeClass("open");
284            $(".dropdown-year").removeClass("open");
285						$(".dropdown-day").removeClass("open");
286        })
287    },
288    //公开方法
289    changeMode: function (mode) {
290        var me = this;
291        if (mode == me.options.mode) return;
292        me.options.mode = mode;
293        me._createCalendar();
294    },
295
296
297    getViewDate: function (viewDate) {
298        var me = this,
299            opts = me.options,
300            mode = opts.mode,
301            data = opts.data;
302        if (!data || data.length == 0) return [];
303        var viewData = {},
304            modeYear = viewDate.getFullYear(),
305            modeMonth = viewDate.getMonth();
306
307
308        //筛选视图数据并转化未对象 要不要转化为属性
309        for (var i = 0; i < data.length; i++) {
310            var item = data[i];
311            var start = me._getDateByString(item.startDate);
312            var year = start.getFullYear();
313            var month = start.getMonth();
314            var date = start.getDate();
315            if (mode == "month" && year == modeYear && modeMonth == month) {
316                if (!viewData[date]) viewData[date] = [];
317                viewData[date].push(item);
318            }
319            else if (mode == "year" && year == modeYear) {
320                if (!viewData[month]) viewData[month] = [];
321                viewData[month].push(item);
322            }
323        }
324        return viewData;
325
326    },
327    _getDateByString: function (stringDate) {
328        var me = this;
329        var year = stringDate.split("-")[0];
330        var month = parseInt(stringDate.split("-")[1]) - 1;
331        var date = stringDate.split("-")[2];
332
333        return new Date(year, month, date);
334    },
335    //私有方法
336    _createCalendar: function () {
337        var me = this;
338        var dateMode = me.options.mode;
339        me._createView()
340
341    },
342    _createView: function () {
343        var me = this,
344            el = me.el,
345            opts = me.options,
346            mode = opts.mode,
347            newDate = opts.newDate,
348            html = '';
349        html += me._createToolbar();
350        html += '<div class="calendar-body">';
351        html += '<table class="calendar-table" cellspacing="0">'
352        if (mode == "month") {
353            html += me._createHeader();
354        }
355        html += me._createBody();
356        html += '</table><div class="seletody"><span class="seletody-today">今日</span><span class="seletody-seledate">选中日期</span></div>'
357        html += '</div>'
358        el.html(html);
359
360
361        if (mode == "month") {
362            me._refreshCalendar(newDate);
363        }
364        else {
365            me._refreshYearCalendar(newDate);
366        }
367
368    },
369    _createToolbar: function () {
370        var me = this,
371            newDare = me.options.newDate,
372            mode = me.options.mode,
373            showModeBtn = me.options.showModeBtn,
374            s = '';
375						titName = me.options.titName
376
377        var year = newDare.getFullYear();
378        var month = newDare.getMonth() + 1;
379				var day = newDare.getDate()
380
381        s += '<div class="calendar-header clearfix">'
382				s += '<div class="calendar-tit">' + titName + '<a class="more" href="https://www.ccf.org.cn/ccf/eventcalendar/ch?SiteID=122">展开全部></a></div>'
383        s += '<div class="arrow-left"><i class="fa fa-angle-left"></i></div>'
384				s += '<div class="calendar-select calendar-year-select clearfix" >'
385				s += '<span class="calendar-year-text"> ' + year + '/</span >'
386				s += '<span class="calendar-icon"></span>'
387				s += '<ul id="dropdown-year" class="dropdown-year">'
388				s += '</ul></div>'					
389        if (mode == "month") {
390						if (month < 10) {
391							s += '<div class="calendar-select  calendar-month-select">'
392							s += '<span class="calendar-month-text">0' + month + '/</span >'
393							s += '<span class="calendar-icon"></span>'
394						} else {
395							s += '<div class="calendar-select  calendar-month-select">'
396							s += '<span class="calendar-month-text"> ' + month + '/</span >'
397							s += '<span class="calendar-icon"><i class="fa fa-caret-down"></i></span>'
398						}
399           
400            //创建月份下拉
401            s += '<ul class="dropdown-month">'
402            for (var i = 1; i <= 12; i++) {
403							if (i < 10) {
404								s += '<li class="month-item">'
405								s += '<span class="month-check">0' + i + '</span>'
406								s += '<span ></span>'
407								s += '</li>'
408							} else {
409								s += '<li class="month-item">'
410								s += '<span class="month-check">' + i + '</span>'
411								s += '<span ></span>'
412								s += '</li>'
413							}
414            }
415            s += '</ul>'
416						s += '</div>'
417						s += '<div class="calendar-select calendar-day-select clearfix" >'
418						if (day < 10) {
419							s += '<span class="calendar-day-text">0' + day + '</span >'
420						} else {
421							s += '<span class="calendar-day-text">' + day + '</span >'
422						}
423						s += '<span class="calendar-icon"></span>'
424						s += '<ul id="dropdown-day" class="dropdown-day">'
425						s += '</ul>'
426						s += '</div >'
427            s += '<div class="goto-today"><span class="gototoday-span">返回当日</span></div>'
428						s += '<div class="arrow-right"><i class="fa fa-angle-right"></i></div>'
429        }
430
431        if (showModeBtn) {
432            s += '<div class="calendar-select  calendar-mode-select">'
433            s += '<div class="btn-group">'
434
435            if (mode == "month") {
436                s += '<span  class="btn calendar-select-active">月</span>'
437                s += '<span class="btn">
437å¹´</span>'
438            }
439            else {
440                s += '<span  class="btn">月</span>'
441                s += '<span class="btn calendar-select-active">å¹´</span>'
442            }
443            s += '</div>'
444            s += '</div>'
445        }
446        s += '</div >'
447        return s;
448    },
449    _createHeader: function () {
450        var me = this,
451            opts = me.options,
452            weekMode = opts.weekMode;
453						weekModeeSmall = opts.weekModeeSmall;
454        var s = '<thead><tr>'
455        weekMode.forEach(function (item) {
456            s += ' <th class="calendar-column-header calendar-column-header1" title="周' + item + '"><span class="calendar-column-header-inner">' + item + '</span></th>'
457        })
458        s += '</thead></tr>'
459        return s;
460    },
461    _createBody: function () {
462        var me = this;
463        var s = ' <tbody class="calendar-tbody">'
464        s += '</tbody>'
465        return s;
466    },
467    _refreshYearCalendar: function (newDate) {
468        var me = this,
469            showEvent = me.options.showEvent,
470            maxEvent = me.options.maxEvent,
471            s = '';
472
473        me.viewData = viewData = me.getViewDate(newDate);
474
475        var year = newDate.getFullYear(), month = newDate.getMonth();
476        //四行三列
477        for (var i = 0; i < 4; i++) {
478            s += '<tr>'
479            for (var l = 0; l < 3; l++) {
480                renderMonth = i * 3 + l;
481                if (month == renderMonth) {
482                    s += '<td title="' + year + '年' + (renderMonth + 1) + '月" class="calendar-cell calendar-thisMonth">';
483                }
484                else {
485                    s += '<td title="' + year + '年' + (renderMonth + 1) + '月" class="calendar-cell">';
486                }
487                s += '<div class="calendar-date">';
488                s += '<div class="calendar-value">' + (renderMonth + 1) + '月</div>';
489                s += '<div class="calendar-content"><ul class="events">'
490
491                if (showEvent && viewData[renderMonth]) {
492                    if (maxEvent && viewData[renderMonth].length > maxEvent) {
493                        s += '<span class="total">' + viewData[renderMonth].length + '个事件..</span>'
494                    } else {
495                        viewData[renderMonth].forEach(function (item) {
496                            s += '<li><span>' + item.name + '</span></li>'
497                        })
498                    }
499                }
500                s += '</ul ></div > ';
501                s += '</div></td>';
502            }
503            s += '</tr>'
504        }
505
506        me.el.find(".calendar-tbody").html(s);
507    },
508    _refreshCalendar: function (newDate) {
509        var me = this,
510            showEvent = me.options.showEvent,
511            maxEvent = me.options.maxEvent,
512            s = '';
513
514        me.viewData = viewData = me.getViewDate(newDate);
515
516        var _newDate = me._cloneDate(newDate);
517        //当前date
518        var nowNum = _newDate.getDate();
519
520        //第一天周几
521        _newDate.setDate(1);
522        var weekDay = _newDate.getDay() == 0 ? 7 : _newDate.getDay();
523
524
525        //视图第一天
526        var viewDate = me._cloneDate(_newDate);
527        viewDate.setDate(viewDate.getDate() - weekDay + 1);
528
529        //当前第几周/行 (暂不处理)
530        var spileDate = (newDate.getTime() - viewDate.getTime()) / (1000 * 60 * 60 * 24);
531
532        renderDate = me._cloneDate(viewDate);
533
534			
535        //固定六行
536        for (var i = 0; i < 6; i++) {
537            s += '<tr>'
538            for (var l = 0; l < 7; l++) {
539
540                var year = renderDate.getFullYear();
541                var month = renderDate.getMonth() + 1;
542                var date = renderDate.getDate();
543
544                if (renderDate.getMonth() < newDate.getMonth()) {
545                    s += '<td title="' + year + '年' + month + '月' + date + '日" class="calendar-cell calendar-last-month-cell">';
546                }
547                else if (renderDate.getMonth() > newDate.getMonth()) {
548                    s += '<td title="' + year + '年' + month + '月' + date + '日" class="calendar-cell calendar-next-month-cell">';
549                }
550                else if (date == nowNum) {
551                    s += '<td title="' + year + '年' + month + '月' + date + '日" class="calendar-cell calendar-today">';
552                }
553                else {
554                    s += '<td title="' + year + '年' + month + '月' + date + '日" class="calendar-cell">';
555                }
556                s += '<div class="calendar-date">';
557                s += '<div class="calendar-value"><span class="active-today">' + date + '</span>';
558              if (showEvent && viewData[date] && renderDate.getMonth() == newDate.getMonth()) {
559                s += '<span class="calendar-event-dot"></span>';
560              }
561              				s += '</div>';
562                s += '<div class="calendar-content"><div class="conyear">' + year +'</div><div class="conmonth">' + month +'</div><div class="condate">' + date +'</div><div class="rld">'
563                if (showEvent && viewData[date] && renderDate.getMonth() == newDate.getMonth()) {
564                    if (maxEvent && viewData[date].length > maxEvent) {
565                        s += '<span class="total">' + viewData[date].length + '个事件..</span>'
566                    }
567                    else {
568                  
569                        viewData[date].forEach(function (item) {
570							if (item.content) {
571								s += '<dd><a href="' + item.linkUrl + '" target="_blank">' + item.name + '</a></dd>'
572							} else {
573								s += '<dd>' + item.name + '</dd>'
574							}
575                        })
576                    }
577                }
578                s += '</div></div> ';
579                s += '</div></td>';
580
581                renderDate.setDate(renderDate.getDate() + 1);
582
583            }
584            s += '</tr>'
585        }
586        me.el.find(".calendar-tbody").html(s);
587    },
588    _cloneDate: function (date) {
589        return new Date(date.getFullYear(), date.getMonth(), date.getDate());
590    },
591		myMethods: function() {
592          var me = this,
593			opts = me.options
594          // 请求接口			
595          function event_search(){
596            var cDateY = $(".calendar-year-text").text();            
597			var cDateM = $(".calendar-month-text").text();   
598            cDateY = parseInt(cDateY);
599			cDateM = parseInt(cDateM);
600			var ecDateY = cDateY;
601			var behindM = cDateM;
602            var frontM = cDateM;
603            if(cDateM<4){
604            	if(cDateM==3){
605                	behindM = 2;
606                }
607            	if(cDateM==2){
608                	cDateY = cDateY-1;
609                	behindM = 12;
610                }
611            	if(cDateM==1){
612                	cDateY = cDateY-1;
613                	behindM = 11;
614                }
615            	frontM = frontM + 3;
616            }else if(cDateM>9){
617            	if(cDateM==10){
618                	frontM = 12;
619                }
620            	if(cDateM==11){
621                	ecDateY = ecDateY+1;
622                	frontM = 1;
623                }
624            	if(cDateM==12){
625                	ecDateY = ecDateY+1;
626                	frontM = 2;
627                }
628            	behindM = behindM -3;
629            } else {
630            	frontM = frontM + 3;
631            	behindM = behindM -3;
632            }
633			var cDateD = $(".calendar-day-text").text();
634            var data = [];
635			if (behindM < 10) {
636				behindM = "0" + behindM
637			}
638			if (frontM < 10) {
639				frontM = "0" + frontM
640			}
641        var startTime = cDateY + "-" + behindM + "-" + cDateD + " 00:00:00";
642        var endTime = (ecDateY+10) + "-" + frontM + "-" + cDateD + " 23:59:59";
643        var dc = new DataCollection();
644            //var siteID = $(".siteID").text()
645        dc.add("StartTime",startTime);
646        dc.add("EndTime",endTime);
647        dc.add("SiteID",siteID);
648        dc.add("CatalogID","15172");
649        Server.sendRequest("eventcalendar.getData",dc,function(response){
650          data = response.Data;
651          opts.data = JSON.parse(data);
652          me.getViewDate(opts.newDate)
653          $(".events li:first-child .licon").css("display", "block");
654			$(".events li:first-child").children(".licontit").addClass("bg2");
655          if ($(".calendar-today").find(".events").find("li").length > 0) {
656				$(".calendar-today").find(".calendar-content").addClass('act')
657                 var ulH = $(".calendar-today").find(".events").height();
658                var wraH = 420 + ulH;
659				$(".calendar-wra-index").css("min-height", wraH + "px")
660			} else {
661              $(".calendar-wra-index").css("min-height", "auto")
662			}
663			$(".licontit").click(function(e){
664              e.stopPropagation();
665				$(this).next().slideToggle(0)
666				
667				$(this).toggleClass('bg1').toggleClass('bg2');
668              var ulH = $(this).parents(".events").height();
669                var wraH = 430 + ulH;
670				$(".calendar-wra-index").css("min-height", wraH + "px")
671			})
672			$(".calendar-today").find(".calendar-content").addClass('act')
673            function event_search222(stime,etime){
674          var data = [];
675        var startTime = stime;
676        var endTime = etime;
677        var dc = new DataCollection();
678        dc.add("StartTime",startTime);
679        dc.add("EndTime",endTime);
680        dc.add("SiteID",siteID);
681        dc.add("CatalogID","15172");
682              dc.add("needRepeat","N");
683        Server.sendRequest("eventcalendar.getData",dc,function(response){
684            data = response.Data;
685            var ndata = JSON.parse(data);
686          var hdhtml = '';
687             ndata.forEach(function (item,index) {
688             	var endDate = '';
689                if(item.endDate && (item.endDate != item.startDate)){
690                	endDate = ' ~ ' + item.endDate;
691                }               
692                        if (index <= 2) {
693                          if (item.activeAddress){
694                            hdhtml += '<dd><a href="'+item.linkUrl+'">'+item.name+'</a><a href="'+item.linkUrl+'" style="font-size:14px;color:#999"><span>地点:'+item.activeAddress+'</span><span style="float:right">时间:'+item.startDate + endDate +'</span><a></dd>'
695                          }else {
696                            hdhtml += '<dd><a href="'+item.linkUrl+'">'+item.name+'</a><a href="'+item.linkUrl+'" style="font-size:14px;color:#999"><span style="float:right">时间:'+item.startDate + endDate +'</span><a></dd>'
697                          }
698                       
699                        }
700           					return false;
701             });
702       hdhtml += '<dd style="text-align:right"><a style="color:#007cc0" href="https://www.ccf.org.cn/ccf/eventCalendarSearch/result?SiteID=122">More</a></dd>'
703       $("#hdrltck").html(hdhtml);
704          });
705        }
706			$(".calendar-cell").click(function(){
707				$(".calendar-cell").find(".calendar-content").removeClass('act');  // 删除其兄弟元素的样式
708				$(this).find(".calendar-content").addClass('act'); 
709				$(".calendar-cell").find(".active-today").removeClass('clickday');
710				$(this).find(".active-today").addClass('clickday');
711					var curYear = $(this).find(".conyear").text()
712				var curMonth = $(this).find(".conmonth").text()
713				var curDate = $(this).find(".condate").text()
714				curDate = parseInt(curDate)
715				if (curDate < 10) {
716					curDate = "0" + curDate
717				}
718				if (curMonth < 10) {
719					curMonth = "0" + curMonth
720				}
721				$(".calendar-year-text").text(curYear + "/");
722				$(".calendar-month-text").text(curMonth + "/");
723				$(".calendar-day-text").text(curDate);
724               var stardate = curYear+'-'+curMonth+'-'+curDate+' 00:00:00';
725          curYear = parseInt(curYear)
726          var enddate =  (curYear+10)+'-'+curMonth+'-'+curDate+' 23:59:59';
727          event_search222(stardate,enddate)
728
729	      		$('.J-down').stop().slideToggle("fast");
730	            if ($(this).find(".events").find("li").length > 0) {
731	      			$(this).find(".calendar-content").addClass('act')
732	                var ulH = $(this).find(".events").height();
733	                var wraH = 420 + ulH;
734	      			$(".calendar-wra-index").css("min-height", wraH + "px")
735	      		} else {
736	      			$(".calendar-wra-index").css("min-height", "auto")
737	      		}
738              if ($(this).find(".events").find("li").length > 0) {
739					$(this).find(".calendar-content").addClass('act')
740                     var ulH = $(this).find(".events").height();
741                var wraH = 420 + ulH;
742					$(".calendar-wra-index").css("min-height", wraH + "px")
743				} else {
744					$(".calendar-wra-index").css("min-height", "auto")
745				}
746			})
747        });
748      }
749          event_search()
750          // 请求接口结束
751			$(".events li:first-child .licon").css("display", "block")
752			$(".events li:first-child").children(".licontit").addClass("bg2")
753			$(".licontit").click(function(e){
754              e.stopPropagation();
755				$(this).next().slideToggle(0)
756				
757				$(this).toggleClass('bg1').toggleClass('bg2');
758              var ulH = $(this).parents(".events").height();
759                var wraH = 430 + ulH;
760				$(".calendar-wra-index").css("min-height", wraH + "px")
761			})
762			$(".calendar-today").find(".calendar-content").addClass('act')
763
764			$(".calendar-cell").click(function(){
765				console.log($(this).find(".condate").text())
766				$(".calendar-cell").find(".calendar-content").removeClass('act');  // 删除其兄弟元素的样式
767				$(this).find(".calendar-content").addClass('act'); 
768					var curYear = $(this).find(".conyear").text()
769				var curMonth = $(this).find(".conmonth").text()
770				var curDate = $(this).find(".condate").text()
771                console.log(curYear, curMonth, curDate)
772				curDate = parseInt(curDate)
773				if (curDate < 10) {
774					curDate = "0" + curDate
775				}
776				if (curMonth < 10) {
777					curMonth = "0" + curMonth
778				}
779				$(".calendar-year-text").text(curYear + "/");
780				$(".calendar-month-text").text(curMonth + "/");
781				$(".calendar-day-text").text(curDate);
782             
783				var rlhtml = $(this).find(".rld").html();
784	      		$("#hdrltck").html(rlhtml);
785	      		$('.J-down').stop().slideToggle("fast");
786	            if ($(this).find(".events").find("li").length > 0) {
787	      			$(this).find(".calendar-content").addClass('act')
788	                var ulH = $(this).find(".events").height();
789	                var wraH = 420 + ulH;
790	      			$(".calendar-wra-index").css("min-height", wraH + "px")
791	      		} else {
792	      			$(".calendar-wra-index").css("min-height", "auto")
793	      		}
794               if ($(this).find(".events").find("li").length > 0) {
795					$(this).find(".calendar-content").addClass('act')
796					 var ulH = $(this).find(".events").height();
797                var wraH = 420 + ulH;
798					$(".calendar-wra-index").css("min-height", wraH + "px")
799				} else {
800					$(".calendar-wra-index").css("min-height", "auto")
801				}
802			})
803          
804			/*$(".events li:first-child .licon").css("display", "block")
805			$(".events li:first-child").children(".licontit").addClass("bg2")
806			$(".licontit").click(function(e){
807				e.stopPropagation();
808				$(this).next().slideToggle(100)
809				$(this).toggleClass('bg1').toggleClass('bg2');
810			})
811			$(".calendar-today").find(".calendar-content").addClass('act')
812			$(".calendar-cell").click(function(){
813				$(".calendar-cell").find(".calendar-content").removeClass('act');  // 删除其兄弟元素的样式
814				if ($(this).find(".events").find("li").length > 0) {
815					$(this).find(".calendar-content").addClass('act')
816					$(".calendar-wra").css("min-height", "520px")
817				} else {
818					$(".calendar-wra").css("min-height", "auto")
819				} 
820				$(".calendar-cell").find(".active-today").removeClass('clickday');
821				$(this).find(".active-today").addClass('clickday');
822        var curYear = $(this).find(".conyear").text()
823				var curMonth = $(this).find(".conmonth").text()
824				var curDate = $(this).find(".condate").text()
825        console.log(curYear, curMonth, curDate)
826				curDate = parseInt(curDate)
827				if (curDate < 10) {
828					curDate = "0" + curDate
829				}
830				if (curMonth < 10) {
831					curMonth = "0" + curMonth
832				}
833              console.log($(".siteID").text())
834              
835				
836				$(".calendar-month-text").text(curMonth + "/");
837				$(".calendar-day-text").text(curDate);
838              $(".calendar-cell").find("li").remove()
839              event_search2(curYear,curMonth,curDate)
840                 // 请求接口
841               function event_search2(curYear,curMonth,curDate){
842                 var siteID = $(".siteID").text()
843        var startTime = curYear + "-" + curMonth + "-" + curDate + " 00:00:00";
844        var endTime = curYear + "-" + curMonth + "-" + curDate + " 23:59:59";
845        var dc = new DataCollection();
846        dc.add("StartTime",startTime);
847        dc.add("EndTime",endTime);
848        dc.add("SiteID",siteID);
849        dc.add("CatalogID",$V("HdrlCatalogID"));
850        Server.sendRequest("EnEventCalendar.getEventDataByTime",dc,function(response){
851          data = response.Data;
852					data = JSON.parse(data)
853          console.log(data);
854          		var s = '';
855				data.forEach(function (item) {
856					console.log(item)
857						if (item.content) {
858							s += '<li><span class="licontit" title="' + item.name + '">' + item.name + '</span><span class="licon">' + item.content + '<a href="'+item.linkUrl+'" target="_blank"><i class="calenar-share"></i></a></span></li>'
859						} else {
860							s += '<li><span class="licontit" title="' + item.name + '">' + item.name + '</span></li>'
861						}
862				})
863				$(this).find(".events").append(s)
864                $(".calendar-wra").find(".events").append(s)
865                $(".events li:first-child .licon").css("display", "block")
866				$(".events li:first-child").children(".licontit").addClass("bg2")
867				$(".licontit").click(function(e){
868					e.stopPropagation();
869					$(this).next().slideToggle(100)
870					$(this).toggleClass('bg1').toggleClass('bg2');
871				})
872                if ($(this).find(".events").find("li").length > 0) {
873					$(this).find(".calendar-content").addClass('act')
874					$(".calendar-wra").css("min-height", "520px")
875				} else {
876					$(".calendar-wra").css("min-height", "auto")
877				}
878        });
879      }
880        
881             // 请求接口
882			})*/
883		}
884
885}
886$.fn.calendar = function (options) {
887
888    var isSTR = typeof options == "string",
889        args, ret;
890
891    if (isSTR) {
892        args = $.makeArray(arguments)
893        args.splice(0, 1);
894    }
895
896    var name = "calendar",
897        type = Calendar;
898
899    var jq = this.each(function () {
900        var ui = $.data(this, name);
901
902        if (!ui) {
903            ui = new type(this, options);
904            $.data(this, name, ui);
905        }
906        if (isSTR) {
907            ret = ui[options].apply(ui, args);
908        }
909    });
910
911    return isSTR ? ret : jq;
912};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.