/aspnet_client/system_web/2_0_50727/CrystalReportWebFormViewer3/js/calendar_param.js

http://github.com/khaneh/Orders · JavaScript · 701 lines · 421 code · 150 blank · 130 comment · 79 complexity · 4d1d197967328c7ddc82d32f6ba8dac9 MD5 · raw file

  1. // Modified Date: 11/30/1999
  2. // Modified By: Robert W. Husted
  3. // Notes: Added frameset support (changed reference for "newWin" to "top.newWin")
  4. // Also changed Spanish "March" from "Marcha" to "Marzo"
  5. // Fixed JavaScript Date Anomaly affecting days > 28
  6. //
  7. // Modified by Crystal Decisions
  8. // Removed large amounts of comments to shrink file size.
  9. // Removed multi language support as language set by user as accept-language and navigator.language don't necessarily match
  10. // Removed formatting code as only format wanted is for Crystal Reports Date/DateTime parameters
  11. // Moved resource strings to top of file for translation
  12. // Added A.whatever:visited styles so that followed links appear as if they weren't followed
  13. // BEGIN USER-EDITABLE SECTION -----------------------------------------------------
  14. // CALENDAR COLORS
  15. topBackground = "black"; // BG COLOR OF THE TOP FRAME
  16. bottomBackground = "white"; // BG COLOR OF THE BOTTOM FRAME
  17. tableBGColor = "black"; // BG COLOR OF THE BOTTOM FRAME'S TABLE
  18. cellColor = "lightgrey"; // TABLE CELL BG COLOR OF THE DATE CELLS IN THE BOTTOM FRAME
  19. headingCellColor = "white"; // TABLE CELL BG COLOR OF THE WEEKDAY ABBREVIATIONS
  20. headingTextColor = "black"; // TEXT COLOR OF THE WEEKDAY ABBREVIATIONS
  21. dateColor = "blue"; // TEXT COLOR OF THE LISTED DATES (1-28+)
  22. focusColor = "#ff0000"; // TEXT COLOR OF THE SELECTED DATE (OR CURRENT DATE)
  23. hoverColor = "darkred"; // TEXT COLOR OF A LINK WHEN YOU HOVER OVER IT
  24. fontStyle = "12pt arial, helvetica"; // TEXT STYLE FOR DATES
  25. headingFontStyle = "bold 12pt arial, helvetica"; // TEXT STYLE FOR WEEKDAY ABBREVIATIONS
  26. // FORMATTING PREFERENCES
  27. bottomBorder = false; // TRUE/FALSE (WHETHER TO DISPLAY BOTTOM CALENDAR BORDER)
  28. tableBorder = 0; // SIZE OF CALENDAR TABLE BORDER (BOTTOM FRAME) 0=none
  29. var DateTimeFormat = true; //"DateTime" if true, else a "Date"
  30. // END USER-EDITABLE SECTION -------------------------------------------------------
  31. // DETERMINE BROWSER BRAND
  32. var isNav = false;
  33. var isIE = false;
  34. // ASSUME IT'S EITHER NETSCAPE OR MSIE
  35. if (navigator.appName == "Netscape") {
  36. isNav = true;
  37. }
  38. else {
  39. isIE = true;
  40. }
  41. // global variable for top frame and bottom frame
  42. var calDocTop;
  43. var calDocBottom;
  44. // PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER
  45. buildCalParts();
  46. // CALENDAR FUNCTIONS BEGIN HERE ---------------------------------------------------
  47. // SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD
  48. function setDateField(formName, dateField, hiddenField) {
  49. // ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE
  50. thisform = document.forms[formName];
  51. calDateField = thisform[dateField];
  52. calHiddenField = thisform[hiddenField];
  53. // GET THE VALUE OF THE INCOMING FIELD
  54. inDate = thisform[hiddenField].value;
  55. // SET calDate TO THE DATE IN THE INCOMING FIELD OR DEFAULT TO TODAY'S DATE
  56. setInitialDate();
  57. // THE CALENDAR FRAMESET DOCUMENTS ARE CREATED BY JAVASCRIPT FUNCTIONS
  58. calDocTop = buildTopCalFrame();
  59. calDocBottom = buildBottomCalFrame();
  60. }
  61. // SET THE INITIAL CALENDAR DATE TO TODAY OR TO THE EXISTING VALUE IN dateField
  62. function setInitialDate() {
  63. calDate = ParseDate(inDate, DateTimeFormat);
  64. // IF THE INCOMING DATE IS INVALID, USE THE CURRENT DATE
  65. if (isNaN(calDate)) {
  66. // ADD CUSTOM DATE PARSING HERE
  67. // IF IT FAILS, SIMPLY CREATE A NEW DATE OBJECT WHICH DEFAULTS TO THE CURRENT DATE
  68. calDate = new Date();
  69. }
  70. // KEEP TRACK OF THE CURRENT DAY VALUE
  71. calDay = calDate.getDate();
  72. // SET DAY VALUE TO 1... TO AVOID JAVASCRIPT DATE CALCULATION ANOMALIES
  73. // (IF THE MONTH CHANGES TO FEB AND THE DAY IS 30, THE MONTH WOULD CHANGE TO MARCH
  74. // AND THE DAY WOULD CHANGE TO 2. SETTING THE DAY TO 1 WILL PREVENT THAT)
  75. calDate.setDate(1);
  76. }
  77. // CREATE THE TOP CALENDAR FRAME
  78. function buildTopCalFrame() {
  79. // CREATE THE TOP FRAME OF THE CALENDAR
  80. var calDoc =
  81. "<HTML>" +
  82. "<HEAD>" +
  83. "</HEAD>" +
  84. "<BODY BGCOLOR='" + topBackground + "'>" +
  85. "<FORM NAME='calControl' onSubmit='return false;'>" +
  86. "<CENTER>" +
  87. "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0 WIDTH=100%>" +
  88. "<TR><TD COLSPAN=7>" +
  89. "<CENTER>" +
  90. getMonthSelect() +
  91. "<INPUT NAME='year' VALUE='" + calDate.getFullYear() + "'TYPE=TEXT SIZE=4 MAXLENGTH=4 onKeyDown='parent.opener.keydownfn(event, \"setYear\", \"\");' onChange='parent.opener.setYear()'>" +
  92. "</CENTER>" +
  93. "</TD>" +
  94. "</TR>" +
  95. "<TR>" +
  96. "<TD COLSPAN=7>" +
  97. "<CENTER>" +
  98. "<INPUT " +
  99. "TYPE=BUTTON NAME='previousYear' VALUE='<<' onClick='parent.opener.setPreviousYear()'><INPUT " +
  100. "TYPE=BUTTON NAME='previousMonth' VALUE=' < ' onClick='parent.opener.setPreviousMonth()'><INPUT " +
  101. "TYPE=BUTTON NAME='today' VALUE='" + L_Today + "' onClick='parent.opener.setToday()'><INPUT " +
  102. "TYPE=BUTTON NAME='nextMonth' VALUE=' > ' onClick='parent.opener.setNextMonth()'><INPUT " +
  103. "TYPE=BUTTON NAME='nextYear' VALUE='>>' onClick='parent.opener.setNextYear()'>" +
  104. "</CENTER>" +
  105. "</TD>" +
  106. "</TR>" +
  107. "</TABLE>" +
  108. "</CENTER>" +
  109. "</FORM>" +
  110. "</BODY>" +
  111. "</HTML>";
  112. return calDoc;
  113. }
  114. // CREATE THE BOTTOM CALENDAR FRAME
  115. // (THE MONTHLY CALENDAR)
  116. function buildBottomCalFrame() {
  117. // START CALENDAR DOCUMENT
  118. var calDoc = calendarBegin;
  119. // GET MONTH, AND YEAR FROM GLOBAL CALENDAR DATE
  120. month = calDate.getMonth();
  121. year = calDate.getFullYear();
  122. // GET GLOBALLY-TRACKED DAY VALUE (PREVENTS JAVASCRIPT DATE ANOMALIES)
  123. day = calDay;
  124. var i = 0;
  125. // DETERMINE THE NUMBER OF DAYS IN THE CURRENT MONTH
  126. var days = getDaysInMonth();
  127. // IF GLOBAL DAY VALUE IS > THAN DAYS IN MONTH, HIGHLIGHT LAST DAY IN MONTH
  128. if (day > days) {
  129. day = days;
  130. }
  131. // DETERMINE WHAT DAY OF THE WEEK THE CALENDAR STARTS ON
  132. var firstOfMonth = new Date (year, month, 1);
  133. // GET THE DAY OF THE WEEK THE FIRST DAY OF THE MONTH FALLS ON
  134. var startingPos = firstOfMonth.getDay();
  135. days += startingPos;
  136. // KEEP TRACK OF THE COLUMNS, START A NEW ROW AFTER EVERY 7 COLUMNS
  137. var columnCount = 0;
  138. // MAKE BEGINNING NON-DATE CELLS BLANK
  139. for (i = 0; i < startingPos; i++) {
  140. calDoc += blankCell;
  141. columnCount++;
  142. }
  143. // SET VALUES FOR DAYS OF THE MONTH
  144. var currentDay = 0;
  145. var dayType = "weekday";
  146. // DATE CELLS CONTAIN A NUMBER
  147. for (i = startingPos; i < days; i++) {
  148. var paddingChar = "&nbsp;";
  149. // ADJUST SPACING SO THAT ALL LINKS HAVE RELATIVELY EQUAL WIDTHS
  150. if (i-startingPos+1 < 10) {
  151. padding = "&nbsp;&nbsp;";
  152. }
  153. else {
  154. padding = "&nbsp;";
  155. }
  156. // GET THE DAY CURRENTLY BEING WRITTEN
  157. currentDay = i-startingPos+1;
  158. // SET THE TYPE OF DAY, THE focusDay GENERALLY APPEARS AS A DIFFERENT COLOR
  159. if (currentDay == day) {
  160. dayType = "focusDay";
  161. }
  162. else {
  163. dayType = "weekDay";
  164. }
  165. // ADD THE DAY TO THE CALENDAR STRING
  166. calDoc += "<TD align=center bgcolor='" + cellColor + "'>" +
  167. "<a class='" + dayType + "' href='javascript:parent.opener.returnDate(" +
  168. currentDay + ")'>" + padding + currentDay + paddingChar + "</a></TD>";
  169. columnCount++;
  170. // START A NEW ROW WHEN NECESSARY
  171. if (columnCount % 7 == 0) {
  172. calDoc += "</TR><TR>";
  173. }
  174. }
  175. // MAKE REMAINING NON-DATE CELLS BLANK
  176. for (i=days; i<42; i++) {
  177. calDoc += blankCell;
  178. columnCount++;
  179. // START A NEW ROW WHEN NECESSARY
  180. if (columnCount % 7 == 0) {
  181. calDoc += "</TR>";
  182. if (i<41) {
  183. calDoc += "<TR>";
  184. }
  185. }
  186. }
  187. // FINISH THE NEW CALENDAR PAGE
  188. calDoc += calendarEnd;
  189. // RETURN THE COMPLETED CALENDAR PAGE
  190. return calDoc;
  191. }
  192. // WRITE THE MONTHLY CALENDAR TO THE BOTTOM CALENDAR FRAME
  193. function writeCalendar() {
  194. // CREATE THE NEW CALENDAR FOR THE SELECTED MONTH & YEAR
  195. calDocBottom = buildBottomCalFrame();
  196. if (document.getElementById) { // ns6 & ie
  197. top.newWin.frames['bottomCalFrame'].document.getElementById('bottomDiv').innerHTML = calDocBottom;
  198. } else {
  199. // WRITE THE NEW CALENDAR TO THE BOTTOM FRAME
  200. top.newWin.frames['bottomCalFrame'].document.open();
  201. top.newWin.frames['bottomCalFrame'].document.write(calDocBottom);
  202. top.newWin.frames['bottomCalFrame'].document.close();
  203. }
  204. }
  205. // SET THE CALENDAR TO TODAY'S DATE AND DISPLAY THE NEW CALENDAR
  206. function setToday() {
  207. // SET GLOBAL DATE TO TODAY'S DATE
  208. calDate = new Date();
  209. // SET DAY MONTH AND YEAR TO TODAY'S DATE
  210. var month = calDate.getMonth();
  211. var year = calDate.getFullYear();
  212. // SET MONTH IN DROP-DOWN LIST
  213. top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
  214. // SET YEAR VALUE
  215. top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
  216. // SET THE DAY VALUE
  217. calDay = calDate.getDate();
  218. // DISPLAY THE NEW CALENDAR
  219. writeCalendar();
  220. }
  221. // SET THE GLOBAL DATE TO THE NEWLY ENTERED YEAR AND REDRAW THE CALENDAR
  222. function setYear() {
  223. // GET THE NEW YEAR VALUE
  224. var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;
  225. // IF IT'S A FOUR-DIGIT YEAR THEN CHANGE THE CALENDAR
  226. if (isFourDigitYear(year)) {
  227. calDate.setFullYear(year);
  228. writeCalendar();
  229. top.newWin.frames['topCalFrame'].document.calControl.year.blur();
  230. }
  231. else {
  232. // HIGHLIGHT THE YEAR IF THE YEAR IS NOT FOUR DIGITS IN LENGTH
  233. top.newWin.frames['topCalFrame'].document.calControl.year.focus();
  234. top.newWin.frames['topCalFrame'].document.calControl.year.select();
  235. }
  236. }
  237. // SET THE GLOBAL DATE TO THE SELECTED MONTH AND REDRAW THE CALENDAR
  238. function setCurrentMonth() {
  239. // GET THE NEWLY SELECTED MONTH AND CHANGE THE CALENDAR ACCORDINGLY
  240. var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;
  241. calDate.setMonth(month);
  242. writeCalendar();
  243. }
  244. // SET THE GLOBAL DATE TO THE PREVIOUS YEAR AND REDRAW THE CALENDAR
  245. function setPreviousYear() {
  246. var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;
  247. if (isFourDigitYear(year) && year > 1000) {
  248. year--;
  249. calDate.setFullYear(year);
  250. top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
  251. writeCalendar();
  252. }
  253. }
  254. // SET THE GLOBAL DATE TO THE PREVIOUS MONTH AND REDRAW THE CALENDAR
  255. function setPreviousMonth() {
  256. var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;
  257. if (isFourDigitYear(year)) {
  258. var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;
  259. // IF MONTH IS JANUARY, SET MONTH TO DECEMBER AND DECREMENT THE YEAR
  260. if (month == 0) {
  261. month = 11;
  262. if (year > 1000) {
  263. year--;
  264. calDate.setFullYear(year);
  265. top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
  266. }
  267. }
  268. else {
  269. month--;
  270. }
  271. calDate.setMonth(month);
  272. top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
  273. writeCalendar();
  274. }
  275. }
  276. // SET THE GLOBAL DATE TO THE NEXT MONTH AND REDRAW THE CALENDAR
  277. function setNextMonth() {
  278. var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;
  279. if (isFourDigitYear(year)) {
  280. var month = top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex;
  281. // IF MONTH IS DECEMBER, SET MONTH TO JANUARY AND INCREMENT THE YEAR
  282. if (month == 11) {
  283. month = 0;
  284. year++;
  285. calDate.setFullYear(year);
  286. top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
  287. }
  288. else {
  289. month++;
  290. }
  291. calDate.setMonth(month);
  292. top.newWin.frames['topCalFrame'].document.calControl.month.selectedIndex = month;
  293. writeCalendar();
  294. }
  295. }
  296. // SET THE GLOBAL DATE TO THE NEXT YEAR AND REDRAW THE CALENDAR
  297. function setNextYear() {
  298. var year = top.newWin.frames['topCalFrame'].document.calControl.year.value;
  299. if (isFourDigitYear(year)) {
  300. year++;
  301. calDate.setFullYear(year);
  302. top.newWin.frames['topCalFrame'].document.calControl.year.value = year;
  303. writeCalendar();
  304. }
  305. }
  306. // GET NUMBER OF DAYS IN MONTH
  307. function getDaysInMonth() {
  308. var days;
  309. var month = calDate.getMonth()+1;
  310. var year = calDate.getFullYear();
  311. // RETURN 31 DAYS
  312. if (month==1 || month==3 || month==5 || month==7 || month==8 ||
  313. month==10 || month==12) {
  314. days=31;
  315. }
  316. // RETURN 30 DAYS
  317. else if (month==4 || month==6 || month==9 || month==11) {
  318. days=30;
  319. }
  320. // RETURN 29 DAYS
  321. else if (month==2) {
  322. if (isLeapYear(year)) {
  323. days=29;
  324. }
  325. // RETURN 28 DAYS
  326. else {
  327. days=28;
  328. }
  329. }
  330. return (days);
  331. }
  332. // CHECK TO SEE IF YEAR IS A LEAP YEAR
  333. function isLeapYear (Year) {
  334. if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
  335. return (true);
  336. }
  337. else {
  338. return (false);
  339. }
  340. }
  341. // ENSURE THAT THE YEAR IS FOUR DIGITS IN LENGTH
  342. function isFourDigitYear(year) {
  343. if (year == null || year.match(/^[0-9]{4}$/) == null){
  344. top.newWin.frames['topCalFrame'].document.calControl.year.value = calDate.getFullYear();
  345. top.newWin.frames['topCalFrame'].document.calControl.year.select();
  346. top.newWin.frames['topCalFrame'].document.calControl.year.focus();
  347. }
  348. else {
  349. return true;
  350. }
  351. }
  352. // BUILD THE MONTH SELECT LIST
  353. function getMonthSelect() {
  354. monthArray = new Array(L_January, L_February, L_March, L_April, L_May, L_June,
  355. L_July, L_August, L_September, L_October, L_November, L_December);
  356. // DETERMINE MONTH TO SET AS DEFAULT
  357. var activeMonth = calDate.getMonth();
  358. // START HTML SELECT LIST ELEMENT
  359. monthSelect = "<SELECT NAME='month' onChange='parent.opener.setCurrentMonth()'>";
  360. // LOOP THROUGH MONTH ARRAY
  361. for (i in monthArray) {
  362. // SHOW THE CORRECT MONTH IN THE SELECT LIST
  363. if (i == activeMonth) {
  364. monthSelect += "<OPTION SELECTED>" + monthArray[i] + "\n";
  365. }
  366. else {
  367. monthSelect += "<OPTION>" + monthArray[i] + "\n";
  368. }
  369. }
  370. monthSelect += "</SELECT>";
  371. // RETURN A STRING VALUE WHICH CONTAINS A SELECT LIST OF ALL 12 MONTHS
  372. return monthSelect;
  373. }
  374. // SET DAYS OF THE WEEK DEPENDING ON LANGUAGE
  375. function createWeekdayList() {
  376. weekdayArray = new Array(L_Su,L_Mo,L_Tu,L_We,L_Th,L_Fr,L_Sa);
  377. // START HTML TO HOLD WEEKDAY NAMES IN TABLE FORMAT
  378. var weekdays = "<TR BGCOLOR='" + headingCellColor + "'>";
  379. // LOOP THROUGH WEEKDAY ARRAY
  380. for (i in weekdayArray) {
  381. weekdays += "<TD class='heading' align=center>" + weekdayArray[i] + "</TD>";
  382. }
  383. weekdays += "</TR>";
  384. // RETURN TABLE ROW OF WEEKDAY ABBREVIATIONS TO DISPLAY ABOVE THE CALENDAR
  385. return weekdays;
  386. }
  387. // PRE-BUILD PORTIONS OF THE CALENDAR (FOR PERFORMANCE REASONS)
  388. function buildCalParts() {
  389. // GENERATE WEEKDAY HEADERS FOR THE CALENDAR
  390. weekdays = createWeekdayList();
  391. // BUILD THE BLANK CELL ROWS
  392. blankCell = "<TD align=center bgcolor='" + cellColor + "'>&nbsp;&nbsp;&nbsp;</TD>";
  393. // BUILD THE TOP PORTION OF THE CALENDAR PAGE USING CSS TO CONTROL SOME DISPLAY ELEMENTS
  394. calendarBegin =
  395. "<HTML>" +
  396. "<HEAD>" +
  397. // STYLESHEET DEFINES APPEARANCE OF CALENDAR
  398. "<STYLE type='text/css'>" +
  399. "<!--" +
  400. "TD.heading { text-decoration: none; color:" + headingTextColor + "; font: " + headingFontStyle + "; }" +
  401. "A.focusDay:link { color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
  402. "A.focusDay:hover { color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
  403. "A.focusDay:visited { color: " + focusColor + "; text-decoration: none; font: " + fontStyle + "; }" +
  404. "A.weekday:link { color: " + dateColor + "; text-decoration: none; font: " + fontStyle + "; }" +
  405. "A.weekday:hover { color: " + hoverColor + "; font: " + fontStyle + "; }" +
  406. "A.weekday:visited { color: " + dateColor + "; text-decoration: none; font: " + fontStyle + "; }" +
  407. "-->" +
  408. "</STYLE>" +
  409. "</HEAD>" +
  410. "<BODY BGCOLOR='" + bottomBackground + "' onload='javascript:self.focus()'>";
  411. if (document.getElementById) { // ns6 & ie
  412. calendarBegin +=
  413. "<DIV ID='bottomDiv'>";
  414. }
  415. calendarBegin +=
  416. "<CENTER>";
  417. // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE TABLE OUTLINES PROPERLY
  418. if (isNav) {
  419. calendarBegin +=
  420. "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'><TR><TD>";
  421. }
  422. // BUILD WEEKDAY HEADINGS
  423. calendarBegin +=
  424. "<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=" + tableBorder + " ALIGN=CENTER BGCOLOR='" + tableBGColor + "'>" +
  425. weekdays +
  426. "<TR>";
  427. // BUILD THE BOTTOM PORTION OF THE CALENDAR PAGE
  428. calendarEnd = "";
  429. // WHETHER OR NOT TO DISPLAY A THICK LINE BELOW THE CALENDAR
  430. if (bottomBorder) {
  431. calendarEnd += "<TR></TR>";
  432. }
  433. // NAVIGATOR NEEDS A TABLE CONTAINER TO DISPLAY THE BORDERS PROPERLY
  434. if (isNav) {
  435. calendarEnd += "</TD></TR></TABLE>";
  436. }
  437. // END THE TABLE AND HTML DOCUMENT
  438. calendarEnd +=
  439. "</TABLE>" +
  440. "</CENTER>";
  441. if (document.getElementById) { // ns6 & ie
  442. calendarEnd +=
  443. "</DIV>";
  444. }
  445. calendarEnd +=
  446. "</BODY>" +
  447. "</HTML>";
  448. }
  449. // REPLACE ALL INSTANCES OF find WITH replace
  450. // inString: the string you want to convert
  451. // find: the value to search for
  452. // replace: the value to substitute
  453. //
  454. // usage: jsReplace(inString, find, replace);
  455. // example: jsReplace("To be or not to be", "be", "ski");
  456. // result: "To ski or not to ski"
  457. //
  458. function jsReplace(inString, find, replace) {
  459. var outString = "";
  460. if (!inString) {
  461. return "";
  462. }
  463. // REPLACE ALL INSTANCES OF find WITH replace
  464. if (inString.indexOf(find) != -1) {
  465. // SEPARATE THE STRING INTO AN ARRAY OF STRINGS USING THE VALUE IN find
  466. t = inString.split(find);
  467. // JOIN ALL ELEMENTS OF THE ARRAY, SEPARATED BY THE VALUE IN replace
  468. return (t.join(replace));
  469. }
  470. else {
  471. return inString;
  472. }
  473. }
  474. // JAVASCRIPT FUNCTION -- DOES NOTHING (USED FOR THE HREF IN THE CALENDAR CALL)
  475. function doNothing() {
  476. }
  477. // ENSURE THAT VALUE IS TWO DIGITS IN LENGTH
  478. function makeTwoDigit(inValue) {
  479. var numVal = parseInt(inValue, 10);
  480. // VALUE IS LESS THAN TWO DIGITS IN LENGTH
  481. if (numVal < 10) {
  482. // ADD A LEADING ZERO TO THE VALUE AND RETURN IT
  483. return("0" + numVal);
  484. }
  485. else {
  486. return numVal;
  487. }
  488. }
  489. // SET FIELD VALUE TO THE DATE SELECTED AND CLOSE THE CALENDAR WINDOW
  490. function returnDate(inDay)
  491. {
  492. // inDay = THE DAY THE USER CLICKED ON
  493. calDate.setDate(inDay);
  494. // SET THE DATE RETURNED TO THE USER
  495. var day = calDate.getDate();
  496. var month = calDate.getMonth()+1;
  497. var year = calDate.getFullYear();
  498. // SET THE VALUE OF THE FIELD THAT WAS PASSED TO THE CALENDAR
  499. var dt = new Date(year, month - 1, day, 0, 0, 0);
  500. calDateField.value = GLDT(dt,true, false);
  501. calHiddenField.value = "Date(";
  502. calHiddenField.value += year;
  503. calHiddenField.value += ",";
  504. calHiddenField.value += month;
  505. calHiddenField.value += ",";
  506. calHiddenField.value += day;
  507. calHiddenField.value += ")";
  508. // GIVE FOCUS BACK TO THE DATE FIELD
  509. calDateField.focus();
  510. // CLOSE THE CALENDAR WINDOW
  511. top.newWin.close()
  512. }
  513. var gHour = "0";
  514. var gMin = "0";
  515. var gSec = "0";
  516. var regDateTimePrompt = /^(D|d)(A|a)(T|t)(E|e)(T|t)(I|i)(M|m)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *, *([0-1]?\d|2[0-3]) *, *[0-5]?\d *, *[0-5]?\d *\)$/
  517. function ParseDateTimePrompt(inDate)
  518. {
  519. if ( regDateTimePrompt.test ( inDate ) )
  520. {
  521. var sDate = inDate.substr ( inDate.indexOf("(")+1 ); //move past "DateTime ("
  522. sDate = sDate.substr ( 0, sDate.lastIndexOf(")") ); //remove trailing ")"
  523. var dateArray = sDate.split (',');
  524. var _date = new Date ( dateArray[0], Number(dateArray[1]) - 1, dateArray[2] );
  525. gHour = dateArray[3]; gMin = dateArray[4]; gSec = dateArray[5];
  526. return _date;
  527. }
  528. return new Date ();
  529. }
  530. var regDatePrompt = /^(D|d)(A|a)(T|t)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *\)$/
  531. function ParseDatePrompt(inDate)
  532. {
  533. if ( regDatePrompt.test ( inDate ) )
  534. {
  535. var sDate = inDate.substr ( inDate.indexOf("(")+1 ); //move past "Date ("
  536. sDate = sDate.substr ( 0, sDate.lastIndexOf(")") ); //remove trailing ")"
  537. var dateArray = sDate.split (',');
  538. return new Date ( dateArray[0], Number(dateArray[1]) - 1, dateArray[2] );
  539. }
  540. return new Date();
  541. }
  542. function ParseDate(inDate, bDateTimeFormat)
  543. {
  544. var result;
  545. if (bDateTimeFormat == true) {
  546. result = ParseDateTimePrompt(inDate);
  547. } else {
  548. result = ParseDatePrompt(inDate);
  549. }
  550. return result;
  551. }