/* * My97 DatePicker 4.2 * SITE: http://dp.my97.net * BLOG: http://my97.cnblogs.com * MAIL: smallcarrot@163.com */ var $c; if ($FF) { Event.prototype.__defineSetter__("returnValue", function ($) { if (!$) this.preventDefault(); return $ }); Event.prototype.__defineGetter__("srcElement", function () { var $ = this.target; while ($.nodeType != 1) $ = $.parentNode; return $ }); HTMLElement.prototype.attachEvent = function ($, _) { var A = $.replace(/on/, ""); _._ieEmuEventHandler = function ($) { window.event = $; return _() }; this.addEventListener(A, _._ieEmuEventHandler, false) } } function My97DP() { $c = this; $dp.$w = window; $dt = this.date = new DPDate(); this.QS = []; $d = document.createElement("div"); $d.className = "WdateDiv"; $d.onmousedown = hideSel; $d.innerHTML = "
 
"; attachTabEvent($d, function () { hideSel() }); _(); this.init(); $(); $d.MI.attachEvent("onkeydown", A); $d.yI.attachEvent("onkeydown", A); $d.MI.onfocus = function ($) { this.className = "yminputfocus"; this.value = getA(this, "realValue"); this.select(); $c._fM(); showB($d.MD) }; $d.MI.onblur = function () { var $; if ($lastInput == this) { $dt.M = pIntDef(this.value, $dt.M); $ = true } c_M($dt.M, $); this.className = "yminput"; hide($d.MD) }; $d.yI.onfocus = function () { this.className = "yminputfocus"; this.select(); $c._fy(); showB($d.yD) }; $d.yI.onblur = function () { var $; if ($lastInput == this) { $dt.y = pIntDef(this.value, $dt.y); $ = true } c_y($dt.y, $); this.className = "yminput"; hide($d.yD) }; $d.HI.onfocus = function () { $c.currFocus = this; this.select(); $c._fH(); showB($d.HD) }; $d.HI.onblur = function () { var $; if ($lastInput == this) { $dt.H = pIntDef(this.value, $dt.H); $ = true } c_H($dt.H, $); hide($d.HD) }; $d.mI.onfocus = function () { $c.currFocus = this; this.select(); $c._fm(); showB($d.mD) }; $d.mI.onblur = function () { var $; if ($lastInput == this) { $dt.m = pIntDef(this.value, $dt.m); $ = true } c_m($dt.m, $); hide($d.mD) }; $d.sI.onfocus = function () { $c.currFocus = this; this.select(); $c._fs(); showB($d.sD) }; $d.sI.onblur = function () { var $; if ($lastInput == this) { $dt.s = pIntDef(this.value, $dt.s); $ = true } c_s($dt.s, $); hide($d.sD) }; $d.HI.attachEvent("onkeydown", A); $d.mI.attachEvent("onkeydown", A); $d.sI.attachEvent("onkeydown", A); $d.upButton.onclick = function () { updownEvent(1) }; $d.downButton.onmousedown = function () { updownEvent(- 1) }; $d.qsDiv.onclick = function () { if ($d.qsDivSel.style.display != "block") { $c._fillQS(); showB($d.qsDivSel) } else hide($d.qsDivSel) }; attachTabEvent($d.okI, function () { $d.MI.focus(); event.returnValue = false }); document.body.appendChild($d); function _() { var A = $d.getElementsByTagName("div"), $ = $d.getElementsByTagName("input"), B = $d.getElementsByTagName("button"), _ = $d.getElementsByTagName("span"); $d.navLeftImg = A[1]; $d.leftImg = A[2]; $d.rightImg = A[8]; $d.navRightImg = A[7]; $d.MI = $[0]; $d.yI = $[1]; $d.titleDiv = A[0]; $d.MD = A[4]; $d.yD = A[6]; $d.qsDivSel = A[9]; $d.dDiv = A[10]; $d.tDiv = A[11]; $d.HD = A[12]; $d.mD = A[13]; $d.sD = A[14]; $d.qsDiv = A[15]; $d.bDiv = A[16]; $d.HI = $[2]; $d.mI = $[4]; $d.sI = $[6]; $d.clearI = $[7]; $d.todayI = $[8]; $d.okI = $[9]; $d.upButton = B[0]; $d.downButton = B[1]; $d.timeSpan = _[0] } function $() { $d.navLeftImg.onclick = function () { $ny = $ny <= 0 ? $ny - 1 : -1; if ($ny % 5 == 0) $d.yI.focus(); c_y($dt.y - 1) }; $d.leftImg.onclick = function () { var $ = $dt.M; if ($ > 1) $ -= 1; else { $ = 12; $dt.y -= 1 } s_y($dt.y); c_M($) }; $d.rightImg.onclick = function () { var $ = $dt.M; if ($ < 12) $ += 1; else { $ = 1; $dt.y += 1 } s_y($dt.y); c_M($) }; $d.navRightImg.onclick = function () { $ny = $ny >= 0 ? $ny + 1 : 1; if ($ny % 5 == 0) $d.yI.focus(); c_y($dt.y + 1) } } function A() { var $ = event, _ = ($.which == undefined) ? $.keyCode : $.which; if (!$OPERA && !((_ >= 48 && _ <= 57) || (_ >= 96 && _ <= 105) || _ == 8 || _ == 46 || _ == 37 || _ == 39 || _ == 9)) $.returnValue = false; $lastInput = $.srcElement } } My97DP.prototype = { init: function () { $ny = 0; $dp.cal = this; if ($dp.readOnly && $dp.el.readOnly != null) { $dp.el.readOnly = true; $dp.el.blur() } $(); this.dateFmt = $dp.dateFmt; this._dealFmt(); this.autoPickDate = $dp.autoPickDate || (($dp.has.st) ? false : true); $tdt = this.tdate = new DPDate(); this.ddateRe = this._initRe("disabledDates"); this.ddayRe = this._initRe("disabledDays"); this.loadDate(); this.minDate = this.doCustomDate($dp.minDate, $dp.minDate != $dp.defMinDate ? $dp.realFmt : $dp.realFullFmt, $dp.defMinDate); this.maxDate = this.doCustomDate($dp.maxDate, $dp.maxDate != $dp.defMaxDate ? $dp.realFmt : $dp.realFullFmt, $dp.defMaxDate); if (this.minDate.compareWith(this.maxDate) > 0) $dp.errMsg = $lang.err_1; this._makeDateInRange(); $sdt = this.sdate = new DPDate($dt.y, $dt.M, $dt.d, $dt.H, $dt.m, $dt.s); if (!$dp.alwaysUseStartDate && $dp.el[$dp.elProp] != "") this.update(); this.oldValue = $dp.el[$dp.elProp]; setA($d.MI, "realValue", $dt.M); $d.MI.value = $lang.aMonStr[$dt.M - 1]; $d.yI.value = $dt.y; $d.HI.value = $dt.H; $d.mI.value = $dt.m; $d.sI.value = $dt.s; $d.timeSpan.innerHTML = $lang.timeStr; $d.clearI.value = $lang.clearStr; $d.todayI.value = $lang.todayStr; $d.okI.value = $lang.okStr; this.initShowAndHide(); this.initBtn(); if ($dp.errMsg) alert($dp.errMsg); this.redraw(); hideSel(); if ($dp.el.nodeType == 1) $dp.attachEvent($dp.el, "onkeydown", function ($) { if ($dp.dd.style.display != "none") { k = ($.which == undefined) ? $.keyCode : $.which; if (k == 9) { if ($dp.el[$dp.elProp] != "") $c.update(); hide($dp.dd) } } }); function $() { var _, $; for (_ = 0; ($ = document.getElementsByTagName("link")[_]); _++) if (getA($, "rel").indexOf("style") != -1 && getA($, "title")) { $.disabled = true; if (getA($, "title") == $dp.skin) $.disabled = false } } }, splitDate: function (J, C, O, E, B, G, F, K, L) { var $; if (J && J.loadDate) $ = J; else { $ = new DPDate(); C = C || $dp.dateFmt; var H, N = 0, A = /yyyy|yyy|yy|y|MM|M|dd|d|HH|H|mm|m|ss|s/g, M = J.split(/\W+/), _ = C.match(A); A.lastIndex = 0; if (!L && M.length != _.length) { var D = 0, K = "^"; while ((M = A.exec(C)) !== null) { D = M.index - D; K += (D == 0) ? "" : (".{" + D + "}"); D = A.lastIndex; switch (M[0]) { case "yyyy": K += "(\\d{4})"; break; case "yyy": K += "(\\d{3})"; break; default: K += "(\\d\\d?)"; break } } K += ".*$"; M = new RegExp(K).exec(J); N = 1 } if (M) for (H = 0; H < _.length; H++) { var I = M[H + N]; if (I) switch (_[H]) { case "y": case "yy": I = pIntDef(I, 0); if (I < 50) I += 2000; else I += 1900; $.y = I; break; case "yyy": $.y = pIntDef(I, 0) + $dp.yearOffset; break; default: $[_[H].slice(- 1)] = I; break } } } $.coverDate(O, E, B, G, F, K); return $ }, _initRe: function (_) { var B, $ = $dp[_], A = "(?:"; if ($) { for (B = 0; B < $.length; B++) { A += this.doExp($[B]); if (B != $.length - 1) A += "|" } A = new RegExp(A + ")") } else A = null; return A }, update: function () { $dp.el[$dp.elProp] = this.getDateStr(); this.setRealValue() }, setRealValue: function ($) { var _ = $dp.$($dp.vel), $ = rtn($, this.getDateStr($dp.realFmt)); if (_) _.value = $; setA($dp.el, "realValue", $) }, doExp: function (s) { var ps = "yMdHms", arr, tmpEval, re = /#\{(.*?)\}/; s = s + ""; for (var i = 0; i < ps.length; i++) s = s.replace("%" + ps.charAt(i), this.getP(ps.charAt(i), null, $tdt)); if (s.substring(0, 3) == "#F{") { s = s.substring(3, s.length - 1); if (s.indexOf("return ") < 0) s = "return " + s; s = $dp.win.eval("new Function(\"" + s + "\");"); s = s() } else while ((arr = re.exec(s)) != null) { arr.lastIndex = arr.index + arr[1].length + 2; tmpEval = pInt(eval(arr[1])); if (tmpEval < 0) tmpEval = "9700" + (- tmpEval); s = s.substring(0, arr.index) + tmpEval + s.substring(arr.lastIndex + 1) } return s }, doCustomDate: function (A, B, _) { var $; A = this.doExp(A); if (!A || A == "") A = _; if (typeof A == "object") $ = A; else { $ = this.splitDate(A, B, null, null, 1, 0, 0, 0, true); $.y = ("" + $.y).replace(/^9700/, "-"); $.M = ("" + $.M).replace(/^9700/, "-"); $.d = ("" + $.d).replace(/^9700/, "-"); $.H = ("" + $.H).replace(/^9700/, "-"); $.m = ("" + $.m).replace(/^9700/, "-"); $.s = ("" + $.s).replace(/^9700/, "-"); if (A.indexOf("%ld") >= 0) { A = A.replace(/%ld/g, "0"); $.d = 0; $.M = pInt($.M) + 1 } $.refresh() } return $ }, loadDate: function () { var _, $; if ($dp.alwaysUseStartDate || ($dp.startDate != "" && $dp.el[$dp.elProp] == "")) { _ = this.doExp($dp.startDate); $ = $dp.realFmt } else { _ = $dp.el[$dp.elProp]; $ = this.dateFmt } $dt.loadFromDate(this.splitDate(_, $)); if ($dp.has.sd && !this.isDate($dt)) { $dt.y = $tdt.y; $dt.M = $tdt.M; $dt.d = $tdt.d } if ($dp.has.st && !this.isTime($dt)) { $dt.H = $tdt.H; $dt.m = $tdt.m; $dt.s = $tdt.s } }, isDate: function ($) { if ($.y != null) $ = doStr($.y, 4) + "-" + $.M + "-" + $.d; return $.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/) }, isTime: function ($) { if ($.H != null) $ = $.H + ":" + $.m + ":" + $.s; return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/) }, _makeDateInRange: function () { var _ = this.checkRange(), A = true; if (_ != 0) { A = false; var $; if (_ > 0) $ = this.maxDate; else $ = this.minDate; if ($dp.has.sd) { $dt.y = $.y; $dt.M = $.M; $dt.d = $.d } if ($dp.has.st) { $dt.H = $.H; $dt.m = $.m; $dt.s = $.s } } return A }, checkRange: function (A, $) { $ = $ || $dt; var _ = $.compareWith(this.minDate, A); if (_ > 0) { _ = $.compareWith(this.maxDate, A); if (_ < 0) _ = 0 } return _ }, checkValid: function ($, A, B) { A = A || $dp.has.minUnit; var _ = this.checkRange(A, $); if (_ == 0) { if (A == "d" && B == null) B = new Date($.y, $.M - 1, $.d).getDay(); _ = !this.testDay(B) && !this.testDate($) } else _ = false; return _ }, _fd: function () { var F, D, E, L, H = new sb(), G, A, I, C, K = "", $ = "", _ = new DPDate($dt.y, $dt.M, $dt.d, 0, 0, 0), J = _.y, B = _.M; G = new Date(J, B - 1, 1).getDay(); A = 1 - G; I = new Date(J, B, 0).getDay(); C = new Date(J, B, 0).getDate(); H.a(""); H.a(""); F = $dp.isShowWeek ? 0 : 1; while (F < 8) H.a(""); H.a(""); for (F = 1, D = A; F < 7; F++) { H.a(""); for (E = 0; E < 7; E++) { _.loadDate(J, B, D++); _.refresh(); if (_.M == B) { L = true; if (_.compareWith($sdt, "d") == 0) K = "Wselday"; else if (_.compareWith($tdt, "d") == 0) K = "Wtoday"; else K = (($dp.highLineWeekDay && (E == 0 || E == 6)) ? "Wwday" : "Wday"); $ = (($dp.highLineWeekDay && (E == 0 || E == 6)) ? "WwdayOn" : "WdayOn") } else if ($dp.isShowOthers) { L = true; K = "WotherDay"; $ = "WotherDayOn" } else L = false; if ($dp.isShowWeek && E == 0 && (F < 4 || L)) H.a(""); H.a("") } else H.a(">") } H.a("") } H.a("
" + $lang.aWeekStr[F++] + "
" + getWeek(_) + "" + _.d + "
"); return H.j() }, testDate: function (_) { var $ = this.ddateRe && this.ddateRe.test(this.getDateStr($dp.realFmt, _)); if ($dp.disabledDates && $dp.opposite) $ = !$; return $ }, testDay: function (_) { var $ = this.ddayRe && this.ddayRe.test(_); if ($dp.disabledDays && $dp.opposite) $ = !$; return $ }, _f: function (p, c, r, e) { var s = new sb(); bak = $dt[p]; s.a(""); for (var j = 0; j < c; j++) { s.a("") } s.a("") } s.a("
" + (p == "M" ? $lang.aMonStr[$dt[p] - 1] : $dt[p]) + "
"); $dt[p] = bak; return s.j() }, _fM: function () { $d.MD.innerHTML = this._f("M", 2, 6, "i+j*6+1") }, _fy: function (_) { var B, A = $dt.y, $ = new sb(); _ = rtn(_, A - 5); $.a(this._f("y", 2, 5, _ + "+i+j*5")); $.a("
\u2190 _ + 10 ? "class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy(" + (_ + 10) + ")';" : "class='invalidMenu'"); $.a(">\u2192
"); $d.yD.innerHTML = $.j() }, _fHMS: function (A, _, $) { $d[A + "D"].innerHTML = this._f(A, 6, _, $) }, _fH: function () { this._fHMS("H", 4, "i * 6 + j") }, _fm: function () { this._fHMS("m", 2, "i * 30 + j * 5") }, _fs: function () { this._fHMS("s", 1, "j * 10") }, _fillQS: function (A) { this.initQS(); var _ = $d.qsDivSel, C = _.style, $ = new sb(); //$.a(""); $.a("
"); $.a(""); for (var B = 0; B < this.QS.length; B++) if (this.QS[B]) { $.a("") } else $.a(""); $.a("
" + $lang.quickStr + "
"); if (!A) $.a("
\xd7
"); $.a("
"); _.innerHTML = $.j() }, _dealFmt: function () { $(/yyyy|yyy|yy|y/); $(/MM|M/); $(/dd|d/); $(/HH|H/); $(/mm|m/); $(/ss|s/); $dp.has.sd = ($dp.has.y || $dp.has.M || $dp.has.d) ? true : false; $dp.has.st = ($dp.has.H || $dp.has.m || $dp.has.s) ? true : false; $dp.realFullFmt = $dp.realFullFmt.replace(/%Date/, $dp.realDateFmt).replace(/%Time/, $dp.realTimeFmt); if ($dp.has.sd) { if ($dp.has.st) $dp.realFmt = $dp.realFullFmt; else $dp.realFmt = $dp.realDateFmt } else $dp.realFmt = $dp.realTimeFmt; function $(_) { var $ = (_ + "").slice(1, 2); $dp.has[$] = _.exec($dp.dateFmt) ? ($dp.has.minUnit = $, true) : false } }, initShowAndHide: function () { var $ = false; $dp.has.y ? ($ = true, show($d.yI, $d.navLeftImg, $d.navRightImg)) : hide($d.yI, $d.navLeftImg, $d.navRightImg); $dp.has.M ? ($ = true, show($d.MI, $d.leftImg, $d.rightImg)) : hide($d.MI, $d.leftImg, $d.rightImg); $ ? show($d.titleDiv) : hide($d.titleDiv); if ($dp.has.st) { show($d.tDiv); disHMS($d.HI, $dp.has.H); disHMS($d.mI, $dp.has.m); disHMS($d.sI, $dp.has.s) } else hide($d.tDiv); shorH($d.clearI, $dp.isShowClear); shorH($d.todayI, $dp.isShowToday); shorH($d.qsDiv, ($dp.has.d && $dp.qsEnabled)); if ($dp.eCont) hide($d.bDiv) }, mark: function (B) { if ($cMark) { $cMark = false; return } var A = $dp.el, _ = $FF ? "class" : "className"; if (B) C(A); else switch ($dp.errDealMode) { case 0: $cMark = true; if (confirm($lang.errAlertMsg)) { A[$dp.elProp] = this.oldValue; C(A) } else $(A); break; case 1: A[$dp.elProp] = this.oldValue; C(A); break; case 2: $(A); break } function C(A) { var $ = A.className.replace(/WdateFmtErr/g, ""); if (A.className != $) setA(A, _, $) } function $($) { setA($, _, $.className + " WdateFmtErr") } }, getP: function (C, _, $) { $ = $ || $dt; var E, B, D, A; switch (C.charAt(0)) { case "w": A = getDay($); break; case "D": B = [C]; A = $lang.aWeekStr[getDay($) + 1]; break; case "W": A = getWeek($); break; case "y": B = ["yyyy", "yyy", "yy", "y"]; break; default: break } B = B || [C + C, C]; _ = _ || B[0]; for (E = 0; E < B.length; E++) { A = rtn(A, $[C]); D = B[E]; if (_.indexOf(D) >= 0) _ = _.replace(D, doStr((C == "y" && D.length < 4) ? (D.length < 3 ? $.y % 100 : ($.y + 2000 - $dp.yearOffset) % 1000) : A, D.length)) } return _ }, getDateStr: function (_, $) { $ = $ || $dt; _ = _ || this.dateFmt; var A = "yMdHmswWD"; for (var B = 0; B < A.length; B++) _ = this.getP(A.charAt(B), _, $); return _ }, redraw: function () { $d.dDiv.innerHTML = this._fd(); if (!$dp.has.d) { this._fillQS(true); showB($d.qsDivSel) } else hide($d.qsDivSel); this.autoSize() }, autoSize: function () { var $ = parent.document.getElementsByTagName("iframe"); for (var _ = 0; _ < $.length; _++) if ($[_].contentWindow == window) { $[_].style.width = $d.offsetWidth + "px"; $[_].style.height = $d.offsetHeight + "px" } }, pickDate: function (D, A, $, C, B, _) { $dt.y = rtn(D, $dt.y); $dt.M = rtn(A, $dt.M); $dt.d = rtn($, $dt.d); if ($dp.has.st) { $dt.H = rtn(C, $dt.H); $dt.m = rtn(B, $dt.m); $dt.s = rtn(_, $dt.s) } while (!this.isDate($dt) && $dt.d > 0) $dt.d--; if (!$dp.eCont) { this.update(); if (this.checkValid($dt)) { $c.mark(true); hide($dp.dd) } else $c.mark(false) } if ($dp.onpicked) $dp.onpicked.call($dp.el, $dp); else if (this.oldValue != $dp.el[$dp.elProp] && $dp.el.onchange) fireEvent($dp.el, "change") }, initBtn: function () { $d.clearI.onclick = function () { var $; if ($dp.onclearing) $ = $dp.onclearing.call($dp.el, $dp); if (!$) { $dp.el[$dp.elProp] = ""; $c.setRealValue(""); hide($dp.dd); if ($dp.oncleared) $dp.oncleared.call($dp.el, $dp); else if ($c.oldValue != $dp.el[$dp.elProp] && $dp.el.onchange) fireEvent($dp.el, "change") } }; $d.okI.onclick = function () { day_Click() }; if ($dp.el[$dp.elProp] == "") $d.okI.value = $lang.okStr; else $d.okI.value = $lang.updateStr; if (this.checkValid($tdt)) { $d.todayI.disabled = false; $d.todayI.onclick = function () { var $ = $c.tdate; day_Click($.y, $.M, $.d, $.H, $.m, $.s) } } else $d.todayI.disabled = true }, initQS: function () { var H, G, A, F, C = [], $ = 5, E = $dp.quickSel.length, _ = $dp.has.minUnit; if (E > $) E = $; else if (_ == "m" || _ == "s") C = [0, 15, 30, 45, 59, -60, -45, -30, -15, -1]; else for (H = 0; H < $ * 2; H++) C[H] = $dt[_] - $ + 1 + H; for (H = G = 0; H < E; H++) { A = this.doCustomDate($dp.quickSel[H]); if (this.checkValid(A)) this.QS[G++] = A } var B = "yMdHms", D = [1, 1, 1, 0, 0, 0]; for (H = 0; H <= B.indexOf(_); H++) D[H] = $dt[B.charAt(H)]; for (H = 0; G < $; H++) if (H < C.length) { A = new DPDate(D[0], D[1], D[2], D[3], D[4], D[5]); A[_] = C[H]; A.refresh(); if (this.checkValid(A)) this.QS[G++] = A } else this.QS[G++] = null } }; function sb() { this.s = new Array(); this.i = 0; this.a = function ($) { this.s[this.i++] = $ }; this.j = function () { return this.s.join("") } } function getWeek($) { var _ = new Date($.y, $.M - 1, $.d), B = _.getDay(); _.setDate(_.getDate() - (B + 6) % 7 + 3); var A = _.valueOf(); _.setMonth(0); _.setDate(4); return Math.round((A - _.valueOf()) / (7 * 86400000)) + 1 } function getDay($) { var _ = new Date($.y, $.M - 1, $.d); return _.getDay() } function show() { setDisp(arguments, "") } function showB() { setDisp(arguments, "block") } function hide() { setDisp(arguments, "none") } function setDisp(_, $) { for (i = 0; i < _.length; i++) _[i].style.display = $ } function shorH(_, $) { $ ? show(_) : hide(_) } function disHMS(_, $) { if ($) _.disabled = ""; else { _.disabled = "disabled"; _.value = "00" } } function c_y(_, $) { if ($ || _ != $dt.y) { $dt.y = _; dealRange("y"); $c.redraw() } } function c_M(_, $) { _ = makeInRange(_, 1, 12); if ($ || _ != $dt.M) { $dt.M = _; dealRange("M"); $c.redraw() } else s_M(_) } function day_Click(F, A, $, D, B, _) { var C; if ($dp.onpicking) C = $dp.onpicking.call($dp.el, $dp); if (!C) { var E = $sdt.y == F && $sdt.M == A && $sdt.d == $; if (!E && arguments.length != 0) { $sdt.y = F; $sdt.M = A; s_y(F); s_M(A); c_d($, true) } if ($c.autoPickDate || E || arguments.length == 0) $c.pickDate(F, A, $, D, B, _) } } function c_d($, _) { if (_ || $ != $dt.d) { $dt.d = $; dealRange("d"); $c.redraw() } } function c_H(_, $) { _ = makeInRange(_, 0, 23); if ($ || _ != $dt.H) { $dt.H = _; dealRange("H") } } function c_m(_, $) { _ = makeInRange(_, 0, 59); if ($ || _ != $dt.m) { $dt.m = _; dealRange("m") } } function c_s(_, $) { _ = makeInRange(_, 0, 59); if ($ || _ != $dt.s) { $dt.s = _; dealRange("s") } } function dealRange(type) { var func, rv, v; func = "s_" + type + "($dt." + type + ")"; rv = $c.checkRange(); if (rv == 0) eval(func); else if (rv < 0) _setAll($c.minDate); else if (rv > 0) _setAll($c.maxDate); function _setAll($) { s_y($.y); s_M($.M); s_d($.d); if ($dp.has.st) { s_H($.H); s_m($.m); s_s($.s) } } } function s_y($) { $dt.y = $d.yI.value = $ } function s_M($) { $dt.M = $; setA($d.MI, "realValue", $); $d.MI.value = $lang.aMonStr[$ - 1] } function s_d($) { $sdt.d = $dt.d = $ } function s_H($) { $dt.H = $d.HI.value = $ } function s_m($) { $dt.m = $d.mI.value = $ } function s_s($) { $dt.s = $d.sI.value = $ } function setA(A, _, $) { if (A.setAttribute) A.setAttribute(_, $) } function getA(_, $) { return _.getAttribute($) } function makeInRange(_, $, A) { if (_ < $) _ = $; else if (_ > A) _ = A; return _ } function attachTabEvent($, _) { $.attachEvent("onkeydown", function () { var $ = event, A = ($.which == undefined) ? $.keyCode : $.which; if (A == 9) _() }) } function doStr($, _) { $ = $ + ""; while ($.length < _) $ = "0" + $; return $ } function hideSel() { hide($d.yD, $d.MD, $d.HD, $d.mD, $d.sD) } function updownEvent($) { if ($c.currFocus == undefined) $c.currFocus = $d.mI; switch ($c.currFocus) { case $d.HI: c_H($dt.H + $); break; case $d.mI: c_m($dt.m + $); break; case $d.sI: c_s($dt.s + $); break } } function DPDate(D, A, $, C, B, _) { this.loadDate = function (E, B, _, D, C, A) { var $ = new Date(); this.y = pIntDef(E, $.getFullYear()); this.M = pIntDef(B, $.getMonth() + 1); this.d = pIntDef(_, $.getDate()); this.H = pIntDef(D, $.getHours()); this.m = pIntDef(C, $.getMinutes()); this.s = pIntDef(A, $.getSeconds()) }; this.loadFromDate = function ($) { if ($ == null) return; this.loadDate($.y, $.M, $.d, $.H, $.m, $.s) }; this.coverDate = function (E, B, _, D, C, A) { var $ = new Date(); this.y = pIntDef(this.y, rtn(E, $.getFullYear())); this.M = pIntDef(this.M, rtn(B, $.getMonth() + 1)); this.d = $dp.has.d ? pIntDef(this.d, rtn(_, $.getDate())) : 1; this.H = pIntDef(this.H, rtn(D, $.getHours())); this.m = pIntDef(this.m, rtn(C, $.getMinutes())); this.s = pIntDef(this.s, rtn(A, $.getSeconds())) }; this.compareWith = function ($, C) { var A = "yMdHms", _, B; C = A.indexOf(C); C = C >= 0 ? C : 5; for (var D = 0; D <= C; D++) { B = A.charAt(D); _ = this[B] - $[B]; if (_ > 0) return 1; else if (_ < 0) return - 1 } return 0 }; this.refresh = function () { var $ = new Date(this.y, this.M - 1, this.d, this.H, this.m, this.s); this.y = $.getFullYear(); this.M = $.getMonth() + 1; this.d = $.getDate(); this.H = $.getHours(); this.m = $.getMinutes(); this.s = $.getSeconds(); return !isNaN(this.y) }; this.loadDate(D, A, $, C, B, _) } function pInt($) { return parseInt($, 10) } function pIntDef(_, $) { _ = pInt(_); if (isNaN(_)) _ = $; return _ } function rtn($, _) { return $ == null ? _ : $ } function fireEvent(A, $) { if ($IE) A.fireEvent("on" + $); else { var _ = document.createEvent("HTMLEvents"); _.initEvent($, true, true); A.dispatchEvent(_) } }