Date.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| BI and PM: prmt
  5. *| (C) Copyright IBM Corp. 2002, 2020
  6. *|
  7. *| US Government Users Restricted Rights - Use, duplication or
  8. *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. *|
  10. *+------------------------------------------------------------------------+
  11. */
  12. /**
  13. @class
  14. @private
  15. */
  16. cognos.Prompt.Control.Date = cognos.Prompt.Control.f_extend({
  17. f_initialize: function( v_oProps ) {
  18. this[K_PRMT_LABEL_RANGE_LOWEST] = PMT_RNG_EARLIEST_DATE;
  19. this[K_PRMT_LABEL_RANGE_HIGHEST] = PMT_RNG_LATEST_DATE;
  20. this._type_ = "cognos.Prompt.Control.Date";
  21. this.f_parent( v_oProps ); // call parent's initialize()
  22. if ( this["@selectDateUI"] )
  23. {
  24. this["@selectUI"] = this["@selectDateUI"];
  25. }
  26. if ( !this["@startOfWeek"] )
  27. {
  28. this["@startOfWeek"] = "1";
  29. }
  30. this["@startOfWeek"] = parseInt(this["@startOfWeek"], 10);
  31. this.m_bDisabled = false;
  32. this.f_initCompleted();
  33. },
  34. checkData: function()
  35. {
  36. // We keep a reference to the parent function
  37. // Calling this.m_oFrom functions seems to have a side effect on this.f_parent().
  38. var v_fnParent = this.f_parent;
  39. this.m_bValid = this.m_oControl.m_bValid;
  40. this.f_parent = v_fnParent; // call parent's checkData using saved reference.
  41. this.f_parent(); // call parent's checkData using saved reference.
  42. return this.m_bValid;
  43. },
  44. clearValues: function() {
  45. this.f_parent();
  46. this.f_setDate( (""+new Date()) );
  47. },
  48. f_drawCompleted: function()
  49. {
  50. // We keep a reference to the parent function
  51. // Calling this.m_oFrom.f_drawCompleted seems to have a side effect on this.f_parent().
  52. var v_fnParent = this.f_parent;
  53. var v_chk = $(this.f_getId( "chkAnyValue" ));
  54. if ( v_chk )
  55. {
  56. PRMTUtils.f_addEvent( v_chk, "click", this.f_toggleDisable.bind(this) );
  57. }
  58. var v_iStartOfWeek = 0;
  59. switch( this["@startOfWeek"] )
  60. {
  61. case "Monday": iStartDay = 1; break;
  62. case "Tuesday": iStartDay = 2; break;
  63. case "Wednesday": iStartDay = 3; break;
  64. case "Thursday": iStartDay = 4; break;
  65. case "Friday": iStartDay = 5; break;
  66. case "Saturday": iStartDay = 6; break;
  67. }
  68. var v_oControl = new CDatePicker(
  69. null, //oSubmit,
  70. $( this.f_getId( "_Date" ) ), //oForm,
  71. $( this.f_getId( this["@selectUI"] == "editBox" ? "txtDate" : "_Date" ) ), //oEditBox,
  72. $( this.f_getId("dialogDatePicker") ), //oDialog,
  73. this.f_getId(), //sRef,
  74. this["@defaultDate"], //sDefaultDate,
  75. (this["@selectUI"] == "editBox" ? 0 : 1), //iInline,
  76. (this["@calendar"] == "Imperial" ? 1 : 0), //iType,
  77. this["@inputOrder"], //sInputOrder,
  78. v_iStartOfWeek,
  79. (this["@DateTime"] ? 0 : 1), //iDateTimeType,
  80. this["@firstDate"], //sFirstDate,
  81. this["@lastDate"], //sLastDate,
  82. this.isRequired(), //bRequired,
  83. null, //sSubmitType,
  84. null, //oImgCheck,
  85. this["CVId"]
  86. );
  87. var v_aDO = this.f_getCV().datePickerObserverArray;
  88. if (v_aDO) {
  89. v_aDO.push( v_oControl );
  90. }
  91. var v_oDatePicker = v_oControl.m_oDatePickerDialog;
  92. var v_el = $( this.f_getId("txtDate") );
  93. if ( v_el )
  94. {
  95. PRMTUtils.f_addEvent( v_el, "keyup", v_oControl.checkDate.bind(v_oControl, v_el) );
  96. PRMTUtils.f_addEvent( v_el, "keypress", v_oControl.keyPress.bind(v_oControl, v_el) );
  97. PRMTUtils.f_addEvent( v_el, "focus", v_oControl.gotFocus.bind(v_oControl) );
  98. PRMTUtils.f_addEvent( v_el, "blur", v_oControl.lostFocus.bind(v_oControl) );
  99. // link a11y label if it exists using FOR
  100. var v_a11yLabel = $( this.f_getId("PRMT_LBL_") );
  101. if ( v_a11yLabel && !v_a11yLabel.getAttribute("for")) {
  102. v_a11yLabel.setAttribute("for", v_el.id);
  103. }
  104. }
  105. v_el = $( this.f_getId("myYear") );
  106. if ( v_el )
  107. {
  108. PRMTUtils.f_addEvent( v_el, "keyup", v_oDatePicker.checkYear.bind(v_oDatePicker, v_el) );
  109. PRMTUtils.f_addEvent( v_el, "keypress", this.f_setDateFromEditBox.bind(v_oDatePicker) );
  110. PRMTUtils.f_addEvent( v_el, "blur", v_oDatePicker.lostFocus.bind(v_oDatePicker) );
  111. }
  112. PRMTUtils.f_addEvent( $( this.f_getId("btnYearDown") ), "click", v_oDatePicker.yearDown.bind(v_oDatePicker) );
  113. PRMTUtils.f_addEvent( $( this.f_getId("btnYearUp") ), "click", v_oDatePicker.yearUp.bind(v_oDatePicker) );
  114. PRMTUtils.f_addEvent( $( this.f_getId("btnYearDown") ), "keypress", v_oDatePicker.yearDown.bind(v_oDatePicker) );
  115. PRMTUtils.f_addEvent( $( this.f_getId("btnYearUp") ), "keypress", v_oDatePicker.yearUp.bind(v_oDatePicker) );
  116. if (window.ie)
  117. {
  118. PRMTUtils.f_addEvent( $( this.f_getId("btnYearDown") ), "dblclick", v_oDatePicker.yearDown.bind(v_oDatePicker) );
  119. PRMTUtils.f_addEvent( $( this.f_getId("btnYearUp") ), "dblclick", v_oDatePicker.yearUp.bind(v_oDatePicker) );
  120. }
  121. for ( var v_idxMonth = 0; v_idxMonth < 12; v_idxMonth++ )
  122. {
  123. PRMTUtils.f_addEvent( $( this.f_getId() + "m" + v_idxMonth ), "mousedown", v_oDatePicker.newMonth.bind(v_oDatePicker, v_idxMonth) );
  124. PRMTUtils.f_addEvent( $( this.f_getId() + "m" + v_idxMonth ), "keypress", v_oDatePicker.newMonth.bind(v_oDatePicker, v_idxMonth) );
  125. }
  126. for ( var v_idxRow = 0; v_idxRow < 6; v_idxRow++ )
  127. {
  128. for (v_idxCol = 0; v_idxCol < 7; v_idxCol++)
  129. {
  130. v_el = $( this.f_getId() + "r" + v_idxRow + "c" + v_idxCol );
  131. if ( v_el ) {
  132. PRMTUtils.f_addEvent( v_el, "mousedown", v_oDatePicker.newDay.bind(v_oDatePicker, v_el) );
  133. }
  134. }
  135. }
  136. v_el = $( this.f_getId("imgPicker") );
  137. if ( v_el )
  138. {
  139. PRMTUtils.f_addEvent( v_el, "click", v_oControl.toggleDialogDatePicker.bind(v_oControl, v_el) );
  140. PRMTUtils.f_addEvent( v_el, "keypress", v_oControl.toggleDialogDatePicker.bind(v_oControl, v_el) );
  141. }
  142. v_oControl.m_oParent = this;
  143. this.m_oControl = v_oControl;
  144. this.f_parent = v_fnParent; // call parent's f_drawCompleted using saved reference.
  145. this.f_parent(); // call parent's f_drawCompleted using saved reference.
  146. this.checkData();
  147. if ( this[K_PRMT_sATTR_DISABLED] )
  148. {
  149. this.f_setEnabled( false );
  150. }
  151. }
  152. });
  153. /**
  154. * Getter for range inputId
  155. * rangeInputId used by range label to associate the label (From/To) to the input when there are not radio buttons
  156. *
  157. */
  158. cognos.Prompt.Control.Date.prototype.f_getRangeInputId = function() {
  159. return (this["@selectUI"] == "editBox" ? this.f_getId("txtDate") : null); //this.f_getId("dialogDatePickerTable"));
  160. }
  161. /**
  162. Compare values. See {@link cognos.Prompt.Control#f_compare} for details.
  163. @see cognos.Prompt.Control#f_compare
  164. @private
  165. @return {Integer}
  166. */
  167. cognos.Prompt.Control.Date.prototype.f_compare = function( v_oValue )
  168. {
  169. var v_iRetval = 1;
  170. if ( v_oValue )
  171. {
  172. // Strips out time part.
  173. var v_dThis = this.m_oControl.m_oForm.value.split("T");
  174. v_dThis = dParseDate( v_dThis[0], "YMD" );
  175. var v_dCompareTo = v_oValue.m_oControl.m_oForm.value.split("T");
  176. v_dCompareTo = dParseDate( v_dCompareTo[0], "YMD" );
  177. var v_iThis = v_dThis.getTime();
  178. var v_iCompareTo = v_dCompareTo.getTime();
  179. if ( v_iCompareTo > v_iThis )
  180. {
  181. v_iRetval = -1;
  182. }
  183. else if ( v_iCompareTo == v_iThis )
  184. {
  185. v_iRetval = 0;
  186. }
  187. }
  188. return v_iRetval;
  189. };
  190. /**
  191. Sets the JavaScript references used by custom scripts based on generated code from Blaring and before.
  192. (Custom Scripts Workaround)
  193. @private
  194. @return {void}
  195. */
  196. cognos.Prompt.Control.Date.prototype.f_CSW_init = function()
  197. {
  198. this.f_CSW_createJSObject( "pickerControl", this.m_oControl );
  199. this.f_CSW_SetFormElement("txtDate", $(this.f_getId("txtDate")));
  200. };
  201. /**
  202. Renders the TD cell for days in the calendar.
  203. @private
  204. @param {C_PromptElement} v_el Container (TR element).
  205. @param {Integer} v_idxRow Row index.
  206. @param {Integer} v_idxCol Column index.
  207. @return {void}
  208. */
  209. cognos.Prompt.Control.Date.prototype.f_drawDay = function( v_el, v_idxRow, v_idxCol )
  210. {
  211. // TODO: selectDateDaysStyle
  212. var v_td = $CE( "td", {
  213. "id": this.f_getId() + "r" + v_idxRow + "c" + v_idxCol,
  214. "nowrap": "nowrap",
  215. "class": "clsSelectDateDays pd"
  216. }, v_el );
  217. v_td.f_appendText(K_PRMT_sEMPTY);
  218. };
  219. /**
  220. Render the UI for days in the calendar.
  221. @private
  222. @param {C_PromptElement} v_el Container.
  223. @return {void}
  224. */
  225. cognos.Prompt.Control.Date.prototype.f_drawDays = function( v_el )
  226. {
  227. var v_tbl = $CE( "table", {
  228. "border": K_PRMT_DEBUG_TABLEBORDER,
  229. "cellSpacing": 0,
  230. "width": "100%",
  231. "align": "center",
  232. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_el );
  233. var v_tbd = $CE( "tbody", {}, v_tbl );
  234. var v_idxCol = 0;
  235. var v_tr = $CE( "tr", {}, v_tbd );
  236. for (v_idxCol = 0; v_idxCol < 7; v_idxCol++)
  237. {
  238. this.f_drawWeekDay( v_tr, v_idxCol );
  239. }
  240. for ( var v_idxRow = 0; v_idxRow < 6; v_idxRow++ )
  241. {
  242. var v_tr = $CE( "tr", {}, v_tbd );
  243. for (v_idxCol = 0; v_idxCol < 7; v_idxCol++)
  244. {
  245. this.f_drawDay( v_tr, v_idxRow, v_idxCol );
  246. }
  247. }
  248. };
  249. /**
  250. Render the edit box when calendar is set as an EditBox.
  251. @private
  252. @param {C_PromptElement} v_el Container.
  253. @return {void}
  254. */
  255. cognos.Prompt.Control.Date.prototype.f_drawEditBox = function( v_el )
  256. {
  257. var v_tbl = $CE( "table", { "border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding": 0, "cellSpacing": 0, "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_el );
  258. var v_tbd = $CE( "tbody", {}, v_tbl );
  259. var v_tr = $CE( "tr", {}, v_tbd );
  260. var v_td = $CE( "td", {}, v_tr );
  261. // TODO: selectDateEditBoxStyle
  262. var v_ipt = $CE( "input", {
  263. "type": "text",
  264. "class": "clsSelectDateEditBox pt",
  265. "aria-required": (this.isRequired() ? "true" : "false"),
  266. "id": this.f_getId("txtDate"),
  267. "value": K_PRMT_sEMPTY }, v_td );
  268. v_td = $CE( "td", {}, v_tr );
  269. var v_img = $CE( "img", {
  270. "id": this.f_getId("imgPicker"),
  271. "src": this.m_sSkin + "/prompting/images/icon_datepicker.gif",
  272. "height": 20,
  273. "width": 25,
  274. "class": "clsToolbarButton",
  275. "onmouseover": "buttonOver(this)",
  276. "onmouseout": "buttonOut(this)",
  277. "onmousedown": "buttonOver(this)",
  278. "vAlign": "top",
  279. "style": "padding:0px;height:20px;",
  280. "alt":"",
  281. "title":"",
  282. "tabindex": "0",
  283. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_td );
  284. };
  285. /**
  286. Render the Date control.
  287. @private
  288. @param {C_PromptElement} v_el Container.
  289. @return {void}
  290. */
  291. cognos.Prompt.Control.Date.prototype.f_drawInput = function( v_el )
  292. {
  293. $CE("input", {"type": "hidden", "id": this.f_getId("_Date"), "value": this["@defaultDate"]}, v_el );
  294. var v_tbl = null;
  295. var v_tbd = null;
  296. var v_tr = null;
  297. var v_td = null;
  298. if ( this["@selectDateUI"] != "editBox" && !this.isRequired() && !this["@suppressDisabled"] && !(this.m_bIsAComponent || this["@multiSelect"]) )
  299. {
  300. v_tbl = $CE( "table", {"border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding": 0, "cellSpacing": 0,"role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_el );
  301. v_tbd = $CE( "tbody", {}, v_tbl );
  302. v_tr = $CE( "tr", {}, v_tbd );
  303. v_td = $CE( "td", {"vAlign": "top"}, v_tr );
  304. var v_bDisabled = (this.isEmptyReprompt() || (this[K_PRMT_sATTR_DISABLED] === true));
  305. var v_oChbox_attr = {
  306. "type": "checkbox",
  307. "value": "anyValue",
  308. "id": this.f_getId( "chkAnyValue" ),
  309. "name": this.f_getId( "chkAnyValue" )};
  310. if (!v_bDisabled) {
  311. v_oChbox_attr.checked = true;
  312. }
  313. $CE( "input", v_oChbox_attr, v_td );
  314. this.m_bDisabled = v_bDisabled;
  315. v_el = $CE( "td", {"vAlign": "top"}, v_tr );
  316. }
  317. var v_sCalendarClass = "clsSelectDateCalendar";
  318. if( this["@selectUI"] == "editBox" )
  319. {
  320. v_sCalendarClass = "clsSelectDateCalendarDialog";
  321. this.f_drawEditBox( v_el );
  322. }
  323. var v_oDivPickerInitData = {
  324. "id": this.f_getId( "dialogDatePicker" ),
  325. "style": ( this["@selectUI"] == "editBox" ? "display:none" : K_PRMT_sEMPTY )
  326. };
  327. var v_oCV = this.f_getCV();
  328. if (v_oCV && v_oCV.getId) {
  329. v_oDivPickerInitData["namespaceId"] = v_oCV.getId();
  330. }
  331. var v_divPicker = $CE( "div", v_oDivPickerInitData, v_el );
  332. v_tbl = $CE( "table", { "id": this.f_getId( "dialogDatePickerTable" ), "border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding": 0, "cellSpacing": 0, "class": v_sCalendarClass }, v_divPicker );
  333. v_tbd = $CE( "tbody", {}, v_tbl );
  334. v_tr = $CE( "tr", {}, v_tbd );
  335. v_td = $CE( "td", {"vAlign": "top"}, v_tr );
  336. this.f_drawYear( v_td );
  337. this.f_drawMonths( v_td );
  338. this.f_drawDays( v_td );
  339. // ensure that calendar appears on top of select controls
  340. var v_ifrmInitData = {
  341. "id": this.f_getId( "pickerControl" ) + "iframe",
  342. "style": "position:absolute;display:none;height:0px;width:0px;",
  343. "src": this.m_sSkin + "/prompting/images/spacer.gif",
  344. "title":"blank"
  345. };
  346. if (v_oCV && v_oCV.getId) {
  347. v_ifrmInitData["namespaceId"] = v_oCV.getId();
  348. }
  349. var v_ifrm = $CE( "iframe", v_ifrmInitData, v_el);
  350. v_ifrm.f_appendText(K_PRMT_sEMPTY);
  351. };
  352. /**
  353. Check if is a reprompt(this.c exists) and in case of a reprompt if the reprompt has data(a date)
  354. When a date control is optional, has a Calendar UI the user can decide not to submit the date, in
  355. that case the reprompt won't contain data.
  356. @private
  357. @return {boolean}
  358. */
  359. cognos.Prompt.Control.Date.prototype.isEmptyReprompt = function()
  360. {
  361. var result = false;
  362. if ((typeof this.c) != K_PRMT_sUNDEFINED) {
  363. // it's a reprompt
  364. var v_c = this.c;
  365. // [{n:'selectChoices',c:[{n:'selectOption',"@useValue":"2010-01-14","@displayValue":"Jan 14, 2010"}]}] => not empty(value.n =='selectOption' || [{n:'selectChoices'}] => empty(value.n == 'selectChoices')
  366. if ( v_c.length && v_c[0].n && v_c[0].n == "selectChoices") {
  367. var v_c_value = cognos.Value.getValue( this.c );
  368. if (v_c_value.n && v_c_value.n == "selectChoices") result = true;
  369. }
  370. }
  371. return result;
  372. };
  373. /**
  374. Render a Month cell.
  375. @private
  376. @param {C_PromptElement} v_el Container (an TR cell).
  377. @param {Integer} v_idx Index for the current month cell.
  378. @return {void}
  379. */
  380. cognos.Prompt.Control.Date.prototype.f_drawMonth = function( v_el, v_idx )
  381. {
  382. // TODO: selectDateMonthsStyle
  383. var v_td = $CE( "td", {
  384. "id": this.f_getId() + "m" + v_idx,
  385. "nowrap": "nowrap",
  386. "class": "clsSelectDateMonths pm"
  387. }, v_el );
  388. v_td.f_appendText( sGetMonth(v_idx) );
  389. };
  390. /**
  391. Render Months cells.
  392. @private
  393. @param {C_PromptElement} v_el Container.
  394. @return {void}
  395. */
  396. cognos.Prompt.Control.Date.prototype.f_drawMonths = function( v_el )
  397. {
  398. var v_tbl = $CE( "table", {
  399. "border": K_PRMT_DEBUG_TABLEBORDER,
  400. "cellPadding": 2,
  401. "cellSpacing": 0,
  402. "width": "100%",
  403. "align": "center",
  404. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_el );
  405. var v_tbd = $CE( "tbody", {}, v_tbl );
  406. var v_idx;
  407. for ( var v_iRows = 0; v_iRows < 2; v_iRows++ )
  408. {
  409. var v_tr = $CE( "tr", {}, v_tbd );
  410. for (v_idx = 0; v_idx < 6; v_idx++)
  411. {
  412. this.f_drawMonth( v_tr, (v_iRows*6)+v_idx );
  413. }
  414. }
  415. };
  416. /**
  417. @private
  418. */
  419. cognos.Prompt.Control.Date.prototype.f_drawWeekDay = function( v_el, v_idx )
  420. {
  421. // TODO: selectDateDaysOfWeekStyle
  422. var v_td = $CE( "td", {
  423. "id": this.f_getId() + "d" + v_idx,
  424. "nowrap": "nowrap",
  425. "class": "clsSelectDateDaysOfWeek pw"
  426. }, v_el );
  427. v_td.f_appendText( sGetDay( (v_idx + this["@startOfWeek"] - 1) % 7 ) );
  428. };
  429. /**
  430. @private
  431. */
  432. cognos.Prompt.Control.Date.prototype.f_drawYear = function ( v_el )
  433. {
  434. // Top
  435. var v_tbl = $CE( "table", {
  436. "border": K_PRMT_DEBUG_TABLEBORDER, "cellPadding": 0, "cellSpacing": 0,
  437. "class": "clsSelectDateDialogTopTable",
  438. "align": "center",
  439. "width": "100%",
  440. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_el );
  441. var v_tbd = $CE( "tbody", {}, v_tbl );
  442. // TODO: selectDateYearsStyle
  443. var v_tr = $CE( "tr", {"class": "clsSelectDateYears"}, v_tbd );
  444. var v_td = $CE( "td", {}, v_tr );
  445. var v_sCustomDir = cssParser( this["@style"], "direction", true );
  446. var v_FinalDir = ((v_sCustomDir == "ltr" || v_sCustomDir == "rtl") ? v_sCustomDir : PRMT_BidiUtils.lookupDirection($( this.f_getId(this.m_sDivPrefix) )));
  447. if (!v_FinalDir) {
  448. v_FinalDir = "ltr";
  449. }
  450. var v_img = $CE( "img", {
  451. "id": this.f_getId( "btnYearDown" ),
  452. "class" : (v_FinalDir == "ltr" ? "clsBtnYearDown" : "clsBtnYearUp"),
  453. "src": this.m_sSkin + "/prompting/images/icon_year_down.gif",
  454. "vAlign": "top",
  455. "tabindex": "0",
  456. "width": "15",
  457. "class": "clsToolbarButton",
  458. "onmouseover": "buttonOver(this)",
  459. "onmouseout": "buttonOut(this)",
  460. "onmousedown": "buttonOver(this)",
  461. "title":"",
  462. "alt":"",
  463. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_td );
  464. v_td = $CE( "td", {
  465. "width": "100%",
  466. "align": "center" }, v_tr );
  467. var v_ipt = $CE( "input", {
  468. "id": this.f_getId( "myYear" ),
  469. "class": "clsSelectDateYearEditBox pcl",
  470. "aria-label" : PMT_DTP_DATE_YEAR_ENTRY_FIELD,
  471. "aria-required": (this.isRequired() ? "true" : "false"),
  472. "size": "8",
  473. "onkeydown": "return (event.keyCode!=13);",
  474. "type": "text" }, v_td );
  475. v_td = $CE( "td", {}, v_tr );
  476. v_img = $CE( "img", {
  477. "id": this.f_getId( "btnYearUp" ),
  478. "class" : (v_FinalDir == "ltr" ? "clsBtnYearUp" : "clsBtnYearDown"),
  479. "src": this.m_sSkin + "/prompting/images/icon_year_up.gif",
  480. "vAlign": "top",
  481. "tabindex": "0",
  482. "width": "15",
  483. "align": "right",
  484. "class": "clsToolbarButton",
  485. "onmouseover": "buttonOver(this)",
  486. "onmouseout": "buttonOut(this)",
  487. "onmousedown": "buttonOver(this)",
  488. "title":"",
  489. "alt":"",
  490. "role":K_PRMT_ARIA_ROLE_PRESENTATION}, v_td );
  491. };
  492. /**
  493. @private
  494. @return {cognos.Value}
  495. */
  496. cognos.Prompt.Control.Date.prototype.f_getPV = function()
  497. {
  498. var v_oControl = this.m_oControl;
  499. var v_sUse = v_oControl.sGetValue();
  500. if ( this.m_bIsRangeEndControl && this["@DateTime"])
  501. {
  502. v_sUse = v_sUse.replace( K_PRMT_reTIMEPART, K_PRMT_sTIME_MAX );
  503. }
  504. // skip handle notify if getPV got triggered by getValues
  505. if (v_oControl.handleNotify && (!this.m_bisGetValuesCall) )
  506. {
  507. v_oControl.handleNotify();
  508. }
  509. return (
  510. this.m_bDisabled || !v_sUse ?
  511. null :
  512. { "use": v_sUse, "display": v_oControl.sGetFormatValue() }
  513. );
  514. };
  515. /**
  516. @private
  517. @return {void}
  518. */
  519. cognos.Prompt.Control.Date.prototype.f_setDate = function( v_sDate )
  520. {
  521. this.m_oControl.setValue( v_sDate );
  522. };
  523. /**
  524. @private
  525. @return {void}
  526. */
  527. cognos.Prompt.Control.Date.prototype.f_setDateFromEditBox = function(e)
  528. {
  529. // 'this' is a CDatePickerDialog object
  530. this.keyPress( e.keyCode );
  531. var v_oParent = this.m_oParentControl;
  532. v_oParent.checkDate( v_oParent.m_oEditBox );
  533. };
  534. /**
  535. @private
  536. @return {void}
  537. */
  538. cognos.Prompt.Control.Date.prototype.f_setEnabled = function( v_bState )
  539. {
  540. var v_oControl = this.m_oControl;
  541. if ( v_bState ) {
  542. v_oControl.enable();
  543. PRMTUtils.f_removeClass( $( this.f_getId( "dialogDatePickerTable" ) ), K_PRMT_sCLS_DISABLED );
  544. }
  545. else {
  546. v_oControl.disable();
  547. PRMTUtils.f_addClass( $( this.f_getId( "dialogDatePickerTable" ) ), K_PRMT_sCLS_DISABLED );
  548. }
  549. };
  550. /**
  551. @private
  552. @return {void}
  553. */
  554. cognos.Prompt.Control.Date.prototype.f_setPV = function( v_oPV )
  555. {
  556. var v_sValue = v_oPV["use"];
  557. if ( v_sValue )
  558. {
  559. var v_aValues = v_sValue.split(new RegExp("[T\\s]"));
  560. if ( v_aValues.length > 2 )
  561. {
  562. for ( var v_idx = 1; v_idx < v_aValues.length - 1; v_idx++ )
  563. {
  564. // add all Date parts to the first element.
  565. v_aValues[0] += K_PRMT_sSP + (v_aValues[v_idx]).f_trim();
  566. }
  567. v_aValues[0] = v_aValues[0].f_trim();
  568. // move Time part (last value) in slot 1
  569. v_aValues[1] = v_aValues[ v_aValues.length - 1];
  570. }
  571. if ( v_aValues.length >= 1 )
  572. {
  573. this.f_setDate( v_aValues[0] );
  574. }
  575. }
  576. };
  577. /**
  578. @private
  579. @return {void}
  580. */
  581. cognos.Prompt.Control.Date.prototype.f_toggleDisable = function()
  582. {
  583. var v_bState = this.m_bDisabled;
  584. this.f_setEnabled( v_bState );
  585. this.m_bDisabled = !v_bState;
  586. };
  587. /**
  588. @private
  589. @return {boolean}
  590. */
  591. cognos.Prompt.Control.Date.prototype.hasValue = function()
  592. {
  593. return (this.m_bValid);
  594. };
  595. var C_Date = cognos.Prompt.Control.Date; // Keep old reference for backward compatibility with custom scripts.