PageSourceSearch

https://www.xinecai.com/js/hDate.js

js xinecai.com collected 2026-10-08 17:53:22 UTC 14,259 bytes, 333 lines download raw bytes

1var calendar = {
2    config: {
3        id: null,
4        ok: null,
5        maxDay: null,
6        minDay: null,
7        zIndex: 1000,
8        ishotel: false,
9        format: "yyyy-MM-dd"
10    },
11    clear: function () {
12        calendar.config.id = null;
13        calendar.config.ok = null;
14        calendar.config.maxDay = null;
15        calendar.config.minDay = null;
16        calendar.config.zIndex = 1000;
17        calendar.config.ishotel = false;
18    },
19    _setDay: function (m, y, d) {
20        var currDay = d;
21        var currMon = m;
22        var currYear = y;
23
24        var setMon = new Date().getMonth() + 1;
25        var setYear = new Date().getFullYear();
26        var setDay = new Date().getDate();
27
28        var firstDay = new Date(y + "/" + m + "/" + 1).getDay();
29        var calDay = [];
30        var _d = 1;
31        var lastDay = new Date(y, m, 0).getDate();
32        for (var i = 0; i < 6; i++) {
33            calDay.push("<tr>");
34            for (var j = 0; j < 7; j++) {
35                if (i == 0) {
36                    if (firstDay > j) {
37                        calDay.push("<td date=''>&nbsp;</td>");
38                    }
39                    else {
40                        var f = calendar.festivals(m, _d);
41                        var _dx = (y + "-" + m + "-" + _d);
42                        if (m == currMon && currDay == _d && currYear == y) {
43                            calDay.push("<td date='" + _dx + "' class='_selDay'>" + _d + "</td>");
44                        }
45                        else if (m == setMon && setDay == _d && setYear == y) {
46                            calDay.push("<td date='" + _dx + "' title='" + _d + "号' class='_sday'>今天</td>");
47                        }
48                        else if (f !== "") {
49                            calDay.push("<td date='" + _dx + "' class='festival'>" + f + "</td>");
50                        }
51                        else if (calendar.config.minDay != null && new Date(calendar.config.minDay.replace(/[年月日-]/g, "\/")) > new Date(_dx.replace(/[-]/g, "\/"))) {
52                            calDay.push("<td date='' class='disDay'>" + _d + "</td>");
53                        }
54                        else if (calendar.config.maxDay != null && new Date(calendar.config.maxDay.replace(/[年月日-]/g, "\/")) < new Date(_dx.replace(/[-]/g, "\/"))) {
55                            calDay.push("<td date='' class='disDay'>" + _d + "</td>");
56                        }
57                        else {
58                            calDay.push("<td date='" + _dx + "'>" + _d + "</td>");
59                        }
60                        _d++;
61                    }
62                }
63                else {
64                    if (_d <= lastDay) {
65                        var f = calendar.festivals(m, _d);
66                        var _dx = (y + "-" + m + "-" + _d);
67                        if (m == currMon && currDay == _d && currYear == y) {
68                            calDay.push("<td date='" + _dx + "' class='_selDay'>" + _d + "</td>");
69                        }
70                        else if (m == setMon && setDay == _d && setYear == y) {
71                            calDay.push("<td date='" + _dx + "' title='" + _d + "号' class='_sday'>今天</td>");
72                        }
73                        else if (f !== "") {
74                            calDay.push("<td date='" + _dx + "' title='" + m + "-" + _d + "' class='festival'>" + f + "</td>");
75                        }
76                        else if (calendar.config.minDay != null && new Date(calendar.config.minDay.replace(/[年月日-]/g, "\/")) > new Date(_dx.replace(/[-]/g, "\/"))) {
77                            calDay.push("<td date='' class='disDay'>" + _d + "</td>");
78                        }
79                        else if (calendar.config.maxDay != null && new Date(calendar.config.maxDay.replace(/[年月日-]/g, "\/")) < new Date(_dx.replace(/[-]/g, "\/"))) {
80                            calDay.push("<td date='' class='disDay'>" + _d + "</td>");
81                        }
82                        else {
83                            calDay.push("<td date='" + _dx + "'>" + _d + "</td>");
84                        }
85                        _d++;
86                    }
87                    else calDay.push("<td date=''>&nbsp;</td>");
88                }
89            }
90            calDay.push("</tr>");
91        }
92        return calDay.join("");
93    },
94    L: function (e) {
95        var l = 0; while (e) { l += e.offsetLeft; e = e.offsetParent; }
96        return l
97    },
98    T: function (e) {
99        var t = 0; while (e) { t += e.offsetTop; e = e.offsetParent; }
100        return t
101    },
102    colse: function () {
103        if (document.getElementById("_calendar")) {
104            document.body.removeChild(document.getElementById("_calendar"));
105            $(".calendar").remove();
106        }
107    },
108    show: function () {
109        calendar.colse();
110        var config = arguments[0]; var that = calendar.config;
111        calendar.clear();
112        for (var i in that) { if (config[i] != undefined) { that[i] = config[i]; } };
113        calendar.init(calendar.config.id);
114    },
115    festivals: function (m, d) {
116        var lFtv = ["101:国庆", "1225:圣诞"];
117        var f = "";
118        for (var i = 0; i < lFtv.length; i++) {
119            if (lFtv[i].split(':')[0] == (m.toString() + d.toString()))
120                f = lFtv[i].split(':')[1];
121        }
122        return f;
123    },
124    init: function (s) {
125
126        var obj = s;
127        var oDay = s.value.replace(/[年月]/g, "-").replace(/[日]/g, "");
128        if ($(s).attr("date") != "" && $(s).attr("date") != undefined) {
129            oDay = $(s).attr("date");
130        }
131        var currMon = new Date().getMonth() + 1;
132        var currYea = new Date().getFullYear();
133        var currDay = new Date().getDate();
134        var reg = /^(\d{4})-(\d{2})-(\d{2})$/;
135        if (oDay != "" && reg.test(oDay)) {
136            currMon = parseInt(oDay.split('-')[1]);
137            currDay = parseInt(oDay.split('-')[2]);
138            currYea = oDay.split('-')[0];
139        }
140        var modMone = new Date().getFullYear();
141        modMone = modMone - 5;
142        var _yers = [];
143        _yers.push("<table style='display:none;' id='calYear' class='calYear'>");
144        for (var m = 0; m < 4; m++) {
145            _yers.push("<tr>");
146            for (var n = 0; n < 3; n++) {
147                _yers.push("<td>" + modMone + "</td>");
148                modMone++;
149            }
150            _yers.push("</tr>");
151        }
152        _yers.push("</table>");
153
154        var _c = [];
155        var t = s.offsetHeight;
156        _c.push("<div id='calendar_head' class='calendar_head'><em class='calendaremL'>«</em>
156<input id='_calyear' type='text' value='" + currYea + "' /><input id='_calmod' type='text' value='" + currMon + "' /><em class='calendaremR'>»</em>");
157        _c.push(_yers.join(""));
158        _c.push("<table style='display:none;' id='calMonth' class='calMonth'><tr><td>1月</td><td>2月</td><td>3月</td><td>4月</td></tr><tr><td>5月</td><td>6月</td><td>7月</td><td>8月</td></tr><tr><td>9月</td><td>10月</td><td>11月</td><td>12月</td></tr></table>");
159        _c.push("</div>");
160        _c.push("<div class='calendar_boy' ><i id='_bgMon'>" + currMon + "</i>");
161        _c.push("<table id='_tdCal' class='_caltable' border='0'><tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>");
162        _c.push("" + calendar._setDay(currMon, currYea, currDay) + "");
163        _c.push("</table>");
164
165        var calTop = calendar.T(s) + t;
166        var calLeft = calendar.L(s);
167        var bodyHith = document.body.parentNode.offsetHeight;
168        var bodywidth = document.body.parentNode.offsetWidth;
169        if ((calTop + 225) > bodyHith) { calTop = calendar.T(s) - 225; }
170        var _boy = document.getElementsByTagName("body").item(0);
171        var _div = document.createElement("div");
172        _div.setAttribute('id', "_calendar");
173        _div.setAttribute('class', "calendar");
174        _div.setAttribute('style', "left:" + calLeft + "px;top:" + calTop + "px;z-index:" + calendar.config.zIndex + ";");
175        _boy.appendChild(_div);
176        document.getElementById("_calendar").innerHTML = _c.join("");
177
178        $("#_calyear").click(function () {
179            $("#calYear").show();
180            $("#calMonth").hide();
181            $("#calYear td").click(function () {
182                $("#_calyear").val(this.innerHTML);
183                calendar._yearMon($("#_calmod").val(), this.innerHTML, s);
184                $("#calYear").hide();
185            });
186        }).blur(function () {
187            calendar._yearMon($("#_calmod").val(), this.value, s);
188        }).keyup(function () {
189            $("#calYear").hide();
190            $("#calMonth").hide();
191            this.value = this.value.replace(/[^\d]/g, "");
192        });
193        $("#_calmod").click(function () {
194            $("#calYear").hide();
195            $("#calMonth").show();
196            $("#calMonth td").click(function () {
197                $("#_calmod").val(this.innerHTML.replace(/[月]/g, ""));
198                calendar._yearMon(this.innerHTML.replace(/[月]/g, ""), $("#_calyear").val(), s);
199                $("#calMonth").hide();
200            });
201        }).blur(function () {
202            if (0 < parseInt(this.value) < 13) {
203                calendar._yearMon(this.value, $("#_calyear").val(), s);
204            }
205        }).keyup(function () {
206            $("#calYear").hide();
207            $("#calMonth").hide();
208            this.value = this.value.replace(/[^\d]/g, "");
209        });
210
211        $("#_tdCal tr:gt(0) td[date!='']").click(function () {
212            s.value = new Date($(this).attr("date").replace(/[-]/g, "/")).format(calendar.config.format);
213            $(s).attr("date", new Date($(this).attr("date").replace(/[-]/g, "/")).format("yyyy-MM-dd"));
214            if (calendar.config.ok != null) {
215                eval(calendar.config.ok());
216            }
217            calendar.colse();
218        }).on("mouseover", function () {
219            $(this).css({ "color": "#fff", "background-color": "#ff9900" });
220        }).on("mouseout", function () { $(this).removeAttr("style") });
221
222
223        $("#calendar_head em").click(function () {
224            if ($("#calendar_head em").index(this) == 0) {
225                calendar._nexPrv("L", $("#_calmod").val(), $("#_calyear").val(), s);
226            }
227            else {
228                calendar._nexPrv("R", $("#_calmod").val(), $("#_calyear").val(), s);
229            }
230        });
231        $("#_tdCal").click(function () {
232            $("#calYear").hide();
233            $("#calMonth").hide();
234        });
235        document.onclick = function (e) {
236            var event = e || window.event;
237            var Target = event.target || event.srcElement;
238            calendar.hide(event, Target, obj);
239        }
240    },
241    hide: function (event, Target, obj) {
242        var oPare = Target.parentNode;
243        var isChild = true;
244        if (oPare == obj || Target == obj) {
245            isChild = true;
246        } else {
247            loop: while (oPare != document.getElementById("_calendar")) {
248                oPare = oPare.parentNode;
249                if (oPare == obj || oPare == null) {
250                    isChild = false;
251                    break loop;
252                }
253            }
254        }
255        if (!isChild) {
256            calendar.colse();
257        }
258    },
259    _selCal: function (e) {
260        $("#_tdCal tr:gt(0) td[date!='']").click(function () {
261            e.value = new Date($(this).attr("date").replace(/[-]/g, "/")).format(calendar.config.format);
262            $(e).attr("date", new Date($(this).attr("date").replace(/[-]/g, "/")).format("yyyy-MM-dd"));
263            if (calendar.config.ok != null) {
264                eval(calendar.config.ok());
265            }
266            calendar.colse();
267        });
268    },
269    _yearMon: function (m, y, s) {
270        $("#_tdCal tr:gt(0)").remove();
271        $("#_tdCal").append(calendar._setDay(m, y, 0));
272        $("#_bgMon").html(parseInt(m));
273        $("#_tdCal tr:gt(0) td[date!='']").click(function () {
274            s.value = new Date($(this).attr("date").replace(/[-]/g, "/")).format(calendar.config.format);
275            calendar.colse();
276        });
277    },
278    _nexPrv: function (t, m, y, s) {
279
280        var ys = y;
281        var ms = m;
282        if (t == "L") {
283            if (m == 1) {
284                ms = 12;
285                ys = parseInt(y) - 1;
286            }
287            else {
288                ms = parseInt(m) - 1;
289            }
290        }
291        else {
292            if (m == 12) {
293                ms = 1;
294                ys = parseInt(y) + 1;
295            }
296            else {
297                ms = parseInt(m) + 1;
298            }
299        }
300        $("#_tdCal tr:gt(0)").remove();
301        $("#_tdCal").append(calendar._setDay(ms, ys, 0));
302        $("#_calmod").val(ms);
303        $("#_calyear").val(ys);
304        $("#_bgMon").html(ms);
305        $("#_tdCal tr:gt(0) td[date!='']").click(function () {
306            s.value = new Date($(this).attr("date").replace(/[-]/g, "/")).format(calendar.config.format);
307            $(s).attr("date", new Date($(this).attr("date").replace(/[-]/g, "/")).format("yyyy-MM-dd"));
308            calendar.colse();
309        });
310    }
311};
312Date.prototype.format = function (format) {
313    var o =
314    {
315        "M+": this.getMonth() + 1,
316        "d+": this.getDate(),
317        "h+": this.getHours(),
318        "m+": this.getMinutes(),
319        "s+": this.getSeconds(),
320        "q+": Math.floor((this.getMonth() + 3) / 3),
321        "S": this.getMilliseconds()
322    };
323    if (/(y+)/.test(format)) {
324        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
325    };
326    for (var k in o) {
327        if (new RegExp("(" + k + ")").test(format)) {
328            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
329        };
330    };
331    return format;
332};
333document.write("");

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.