calendar-setup.js
上传用户:yantgcom
上传日期:2013-07-19
资源大小:478k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

PHP

  1. Calendar.setup = function (params) {
  2. function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
  3. param_default("inputField",     null);
  4. param_default("displayArea",    null);
  5. param_default("button",         null);
  6. param_default("eventName",      "click");
  7. param_default("ifFormat",       "%Y/%m/%d");
  8. param_default("daFormat",       "%Y/%m/%d");
  9. param_default("singleClick",    true);
  10. param_default("disableFunc",    null);
  11. param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined
  12. param_default("dateText",       null);
  13. param_default("firstDay",       null);
  14. param_default("align",          "Br");
  15. param_default("range",          [1900, 2999]);
  16. param_default("weekNumbers",    true);
  17. param_default("flat",           null);
  18. param_default("flatCallback",   null);
  19. param_default("onSelect",       null);
  20. param_default("onClose",        null);
  21. param_default("onUpdate",       null);
  22. param_default("date",           null);
  23. param_default("showsTime",      false);
  24. param_default("timeFormat",     "24");
  25. param_default("electric",       true);
  26. param_default("step",           2);
  27. param_default("position",       null);
  28. param_default("cache",          false);
  29. param_default("showOthers",     false);
  30. param_default("multiple",       null);
  31. var tmp = ["inputField", "displayArea", "button"];
  32. for (var i in tmp) {
  33. if (typeof params[tmp[i]] == "string") {
  34. params[tmp[i]] = document.getElementById(params[tmp[i]]);
  35. }
  36. }
  37. if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
  38. alert("Calendar.setup:n  Nothing to setup (no fields found).  Please check your code");
  39. return false;
  40. }
  41. function onSelect(cal) {
  42. var p = cal.params;
  43. var update = (cal.dateClicked || p.electric);
  44. if (update && p.inputField) {
  45. p.inputField.value = cal.date.print(p.ifFormat);
  46. if (typeof p.inputField.onchange == "function")
  47. p.inputField.onchange();
  48. }
  49. if (update && p.displayArea)
  50. p.displayArea.innerHTML = cal.date.print(p.daFormat);
  51. if (update && typeof p.onUpdate == "function")
  52. p.onUpdate(cal);
  53. if (update && p.flat) {
  54. if (typeof p.flatCallback == "function")
  55. p.flatCallback(cal);
  56. }
  57. if (update && p.singleClick && cal.dateClicked)
  58. cal.callCloseHandler();
  59. };
  60. if (params.flat != null) {
  61. if (typeof params.flat == "string")
  62. params.flat = document.getElementById(params.flat);
  63. if (!params.flat) {
  64. alert("Calendar.setup:n  Flat specified but can't find parent.");
  65. return false;
  66. }
  67. var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
  68. cal.showsOtherMonths = params.showOthers;
  69. cal.showsTime = params.showsTime;
  70. cal.time24 = (params.timeFormat == "24");
  71. cal.params = params;
  72. cal.weekNumbers = params.weekNumbers;
  73. cal.setRange(params.range[0], params.range[1]);
  74. cal.setDateStatusHandler(params.dateStatusFunc);
  75. cal.getDateText = params.dateText;
  76. if (params.ifFormat) {
  77. cal.setDateFormat(params.ifFormat);
  78. }
  79. if (params.inputField && typeof params.inputField.value == "string") {
  80. cal.parseDate(params.inputField.value);
  81. }
  82. cal.create(params.flat);
  83. cal.show();
  84. return false;
  85. }
  86. var triggerEl = params.button || params.displayArea || params.inputField;
  87. triggerEl["on" + params.eventName] = function() {
  88. var dateEl = params.inputField || params.displayArea;
  89. var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
  90. var mustCreate = false;
  91. var cal = window.calendar;
  92. if (dateEl)
  93. params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
  94. if (!(cal && params.cache)) {
  95. window.calendar = cal = new Calendar(params.firstDay,
  96.      params.date,
  97.      params.onSelect || onSelect,
  98.      params.onClose || function(cal) { cal.hide(); });
  99. cal.showsTime = params.showsTime;
  100. cal.time24 = (params.timeFormat == "24");
  101. cal.weekNumbers = params.weekNumbers;
  102. mustCreate = true;
  103. } else {
  104. if (params.date)
  105. cal.setDate(params.date);
  106. cal.hide();
  107. }
  108. if (params.multiple) {
  109. cal.multiple = {};
  110. for (var i = params.multiple.length; --i >= 0;) {
  111. var d = params.multiple[i];
  112. var ds = d.print("%Y%m%d");
  113. cal.multiple[ds] = d;
  114. }
  115. }
  116. cal.showsOtherMonths = params.showOthers;
  117. cal.yearStep = params.step;
  118. cal.setRange(params.range[0], params.range[1]);
  119. cal.params = params;
  120. cal.setDateStatusHandler(params.dateStatusFunc);
  121. cal.getDateText = params.dateText;
  122. cal.setDateFormat(dateFmt);
  123. if (mustCreate)
  124. cal.create();
  125. cal.refresh();
  126. if (!params.position)
  127. cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
  128. else
  129. cal.showAt(params.position[0], params.position[1]);
  130. return false;
  131. };
  132. return cal;
  133. };