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

http://github.com/khaneh/Orders · JavaScript · 344 lines · 287 code · 38 blank · 19 comment · 100 complexity · 71ac9b6c88fa81176655bae72795fb4d MD5 · raw file

  1. // TDC is to get DateTime format info for current locale
  2. function TDC() {
  3. var d=new Date(1970,0,0,0,0,0,0),d2=new Date(d),s1,s2,api=-1;
  4. d.setHours(10); d2.setHours(11);
  5. s1=d.toLocaleString(); s2=d2.toLocaleString();
  6. this.displayHour=(s1!=s2);
  7. d.setHours(0); d2.setHours(0);
  8. d.setMinutes(10); d2.setMinutes(11);
  9. this.displayMinute=(d.toLocaleString()!=d2.toLocaleString());
  10. d.setMinutes(0); d2.setMinutes(0);
  11. d.setSeconds(10); d2.setSeconds(11);
  12. this.displaySecond=(d.toLocaleString()!=d2.toLocaleString());
  13. d.setSeconds(0); d2.setSeconds(0);
  14. if (this.displayHour) {
  15. for (i=0; i<((s1.length<s2.length)?s1.length:s2.length); i++) {
  16. if (s1.charAt(i)!=s2.charAt(i)) {
  17. api=i-1; break;
  18. }
  19. }
  20. d.setHours(11); d2.setHours(23);
  21. s1=d.toLocaleString(); s2=d2.toLocaleString();
  22. this.twelveHourClock=(s1.substring(api,api+2)==s2.substring(api,api+2));
  23. this.displayAMPM=(s1!=s2);
  24. d.setHours(0); d2.setHours(0);
  25. d.setHours(9); d2.setHours(11);
  26. this.hourLeadZero=(d.toLocaleString().length==d2.toLocaleString().length);
  27. d.setHours(0); d2.setHours(0);
  28. } else {
  29. this.twelveHourClock=false;
  30. this.displayAMPM=false;
  31. this.hourLeadZero=false;
  32. }
  33. if (this.displayMinute) {
  34. d.setMinutes(9); d2.setMinutes(11);
  35. this.minuteLeadZero=(d.toLocaleString().length==d2.toLocaleString().length);
  36. d.setMinutes(0); d2.setMinutes(0);
  37. } else
  38. this.minuteLeadZero=false;
  39. if (this.displaySecond) {
  40. d.setSeconds(9); d2.setSeconds(11);
  41. this.secondLeadZero=(d.toLocaleString().length==d2.toLocaleString().length);
  42. d.setSeconds(0); d2.setSeconds(0);
  43. } else
  44. this.secondLeadZero=false;
  45. }
  46. var TD = new TDC();
  47. // create time editables, hour dropdown, minute dropdown, second dropdown, and am/pm dropdown
  48. function CreateTimeEditables(paramName, postFix, enabled, cssClass, style, hour, minute, second)
  49. {
  50. var properties = "";
  51. if (!enabled)
  52. {
  53. properties += " disabled='disabled' ";
  54. }
  55. if (cssClass.length != 0)
  56. {
  57. properties += " class='";
  58. properties += cssClass;
  59. properties += "' ";
  60. }
  61. if (style.length != 0)
  62. {
  63. properties += " style='";
  64. properties += style;
  65. properties += "' ";
  66. }
  67. var time_sep_span = "";
  68. time_sep_span += "<span ";
  69. time_sep_span += properties;
  70. time_sep_span += ">";
  71. time_sep_span += L_TIME_SEPARATOR;
  72. time_sep_span += "</span>";
  73. var editablesHtml = "";
  74. if (TD.displayHour)
  75. {
  76. editablesHtml += "<SELECT ";
  77. editablesHtml += properties;
  78. editablesHtml += " name='";
  79. editablesHtml += paramName;
  80. editablesHtml += postFix;
  81. editablesHtml += "Hour'>";
  82. var minHour;
  83. var maxHour;
  84. if (TD.twelveHourClock)
  85. {
  86. minHour = 1;
  87. maxHour = 12;
  88. }
  89. else
  90. {
  91. minHour = 0;
  92. maxHour = 23;
  93. }
  94. for (i = minHour; i <= maxHour ; i++){
  95. editablesHtml += " <option value='";
  96. editablesHtml += i;
  97. editablesHtml += "'";
  98. if (!TD.twelveHourClock)
  99. {
  100. if (i == hour)
  101. editablesHtml += " selected ";
  102. }
  103. else
  104. {
  105. if (( hour == 0) && (i == 12))
  106. editablesHtml += " selected ";
  107. else if ((hour == 12) && (i == 12))
  108. editablesHtml += " selected ";
  109. else if ((hour > 12) && (i == hour - 12))
  110. editablesHtml += " selected ";
  111. else if (i == hour)
  112. editablesHtml += " selected ";
  113. }
  114. if ((i < 10) && (TD.hourLeadZero))
  115. {
  116. editablesHtml += "> 0";
  117. }
  118. else
  119. {
  120. editablesHtml += "> ";
  121. }
  122. editablesHtml += i;
  123. editablesHtml += "</option>\n";
  124. }
  125. editablesHtml += " </SELECT>";
  126. }
  127. if (TD.displayMinute)
  128. {
  129. if (editablesHtml.length != 0)
  130. {
  131. editablesHtml += time_sep_span;
  132. }
  133. editablesHtml += "<SELECT ";
  134. editablesHtml += properties;
  135. editablesHtml += " name='";
  136. editablesHtml += paramName;
  137. editablesHtml += postFix;
  138. editablesHtml += "Minute'>";
  139. for (i = 0; i <= 59; i++){
  140. editablesHtml += " <option value='";
  141. editablesHtml += i;
  142. editablesHtml += "'";
  143. if (i == minute)
  144. editablesHtml += " selected ";
  145. if ((i < 10) && (TD.minuteLeadZero))
  146. {
  147. editablesHtml += "> 0";
  148. }
  149. else
  150. {
  151. editablesHtml += "> ";
  152. }
  153. editablesHtml += i;
  154. editablesHtml += "</option>\n";
  155. }
  156. editablesHtml += " </SELECT>";
  157. }
  158. if (TD.displaySecond)
  159. {
  160. if (editablesHtml.length != 0)
  161. editablesHtml += time_sep_span;
  162. editablesHtml += "<SELECT ";
  163. editablesHtml += properties;
  164. editablesHtml += " name='";
  165. editablesHtml += paramName;
  166. editablesHtml += postFix;
  167. editablesHtml += "Second'>";
  168. for (i = 0; i <= 59; i++){
  169. editablesHtml += " <option value='";
  170. editablesHtml += i;
  171. editablesHtml += "'";
  172. if (i == second)
  173. editablesHtml += " selected ";
  174. if ((i < 10) && (TD.secondLeadZero))
  175. editablesHtml += "> 0";
  176. else
  177. editablesHtml += "> ";;
  178. editablesHtml += i;
  179. editablesHtml += "</option>\n";
  180. }
  181. editablesHtml += " </SELECT>";
  182. }
  183. if (TD.twelveHourClock)
  184. {
  185. editablesHtml += "<SELECT ";
  186. editablesHtml += properties;
  187. editablesHtml += " name='";
  188. editablesHtml += paramName;
  189. editablesHtml += postFix;
  190. editablesHtml += "AMPM' >";
  191. editablesHtml += " <option value='0'";
  192. if (hour < 12)
  193. editablesHtml += " selected ";
  194. editablesHtml += "> ";
  195. editablesHtml += L_AM_DESIGNATOR;
  196. editablesHtml += "</option>\n";
  197. editablesHtml += " <option value='1'";
  198. if (hour >= 12)
  199. editablesHtml += " selected ";
  200. editablesHtml += "> ";
  201. editablesHtml += L_PM_DESIGNATOR;
  202. editablesHtml += "</option>\n";
  203. editablesHtml += " </SELECT>";
  204. }
  205. return editablesHtml;
  206. }
  207. // get Locale Date/Time
  208. // d: input Date
  209. // return only Date part if includeDate==true, and includeTime== false
  210. // return only Time part if includeDate==false and includeTime== true
  211. // return datetime string if includeDate==true and includeTime == true
  212. function GLDT(d, includeDate, includeTime) { // Get Locale Date/Time
  213. // Returns date/and or time from locale string.
  214. // Assumes that date appears before time in string.
  215. if (includeDate && includeTime) return d.toLocaleString();
  216. var d2 = new Date(d);
  217. var ds;
  218. var ds2;
  219. var ml;
  220. d2.setMilliseconds(d.getMilliseconds()<=887 ? d.getMilliseconds()+111 : d.getMilliseconds() - 111);
  221. d2.setSeconds(d.getSeconds()<=49 ? d.getSeconds()+11 : d.getSeconds()-11);
  222. d2.setMinutes(d.getMinutes()<=49 ? d.getMinutes()+11 : d.getMinutes()-11);
  223. // although TD.twelveHourClock could be true, but d.getHours will always get hours in 24
  224. // only the localized the date string will be in twelve hour clock
  225. // here we want d2's hour's first digit different from d1's hour's first digit
  226. // also if d1 is morning, d2 will be in afternoon, vice versa thus we get different strings for AM, and PM
  227. // because AM/PM could be before hours (eg. in Korean)
  228. if (TD.twelveHourClock)
  229. {
  230. var hour = d.getHours();
  231. if (hour == 0 || hour == 1 || hour == 10 || hour == 11)
  232. {
  233. d2.setHours(14);
  234. }
  235. else if (hour == 12 || hour == 13 || hour == 22 || hour == 23)
  236. {
  237. d2.setHours(2);
  238. }
  239. else if (hour < 12)
  240. {
  241. d2.setHours(13);
  242. }
  243. else
  244. {
  245. d2.setHours(1);
  246. }
  247. }
  248. else
  249. {
  250. d2.setHours( d.getHours()<12 ? (d.getHours() == 1 ? 2 : d.getHours() + 12) : (d.getHours()<20 ? 20 : 11));
  251. }
  252. ds = d.toLocaleString();
  253. ds2 = d2.toLocaleString();
  254. ml = ds.length < ds2.length ? ds.length : ds2.length ;
  255. for (i=0; i<ml; i++) {
  256. if (ds.charAt(i) != ds2.charAt(i))
  257. {
  258. // put the iterator back to the beginning of the word
  259. while (ds.charAt(i) != ' ') i--;
  260. i++;
  261. break;
  262. }
  263. }
  264. if (includeDate)
  265. return ds.substring(0, i-1);
  266. else if (includeTime)
  267. return ds.substring(i);
  268. else
  269. return "";
  270. }
  271. // construct localized datetime/date/time string
  272. // from DateTime(year, month, day, hour, minute, second)
  273. // or Date(year, month, day)
  274. // or Time(hour, minute, second)
  275. function NeutralDT2D(s) {
  276. var d="";
  277. var td = new Date();
  278. var a;
  279. if (s.indexOf("DateTime")!=-1) {
  280. a = s.replace("DateTime","").replace("(","").replace(")","").split(",") ;
  281. d = GLDT(new Date(a[0], a[1]-1, a[2], a[3], a[4], a[5], 0), true, true);
  282. } else if (s.indexOf("Date")!=-1) {
  283. a = s.replace("Date","").replace("(","").replace(")","").split(",") ;
  284. d = GLDT(new Date(a[0], a[1]-1, a[2], 0, 0, 0, 0), true, false);
  285. } else if (s.indexOf("Time")!=-1) {
  286. a = s.replace("Time","").replace("(","").replace(")","").split(",");
  287. d = GLDT(new Date(td.getYear(), td.getMonth(), td.getDate(), a[0], a[1], a[2]), false, true);
  288. }
  289. return d;
  290. }
  291. function NeutralDT2Date(s){
  292. var d="";
  293. var td = new Date();
  294. var a;
  295. if (s.indexOf("DateTime")!=-1) {
  296. a = s.replace("DateTime","").replace("(","").replace(")","").split(",") ;
  297. return new Date(a[0], a[1]-1, a[2], a[3], a[4], a[5], 0);
  298. } else if (s.indexOf("Date")!=-1) {
  299. a = s.replace("Date","").replace("(","").replace(")","").split(",") ;
  300. return new Date(a[0], a[1]-1, a[2], 0, 0, 0, 0);
  301. } else if (s.indexOf("Time")!=-1) {
  302. a = s.replace("Time","").replace("(","").replace(")","").split(",");
  303. return new Date(td.getYear(), td.getMonth(), td.getDate(), a[0], a[1], a[2]);
  304. }
  305. return d;
  306. }