Index: java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.java
===================================================================
--- java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.java	(revision 37:e32867db5487)
+++ java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.java	(revision 37:e32867db5487)
@@ -0,0 +1,71 @@
+package cz.frantovo.sql.vyuka.dao;
+
+import cz.frantovo.sql.vyuka.dto.Pruvodce;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.logging.Level;
+
+/**
+ * Načítá průvodce (nápovědu) z databáze.
+ * @author fiki
+ */
+public class PruvodceDAO extends VyukaSuperDAO {
+
+    private enum SQL {
+
+        PODLE_KODU,
+        PODLE_ID,
+        PODLE_ID_PREDCHOZI,
+        PODLE_ID_NASLEDUJICI
+    }
+
+    public Pruvodce getPruvodce(long id) {
+        return getPruvodce(getSQL(SQL.PODLE_ID), id);
+    }
+
+    public Pruvodce getPruvodce(String kod) {
+        return getPruvodce(getSQL(SQL.PODLE_KODU), kod);
+    }
+
+    public Pruvodce getPruvodcePredchozi(long id) {
+        return getPruvodce(getSQL(SQL.PODLE_ID_PREDCHOZI), id);
+    }
+
+    public Pruvodce getPruvodceNasledujici(long id) {
+        return getPruvodce(getSQL(SQL.PODLE_ID_NASLEDUJICI), id);
+    }
+
+    private Pruvodce getPruvodce(String selekt, Object... parametry) {
+        Connection db = getSpojeni(DATABAZE.APLIKACE);
+        if (db == null) {
+            log.log(Level.SEVERE, "Databáze je null.");
+            return null;
+        } else {
+            PreparedStatement ps = null;
+            ResultSet rs = null;
+            try {
+                ps = db.prepareStatement(selekt);
+                for (int i = 0; i < parametry.length; i++) {
+                    ps.setObject(i + 1, parametry[i]);
+                }
+                rs = ps.executeQuery();
+                if (rs.next()) {
+                    Pruvodce p = new Pruvodce();
+                    p.setId(rs.getLong("id"));
+                    p.setKod(rs.getString("kod"));
+                    p.setNadpis(rs.getString("nadpis"));
+                    p.setObsah(rs.getString("obsah"));
+                    return p;
+                } else {
+                    return null;
+                }
+            } catch (Exception e) {
+                log.log(Level.SEVERE, "Chyba při hledání průvodce.", e);
+                return null;
+            } finally {
+                zavri(db, ps, rs);
+            }
+        }
+    }
+}
Index: java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.sql.xml
===================================================================
--- java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.sql.xml	(revision 37:e32867db5487)
+++ java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PruvodceDAO.sql.xml	(revision 37:e32867db5487)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+    <entry key="PODLE_KODU">
+        <![CDATA[
+        SELECT  *
+        FROM pruvodce
+        WHERE kod = ?;
+        ]]>
+    </entry>
+    <entry key="PODLE_ID">
+        <![CDATA[
+        SELECT  *
+        FROM pruvodce
+        WHERE id = ?;
+        ]]>
+    </entry>
+    <entry key="PODLE_ID_PREDCHOZI">
+        <![CDATA[
+        SELECT  *
+        FROM pruvodce
+        WHERE id < ?
+        ORDER BY id
+        LIMIT 1;
+        ]]>
+    </entry>
+    <entry key="PODLE_ID_NASLEDUJICI">
+        <![CDATA[
+        SELECT  *
+        FROM pruvodce
+        WHERE id > ?
+        ORDER BY id
+        LIMIT 1;
+        ]]>
+    </entry>
+</properties>
Index: java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Pruvodce.java
===================================================================
--- java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Pruvodce.java	(revision 37:e32867db5487)
+++ java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Pruvodce.java	(revision 37:e32867db5487)
@@ -0,0 +1,60 @@
+package cz.frantovo.sql.vyuka.dto;
+
+/**
+ * Jedna stránka průvodce: kapitola (lekce)
+ * @author fiki
+ */
+public class Pruvodce {
+
+    private long id;
+    private String kod;
+    private String nadpis;
+    private String obsah;
+    private boolean lokalizovat = false;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getKod() {
+        return kod;
+    }
+
+    public void setKod(String kod) {
+        this.kod = kod;
+    }
+
+    public String getNadpis() {
+        return nadpis;
+    }
+
+    public void setNadpis(String nadpis) {
+        this.nadpis = nadpis;
+    }
+
+    public String getObsah() {
+        return obsah;
+    }
+
+    public void setObsah(String obsah) {
+        this.obsah = obsah;
+    }
+
+    /**
+     * @return the lokalizovat
+     */
+    public boolean isLokalizovat() {
+        return lokalizovat;
+    }
+
+    /**
+     * @param lokalizovat the lokalizovat to set
+     */
+    public void setLokalizovat(boolean lokalizovat) {
+        this.lokalizovat = lokalizovat;
+    }
+}
Index: java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties
===================================================================
--- java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	(revision 35:814be3f52bf5)
+++ java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	(revision 37:e32867db5487)
@@ -39,2 +39,5 @@
 navigace.vpred=Vp\u0159ed v historii
 navigace.nasledujici=N\u00E1sleduj\u00EDc\u00ED lekce
+
+pruvodce.chyba.nadpis=Chyba
+pruvodce.chyba.obsah=<p>Kapitola nenalezena.</p>
Index: java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java
===================================================================
--- java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java	(revision 25:97bb16063d9e)
+++ java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java	(revision 37:e32867db5487)
@@ -3,4 +3,6 @@
 import cz.frantovo.sql.vyuka.dao.HistorieDAO;
 import cz.frantovo.sql.vyuka.dao.PiskovisteDAO;
+import cz.frantovo.sql.vyuka.dao.PruvodceDAO;
+import cz.frantovo.sql.vyuka.dto.Pruvodce;
 import cz.frantovo.sql.vyuka.dto.Uzivatel;
 import cz.frantovo.sql.vyuka.dto.VysledekSQL;
@@ -14,4 +16,6 @@
     private final Uzivatel uzivatel = new Uzivatel();
     private String sqlPrikaz;
+    private long idPruvodce;
+    private String kodPruvodce;
 
     /**
@@ -34,4 +38,12 @@
     }
 
+    public void setIdPruvodce(long idPruvodce) {
+        this.idPruvodce = idPruvodce;
+    }
+
+    public void setKodPruvodce(String kodPruvodce) {
+        this.kodPruvodce = kodPruvodce;
+    }
+
     /**
      * @return Historie SQL příkazů daného uživatele.
@@ -50,3 +62,61 @@
         return p.vykonejSQL(sqlPrikaz, uzivatel);
     }
+
+    /**
+     * Načte stránku průvodce – podle ID.
+     * @return průvodce nebo chybová hláška.
+     */
+    public Pruvodce getPruvodcePodleId() {
+        PruvodceDAO dao = new PruvodceDAO();
+        Pruvodce p = dao.getPruvodce(idPruvodce);
+        return osetriChybuPruvodce(p);
+    }
+
+    /**
+     * Načte stránku průvodce – podle kódu.
+     * @param kod kód průvodce, kterého hledáme.
+     * @return průvodce nebo chybová hláška.
+     */
+    public Pruvodce getPruvodcePodleKodu() {
+        PruvodceDAO dao = new PruvodceDAO();
+        Pruvodce p = dao.getPruvodce(kodPruvodce);
+        return osetriChybuPruvodce(p);
+    }
+
+    /**
+     * Načte stránku průvodce.
+     * idPruvodce = id, ke kterému hledáme předchozí stránku (záznam před).
+     * @return průvodce nebo chybová hláška.
+     */
+    public Pruvodce getPruvodcePredchozi() {
+        PruvodceDAO dao = new PruvodceDAO();
+        Pruvodce p = dao.getPruvodcePredchozi(idPruvodce);
+        return osetriChybuPruvodce(p);
+    }
+
+    /**
+     * Načte stránku průvodce.
+     * idPruvodce = id, ke kterému hledáme následující stránku (záznam po).
+     * @return průvodce nebo chybová hláška.
+     */
+    public Pruvodce getPruvodceNasledujici() {
+        PruvodceDAO dao = new PruvodceDAO();
+        Pruvodce p = dao.getPruvodceNasledujici(idPruvodce);
+        return osetriChybuPruvodce(p);
+    }
+
+    /**
+     * @param p Stránka průvodce načtená z databáze.
+     * @return zadaná stránka, nebo chybová hláška, pokud bylo načteno „null“
+     */
+    private static Pruvodce osetriChybuPruvodce(Pruvodce p) {
+        if (p == null) {
+            p = new Pruvodce();
+            p.setKod("chyba");
+            p.setNadpis("pruvodce.chyba.nadpis");
+            p.setObsah("pruvodce.chyba.obsah");
+            p.setLokalizovat(true);
+        }
+        return p;
+    }
 }
Index: java/sql-vyuka/web/ajax.jspx
===================================================================
--- java/sql-vyuka/web/ajax.jspx	(revision 31:9d8c8622ff4e)
+++ java/sql-vyuka/web/ajax.jspx	(revision 37:e32867db5487)
@@ -120,5 +120,37 @@
         <!-- <Akce: Nápověda> -->
         <c:when test="${param.akce == 'napoveda'}">
-            <p>TODO: nápověda.</p>
+            <!-- <VolbaMetody> -->
+            <c:choose>
+                <c:when test="${param.pruvodce == 'podleId'}">
+                    <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
+                    <c:set var="pruvodce" value="${ajax.pruvodcePodleId}" scope="request"/>
+                </c:when>
+                <c:when test="${param.pruvodce == 'podleKodu'}">
+                    <jsp:setProperty name="ajax" property="kodPruvodce" value="${param.kodPruvodce}"/>
+                    <c:set var="pruvodce" value="${ajax.pruvodcePodleKodu}" scope="request"/>
+                </c:when>
+                <c:when test="${param.pruvodce == 'predchozi'}">
+                    <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
+                    <c:set var="pruvodce" value="${ajax.pruvodcePredchozi}" scope="request"/>
+                </c:when>
+                <c:when test="${param.pruvodce == 'nasledujici'}">
+                    <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
+                    <c:set var="pruvodce" value="${ajax.pruvodceNasledujici}" scope="request"/>
+                </c:when>
+            </c:choose>
+            <!-- </VolbaMetody> -->
+
+            <!-- <Výpis> -->
+            <c:choose>
+                <c:when test="${pruvodce.lokalizovat}">
+                    <h1><fmt:message key="${pruvodce.nadpis}"/></h1>
+                    <fmt:message key="${pruvodce.obsah}"/>
+                </c:when>
+                <c:otherwise>
+                    <h1><c:out value="${pruvodce.nadpis}"/></h1>
+                    <c:out value="${pruvodce.obsah}" escapeXml="false"/>
+                </c:otherwise>
+            </c:choose>
+            <!-- </Výpis> -->
         </c:when>
         <!-- </Akce: Nápověda> -->
