Form.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /*
  2. * DON'T REMOVE THE FOLLOWING LICENSE
  3. * INFORMATION!
  4. * ----------------------------------
  5. * Copyright by
  6. * Dennis Ritz
  7. * Author: Dennis Ritz
  8. * dennis.ritz@gmx.net
  9. * 2007-2008
  10. * ----------------------------------
  11. */
  12. function Form() {
  13. this.viewTab = function viewTab(p_id) {
  14. var formParent = document.getElementById(p_id).parentNode;
  15. var form = formParent.getElementsByTagName('FORM');
  16. for(i=0;i < form.length;i++)
  17. {
  18. form[i].style.display = 'none';
  19. }
  20. document.getElementById(p_id).style.display = 'inline';
  21. }
  22. function checkForm(form) {
  23. try{
  24. var arrarg = new Array();
  25. var ret = true;
  26. for(var i=1; i<arguments.length;i++) {
  27. arrarg[i-1] = arguments[i];
  28. }
  29. for(var i=arrarg.length-1; i>=0;i--){
  30. var item = arrarg[i].split(":");
  31. var element = form.elements[item[0]];
  32. var itemError = false;
  33. if(element.value == '') itemError = true;
  34. if(item.length>1) {
  35. switch(item[1]) {
  36. case "PATH": if(element.value.charAt(element.value.length-1) != "\\") itemError = true;
  37. break;
  38. }
  39. }
  40. if(itemError){
  41. if(element.className.search(/-xerror/) == -1)
  42. element.className = element.className+'-xerror';
  43. element.focus();
  44. ret = false;
  45. }else{
  46. element.className = element.className.replace(/-xerror/,"");
  47. }
  48. }
  49. return ret;
  50. }catch(e) {Log.error(e);return false;}
  51. }
  52. this.checkForm = checkForm;
  53. this.submit = function submit(p_submitForm,p_submitClass,p_submitClassMethod) {
  54. var ret = false;
  55. // Prepare for xformCheck
  56. var arrarg = new Array();
  57. arrarg[0] = p_submitForm;
  58. for(var i=0; i <= arguments.length-4; i++) {
  59. // Arguments after p_submitClassMethod will be checked
  60. arrarg[i+1] = arguments[i+3];
  61. }
  62. ret = checkForm.apply(this,arrarg);
  63. // Prepare to send form elements
  64. var xformElements = new Array();
  65. xformElements.push(p_submitClass);
  66. xformElements.push(p_submitClassMethod);
  67. for(var i=0; i<p_submitForm.elements.length;i++){
  68. var element = p_submitForm.elements[i];
  69. if(element.tagName == "FIELDSET")
  70. continue;
  71. if(element.type == 'submit')
  72. continue;
  73. if(element.type == 'reset')
  74. continue;
  75. if(element.type == 'button')
  76. continue;
  77. if(element.type == 'password'){
  78. if(typeof(MD5) == "function") {
  79. // [optional] - Password fields are md5 encrypted before transfered
  80. var value = element.value;
  81. xformElements.push(value);
  82. } else {
  83. xformElements.push(element.value);
  84. }
  85. } else if(element.type == 'radio') {
  86. // Any radio element is a form element
  87. var radioElement = document.getElementsByName(element.name);
  88. for(var k=0;k<radioElement.length;k++) {
  89. if(radioElement[k].checked){
  90. xformElements.push(radioElement[k].value);
  91. break;
  92. }
  93. }
  94. // IMPORTANT TO RISE FORM ELEMENT INDEX!
  95. i = i + radioElement.length-1;
  96. } else if(element.type == 'select-multiple') {
  97. // Select-multiple element is only one form element
  98. var selectElement = document.getElementsByName(element.name)[0];
  99. var selectedElements = new Array();
  100. for(var k=0;k<selectElement.length;k++) {
  101. if(selectElement[k].selected){
  102. selectedElements.push(selectElement[k].value);
  103. }
  104. }
  105. xformElements.push(selectedElements);
  106. } else if(element.type == 'checkbox') {
  107. if(element.checked) xformElements.push(true);
  108. else xformElements.push(false);
  109. } else {
  110. // Any other form element
  111. xformElements.push(element.value);
  112. }
  113. }
  114. // Prepare and send Sajax request
  115. if(ret) {
  116. for(var i=0; i<p_submitForm.elements.length;i++){
  117. var element = p_submitForm.elements[i];
  118. element.disabled = true;
  119. }
  120. var xformCb = new Object();
  121. xformCb.callback = submitCb;
  122. xformCb.calldata = p_submitForm;
  123. xformElements.push(xformCb);
  124. Ajax.request.apply(this,xformElements);
  125. }
  126. return false;
  127. }
  128. function submitCb(p_cb,p_form){
  129. for(var i=0; i<p_form.elements.length;i++){
  130. var element = p_form.elements[i];
  131. element.disabled = false;
  132. }
  133. CMgr.evalCb(p_cb);
  134. }
  135. this.submitCb = submitCb;
  136. this.__construct = function __construct() {
  137. }
  138. }
  139. var Form = new Form();