2008-03-13 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TreeView.js
1
2 function TreeView_ToggleExpand (treeId, nodeId) {
3         var tree = getTree (treeId);
4         if (tree == null)
5             return;
6         var spanId = treeId + "_" + nodeId;
7         var node = document.getElementById (spanId);
8         var expand = node.style.display == "none";
9         
10         if (tree.populateFromClient && expand && node.populated != true && (node.innerHTML.length == 0 || node.hasError)) {
11                 tree.PopulateNode (nodeId);
12                 return;
13         }
14         
15         if (!node.hasError)
16                 node.populated = true;
17         
18         node.style.display = expand ? "block" : "none";
19         
20         var inputStates = tree.form [treeId + "_ExpandStates"];
21         TreeView_SetNodeFlag (inputStates, nodeId, expand);
22         
23         if (tree.showImage) {
24                 var image = document.getElementById (spanId + "_img");
25                 if (expand) image.src = tree.collapseImage;
26                 else image.src = tree.expandImage;
27                 var alt;
28                 if (expand) alt = tree.collapseAlt;
29                 else alt = tree.expandAlt;
30
31                 if (alt.indexOf ("{0}") != -1) {
32                         var txt = document.getElementById (spanId + "_txt").innerText;
33                         alt = alt.replace ("{0}", txt);
34                 }
35                 image.alt = alt;
36         }
37 }
38
39 function TreeView_SetNodeFlag (flagInput, nodeId, set)
40 {
41         if (!set) flagInput.value = flagInput.value.replace ("|" + nodeId + "|", "|");
42         else flagInput.value = flagInput.value + nodeId + "|";
43 }
44
45 function TreeView_PopulateCallback (data, ids)
46 {
47         var idArray = ids.split (" ");
48         var tree = getTree (idArray[0]);
49         if (tree == null)
50             return;
51         var spanId = idArray[0] + "_" + idArray[1];
52         var node = document.getElementById (spanId);
53         node.populated = true;
54         if (data != "*") {
55                 node.innerHTML = data;
56             TreeView_ToggleExpand (idArray[0], idArray[1]);
57             TreeView_SetNodeFlag (tree.form [idArray[0] + "_PopulatedStates"], idArray[1], true);
58         } else {
59                 if (tree.showImage && tree.noExpandImage != null) {
60                         var image = document.getElementById (spanId + "_img");
61                         image.src = tree.noExpandImage;
62                 }
63         }
64 }
65
66 function getTree (treeId) { try { return eval (treeId + "_data"); } catch(e) { return null; } }
67 function getNodeLink (node) { return node.childNodes[node.childNodes.length - 1]; }
68
69 function TreeView_HoverNode (treeId, node)
70 {
71         var tree = getTree (treeId);
72         if (tree == null)
73             return;
74         if (tree.hoverClass != null) {
75             if (node.normalClass == null)
76                     node.normalClass = node.className;
77             node.className = node.normalClass + " " + tree.hoverClass;
78     }
79         if (tree.hoverLinkClass != null) {
80             var nodeLink = getNodeLink(node);
81             if (nodeLink.normalClass == null)
82                     nodeLink.normalClass = nodeLink.className;
83             nodeLink.className = nodeLink.normalClass + " " + tree.hoverLinkClass;
84         }
85 }
86
87 function TreeView_UnhoverNode (node) {
88         if (node != null && node.normalClass != null)
89                 node.className = node.normalClass;
90         var nodeLink = getNodeLink(node);
91         if (nodeLink != null && nodeLink.normalClass != null)
92                 nodeLink.className = nodeLink.normalClass;
93 }