Index: java/sql-vyuka/nbproject/project.properties
===================================================================
--- java/sql-vyuka/nbproject/project.properties	(revision 46:da0e675db1cf)
+++ java/sql-vyuka/nbproject/project.properties	(revision 49:083966fa9d9d)
@@ -21,5 +21,5 @@
 excludes=
 includes=**
-j2ee.deploy.on.save=true
+j2ee.deploy.on.save=false
 j2ee.platform=1.5
 j2ee.server.type=J2EE
@@ -35,7 +35,5 @@
 javac.test.classpath=\
     ${javac.classpath}:\
-    ${build.classes.dir}:\
-    ${libs.junit.classpath}:\
-    ${libs.junit_4.classpath}
+    ${build.classes.dir}
 javadoc.additionalparam=
 javadoc.author=false
Index: java/sql-vyuka/web/hlavni.js
===================================================================
--- java/sql-vyuka/web/hlavni.js	(revision 48:7d3afd3cd47d)
+++ java/sql-vyuka/web/hlavni.js	(revision 49:083966fa9d9d)
@@ -129,5 +129,6 @@
                 urlOdkaz['pruvodce']  = 'pruvodce=' + encodeURIComponent(pruvodceAktualniId);
                 ulozURL();
-            }
+                sestavStromy();
+                }
         };
         ajax.send(null);
Index: java/sql-vyuka/web/index.jsp
===================================================================
--- java/sql-vyuka/web/index.jsp	(revision 23:6bbbd371e813)
+++ java/sql-vyuka/web/index.jsp	(revision 49:083966fa9d9d)
@@ -11,7 +11,9 @@
         <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
         <link href="styl.css" type="text/css" rel="StyleSheet"/>
+        <link href="strom.css" type="text/css" rel="StyleSheet"/>
         <script type="text/javaScript" src="hlavni.js"></script>
         <script type="text/javaScript" src="vstupniPole.js"></script>
         <script type="text/javaScript" src="klavesoveZkratky.js"></script>
+        <script type="text/javaScript" src="strom.js"></script>
         <title><fmt:message key="nazev"/></title>
     </head>
Index: java/sql-vyuka/web/strom.css
===================================================================
--- java/sql-vyuka/web/strom.css	(revision 49:083966fa9d9d)
+++ java/sql-vyuka/web/strom.css	(revision 49:083966fa9d9d)
@@ -0,0 +1,50 @@
+ul.strom {
+    display: none;
+}
+
+ul.strom  li {
+    list-style: none;
+    margin: 3px;
+}
+
+ul.strom, ul.strom ul , ul.strom li {
+    margin-left: 10px;
+    padding: 0px;
+}
+
+ul.strom li .bullet {
+    padding-left: 16px;
+}
+
+ul.strom li.liOpen .bullet {
+    cursor: pointer;
+    background: url('grafika/strom-minus.gif') center left no-repeat;
+}
+
+ul.strom li.liClosed .bullet {
+    cursor: pointer;
+    background: url('grafika/strom-plus.gif') center left no-repeat;
+}
+
+ul.strom li.liBullet .bullet {
+    cursor: default;
+    background: url('grafika/strom-konec.png') center left no-repeat;
+}
+
+ul.strom li.liOpen ul {
+    display: block;
+}
+
+ul.strom li.liClosed ul {
+    display: none;
+}
+
+ul.strom .schema {
+    padding-left: 22px;
+    background: url('grafika/strom-schema.png') center left no-repeat;
+}
+
+ul.strom .tabulka {
+    padding-left: 22px;
+    background: url('grafika/strom-tabulka.png') center left no-repeat;
+}
Index: java/sql-vyuka/web/strom.js
===================================================================
--- java/sql-vyuka/web/strom.js	(revision 49:083966fa9d9d)
+++ java/sql-vyuka/web/strom.js	(revision 49:083966fa9d9d)
@@ -0,0 +1,145 @@
+/** Strom je načítaný AJAXem až po načtení stránky, takže je potřeba funkci zavolat ručně */
+//pridejUdalost(window,"load",sestavStromy);
+
+function pridejUdalost(o, e, f) {
+    if (o.addEventListener) {
+        o.addEventListener(e,f,true);
+        return true;
+    } else if (o.attachEvent) {
+        return o.attachEvent("on" + e, f);
+    } else {
+        return false;
+    }
+}
+
+function nastavKonstantu(name, val) {
+    if (typeof(window[name]) == "undefined" || window[name] == null) {
+        window[name] = val;
+    }
+}
+
+function rozbalStrom(treeId) {
+    var ul = document.getElementById(treeId);
+    if (ul == null) {
+        return false;
+    }
+    rozbalSbalSeznam(ul, nodeOpenClass);
+}
+
+function sbalStrom(treeId) {
+    var ul = document.getElementById(treeId);
+    if (ul == null) {
+        return false;
+    }
+    rozbalSbalSeznam(ul, nodeClosedClass);
+}
+
+function rozbalAzNaPolozku(treeId, itemId) {
+    var ul = document.getElementById(treeId);
+    if (ul == null) {
+        return false;
+    }
+    var ret = rozbalSbalSeznam(ul, nodeOpenClass, itemId);
+    if (ret) {
+        var o = document.getElementById(itemId);
+        if (o.scrollIntoView) {
+            o.scrollIntoView(false);
+        }
+    }
+}
+
+function rozbalSbalSeznam(ul, cName, itemId) {
+    if(!ul.childNodes || ul.childNodes.length==0) {
+        return false;
+    }
+    for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
+        var item = ul.childNodes[itemi];
+
+        if (itemId != null && item.id == itemId) {
+            return true;
+        }
+
+        if (item.nodeName == "LI") {
+            var subLists = false;
+            for (var sitemi = 0; sitemi<item.childNodes.length; sitemi++) {
+                var sitem = item.childNodes[sitemi];
+                if (sitem.nodeName=="UL") {
+                    subLists = true;
+                    var ret = rozbalSbalSeznam(sitem, cName, itemId);
+                    if (itemId != null && ret) {
+                        item.className = cName;
+                        return true;
+                    }
+                }
+            }
+
+            if (subLists && itemId == null) {
+                item.className = cName;
+            }
+        }
+    }
+}
+
+function sestavStromy() {
+    nastavKonstantu("treeClass", "strom");
+    nastavKonstantu("nodeClosedClass", "liClosed");
+    nastavKonstantu("nodeOpenClass", "liOpen");
+    nastavKonstantu("nodeBulletClass", "liBullet");
+    nastavKonstantu("nodeLinkClass", "bullet");
+    nastavKonstantu("preProcessTrees", true);
+    if (preProcessTrees) {
+        if (!document.createElement) {
+            return;
+        }
+        uls = document.getElementsByTagName("ul");
+        for (var uli = 0; uli < uls.length; uli++) {
+            var ul = uls[uli];
+            if (ul.nodeName == "UL" && ul.className == treeClass) {
+                zpracujStrom(ul);
+                ul.style.display = "block";
+            }
+        }
+    }
+}
+
+function zpracujStrom(ul) {
+    if (!ul.childNodes || ul.childNodes.length==0) {
+        return;
+    }
+    for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
+        var item = ul.childNodes[itemi];
+        if (item.nodeName == "LI") {
+            var subLists = false;
+            for (var sitemi = 0; sitemi < item.childNodes.length; sitemi++) {
+                var sitem = item.childNodes[sitemi];
+                if (sitem.nodeName == "UL") {
+                    subLists = true;
+                    zpracujStrom(sitem);
+                }
+            }
+            var s = document.createElement("span");
+            var t = '\u00A0';
+            s.className = nodeLinkClass;
+            if (subLists) {
+                if (item.className == null || item.className == "") {
+                    item.className = nodeClosedClass;
+                }
+                if (item.firstChild.nodeName == "#text") {
+                    t = t + item.firstChild.nodeValue;
+                    item.removeChild(item.firstChild);
+                }
+                s.onclick = function() {
+                    this.parentNode.className = (this.parentNode.className==nodeOpenClass) ? nodeClosedClass : nodeOpenClass;
+                    return false;
+                }
+            } else {
+                item.className = nodeBulletClass;
+                s.onclick = function() {
+                    return false;
+                }
+            }
+            s.appendChild(document.createTextNode(t));
+            item.insertBefore(s, item.firstChild);
+        }
+    }
+}
