calendar.js 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303
  1. if ($cfg.eCont) {
  2. $dp = {};
  3. for (var p in $pdp) if (typeof $pdp[p] == "object") {
  4. $dp[p] = {};
  5. for (var pp in $pdp[p]) $dp[p][pp] = $pdp[p][pp]
  6. } else $dp[p] = $pdp[p]
  7. } else $dp = $pdp;
  8. for (p in $cfg) $dp[p] = $cfg[p];
  9. var $c;
  10. if ($FF) {
  11. Event.prototype.__defineSetter__("returnValue",
  12. function($) {
  13. if (!$) this.preventDefault();
  14. return $
  15. });
  16. Event.prototype.__defineGetter__("srcElement",
  17. function() {
  18. var $ = this.target;
  19. while ($.nodeType != 1) $ = $.parentNode;
  20. return $
  21. });
  22. HTMLElement.prototype.attachEvent = function($, _) {
  23. var A = $.replace(/on/, "");
  24. _._ieEmuEventHandler = function($) {
  25. window.event = $;
  26. return _()
  27. };
  28. this.addEventListener(A, _._ieEmuEventHandler, false)
  29. }
  30. }
  31. function My97DP() {
  32. $c = this;
  33. this.QS = [];
  34. $d = document.createElement("div");
  35. $d.className = "WdateDiv";
  36. $d.innerHTML = "<div id=dpTitle><div class=\"navImg NavImgll\"><a></a></div><div class=\"navImg NavImgl\"><a></a></div><div style=\"float:left\"><div class=\"menuSel MMenu\"></div><input class=yminput></div><div style=\"float:left\"><div class=\"menuSel YMenu\"></div><input class=yminput></div><div class=\"navImg NavImgrr\"><a></a></div><div class=\"navImg NavImgr\"><a></a></div><div style=\"float:right\"></div></div><div style=\"position:absolute;overflow:hidden\"></div><div></div><div id=dpTime><div class=\"menuSel hhMenu\"></div><div class=\"menuSel mmMenu\"></div><div class=\"menuSel ssMenu\"></div><table cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2><span id=dpTimeStr></span>&nbsp;<input class=tB maxlength=2><input value=\":\" class=tm readonly><input class=tE maxlength=2><input value=\":\" class=tm readonly><input class=tE maxlength=2></td><td><button id=dpTimeUp></button></td></tr><tr><td><button id=dpTimeDown></button></td></tr></table></div><div id=dpQS></div><div id=dpControl><input class=dpButton id=dpClearInput type=button><input class=dpButton id=dpTodayInput type=button><input class=dpButton id=dpOkInput type=button></div>";
  37. attachTabEvent($d,
  38. function() {
  39. hideSel()
  40. });
  41. A();
  42. this.init();
  43. $dp.focusArr = [document, $d.MI, $d.yI, $d.HI, $d.mI, $d.sI, $d.clearI, $d.todayI, $d.okI];
  44. for (var B = 0; B < $dp.focusArr.length; B++) {
  45. var _ = $dp.focusArr[B];
  46. _.nextCtrl = B == $dp.focusArr.length - 1 ? $dp.focusArr[1] : $dp.focusArr[B + 1];
  47. $dp.attachEvent(_, "onkeydown", _tab)
  48. }
  49. $();
  50. _inputBindEvent("y,M,H,m,s");
  51. $d.upButton.onclick = function() {
  52. updownEvent(1)
  53. };
  54. $d.downButton.onclick = function() {
  55. updownEvent( - 1)
  56. };
  57. $d.qsDiv.onclick = function() {
  58. if ($d.qsDivSel.style.display != "block") {
  59. $c._fillQS();
  60. showB($d.qsDivSel)
  61. } else hide($d.qsDivSel)
  62. };
  63. document.body.appendChild($d);
  64. function A() {
  65. var _ = $("a");
  66. divs = $("div"),
  67. ipts = $("input"),
  68. btns = $("button"),
  69. spans = $("span");
  70. $d.navLeftImg = _[0];
  71. $d.leftImg = _[1];
  72. $d.rightImg = _[3];
  73. $d.navRightImg = _[2];
  74. $d.rMD = divs[9];
  75. $d.MI = ipts[0];
  76. $d.yI = ipts[1];
  77. $d.titleDiv = divs[0];
  78. $d.MD = divs[4];
  79. $d.yD = divs[6];
  80. $d.qsDivSel = divs[10];
  81. $d.dDiv = divs[11];
  82. $d.tDiv = divs[12];
  83. $d.HD = divs[13];
  84. $d.mD = divs[14];
  85. $d.sD = divs[15];
  86. $d.qsDiv = divs[16];
  87. $d.bDiv = divs[17];
  88. $d.HI = ipts[2];
  89. $d.mI = ipts[4];
  90. $d.sI = ipts[6];
  91. $d.clearI = ipts[7];
  92. $d.todayI = ipts[8];
  93. $d.okI = ipts[9];
  94. $d.upButton = btns[0];
  95. $d.downButton = btns[1];
  96. $d.timeSpan = spans[0];
  97. function $($) {
  98. return $d.getElementsByTagName($)
  99. }
  100. }
  101. function $() {
  102. $d.navLeftImg.onclick = function() {
  103. $ny = $ny <= 0 ? $ny - 1: -1;
  104. if ($ny % 5 == 0) {
  105. $d.yI.focus();
  106. return
  107. }
  108. $d.yI.value = $dt.y - 1;
  109. $d.yI.onblur()
  110. };
  111. $d.leftImg.onclick = function() {
  112. $dt.attr("M", -1);
  113. $d.MI.onblur()
  114. };
  115. $d.rightImg.onclick = function() {
  116. $dt.attr("M", 1);
  117. $d.MI.onblur()
  118. };
  119. $d.navRightImg.onclick = function() {
  120. $ny = $ny >= 0 ? $ny + 1: 1;
  121. if ($ny % 5 == 0) {
  122. $d.yI.focus();
  123. return
  124. }
  125. $d.yI.value = $dt.y + 1;
  126. $d.yI.onblur()
  127. }
  128. }
  129. }
  130. My97DP.prototype = {
  131. init: function() {
  132. $ny = 0;
  133. $dp.cal = this;
  134. if ($dp.readOnly && $dp.el.readOnly != null) {
  135. $dp.el.readOnly = true;
  136. $dp.el.blur()
  137. }
  138. this._dealFmt();
  139. $dt = this.newdate = new DPDate();
  140. $tdt = new DPDate();
  141. $sdt = this.date = new DPDate();
  142. this.dateFmt = this.doExp($dp.dateFmt);
  143. this.autoPickDate = $dp.autoPickDate == null ? ($dp.has.st && $dp.has.st ? false: true) : $dp.autoPickDate;
  144. $dp.autoUpdateOnChanged = $dp.autoUpdateOnChanged == null ? ($dp.isShowOK && $dp.has.d ? false: true) : $dp.autoUpdateOnChanged;
  145. this.ddateRe = this._initRe("disabledDates");
  146. this.ddayRe = this._initRe("disabledDays");
  147. this.sdateRe = this._initRe("specialDates");
  148. this.sdayRe = this._initRe("specialDays");
  149. this.minDate = this.doCustomDate($dp.minDate, $dp.minDate != $dp.defMinDate ? $dp.realFmt: $dp.realFullFmt, $dp.defMinDate);
  150. this.maxDate = this.doCustomDate($dp.maxDate, $dp.maxDate != $dp.defMaxDate ? $dp.realFmt: $dp.realFullFmt, $dp.defMaxDate);
  151. if (this.minDate.compareWith(this.maxDate) > 0) $dp.errMsg = $lang.err_1;
  152. if (this.loadDate()) {
  153. this._makeDateInRange();
  154. this.oldValue = $dp.el[$dp.elProp]
  155. } else this.mark(false, 2);
  156. _setAll($dt);
  157. $d.timeSpan.innerHTML = $lang.timeStr;
  158. $d.clearI.value = $lang.clearStr;
  159. $d.todayI.value = $lang.todayStr;
  160. $d.okI.value = $lang.okStr;
  161. $d.okI.disabled = !$c.checkValid($sdt);
  162. this.initShowAndHide();
  163. this.initBtn();
  164. if ($dp.errMsg) alert($dp.errMsg);
  165. this.draw();
  166. if ($dp.el.nodeType == 1 && $dp.el["My97Mark"] === undefined) {
  167. $dp.attachEvent($dp.el, "onkeydown", _tab);
  168. $dp.attachEvent($dp.el, "onblur",
  169. function() {
  170. if ($dp && $dp.dd.style.display == "none") {
  171. $c.close();
  172. if ($dp.cal.oldValue != $dp.el[$dp.elProp] && $dp.el.onchange) fireEvent($dp.el, "change")
  173. }
  174. });
  175. $dp.el["My97Mark"] = false
  176. }
  177. $c.currFocus = $dp.el;
  178. hideSel()
  179. },
  180. _makeDateInRange: function() {
  181. var _ = this.checkRange();
  182. if (_ != 0) {
  183. var $;
  184. if (_ > 0) $ = this.maxDate;
  185. else $ = this.minDate;
  186. if ($dp.has.sd) {
  187. $dt.y = $.y;
  188. $dt.M = $.M;
  189. $dt.d = $.d
  190. }
  191. if ($dp.has.st) {
  192. $dt.H = $.H;
  193. $dt.m = $.m;
  194. $dt.s = $.s
  195. }
  196. }
  197. },
  198. splitDate: function(J, C, Q, E, B, G, F, K, L) {
  199. var $;
  200. if (J && J.loadDate) $ = J;
  201. else {
  202. $ = new DPDate();
  203. if (J != "") {
  204. C = C || $dp.dateFmt;
  205. var H,
  206. P = 0,
  207. O,
  208. A = /yyyy|yyy|yy|y|MMMM|MMM|MM|M|dd|d|%ld|HH|H|mm|m|ss|s|DD|D|WW|W|w/g,
  209. _ = C.match(A);
  210. A.lastIndex = 0;
  211. if (L) O = J.split(/\W+/);
  212. else {
  213. var D = 0,
  214. M = "^";
  215. while ((O = A.exec(C)) !== null) {
  216. if (D >= 0) M += C.substring(D, O.index);
  217. D = A.lastIndex;
  218. switch (O[0]) {
  219. case "yyyy":
  220. M += "(\\d{4})";
  221. break;
  222. case "yyy":
  223. M += "(\\d{3})";
  224. break;
  225. case "MMMM":
  226. case "MMM":
  227. case "DD":
  228. case "D":
  229. M += "(\\D+)";
  230. break;
  231. default:
  232. M += "(\\d\\d?)";
  233. break
  234. }
  235. }
  236. M += ".*$";
  237. O = new RegExp(M).exec(J);
  238. P = 1
  239. }
  240. if (O) {
  241. for (H = 0; H < _.length; H++) {
  242. var I = O[H + P];
  243. if (I) switch (_[H]) {
  244. case "MMMM":
  245. case "MMM":
  246. $.M = N(_[H], I);
  247. break;
  248. case "y":
  249. case "yy":
  250. I = pInt2(I, 0);
  251. if (I < 50) I += 2000;
  252. else I += 1900;
  253. $.y = I;
  254. break;
  255. case "yyy":
  256. $.y = pInt2(I, 0) + $dp.yearOffset;
  257. break;
  258. default:
  259. $[_[H].slice( - 1)] = I;
  260. break
  261. }
  262. }
  263. } else $.d = 32
  264. }
  265. }
  266. $.coverDate(Q, E, B, G, F, K);
  267. return $;
  268. function N(A, $) {
  269. var _ = A == "MMMM" ? $lang.aLongMonStr: $lang.aMonStr;
  270. for (var B = 0; B < 12; B++) if (_[B].toLowerCase() == $.substr(0, _[B].length).toLowerCase()) return B + 1;
  271. return - 1
  272. }
  273. },
  274. _initRe: function(_) {
  275. var B,
  276. $ = $dp[_],
  277. A = "(?:";
  278. if ($) {
  279. for (B = 0; B < $.length; B++) {
  280. A += this.doExp($[B]);
  281. if (B != $.length - 1) A += "|"
  282. }
  283. A = new RegExp(A + ")")
  284. } else A = null;
  285. return A
  286. },
  287. update: function() {
  288. var $ = this.getNewDateStr();
  289. if ($dp.el[$dp.elProp] != $) $dp.el[$dp.elProp] = $;
  290. this.setRealValue()
  291. },
  292. setRealValue: function($) {
  293. var _ = $dp.$($dp.vel),
  294. $ = rtn($, this.getNewDateStr($dp.realFmt));
  295. if (_) _.value = $;
  296. $dp.el["realValue"] = $
  297. },
  298. doExp: function(s) {
  299. var ps = "yMdHms",
  300. arr,
  301. tmpEval,
  302. re = /#?\{(.*?)\}/;
  303. s = s + "";
  304. for (var i = 0; i < ps.length; i++) s = s.replace("%" + ps.charAt(i), this.getP(ps.charAt(i), null, $tdt));
  305. if (s.substring(0, 3) == "#F{") {
  306. s = s.substring(3, s.length - 1);
  307. if (s.indexOf("return ") < 0) s = "return " + s;
  308. s = $dp.win.eval("new Function(\"" + s + "\");");
  309. s = s()
  310. } else while ((arr = re.exec(s)) != null) {
  311. arr.lastIndex = arr.index + arr[1].length + arr[0].length - arr[1].length - 1;
  312. tmpEval = pInt(eval(arr[1]));
  313. if (tmpEval < 0) tmpEval = "9700" + ( - tmpEval);
  314. s = s.substring(0, arr.index) + tmpEval + s.substring(arr.lastIndex + 1)
  315. }
  316. return s
  317. },
  318. doCustomDate: function(A, B, _) {
  319. var $;
  320. A = this.doExp(A);
  321. if (!A || A == "") A = _;
  322. if (typeof A == "object") $ = A;
  323. else {
  324. $ = this.splitDate(A, B, null, null, 1, 0, 0, 0, true);
  325. $.y = ("" + $.y).replace(/^9700/, "-");
  326. $.M = ("" + $.M).replace(/^9700/, "-");
  327. $.d = ("" + $.d).replace(/^9700/, "-");
  328. $.H = ("" + $.H).replace(/^9700/, "-");
  329. $.m = ("" + $.m).replace(/^9700/, "-");
  330. $.s = ("" + $.s).replace(/^9700/, "-");
  331. if (A.indexOf("%ld") >= 0) {
  332. A = A.replace(/%ld/g, "0");
  333. $.d = 0;
  334. $.M = pInt($.M) + 1
  335. }
  336. $.refresh()
  337. }
  338. return $
  339. },
  340. loadDate: function() {
  341. var _,
  342. $;
  343. if ($dp.alwaysUseStartDate || ($dp.startDate != "" && $dp.el[$dp.elProp] == "")) {
  344. _ = this.doExp($dp.startDate);
  345. $ = $dp.realFmt
  346. } else {
  347. _ = $dp.el[$dp.elProp];
  348. $ = this.dateFmt
  349. }
  350. $dt.loadFromDate(this.splitDate(_, $));
  351. if (_ != "") {
  352. var A = 1;
  353. if ($dp.has.sd && !this.isDate($dt)) {
  354. $dt.y = $tdt.y;
  355. $dt.M = $tdt.M;
  356. $dt.d = $tdt.d;
  357. A = 0
  358. }
  359. if ($dp.has.st && !this.isTime($dt)) {
  360. $dt.H = $tdt.H;
  361. $dt.m = $tdt.m;
  362. $dt.s = $tdt.s;
  363. A = 0
  364. }
  365. return A && this.checkValid($dt)
  366. }
  367. return 1
  368. },
  369. isDate: function($) {
  370. if ($.y != null) $ = doStr($.y, 4) + "-" + $.M + "-" + $.d;
  371. 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])))))?$/)
  372. },
  373. isTime: function($) {
  374. if ($.H != null) $ = $.H + ":" + $.m + ":" + $.s;
  375. return $.match(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)
  376. },
  377. checkRange: function($, A) {
  378. $ = $ || $dt;
  379. var _ = $.compareWith(this.minDate, A);
  380. if (_ > 0) {
  381. _ = $.compareWith(this.maxDate, A);
  382. if (_ < 0) _ = 0
  383. }
  384. return _
  385. },
  386. checkValid: function($, A, B) {
  387. A = A || $dp.has.minUnit;
  388. var _ = this.checkRange($, A);
  389. if (_ == 0) {
  390. _ = 1;
  391. if (A == "d" && B == null) B = Math.abs((new Date($.y, $.M - 1, $.d).getDay() - $dp.firstDayOfWeek + 7) % 7);
  392. _ = !this.testDisDay(B) && !this.testDisDate($, A)
  393. } else _ = 0;
  394. return _
  395. },
  396. checkAndUpdate: function() {
  397. var _ = $dp.el,
  398. A = this,
  399. $ = $dp.el[$dp.elProp];
  400. if ($dp.errDealMode >= 0 && $dp.errDealMode <= 2 && $ != null) {
  401. if ($ != "") A.date.loadFromDate(A.splitDate($, A.dateFmt));
  402. if ($ == "" || (A.isDate(A.date) && A.isTime(A.date) && A.checkValid(A.date))) {
  403. if ($ != "") {
  404. A.newdate.loadFromDate(A.date);
  405. A.update()
  406. } else A.setRealValue("")
  407. } else return false
  408. }
  409. return true
  410. },
  411. close: function($) {
  412. hideSel();
  413. if (this.checkAndUpdate()) {
  414. this.mark(true);
  415. $dp.hide()
  416. } else {
  417. if ($) {
  418. _cancelKey($);
  419. this.mark(false, 2)
  420. } else this.mark(false);
  421. $dp.show()
  422. }
  423. },
  424. _fd: function() {
  425. var E,
  426. C,
  427. D,
  428. K,
  429. A,
  430. H = new sb(),
  431. F = $lang.aWeekStr,
  432. G = $dp.firstDayOfWeek,
  433. I = "",
  434. $ = "",
  435. _ = new DPDate($dt.y, $dt.M, $dt.d, 0, 0, 0),
  436. J = _.y,
  437. B = _.M;
  438. A = 1 - new Date(J, B - 1, 1).getDay() + G;
  439. if (A > 1) A -= 7;
  440. H.a("<table class=WdayTable width=100% border=0 cellspacing=0 cellpadding=0>");
  441. H.a("<tr class=MTitle align=center>");
  442. if ($dp.isShowWeek) H.a("<td>" + F[0] + "</td>");
  443. for (E = 0; E < 7; E++) H.a("<td>" + F[(G + E) % 7 + 1] + "</td>");
  444. H.a("</tr>");
  445. for (E = 1, C = A; E < 7; E++) {
  446. H.a("<tr>");
  447. for (D = 0; D < 7; D++) {
  448. _.loadDate(J, B, C++);
  449. _.refresh();
  450. if (_.M == B) {
  451. K = true;
  452. if (_.compareWith($sdt, "d") == 0) I = "Wselday";
  453. else if (_.compareWith($tdt, "d") == 0) I = "Wtoday";
  454. else I = ($dp.highLineWeekDay && (0 == (G + D) % 7 || 6 == (G + D) % 7) ? "Wwday": "Wday");
  455. $ = ($dp.highLineWeekDay && (0 == (G + D) % 7 || 6 == (G + D) % 7) ? "WwdayOn": "WdayOn")
  456. } else if ($dp.isShowOthers) {
  457. K = true;
  458. I = "WotherDay";
  459. $ = "WotherDayOn"
  460. } else K = false;
  461. if ($dp.isShowWeek && D == 0 && (E < 4 || K)) H.a("<td class=Wweek>" + getWeek(_, $dp.firstDayOfWeek == 0 ? 1: 0) + "</td>");
  462. H.a("<td ");
  463. if (K) {
  464. if (this.checkValid(_, "d", D)) {
  465. if (this.testSpeDay(Math.abs((new Date(_.y, _.M - 1, _.d).getDay() - $dp.firstDayOfWeek + 7) % 7)) || this.testSpeDate(_)) I = "WspecialDay";
  466. H.a("onclick=\"day_Click(" + _.y + "," + _.M + "," + _.d + ");\" ");
  467. H.a("onmouseover=\"this.className='" + $ + "'\" ");
  468. H.a("onmouseout=\"this.className='" + I + "'\" ")
  469. } else I = "WinvalidDay";
  470. H.a("class=" + I);
  471. H.a(">" + _.d + "</td>")
  472. } else H.a("></td>")
  473. }
  474. H.a("</tr>")
  475. }
  476. H.a("</table>");
  477. return H.j()
  478. },
  479. testDisDate: function(_, A) {
  480. var $ = this.testDate(_, this.ddateRe, A);
  481. return (this.ddateRe && $dp.opposite) ? !$: $
  482. },
  483. testDisDay: function($) {
  484. return this.testDay($, this.ddayRe)
  485. },
  486. testSpeDate: function($) {
  487. return this.testDate($, this.sdateRe)
  488. },
  489. testSpeDay: function($) {
  490. return this.testDay($, this.sdayRe)
  491. },
  492. testDate: function($, B, A) {
  493. var _ = A == "d" ? $dp.realDateFmt: $dp.realFmt;
  494. return B ? B.test(this.getDateStr(_, $)) : 0
  495. },
  496. testDay: function(_, $) {
  497. return $ ? $.test(_) : 0
  498. },
  499. _f: function(p, c, r, e, isR) {
  500. var s = new sb(),
  501. fp = isR ? "r" + p: p;
  502. bak = $dt[p];
  503. s.a("<table cellspacing=0 cellpadding=3 border=0");
  504. for (var i = 0; i < r; i++) {
  505. s.a("<tr nowrap=\"nowrap\">");
  506. for (var j = 0; j < c; j++) {
  507. s.a("<td nowrap ");
  508. $dt[p] = eval(e);
  509. if (($dp.opposite && this.checkRange($dt, p) == 0) || this.checkValid($dt, p)) {
  510. s.a("class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown=\"");
  511. s.a("hide($d." + p + "D);$d." + fp + "I.value=" + $dt[p] + ";$d." + fp + "I.blur();\"")
  512. } else s.a("class='invalidMenu'");
  513. s.a(">" + (p == "M" ? $lang.aMonStr[$dt[p] - 1] : $dt[p]) + "</td>")
  514. }
  515. s.a("</tr>")
  516. }
  517. s.a("</table>");
  518. $dt[p] = bak;
  519. return s.j()
  520. },
  521. _fMyPos: function($, _) {
  522. if ($) {
  523. var A = $.offsetLeft;
  524. if ($IE) A = $.getBoundingClientRect().left;
  525. _.style.left = A
  526. }
  527. },
  528. _fM: function($) {
  529. this._fMyPos($, $d.MD);
  530. $d.MD.innerHTML = this._f("M", 2, 6, "i+j*6+1", $ == $d.rMI)
  531. },
  532. _fy: function(_, B, A) {
  533. var $ = new sb();
  534. A = A || _ == $d.ryI;
  535. B = rtn(B, $dt.y - 5);
  536. $.a(this._f("y", 2, 5, B + "+i+j*5", A));
  537. $.a("<table cellspacing=0 cellpadding=3 border=0 align=center><tr><td ");
  538. $.a(this.minDate.y < B ? "class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy(0," + (B - 10) + "," + A + ")'": "class='invalidMenu'");
  539. $.a(">\u2190</td><td class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown=\"hide($d.yD);$d.yI.blur();\">\xd7</td><td ");
  540. $.a(this.maxDate.y > B + 10 ? "class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onmousedown='if(event.preventDefault)event.preventDefault();event.cancelBubble=true;$c._fy(0," + (B + 10) + "," + A + ")'": "class='invalidMenu'");
  541. $.a(">\u2192</td></tr></table>");
  542. this._fMyPos(_, $d.yD);
  543. $d.yD.innerHTML = $.j()
  544. },
  545. _fHMS: function(A, _, $) {
  546. $d[A + "D"].innerHTML = this._f(A, 6, _, $)
  547. },
  548. _fH: function() {
  549. this._fHMS("H", 4, "i * 6 + j")
  550. },
  551. _fm: function() {
  552. this._fHMS("m", 2, "i * 30 + j * 5")
  553. },
  554. _fs: function() {
  555. this._fHMS("s", 1, "j * 10")
  556. },
  557. _fillQS: function(C, A) {
  558. this.initQS();
  559. var $ = A ? "" : $lang.quickStr,
  560. B = this.QS,
  561. E = B.style,
  562. _ = new sb();
  563. _.a("<table class=WdayTable width=100% height=100% border=0 cellspacing=0 cellpadding=0>");
  564. _.a("<tr class=MTitle><td><div style=\"float:left\">" + $ + "</div>");
  565. if (!C) _.a("<div style=\"float:right;cursor:pointer\" onclick=\"hide($d.qsDivSel);\">\xd7</div>");
  566. _.a("</td></tr>");
  567. for (var D = 0; D < B.length; D++) if (B[D]) {
  568. _.a("<tr><td style='text-align:left' nowrap='nowrap' class='menu' onmouseover=\"this.className='menuOn'\" onmouseout=\"this.className='menu'\" onclick=\"");
  569. _.a("day_Click(" + B[D].y + ", " + B[D].M + ", " + B[D].d + "," + B[D].H + "," + B[D].m + "," + B[D].s + ");\">");
  570. _.a("&nbsp;" + this.getDateStr(null, B[D]));
  571. _.a("</td></tr>")
  572. } else _.a("<tr><td class='menu'>&nbsp;</td></tr>");
  573. _.a("</table>");
  574. $d.qsDivSel.innerHTML = _.j()
  575. },
  576. _dealFmt: function() {
  577. $(/w/);
  578. $(/WW|W/);
  579. $(/DD|D/);
  580. $(/yyyy|yyy|yy|y/);
  581. $(/MMMM|MMM|MM|M/);
  582. $(/dd|d/);
  583. $(/HH|H/);
  584. $(/mm|m/);
  585. $(/ss|s/);
  586. $dp.has.sd = ($dp.has.y || $dp.has.M || $dp.has.d) ? true: false;
  587. $dp.has.st = ($dp.has.H || $dp.has.m || $dp.has.s) ? true: false;
  588. $dp.realFullFmt = $dp.realFullFmt.replace(/%Date/, $dp.realDateFmt).replace(/%Time/, $dp.realTimeFmt);
  589. if ($dp.has.sd) {
  590. if ($dp.has.st) $dp.realFmt = $dp.realFullFmt;
  591. else $dp.realFmt = $dp.realDateFmt
  592. } else $dp.realFmt = $dp.realTimeFmt;
  593. function $(_) {
  594. var $ = (_ + "").slice(1, 2);
  595. $dp.has[$] = _.exec($dp.dateFmt) ? ($dp.has.minUnit = $, true) : false
  596. }
  597. },
  598. initShowAndHide: function() {
  599. var $ = 0;
  600. $dp.has.y ? ($ = 1, show($d.yI, $d.navLeftImg, $d.navRightImg)) : hide($d.yI, $d.navLeftImg, $d.navRightImg);
  601. $dp.has.M ? ($ = 1, show($d.MI, $d.leftImg, $d.rightImg)) : hide($d.MI, $d.leftImg, $d.rightImg);
  602. $ ? show($d.titleDiv) : hide($d.titleDiv);
  603. if ($dp.has.st) {
  604. show($d.tDiv);
  605. disHMS($d.HI, $dp.has.H);
  606. disHMS($d.mI, $dp.has.m);
  607. disHMS($d.sI, $dp.has.s)
  608. } else hide($d.tDiv);
  609. shorH($d.clearI, $dp.isShowClear);
  610. shorH($d.todayI, $dp.isShowToday);
  611. shorH($d.okI, $dp.isShowOK);
  612. shorH($d.qsDiv, !$dp.doubleCalendar && $dp.has.d && $dp.qsEnabled);
  613. if ($dp.eCont || !($dp.isShowClear || $dp.isShowToday || $dp.isShowOK)) hide($d.bDiv);
  614. else show($d.bDiv)
  615. },
  616. mark: function(B, D) {
  617. var A = $dp.el,
  618. _ = $FF ? "class": "className";
  619. if (B) C(A);
  620. else {
  621. if (D == null) D = $dp.errDealMode;
  622. switch (D) {
  623. case 0:
  624. if (confirm($lang.errAlertMsg)) {
  625. A[$dp.elProp] = this.oldValue;
  626. C(A)
  627. } else $(A);
  628. break;
  629. case 1:
  630. A[$dp.elProp] = this.oldValue;
  631. C(A);
  632. break;
  633. case 2:
  634. $(A);
  635. break
  636. }
  637. }
  638. function C(A) {
  639. var B = A.className;
  640. if (B) {
  641. var $ = B.replace(/WdateFmtErr/g, "");
  642. if (B != $) A.setAttribute(_, $)
  643. }
  644. }
  645. function $($) {
  646. $.setAttribute(_, $.className + " WdateFmtErr")
  647. }
  648. },
  649. getP: function(D, _, $) {
  650. $ = $ || $sdt;
  651. var H,
  652. C = [D + D, D],
  653. E,
  654. A = $[D],
  655. F = function($) {
  656. return doStr(A, $.length)
  657. };
  658. switch (D) {
  659. case "w":
  660. A = getDay($);
  661. break;
  662. case "D":
  663. var G = getDay($) + 1;
  664. F = function($) {
  665. return $.length == 2 ? $lang.aLongWeekStr[G] : $lang.aWeekStr[G]
  666. };
  667. break;
  668. case "W":
  669. A = getWeek($);
  670. break;
  671. case "y":
  672. C = ["yyyy", "yyy", "yy", "y"];
  673. _ = _ || C[0];
  674. F = function(_) {
  675. return doStr((_.length < 4) ? (_.length < 3 ? $.y % 100: ($.y + 2000 - $dp.yearOffset) % 1000) : A, _.length)
  676. };
  677. break;
  678. case "M":
  679. C = ["MMMM", "MMM", "MM", "M"];
  680. F = function($) {
  681. return ($.length == 4) ? $lang.aLongMonStr[A - 1] : ($.length == 3) ? $lang.aMonStr[A - 1] : doStr(A, $.length)
  682. };
  683. break
  684. }
  685. _ = _ || D + D;
  686. if ("yMdHms".indexOf(D) > -1 && D != "y" && !$dp.has[D]) if ("Hms".indexOf(D) > -1) A = 0;
  687. else A = 1;
  688. var B = [];
  689. for (H = 0; H < C.length; H++) {
  690. E = C[H];
  691. if (_.indexOf(E) >= 0) {
  692. B[H] = F(E);
  693. _ = _.replace(E, "{" + H + "}")
  694. }
  695. }
  696. for (H = 0; H < B.length; H++) _ = _.replace(new RegExp("\\{" + H + "\\}", "g"), B[H]);
  697. return _
  698. },
  699. getDateStr: function(_, $) {
  700. $ = $ || this.splitDate($dp.el[$dp.elProp], this.dateFmt) || $sdt;
  701. _ = _ || this.dateFmt;
  702. if (_.indexOf("%ld") >= 0) {
  703. var A = new DPDate();
  704. A.loadFromDate($);
  705. A.d = 0;
  706. A.M = pInt(A.M) + 1;
  707. A.refresh();
  708. _ = _.replace(/%ld/g, A.d)
  709. }
  710. var B = "ydHmswW";
  711. for (var D = 0; D < B.length; D++) {
  712. var C = B.charAt(D);
  713. _ = this.getP(C, _, $)
  714. }
  715. if ($dp.has["D"]) {
  716. _ = _.replace(/DD/g, "%dd").replace(/D/g, "%d");
  717. _ = this.getP("M", _, $);
  718. _ = _.replace(/\%dd/g, this.getP("D", "DD")).replace(/\%d/g, this.getP("D", "D"))
  719. } else _ = this.getP("M", _, $);
  720. return _
  721. },
  722. getNewP: function(_, $) {
  723. return this.getP(_, $, $dt)
  724. },
  725. getNewDateStr: function($) {
  726. return this.getDateStr($, $dt)
  727. },
  728. draw: function() {
  729. $c._dealFmt();
  730. $d.rMD.innerHTML = "";
  731. if ($dp.doubleCalendar) {
  732. $c.autoPickDate = true;
  733. $dp.isShowOthers = false;
  734. $d.className = "WdateDiv WdateDiv2";
  735. var $ = new sb();
  736. $.a("<table class=WdayTable2 width=100% cellspacing=0 cellpadding=0 border=1><tr><td valign=top>");
  737. $.a(this._fd());
  738. $.a("</td><td valign=top>");
  739. $dt.attr("M", 1);
  740. $.a(this._fd());
  741. $d.rMI = $d.MI.cloneNode(true);
  742. $d.ryI = $d.yI.cloneNode(true);
  743. $d.rMD.appendChild($d.rMI);
  744. $d.rMD.appendChild($d.ryI);
  745. $d.rMI.value = $lang.aMonStr[$dt.M - 1];
  746. $d.rMI["realValue"] = $dt.M;
  747. $d.ryI.value = $dt.y;
  748. _inputBindEvent("rM,ry");
  749. $d.rMI.className = $d.ryI.className = "yminput";
  750. $dt.attr("M", -1);
  751. $.a("</td></tr></table>");
  752. $d.dDiv.innerHTML = $.j()
  753. } else {
  754. $d.className = "WdateDiv";
  755. $d.dDiv.innerHTML = this._fd()
  756. }
  757. if (!$dp.has.d || $dp.autoShowQS) {
  758. this._fillQS(true);
  759. showB($d.qsDivSel)
  760. } else hide($d.qsDivSel);
  761. this.autoSize()
  762. },
  763. autoSize: function() {
  764. var _ = parent.document.getElementsByTagName("iframe");
  765. for (var C = 0; C < _.length; C++) {
  766. var $ = $d.style.height;
  767. $d.style.height = "";
  768. var A = $d.offsetHeight;
  769. if (_[C].contentWindow == window && A) {
  770. _[C].style.width = $d.offsetWidth + "px";
  771. var B = $d.tDiv.offsetHeight;
  772. if (B && $d.bDiv.style.display == "none" && $d.tDiv.style.display != "none" && document.body.scrollHeight - A >= B) {
  773. A += B;
  774. $d.style.height = A
  775. } else $d.style.height = $;
  776. _[C].style.height = Math.max(A, $d.offsetHeight) + "px"
  777. }
  778. }
  779. $d.qsDivSel.style.width = $d.dDiv.offsetWidth;
  780. $d.qsDivSel.style.height = $d.dDiv.offsetHeight
  781. },
  782. pickDate: function() {
  783. $dt.d = Math.min(new Date($dt.y, $dt.M, 0).getDate(), $dt.d);
  784. $sdt.loadFromDate($dt);
  785. this.update();
  786. if (!$dp.eCont) if (this.checkValid($dt)) {
  787. elFocus();
  788. hide($dp.dd)
  789. }
  790. if ($dp.onpicked) callFunc("onpicked")
  791. },
  792. initBtn: function() {
  793. $d.clearI.onclick = function() {
  794. if (!callFunc("onclearing")) {
  795. $dp.el[$dp.elProp] = "";
  796. $c.setRealValue("");
  797. elFocus();
  798. hide($dp.dd);
  799. if ($dp.oncleared) callFunc("oncleared")
  800. }
  801. };
  802. $d.okI.onclick = function() {
  803. day_Click()
  804. };
  805. if (this.checkValid($tdt)) {
  806. $d.todayI.disabled = false;
  807. $d.todayI.onclick = function() {
  808. $dt.loadFromDate($tdt);
  809. day_Click()
  810. }
  811. } else $d.todayI.disabled = true
  812. },
  813. initQS: function() {
  814. var H,
  815. G,
  816. A,
  817. F,
  818. C = [],
  819. $ = 5,
  820. E = $dp.quickSel.length,
  821. _ = $dp.has.minUnit;
  822. if (E > $) E = $;
  823. else if (_ == "m" || _ == "s") C = [ - 60, -30, 0, 30, 60, -15, 15, -45, 45];
  824. else for (H = 0; H < $; H++) C[H] = $dt[_] - 2 + H;
  825. for (H = G = 0; H < E; H++) {
  826. A = this.doCustomDate($dp.quickSel[H]);
  827. if (this.checkValid(A)) this.QS[G++] = A
  828. }
  829. var B = "yMdHms",
  830. D = [1, 1, 1, 0, 0, 0];
  831. for (H = 0; H <= B.indexOf(_); H++) D[H] = $dt[B.charAt(H)];
  832. for (H = 0; G < $; H++) if (H < C.length) {
  833. A = new DPDate(D[0], D[1], D[2], D[3], D[4], D[5]);
  834. A[_] = C[H];
  835. A.refresh();
  836. if (this.checkValid(A)) this.QS[G++] = A
  837. } else this.QS[G++] = null
  838. }
  839. };
  840. function elFocus() {
  841. var _ = $dp.el;
  842. try {
  843. if (_.style.display != "none" && _.type != "hidden" && (_.nodeName.toLowerCase() == "input" || _.nodeName.toLowerCase() == "textarea")) {
  844. if ($dp.srcEl == _) $dp.el["My97Mark"] = true;
  845. $dp.el.focus()
  846. }
  847. } catch($) {}
  848. setTimeout(function() {
  849. _["My97Mark"] = false
  850. },
  851. 197)
  852. }
  853. function sb() {
  854. this.s = new Array();
  855. this.i = 0;
  856. this.a = function($) {
  857. this.s[this.i++] = $
  858. };
  859. this.j = function() {
  860. return this.s.join("")
  861. }
  862. }
  863. function getWeek($, B) {
  864. B = B || 0;
  865. var A = new Date($.y, $.M - 1, $.d + B),
  866. _ = new Date($.y, 0, 4);
  867. if ($dp.weekMethod == "ISO8601") {
  868. A.setDate(A.getDate() - (A.getDay() + 6) % 7 + 3);
  869. return Math.round((A.valueOf() - _.valueOf()) / (7 * 86400000)) + 1
  870. } else {
  871. _.setDate(1);
  872. A = Math.round((A.valueOf() - _.valueOf()) / 86400000);
  873. return Math.ceil((A + (_.getDay() + 1)) / 7)
  874. }
  875. }
  876. function getDay($) {
  877. var _ = new Date($.y, $.M - 1, $.d);
  878. return _.getDay()
  879. }
  880. function show() {
  881. setDisp(arguments, "")
  882. }
  883. function showB() {
  884. setDisp(arguments, "block")
  885. }
  886. function hide() {
  887. setDisp(arguments, "none")
  888. }
  889. function setDisp(_, $) {
  890. for (i = 0; i < _.length; i++) _[i].style.display = $
  891. }
  892. function shorH(_, $) {
  893. $ ? show(_) : hide(_)
  894. }
  895. function disHMS(_, $) {
  896. if ($) _.disabled = false;
  897. else {
  898. _.disabled = true;
  899. _.value = "00"
  900. }
  901. }
  902. function c(_, A) {
  903. var $ = A;
  904. if (_ == "M") $ = makeInRange(A, 1, 12);
  905. else if (_ == "H") $ = makeInRange(A, 0, 23);
  906. else if ("ms".indexOf(_) >= 0) $ = makeInRange(A, 0, 59);
  907. if ($sdt[_] != A && !callFunc(_ + "changing")) {
  908. var C = $c.checkRange();
  909. if (C == 0) sv(_, $);
  910. else if (C < 0) B($c.minDate);
  911. else if (C > 0) B($c.maxDate);
  912. $d.okI.disabled = !$c.checkValid($sdt);
  913. if ("yMd".indexOf(_) >= 0) $c.draw();
  914. callFunc(_ + "changed")
  915. }
  916. function B($) {
  917. _setAll($c.checkValid($) ? $: $sdt)
  918. }
  919. }
  920. function _setAll($) {
  921. sv("y", $.y);
  922. sv("M", $.M);
  923. sv("d", $.d);
  924. sv("H", $.H);
  925. sv("m", $.m);
  926. sv("s", $.s)
  927. }
  928. function day_Click(F, B, _, D, C, A) {
  929. var $ = new DPDate($dt.y, $dt.M, $dt.d, $dt.H, $dt.m, $dt.s);
  930. $dt.loadDate(F, B, _, D, C, A);
  931. if (!callFunc("onpicking")) {
  932. var E = $.y == F && $.M == B && $.d == _;
  933. if (!E && arguments.length != 0) {
  934. c("y", F);
  935. c("M", B);
  936. c("d", _);
  937. $c.currFocus = $dp.el;
  938. dealAutoUpdate()
  939. }
  940. if ($c.autoPickDate || E || arguments.length == 0) $c.pickDate()
  941. } else $dt = $
  942. }
  943. function dealAutoUpdate() {
  944. if ($dp.autoUpdateOnChanged) {
  945. $c.update();
  946. $dp.el.focus()
  947. }
  948. }
  949. function callFunc($) {
  950. var _;
  951. if ($dp[$]) _ = $dp[$].call($dp.el, $dp);
  952. return _
  953. }
  954. function sv(_, $) {
  955. if ($ == null) $ = $dt[_];
  956. $sdt[_] = $dt[_] = $;
  957. if ("yHms".indexOf(_) >= 0) $d[_ + "I"].value = $;
  958. if (_ == "M") {
  959. $d.MI["realValue"] = $;
  960. $d.MI.value = $lang.aMonStr[$ - 1]
  961. }
  962. }
  963. function makeInRange(_, $, A) {
  964. if (_ < $) _ = $;
  965. else if (_ > A) _ = A;
  966. return _
  967. }
  968. function attachTabEvent($, _) {
  969. $dp.attachEvent($, "onkeydown",
  970. function() {
  971. var $ = event,
  972. A = ($.which == undefined) ? $.keyCode: $.which;
  973. if (A == 9) _()
  974. })
  975. }
  976. function doStr($, _) {
  977. $ = $ + "";
  978. while ($.length < _) $ = "0" + $;
  979. return $
  980. }
  981. function hideSel() {
  982. hide($d.yD, $d.MD, $d.HD, $d.mD, $d.sD)
  983. }
  984. function updownEvent($) {
  985. var _ = $c.currFocus;
  986. if (_ != $d.HI && _ != $d.mI && _ != $d.sI) _ = $d.HI;
  987. switch (_) {
  988. case $d.HI:
  989. c("H", $dt.H + $);
  990. break;
  991. case $d.mI:
  992. c("m", $dt.m + $);
  993. break;
  994. case $d.sI:
  995. c("s", $dt.s + $);
  996. break
  997. }
  998. dealAutoUpdate()
  999. }
  1000. function DPDate(D, A, $, C, B, _) {
  1001. this.loadDate(D, A, $, C, B, _)
  1002. }
  1003. DPDate.prototype = {
  1004. loadDate: function(E, B, _, D, C, A) {
  1005. var $ = new Date();
  1006. this.y = pInt3(E, this.y, $.getFullYear());
  1007. this.M = pInt3(B, this.M, $.getMonth() + 1);
  1008. this.d = $dp.has.d ? pInt3(_, this.d, $.getDate()) : 1;
  1009. this.H = pInt3(D, this.H, $.getHours());
  1010. this.m = pInt3(C, this.m, $.getMinutes());
  1011. this.s = pInt3(A, this.s, $.getSeconds())
  1012. },
  1013. loadFromDate: function($) {
  1014. if ($) this.loadDate($.y, $.M, $.d, $.H, $.m, $.s)
  1015. },
  1016. coverDate: function(E, B, _, D, C, A) {
  1017. var $ = new Date();
  1018. this.y = pInt3(this.y, E, $.getFullYear());
  1019. this.M = pInt3(this.M, B, $.getMonth() + 1);
  1020. this.d = $dp.has.d ? pInt3(this.d, _, $.getDate()) : 1;
  1021. this.H = pInt3(this.H, D, $.getHours());
  1022. this.m = pInt3(this.m, C, $.getMinutes());
  1023. this.s = pInt3(this.s, A, $.getSeconds())
  1024. },
  1025. compareWith: function($, C) {
  1026. var A = "yMdHms",
  1027. _,
  1028. B;
  1029. C = A.indexOf(C);
  1030. C = C >= 0 ? C: 5;
  1031. for (var D = 0; D <= C; D++) {
  1032. B = A.charAt(D);
  1033. _ = this[B] - $[B];
  1034. if (_ > 0) return 1;
  1035. else if (_ < 0) return - 1
  1036. }
  1037. return 0
  1038. },
  1039. refresh: function() {
  1040. var $ = new Date(this.y, this.M - 1, this.d, this.H, this.m, this.s);
  1041. this.y = $.getFullYear();
  1042. this.M = $.getMonth() + 1;
  1043. this.d = $.getDate();
  1044. this.H = $.getHours();
  1045. this.m = $.getMinutes();
  1046. this.s = $.getSeconds();
  1047. return ! isNaN(this.y)
  1048. },
  1049. attr: function(_, $) {
  1050. if ("yMdHms".indexOf(_) >= 0) {
  1051. var A = this.d;
  1052. if (_ == "M") this.d = 1;
  1053. this[_] += $;
  1054. this.refresh();
  1055. this.d = A
  1056. }
  1057. }
  1058. };
  1059. function pInt($) {
  1060. return parseInt($, 10)
  1061. }
  1062. function pInt2($, _) {
  1063. return rtn(pInt($), _)
  1064. }
  1065. function pInt3($, A, _) {
  1066. return pInt2($, rtn(A, _))
  1067. }
  1068. function rtn($, _) {
  1069. return $ == null || isNaN($) ? _: $
  1070. }
  1071. function fireEvent(A, $) {
  1072. if ($IE) A.fireEvent("on" + $);
  1073. else {
  1074. var _ = document.createEvent("HTMLEvents");
  1075. _.initEvent($, true, true);
  1076. A.dispatchEvent(_)
  1077. }
  1078. }
  1079. function _foundInput($) {
  1080. var A,
  1081. B,
  1082. _ = "y,M,H,m,s,ry,rM".split(",");
  1083. for (B = 0; B < _.length; B++) {
  1084. A = _[B];
  1085. if ($d[A + "I"] == $) return A.slice(A.length - 1, A.length)
  1086. }
  1087. return 0
  1088. }
  1089. function _focus($) {
  1090. var _ = _foundInput(this);
  1091. if (!_) return;
  1092. $c.currFocus = this;
  1093. if (_ == "y") this.className = "yminputfocus";
  1094. else if (_ == "M") {
  1095. this.className = "yminputfocus";
  1096. this.value = this["realValue"]
  1097. }
  1098. this.select();
  1099. $c["_f" + _](this);
  1100. showB($d[_ + "D"])
  1101. }
  1102. function _blur(showDiv) {
  1103. var p = _foundInput(this),
  1104. isR,
  1105. mStr,
  1106. v = this.value,
  1107. oldv = $dt[p];
  1108. if (p == 0) return;
  1109. $dt[p] = Number(v) >= 0 ? Number(v) : $dt[p];
  1110. if (p == "y") {
  1111. isR = this == $d.ryI;
  1112. if (isR && $dt.M == 12) $dt.y -= 1
  1113. } else if (p == "M") {
  1114. isR = this == $d.rMI;
  1115. if (isR) {
  1116. mStr = $lang.aMonStr[$dt[p] - 1];
  1117. if (oldv == 12) $dt.y += 1;
  1118. $dt.attr("M", -1)
  1119. }
  1120. if ($sdt.M == $dt.M) this.value = mStr || $lang.aMonStr[$dt[p] - 1];
  1121. if (($sdt.y != $dt.y)) c("y", $dt.y)
  1122. }
  1123. eval("c(\"" + p + "\"," + $dt[p] + ")");
  1124. if (showDiv !== true) {
  1125. if (p == "y" || p == "M") this.className = "yminput";
  1126. hide($d[p + "D"])
  1127. }
  1128. dealAutoUpdate()
  1129. }
  1130. function _cancelKey($) {
  1131. if ($.preventDefault) {
  1132. $.preventDefault();
  1133. $.stopPropagation()
  1134. } else {
  1135. $.cancelBubble = true;
  1136. $.returnValue = false
  1137. }
  1138. if ($OPERA) $.keyCode = 0
  1139. }
  1140. function _inputBindEvent($) {
  1141. var A = $.split(",");
  1142. for (var B = 0; B < A.length; B++) {
  1143. var _ = A[B] + "I";
  1144. $d[_].onfocus = _focus;
  1145. $d[_].onblur = _blur
  1146. }
  1147. }
  1148. function _tab(M) {
  1149. var H = M.srcElement || M.target,
  1150. Q = M.which || M.keyCode;
  1151. isShow = $dp.eCont ? true: $dp.dd.style.display != "none";
  1152. if (Q >= 96 && Q <= 105) Q -= 48;
  1153. if ($dp.enableKeyboard && isShow) {
  1154. if (!H.nextCtrl) {
  1155. H.nextCtrl = $dp.focusArr[1];
  1156. $c.currFocus = $dp.el
  1157. }
  1158. if (H == $dp.el) $c.currFocus = $dp.el;
  1159. if (Q == 27) if (H == $dp.el) {
  1160. $c.close();
  1161. return
  1162. } else $dp.el.focus();
  1163. if (Q >= 37 && Q <= 40) {
  1164. var U;
  1165. if ($c.currFocus == $dp.el || $c.currFocus == $d.okI) if ($dp.has.d) {
  1166. U = "d";
  1167. if (Q == 38) $dt[U] -= 7;
  1168. else if (Q == 39) $dt[U] += 1;
  1169. else if (Q == 37) $dt[U] -= 1;
  1170. else $dt[U] += 7;
  1171. $dt.refresh();
  1172. c("y", $dt["y"]);
  1173. c("M", $dt["M"]);
  1174. c("d", $dt[U]);
  1175. _cancelKey(M);
  1176. return
  1177. } else {
  1178. U = $dp.has.minUnit;
  1179. $d[U + "I"].focus()
  1180. }
  1181. U = U || _foundInput($c.currFocus);
  1182. if (U) {
  1183. if (Q == 38 || Q == 39) $dt[U] += 1;
  1184. else $dt[U] -= 1;
  1185. $dt.refresh();
  1186. $c.currFocus.value = $dt[U];
  1187. _blur.call($c.currFocus, true);
  1188. $c.currFocus.select()
  1189. }
  1190. } else if (Q == 9) {
  1191. var D = H.nextCtrl;
  1192. for (var R = 0; R < $dp.focusArr.length; R++) if (D.disabled == true || D.offsetHeight == 0) D = D.nextCtrl;
  1193. else break;
  1194. if ($c.currFocus != D) {
  1195. $c.currFocus = D;
  1196. D.focus()
  1197. }
  1198. } else if (Q == 13) {
  1199. _blur.call($c.currFocus);
  1200. if ($c.currFocus.type == "button") $c.currFocus.click();
  1201. else $c.pickDate();
  1202. $c.currFocus = $dp.el
  1203. }
  1204. } else if (Q == 9 && H == $dp.el) $c.close();
  1205. if ($dp.enableInputMask && !$OPERA && !$dp.readOnly && $c.currFocus == $dp.el && (Q >= 48 && Q <= 57)) {
  1206. var T = $dp.el,
  1207. S = T.value,
  1208. F = E(T),
  1209. I = {
  1210. str: "",
  1211. arr: []
  1212. },
  1213. R = 0,
  1214. K,
  1215. N = 0,
  1216. X = 0,
  1217. O = 0,
  1218. J,
  1219. _ = /yyyy|yyy|yy|y|MM|M|dd|d|%ld|HH|H|mm|m|ss|s|WW|W|w/g,
  1220. L = $dp.dateFmt.match(_),
  1221. B,
  1222. A,
  1223. $,
  1224. V,
  1225. W,
  1226. G,
  1227. J = 0;
  1228. if (S != "") {
  1229. O = S.match(/[0-9]/g);
  1230. O = O == null ? 0: O.length;
  1231. for (R = 0; R < L.length; R++) O -= Math.max(L[R].length, 2);
  1232. O = O >= 0 ? 1: 0;
  1233. if (O == 1 && F >= S.length) F = S.length - 1
  1234. }
  1235. S = S.substring(0, F) + String.fromCharCode(Q) + S.substring(F + O);
  1236. F++;
  1237. for (R = 0; R < S.length; R++) {
  1238. var C = S.charAt(R);
  1239. if (/[0-9]/.test(C)) I.str += C;
  1240. else I.arr[R] = 1
  1241. }
  1242. S = "";
  1243. _.lastIndex = 0;
  1244. while ((K = _.exec($dp.dateFmt)) !== null) {
  1245. X = K.index - (K[0] == "%ld" ? 1: 0);
  1246. if (N >= 0) {
  1247. S += $dp.dateFmt.substring(N, X);
  1248. if (F >= N + J && F <= X + J) F += X - N
  1249. }
  1250. N = _.lastIndex;
  1251. G = N - X;
  1252. B = I.str.substring(0, G);
  1253. A = K[0].charAt(0);
  1254. $ = pInt(B.charAt(0));
  1255. if (I.str.length > 1) {
  1256. V = I.str.charAt(1);
  1257. W = $ * 10 + pInt(V)
  1258. } else {
  1259. V = "";
  1260. W = $
  1261. }
  1262. if (I.arr[X + 1] || A == "M" && W > 12 || A == "d" && W > 31 || A == "H" && W > 23 || "ms".indexOf(A) >= 0 && W > 59) {
  1263. if (K[0].length == 2) B = "0" + $;
  1264. else B = $;
  1265. F++
  1266. } else if (G == 1) {
  1267. B = W;
  1268. G++;
  1269. J++
  1270. }
  1271. S += B;
  1272. I.str = I.str.substring(G);
  1273. if (I.str == "") break
  1274. }
  1275. T.value = S;
  1276. P(T, F);
  1277. _cancelKey(M)
  1278. }
  1279. if (isShow && $c.currFocus != $dp.el && !((Q >= 48 && Q <= 57) || Q == 8 || Q == 46)) _cancelKey(M);
  1280. function E(A) {
  1281. var _ = 0;
  1282. if ($dp.win.document.selection) {
  1283. var B = $dp.win.document.selection.createRange(),
  1284. $ = B.text.length;
  1285. B.moveStart("character", -A.value.length);
  1286. _ = B.text.length - $
  1287. } else if (A.selectionStart || A.selectionStart == "0") _ = A.selectionStart;
  1288. return _
  1289. }
  1290. function P(_, A) {
  1291. if (_.setSelectionRange) {
  1292. _.focus();
  1293. _.setSelectionRange(A, A)
  1294. } else if (_.createTextRange) {
  1295. var $ = _.createTextRange();
  1296. $.collapse(true);
  1297. $.moveEnd("character", A);
  1298. $.moveStart("character", A);
  1299. $.select()
  1300. }
  1301. }
  1302. }
  1303. document.ready = 1