PageRenderTime 61ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/ewp50.js

http://osjobber.googlecode.com/
JavaScript | 1622 lines | 1318 code | 182 blank | 122 comment | 693 complexity | 0327ca028bc8f8cf91510ebe24e6d8d6 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0
  1. // JavaScript for PHPMaker 5+
  2. //(C) 2001-2007 e.World Technology Ltd.
  3. // Include another client script
  4. function ew_ClientScriptInclude(path) {
  5. document.write('<' + 'script');
  6. document.write(' language="JavaScript"');
  7. document.write(' type="text/javascript"');
  8. document.write(' src="' + path + '">');
  9. document.write('</' + 'script' + '>');
  10. }
  11. // Handle search operator changed
  12. function ew_SrchOprChanged(elem) {
  13. var f = elem.form;
  14. var isBetween = (elem.options[elem.selectedIndex].value == "BETWEEN");
  15. if (isBetween) {
  16. var v = f.elements["v_" + elem.name.substr(2)];
  17. if (v[0]) {
  18. for (var i=0; i<v.length; i++) {
  19. if (v[i].type == "radio" && v[i].value == "AND") {
  20. v[i].checked = true;
  21. break;
  22. }
  23. }
  24. } else if (v) {
  25. if (v.type == "radio" && v.value == "AND") v.checked = true;
  26. }
  27. }
  28. var _v = document.getElementById("_v_" + elem.name.substr(2));
  29. if (_v) _v.style.display = (isBetween) ? "none" : "";
  30. var _w = document.getElementById("_w_" + elem.name.substr(2));
  31. if (_w) _w.style.display = (isBetween) ? "none" : "";
  32. }
  33. // DHTML editor
  34. function ew_DHTMLEditor(name) {
  35. this.name = name;
  36. this.create = function() { this.active = true; }
  37. this.editor = null;
  38. this.active = false;
  39. }
  40. // Create DHTML editor
  41. function ew_CreateEditor(name) {
  42. if (typeof ew_DHTMLEditors == 'undefined')
  43. return;
  44. for (var i = 0; i < ew_DHTMLEditors.length; i++) {
  45. var ed = ew_DHTMLEditors[i];
  46. var cr = !ed.active;
  47. if (name) cr = cr && ed.name == name;
  48. if (cr) {
  49. if (typeof ed.create == 'function')
  50. ed.create();
  51. if (name)
  52. break;
  53. }
  54. }
  55. }
  56. // Submit form
  57. function ew_SubmitForm(form_object) {
  58. if (typeof ew_UpdateTextArea == 'function')
  59. ew_UpdateTextArea();
  60. if (ew_ValidateForm(form_object))
  61. form_object.submit();
  62. }
  63. // Remove spaces
  64. function ew_RemoveSpaces(value) {
  65. str = value.replace(/^\s*|\s*$/g, "");
  66. str = str.toLowerCase();
  67. if (str == "<p />" || str == "<p/>" || str == "<p>" ||
  68. str == "<br />" || str == "<br/>" || str == "<br>" ||
  69. str == "&nbsp;" || str == "<p>&nbsp;</p>")
  70. return ""
  71. else
  72. return value;
  73. }
  74. // Check if hidden text area
  75. function ew_IsHiddenTextArea(input_object) {
  76. return (input_object && input_object.type && input_object.type == "textarea" &&
  77. input_object.style && input_object.style.display &&
  78. input_object.style.display == "none");
  79. }
  80. // Set focus
  81. function ew_SetFocus(input_object) {
  82. if (!input_object || ew_IsHiddenTextArea(input_object))
  83. return;
  84. input_object = (!input_object.type && input_object[0]) ? input_object[0] : input_object;
  85. var type = input_object.type;
  86. if (type != "hidden")
  87. input_object.focus();
  88. if (type == "text" || type == "password" || type == "textarea" || type == "file")
  89. input_object.select();
  90. }
  91. // Process validate error
  92. function ew_OnError(input_object, error_message) {
  93. alert(error_message);
  94. if (typeof ew_MultiPageElements != 'undefined' && ew_MultiPageElements.length > 0) // check if multi-page
  95. ew_GotoPageByElement(input_object);
  96. ew_SetFocus(input_object);
  97. return false;
  98. }
  99. // Check if object has value
  100. function ew_HasValue(obj) {
  101. if (!obj)
  102. return true;
  103. var type = (!obj.type && obj[0]) ? obj[0].type : obj.type;
  104. if (type == "text" || type == "password" || type == "textarea" ||
  105. type == "file" || type == "hidden") {
  106. return (obj.value.length != 0);
  107. } else if (type == "select-one") {
  108. return (obj.selectedIndex > 0);
  109. } else if (type == "select-multiple") {
  110. return (obj.selectedIndex > -1);
  111. } else if (type == "checkbox") {
  112. if (obj[0]) {
  113. for (var i=0; i < obj.length; i++) {
  114. if (obj[i].checked)
  115. return true;
  116. }
  117. return false;
  118. }
  119. } else if (type == "radio") {
  120. if (obj[0]) {
  121. for (var i=0; i < obj.length; i++) {
  122. if (obj[i].checked)
  123. return true;
  124. }
  125. return false;
  126. } else {
  127. return obj.checked;
  128. }
  129. }
  130. return true;
  131. }
  132. // Check US Date format (mm/dd/yyyy)
  133. function ew_CheckUSDate(object_value) {
  134. if (object_value.length == 0)
  135. return true;
  136. isplit = object_value.indexOf(EW_DATE_SEPARATOR); // Split by date separator
  137. if (isplit == -1 || isplit == object_value.length)
  138. return false;
  139. sMonth = object_value.substring(0, isplit);
  140. if (sMonth.length == 0)
  141. return false;
  142. isplit = object_value.indexOf(EW_DATE_SEPARATOR, isplit + 1); // Split by date separator
  143. if (isplit == -1 || (isplit + 1 ) == object_value.length)
  144. return false;
  145. sDay = object_value.substring((sMonth.length + 1), isplit);
  146. if (sDay.length == 0)
  147. return false;
  148. isep = object_value.indexOf(' ', isplit + 1);
  149. if (isep == -1) {
  150. sYear = object_value.substring(isplit + 1);
  151. } else {
  152. sYear = object_value.substring(isplit + 1, isep);
  153. sTime = object_value.substring(isep + 1);
  154. if (!ew_CheckTime(sTime)) // Check time
  155. return false;
  156. }
  157. if (!ew_CheckInteger(sMonth))
  158. return false;
  159. else if (!ew_CheckRange(sMonth, 1, 12))
  160. return false;
  161. else if (!ew_CheckInteger(sYear))
  162. return false;
  163. else if (!ew_CheckRange(sYear, 0, 9999))
  164. return false;
  165. else if (!ew_CheckInteger(sDay))
  166. return false;
  167. else if (!ew_CheckDay(sYear, sMonth, sDay))
  168. return false;
  169. else
  170. return true;
  171. }
  172. // Check Date format (yyyy/mm/dd)
  173. function ew_CheckDate(object_value) {
  174. if (object_value.length == 0)
  175. return true;
  176. isplit = object_value.indexOf(EW_DATE_SEPARATOR); // Split by date separator
  177. if (isplit == -1 || isplit == object_value.length)
  178. return false;
  179. sYear = object_value.substring(0, isplit);
  180. isplit = object_value.indexOf(EW_DATE_SEPARATOR, isplit + 1); // Split by date separator
  181. if (isplit == -1 || (isplit + 1 ) == object_value.length)
  182. return false;
  183. sMonth = object_value.substring((sYear.length + 1), isplit);
  184. if (sMonth.length == 0)
  185. return false;
  186. isep = object_value.indexOf(' ', isplit + 1);
  187. if (isep == -1) {
  188. sDay = object_value.substring(isplit + 1);
  189. } else {
  190. sDay = object_value.substring(isplit + 1, isep);
  191. sTime = object_value.substring(isep + 1);
  192. if (!ew_CheckTime(sTime)) // Check time
  193. return false;
  194. }
  195. if (sDay.length == 0)
  196. return false;
  197. if (!ew_CheckInteger(sMonth))
  198. return false;
  199. else if (!ew_CheckRange(sMonth, 1, 12))
  200. return false;
  201. else if (!ew_CheckInteger(sYear))
  202. return false;
  203. else if (!ew_CheckRange(sYear, 0, 9999))
  204. return false;
  205. else if (!ew_CheckInteger(sDay))
  206. return false;
  207. else if (!ew_CheckDay(sYear, sMonth, sDay))
  208. return false;
  209. else
  210. return true;
  211. }
  212. // Check Euro Date format (dd/mm/yyyy)
  213. function ew_CheckEuroDate(object_value) {
  214. if (object_value.length == 0)
  215. return true;
  216. isplit = object_value.indexOf(EW_DATE_SEPARATOR); // Split by date separator
  217. if (isplit == -1 || isplit == object_value.length)
  218. return false;
  219. sDay = object_value.substring(0, isplit);
  220. monthSplit = isplit + 1;
  221. isplit = object_value.indexOf(EW_DATE_SEPARATOR, monthSplit); // Split by date separator
  222. if (isplit == -1 || (isplit + 1 ) == object_value.length)
  223. return false;
  224. sMonth = object_value.substring((sDay.length + 1), isplit);
  225. isep = object_value.indexOf(' ', isplit + 1);
  226. if (isep == -1) {
  227. sYear = object_value.substring(isplit + 1);
  228. } else {
  229. sYear = object_value.substring(isplit + 1, isep);
  230. sTime = object_value.substring(isep + 1);
  231. if (!ew_CheckTime(sTime))
  232. return false;
  233. }
  234. if (!ew_CheckInteger(sMonth))
  235. return false;
  236. else if (!ew_CheckRange(sMonth, 1, 12))
  237. return false;
  238. else if (!ew_CheckInteger(sYear))
  239. return false;
  240. else if (!ew_CheckRange(sYear, 0, null))
  241. return false;
  242. else if (!ew_CheckInteger(sDay))
  243. return false;
  244. else if (!ew_CheckDay(sYear, sMonth, sDay))
  245. return false;
  246. else
  247. return true;
  248. }
  249. // Check day
  250. function ew_CheckDay(checkYear, checkMonth, checkDay) {
  251. maxDay = 31;
  252. if (checkMonth == 4 || checkMonth == 6 || checkMonth == 9 || checkMonth == 11) {
  253. maxDay = 30;
  254. } else if (checkMonth == 2) {
  255. if (checkYear % 4 > 0)
  256. maxDay =28;
  257. else if (checkYear % 100 == 0 && checkYear % 400 > 0)
  258. maxDay = 28;
  259. else
  260. maxDay = 29;
  261. }
  262. return ew_CheckRange(checkDay, 1, maxDay);
  263. }
  264. // Check integer
  265. function ew_CheckInteger(object_value) {
  266. if (object_value.length == 0)
  267. return true;
  268. var decimal_format = ".";
  269. var check_char;
  270. check_char = object_value.indexOf(decimal_format);
  271. if (check_char < 1)
  272. return ew_CheckNumber(object_value);
  273. else
  274. return false;
  275. }
  276. // Check number range
  277. function ew_NumberRange(object_value, min_value, max_value) {
  278. if (min_value != null) {
  279. if (object_value < min_value)
  280. return false;
  281. }
  282. if (max_value != null) {
  283. if (object_value > max_value)
  284. return false;
  285. }
  286. return true;
  287. }
  288. // Check number
  289. function ew_CheckNumber(object_value) {
  290. if (object_value.length == 0)
  291. return true;
  292. var start_format = " .+-0123456789";
  293. var number_format = " .0123456789";
  294. var check_char;
  295. var decimal = false;
  296. var trailing_blank = false;
  297. var digits = false;
  298. check_char = start_format.indexOf(object_value.charAt(0));
  299. if (check_char == 1)
  300. decimal = true;
  301. else if (check_char < 1)
  302. return false;
  303. for (var i = 1; i < object_value.length; i++) {
  304. check_char = number_format.indexOf(object_value.charAt(i))
  305. if (check_char < 0) {
  306. return false;
  307. } else if (check_char == 1) {
  308. if (decimal)
  309. return false;
  310. else
  311. decimal = true;
  312. } else if (check_char == 0) {
  313. if (decimal || digits)
  314. trailing_blank = true;
  315. } else if (trailing_blank) {
  316. return false;
  317. } else {
  318. digits = true;
  319. }
  320. }
  321. return true;
  322. }
  323. // Check range
  324. function ew_CheckRange(object_value, min_value, max_value) {
  325. if (object_value.length == 0)
  326. return true;
  327. if (!ew_CheckNumber(object_value))
  328. return false;
  329. else
  330. return (ew_NumberRange((eval(object_value)), min_value, max_value));
  331. return true;
  332. }
  333. // Check time
  334. function ew_CheckTime(object_value) {
  335. if (object_value.length == 0)
  336. return true;
  337. isplit = object_value.indexOf(':');
  338. if (isplit == -1 || isplit == object_value.length)
  339. return false;
  340. sHour = object_value.substring(0, isplit);
  341. iminute = object_value.indexOf(':', isplit + 1);
  342. if (iminute == -1 || iminute == object_value.length)
  343. sMin = object_value.substring((sHour.length + 1));
  344. else
  345. sMin = object_value.substring((sHour.length + 1), iminute);
  346. if (!ew_CheckInteger(sHour))
  347. return false;
  348. else if (!ew_CheckRange(sHour, 0, 23))
  349. return false;
  350. if (!ew_CheckInteger(sMin))
  351. return false;
  352. else if (!ew_CheckRange(sMin, 0, 59))
  353. return false;
  354. if (iminute != -1) {
  355. sSec = object_value.substring(iminute + 1);
  356. if (!ew_CheckInteger(sSec))
  357. return false;
  358. else if (!ew_CheckRange(sSec, 0, 59))
  359. return false;
  360. }
  361. return true;
  362. }
  363. // Check phone
  364. function ew_CheckPhone(object_value) {
  365. if (object_value.length == 0)
  366. return true;
  367. if (object_value.length != 12)
  368. return false;
  369. if (!ew_CheckNumber(object_value.substring(0,3)))
  370. return false;
  371. else if (!ew_NumberRange((eval(object_value.substring(0,3))), 100, 1000))
  372. return false;
  373. if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ")
  374. return false
  375. if (!ew_CheckNumber(object_value.substring(4,7)))
  376. return false;
  377. else if (!ew_NumberRange((eval(object_value.substring(4,7))), 100, 1000))
  378. return false;
  379. if (object_value.charAt(7) != "-" && object_value.charAt(7) != " ")
  380. return false;
  381. if (object_value.charAt(8) == "-" || object_value.charAt(8) == "+")
  382. return false;
  383. else
  384. return (ew_CheckInteger(object_value.substring(8,12)));
  385. }
  386. // Check zip
  387. function ew_CheckZip(object_value) {
  388. if (object_value.length == 0)
  389. return true;
  390. if (object_value.length != 5 && object_value.length != 10)
  391. return false;
  392. if (object_value.charAt(0) == "-" || object_value.charAt(0) == "+")
  393. return false;
  394. if (!ew_CheckInteger(object_value.substring(0,5)))
  395. return false;
  396. if (object_value.length == 5)
  397. return true;
  398. if (object_value.charAt(5) != "-" && object_value.charAt(5) != " ")
  399. return false;
  400. if (object_value.charAt(6) == "-" || object_value.charAt(6) == "+")
  401. return false;
  402. return (ew_CheckInteger(object_value.substring(6,10)));
  403. }
  404. // Check credit card
  405. function ew_CheckCreditCard(object_value) {
  406. var white_space = " -";
  407. var creditcard_string = "";
  408. var check_char;
  409. if (object_value.length == 0)
  410. return true;
  411. for (var i = 0; i < object_value.length; i++) {
  412. check_char = white_space.indexOf(object_value.charAt(i));
  413. if (check_char < 0)
  414. creditcard_string += object_value.substring(i, (i + 1));
  415. }
  416. if (creditcard_string.length == 0)
  417. return false;
  418. if (creditcard_string.charAt(0) == "+")
  419. return false;
  420. if (!ew_CheckInteger(creditcard_string))
  421. return false;
  422. var doubledigit = creditcard_string.length % 2 == 1 ? false : true;
  423. var checkdigit = 0;
  424. var tempdigit;
  425. for (var i = 0; i < creditcard_string.length; i++) {
  426. tempdigit = eval(creditcard_string.charAt(i));
  427. if (doubledigit) {
  428. tempdigit *= 2;
  429. checkdigit += (tempdigit % 10);
  430. if ((tempdigit / 10) >= 1.0)
  431. checkdigit++;
  432. doubledigit = false;
  433. } else {
  434. checkdigit += tempdigit;
  435. doubledigit = true;
  436. }
  437. }
  438. return (checkdigit % 10) == 0 ? true : false;
  439. }
  440. // Check social security number
  441. function ew_CheckSSC(object_value) {
  442. var white_space = " -+.";
  443. var ssc_string="";
  444. var check_char;
  445. if (object_value.length == 0)
  446. return true;
  447. if (object_value.length != 11)
  448. return false;
  449. if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ")
  450. return false;
  451. if (object_value.charAt(6) != "-" && object_value.charAt(6) != " ")
  452. return false;
  453. for (var i = 0; i < object_value.length; i++) {
  454. check_char = white_space.indexOf(object_value.charAt(i));
  455. if (check_char < 0)
  456. ssc_string += object_value.substring(i, (i + 1));
  457. }
  458. if (ssc_string.length != 9)
  459. return false;
  460. if (!ew_CheckInteger(ssc_string))
  461. return false;
  462. return true;
  463. }
  464. // Check email
  465. function ew_CheckEmail(object_value) {
  466. if (object_value.length == 0)
  467. return true;
  468. if (!(object_value.indexOf("@") > -1 && object_value.indexOf(".") > -1))
  469. return false;
  470. return true;
  471. }
  472. // Check GUID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
  473. function ew_CheckGUID(object_value) {
  474. if (object_value.length == 0)
  475. return true;
  476. object_value = object_value.replace(/^\s*|\s*$/g, "");
  477. var re1 = new RegExp("^(\{{1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{1})$");
  478. var re2 = new RegExp("^(([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12})$");
  479. return re1.test(object_value) || re2.test(object_value);
  480. }
  481. // Check file extension
  482. function ew_CheckFileType(object_value) {
  483. if (object_value.length == 0)
  484. return true;
  485. if (typeof EW_UPLOAD_ALLOWED_FILE_EXT == "undefined")
  486. return true;
  487. var fileTypes = EW_UPLOAD_ALLOWED_FILE_EXT.split(",");
  488. var ext = object_value.substring(object_value.lastIndexOf(".")+1, object_value.length).toLowerCase();
  489. for (var i=0; i < fileTypes.length; i++) {
  490. if (fileTypes[i] == ext)
  491. return true;
  492. }
  493. return false;
  494. }
  495. // Update a combobox with filter value
  496. // object_value_array format
  497. // object_value_array[n] = option value
  498. // object_value_array[n+1] = option text 1
  499. // object_value_array[n+2] = option text 2
  500. // object_value_array[n+3] = option filter value
  501. function ew_UpdateOpt(obj, object_value_array, parent_obj) {
  502. var i, j, lo;
  503. var arValue = [];
  504. if (obj.options) {
  505. for (i=0; i<obj.options.length; i++) {
  506. if (obj.options[i].selected)
  507. arValue[arValue.length] = obj.options[i].value;
  508. }
  509. } else {
  510. arValue[arValue.length] = obj.value;
  511. }
  512. lo = (obj.type == "select-multiple") ? 0 : 1;
  513. for (i=obj.length-1; i>=lo; i--) {
  514. obj.options[i] = null;
  515. }
  516. if (parent_obj.options) {
  517. for (i=0; i<parent_obj.options.length; i++) {
  518. if (parent_obj.options[i].selected) {
  519. for (j=0; j<object_value_array.length; j=j+4) {
  520. if (object_value_array[j+3].toUpperCase() == parent_obj.options[i].value.toUpperCase()) {
  521. ew_NewOpt(obj, object_value_array[j], object_value_array[j+1], object_value_array[j+2]);
  522. }
  523. }
  524. }
  525. }
  526. } else {
  527. for (j=0; j<object_value_array.length; j=j+4) {
  528. if (object_value_array[j+3].toUpperCase() == parent_obj.value.toUpperCase()) {
  529. ew_NewOpt(obj, object_value_array[j], object_value_array[j+1], object_value_array[j+2]);
  530. }
  531. }
  532. }
  533. ew_SelectOpt(obj, arValue);
  534. }
  535. // Create combobox option
  536. function ew_NewOpt(obj, value, text1, text2) {
  537. var text = text1;
  538. if (text2 != "")
  539. text += EW_FIELD_SEP + text2;
  540. var optionName = new Option(text, value, false, false)
  541. obj.options[obj.length] = optionName;
  542. }
  543. // Select combobox option
  544. function ew_SelectOpt(obj, value_array) {
  545. var i, j;
  546. for (i=0; i<value_array.length; i++) {
  547. for (j=0; j<obj.length; j++) {
  548. if (obj.options[j].value.toUpperCase() == value_array[i].toUpperCase()) {
  549. obj.options[j].selected = true;
  550. break;
  551. }
  552. }
  553. }
  554. if (obj.autoselect && obj.autoselect.toLowerCase() == "true") {
  555. if (obj.type == "select-one" && obj.options.length == 2 &&
  556. !obj.options[1].selected) {
  557. obj.options[1].selected = true;
  558. } else if (obj.type == "select-multiple" && obj.options.length == 1 &&
  559. !obj.options[0].selected) {
  560. obj.options[0].selected = true;
  561. }
  562. }
  563. }
  564. // Get image width/height
  565. function ew_GetImageSize(file_object, width_object, height_object) {
  566. if (navigator.appVersion.indexOf("MSIE") != -1) {
  567. myimage = new Image();
  568. myimage.onload = function () {
  569. width_object.value = myimage.width; height_object.value = myimage.height;
  570. }
  571. myimage.src = file_object.value;
  572. }
  573. }
  574. // Get Netscape Version
  575. function ew_GetNNVersionNumber() {
  576. if (navigator.appName == "Netscape") {
  577. var appVer = parseFloat(navigator.appVersion);
  578. if (appVer < 5) {
  579. return appVer;
  580. } else {
  581. if (typeof navigator.vendorSub != "undefined")
  582. return parseFloat(navigator.vendorSub);
  583. }
  584. }
  585. return 0;
  586. }
  587. // Get Ctrl key for multiple column sort
  588. function ew_Sort(e, url) {
  589. var ctrlPressed = 0;
  590. if (parseInt(navigator.appVersion) > 3) {
  591. if (navigator.appName == "Netscape") {
  592. var ua = navigator.userAgent;
  593. var isFirefox = (ua != null && ua.indexOf("Firefox/") != -1);
  594. if ((!isFirefox && getNNVersionNumber() >= 6) || isFirefox)
  595. ctrlPressed = e.ctrlKey;
  596. else
  597. ctrlPressed = ((e.modifiers+32).toString(2).substring(3,6).charAt(1)=="1");
  598. } else {
  599. ctrlPressed = event.ctrlKey;
  600. }
  601. if (ctrlPressed) {
  602. var newPage = "<scr" + "ipt language=\"JavaScript\">setTimeout('window.location.href=\"" + url + "&ctrl=1\"', 10);</scr" + "ipt>";
  603. document.write(newPage);
  604. document.close();
  605. return false;
  606. }
  607. }
  608. return true;
  609. }
  610. // Confirm message
  611. function ew_Confirm(msg)
  612. {
  613. return confirm(msg);
  614. }
  615. // Confirm Delete Message
  616. function ew_ConfirmDelete(msg)
  617. {
  618. var agree = confirm(msg);
  619. if (!agree)
  620. ew_ClearDelete(); // Clear delete status
  621. return agree;
  622. }
  623. // Set mouse over color
  624. function ew_MouseOver(row) {
  625. row.mover = true; // Mouse over
  626. if (typeof(row.oClassName) == "undefined")
  627. row.oClassName = row.className;
  628. if (typeof(row.oCssText) == "undefined")
  629. row.oCssText = row.style.cssText;
  630. if (!row.selected) {
  631. row.className = rowmoverclass;
  632. row.style.cssText = "";
  633. }
  634. }
  635. // Set mouse out color
  636. function ew_MouseOut(row) {
  637. row.mover = false; // Mouse out
  638. if (!row.selected)
  639. ew_SetColor(row);
  640. }
  641. // Set row color
  642. function ew_SetColor(row) {
  643. if (row.selected) {
  644. if (typeof(row.oClassName) == "undefined")
  645. row.oClassName = row.className;
  646. if (typeof(row.oCssText) == "undefined")
  647. row.oCssText = row.style.cssText;
  648. row.className = rowselectedclass;
  649. } else if (row.edit) {
  650. row.className = roweditclass;
  651. } else {
  652. if (typeof(row.oClassName) != "undefined")
  653. row.className = row.oClassName;
  654. if (typeof(row.oCssText) != "undefined")
  655. row.style.cssText = row.oCssText;
  656. }
  657. }
  658. // Set selected row color
  659. function ew_Click(row) {
  660. if (row.deleteclicked)
  661. row.deleteclicked = false; // Reset delete button/checkbox clicked
  662. else {
  663. var bselected = row.selected;
  664. ew_ClearSelected(); // Clear all other selected rows
  665. if (!row.deleterow) row.selected = !bselected; // Toggle
  666. ew_SetColor(row);
  667. }
  668. }
  669. // Clear selected rows color
  670. function ew_ClearSelected() {
  671. var table = document.getElementById(EW_LIST_TABLE_NAME);
  672. for (var i = firstrowoffset; i < table.rows.length-lastrowoffset; i++) {
  673. var thisrow = table.rows[i];
  674. if (thisrow.selected && !thisrow.deleterow) {
  675. thisrow.selected = false;
  676. ew_SetColor(thisrow);
  677. }
  678. }
  679. }
  680. // Clear all row delete status
  681. function ew_ClearDelete() {
  682. var table = document.getElementById(EW_LIST_TABLE_NAME);
  683. for (var i = firstrowoffset; i < table.rows.length-lastrowoffset; i++) {
  684. var thisrow = table.rows[i];
  685. thisrow.deleterow = false;
  686. }
  687. }
  688. // Click all delete button
  689. function ew_ClickAll(chkbox) {
  690. var table = document.getElementById(EW_LIST_TABLE_NAME);
  691. for (var i = firstrowoffset; i < table.rows.length-lastrowoffset; i++) {
  692. var thisrow = table.rows[i];
  693. thisrow.selected = chkbox.checked;
  694. thisrow.deleterow = chkbox.checked;
  695. ew_SetColor(thisrow);
  696. }
  697. }
  698. // Click single delete link
  699. function ew_ClickDelete() {
  700. ew_ClearSelected();
  701. var table = document.getElementById(EW_LIST_TABLE_NAME);
  702. for (var i = firstrowoffset; i < table.rows.length-lastrowoffset; i++) {
  703. var thisrow = table.rows[i];
  704. if (thisrow.mover) {
  705. thisrow.deleteclicked = true;
  706. thisrow.deleterow = true;
  707. thisrow.selected = true;
  708. ew_SetColor(thisrow);
  709. break;
  710. }
  711. }
  712. }
  713. // Click multiple checkbox
  714. function ew_ClickMultiCheckbox(chkbox) {
  715. ew_ClearSelected();
  716. var table = document.getElementById(EW_LIST_TABLE_NAME);
  717. for (var i = firstrowoffset; i < table.rows.length-lastrowoffset; i++) {
  718. var thisrow = table.rows[i];
  719. if (thisrow.mover) {
  720. thisrow.deleteclicked = true;
  721. thisrow.deleterow = chkbox.checked;
  722. thisrow.selected = chkbox.checked;
  723. ew_SetColor(thisrow);
  724. break;
  725. }
  726. }
  727. }
  728. // Toggle highlight
  729. function ew_ToggleHighlight(lnk) {
  730. if (!lnk || !document.getElementsByName)
  731. return;
  732. var elems = document.getElementsByName("ewHighlightSearch");
  733. var i, el;
  734. for (i=0; i<elems.length; i++) {
  735. elem = elems[i];
  736. elem.className = (elem.className == "") ? "ewHighlightSearch" : "";
  737. }
  738. lnk.innerHTML = (lnk.innerHTML == EW_HIDE_HIGHLIGHT) ? EW_SHOW_HIGHLIGHT : EW_HIDE_HIGHLIGHT;
  739. }
  740. // Create XMLHTTP
  741. // Note: AJAX feature requires IE5.5+, FF1+, and NS6.2+
  742. function ew_CreateXMLHttp() {
  743. if (!(document.getElementsByTagName || document.all))
  744. return;
  745. var ret = null;
  746. try {
  747. ret = new ActiveXObject('Msxml2.XMLHTTP');
  748. } catch (e) {
  749. try {
  750. ret = new ActiveXObject('Microsoft.XMLHTTP');
  751. } catch (ee) {
  752. ret = null;
  753. }
  754. }
  755. if (!ret && typeof XMLHttpRequest != 'undefined')
  756. ret = new XMLHttpRequest();
  757. return ret;
  758. }
  759. // Update a combobox with filter value by AJAX
  760. function ew_AjaxUpdateOpt(obj, parent_obj, async) {
  761. if (!(document.getElementsByTagName || document.all))
  762. return;
  763. try {
  764. var i, j, lo;
  765. var arValue = [];
  766. if (obj.options) {
  767. for (i=0; i<obj.options.length; i++) {
  768. if (obj.options[i].selected)
  769. arValue[arValue.length] = obj.options[i].value;
  770. }
  771. } else {
  772. arValue[arValue.length] = obj.value;
  773. }
  774. lo = (obj.type == "select-multiple") ? 0 : 1;
  775. for (i=obj.length-1; i>=lo; i--) {
  776. obj.options[i] = null;
  777. }
  778. objName = obj.name;
  779. if (objName.substr(objName.length-2) == "[]") objName = objName.substr(0, objName.length-2);
  780. var s = eval('obj.form.elements["s_' + objName + '"].value');
  781. if (!s || s == '') return;
  782. var lc = eval('obj.form.elements["lc_' + objName + '"].value');
  783. if (!lc || lc == '') return;
  784. var ld1 = eval('obj.form.elements["ld1_' + objName + '"].value');
  785. if (!ld1 || ld1 == '') return;
  786. var ld2 = eval('obj.form.elements["ld2_' + objName + '"].value');
  787. if (!ld2 || ld2 == '') return;
  788. var lft = eval('obj.form.elements["lft_' + objName + '"].value');
  789. var xmlHttp = ew_CreateXMLHttp();
  790. if (!xmlHttp) return;
  791. var arSelValue = [];
  792. if (parent_obj.options) {
  793. for (i=0; i<parent_obj.options.length; i++) {
  794. if (parent_obj.options[i].selected)
  795. arSelValue[arSelValue.length] = encodeURIComponent(parent_obj.options[i].value);
  796. }
  797. } else {
  798. arSelValue[arSelValue.length] = encodeURIComponent(parent_obj.value);
  799. }
  800. xmlHttp.open('get', EW_LOOKUP_FILE_NAME + '?s=' + s + '&q=' + arSelValue.join(",") +
  801. '&lc=' + encodeURIComponent(lc) +
  802. '&ld1=' + encodeURIComponent(ld1) +
  803. '&ld2=' + encodeURIComponent(ld2) +
  804. '&lft=' + encodeURIComponent(lft), async);
  805. var f = function() {
  806. //alert(xmlHttp.responseText);
  807. if (xmlHttp.readyState == 4 && xmlHttp.status == 200 &&
  808. xmlHttp.responseText) {
  809. //alert(xmlHttp.responseText);
  810. var object_value_array = xmlHttp.responseText.split('\r');
  811. for (var j=0; j<object_value_array.length-2; j=j+3) {
  812. ew_NewOpt(obj, object_value_array[j], object_value_array[j+1],
  813. object_value_array[j+2]);
  814. }
  815. ew_SelectOpt(obj, arValue);
  816. }
  817. }
  818. if (async || document.all)
  819. xmlHttp.onreadystatechange = f;
  820. xmlHttp.send(null);
  821. if (!async && !document.all)
  822. f();
  823. } catch (e) {}
  824. }
  825. // Html encode text
  826. function ew_HtmlEncode(text) {
  827. var str = text;
  828. str = str.replace(/&/g, '&amp');
  829. str = str.replace(/\"/g, '&quot;');
  830. str = str.replace(/</g, '&lt;');
  831. str = str.replace(/>/g, '&gt;');
  832. return str;
  833. }
  834. // Google Suggest for textbox by AJAX
  835. // object_value_array format
  836. // object_value_array[n] = display value
  837. // object_value_array[n+1] = display value 2
  838. function ew_AjaxUpdateTextBox(object_name) {
  839. var obj, as;
  840. if (document.all) {
  841. obj = document.all(object_name);
  842. if (obj) as = document.all('as_' + object_name);
  843. } else if (document.getElementById) {
  844. obj = document.getElementById(object_name);
  845. if (obj) as = document.getElementById('as_' + object_name);
  846. }
  847. if (!obj || !as) return false;
  848. try {
  849. var s = eval('obj.form.s_' + obj.name + '.value');
  850. //var s = eval('s_' + obj.name);
  851. var q = obj.value;
  852. q = q.replace(/^\s*/, ''); // left trim
  853. if (!s || s == '' || q.length == 0) return false;
  854. var lt = eval('obj.form.lt_' + obj.name + '.value');
  855. if (!lt || lt == '') return;
  856. var xmlHttp = ew_CreateXMLHttp();
  857. if (!xmlHttp) return;
  858. xmlHttp.open('get', EW_LOOKUP_FILE_NAME + '?s=' + s + '&q=' + encodeURIComponent(q) +
  859. '&lt=' + encodeURIComponent(lt));
  860. xmlHttp.onreadystatechange = function() {
  861. //if (xmlHttp.readyState == 4) alert(xmlHttp.responseText);
  862. if (xmlHttp.readyState == 4 && xmlHttp.status == 200 &&
  863. xmlHttp.responseText) {
  864. var object_value_array = xmlHttp.responseText.split('\r');
  865. var sHtml = '';
  866. for (var j=0; j<object_value_array.length-2; j=j+2) {
  867. var value = object_value_array[j];
  868. var text = object_value_array[j];
  869. if (object_value_array[j+1] != "")
  870. text += EW_FIELD_SEP + object_value_array[j+1];
  871. var i = j/2 + 1;
  872. sCtrlID = object_name + "_mi_" + i;
  873. sFunc1 = "ew_AstOnMouseClick(" + i + ", \"" + object_name + "\", \"" + as.id + "\")";
  874. sFunc2 = "ew_AstOnMouseOver(" + i + ", \"" + object_name + "\")";
  875. sHtml += "<div class=\"ewAstListItem\" id=\"" + sCtrlID + "\" name=\"" + sCtrlID + "\" onclick='" + sFunc1 + "' + onmouseover='" + sFunc2 + "'>" + text + "</div>";
  876. // add hidden field to store the value of current item
  877. sMenuItemValueID = sCtrlID + "_value";
  878. sHtml += "\n\r";
  879. sHtml += "<input type=\"hidden\" id=\"" + sMenuItemValueID + "\" name=\"" + sMenuItemValueID + "\" value=\"" + ew_HtmlEncode(text) + "\">";
  880. }
  881. //alert(sHtml);
  882. ew_AstShowDiv(as.id, sHtml);
  883. } else {
  884. ew_AstHideDiv(as.id);
  885. }
  886. }
  887. xmlHttp.send(null);
  888. } catch (e) {}
  889. return false;
  890. }
  891. // Auto fill text boxes by AJAX
  892. function ew_AjaxAutoFill(obj, async) {
  893. if (!(document.getElementsByTagName || document.all))
  894. return;
  895. try {
  896. var i, j;
  897. var selValue;
  898. if (obj.options) {
  899. if (obj.selectedIndex > -1) selValue = obj.options[obj.selectedIndex].value;
  900. } else {
  901. selValue = obj.value;
  902. }
  903. var s = eval('obj.form.sf_' + obj.name + '.value');
  904. if (!s || s == '' || selValue == '') return;
  905. var lt = eval('obj.form.lt_' + obj.name + '.value');
  906. if (!lt || lt == '') return;
  907. var xmlHttp = ew_CreateXMLHttp();
  908. if (!xmlHttp) return;
  909. xmlHttp.open('get', EW_LOOKUP_FILE_NAME + '?s=' + s + '&q=' + encodeURIComponent(selValue) +
  910. '&lt=' + encodeURIComponent(lt), async);
  911. var f = function() {
  912. //alert(xmlHttp.responseText);
  913. if (xmlHttp.readyState == 4 && xmlHttp.status == 200 &&
  914. xmlHttp.responseText) {
  915. //alert(xmlHttp.responseText);
  916. var object_value_array = xmlHttp.responseText.split('\r');
  917. var destnames = eval('obj.form.ln_' + obj.name + '.value');
  918. var dest_array = destnames.split(',');
  919. for (var j=0; j<dest_array.length; j=j+1) {
  920. var destobj = ew_GetFormElement(obj.form, dest_array[j]);
  921. if ((destobj) && (j<object_value_array.length))
  922. destobj.value = object_value_array[j];
  923. }
  924. }
  925. }
  926. if (async || document.all)
  927. xmlHttp.onreadystatechange = f;
  928. xmlHttp.send(null);
  929. if (!async && !document.all)
  930. f();
  931. } catch (e) {}
  932. }
  933. // Get element from form
  934. function ew_GetFormElement(f, name) {
  935. for(var i=0; i<f.elements.length; i++) {
  936. if(f.elements[i].name == name) {
  937. return f.elements[i];
  938. }
  939. }
  940. }
  941. // Extended basic search clear form
  942. function ew_ClearForm(objForm){
  943. with (objForm) {
  944. for (var i=0; i<elements.length; i++){
  945. var tmpObj = eval(elements[i]);
  946. if (tmpObj.type == "checkbox" || tmpObj.type == "radio"){
  947. tmpObj.checked = false;
  948. } else if (tmpObj.type == "select-one"){
  949. tmpObj.selectedIndex = 0;
  950. } else if (tmpObj.type == "select-multiple") {
  951. for (var j=0; j<tmpObj.options.length; j++)
  952. tmpObj.options[j].selected = false;
  953. } else if (tmpObj.type == "text" || tmpObj.type == "textarea"){
  954. tmpObj.value = "";
  955. }
  956. }
  957. }
  958. }
  959. // Functions for adding new option dynamically
  960. // Show add option
  961. function ew_ShowAddOption(id) {
  962. if (!document.getElementById) return;
  963. var elem;
  964. elem = document.getElementById("ao_" + id);
  965. if (elem) elem.style.display = "block";
  966. elem = document.getElementById("cb_" + id);
  967. if (elem) elem.style.display = "none";
  968. }
  969. // Hide add option
  970. function ew_HideAddOption(id) {
  971. var elem;
  972. elem = document.getElementById("cb_" + id);
  973. if (elem) elem.style.display = "inline";
  974. elem = document.getElementById("ao_" + id);
  975. if (elem) elem.style.display = "none";
  976. }
  977. // Post new option
  978. function ew_PostNewOption(id) {
  979. var elem;
  980. var url = EW_ADD_OPTION_FILE_NAME + "?";
  981. elem = document.getElementById("ltn_" + id);
  982. url += "ltn=" + encodeURIComponent(elem.value);
  983. elem = document.getElementById("pfn_" + id);
  984. if (elem) url += "&pfn=" + encodeURIComponent(elem.value);
  985. elem = document.getElementById("pvn_" + id);
  986. if (elem) elem = document.getElementById(elem.value);
  987. if ((elem) && (elem.options) && (elem.selectedIndex != -1)) url += "&pf=" + encodeURIComponent(elem.options[elem.selectedIndex].value);
  988. elem = document.getElementById("pfq_" + id);
  989. if (elem) url += "&pfq=" + encodeURIComponent(elem.value);
  990. elem = document.getElementById("dfn_" + id);
  991. if (elem) url += "&dfn=" + encodeURIComponent(elem.value);
  992. elem = document.getElementById("dfq_" + id);
  993. if (elem) url += "&dfq=" + encodeURIComponent(elem.value);
  994. elem = document.getElementById("lfn_" + id);
  995. if (elem) url += "&lfn=" + encodeURIComponent(elem.value);
  996. elem = document.getElementById("lfq_" + id);
  997. if (elem) url += "&lfq=" + encodeURIComponent(elem.value);
  998. elem = document.getElementById("df2n_" + id);
  999. if (elem) url += "&df2n=" + encodeURIComponent(elem.value);
  1000. elem = document.getElementById("df2q_" + id);
  1001. if (elem) url += "&df2q=" + encodeURIComponent(elem.value);
  1002. var lf = document.getElementById("lf_" + id);
  1003. var lfm = document.getElementById("lfm_" + id);
  1004. if (lf) {
  1005. if (ew_HasValue(lf)) {
  1006. url += "&lf=" + encodeURIComponent(lf.value);
  1007. } else {
  1008. if (!ew_OnError(lf, (lfm?lfm.value:"Missing link field value")))
  1009. return false;
  1010. }
  1011. }
  1012. var df = document.getElementById("df_" + id);
  1013. var dfm = document.getElementById("dfm_" + id);
  1014. if (df) {
  1015. if (ew_HasValue(df)) {
  1016. url += "&df=" + encodeURIComponent(df.value);
  1017. } else {
  1018. if (!ew_OnError(df, (dfm?dfm.value:"Missing display field value")))
  1019. return false;
  1020. }
  1021. }
  1022. var df2 = document.getElementById("df2_" + id);
  1023. var df2m = document.getElementById("df2m_" + id);
  1024. if (df2) {
  1025. if (ew_HasValue(df2)) {
  1026. url += "&df2=" + encodeURIComponent(df2.value);
  1027. } else {
  1028. if (!ew_OnError(df2, (df2m?df2m.value:"Missing display field #2 value")))
  1029. return false;
  1030. }
  1031. }
  1032. try {
  1033. var xmlHttp = ew_CreateXMLHttp();
  1034. if (!xmlHttp) return;
  1035. xmlHttp.open('get', url, true); // not Async
  1036. xmlHttp.onreadystatechange = function() {
  1037. //alert(xmlHttp.responseText);
  1038. if (xmlHttp.readyState == 4 && xmlHttp.status == 200 &&
  1039. xmlHttp.responseText) {
  1040. var opt = xmlHttp.responseText.split('\r');
  1041. if (opt.length > 3 && opt[0]== 'OK') {
  1042. var elem = document.getElementById(id);
  1043. if (!elem) elem = document.getElementById(id + '[]');
  1044. if (elem) {
  1045. ew_NewOpt(elem, opt[1], opt[2], opt[3]);
  1046. ew_HideAddOption(id);
  1047. elem.options[elem.options.length-1].selected = true;
  1048. if (elem.onchange) elem.onchange();
  1049. elem.focus();
  1050. }
  1051. } else {
  1052. alert(xmlHttp.responseText);
  1053. }
  1054. }
  1055. }
  1056. xmlHttp.send(null);
  1057. } catch (e) {}
  1058. }
  1059. // Functions for auto suggest box
  1060. // Set auto suggest selected value
  1061. function ew_AstSetSelectedValue(sValue) {
  1062. var hdnSelectedValue = document.getElementById("sv_" + EW_AST_TEXT_BOX_ID);
  1063. hdnSelectedValue.value = sValue;
  1064. }
  1065. // Set auto suggest text box value
  1066. function ew_AstSetTextBoxValue() {
  1067. var divListItem;
  1068. divListItem = ew_AstGetSelListItemDiv();
  1069. if (divListItem) {
  1070. var sListItemValueID = ew_GetDivListItemID(EW_AST_SELECT_LIST_ITEM ) + "_value";
  1071. var hdnListItemValue = document.getElementById(sListItemValueID);
  1072. if (hdnListItemValue)
  1073. ew_AstSetSelectedValue(hdnListItemValue.value);
  1074. var txtCtrl = document.getElementById(EW_AST_TEXT_BOX_ID);
  1075. txtCtrl.value = divListItem.innerHTML;
  1076. }
  1077. }
  1078. // Get auto suggest text box value
  1079. function ew_AstGetTextBoxValue() {
  1080. var txtCtrl = document.getElementById(EW_AST_TEXT_BOX_ID);
  1081. return (txtCtrl) ? txtCtrl.value : '';
  1082. }
  1083. // Auto suggest on mouse click event
  1084. function ew_AstOnMouseClick(nListIndex, sTextBoxID, sDivID) {
  1085. EW_AST_SELECT_LIST_ITEM = nListIndex;
  1086. EW_AST_TEXT_BOX_ID = sTextBoxID;
  1087. ew_AstSetTextBoxValue();
  1088. ew_AstHideDiv(sDivID);
  1089. }
  1090. // Auto suggest on mouse over event
  1091. function ew_AstOnMouseOver(nListIndex, sTextBoxID) {
  1092. EW_AST_TEXT_BOX_ID = sTextBoxID;
  1093. ew_AstSelectListItem(nListIndex);
  1094. }
  1095. // Auto suggest on key press event
  1096. function ew_AstOnKeyPress(evt) {
  1097. if ((ew_AstGetKey(evt) == 13) && (EW_AST_CANCEL_SUBMIT)) return false;
  1098. return true;
  1099. }
  1100. // Auto suggest on key up event
  1101. function ew_AstOnKeyUp(sTextBoxID, sDiv, evt) {
  1102. EW_AST_TEXT_BOX_ID = sTextBoxID;
  1103. var nKey = ew_AstGetKey(evt);
  1104. // skip up/down/enter
  1105. if ((nKey != 38) && (nKey != 40) && (nKey != 13)) {
  1106. var sNewValue;
  1107. sNewValue = ew_AstGetTextBoxValue();
  1108. if ((sNewValue.length <= EW_AST_MAX_NEW_VALUE_LENGTH) && (sNewValue.length > 0)) {
  1109. if (nKey != 27) // skip escape
  1110. ew_AjaxUpdateTextBox(sTextBoxID);
  1111. }
  1112. if (EW_AST_OLD_TEXT_BOX_VALUE != sNewValue)
  1113. ew_AstSetSelectedValue("");
  1114. }
  1115. }
  1116. // Auto suggest on key down event
  1117. function ew_AstOnKeyDown(sTextBoxID, sDiv, evt) {
  1118. EW_AST_TEXT_BOX_ID = sTextBoxID;
  1119. // save current text box value before key press takes affect
  1120. EW_AST_OLD_TEXT_BOX_VALUE = ew_AstGetTextBoxValue();
  1121. var nKey = ew_AstGetKey(evt);
  1122. // handle up/down/enter
  1123. if (nKey == 38) // up arrow
  1124. ew_AstMoveDown();
  1125. else if (nKey == 40) // down arrow
  1126. ew_AstMoveUp();
  1127. else if (nKey == 13) { // enter
  1128. // Note: Netscape will submit the form on pressing enter before firing the
  1129. // keydown event. This only works with IE and FF.
  1130. if (ew_AstIsVisibleDiv(sDiv)) {
  1131. ew_AstHideDiv(sDiv);
  1132. evt.cancelBubble = true;
  1133. if (evt.returnValue) evt.returnValue = false;
  1134. if (evt.stopPropagation) evt.stopPropagation();
  1135. EW_AST_CANCEL_SUBMIT = true;
  1136. } else {
  1137. EW_AST_CANCEL_SUBMIT = false;
  1138. }
  1139. } else {
  1140. ew_AstHideDiv(sDiv);
  1141. }
  1142. return true;
  1143. }
  1144. // Auto suggest get selected item div
  1145. function ew_AstGetSelListItemDiv() {
  1146. return ew_AstGetListItemDiv(EW_AST_SELECT_LIST_ITEM);
  1147. }
  1148. // Auto suggest get list item id
  1149. function ew_GetDivListItemID(nListItem) {
  1150. return (EW_AST_TEXT_BOX_ID + "_mi_" + nListItem);
  1151. }
  1152. // Auto suggest get list item div
  1153. function ew_AstGetListItemDiv(nListItem) {
  1154. var sDivListItemID;
  1155. sDivListItemID = ew_GetDivListItemID(nListItem);
  1156. return document.getElementById(sDivListItemID);
  1157. }
  1158. // Auto suggest move up
  1159. function ew_AstMoveUp() {
  1160. var nListItem;
  1161. nListItem = EW_AST_SELECT_LIST_ITEM + 1;
  1162. if (ew_AstGetListItemDiv(nListItem)) ew_AstSelectListItem(nListItem);
  1163. }
  1164. // Auto suggest move down
  1165. function ew_AstMoveDown() {
  1166. var nListItem;
  1167. nListItem = EW_AST_SELECT_LIST_ITEM - 1;
  1168. if (nListItem != 0) ew_AstSelectListItem(nListItem);
  1169. }
  1170. // Auto suggest selected list item
  1171. function ew_AstSelectListItem(nListItem) {
  1172. var divListItem;
  1173. divListItem = ew_AstGetListItemDiv(nListItem);
  1174. if(divListItem) {
  1175. if (nListItem != EW_AST_SELECT_LIST_ITEM) {
  1176. ew_AstUnhighlightSelListItem();
  1177. EW_AST_SELECT_LIST_ITEM = nListItem;
  1178. ew_AstSetTextBoxValue();
  1179. divListItem.className = "ewAstSelListItem";
  1180. }
  1181. }
  1182. }
  1183. // Auto suggest unhiglight selected list item
  1184. function ew_AstUnhighlightSelListItem() {
  1185. var divListItem;
  1186. divListItem = ew_AstGetSelListItemDiv();
  1187. if (divListItem) divListItem.className = "ewAstListItem";
  1188. }
  1189. // Auto suggest get key
  1190. function ew_AstGetKey(evt) {
  1191. evt = (evt) ? evt : (window.event) ? event : null;
  1192. if (evt) {
  1193. var cCode = (evt.charCode) ? evt.charCode :
  1194. ((evt.keyCode) ? evt.keyCode :
  1195. ((evt.which) ? evt.which : 0));
  1196. return cCode;
  1197. }
  1198. }
  1199. // Auto suggest hide div
  1200. function ew_AstHideDiv(sDivID) {
  1201. document.getElementById(sDivID).style.visibility = 'hidden';
  1202. EW_AST_SELECT_LIST_ITEM = 0;
  1203. }
  1204. // Auto suggest check if visible div
  1205. function ew_AstIsVisibleDiv(sDivID) {
  1206. return document.getElementById(sDivID).style.visibility != 'hidden';
  1207. }
  1208. // Auto suggest show div
  1209. function ew_AstShowDiv(sDivID, sDivContent) {
  1210. var divList;
  1211. divList = document.getElementById(sDivID);
  1212. var sInnerHtml;
  1213. // use iframe with the same size as the div
  1214. if (document.all) { // IE
  1215. sInnerHtml = "<div id='" + sDivID + "_content' style='z-index:999; position:absolute;'>";
  1216. sInnerHtml += sDivContent;
  1217. sInnerHtml += "</div><iframe id='" + sDivID + "_iframe' src='about:blank' frameborder='1' scrolling='no'></iframe>";
  1218. divList.innerHTML = sInnerHtml;
  1219. var divContent = document.getElementById(sDivID + "_content");
  1220. var divIframe = document.getElementById(sDivID + "_iframe");
  1221. divContent.className = "ewAstList";
  1222. divList.className = "ewAstListBase";
  1223. divIframe.style.width = divContent.offsetWidth + 'px';
  1224. divIframe.style.height = divContent.offsetHeight + 'px';
  1225. divIframe.marginTop = "-" + divContent.offsetHeight + 'px';
  1226. } else {
  1227. divList.innerHTML = sDivContent;
  1228. }
  1229. divList.style.visibility = 'visible';
  1230. }
  1231. // Functions for multi page
  1232. // Multi page add element
  1233. function ew_MultiPageAddElement(elemid, pageIndex) {
  1234. var item = new Array(2);
  1235. item[0] = elemid;
  1236. item[1] = pageIndex;
  1237. ew_MultiPageElements.push(item);
  1238. }
  1239. // Multi page init
  1240. function ew_InitMultiPage() {
  1241. if (!(document.getElementById || document.all))
  1242. return;
  1243. ew_MaxPageIndex = 0;
  1244. for (var i=0; i<ew_MultiPageElements.length; i++) {
  1245. if (ew_MultiPageElements[i][1] > ew_MaxPageIndex)
  1246. ew_MaxPageIndex = ew_MultiPageElements[i][1];
  1247. }
  1248. ew_MinPageIndex = ew_MaxPageIndex;
  1249. for (var i=0; i<ew_MultiPageElements.length; i++) {
  1250. if (ew_MultiPageElements[i][1] < ew_MinPageIndex)
  1251. ew_MinPageIndex = ew_MultiPageElements[i][1];
  1252. }
  1253. ew_NextPage();
  1254. // if ASP.NET
  1255. if (typeof Page_ClientValidate == "function") {
  1256. original_Page_ClientValidate = Page_ClientValidate;
  1257. Page_ClientValidate = function() {
  1258. var isValid;
  1259. isValid = original_Page_ClientValidate();
  1260. if (!isValid)
  1261. ew_FocusInvalidElement();
  1262. return isValid;
  1263. }
  1264. }
  1265. }
  1266. // Multi page check if element exists
  1267. function ew_PageHasElements(pageIndex) {
  1268. for (var i=0; i<ew_MultiPageElements.length; i++) {
  1269. if (ew_MultiPageElements[i][1] == pageIndex)
  1270. return true;
  1271. }
  1272. return false;
  1273. }
  1274. // Multi page go to next page
  1275. function ew_NextPage() {
  1276. if (!(document.getElementById || document.all))
  1277. return;
  1278. ew_EnableButtons(false);
  1279. var hasElements = false;
  1280. while (!hasElements && ew_PageIndex < ew_MaxPageIndex) {
  1281. hasElements = ew_PageHasElements(++ew_PageIndex);
  1282. if (hasElements)
  1283. ew_ShowPage();
  1284. }
  1285. ew_UpdateButtons();
  1286. ew_EnableButtons(true);
  1287. }
  1288. // Multi page go to prev page
  1289. function ew_PrevPage() {
  1290. if (!(document.getElementById || document.all))
  1291. return;
  1292. ew_EnableButtons(false);
  1293. var hasElements = false;
  1294. while (!hasElements && ew_PageIndex > ew_MinPageIndex) {
  1295. hasElements = ew_PageHasElements(--ew_PageIndex);
  1296. if (hasElements)
  1297. ew_ShowPage();
  1298. }
  1299. ew_UpdateButtons();
  1300. ew_EnableButtons(true);
  1301. }
  1302. // Multi page show this page
  1303. function ew_ShowPage() {
  1304. var fn;
  1305. if (!fn && typeof ew_CreateEditor == 'function')
  1306. fn = ew_CreateEditor;
  1307. // if (!fn && typeof EW_createEditor == 'function')
  1308. // fn = EW_createEditor; // for backward compatibility
  1309. for (var i=0; i<ew_MultiPageElements.length; i++) {
  1310. var row = ew_GetRowByElementId(ew_MultiPageElements[i][0]);
  1311. if (row) {
  1312. row.style.display = (ew_MultiPageElements[i][1] == ew_PageIndex) ? '' : 'none';
  1313. if (row.style.display == '' && fn)
  1314. fn(ew_MultiPageElements[i][0]);
  1315. }
  1316. }
  1317. }
  1318. // Multi page update buttons
  1319. function ew_UpdateButtons() {
  1320. if (ew_MaxPageIndex == ew_MinPageIndex)
  1321. return;
  1322. var elem = ew_GetElement('ewMultiPagePager');
  1323. if (!elem)
  1324. return;
  1325. var pager = "<table class='ewMultiPagePager'><tr>";
  1326. if (ew_PageIndex <= ew_MinPageIndex) {
  1327. pager = pager + "<td>" + ew_MultiPagePrev + "</td>";
  1328. } else {
  1329. pager = pager + "<td><a href='javascript:ew_PrevPage();'>" + ew_MultiPagePrev + "</a></td>";
  1330. }
  1331. for (var i=ew_MinPageIndex; i<=ew_MaxPageIndex; i++) {
  1332. if (i == ew_PageIndex) {
  1333. pager = pager + "<td>" + i + "</td>";
  1334. } else {
  1335. pager = pager + "<td><a href='javascript:ew_GotoPageByIndex(" + i + ");'>" + i + "</a></td>";
  1336. }
  1337. }
  1338. if (ew_PageIndex >= ew_MaxPageIndex) {
  1339. pager = pager + "<td>" + ew_MultiPageNext + "</td>";
  1340. } else {
  1341. pager = pager + "<td><a href='javascript:ew_NextPage();'>" + ew_MultiPageNext + "</a></td>";
  1342. }
  1343. pager = pager + "</tr><tr><td colspan=" + (ew_MaxPageIndex - ew_MinPageIndex + 3) +">";
  1344. pager = pager + ew_MultiPagePage + " " + (ew_PageIndex) + " " + ew_MultiPageOf + " " + (ew_MaxPageIndex);
  1345. pager = pager + "</td></tr></table>";
  1346. elem.innerHTML = pager;
  1347. }
  1348. // Multi page enable buttons
  1349. function ew_EnableButtons(bool) {
  1350. var btn = ew_GetElement('btnAction');
  1351. if (btn)
  1352. btn.disabled = !bool;
  1353. }
  1354. // Get element by id
  1355. function ew_GetElement(elemid) { // 2.0.1
  1356. var elem;
  1357. if (document.getElementById) {
  1358. elem = document.getElementById(elemid);
  1359. if (elem) {
  1360. return elem;
  1361. } else {
  1362. elem = document.getElementsByName(elemid);
  1363. if (elem && elem.length > 0)
  1364. return elem[0];
  1365. }
  1366. }
  1367. return null;
  1368. }
  1369. // Get page index by element id
  1370. function ew_GetPageIndexByElementId(elemid) {
  1371. var pageIndex = -1;
  1372. for (var i=0; i<ew_MultiPageElements.length; i++) {
  1373. if (ew_MultiPageElements[i][0] == elemid)
  1374. return ew_MultiPageElements[i][1];
  1375. }
  1376. return pageIndex;
  1377. }
  1378. // Goto page by index
  1379. function ew_GotoPageByIndex(pageIndex) {
  1380. if (pageIndex < ew_MinPageIndex || pageIndex > ew_MaxPageIndex)
  1381. return;
  1382. ew_PageIndex = pageIndex - 1;
  1383. ew_NextPage();
  1384. }
  1385. // Goto page by element
  1386. function ew_GotoPageByElement(elem) {
  1387. var pageIndex;
  1388. if (!elem) return;
  1389. var id = (!elem.type && elem[0]) ? elem[0].id : elem.id;
  1390. if (id == "") return;
  1391. pageIndex = ew_GetPageIndexByElementId(id);
  1392. ew_GotoPageByIndex(pageIndex);
  1393. }
  1394. // Get row by element id
  1395. function ew_GetRowByElementId(elemid) { // 2.0.1
  1396. var elem, tb;
  1397. elem = ew_GetElement(elemid);
  1398. if (!elem)
  1399. return null;
  1400. var isRow = false;
  1401. while (!isRow) {
  1402. elem = ew_GetParentElement(elem);
  1403. if (!elem) break;
  1404. if (elem.tagName == "TR") {
  1405. tb = ew_GetParentElement(elem);
  1406. if (tb) tb = ew_GetParentElement(tb);
  1407. isRow = (tb) && (tb.tagName == "TABLE") && (tb.className == EW_TABLE_CLASSNAME);
  1408. }
  1409. }
  1410. return (isRow) ? elem : null;
  1411. }
  1412. // Get parent element
  1413. function ew_GetParentElement(elem) { // 2.0.1
  1414. if (!elem)
  1415. return null;
  1416. if (document.all) {
  1417. return elem.parentElement;
  1418. } else if (document.getElementById) {
  1419. return elem.parentNode;
  1420. }
  1421. }
  1422. // Check if element is visible
  1423. function ew_IsElementVisible(elemid) {
  1424. if (!(document.getElementById || document.all))
  1425. return true;
  1426. var elem = ew_GetElement(elemid);
  1427. return (elem && elem.style.display == '');
  1428. }
  1429. // for ASP.NET
  1430. // Focus invalid element
  1431. function ew_FocusInvalidElement() {
  1432. for (var i=0; i<Page_Validators.length; i++) {
  1433. if (!Page_Validators[i].isvalid) {
  1434. var elem = ew_GetElement(Page_Validators[i].controltovalidate);
  1435. ew_GotoPageByElement(elem);
  1436. ew_SetFocus(elem);
  1437. break;
  1438. }
  1439. }
  1440. }