1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/java/sql-vyuka/web/strom.js Tue Jul 14 16:51:24 2009 +0200
1.3 @@ -0,0 +1,145 @@
1.4 +/** Strom je načítaný AJAXem až po načtení stránky, takže je potřeba funkci zavolat ručně */
1.5 +//pridejUdalost(window,"load",sestavStromy);
1.6 +
1.7 +function pridejUdalost(o, e, f) {
1.8 + if (o.addEventListener) {
1.9 + o.addEventListener(e,f,true);
1.10 + return true;
1.11 + } else if (o.attachEvent) {
1.12 + return o.attachEvent("on" + e, f);
1.13 + } else {
1.14 + return false;
1.15 + }
1.16 +}
1.17 +
1.18 +function nastavKonstantu(name, val) {
1.19 + if (typeof(window[name]) == "undefined" || window[name] == null) {
1.20 + window[name] = val;
1.21 + }
1.22 +}
1.23 +
1.24 +function rozbalStrom(treeId) {
1.25 + var ul = document.getElementById(treeId);
1.26 + if (ul == null) {
1.27 + return false;
1.28 + }
1.29 + rozbalSbalSeznam(ul, nodeOpenClass);
1.30 +}
1.31 +
1.32 +function sbalStrom(treeId) {
1.33 + var ul = document.getElementById(treeId);
1.34 + if (ul == null) {
1.35 + return false;
1.36 + }
1.37 + rozbalSbalSeznam(ul, nodeClosedClass);
1.38 +}
1.39 +
1.40 +function rozbalAzNaPolozku(treeId, itemId) {
1.41 + var ul = document.getElementById(treeId);
1.42 + if (ul == null) {
1.43 + return false;
1.44 + }
1.45 + var ret = rozbalSbalSeznam(ul, nodeOpenClass, itemId);
1.46 + if (ret) {
1.47 + var o = document.getElementById(itemId);
1.48 + if (o.scrollIntoView) {
1.49 + o.scrollIntoView(false);
1.50 + }
1.51 + }
1.52 +}
1.53 +
1.54 +function rozbalSbalSeznam(ul, cName, itemId) {
1.55 + if(!ul.childNodes || ul.childNodes.length==0) {
1.56 + return false;
1.57 + }
1.58 + for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
1.59 + var item = ul.childNodes[itemi];
1.60 +
1.61 + if (itemId != null && item.id == itemId) {
1.62 + return true;
1.63 + }
1.64 +
1.65 + if (item.nodeName == "LI") {
1.66 + var subLists = false;
1.67 + for (var sitemi = 0; sitemi<item.childNodes.length; sitemi++) {
1.68 + var sitem = item.childNodes[sitemi];
1.69 + if (sitem.nodeName=="UL") {
1.70 + subLists = true;
1.71 + var ret = rozbalSbalSeznam(sitem, cName, itemId);
1.72 + if (itemId != null && ret) {
1.73 + item.className = cName;
1.74 + return true;
1.75 + }
1.76 + }
1.77 + }
1.78 +
1.79 + if (subLists && itemId == null) {
1.80 + item.className = cName;
1.81 + }
1.82 + }
1.83 + }
1.84 +}
1.85 +
1.86 +function sestavStromy() {
1.87 + nastavKonstantu("treeClass", "strom");
1.88 + nastavKonstantu("nodeClosedClass", "liClosed");
1.89 + nastavKonstantu("nodeOpenClass", "liOpen");
1.90 + nastavKonstantu("nodeBulletClass", "liBullet");
1.91 + nastavKonstantu("nodeLinkClass", "bullet");
1.92 + nastavKonstantu("preProcessTrees", true);
1.93 + if (preProcessTrees) {
1.94 + if (!document.createElement) {
1.95 + return;
1.96 + }
1.97 + uls = document.getElementsByTagName("ul");
1.98 + for (var uli = 0; uli < uls.length; uli++) {
1.99 + var ul = uls[uli];
1.100 + if (ul.nodeName == "UL" && ul.className == treeClass) {
1.101 + zpracujStrom(ul);
1.102 + ul.style.display = "block";
1.103 + }
1.104 + }
1.105 + }
1.106 +}
1.107 +
1.108 +function zpracujStrom(ul) {
1.109 + if (!ul.childNodes || ul.childNodes.length==0) {
1.110 + return;
1.111 + }
1.112 + for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
1.113 + var item = ul.childNodes[itemi];
1.114 + if (item.nodeName == "LI") {
1.115 + var subLists = false;
1.116 + for (var sitemi = 0; sitemi < item.childNodes.length; sitemi++) {
1.117 + var sitem = item.childNodes[sitemi];
1.118 + if (sitem.nodeName == "UL") {
1.119 + subLists = true;
1.120 + zpracujStrom(sitem);
1.121 + }
1.122 + }
1.123 + var s = document.createElement("span");
1.124 + var t = '\u00A0';
1.125 + s.className = nodeLinkClass;
1.126 + if (subLists) {
1.127 + if (item.className == null || item.className == "") {
1.128 + item.className = nodeClosedClass;
1.129 + }
1.130 + if (item.firstChild.nodeName == "#text") {
1.131 + t = t + item.firstChild.nodeValue;
1.132 + item.removeChild(item.firstChild);
1.133 + }
1.134 + s.onclick = function() {
1.135 + this.parentNode.className = (this.parentNode.className==nodeOpenClass) ? nodeClosedClass : nodeOpenClass;
1.136 + return false;
1.137 + }
1.138 + } else {
1.139 + item.className = nodeBulletClass;
1.140 + s.onclick = function() {
1.141 + return false;
1.142 + }
1.143 + }
1.144 + s.appendChild(document.createTextNode(t));
1.145 + item.insertBefore(s, item.firstChild);
1.146 + }
1.147 + }
1.148 +}