PageRenderTime 46ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/nlw/share/skin/s2/javascript/email_page.js

https://github.com/dinda/socialtext
JavaScript | 154 lines | 121 code | 19 blank | 14 comment | 24 complexity | f5cb12334806c8bf536293ed9e3c0dec MD5 | raw file
Possible License(s): AGPL-1.0, MPL-2.0-no-copyleft-exception, CC0-1.0, LGPL-2.1
  1. var email_page_source;
  2. var email_page_dest;
  3. var email_page_add;
  4. var email_page_submit_buttons;
  5. window.onload = email_page_info;
  6. function email_page_info() {
  7. form_email_page = document.forms.email_page_form;
  8. if (!form_email_page) return;
  9. email_page_source = form_email_page.elements['email_page_user_source'];
  10. email_page_dest = form_email_page.elements['email_page_user_choices'];
  11. email_page_add = form_email_page.elements['email_page_add_one'];
  12. email_page_submit_buttons = document.getElementById('st-popup-emailpage-buttons')
  13. email_page_error_div = $('st-popup-emailpage-errormessage');
  14. Element.hide(email_page_error_div);
  15. }
  16. function email_page_clear_element(element, compare) {
  17. if (element.value == compare) {
  18. // unfortunately this causes an XUL error in firefox
  19. // as attepts to update auto-fill dropdown info
  20. element.value = ''
  21. }
  22. return false
  23. }
  24. // Regular expression for validating email addresses. Not perfect,
  25. // but close enough to eliminate the majority of invalid addresses,
  26. // which erring on the side of caution. Adapted from here:
  27. //
  28. // http://fightingforalostcause.net/misc/2006/compare-email-regex.php
  29. //
  30. var EMAIL_ADDRESS_REGEX = new RegExp(
  31. "^"
  32. + "([a-zA-Z0-9_'+*$%\\^&!\\.\\-])+"
  33. + "@"
  34. + "(([a-zA-Z0-9\\-])+\\.)+"
  35. + "([a-zA-Z0-9:]{2,4})+"
  36. + "$"
  37. , "i"
  38. );
  39. function email_page_check_address(email_address) {
  40. return EMAIL_ADDRESS_REGEX.test(email_address);
  41. }
  42. function email_page_error_message(message) {
  43. email_page_error_div.innerHTML = message;
  44. Element.show(email_page_error_div);
  45. }
  46. // move the text input email address to the selected list
  47. function email_page_validate_add() {
  48. var address = email_page_add.value
  49. if (address == '')
  50. return false
  51. if (!email_page_check_address(address)) {
  52. email_page_error_message(loc('error -> "[_1]" is not a valid email address', address))
  53. return false
  54. }
  55. email_page_dest[email_page_dest.length] = new Option(address)
  56. email_page_add.value = ''
  57. email_page_error_message(' ')
  58. }
  59. // move all the options to chosen
  60. function email_page_all() {
  61. for (i = 0; i < email_page_source.length; i++)
  62. email_page_source.options[i].selected = 1
  63. email_page_move()
  64. }
  65. // remove all the chosen
  66. function email_page_none() {
  67. for (i = 0; i < email_page_dest.length; i++)
  68. email_page_dest.options[i].selected = 1
  69. email_page_remove()
  70. }
  71. // move whatever is selected in choices to chosen
  72. function email_page_move() {
  73. var new_dest = new Array()
  74. var new_from = new Array()
  75. for (i = 0; i < email_page_source.length; i++) {
  76. if (email_page_source.options[i].value == -1) continue
  77. if (email_page_source.options[i].selected) {
  78. new_dest.push(email_page_source.options[i].text)
  79. } else
  80. new_from.push(email_page_source.options[i].text)
  81. }
  82. for (i = 0; i < email_page_dest.length; i++)
  83. new_dest.push(email_page_dest.options[i].text)
  84. email_page_reset(new_from, new_dest)
  85. }
  86. // remove whatever is selected in chosen and return to choices
  87. function email_page_remove() {
  88. var new_dest = new Array()
  89. var new_from = new Array()
  90. for (i = 0; i < email_page_dest.length; i++) {
  91. if (email_page_dest.options[i].value == -1) continue
  92. if (email_page_dest.options[i].selected)
  93. new_from.push(email_page_dest.options[i].text)
  94. else
  95. new_dest.push(email_page_dest.options[i].text)
  96. }
  97. for (i = 0; i < email_page_source.length; i++)
  98. new_from.push(email_page_source.options[i].text)
  99. email_page_reset(new_from, new_dest)
  100. }
  101. // reset the values of the two select boxes
  102. function email_page_reset(source, destination) {
  103. source.sort()
  104. destination.sort()
  105. email_page_source.length = 0;
  106. email_page_dest.length = 0;
  107. for (i = 0; i < source.length; i++)
  108. email_page_source[i] = new Option(source[i])
  109. for (i = 0; i < destination.length; i++)
  110. email_page_dest[i] = new Option(destination[i])
  111. }
  112. function email_page_clear(element) {
  113. if (email_page_element_fresh(element))
  114. element.value = ''
  115. }
  116. function email_page_element_fresh(element) {
  117. return (element.value.match(email_page_element_re[element.name]))
  118. }
  119. function email_page_select_all() {
  120. for (i = 0; i < email_page_source.length; i++)
  121. email_page_source[i].selected = 1;
  122. for (i = 0; i < email_page_dest.length; i++)
  123. email_page_dest[i].selected = 1;
  124. }
  125. function email_page_validate() {
  126. if (email_page_dest.length < 1) {
  127. email_page_error_message(
  128. loc('error -> To send email, you must specify a recipient'))
  129. return false
  130. }
  131. email_page_submit_buttons.style.display = 'none'
  132. email_page_select_all()
  133. form_email_page.submit()
  134. return true;
  135. }