Tree.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  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 Tree() {
  13. this.name = "Tree";
  14. this.__toString = function __toString() {
  15. return this.name;
  16. }
  17. this.setProp = function setProp(p_node,p_prop,p_value) {
  18. var i=0;
  19. var treeID = null;
  20. var nodeID = null;
  21. var foundTreeRoot = false;
  22. var p_parentNode = p_node;
  23. while (foundTreeRoot == false){
  24. if(i>500)
  25. foundTreeRoot = true;
  26. if(p_parentNode.className == "tree" && p_parentNode.id != "") {
  27. treeID = p_parentNode.id;
  28. foundTreeRoot = true;
  29. }
  30. if(p_parentNode.className == "treeNode" && nodeID == null && p_parentNode.id != "") {
  31. nodeID = p_parentNode.id;
  32. }
  33. p_parentNode = p_parentNode.parentNode;
  34. i++;
  35. }
  36. if(treeID != null && nodeID != null) {
  37. Cookie.create(Tree.__toString()+"_"+treeID+"_"+nodeID+"_"+p_prop,p_value);
  38. }
  39. }
  40. this.getProp = function getProp(p_node,p_prop) {
  41. var i=0;
  42. var treeID = null;
  43. var nodeID = null;
  44. var foundTreeRoot = false;
  45. var p_parentNode = p_node;
  46. while (foundTreeRoot == false){
  47. if(i>500)
  48. foundTreeRoot = true;
  49. if(p_parentNode.className == "tree" && p_parentNode.id != "") {
  50. treeID = p_parentNode.id;
  51. foundTreeRoot = true;
  52. }
  53. if((p_parentNode.className == "treeNode" || p_parentNode.className == "treeNodeLeaf") && nodeID == null && p_parentNode.id != "") {
  54. nodeID = p_parentNode.id;
  55. }
  56. p_parentNode = p_parentNode.parentNode;
  57. i++;
  58. }
  59. if(treeID != null && nodeID != null) {
  60. return Cookie.read(Tree.__toString()+"_"+treeID+"_"+nodeID+"_"+p_prop);
  61. }else{
  62. return null;
  63. }
  64. }
  65. this.select = function select(evt,p_node) {
  66. var i=0;
  67. var obj = null;
  68. if(!evt) evt = window.event;
  69. var ctrlPressed=0;
  70. var selectedArr=new Array();
  71. var treeID = null;
  72. var newSelectedArr = new Array();
  73. var nodeID = null;
  74. var foundTreeRoot = false;
  75. var p_parentNode = p_node;
  76. if(typeof p_parentNode == "undefined") return;
  77. while (foundTreeRoot == false){
  78. if(i>500)
  79. foundTreeRoot = true;
  80. if(p_parentNode.className == "tree" && p_parentNode.id != "") {
  81. treeID = p_parentNode.id;
  82. foundTreeRoot = true;
  83. }
  84. if((p_parentNode.className == "treeNode" || p_parentNode.className == "treeNodeLeaf") && nodeID == null && p_parentNode.id != "") {
  85. nodeID = p_parentNode.id;
  86. }
  87. p_parentNode = p_parentNode.parentNode;
  88. i++;
  89. }
  90. if(treeID != null && nodeID != null) {
  91. var p_selected = Cookie.read(Tree.__toString()+"_"+treeID+"_selected");
  92. // NEWER BROWSERS [CROSS-PLATFORM]
  93. if(evt!=null)
  94. ctrlPressed =evt.ctrlKey;
  95. if(p_selected != null) {
  96. selectedArr = p_selected.split("|");
  97. for(i=0;i<selectedArr.length;i++) {
  98. if(nodeID == selectedArr[i]) {
  99. var obj = Browser.getElementById(selectedArr[i]);
  100. }
  101. }
  102. }
  103. if(evt != null && obj != null && Mouse.checkRClick(evt)){
  104. newSelectedArr = selectedArr;
  105. }else if(obj == null && ctrlPressed) {
  106. newSelectedArr = selectedArr;
  107. newSelectedArr.push(nodeID);
  108. Browser.getElementById(nodeID).style.background="url('img/GUI/Tree/active.png') repeat-y";
  109. }else if(obj != null && ctrlPressed) {
  110. obj.style.background="transparent";
  111. for(i=0;i<selectedArr.length;i++) {
  112. if(nodeID != selectedArr[i]) {
  113. newSelectedArr.push(selectedArr[i]);
  114. }
  115. }
  116. }else if((obj != null && !ctrlPressed) || (obj == null && !ctrlPressed)) {
  117. for(i=0;i<selectedArr.length;i++) {
  118. var obj = Browser.getElementById(selectedArr[i]);
  119. if(obj != null){
  120. obj.style.background="transparent";
  121. }
  122. }
  123. newSelectedArr.push(nodeID);
  124. Browser.getElementById(nodeID).style.background="url('img/GUI/Tree/active.png') repeat-y";
  125. }
  126. }
  127. Cookie.create(Tree.__toString()+"_"+treeID+"_selected",newSelectedArr.join("|"));
  128. //alert("select: tree["+treeID+"] node["+nodeID+"]");
  129. }
  130. this.unselect = function unselect(p_node) {
  131. var i=0;
  132. var treeID = null;
  133. var nodeID = null;
  134. var foundTreeRoot = false;
  135. var selectedArr=new Array();
  136. var p_parentNode = p_node;
  137. while (foundTreeRoot == false){
  138. if(i>500)
  139. foundTreeRoot = true;
  140. if(p_parentNode.className == "tree" && p_parentNode.id != "") {
  141. treeID = p_parentNode.id;
  142. foundTreeRoot = true;
  143. }
  144. if((p_parentNode.className == "treeNode" || p_parentNode.className == "treeNodeLeaf") && nodeID == null && p_parentNode.id != "") {
  145. nodeID = p_parentNode.id;
  146. }
  147. p_parentNode = p_parentNode.parentNode;
  148. i++;
  149. }
  150. if(treeID != null && nodeID != null) {
  151. var p_selected = Cookie.read(Tree.__toString()+"_"+treeID+"_selected");
  152. selectedArr = p_selected.split("|");
  153. for(i=0;i<selectedArr.length;i++) {
  154. var obj = Browser.getElementById(selectedArr[i]);
  155. if(obj != null){
  156. obj.style.background="transparent";
  157. }
  158. }
  159. }
  160. Cookie.create(Tree.__toString()+"_"+treeID+"_selected",nodeID);
  161. nodeID = Cookie.read(Tree.__toString()+"_"+treeID+"_selected");
  162. //alert("select: tree["+treeID+"] node["+nodeID+"]");
  163. //p_node.style.background="url('img/GUI/Tree/active.png') repeat-y";
  164. }
  165. this.expand = function expand(p_node) {
  166. var elements = p_node.getElementsByTagName("DIV");
  167. for(var i in elements) {
  168. if(typeof elements[i] != "undefined"){
  169. if(elements[i].className == "treeNodeSub") {
  170. if(Browser.getDisplay(elements[i])) {
  171. this.setProp(p_node,"expand",false);
  172. Browser.setDisplay(elements[i],false);
  173. p_node.firstChild.childNodes[1].src = "img/GUI/Tree/expand.png";
  174. } else {
  175. this.setProp(p_node,"expand",true);
  176. Browser.setDisplay(elements[i],true);
  177. p_node.firstChild.childNodes[1].src = "img/GUI/Tree/collapse.png";
  178. }
  179. break;
  180. }
  181. }
  182. }
  183. }
  184. this.setToUserView = function setToUserView(p_node) {
  185. var i=0;
  186. var treeID = null;
  187. var nodeID = null;
  188. var foundTreeRoot = false;
  189. var selectedArr = new Array();
  190. var p_parentNode = p_node;
  191. if(p_node == null) return;
  192. while (foundTreeRoot == false){
  193. if(i>500)
  194. foundTreeRoot = true;
  195. if(p_parentNode.className == "tree" && p_parentNode.id != "") {
  196. treeID = p_parentNode.id;
  197. foundTreeRoot = true;
  198. }
  199. p_parentNode = p_parentNode.parentNode;
  200. i++;
  201. }
  202. var p_selected = null;
  203. if(treeID != null) {
  204. var p_selected = Cookie.read(Tree.__toString()+"_"+treeID+"_selected");
  205. if(p_selected !=null) {
  206. selectedArr = p_selected.split("|");
  207. for(i=0;i<selectedArr.length;i++) {
  208. var obj = Browser.getElementById(selectedArr[i]);
  209. if(obj != null){
  210. obj.style.background="url('img/GUI/Tree/active.png') repeat-y";
  211. }
  212. }
  213. }
  214. }
  215. var elements = p_node.getElementsByTagName("DIV");
  216. for(var i in elements) {
  217. if(typeof elements[i] != "undefined"){
  218. if(elements[i].className == "treeNodeSub") {
  219. if(this.getProp(elements[i],"expand")=='true'){
  220. Browser.setDisplay(elements[i],true);
  221. if(elements[i].firstChild)
  222. elements[i].previousSibling.childNodes[1].src = "img/GUI/Tree/collapse.png";
  223. }else{
  224. Browser.setDisplay(elements[i],false);
  225. if(elements[i].firstChild)
  226. elements[i].previousSibling.childNodes[1].src = "img/GUI/Tree/expand.png";
  227. }
  228. }
  229. }
  230. }
  231. var p_scroll = Cookie.read(Tree.__toString()+"_"+treeID+"_scroll");
  232. if(p_scroll == null)p_scroll = 0;
  233. Browser.getElementById(treeID).parentNode.scrollTop = p_scroll;
  234. //alert(p_scroll);
  235. }
  236. this.scrolling = function(p_container) {
  237. //alert(p_container.scrollTop);
  238. var treeID = p_container.firstChild.id;
  239. Cookie.create(Tree.__toString()+"_"+treeID+"_scroll",p_container.scrollTop);
  240. }
  241. }
  242. var Tree = new Tree();