double_list.js 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. var sfDoubleList =
  2. {
  3. init: function(id, className)
  4. {
  5. form = sfDoubleList.get_current_form(id);
  6. callback = function() { sfDoubleList.submit(form, className) };
  7. if (form.addEventListener)
  8. {
  9. form.addEventListener("submit", callback, false);
  10. }
  11. else if (form.attachEvent)
  12. {
  13. var r = form.attachEvent("onsubmit", callback);
  14. }
  15. },
  16. move: function(srcId, destId)
  17. {
  18. var src = document.getElementById(srcId);
  19. var dest = document.getElementById(destId);
  20. for (var i = 0; i < src.options.length; i++)
  21. {
  22. if (src.options[i].selected)
  23. {
  24. dest.options[dest.length] = new Option(src.options[i].text, src.options[i].value);
  25. src.options[i] = null;
  26. --i;
  27. }
  28. }
  29. },
  30. submit: function(form, className)
  31. {
  32. var element;
  33. for (var i = 0; i < form.elements.length; i++)
  34. {
  35. element = form.elements[i];
  36. if (element.type == 'select-multiple')
  37. {
  38. if (element.className == className + '-selected')
  39. {
  40. for (var j = 0; j < element.options.length; j++)
  41. {
  42. element.options[j].selected = true;
  43. }
  44. }
  45. }
  46. }
  47. },
  48. get_current_form: function(el)
  49. {
  50. if ("form" != el.tagName.toLowerCase())
  51. {
  52. return sfDoubleList.get_current_form(el.parentNode);
  53. }
  54. return el;
  55. }
  56. };