Index: .hgignore
===================================================================
--- .hgignore	(revision 13:b15d81be8af3)
+++ .hgignore	(revision 0:e76872ad5226)
@@ -1,9 +1,9 @@
 java/Postak/dist/*
 java/Postak/build/*
-java/Postak/nbproject/private/*
 
 java/SuperPostak/dist/*
 java/SuperPostak/build/*
-java/SuperPostak/nbproject/private/*
 
-grafika/logo.png
+java/SuperPostak2/*
+java/SuperPostak2/dist/*
+java/SuperPostak2/build/*
Index: hgtags
===================================================================
--- .hgtags	(revision 19:8d1b4d36c88d)
+++ 	(revision )
@@ -1,2 +1,0 @@
-11879ab3436433770b2a7efcba40c520982d1bd9 v1.0
-9cb46ca7e26c0d2e18e2c34750143ddcd74a2d67 v1.1
Index: ava/Postak/build.xml
===================================================================
--- java/Postak/build.xml	(revision 20:22ce4474d4a9)
+++ 	(revision )
@@ -1,74 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See commented blocks below for -->
-<!-- some examples of how to customize the build. -->
-<!-- (If you delete it and reopen the project it will be recreated.) -->
-<!-- By default, only the Clean and Build commands use this build script. -->
-<!-- Commands such as Run, Debug, and Test only use this build script if -->
-<!-- the Compile on Save feature is turned off for the project. -->
-<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
-<!-- in the project's Project Properties dialog box.-->
-<project name="Postak" default="default" basedir=".">
-    <description>Builds, tests, and runs the project Postak.</description>
-    <import file="nbproject/build-impl.xml"/>
-    <!--
-
-    There exist several targets which are by default empty and which can be 
-    used for execution of your tasks. These targets are usually executed 
-    before and after some main targets. They are: 
-
-      -pre-init:                 called before initialization of project properties
-      -post-init:                called after initialization of project properties
-      -pre-compile:              called before javac compilation
-      -post-compile:             called after javac compilation
-      -pre-compile-single:       called before javac compilation of single file
-      -post-compile-single:      called after javac compilation of single file
-      -pre-compile-test:         called before javac compilation of JUnit tests
-      -post-compile-test:        called after javac compilation of JUnit tests
-      -pre-compile-test-single:  called before javac compilation of single JUnit test
-      -post-compile-test-single: called after javac compilation of single JUunit test
-      -pre-jar:                  called before JAR building
-      -post-jar:                 called after JAR building
-      -post-clean:               called after cleaning build products
-
-    (Targets beginning with '-' are not intended to be called on their own.)
-
-    Example of inserting an obfuscator after compilation could look like this:
-
-        <target name="-post-compile">
-            <obfuscate>
-                <fileset dir="${build.classes.dir}"/>
-            </obfuscate>
-        </target>
-
-    For list of available properties check the imported 
-    nbproject/build-impl.xml file. 
-
-
-    Another way to customize the build is by overriding existing main targets.
-    The targets of interest are: 
-
-      -init-macrodef-javac:     defines macro for javac compilation
-      -init-macrodef-junit:     defines macro for junit execution
-      -init-macrodef-debug:     defines macro for class debugging
-      -init-macrodef-java:      defines macro for class execution
-      -do-jar-with-manifest:    JAR building (if you are using a manifest)
-      -do-jar-without-manifest: JAR building (if you are not using a manifest)
-      run:                      execution of project 
-      -javadoc-build:           Javadoc generation
-      test-report:              JUnit report generation
-
-    An example of overriding the target for project execution could look like this:
-
-        <target name="run" depends="Postak-impl.jar">
-            <exec dir="bin" executable="launcher.exe">
-                <arg file="${dist.jar}"/>
-            </exec>
-        </target>
-
-    Notice that the overridden target depends on the jar target and not only on 
-    the compile target as the regular run target does. Again, for a list of available 
-    properties which you can use, check the target you are overriding in the
-    nbproject/build-impl.xml file. 
-
-    -->
-</project>
Index: java/Postak/nbproject/build-impl.xml
===================================================================
--- java/Postak/nbproject/build-impl.xml	(revision 16:290074b53aca)
+++ java/Postak/nbproject/build-impl.xml	(revision 0:e76872ad5226)
@@ -21,11 +21,4 @@
         -->
 <project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="Postak-impl">
-    <fail message="Please build using Ant 1.8.0 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.8.0"/>
-            </not>
-        </condition>
-    </fail>
     <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
     <!-- 
@@ -56,14 +49,7 @@
     <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
         <available file="${manifest.file}" property="manifest.available"/>
-        <condition property="splashscreen.available">
+        <condition property="manifest.available+main.class">
             <and>
-                <not>
-                    <equals arg1="${application.splash}" arg2="" trim="true"/>
-                </not>
-                <available file="${application.splash}"/>
-            </and>
-        </condition>
-        <condition property="main.class.available">
-            <and>
+                <isset property="manifest.available"/>
                 <isset property="main.class"/>
                 <not>
@@ -72,65 +58,9 @@
             </and>
         </condition>
-        <condition property="manifest.available+main.class">
-            <and>
-                <isset property="manifest.available"/>
-                <isset property="main.class.available"/>
-            </and>
-        </condition>
-        <condition property="do.archive">
-            <not>
-                <istrue value="${jar.archive.disabled}"/>
-            </not>
-        </condition>
-        <condition property="do.mkdist">
-            <and>
-                <isset property="do.archive"/>
-                <isset property="libs.CopyLibs.classpath"/>
-                <not>
-                    <istrue value="${mkdist.disabled}"/>
-                </not>
-            </and>
-        </condition>
         <condition property="manifest.available+main.class+mkdist.available">
             <and>
                 <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
+                <isset property="libs.CopyLibs.classpath"/>
             </and>
-        </condition>
-        <condition property="do.archive+manifest.available">
-            <and>
-                <isset property="manifest.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+main.class.available">
-            <and>
-                <isset property="main.class.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+splashscreen.available">
-            <and>
-                <isset property="splashscreen.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+manifest.available+main.class">
-            <and>
-                <istrue value="${manifest.available+main.class}"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="manifest.available-mkdist.available">
-            <or>
-                <istrue value="${manifest.available}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
-        <condition property="manifest.available+main.class-mkdist.available">
-            <or>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </or>
         </condition>
         <condition property="have.tests">
@@ -168,5 +98,4 @@
         <property name="application.args" value=""/>
         <property name="source.encoding" value="${file.encoding}"/>
-        <property name="runtime.encoding" value="${source.encoding}"/>
         <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
             <and>
@@ -184,21 +113,10 @@
             <istrue value="${do.depend}"/>
         </condition>
-        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
-        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
-            <length length="0" string="${endorsed.classpath}" when="greater"/>
-        </condition>
-        <condition else="false" property="jdkBug6558476">
+        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
             <and>
-                <matches pattern="1\.[56]" string="${java.specification.version}"/>
-                <not>
-                    <os family="unix"/>
-                </not>
+                <isset property="jaxws.endorsed.dir"/>
+                <available file="nbproject/jaxws-build.xml"/>
             </and>
         </condition>
-        <property name="javac.fork" value="${jdkBug6558476}"/>
-        <property name="jar.index" value="false"/>
-        <property name="jar.index.metainf" value="${jar.index}"/>
-        <property name="copylibs.rebase" value="true"/>
-        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
     </target>
     <target name="-post-init">
@@ -227,77 +145,24 @@
         </macrodef>
     </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+    <target name="-init-macrodef-javac">
         <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
             <attribute default="${src.dir}" name="srcdir"/>
             <attribute default="${build.classes.dir}" name="destdir"/>
             <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
             <attribute default="${includes}" name="includes"/>
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <attribute default="" name="sourcepath"/>
             <element name="customize" optional="true"/>
             <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <mkdir dir="@{apgeneratedsrcdir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <compilerarg value="-processorpath"/>
-                    <compilerarg path="@{processorpath}:${empty.dir}"/>
-                    <compilerarg line="${ap.processors.internal}"/>
-                    <compilerarg line="${annotation.processing.processor.options}"/>
-                    <compilerarg value="-s"/>
-                    <compilerarg path="@{apgeneratedsrcdir}"/>
-                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
                     <customize/>
                 </javac>
             </sequential>
         </macrodef>
-    </target>
-    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
-        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${src.dir}" name="srcdir"/>
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <customize/>
-                </javac>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
         <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
             <attribute default="${src.dir}" name="srcdir"/>
@@ -316,5 +181,5 @@
             <sequential>
                 <fail unless="javac.includes">Must set javac.includes</fail>
-                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                <pathconvert pathsep="," property="javac.includes.binary">
                     <path>
                         <filelist dir="@{destdir}" files="${javac.includes}"/>
@@ -322,11 +187,6 @@
                     <globmapper from="*.java" to="*.class"/>
                 </pathconvert>
-                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
-                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
                 <delete>
-                    <files includesfile="${javac.includesfile.binary}"/>
-                </delete>
-                <delete>
-                    <fileset file="${javac.includesfile.binary}"/>
+                    <files includes="${javac.includes.binary}"/>
                 </delete>
             </sequential>
@@ -339,6 +199,5 @@
             <attribute default="**" name="testincludes"/>
             <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
                     <batchtest todir="${build.test.results.dir}">
                         <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
@@ -355,6 +214,4 @@
                     <formatter type="brief" usefile="false"/>
                     <formatter type="xml"/>
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="-ea"/>
                     <jvmarg line="${run.jvmargs}"/>
                 </junit>
@@ -362,50 +219,5 @@
         </macrodef>
     </target>
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" name="profile-init"/>
-    <target name="-profile-pre-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target name="-profile-post-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target name="-profile-init-macrodef-profile">
-        <macrodef name="resolve">
-            <attribute name="name"/>
-            <attribute name="value"/>
-            <sequential>
-                <property name="@{name}" value="${env.@{value}}"/>
-            </sequential>
-        </macrodef>
-        <macrodef name="profile">
-            <attribute default="${main.class}" name="classname"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property environment="env"/>
-                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
-                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
-                    <jvmarg line="${profiler.info.jvmargs}"/>
-                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-                    <arg line="${application.args}"/>
-                    <classpath>
-                        <path path="${run.classpath}"/>
-                    </classpath>
-                    <syspropertyset>
-                        <propertyref prefix="run-sys-prop."/>
-                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <customize/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" name="-profile-init-check">
-        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
-        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
-    </target>
-    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+    <target name="-init-macrodef-nbjpda">
         <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="name"/>
@@ -413,5 +225,5 @@
             <attribute default="" name="stopclassname"/>
             <sequential>
-                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
                     <classpath>
                         <path path="@{classpath}"/>
@@ -444,10 +256,4 @@
             <istrue value="${have-jdk-older-than-1.4}"/>
         </condition>
-        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
-            <os family="windows"/>
-        </condition>
-        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
-            <isset property="debug.transport"/>
-        </condition>
     </target>
     <target depends="-init-debug-args" name="-init-macrodef-debug">
@@ -458,9 +264,6 @@
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${debug-args-line}"/>
-                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
@@ -479,14 +282,10 @@
         <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="classname"/>
-            <attribute default="${run.classpath}" name="classpath"/>
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
-                        <path path="@{classpath}"/>
+                        <path path="${run.classpath}"/>
                     </classpath>
                     <syspropertyset>
@@ -499,64 +298,12 @@
         </macrodef>
     </target>
-    <target name="-init-macrodef-copylibs">
-        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${manifest.file}" name="manifest"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
-                <pathconvert property="run.classpath.without.build.classes.dir">
-                    <path path="${run.classpath}"/>
-                    <map from="${build.classes.dir.resolved}" to=""/>
-                </pathconvert>
-                <pathconvert pathsep=" " property="jar.classpath">
-                    <path path="${run.classpath.without.build.classes.dir}"/>
-                    <chainedmapper>
-                        <flattenmapper/>
-                        <globmapper from="*" to="lib/*"/>
-                    </chainedmapper>
-                </pathconvert>
-                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
-                <copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
-                    <fileset dir="${build.classes.dir}"/>
-                    <manifest>
-                        <attribute name="Class-Path" value="${jar.classpath}"/>
-                        <customize/>
-                    </manifest>
-                </copylibs>
-            </sequential>
-        </macrodef>
-    </target>
     <target name="-init-presetdef-jar">
         <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+            <jar compress="${jar.compress}" jarfile="${dist.jar}">
                 <j2seproject1:fileset dir="${build.classes.dir}"/>
             </jar>
         </presetdef>
     </target>
-    <target name="-init-ap-cmdline-properties">
-        <property name="annotation.processing.enabled" value="true"/>
-        <property name="annotation.processing.processors.list" value=""/>
-        <property name="annotation.processing.processor.options" value=""/>
-        <property name="annotation.processing.run.all.processors" value="true"/>
-        <property name="javac.processorpath" value="${javac.classpath}"/>
-        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
-        <condition property="ap.supported.internal" value="true">
-            <not>
-                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
-            </not>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
-        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
-            <isfalse value="${annotation.processing.run.all.processors}"/>
-        </condition>
-        <condition else="" property="ap.proc.none.internal" value="-proc:none">
-            <isfalse value="${annotation.processing.enabled}"/>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
-        <property name="ap.cmd.line.internal" value=""/>
-    </target>
-    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
     <!--
                 ===================
@@ -564,27 +311,5 @@
                 ===================
             -->
-    <target name="-deps-jar-init" unless="built-jar.properties">
-        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
-        <delete file="${built-jar.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
-        <echo level="warn" message="Cycle detected: Postak was already built"/>
-    </target>
-    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-jar.properties}" verbose="false"/>
-        <property file="${built-jar.properties}" prefix="already.built.jar."/>
-        <antcall target="-warn-already-built-jar"/>
-        <propertyfile file="${built-jar.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-    </target>
-    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
-    <target depends="init" name="-check-automatic-build">
-        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
-    </target>
-    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
-        <antcall target="clean"/>
-    </target>
+    <target depends="init" name="deps-jar" unless="no.deps"/>
     <target depends="init,deps-jar" name="-pre-pre-compile">
         <mkdir dir="${build.classes.dir}"/>
@@ -595,28 +320,17 @@
     </target>
     <target if="do.depend.true" name="-compile-depend">
-        <pathconvert property="build.generated.subdirs">
-            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="*"/>
-            </dirset>
-        </pathconvert>
-        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
-    </target>
-    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
-        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <j2seproject3:depend/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac/>
         <copy todir="${build.classes.dir}">
             <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
         </copy>
     </target>
-    <target if="has.persistence.xml" name="-copy-persistence-xml">
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy todir="${build.classes.dir}/META-INF">
-            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
-        </copy>
-    </target>
     <target name="-post-compile">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
     <target name="-pre-compile-single">
         <!-- Empty placeholder for easier customization. -->
@@ -626,5 +340,5 @@
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile/>
-        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+        <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
     </target>
     <target name="-post-compile-single">
@@ -632,5 +346,5 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
     <!--
                 ====================
@@ -646,11 +360,11 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
         <j2seproject1:jar/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
         <j2seproject1:jar manifest="${manifest.file}"/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
         <j2seproject1:jar manifest="${manifest.file}">
             <j2seproject1:manifest>
@@ -658,5 +372,5 @@
             </j2seproject1:manifest>
         </j2seproject1:jar>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <echo>To run this application from the command line without Ant, try:</echo>
         <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
         <property location="${dist.jar}" name="dist.jar.resolved"/>
@@ -665,39 +379,31 @@
             <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
         </pathconvert>
-        <echo level="info">java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
-    </target>
-    <target depends="init" if="do.archive" name="-do-jar-with-libraries-create-manifest" unless="manifest.available">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <touch file="${tmp.manifest.file}" verbose="false"/>
-    </target>
-    <target depends="init" if="do.archive+manifest.available" name="-do-jar-with-libraries-copy-manifest">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+main.class.available" name="-do-jar-with-libraries-set-main">
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="Main-Class" value="${main.class}"/>
-        </manifest>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-with-libraries-set-splashscreen">
-        <basename file="${application.splash}" property="splashscreen.basename"/>
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
-        </manifest>
-    </target>
-    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen" if="do.mkdist" name="-do-jar-with-libraries-pack">
-        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
         <property location="${dist.jar}" name="dist.jar.resolved"/>
-        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
-    </target>
-    <target depends="-do-jar-with-libraries-pack" if="do.archive" name="-do-jar-with-libraries-delete-manifest">
-        <delete>
-            <fileset file="${tmp.manifest.file}"/>
-        </delete>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen,-do-jar-with-libraries-pack,-do-jar-with-libraries-delete-manifest" name="-do-jar-with-libraries"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
@@ -720,11 +426,7 @@
         <property name="javac.includes.binary" value=""/>
     </target>
-    <target depends="init,compile-single" name="run-single">
+    <target depends="init,-do-not-recompile,compile-single" name="run-single">
         <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
         <j2seproject1:java classname="${run.class}"/>
-    </target>
-    <target depends="init,compile-test-single" name="run-test-with-main">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
     </target>
     <!--
@@ -735,7 +437,4 @@
     <target depends="init" if="netbeans.home" name="-debug-start-debugger">
         <j2seproject1:nbjpdastart name="${debug.class}"/>
-    </target>
-    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
-        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
     </target>
     <target depends="init,compile" name="-debug-start-debuggee">
@@ -755,10 +454,5 @@
         <j2seproject3:debug classname="${debug.class}"/>
     </target>
-    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
-    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
-        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
-        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
-    </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
     <target depends="init" name="-pre-debug-fix">
         <fail unless="fix.includes">Must set fix.includes</fail>
@@ -770,105 +464,18 @@
     <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
     <!--
-                =================
-                PROFILING SECTION
-                =================
-            -->
-    <target depends="profile-init,compile" description="Profile a project in the IDE." if="netbeans.home" name="profile">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile/>
-    </target>
-    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="netbeans.home" name="profile-single">
-        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="${profile.class}"/>
-    </target>
-    <!--
-                =========================
-                APPLET PROFILING  SECTION
-                =========================
-            -->
-    <target depends="profile-init,compile-single" if="netbeans.home" name="profile-applet">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="sun.applet.AppletViewer">
-            <customize>
-                <arg value="${applet.url}"/>
-            </customize>
-        </profile>
-    </target>
-    <!--
-                =========================
-                TESTS PROFILING  SECTION
-                =========================
-            -->
-    <target depends="profile-init,compile-test-single" if="netbeans.home" name="profile-test-single">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
-            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-            <jvmarg value="${profiler.info.jvmargs.agent}"/>
-            <jvmarg line="${profiler.info.jvmargs}"/>
-            <test name="${profile.class}"/>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-            <syspropertyset>
-                <propertyref prefix="test-sys-prop."/>
-                <mapper from="test-sys-prop.*" to="*" type="glob"/>
-            </syspropertyset>
-            <formatter type="brief" usefile="false"/>
-            <formatter type="xml"/>
-        </junit>
-    </target>
-    <!--
                 ===============
                 JAVADOC SECTION
                 ===============
             -->
-    <target depends="init" if="have.sources" name="-javadoc-build">
+    <target depends="init" name="-javadoc-build">
         <mkdir dir="${dist.javadoc.dir}"/>
-        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
-            <and>
-                <isset property="endorsed.classpath.cmd.line.arg"/>
-                <not>
-                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
-                </not>
-            </and>
-        </condition>
         <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
             <classpath>
                 <path path="${javac.classpath}"/>
             </classpath>
-            <fileset dir="${src.dir}" excludes="*.java,${excludes}" includes="${includes}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
                 <filename name="**/*.java"/>
             </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/*.java"/>
-                <exclude name="*.java"/>
-            </fileset>
-            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
         </javadoc>
-        <copy todir="${dist.javadoc.dir}">
-            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
-                <filename name="**/doc-files/**"/>
-            </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/doc-files/**"/>
-            </fileset>
-        </copy>
     </target>
     <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
@@ -891,6 +498,6 @@
         <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
     </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
         <copy todir="${build.test.classes.dir}">
             <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
@@ -906,8 +513,8 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
         <copy todir="${build.test.classes.dir}">
             <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
@@ -931,5 +538,5 @@
     </target>
     <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
     </target>
     <target depends="init" if="have.tests" name="test-report"/>
@@ -944,7 +551,7 @@
     </target>
     <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
     <!--
                 =======================
@@ -973,5 +580,5 @@
         <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
     </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
     <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
         <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
@@ -1010,23 +617,8 @@
                 ===============
             -->
-    <target name="-deps-clean-init" unless="built-clean.properties">
-        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
-        <delete file="${built-clean.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
-        <echo level="warn" message="Cycle detected: Postak was already built"/>
-    </target>
-    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-clean.properties}" verbose="false"/>
-        <property file="${built-clean.properties}" prefix="already.built.clean."/>
-        <antcall target="-warn-already-built-clean"/>
-        <propertyfile file="${built-clean.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-    </target>
+    <target depends="init" name="deps-clean" unless="no.deps"/>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
-        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+        <delete dir="${dist.dir}"/>
     </target>
     <target name="-post-clean">
@@ -1035,19 +627,3 @@
     </target>
     <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
-    <target name="-check-call-dep">
-        <property file="${call.built.properties}" prefix="already.built."/>
-        <condition property="should.call.dep">
-            <not>
-                <isset property="already.built.${call.subproject}"/>
-            </not>
-        </condition>
-    </target>
-    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
-        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
-            <propertyset>
-                <propertyref prefix="transfer."/>
-                <mapper from="transfer.*" to="*" type="glob"/>
-            </propertyset>
-        </ant>
-    </target>
 </project>
Index: java/Postak/nbproject/genfiles.properties
===================================================================
--- java/Postak/nbproject/genfiles.properties	(revision 16:290074b53aca)
+++ java/Postak/nbproject/genfiles.properties	(revision 0:e76872ad5226)
@@ -1,8 +1,8 @@
 build.xml.data.CRC32=ecce8ba0
-build.xml.script.CRC32=e861f380
-build.xml.stylesheet.CRC32=28e38971@1.38.2.45
+build.xml.script.CRC32=b613dcff
+build.xml.stylesheet.CRC32=be360661
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=ecce8ba0
-nbproject/build-impl.xml.script.CRC32=8750d9a8
-nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.1.46
+nbproject/build-impl.xml.script.CRC32=38f4cab2
+nbproject/build-impl.xml.stylesheet.CRC32=487672f9
Index: java/Postak/nbproject/private/private.properties
===================================================================
--- java/Postak/nbproject/private/private.properties	(revision 0:e76872ad5226)
+++ java/Postak/nbproject/private/private.properties	(revision 0:e76872ad5226)
@@ -0,0 +1,6 @@
+do.depend=false
+do.jar=true
+javac.debug=true
+javadoc.preview=true
+jaxws.endorsed.dir=/usr/local/netbeans-6.1/java2/modules/ext/jaxws21/api
+user.properties.file=/home/fiki/.netbeans/6.1/build.properties
Index: java/Postak/nbproject/project.properties
===================================================================
--- java/Postak/nbproject/project.properties	(revision 5:bea5d9e11d37)
+++ java/Postak/nbproject/project.properties	(revision 0:e76872ad5226)
@@ -6,5 +6,4 @@
 build.dir=build
 build.generated.dir=${build.dir}/generated
-build.generated.sources.dir=${build.dir}/generated-sources
 # Only compile against the classpath explicitly listed here:
 build.sysclasspath=ignore
Index: java/Postak/src/cz/frantovo/postak/HromadnaZprava.java
===================================================================
--- java/Postak/src/cz/frantovo/postak/HromadnaZprava.java	(revision 17:9cb46ca7e26c)
+++ java/Postak/src/cz/frantovo/postak/HromadnaZprava.java	(revision 0:e76872ad5226)
@@ -10,137 +10,129 @@
  * Hromadná zpráva. Umí se rozdělit i na více dílčích zpráv,
  * které se vejdou do limitu příjemců SMTP serveru.
- *
  * @author fiki
  */
 public class HromadnaZprava implements Cloneable {
 
-	public enum FORMÁT {
+    private static Logger log = Logger.getLogger(HromadnaZprava.class.getName());
+    /** Předmět zprávy */
+    private String predmet;
+    /** Adresa a případně jméno odesílatele */
+    private InternetAddress odesilatel;
+    /** Zda má být zpráva odeslána jako HTML nebo prostý text */
+    private boolean formatHTML = false;
+    /** Tělo zprávy - prostý text */
+    private String text;
+    /** Všichni příjemci této zprávy */
+    private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>();
+    /** Hlavička Reply-to */
+    private InternetAddress odpovedetKomu;
 
-		XHTML,
-		PROSTÝ_TEXT,
-		OBOJE
-	}
-	private static final Logger log = Logger.getLogger(HromadnaZprava.class.getName());
-	/** Předmět zprávy */
-	private String predmet;
-	/** Adresa a případně jméno odesílatele */
-	private InternetAddress odesilatel;
-	/** Zda má být zpráva odeslána jako HTML nebo prostý text */
-	private FORMÁT formát = FORMÁT.PROSTÝ_TEXT;
-	/** Tělo zprávy - prostý text */
-	private String text;
-	/** Všichni příjemci této zprávy */
-	private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>();
-	/** Hlavička Reply-to */
-	private InternetAddress odpovedetKomu;
+    public String getPredmet() {
+        return predmet;
+    }
 
-	public String getPredmet() {
-		return predmet;
-	}
+    public void setPredmet(String predmet) {
+        this.predmet = predmet;
+    }
 
-	public void setPredmet(String predmet) {
-		this.predmet = predmet;
-	}
+    public InternetAddress getOdesilatel() {
+        return odesilatel;
+    }
 
-	public InternetAddress getOdesilatel() {
-		return odesilatel;
-	}
+    public void setOdesilatel(InternetAddress odesilatel) {
+        this.odesilatel = odesilatel;
+    }
 
-	public void setOdesilatel(InternetAddress odesilatel) {
-		this.odesilatel = odesilatel;
-	}
+    public String getText() {
+        return text;
+    }
 
-	public String getText() {
-		return text;
-	}
+    public void setText(String text) {
+        this.text = text;
+    }
 
-	public void setText(String text) {
-		this.text = text;
-	}
+    public ArrayList<InternetAddressKomu> getPrijemci() {
+        return prijemci;
+    }
 
-	public ArrayList<InternetAddressKomu> getPrijemci() {
-		return prijemci;
-	}
+    /** 
+     * @param prijemci pokud je null, nastaví prázdná kolekce.
+     */
+    public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) {
+        this.prijemci = new ArrayList<InternetAddressKomu>();
+        pridejPrijemce(prijemci);
+    }
 
-	/**
-	 * @param prijemci pokud je null, nastaví prázdná kolekce.
-	 */
-	public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) {
-		this.prijemci = new ArrayList<InternetAddressKomu>();
-		pridejPrijemce(prijemci);
-	}
+    public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) {
+        if (prijemci == null) {
+            log.log(Level.FINER, "Prázdná množina příjemců - nic nepřidáme");
+        } else {
+            this.prijemci.addAll(prijemci);
+        }
+    }
 
-	public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) {
-		if (prijemci == null) {
-			log.log(Level.FINER, "Prázdná množina příjemců – nic nepřidáme");
-		} else {
-			this.prijemci.addAll(prijemci);
-		}
-	}
+    /**
+     * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem,
+     * rozdělí se zpráva na více dílčích zpráv.
+     * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru)
+     */
+    public Collection<HromadnaZprava> getDilciZpravy(int limit) {
+        Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>();
 
-	/**
-	 * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem,
-	 * rozdělí se zpráva na více dílčích zpráv.
-	 *
-	 * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru)
-	 */
-	public Collection<HromadnaZprava> getDilciZpravy(int limit) {
-		Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>();
+        if (limit < getPrijemci().size()) {
+            /** Zprávu je potřeba rozdělit */
+            try {
+                HromadnaZprava dilciZprava = (HromadnaZprava) clone();
+                dilciZprava.setPrijemci(null);
 
-		if (limit < getPrijemci().size()) {
-			/** Zprávu je potřeba rozdělit */
-			try {
-				HromadnaZprava dilciZprava = (HromadnaZprava) clone();
-				dilciZprava.setPrijemci(null);
+                ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci();
+                for (InternetAddressKomu prijemce : vsichniPrijemci) {
+                    dilciZprava.getPrijemci().add(prijemce);
 
-				ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci();
-				for (InternetAddressKomu prijemce : vsichniPrijemci) {
-					dilciZprava.getPrijemci().add(prijemce);
+                    if (dilciZprava.getPrijemci().size() == limit) {
+                        zpravy.add(dilciZprava);
+                        dilciZprava = (HromadnaZprava) clone();
+                        dilciZprava.setPrijemci(null);
+                    }
+                }
 
-					if (dilciZprava.getPrijemci().size() == limit) {
-						zpravy.add(dilciZprava);
-						dilciZprava = (HromadnaZprava) clone();
-						dilciZprava.setPrijemci(null);
-					}
-				}
-
-				if (dilciZprava.getPrijemci().size() > 0) {
-					/**
-					 * Počet příjemců není násobkem limitu,
-					 * takže nakonci ještě někteří zbyli.
-					 * Z nich budou příjemci pro poslední dílčí zprávu.
-					 */
-					zpravy.add(dilciZprava);
-				}
+                if (dilciZprava.getPrijemci().size() > 0) {
+                    /**
+                     * Počet příjemců není násobkem limitu,
+                     * takže nakonci ještě někteří zbyli.
+                     * Z nich budou příjemci pro poslední dílčí zprávu.
+                     */
+                    zpravy.add(dilciZprava);
+                }
 
 
-			} catch (CloneNotSupportedException ex) {
-				/** Tohle by nikdy nemělo nastat */
-				log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);
-				zpravy.add(this);
-			}
-		} else {
-			/** Zprávu má málo příjemců - můžeme ji odeslat najednou */
-			zpravy.add(this);
-		}
+            } catch (CloneNotSupportedException ex) {
+                /** Tohle by nikdy nemělo nastat */
+                log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);
+                zpravy.add(this);
+            }
+        } else {
+            /** Zprávu má málo příjemců - můžeme ji odeslat najednou */
+            zpravy.add(this);
+        }
 
-		return zpravy;
-	}
+        return zpravy;
+    }
 
-	public FORMÁT getFormát() {
-		return formát;
-	}
+    public boolean isFormatHTML() {
+        return formatHTML;
+    }
 
-	public void setFormatHTML(FORMÁT formát) {
-		this.formát = formát;
-	}
+    public void setFormatHTML(boolean formatHTML) {
+        this.formatHTML = formatHTML;
+    }
 
-	public InternetAddress getOdpovedetKomu() {
-		return odpovedetKomu;
-	}
+    public InternetAddress getOdpovedetKomu() {
+        return odpovedetKomu;
+    }
 
-	/** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */
-	public void setOdpovedetKomu(InternetAddress odpovedetKomu) {
-		this.odpovedetKomu = odpovedetKomu;
-	}
+    /** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */
+    public void setOdpovedetKomu(InternetAddress odpovedetKomu) {
+        this.odpovedetKomu = odpovedetKomu;
+    }
 }
Index: java/Postak/src/cz/frantovo/postak/InternetAddressKomu.java
===================================================================
--- java/Postak/src/cz/frantovo/postak/InternetAddressKomu.java	(revision 4:dfb345ef9452)
+++ java/Postak/src/cz/frantovo/postak/InternetAddressKomu.java	(revision 0:e76872ad5226)
@@ -10,5 +10,4 @@
  */
 public class InternetAddressKomu extends InternetAddress {
-    private static final long serialVersionUID = 5616579686371892208L;
 
     private RecipientType typ = RecipientType.BCC;
Index: java/Postak/src/cz/frantovo/postak/Nastaveni.java
===================================================================
--- java/Postak/src/cz/frantovo/postak/Nastaveni.java	(revision 15:9175a185d9c0)
+++ java/Postak/src/cz/frantovo/postak/Nastaveni.java	(revision 0:e76872ad5226)
@@ -1,5 +1,9 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
 package cz.frantovo.postak;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 
@@ -8,126 +12,103 @@
  * @author fiki
  */
-public class Nastaveni implements Serializable {
+public class Nastaveni {
+    
+    private String postovniServer = "localhost";
+    private int postovniPort = 25;
+    private String postovniJmeno;
+    private char[] postovniHeslo;
+    private int limitZprav = 1000;
+    
+    /** Připojovací řetězec */
+    private String databaze;
+    private String dbJmeno;
+    private char[] dbHeslo;
+    
+    /** Výchozí příjemci */
+    private ArrayList<InternetAddressKomu> vychoziPrijemci;
+    
+    /** Přejatá konstanta od SuperPošťáka */
+    private String cestaKCertifikatum;
 
-	private static final long serialVersionUID = -3155540704924123097L;
-	private String postovniServer = "localhost";
-	private int postovniPort = 25;
-	private String postovniJmeno;
-	private char[] postovniHeslo;
-	private int limitZprav = 1000;
-	/** Připojovací řetězec */
-	private String databaze;
-	private String dbJmeno;
-	private char[] dbHeslo;
-	/** Výchozí příjemci */
-	private ArrayList<InternetAddressKomu> vychoziPrijemci;
-	/** Zkušební příjemci */
-	private ArrayList<InternetAddressKomu> zkušebníPrijemci;
-	/** Přejatá konstanta od SuperPošťáka */
-	private String cestaKCertifikatum;
-	/**
-	 * Výchozí adresář pro ukládání a načítání souborů
-	 * např. pro souborové dialogy
-	 */
-	private String pracovniAdresar;
+    public String getCestaKCertifikatum() {
+        return cestaKCertifikatum;
+    }
 
-	public String getPracovniAdresar() {
-		if (pracovniAdresar == null) {
-			return System.getProperty("user.home");
-		} else {
-			return pracovniAdresar;
-		}
-	}
+    public void setCestaKCertifikatum(String cestaKCertifikatum) {
+        this.cestaKCertifikatum = cestaKCertifikatum;
+    }
 
-	public void setPracovniAdresar(String pracovniAdresar) {
-		this.pracovniAdresar = pracovniAdresar;
-	}
+    public String getPostovniServer() {
+        return postovniServer;
+    }
 
-	public String getCestaKCertifikatum() {
-		return cestaKCertifikatum;
-	}
+    public void setPostovniServer(String postovniServer) {
+        this.postovniServer = postovniServer;
+    }
 
-	public void setCestaKCertifikatum(String cestaKCertifikatum) {
-		this.cestaKCertifikatum = cestaKCertifikatum;
-	}
+    public int getPostovniPort() {
+        return postovniPort;
+    }
 
-	public String getPostovniServer() {
-		return postovniServer;
-	}
+    public void setPostovniPort(int postovniPort) {
+        this.postovniPort = postovniPort;
+    }
 
-	public void setPostovniServer(String postovniServer) {
-		this.postovniServer = postovniServer;
-	}
+    public String getPostovniJmeno() {
+        return postovniJmeno;
+    }
 
-	public int getPostovniPort() {
-		return postovniPort;
-	}
+    public void setPostovniJmeno(String postovniJmeno) {
+        this.postovniJmeno = postovniJmeno;
+    }
 
-	public void setPostovniPort(int postovniPort) {
-		this.postovniPort = postovniPort;
-	}
+    public char[] getPostovniHeslo() {
+        return postovniHeslo;
+    }
 
-	public String getPostovniJmeno() {
-		return postovniJmeno;
-	}
+    public void setPostovniHeslo(char[] postovniHeslo) {
+        this.postovniHeslo = postovniHeslo;
+    }
 
-	public void setPostovniJmeno(String postovniJmeno) {
-		this.postovniJmeno = postovniJmeno;
-	}
+    public int getLimitZprav() {
+        return limitZprav;
+    }
 
-	public char[] getPostovniHeslo() {
-		return postovniHeslo;
-	}
+    public void setLimitZprav(int limitZprav) {
+        this.limitZprav = limitZprav;
+    }
 
-	public void setPostovniHeslo(char[] postovniHeslo) {
-		this.postovniHeslo = postovniHeslo;
-	}
+    public String getDatabaze() {
+        return databaze;
+    }
 
-	public int getLimitZprav() {
-		return limitZprav;
-	}
+    public String getDbJmeno() {
+        return dbJmeno;
+    }
 
-	public void setLimitZprav(int limitZprav) {
-		this.limitZprav = limitZprav;
-	}
+    public char[] getDbHeslo() {
+        return dbHeslo;
+    }
 
-	public String getDatabaze() {
-		return databaze;
-	}
+    public ArrayList<InternetAddressKomu> getVychoziPrijemci() {
+        return vychoziPrijemci;
+    }
 
-	public String getDbJmeno() {
-		return dbJmeno;
-	}
+    public void setDatabaze(String databaze) {
+        this.databaze = databaze;
+    }
 
-	public char[] getDbHeslo() {
-		return dbHeslo;
-	}
+    public void setDbJmeno(String dbJmeno) {
+        this.dbJmeno = dbJmeno;
+    }
 
-	public ArrayList<InternetAddressKomu> getVychoziPrijemci() {
-		return vychoziPrijemci;
-	}
+    public void setDbHeslo(char[] dbHeslo) {
+        this.dbHeslo = dbHeslo;
+    }
 
-	public ArrayList<InternetAddressKomu> getZkušebníPrijemci() {
-		return zkušebníPrijemci;
-	}
+    public void setVychoziPrijemci(ArrayList<InternetAddressKomu> vychoziPrijemci) {
+        this.vychoziPrijemci = vychoziPrijemci;
+    }
+    
 
-	public void setDatabaze(String databaze) {
-		this.databaze = databaze;
-	}
-
-	public void setDbJmeno(String dbJmeno) {
-		this.dbJmeno = dbJmeno;
-	}
-
-	public void setDbHeslo(char[] dbHeslo) {
-		this.dbHeslo = dbHeslo;
-	}
-
-	public void setVychoziPrijemci(ArrayList<InternetAddressKomu> vychoziPrijemci) {
-		this.vychoziPrijemci = vychoziPrijemci;
-	}
-
-	public void setZkušebníPrijemci(ArrayList<InternetAddressKomu> zkušebníPrijemci) {
-		this.zkušebníPrijemci = zkušebníPrijemci;
-	}
 }
Index: java/Postak/src/cz/frantovo/postak/Postak.java
===================================================================
--- java/Postak/src/cz/frantovo/postak/Postak.java	(revision 17:9cb46ca7e26c)
+++ java/Postak/src/cz/frantovo/postak/Postak.java	(revision 0:e76872ad5226)
@@ -2,6 +2,4 @@
 
 import java.io.File;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -16,250 +14,208 @@
 import javax.mail.Session;
 import javax.mail.Transport;
-import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
 
 /**
  * Odešle hromadnou zprávu pomocí SMTP.
- *
+ * 
  * @author fiki
  */
-public class Postak {
-
-	private static final String KÓDOVÁNÍ = "UTF-8";
-	private static final Logger log = Logger.getLogger(Postak.class.getName());
-	/** Regulární výraz pro správnou e-mailovou adresu */
-	private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
-	private Nastaveni nastaveni;
-	private TransformerFactory transformerFactory;
-
-	public Postak(Nastaveni nastaveni) {
-		this.nastaveni = nastaveni;
-		transformerFactory = TransformerFactory.newInstance();
-	}
-
-	public void setNastaveni(Nastaveni nastaveni) {
-		this.nastaveni = nastaveni;
-	}
-
-	/**
-	 * Nízkoúrovňová odesílací metoda, která už nekontroluje limit příjemců.
-	 * Pokud se nevejdou do limitu SMTP serveru, vyhazuje výjimku.
-	 *
-	 * TODO: lepší to bude nestaické - nastavení si vyžádat v konstruktoru
-	 */
-	private void odesliSMTP(HromadnaZprava zprava) throws MessagingException {
-
-		if (zkontrolujZpravu(zprava) && zkontrolujNastaveni(nastaveni)) {
-
-			/** Inicializace SMTP */
-			Properties smtpVlastnosti = System.getProperties();
-			smtpVlastnosti.put("mail.smtp.host", nastaveni.getPostovniServer());
-			smtpVlastnosti.put("mail.smtp.port", String.valueOf(nastaveni.getPostovniPort()));
-
-			if (nastaveni.getPostovniPort() == 465) {
-				if (new File(nastaveni.getCestaKCertifikatum()).exists()) {
-					System.setProperty("javax.net.ssl.trustStore", nastaveni.getCestaKCertifikatum());
-					log.log(Level.INFO, "Používám vlastní důvěryhodné certifikáty: {0}", nastaveni.getCestaKCertifikatum());
-				}
-				/** TODO: neřídit se číslem portu, ale přidat příznak pro šifrování */
-				smtpVlastnosti.put("mail.smtp.starttls.enable", "true");
-				smtpVlastnosti.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
-				smtpVlastnosti.put("mail.smtp.socketFactory.port", String.valueOf(nastaveni.getPostovniPort()));
-				smtpVlastnosti.put("mail.smtp.socketFactory.fallback", "false");
-				/**
-				 * NAHRÁNÍ CERTIFIKÁTU:
-				 * 1) stáhneme si certifikát (---BEGIN CERTIFICATE---) a uložíme do vse_ca.cer
-				 * 2) keytool -importcert -file vse_ca.cer -keystore DuveryhodneCertifikaty.keystore
-				 * -storepass "changeit"
-				 * Pokud daný soubor existuje, program ho používá, pokud ne, používá certifikáty
-				 * uložené v systému (Javovské).
-				 */
-			}
-
-			PostakuvHeslovnik heslovnik = new PostakuvHeslovnik();
-			if (nastaveni.getPostovniJmeno() != null && nastaveni.getPostovniJmeno().length() > 0) {
-				heslovnik.setJmenoHeslo(nastaveni.getPostovniJmeno(), nastaveni.getPostovniHeslo());
-				smtpVlastnosti.put("mail.smtp.auth", "true");
-				log.log(Level.FINEST, "Používám pro SMTP jméno a heslo");
-			}
-
-			Session smtpRelace = Session.getInstance(smtpVlastnosti, heslovnik);
-
-			smtpRelace.setDebug(true);
-			smtpRelace.setDebugOut(System.out);
-
-			/** Sestavení zprávy */
-			MimeMessage mimeZprava = new MimeMessage(smtpRelace);
-			mimeZprava.setFrom(zprava.getOdesilatel());
-			if (zprava.getOdpovedetKomu() != null) {
-				Address[] odpovedetKomu = {zprava.getOdpovedetKomu()};
-				mimeZprava.setReplyTo(odpovedetKomu);
-			}
-			naplnPrijemce(mimeZprava, zprava);
-			mimeZprava.setSubject(zprava.getPredmet());
-			mimeZprava.setHeader("User-Agent", "https://frantovo.cz/projekty/SuperPostak/");
-			mimeZprava.setHeader("Precedence", "bulk");
-
-			switch (zprava.getFormát()) {
-				case PROSTÝ_TEXT:
-					mimeZprava.setText(zprava.getText(), KÓDOVÁNÍ);
-					break;
-				case XHTML:
-					mimeZprava.setText(zprava.getText(), KÓDOVÁNÍ, "html");
-					break;
-				case OBOJE:
-					MimeMultipart multipart = new MimeMultipart("alternative");
-					mimeZprava.setContent(multipart);
-
-					MimeBodyPart textováČást = new MimeBodyPart();
-					MimeBodyPart xhtmlČást = new MimeBodyPart();
-
-					textováČást.setText(xhtmlNaProstýText(zprava.getText()), KÓDOVÁNÍ);
-					xhtmlČást.setContent(zprava.getText(), "text/html; charset=" + KÓDOVÁNÍ);
-
-					multipart.addBodyPart(textováČást);
-					multipart.addBodyPart(xhtmlČást);
-					break;
-			}
-
-			/** Vlastní odeslání */
-			Transport.send(mimeZprava);
-
-		} else {
-			MessagingException e = new MessagingException("Zpráva nebo nastavení jsou nevyhovující");
-			log.log(Level.SEVERE, null, e);
-			throw e;
-		}
-
-	}
-
-	private String xhtmlNaProstýText(String xhtml) throws MessagingException {
-		try {
-			Transformer textTransformer = transformerFactory.newTransformer(new StreamSource(getClass().getClassLoader().getResourceAsStream("cz/frantovo/postak/odchozíEmailText.xsl")));
-
-			StringReader input = new StringReader(xhtml);
-			StringWriter output = new StringWriter(xhtml.length());
-			textTransformer.transform(new StreamSource(input), new StreamResult(output));
-
-			return output.toString();
-		} catch (Exception e) {
-			throw new MessagingException("Chyba při XSL transformaci zprávy na prostý text.", e);
-		}
-	}
-
-	/**
-	 * Nastaví zprávě (MimeMessage) všechny příjemce, které najde ve zprávě a nastavení.
-	 * Respektuje typy příjemců: komu, kopie, skrytá kopie.
-	 */
-	private static void naplnPrijemce(MimeMessage mimeZprava, HromadnaZprava zprava) throws MessagingException {
-		/**
-		 * Příjemci se budou definovat pouze ve zprávě.
-		 * Z nastavení se brát nebudou (výchozí příjemci už ve zprávě budou).
-		 */
-		ArrayList<InternetAddressKomu> prijemci = zprava.getPrijemci();
-		for (InternetAddressKomu komu : prijemci) {
-			if (zkontrolujAdresu(komu)) {
-				mimeZprava.addRecipient(komu.getTyp(), komu);
-			}
-		}
-	}
-
-	/** Vypíše do logu seznam příjemců */
-	public static void vypisPrijemce(Collection<InternetAddressKomu> prijemci) {
-		for (InternetAddressKomu p : prijemci) {
-			log.log(Level.INFO, p.toString());
-		}
-	}
-
-	/** Veřejná odesílací metoda.
-	 * Postará se o rozdělení zpráv na dílčí (které se vejdou do limitu příjemců)
-	 */
-	public void odesli(HromadnaZprava zprava) throws MessagingException {
-		Collection<HromadnaZprava> zpravy = zprava.getDilciZpravy(nastaveni.getLimitZprav());
-
-		for (HromadnaZprava dilciZprava : zpravy) {
-			odesliSMTP(dilciZprava);
-		}
-	}
-
-	private static boolean zkontrolujAdresu(InternetAddressKomu a) {
-		if (a.getTyp() == null) {
-			log.log(Level.WARNING, "Neplatná adresa (typ): {0}", a.getAddress());
-			return false;
-		}
-
-		if (a.getAddress() == null || a.getAddress().length() < 1) {
-			log.log(Level.WARNING, "Neplatná adresa (address): {0}", a.getPersonal());
-			return false;
-		}
-
-		if (!zkontrolujAdresu(a.getAddress())) {
-			log.log(Level.WARNING, "Adresa nevyhovuje regulárnímu výrazu: {0}", a.getAddress());
-			return false;
-		}
-
-		return true;
-	}
-
-	/** Zkontroluje e-mailovou adresu pomocí regulárního výrazu. */
-	public static boolean zkontrolujAdresu(String adresa) {
-		return adresa != null && Pattern.matches(REGULARNI_EMAIL, adresa);
-	}
-
-	/** @return Vrací true, pokud je zpráva v pořádku */
-	private static boolean zkontrolujZpravu(HromadnaZprava z) {
-
-		if (z.getPrijemci() == null) {
-			log.log(Level.WARNING, "getPrijemci() == null");
-			return false;
-		}
-
-		if (z.getPrijemci().size() < 1) {
-			log.log(Level.WARNING, "getPrijemci().size() < 1");
-			return false;
-		}
-
-		if (z.getOdesilatel() == null) {
-			log.log(Level.WARNING, "getOdesilatel() == null");
-			return false;
-		}
-
-		if (z.getPredmet() == null) {
-			log.log(Level.WARNING, "getPredmet() == null");
-			return false;
-		}
-
-		return true;
-	}
-
-	private static boolean zkontrolujNastaveni(Nastaveni n) {
-
-		if (n.getPostovniServer() == null || n.getPostovniServer().length() < 1) {
-			return false;
-		}
-
-		return true;
-	}
-
-	/** Slouží k uložení jména a hesla pro SMTP */
-	private static class PostakuvHeslovnik extends Authenticator {
-
-		private String jmeno = "user";
-		private char[] heslo = "luser".toCharArray();
-
-		@Override
-		public PasswordAuthentication getPasswordAuthentication() {
-			return new PasswordAuthentication(jmeno, String.valueOf(heslo));
-		}
-
-		public void setJmenoHeslo(String jmeno, char[] heslo) {
-			this.jmeno = jmeno;
-			this.heslo = heslo;
-		}
-	}
+public class Postak {   
+    
+    private static Logger log = Logger.getLogger(Postak.class.getName());
+    /** Regulární výraz pro správnou e-mailovou adresu */
+    private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
+    
+    private Nastaveni nastaveni;
+
+    public Postak(Nastaveni nastaveni) {
+        this.nastaveni = nastaveni;
+    }
+
+    public void setNastaveni(Nastaveni nastaveni) {
+        this.nastaveni = nastaveni;
+    }
+
+    /** 
+     * Nízkoúrovňová odesílací metoda, která už nekontroluje limit příjemců.
+     * Pokud se nevejdou do limitu SMTP serveru, vyhazuje výjimku.
+     * 
+     * TODO: lepší to bude nestaické - nastavení si vyžádat v konstruktoru
+     */
+    private void odesliSMTP(HromadnaZprava zprava) throws MessagingException {
+
+        if (zkontrolujZpravu(zprava) && zkontrolujNastaveni(nastaveni)) {
+
+            /** Inicializace SMTP */
+            Properties smtpVlastnosti = System.getProperties();
+            smtpVlastnosti.put("mail.smtp.host", nastaveni.getPostovniServer());
+            smtpVlastnosti.put("mail.smtp.port", String.valueOf(nastaveni.getPostovniPort()));
+
+            if (nastaveni.getPostovniPort() == 465) {
+                if (new File(nastaveni.getCestaKCertifikatum()).exists()) {
+                    System.setProperty("javax.net.ssl.trustStore", nastaveni.getCestaKCertifikatum());
+                    log.log(Level.INFO, "Používám vlastní důvěryhodné certifikáty: " + nastaveni.getCestaKCertifikatum());
+                }
+                /** TODO: neřídit se číslem portu, ale přidat příznak pro šifrování */
+                smtpVlastnosti.put("mail.smtp.starttls.enable", "true");
+                smtpVlastnosti.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+                smtpVlastnosti.put("mail.smtp.socketFactory.port", String.valueOf(nastaveni.getPostovniPort()));
+                smtpVlastnosti.put("mail.smtp.socketFactory.fallback", "false");
+            /**
+             * NAHRÁNÍ CERTIFIKÁTU:
+             * 1) stáhneme si certifikát (---BEGIN CERTIFICATE---) a uložíme do vse_ca.cer             
+             * 2) keytool -importcert -file vse_ca.cer -keystore DuveryhodneCertifikaty.keystore -storepass "changeit"
+             * Pokud daný soubor existuje, program ho používá, pokud ne, používá certifikáty uložené v systému (Javovské).
+             */
+            }
+
+            PostakuvHeslovnik heslovnik = new PostakuvHeslovnik();
+            if (nastaveni.getPostovniJmeno() != null && nastaveni.getPostovniJmeno().length() > 0) {
+                heslovnik.setJmenoHeslo(nastaveni.getPostovniJmeno(), nastaveni.getPostovniHeslo());
+                smtpVlastnosti.put("mail.smtp.auth", "true");
+                log.log(Level.FINEST, "Používám pro SMTP jméno a heslo");
+            }
+
+            Session smtpRelace = Session.getInstance(smtpVlastnosti, heslovnik);
+
+            smtpRelace.setDebug(true);
+            smtpRelace.setDebugOut(System.out);
+
+            /** Sestavení zprávy */
+            MimeMessage mimeZprava = new MimeMessage(smtpRelace);
+            mimeZprava.setFrom(zprava.getOdesilatel());
+            if (zprava.getOdpovedetKomu() != null) {
+                Address[] odpovedetKomu = {zprava.getOdpovedetKomu()};
+                mimeZprava.setReplyTo(odpovedetKomu);
+            }
+            naplnPrijemce(mimeZprava, zprava);
+            mimeZprava.setSubject(zprava.getPredmet());
+            mimeZprava.setHeader("User-Agent", "http://frantovo.cz/projekty/SuperPostak/");
+            if (zprava.isFormatHTML()) {
+                mimeZprava.setText(zprava.getText(), "UTF-8", "html");
+            } else {
+                mimeZprava.setText(zprava.getText(), "UTF-8");
+            }
+
+            /** Vlastní odeslání */
+            Transport.send(mimeZprava);
+
+        } else {
+            MessagingException e = new MessagingException("Zpráva nebo nastavení jsou nevyhovující");
+            log.log(Level.SEVERE, null, e);
+            throw e;
+        }
+
+    }
+
+    /**
+     * Nastaví zprávě (MimeMessage) všechny příjemce, které najde ve zprávě a nastavení.
+     * Respektuje typy příjemců: komu, kopie, skrytá kopie.    
+     */
+    private static void naplnPrijemce(MimeMessage mimeZprava, HromadnaZprava zprava) throws MessagingException {
+        /** 
+         * Příjemci se budou definovat pouze ve zprávě.
+         * Z nastavení se brát nebudou (výchozí příjemci už ve zprávě budou).
+         */
+        ArrayList<InternetAddressKomu> prijemci = zprava.getPrijemci();
+        for (InternetAddressKomu komu : prijemci) {
+            if (zkontrolujAdresu(komu)) {
+                mimeZprava.addRecipient(komu.getTyp(), komu);
+            }
+        }
+    }
+
+    /** Vypíše do logu seznam příjemců */
+    public static void vypisPrijemce(Collection<InternetAddressKomu> prijemci) {
+        for (InternetAddressKomu p : prijemci) {
+            log.log(Level.INFO, p.toString());
+        }
+    }
+
+    /** Veřejná odesílací metoda.
+     * Postará se o rozdělení zpráv na dílčí (které se vejdou do limitu příjemců)
+     */
+    public void odesli(HromadnaZprava zprava) throws MessagingException {
+        Collection<HromadnaZprava> zpravy = zprava.getDilciZpravy(nastaveni.getLimitZprav());
+
+        for (HromadnaZprava dilciZprava : zpravy) {
+            odesliSMTP(dilciZprava);
+        }
+    }
+
+    private static boolean zkontrolujAdresu(InternetAddressKomu a) {
+        if (a.getTyp() == null) {
+            log.log(Level.WARNING, "Neplatná adresa (typ): " + a.getAddress());
+            return false;
+        }
+
+        if (a.getAddress() == null || a.getAddress().length() < 1) {
+            log.log(Level.WARNING, "Neplatná adresa (address): " + a.getPersonal());
+            return false;
+        }
+
+        if (!zkontrolujAdresu(a.getAddress())) {
+            log.log(Level.WARNING, "Adresa nevyhovuje regulárnímu výrazu: " + a.getAddress());
+            return false;
+        }
+
+        return true;
+    }
+
+    /** Zkontroluje e-mailovou adresu pomocí regulárního výrazu. */
+    public static boolean zkontrolujAdresu(String adresa) {
+        return adresa != null && Pattern.matches(REGULARNI_EMAIL, adresa);
+    }
+
+    /** @return  Vrací true, pokud je zpráva v pořádku */
+    private static boolean zkontrolujZpravu(HromadnaZprava z) {
+
+        if (z.getPrijemci() == null) {
+            log.log(Level.WARNING, "getPrijemci() == null");
+            return false;
+        }
+
+        if (z.getPrijemci().size() < 1) {
+            log.log(Level.WARNING, "getPrijemci().size() < 1");
+            return false;
+        }
+
+        if (z.getOdesilatel() == null) {
+            log.log(Level.WARNING, "getOdesilatel() == null");
+            return false;
+        }
+
+        if (z.getPredmet() == null) {
+            log.log(Level.WARNING, "getPredmet() == null");
+            return false;
+        }
+
+        return true;
+    }
+
+    private static boolean zkontrolujNastaveni(Nastaveni n) {
+
+        if (n.getPostovniServer() == null || n.getPostovniServer().length() < 1) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /** Slouží k uložení jména a hesla pro SMTP */
+    private static class PostakuvHeslovnik extends Authenticator {
+
+        private String jmeno = "user";
+        private char[] heslo = "luser".toCharArray();
+
+        @Override
+        public PasswordAuthentication getPasswordAuthentication() {
+            return new PasswordAuthentication(jmeno, String.valueOf(heslo));
+        }
+
+        public void setJmenoHeslo(String jmeno, char[] heslo) {
+            this.jmeno = jmeno;
+            this.heslo = heslo;
+        }
+    }
 }
Index: ava/Postak/src/cz/frantovo/postak/hack/Individuální.java
===================================================================
--- java/Postak/src/cz/frantovo/postak/hack/Individuální.java	(revision 9:6f7d2cc5380e)
+++ 	(revision )
@@ -1,92 +1,0 @@
-package cz.frantovo.postak.hack;
-
-import cz.frantovo.postak.HromadnaZprava;
-import cz.frantovo.postak.InternetAddressKomu;
-import cz.frantovo.postak.Nastaveni;
-import cz.frantovo.postak.Postak;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import javax.mail.internet.InternetAddress;
-
-/**
- * <p>
- * Toto je jakýsi „skript“ pro zvláštní případy, kdy potřebujeme poslat hromadný e-mail,
- * ale každý příjemce má dostat jiný text. 
- * Resp. text každého e-mailu je parametrizován – dosazením jedné hodnoty za zástupný symbol.
- * </p>
- *
- * <p>
- * Text zprávy načteme ze souboru, stejně jako seznam příjemců a příslušných parametrů.
- * Ostatní údaje se nastavují pomocí konstant níže.
- * </p>
- *
- * <p>
- * Nápady na vylepšení (TODO):
- * </p>
- * <ul>
- * <li>Umožnit zadat více než jeden parametr</li>
- * <li>Načítat nastavení (server, port atd.) ze souboru (jako to dělá SuperPošťák)</li>
- * <li>Zapracovat do GUI SuperPošťáka</li>
- * </ul>
- *
- * <p>
- * Pozor na poměrně intenzivní SMTP komunikaci – posílá se tolik e-mailů, kolik je příjemců,
- * ne jako u klasických hromadných zpráv, kde e-mail má řádové 500 nebo 1000 příjemců
- * (a rozdělí se až na serveru).
- * </p>
- */
-public class Individuální {
-
-	private static final String SERVER = "localhost";
-	private static final int PORT = 2525;
-	/** Soubor obsahující text e-mailu */
-	private static final String TEXT_EMAILU = "/tmp/email.txt";
-	/** Slovo v textu zprávy, které bude nahrazeno parametrem */
-	private static final String TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL = "<nahradit>";
-	/** Soubor obsahující seznam příjemců (e-mailových adres) a parametrů, které se dosadí do textu */
-	private static final String PŘÍJEMCI = "/tmp/emaily.csv";
-	private static final String PŘÍJEMCI_ODDĚLOVAČ = "\t";
-	private static final String PŘEDMĚT = "Předmět e-mailu";
-	private static final String ODESÍLATEL_ADRESA = "test@example.com";
-	private static final String ODESÍLATEL_JMÉNO = "Jméno Příjmení";
-
-
-
-	public static void main(String[] args) throws Exception {
-		/** Inicializace nastavení a pošťáka */
-		Nastaveni nastavení = new Nastaveni();
-		nastavení.setPostovniServer(SERVER);
-		nastavení.setPostovniPort(PORT);
-		Postak pošťák = new Postak(nastavení);
-
-		/** Načteme text zprávy ze souboru */
-		BufferedReader emailTxt = new BufferedReader(new FileReader(TEXT_EMAILU));
-		StringBuilder text = new StringBuilder();
-		while (emailTxt.ready()) {
-			text.append(emailTxt.readLine());
-			text.append("\n");
-		}
-
-		/** Načteme příjemce a jejich parametry ze souboru… */
-		BufferedReader příjemci = new BufferedReader(new FileReader(PŘÍJEMCI));
-		while (příjemci.ready()) {
-			String[] řádka = příjemci.readLine().split(PŘÍJEMCI_ODDĚLOVAČ);
-			String email = řádka[0];
-			String kód = řádka[1];
-			/** …a pošleme jim e-mail */
-			odešliEmail(pošťák, text.toString(), email, kód);
-		}
-	}
-
-	private static void odešliEmail(Postak pošťák, String textZprávy, String emailPříjemce, String parametr) throws Exception {
-		System.out.println("Posíláme e-mail – příjemce: " + emailPříjemce + " + parametr: " + parametr);
-		HromadnaZprava zpráva = new HromadnaZprava();
-		zpráva.setPredmet(PŘEDMĚT);
-		zpráva.setOdesilatel(new InternetAddress(ODESÍLATEL_ADRESA, ODESÍLATEL_JMÉNO));
-		zpráva.getPrijemci().add(new InternetAddressKomu(emailPříjemce, null));
-		/** Parametrizujeme text zprávy */
-		textZprávy = textZprávy.replaceAll(TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL, parametr);
-		zpráva.setText(textZprávy);
-		pošťák.odesli(zpráva);
-	}
-}
Index: ava/Postak/src/cz/frantovo/postak/odchozíEmailText.xsl
===================================================================
--- java/Postak/src/cz/frantovo/postak/odchozíEmailText.xsl	(revision 21:798e7455da4e)
+++ 	(revision )
@@ -1,274 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-	Převzato z projektu hellDesk.
--->
-<xsl:stylesheet version="1.0"
-				xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-				xmlns:fn="http://www.w3.org/2005/xpath-functions"
-				xmlns:str="http://xsltsl.org/string"
-				xmlns:h="http://www.w3.org/1999/xhtml">
-	<xsl:output method="text" encoding="UTF-8"/>
-	<xsl:strip-space elements="*"/>
-
-	<xsl:output method="text" encoding="UTF-8"/>
-	<xsl:strip-space elements="*"/>
-
-	<xsl:variable name="urlBase" select="/h:html/h:head/h:base/@href"/>
-
-
-	<!-- Celý dokument -->
-	<xsl:template match="/">
-		<xsl:apply-templates select="h:html/h:body"/>
-	</xsl:template>
-
-
-	<xsl:template match="h:h1">
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:call-template name="str:generate-string">
-			<xsl:with-param name="text" select="'='"/>
-			<xsl:with-param name="count" select="string-length(.)"/>
-		</xsl:call-template>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:h2">
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:call-template name="str:generate-string">
-			<xsl:with-param name="text" select="'-'"/>
-			<xsl:with-param name="count" select="string-length(.)"/>
-		</xsl:call-template>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:h3">
-		<xsl:text>### </xsl:text>
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:h4">
-		<xsl:text>#### </xsl:text>
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:h5">
-		<xsl:text>##### </xsl:text>
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:h6">
-		<xsl:text>###### </xsl:text>
-		<xsl:value-of select="text()"/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:p">
-		<xsl:apply-templates/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-	
-	<xsl:template match="h:blockquote/h:p">
-		<xsl:text>&gt; </xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:cite[not(starts-with(., '„') or starts-with(., '‚'))]">
-		<xsl:text>„</xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>“</xsl:text>
-	</xsl:template>	
-
-
-	<xsl:template match="h:a">
-		<xsl:if test="not(text() = @href or concat('mailto:', text()) = @href)">
-			<xsl:text>'</xsl:text>
-			<xsl:apply-templates select="node()"/>
-			<xsl:text>' </xsl:text>
-		</xsl:if>
-		<xsl:text>&lt;</xsl:text>
-		<xsl:choose>
-			<xsl:when test="starts-with(@href, 'http:') or starts-with(@href, 'https:') or starts-with(@href, 'ftp:')">
-				<xsl:value-of select="@href"/>
-			</xsl:when>
-			<xsl:when test="starts-with(@href, 'mailto:')">
-				<xsl:value-of select="substring-after(@href, 'mailto:')"/>
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:choose>
-					<!-- TODO: $urlBase by nemělo končit lomítkem -->
-					<xsl:when test="starts-with(@href, '/')">
-						<xsl:value-of select="concat($urlBase, @href)"/>
-					</xsl:when>
-					<xsl:otherwise>
-						<xsl:value-of select="concat($urlBase, '/', @href)"/>
-					</xsl:otherwise>
-				</xsl:choose>
-			</xsl:otherwise>
-		</xsl:choose>
-		<xsl:text>&gt;</xsl:text>
-		<xsl:if test="normalize-space(@title)">
-			<xsl:text> (</xsl:text>
-			<xsl:value-of select="@title"/>
-			<xsl:text>)</xsl:text>
-		</xsl:if>
-	</xsl:template>
-
-
-	<xsl:template match="h:img">
-		<xsl:text>Obrázek: </xsl:text>
-		<xsl:value-of select="@src"/>
-		<!-- TODO: relativní odkazy -->
-	</xsl:template>
-
-
-	<xsl:template match="h:strong|h:b">
-		<xsl:text>**</xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>**</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:em|h:i">
-		<xsl:text>*</xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>*</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:abbr[@title]">
-		<xsl:apply-templates/>
-		<xsl:text> (</xsl:text>
-		<xsl:value-of select="@title"/>
-		<xsl:text>)</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:pre">
-		<xsl:text>--------------------------------</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>--------------------------------</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:code">
-		<xsl:text>`</xsl:text>
-		<xsl:apply-templates/>
-		<xsl:text>`</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:hr">
-		<xsl:text>----------------------------------------------------------------</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>
-
-
-	<xsl:template match="h:br">
-		<xsl:text>&#10;</xsl:text>
-	</xsl:template>	
-
-
-	<xsl:template match="h:ol|h:ul">
-		<xsl:variable name="úroveň" select="count(ancestor::h:li)"/>
-		<xsl:variable name="odsazení">
-			<!-- položky na nejvyšší úrovni odsazené jednou mezerou -->
-			<xsl:value-of select="' '"/>
-			<xsl:call-template name="str:generate-string">
-				<xsl:with-param name="text" select="'  '"/>
-				<!-- položky na druhé a vyšší úrovni odsazené vždy dvěma dalšími mezerami -->
-				<xsl:with-param name="count" select="$úroveň - 1"/>
-			</xsl:call-template>
-		</xsl:variable>
-
-		<xsl:if test="$úroveň &gt; 0">
-			<xsl:text>&#10;</xsl:text>
-		</xsl:if>
-
-		<xsl:for-each select="h:li">
-			<xsl:if test="parent::h:ol">
-				<xsl:value-of select="concat($odsazení, position(), ') ')"/>
-			</xsl:if>
-			<xsl:if test="parent::h:ul">
-				<xsl:value-of select="concat($odsazení, '- ')"/>
-			</xsl:if>
-			<xsl:apply-templates/>
-			<xsl:if test="$úroveň = 0 or not(position() = last())">
-				<xsl:text>&#10;</xsl:text>
-			</xsl:if>
-		</xsl:for-each>
-		
-		<xsl:if test="$úroveň = 0">
-			<xsl:text>&#10;</xsl:text>
-		</xsl:if>
-	</xsl:template>
-
-
-	<xsl:template match="text()[not(parent::h:pre)]">
-		<xsl:if test="(starts-with(., ' ') or starts-with(., '&#10;')) and preceding-sibling::node() and not(preceding-sibling::h:br)">
-			<xsl:text> </xsl:text>
-		</xsl:if>
-		<xsl:value-of select="normalize-space(.)"/>
-		<xsl:variable name="posledníZnak" select="substring(., string-length(.))"/>
-		<!-- TODO: tabulátor? -->
-		<xsl:if test="($posledníZnak = ' ' or $posledníZnak = '&#10;') and following-sibling::node()">
-			<xsl:text> </xsl:text>
-		</xsl:if>
-	</xsl:template>
-	
-	
-	<xsl:template match="h:div[@class = 'patička']">
-		<xsl:text>-- </xsl:text>
-		<xsl:text>&#10;</xsl:text>
-		<xsl:apply-templates/>
-	</xsl:template>
-	
-
-	<!--
-		Převzato z:
-		http://xsltsl.sourceforge.net/string.html#template.str:generate-string
-	-->
-	<xsl:template name="str:generate-string">
-		<xsl:param name="text"/>
-		<xsl:param name="count"/>
-
-		<xsl:choose>
-			<xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>
-			<xsl:otherwise>
-				<xsl:value-of select="$text"/>
-				<xsl:call-template name="str:generate-string">
-					<xsl:with-param name="text" select="$text"/>
-					<xsl:with-param name="count" select="$count - 1"/>
-				</xsl:call-template>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-
-
-</xsl:stylesheet>
-
Index: ava/SuperPostak/build.xml
===================================================================
--- java/SuperPostak/build.xml	(revision 20:22ce4474d4a9)
+++ 	(revision )
@@ -1,74 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See commented blocks below for -->
-<!-- some examples of how to customize the build. -->
-<!-- (If you delete it and reopen the project it will be recreated.) -->
-<!-- By default, only the Clean and Build commands use this build script. -->
-<!-- Commands such as Run, Debug, and Test only use this build script if -->
-<!-- the Compile on Save feature is turned off for the project. -->
-<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
-<!-- in the project's Project Properties dialog box.-->
-<project name="SuperPostak" default="default" basedir=".">
-    <description>Builds, tests, and runs the project SuperPostak.</description>
-    <import file="nbproject/build-impl.xml"/>
-    <!--
-
-    There exist several targets which are by default empty and which can be 
-    used for execution of your tasks. These targets are usually executed 
-    before and after some main targets. They are: 
-
-      -pre-init:                 called before initialization of project properties
-      -post-init:                called after initialization of project properties
-      -pre-compile:              called before javac compilation
-      -post-compile:             called after javac compilation
-      -pre-compile-single:       called before javac compilation of single file
-      -post-compile-single:      called after javac compilation of single file
-      -pre-compile-test:         called before javac compilation of JUnit tests
-      -post-compile-test:        called after javac compilation of JUnit tests
-      -pre-compile-test-single:  called before javac compilation of single JUnit test
-      -post-compile-test-single: called after javac compilation of single JUunit test
-      -pre-jar:                  called before JAR building
-      -post-jar:                 called after JAR building
-      -post-clean:               called after cleaning build products
-
-    (Targets beginning with '-' are not intended to be called on their own.)
-
-    Example of inserting an obfuscator after compilation could look like this:
-
-        <target name="-post-compile">
-            <obfuscate>
-                <fileset dir="${build.classes.dir}"/>
-            </obfuscate>
-        </target>
-
-    For list of available properties check the imported 
-    nbproject/build-impl.xml file. 
-
-
-    Another way to customize the build is by overriding existing main targets.
-    The targets of interest are: 
-
-      -init-macrodef-javac:     defines macro for javac compilation
-      -init-macrodef-junit:     defines macro for junit execution
-      -init-macrodef-debug:     defines macro for class debugging
-      -init-macrodef-java:      defines macro for class execution
-      -do-jar-with-manifest:    JAR building (if you are using a manifest)
-      -do-jar-without-manifest: JAR building (if you are not using a manifest)
-      run:                      execution of project 
-      -javadoc-build:           Javadoc generation
-      test-report:              JUnit report generation
-
-    An example of overriding the target for project execution could look like this:
-
-        <target name="run" depends="SuperPostak-impl.jar">
-            <exec dir="bin" executable="launcher.exe">
-                <arg file="${dist.jar}"/>
-            </exec>
-        </target>
-
-    Notice that the overridden target depends on the jar target and not only on 
-    the compile target as the regular run target does. Again, for a list of available 
-    properties which you can use, check the target you are overriding in the
-    nbproject/build-impl.xml file. 
-
-    -->
-</project>
Index: java/SuperPostak/nbproject/build-impl.xml
===================================================================
--- java/SuperPostak/nbproject/build-impl.xml	(revision 16:290074b53aca)
+++ java/SuperPostak/nbproject/build-impl.xml	(revision 0:e76872ad5226)
@@ -22,11 +22,4 @@
 <project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="SuperPostak-impl">
     <import file="jnlp-impl.xml"/>
-    <fail message="Please build using Ant 1.8.0 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.8.0"/>
-            </not>
-        </condition>
-    </fail>
     <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
     <!-- 
@@ -57,14 +50,7 @@
     <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
         <available file="${manifest.file}" property="manifest.available"/>
-        <condition property="splashscreen.available">
+        <condition property="manifest.available+main.class">
             <and>
-                <not>
-                    <equals arg1="${application.splash}" arg2="" trim="true"/>
-                </not>
-                <available file="${application.splash}"/>
-            </and>
-        </condition>
-        <condition property="main.class.available">
-            <and>
+                <isset property="manifest.available"/>
                 <isset property="main.class"/>
                 <not>
@@ -73,65 +59,9 @@
             </and>
         </condition>
-        <condition property="manifest.available+main.class">
-            <and>
-                <isset property="manifest.available"/>
-                <isset property="main.class.available"/>
-            </and>
-        </condition>
-        <condition property="do.archive">
-            <not>
-                <istrue value="${jar.archive.disabled}"/>
-            </not>
-        </condition>
-        <condition property="do.mkdist">
-            <and>
-                <isset property="do.archive"/>
-                <isset property="libs.CopyLibs.classpath"/>
-                <not>
-                    <istrue value="${mkdist.disabled}"/>
-                </not>
-            </and>
-        </condition>
         <condition property="manifest.available+main.class+mkdist.available">
             <and>
                 <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
+                <isset property="libs.CopyLibs.classpath"/>
             </and>
-        </condition>
-        <condition property="do.archive+manifest.available">
-            <and>
-                <isset property="manifest.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+main.class.available">
-            <and>
-                <isset property="main.class.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+splashscreen.available">
-            <and>
-                <isset property="splashscreen.available"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="do.archive+manifest.available+main.class">
-            <and>
-                <istrue value="${manifest.available+main.class}"/>
-                <istrue value="${do.archive}"/>
-            </and>
-        </condition>
-        <condition property="manifest.available-mkdist.available">
-            <or>
-                <istrue value="${manifest.available}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
-        <condition property="manifest.available+main.class-mkdist.available">
-            <or>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </or>
         </condition>
         <condition property="have.tests">
@@ -169,5 +99,4 @@
         <property name="application.args" value=""/>
         <property name="source.encoding" value="${file.encoding}"/>
-        <property name="runtime.encoding" value="${source.encoding}"/>
         <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
             <and>
@@ -185,21 +114,10 @@
             <istrue value="${do.depend}"/>
         </condition>
-        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
-        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
-            <length length="0" string="${endorsed.classpath}" when="greater"/>
-        </condition>
-        <condition else="false" property="jdkBug6558476">
+        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
             <and>
-                <matches pattern="1\.[56]" string="${java.specification.version}"/>
-                <not>
-                    <os family="unix"/>
-                </not>
+                <isset property="jaxws.endorsed.dir"/>
+                <available file="nbproject/jaxws-build.xml"/>
             </and>
         </condition>
-        <property name="javac.fork" value="${jdkBug6558476}"/>
-        <property name="jar.index" value="false"/>
-        <property name="jar.index.metainf" value="${jar.index}"/>
-        <property name="copylibs.rebase" value="true"/>
-        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
     </target>
     <target name="-post-init">
@@ -228,77 +146,24 @@
         </macrodef>
     </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+    <target name="-init-macrodef-javac">
         <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
             <attribute default="${src.dir}" name="srcdir"/>
             <attribute default="${build.classes.dir}" name="destdir"/>
             <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
             <attribute default="${includes}" name="includes"/>
             <attribute default="${excludes}" name="excludes"/>
             <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <attribute default="" name="sourcepath"/>
             <element name="customize" optional="true"/>
             <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <mkdir dir="@{apgeneratedsrcdir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <compilerarg value="-processorpath"/>
-                    <compilerarg path="@{processorpath}:${empty.dir}"/>
-                    <compilerarg line="${ap.processors.internal}"/>
-                    <compilerarg line="${annotation.processing.processor.options}"/>
-                    <compilerarg value="-s"/>
-                    <compilerarg path="@{apgeneratedsrcdir}"/>
-                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
                     <customize/>
                 </javac>
             </sequential>
         </macrodef>
-    </target>
-    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
-        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${src.dir}" name="srcdir"/>
-            <attribute default="${build.classes.dir}" name="destdir"/>
-            <attribute default="${javac.classpath}" name="classpath"/>
-            <attribute default="${javac.processorpath}" name="processorpath"/>
-            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
-            <attribute default="${includes}" name="includes"/>
-            <attribute default="${excludes}" name="excludes"/>
-            <attribute default="${javac.debug}" name="debug"/>
-            <attribute default="${empty.dir}" name="sourcepath"/>
-            <attribute default="${empty.dir}" name="gensrcdir"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.dir}/empty" name="empty.dir"/>
-                <mkdir dir="${empty.dir}"/>
-                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
-                    <src>
-                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
-                            <include name="*"/>
-                        </dirset>
-                    </src>
-                    <classpath>
-                        <path path="@{classpath}"/>
-                    </classpath>
-                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <compilerarg line="${javac.compilerargs}"/>
-                    <customize/>
-                </javac>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
         <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
             <attribute default="${src.dir}" name="srcdir"/>
@@ -317,5 +182,5 @@
             <sequential>
                 <fail unless="javac.includes">Must set javac.includes</fail>
-                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                <pathconvert pathsep="," property="javac.includes.binary">
                     <path>
                         <filelist dir="@{destdir}" files="${javac.includes}"/>
@@ -323,11 +188,6 @@
                     <globmapper from="*.java" to="*.class"/>
                 </pathconvert>
-                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
-                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
                 <delete>
-                    <files includesfile="${javac.includesfile.binary}"/>
-                </delete>
-                <delete>
-                    <fileset file="${javac.includesfile.binary}"/>
+                    <files includes="${javac.includes.binary}"/>
                 </delete>
             </sequential>
@@ -340,6 +200,5 @@
             <attribute default="**" name="testincludes"/>
             <sequential>
-                <property name="junit.forkmode" value="perTest"/>
-                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
                     <batchtest todir="${build.test.results.dir}">
                         <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
@@ -356,6 +215,4 @@
                     <formatter type="brief" usefile="false"/>
                     <formatter type="xml"/>
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="-ea"/>
                     <jvmarg line="${run.jvmargs}"/>
                 </junit>
@@ -363,50 +220,5 @@
         </macrodef>
     </target>
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" name="profile-init"/>
-    <target name="-profile-pre-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target name="-profile-post-init">
-        <!-- Empty placeholder for easier customization. -->
-        <!-- You can override this target in the ../build.xml file. -->
-    </target>
-    <target name="-profile-init-macrodef-profile">
-        <macrodef name="resolve">
-            <attribute name="name"/>
-            <attribute name="value"/>
-            <sequential>
-                <property name="@{name}" value="${env.@{value}}"/>
-            </sequential>
-        </macrodef>
-        <macrodef name="profile">
-            <attribute default="${main.class}" name="classname"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property environment="env"/>
-                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
-                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
-                    <jvmarg line="${profiler.info.jvmargs}"/>
-                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-                    <arg line="${application.args}"/>
-                    <classpath>
-                        <path path="${run.classpath}"/>
-                    </classpath>
-                    <syspropertyset>
-                        <propertyref prefix="run-sys-prop."/>
-                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
-                    </syspropertyset>
-                    <customize/>
-                </java>
-            </sequential>
-        </macrodef>
-    </target>
-    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" name="-profile-init-check">
-        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
-        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
-    </target>
-    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+    <target name="-init-macrodef-nbjpda">
         <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="name"/>
@@ -414,5 +226,5 @@
             <attribute default="" name="stopclassname"/>
             <sequential>
-                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
                     <classpath>
                         <path path="@{classpath}"/>
@@ -445,10 +257,4 @@
             <istrue value="${have-jdk-older-than-1.4}"/>
         </condition>
-        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
-            <os family="windows"/>
-        </condition>
-        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
-            <isset property="debug.transport"/>
-        </condition>
     </target>
     <target depends="-init-debug-args" name="-init-macrodef-debug">
@@ -459,9 +265,6 @@
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                     <jvmarg line="${debug-args-line}"/>
-                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
@@ -480,14 +283,10 @@
         <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
             <attribute default="${main.class}" name="classname"/>
-            <attribute default="${run.classpath}" name="classpath"/>
             <element name="customize" optional="true"/>
             <sequential>
                 <java classname="@{classname}" dir="${work.dir}" fork="true">
-                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
-                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
-                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
-                        <path path="@{classpath}"/>
+                        <path path="${run.classpath}"/>
                     </classpath>
                     <syspropertyset>
@@ -500,64 +299,12 @@
         </macrodef>
     </target>
-    <target name="-init-macrodef-copylibs">
-        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
-            <attribute default="${manifest.file}" name="manifest"/>
-            <element name="customize" optional="true"/>
-            <sequential>
-                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
-                <pathconvert property="run.classpath.without.build.classes.dir">
-                    <path path="${run.classpath}"/>
-                    <map from="${build.classes.dir.resolved}" to=""/>
-                </pathconvert>
-                <pathconvert pathsep=" " property="jar.classpath">
-                    <path path="${run.classpath.without.build.classes.dir}"/>
-                    <chainedmapper>
-                        <flattenmapper/>
-                        <globmapper from="*" to="lib/*"/>
-                    </chainedmapper>
-                </pathconvert>
-                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
-                <copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
-                    <fileset dir="${build.classes.dir}"/>
-                    <manifest>
-                        <attribute name="Class-Path" value="${jar.classpath}"/>
-                        <customize/>
-                    </manifest>
-                </copylibs>
-            </sequential>
-        </macrodef>
-    </target>
     <target name="-init-presetdef-jar">
         <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
-            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+            <jar compress="${jar.compress}" jarfile="${dist.jar}">
                 <j2seproject1:fileset dir="${build.classes.dir}"/>
             </jar>
         </presetdef>
     </target>
-    <target name="-init-ap-cmdline-properties">
-        <property name="annotation.processing.enabled" value="true"/>
-        <property name="annotation.processing.processors.list" value=""/>
-        <property name="annotation.processing.processor.options" value=""/>
-        <property name="annotation.processing.run.all.processors" value="true"/>
-        <property name="javac.processorpath" value="${javac.classpath}"/>
-        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
-        <condition property="ap.supported.internal" value="true">
-            <not>
-                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
-            </not>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
-        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
-            <isfalse value="${annotation.processing.run.all.processors}"/>
-        </condition>
-        <condition else="" property="ap.proc.none.internal" value="-proc:none">
-            <isfalse value="${annotation.processing.enabled}"/>
-        </condition>
-    </target>
-    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
-        <property name="ap.cmd.line.internal" value=""/>
-    </target>
-    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
     <!--
                 ===================
@@ -565,40 +312,7 @@
                 ===================
             -->
-    <target name="-deps-jar-init" unless="built-jar.properties">
-        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
-        <delete file="${built-jar.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
-        <echo level="warn" message="Cycle detected: SuperPostak was already built"/>
-    </target>
-    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-jar.properties}" verbose="false"/>
-        <property file="${built-jar.properties}" prefix="already.built.jar."/>
-        <antcall target="-warn-already-built-jar"/>
-        <propertyfile file="${built-jar.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-        <antcall target="-maybe-call-dep">
-            <param name="call.built.properties" value="${built-jar.properties}"/>
-            <param location="${project.JFTable}" name="call.subproject"/>
-            <param location="${project.JFTable}/build.xml" name="call.script"/>
-            <param name="call.target" value="jar"/>
-            <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
-        </antcall>
-        <antcall target="-maybe-call-dep">
-            <param name="call.built.properties" value="${built-jar.properties}"/>
-            <param location="${project.Postak}" name="call.subproject"/>
-            <param location="${project.Postak}/build.xml" name="call.script"/>
-            <param name="call.target" value="jar"/>
-            <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
-        </antcall>
-    </target>
-    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
-    <target depends="init" name="-check-automatic-build">
-        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
-    </target>
-    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
-        <antcall target="clean"/>
+    <target depends="init" name="deps-jar" unless="no.deps">
+        <ant antfile="${project.JFTable}/build.xml" inheritall="false" target="jar"/>
+        <ant antfile="${project.Postak}/build.xml" inheritall="false" target="jar"/>
     </target>
     <target depends="init,deps-jar" name="-pre-pre-compile">
@@ -610,28 +324,17 @@
     </target>
     <target if="do.depend.true" name="-compile-depend">
-        <pathconvert property="build.generated.subdirs">
-            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="*"/>
-            </dirset>
-        </pathconvert>
-        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
-    </target>
-    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
-        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <j2seproject3:depend/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac/>
         <copy todir="${build.classes.dir}">
             <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
         </copy>
     </target>
-    <target if="has.persistence.xml" name="-copy-persistence-xml">
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy todir="${build.classes.dir}/META-INF">
-            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
-        </copy>
-    </target>
     <target name="-post-compile">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
     <target name="-pre-compile-single">
         <!-- Empty placeholder for easier customization. -->
@@ -641,5 +344,5 @@
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile/>
-        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+        <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
     </target>
     <target name="-post-compile-single">
@@ -647,5 +350,5 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
     <!--
                 ====================
@@ -661,11 +364,11 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
         <j2seproject1:jar/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
         <j2seproject1:jar manifest="${manifest.file}"/>
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
         <j2seproject1:jar manifest="${manifest.file}">
             <j2seproject1:manifest>
@@ -673,5 +376,5 @@
             </j2seproject1:manifest>
         </j2seproject1:jar>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <echo>To run this application from the command line without Ant, try:</echo>
         <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
         <property location="${dist.jar}" name="dist.jar.resolved"/>
@@ -680,39 +383,31 @@
             <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
         </pathconvert>
-        <echo level="info">java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
-    </target>
-    <target depends="init" if="do.archive" name="-do-jar-with-libraries-create-manifest" unless="manifest.available">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <touch file="${tmp.manifest.file}" verbose="false"/>
-    </target>
-    <target depends="init" if="do.archive+manifest.available" name="-do-jar-with-libraries-copy-manifest">
-        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
-        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+main.class.available" name="-do-jar-with-libraries-set-main">
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="Main-Class" value="${main.class}"/>
-        </manifest>
-    </target>
-    <target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-with-libraries-set-splashscreen">
-        <basename file="${application.splash}" property="splashscreen.basename"/>
-        <mkdir dir="${build.classes.dir}/META-INF"/>
-        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
-        <manifest file="${tmp.manifest.file}" mode="update">
-            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
-        </manifest>
-    </target>
-    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen" if="do.mkdist" name="-do-jar-with-libraries-pack">
-        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
-        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
         <property location="${dist.jar}" name="dist.jar.resolved"/>
-        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
-    </target>
-    <target depends="-do-jar-with-libraries-pack" if="do.archive" name="-do-jar-with-libraries-delete-manifest">
-        <delete>
-            <fileset file="${tmp.manifest.file}"/>
-        </delete>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen,-do-jar-with-libraries-pack,-do-jar-with-libraries-delete-manifest" name="-do-jar-with-libraries"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
@@ -735,11 +430,7 @@
         <property name="javac.includes.binary" value=""/>
     </target>
-    <target depends="init,compile-single" name="run-single">
+    <target depends="init,-do-not-recompile,compile-single" name="run-single">
         <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
         <j2seproject1:java classname="${run.class}"/>
-    </target>
-    <target depends="init,compile-test-single" name="run-test-with-main">
-        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
-        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
     </target>
     <!--
@@ -750,7 +441,4 @@
     <target depends="init" if="netbeans.home" name="-debug-start-debugger">
         <j2seproject1:nbjpdastart name="${debug.class}"/>
-    </target>
-    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
-        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
     </target>
     <target depends="init,compile" name="-debug-start-debuggee">
@@ -770,10 +458,5 @@
         <j2seproject3:debug classname="${debug.class}"/>
     </target>
-    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
-    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
-        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
-        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
-    </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
     <target depends="init" name="-pre-debug-fix">
         <fail unless="fix.includes">Must set fix.includes</fail>
@@ -785,105 +468,18 @@
     <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
     <!--
-                =================
-                PROFILING SECTION
-                =================
-            -->
-    <target depends="profile-init,compile" description="Profile a project in the IDE." if="netbeans.home" name="profile">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile/>
-    </target>
-    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="netbeans.home" name="profile-single">
-        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="${profile.class}"/>
-    </target>
-    <!--
-                =========================
-                APPLET PROFILING  SECTION
-                =========================
-            -->
-    <target depends="profile-init,compile-single" if="netbeans.home" name="profile-applet">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <profile classname="sun.applet.AppletViewer">
-            <customize>
-                <arg value="${applet.url}"/>
-            </customize>
-        </profile>
-    </target>
-    <!--
-                =========================
-                TESTS PROFILING  SECTION
-                =========================
-            -->
-    <target depends="profile-init,compile-test-single" if="netbeans.home" name="profile-test-single">
-        <nbprofiledirect>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-        </nbprofiledirect>
-        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
-            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
-            <jvmarg value="${profiler.info.jvmargs.agent}"/>
-            <jvmarg line="${profiler.info.jvmargs}"/>
-            <test name="${profile.class}"/>
-            <classpath>
-                <path path="${run.test.classpath}"/>
-            </classpath>
-            <syspropertyset>
-                <propertyref prefix="test-sys-prop."/>
-                <mapper from="test-sys-prop.*" to="*" type="glob"/>
-            </syspropertyset>
-            <formatter type="brief" usefile="false"/>
-            <formatter type="xml"/>
-        </junit>
-    </target>
-    <!--
                 ===============
                 JAVADOC SECTION
                 ===============
             -->
-    <target depends="init" if="have.sources" name="-javadoc-build">
+    <target depends="init" name="-javadoc-build">
         <mkdir dir="${dist.javadoc.dir}"/>
-        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
-            <and>
-                <isset property="endorsed.classpath.cmd.line.arg"/>
-                <not>
-                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
-                </not>
-            </and>
-        </condition>
         <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
             <classpath>
                 <path path="${javac.classpath}"/>
             </classpath>
-            <fileset dir="${src.dir}" excludes="*.java,${excludes}" includes="${includes}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
                 <filename name="**/*.java"/>
             </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/*.java"/>
-                <exclude name="*.java"/>
-            </fileset>
-            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
         </javadoc>
-        <copy todir="${dist.javadoc.dir}">
-            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
-                <filename name="**/doc-files/**"/>
-            </fileset>
-            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
-                <include name="**/doc-files/**"/>
-            </fileset>
-        </copy>
     </target>
     <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
@@ -906,6 +502,6 @@
         <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
     </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
         <copy todir="${build.test.classes.dir}">
             <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
@@ -921,8 +517,8 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
         <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
         <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
-        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
         <copy todir="${build.test.classes.dir}">
             <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
@@ -946,5 +542,5 @@
     </target>
     <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
     </target>
     <target depends="init" if="have.tests" name="test-report"/>
@@ -959,7 +555,7 @@
     </target>
     <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
-        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
-    </target>
-    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
     <!--
                 =======================
@@ -988,5 +584,5 @@
         <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
     </target>
-    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
     <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
         <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
@@ -1025,37 +621,11 @@
                 ===============
             -->
-    <target name="-deps-clean-init" unless="built-clean.properties">
-        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
-        <delete file="${built-clean.properties}" quiet="true"/>
-    </target>
-    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
-        <echo level="warn" message="Cycle detected: SuperPostak was already built"/>
-    </target>
-    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
-        <mkdir dir="${build.dir}"/>
-        <touch file="${built-clean.properties}" verbose="false"/>
-        <property file="${built-clean.properties}" prefix="already.built.clean."/>
-        <antcall target="-warn-already-built-clean"/>
-        <propertyfile file="${built-clean.properties}">
-            <entry key="${basedir}" value=""/>
-        </propertyfile>
-        <antcall target="-maybe-call-dep">
-            <param name="call.built.properties" value="${built-clean.properties}"/>
-            <param location="${project.JFTable}" name="call.subproject"/>
-            <param location="${project.JFTable}/build.xml" name="call.script"/>
-            <param name="call.target" value="clean"/>
-            <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
-        </antcall>
-        <antcall target="-maybe-call-dep">
-            <param name="call.built.properties" value="${built-clean.properties}"/>
-            <param location="${project.Postak}" name="call.subproject"/>
-            <param location="${project.Postak}/build.xml" name="call.script"/>
-            <param name="call.target" value="clean"/>
-            <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
-        </antcall>
+    <target depends="init" name="deps-clean" unless="no.deps">
+        <ant antfile="${project.JFTable}/build.xml" inheritall="false" target="clean"/>
+        <ant antfile="${project.Postak}/build.xml" inheritall="false" target="clean"/>
     </target>
     <target depends="init" name="-do-clean">
         <delete dir="${build.dir}"/>
-        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+        <delete dir="${dist.dir}"/>
     </target>
     <target name="-post-clean">
@@ -1064,19 +634,3 @@
     </target>
     <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
-    <target name="-check-call-dep">
-        <property file="${call.built.properties}" prefix="already.built."/>
-        <condition property="should.call.dep">
-            <not>
-                <isset property="already.built.${call.subproject}"/>
-            </not>
-        </condition>
-    </target>
-    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
-        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
-            <propertyset>
-                <propertyref prefix="transfer."/>
-                <mapper from="transfer.*" to="*" type="glob"/>
-            </propertyset>
-        </ant>
-    </target>
 </project>
Index: java/SuperPostak/nbproject/genfiles.properties
===================================================================
--- java/SuperPostak/nbproject/genfiles.properties	(revision 16:290074b53aca)
+++ java/SuperPostak/nbproject/genfiles.properties	(revision 0:e76872ad5226)
@@ -1,8 +1,8 @@
 build.xml.data.CRC32=d917048a
-build.xml.script.CRC32=7b671108
-build.xml.stylesheet.CRC32=28e38971@1.38.2.45
+build.xml.script.CRC32=bda184ca
+build.xml.stylesheet.CRC32=be360661
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=d917048a
-nbproject/build-impl.xml.script.CRC32=c275334b
-nbproject/build-impl.xml.stylesheet.CRC32=fcddb364@1.50.1.46
+nbproject/build-impl.xml.script.CRC32=5446e5b9
+nbproject/build-impl.xml.stylesheet.CRC32=487672f9
Index: java/SuperPostak/nbproject/private/private.properties
===================================================================
--- java/SuperPostak/nbproject/private/private.properties	(revision 0:e76872ad5226)
+++ java/SuperPostak/nbproject/private/private.properties	(revision 0:e76872ad5226)
@@ -0,0 +1,8 @@
+do.depend=false
+do.jar=true
+javac.debug=true
+javadoc.preview=true
+jaxws.endorsed.dir=/home/fiki/bin/netbeans-6.1/java2/modules/ext/jaxws21/api
+project.JFTable=/home/fiki/subversion/JFTable/trunk/java/JFTable
+project.Postak=/home/fiki/subversion/SuperPostak/trunk/java/Postak
+user.properties.file=/home/fiki/.netbeans/6.1/build.properties
Index: java/SuperPostak/nbproject/private/private.xml
===================================================================
--- java/SuperPostak/nbproject/private/private.xml	(revision 0:e76872ad5226)
+++ java/SuperPostak/nbproject/private/private.xml	(revision 0:e76872ad5226)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+</project-private>
Index: java/SuperPostak/nbproject/project.properties
===================================================================
--- java/SuperPostak/nbproject/project.properties	(revision 5:bea5d9e11d37)
+++ java/SuperPostak/nbproject/project.properties	(revision 0:e76872ad5226)
@@ -6,5 +6,4 @@
 build.dir=build
 build.generated.dir=${build.dir}/generated
-build.generated.sources.dir=${build.dir}/generated-sources
 # Only compile against the classpath explicitly listed here:
 build.sysclasspath=ignore
@@ -32,6 +31,5 @@
     ${libs.jTDS-Sybase-MSSQL.classpath}:\
     ${libs.Sybase.com.classpath}:\
-    ${reference.Postak.jar}:\
-    ${libs.OracleJDBC.classpath}
+    ${reference.Postak.jar}
 # Space-separated list of extra javac options
 javac.compilerargs=
Index: java/SuperPostak/src/cz/frantovo/superPostak/Data.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/Data.java	(revision 13:b15d81be8af3)
+++ java/SuperPostak/src/cz/frantovo/superPostak/Data.java	(revision 0:e76872ad5226)
@@ -1,2 +1,6 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
 package cz.frantovo.superPostak;
 
@@ -16,5 +20,5 @@
 public class Data {
 
-    private static final Logger log = Logger.getLogger(Data.class.getName());
+    private static Logger log = Logger.getLogger(Data.class.getName());
     private static Connection spojeni;
     private static byte[] hash;
@@ -49,5 +53,5 @@
         hash = hashuj(url, jmeno, heslo);
         spojeni = DriverManager.getConnection(url, jmeno, String.valueOf(heslo));
-        log.log(Level.INFO, "Otevřeno nové spoejní spojení k databázi: {0}", url);
+        log.log(Level.INFO, "Otevřeno nové spoejní spojení k databázi: " + url);
         return spojeni;
     }
Index: java/SuperPostak/src/cz/frantovo/superPostak/DataSQL.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/DataSQL.java	(revision 13:b15d81be8af3)
+++ java/SuperPostak/src/cz/frantovo/superPostak/DataSQL.java	(revision 0:e76872ad5226)
@@ -1,2 +1,6 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
 package cz.frantovo.superPostak;
 
@@ -18,5 +22,5 @@
 public class DataSQL {
 
-    private static final Logger log = Logger.getLogger(DataSQL.class.getName());
+    private static Logger log = Logger.getLogger(DataSQL.class.getName());
     private Connection spojeni;
 
Index: java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.form
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.form	(revision 0:e76872ad5226)
+++ java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.form	(revision 0:e76872ad5226)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="mujGraf" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="mujGraf" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="org.jdesktop.swingx.JXGraph" name="mujGraf">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="465" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="422" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+    </Container>
+  </SubComponents>
+</Form>
Index: java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.java	(revision 0:e76872ad5226)
+++ java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.java	(revision 0:e76872ad5226)
@@ -0,0 +1,90 @@
+/*
+ * GrafPokus.java
+ *
+ * Created on 7. prosinec 2007, 22:33
+ */
+
+package cz.frantovo.superPostak;
+
+import java.awt.Color;
+import org.jdesktop.swingx.JXGraph.Plot;
+
+/**
+ *
+ * @author  fiki
+ */
+public class GrafPokus extends javax.swing.JFrame {
+    
+    /** Creates new form GrafPokus */
+    public GrafPokus() {
+        initComponents();
+        
+        mujGraf.addPlots(Color.GREEN, new Plot(){
+
+            @Override
+            public double compute(double value) {
+                return value * value;
+            }
+        
+        });
+    }
+    
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        mujGraf = new org.jdesktop.swingx.JXGraph();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+        javax.swing.GroupLayout mujGrafLayout = new javax.swing.GroupLayout(mujGraf);
+        mujGraf.setLayout(mujGrafLayout);
+        mujGrafLayout.setHorizontalGroup(
+            mujGrafLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 465, Short.MAX_VALUE)
+        );
+        mujGrafLayout.setVerticalGroup(
+            mujGrafLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 422, Short.MAX_VALUE)
+        );
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(mujGraf, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(mujGraf, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+    
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new GrafPokus().setVisible(true);
+            }
+        });
+    }
+    
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private org.jdesktop.swingx.JXGraph mujGraf;
+    // End of variables declaration//GEN-END:variables
+    
+}
Index: java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.form
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.form	(revision 5:bea5d9e11d37)
+++ java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.form	(revision 0:e76872ad5226)
@@ -1,3 +1,3 @@
-<?xml version="1.1" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 
 <Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
@@ -5,5 +5,4 @@
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
@@ -18,5 +17,5 @@
       <Group type="103" groupAlignment="0" attributes="0">
           <Group type="102" alignment="1" attributes="0">
-              <EmptySpace pref="125" max="32767" attributes="0"/>
+              <EmptySpace pref="97" max="32767" attributes="0"/>
               <Component id="otevrit" min="-2" max="-2" attributes="0"/>
               <EmptySpace max="-2" attributes="0"/>
@@ -28,5 +27,5 @@
               <EmptySpace max="-2" attributes="0"/>
           </Group>
-          <Component id="jScrollPane1" alignment="0" pref="421" max="32767" attributes="0"/>
+          <Component id="jScrollPane1" alignment="0" pref="410" max="32767" attributes="0"/>
       </Group>
     </DimensionLayout>
Index: java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.java	(revision 5:bea5d9e11d37)
+++ java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.java	(revision 0:e76872ad5226)
@@ -3,5 +3,4 @@
 import cz.frantovo.gui.tabulky.TableSorterModel;
 import cz.frantovo.postak.InternetAddressKomu;
-import cz.frantovo.postak.Nastaveni;
 import cz.frantovo.postak.Postak;
 import java.awt.Cursor;
@@ -28,8 +27,6 @@
 public class PanelPrijemcu extends javax.swing.JPanel {
 
-    private static final Logger log = Logger.getLogger(PanelPrijemcu.class.getName());
-    private static final long serialVersionUID = -8981943048392428523L;
+    private static Logger log = Logger.getLogger(PanelPrijemcu.class.getName());
     private ModelTabulky data = new ModelTabulky();
-	private Nastaveni nastaveni = new Nastaveni();
 
     /** Creates new form PanelPrijemcu */
@@ -44,8 +41,4 @@
         return data.data;
     }
-
-	public void setNastaveni(Nastaveni nastaveni) {
-		this.nastaveni = nastaveni;
-	}
 
     /** 
@@ -186,9 +179,7 @@
         dialog.setMultiSelectionEnabled(false);
         dialog.setDialogTitle("Uložit seznam do souboru");
-		dialog.setCurrentDirectory(new File(nastaveni.getPracovniAdresar()));
         int vysledek = dialog.showSaveDialog(this);
         if (vysledek == JFileChooser.APPROVE_OPTION) {
             File soubor = dialog.getSelectedFile();
-			nastaveni.setPracovniAdresar(soubor.getParent());
             try {
                 setCursor(new Cursor(Cursor.WAIT_CURSOR));
@@ -226,9 +217,7 @@
         dialog.setMultiSelectionEnabled(false);
         dialog.setDialogTitle("Načíst adresy ze souboru");
-		dialog.setCurrentDirectory(new File(nastaveni.getPracovniAdresar()));
         int vysledek = dialog.showOpenDialog(this);
         if (vysledek == JFileChooser.APPROVE_OPTION) {
             File soubor = dialog.getSelectedFile();
-			nastaveni.setPracovniAdresar(soubor.getParent());
             try {
                 setCursor(new Cursor(Cursor.WAIT_CURSOR));
@@ -277,5 +266,4 @@
     private javax.swing.JButton ulozit;
     // End of variables declaration//GEN-END:variables
-
     private class ModelTabulky implements TableModel {
 
Index: java/SuperPostak/src/cz/frantovo/superPostak/Pokus.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/Pokus.java	(revision 0:e76872ad5226)
+++ java/SuperPostak/src/cz/frantovo/superPostak/Pokus.java	(revision 0:e76872ad5226)
@@ -0,0 +1,43 @@
+package cz.frantovo.superPostak;
+
+import java.util.Properties;
+import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+/**
+ *
+ * @author fiki
+ */
+public class Pokus {
+    
+    private static Session smtpSession;
+    
+    public static void main (String[] args) {
+        Properties props = System.getProperties();
+	props.put("mail.smtp.host", "frantovo.cz");
+	//PopUpAuthenticator auth = new PopUpAuthenticator();
+	smtpSession = Session.getInstance(props, null);
+        
+        try {
+	    MimeMessage message = new MimeMessage(smtpSession);
+	    message.setFrom(new InternetAddress("java@frantovo.cz", "SuperPošťák"));
+	    message.addRecipient(Message.RecipientType.TO,
+	    new InternetAddress("informace@frantovo.cz", "František Kučera"));
+	    message.setSubject("Předmět zprávy");
+	    message.setText("Ahoj, jak se máš? šřtžěýžééšž Java WebStart");
+	    
+
+	    Transport.send(message);
+	    
+	} catch (Exception e) {
+	    
+	    e.printStackTrace();
+	}
+    
+    
+    }
+
+}
Index: java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.form
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.form	(revision 17:9cb46ca7e26c)
+++ java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.form	(revision 0:e76872ad5226)
@@ -511,6 +511,6 @@
               <Group type="102" alignment="1" attributes="0">
                   <EmptySpace max="-2" attributes="0"/>
-                  <Group type="103" groupAlignment="0" attributes="0">
-                      <Component id="jScrollPane1" alignment="0" pref="461" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jScrollPane1" alignment="0" pref="438" max="32767" attributes="0"/>
                       <Group type="102" alignment="1" attributes="0">
                           <Group type="103" groupAlignment="1" attributes="0">
@@ -528,18 +528,14 @@
                           </Group>
                           <Group type="103" groupAlignment="0" attributes="0">
-                              <Component id="vstupJmenoOdesilatele" alignment="0" max="32767" attributes="0"/>
-                              <Component id="vstupAdresaOdesilatele" alignment="0" max="32767" attributes="0"/>
-                              <Component id="vstupPredmet" alignment="0" max="32767" attributes="0"/>
+                              <Component id="vstupJmenoOdesilatele" alignment="0" pref="328" max="32767" attributes="0"/>
+                              <Component id="vstupAdresaOdesilatele" alignment="0" pref="328" max="32767" attributes="0"/>
+                              <Component id="vstupPredmet" alignment="0" pref="328" max="32767" attributes="0"/>
                           </Group>
                       </Group>
                       <Group type="102" alignment="0" attributes="0">
                           <Component id="jLabel15" min="-2" max="-2" attributes="0"/>
-                          <EmptySpace max="-2" attributes="0"/>
-                          <Component id="formátProstý" min="-2" max="-2" attributes="0"/>
-                          <EmptySpace max="-2" attributes="0"/>
-                          <Component id="formátXHTML" min="-2" max="-2" attributes="0"/>
-                          <EmptySpace max="-2" attributes="0"/>
-                          <Component id="formátOboje" min="-2" max="-2" attributes="0"/>
-                          <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          <EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
+                          <Component id="vstupFormatHTML" pref="81" max="32767" attributes="0"/>
+                          <EmptySpace min="-2" pref="247" max="-2" attributes="0"/>
                       </Group>
                   </Group>
@@ -571,7 +567,5 @@
                   <Group type="103" groupAlignment="3" attributes="0">
                       <Component id="jLabel15" alignment="3" min="-2" max="-2" attributes="0"/>
-                      <Component id="formátProstý" alignment="3" min="-2" max="-2" attributes="0"/>
-                      <Component id="formátXHTML" alignment="3" min="-2" max="-2" attributes="0"/>
-                      <Component id="formátOboje" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="vstupFormatHTML" alignment="3" min="-2" max="-2" attributes="0"/>
                   </Group>
                   <EmptySpace max="-2" attributes="0"/>
@@ -621,4 +615,11 @@
           <Properties>
             <Property name="text" type="java.lang.String" value="Form&#xe1;t zpr&#xe1;vy"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JCheckBox" name="vstupFormatHTML">
+          <Properties>
+            <Property name="mnemonic" type="int" value="104"/>
+            <Property name="text" type="java.lang.String" value="HTML"/>
+            <Property name="toolTipText" type="java.lang.String" value="P&#x159;i neza&#x161;krtnut&#xed; se ode&#x161;le jako prost&#xfd; text"/>
           </Properties>
         </Component>
@@ -640,35 +641,4 @@
           <Events>
             <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="odpovedetKomuOdkazActionPerformed"/>
-          </Events>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="form&#xe1;tProst&#xfd;">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="form&#xe1;tSkupina"/>
-            </Property>
-            <Property name="selected" type="boolean" value="true"/>
-            <Property name="text" type="java.lang.String" value="Prost&#xfd; text"/>
-          </Properties>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="form&#xe1;tXHTML">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="form&#xe1;tSkupina"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="(X)HTML"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="form&#xe1;tXHTMLActionPerformed"/>
-          </Events>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="form&#xe1;tOboje">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="form&#xe1;tSkupina"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="Oboje"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="form&#xe1;tObojeActionPerformed"/>
           </Events>
         </Component>
@@ -757,6 +727,4 @@
       </SubComponents>
     </Container>
-    <Component class="javax.swing.ButtonGroup" name="form&#xe1;tSkupina">
-    </Component>
   </NonVisualComponents>
   <Properties>
@@ -772,5 +740,4 @@
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
Index: java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java	(revision 17:9cb46ca7e26c)
+++ java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java	(revision 0:e76872ad5226)
@@ -10,6 +10,4 @@
 import java.awt.Dialog.ModalityType;
 import java.awt.KeyboardFocusManager;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemListener;
 import java.beans.XMLDecoder;
 import java.beans.XMLEncoder;
@@ -31,268 +29,264 @@
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
-import javax.swing.*;
-import javax.swing.event.ChangeListener;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import javax.swing.JTextArea;
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
 import org.jdesktop.swingx.JXErrorPane;
 import org.jdesktop.swingx.JXTaskPaneContainer;
 import org.jdesktop.swingx.error.ErrorInfo;
+import org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel;
 
 /**
  *
- * @author fiki
+ * @author  fiki
  */
 public class SuperPostak extends javax.swing.JFrame {
 
-	/** Soubor, kde je uložené nastavení */
-	private static final String NASTAVENI_SOUBOR = "Nastaveni.xml.gz";
-	private static final String CERTIFIKATY_SOUBOR = "DuveryhodneCertifikaty.keystore";
-	private static final String NASTAVENI_SLOZKA = ".SuperPostak";
-	private static final String DOMACI_ADRESAR = System.getProperty("user.home");
-	private static final Logger log = Logger.getLogger(SuperPostak.class.getName());
-	private static final long serialVersionUID = -7026850569575604048L;
-	private Nastaveni nastaveni = new Nastaveni();
-	private Postak postak = new Postak(nastaveni);
-
-	/**
-	 * Creates new form SuperPostak
-	 *
-	 * @param ladit předvyplní testovací hodnoty - zprávu
-	 * @param exit při zavření okna ukončí program
-	 */
-	public SuperPostak(boolean ladit, boolean exit) {
-		log.log(Level.WARNING, "Program byl spuštěn.");
-		nactiOvladaceJDBC();
-		vytvorSlozkuProgramu();
-		initComponents();
-
-		nactiNastaveni();
-		ulozNastaveni();
-		nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
-
-		inicializujCardLayout();
-		setLocationRelativeTo(null);
-
-		/** Kvůli souborovým dialogům – aby se otvírali ve stejné složce jako minule. */
-		prijemciDodatecni.setNastaveni(nastaveni);
-		prijemciVychozi.setNastaveni(nastaveni);
-		prijemciZkusebni.setNastaveni(nastaveni);
-
-		/** Vyřešíme problém TAB vs. Focus */
-		vyresitTabFocusProblem(vstupSQL);
-		vyresitTabFocusProblem(vstupZprava);
-
-		/** Ladicí hodnoty */
-		if (ladit) {
-			nastavLadiciHodnoty();
-		}
-
-		if (exit) {
-			setDefaultCloseOperation(EXIT_ON_CLOSE);
-		}
-
-
-	}
-
-	private void inicializujCardLayout() {
-		panelDatabaze.setName("panelDatabaze");
-		panelOdeslat.setName("panelOdeslat");
-		panelPrijemci.setName("panelPrijemci");
-		panelServer.setName("panelServer");
-		panelVychoziPrijemci.setName("panelVychoziPrijemci");
-		panelZprava.setName("panelZprava");
-
-		panel.add(panelDatabaze, panelDatabaze.getName());
-		panel.add(panelOdeslat, panelOdeslat.getName());
-		panel.add(panelPrijemci, panelPrijemci.getName());
-		panel.add(panelServer, panelServer.getName());
-		panel.add(panelVychoziPrijemci, panelVychoziPrijemci.getName());
-		panel.add(panelZprava, panelZprava.getName());
-
-		setPanel(panelZprava);
-		pack();
-	}
-
-	/**
-	 * Vyplní formuláře (odesílatel, předmět, zpráva, příjemci...) výchozími hodnotami,
-	 * aby se dal program testovat jedním kliknutím.
-	 */
-	private void nastavLadiciHodnoty() {
-		try {
-			vstupAdresaOdesilatele.setText("SuperPostak@frantovo.cz");
-			vstupJmenoOdesilatele.setText("SuperPošťák");
-			vstupPredmet.setText("Zkušební zpráva od SuperPošťáka");
-			vstupZprava.setText("Toto je obyčejná zkušební zpráva v češtině :-)");
-			ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
-			adresy.add(new InternetAddressKomu("SuperPostak@frantovo.cz", "SuperPošťák"));
-			prijemciZkusebni.setAdresy(adresy);
-		} catch (UnsupportedEncodingException e) {
-			log.log(Level.SEVERE, null, e);
-		}
-	}
-
-	/**
-	 * Pokusíme se načíst ovladače pro různé DB a výsledek zapíšeme do logu.
-	 * Další ovladače je možné přidat pomocí manifestu v příslušných knihovnách.
-	 * viz http://www.sweb.cz/pichlik/archive/2006_08_06_archive.html#115502885631518161
-	 */
-	private void nactiOvladaceJDBC() {
-		nactiOvladacJDBC("org.postgresql.Driver", "PostgreSQL");
-		nactiOvladacJDBC("com.mysql.jdbc.Driver", "MySQL");
-		nactiOvladacJDBC("net.sourceforge.jtds.jdbc.Driver", "jTDS Sybase a MS SQL");
-		nactiOvladacJDBC("com.sybase.jdbc2.jdbc.SybDriver", "Sybase.com");
-		nactiOvladacJDBC("oracle.jdbc.OracleDriver", "Oracle");
-	}
-
-	/**
-	 * @param trida ovladač databáze, který se má načíst
-	 * @param jmeno název databáze
-	 */
-	private void nactiOvladacJDBC(String trida, String jmeno) {
-		try {
-			Class.forName(trida);
-			log.log(Level.INFO, "JDBC ovladač pro {0} byl úspěšně načten.", jmeno);
-		} catch (ClassNotFoundException e) {
-			log.log(Level.INFO, "JDBC ovladač pro {0} se nepodařilo načíst.", jmeno);
-		}
-	}
-
-	/** Vrací plnou cestu k souboru s nastavením */
-	protected static String getCestaKCertifikatum() {
-		return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
-	}
-
-	/** Vrací plnou cestu k souboru s nastavením */
-	protected static String getCestaKNastaveni() {
-		return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
-	}
-
-	/** Vrací plnou cestu ke složce programu (nastavení, certifikáty a logy) */
-	protected static String getCestaKeSlozceProgramu() {
-		return DOMACI_ADRESAR + File.separator + NASTAVENI_SLOZKA + File.separator;
-	}
-
-	/** Načte nastavení ze souboru */
-	private void nactiNastaveni() {
-		try {
-			XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
-			Object xmlObjekt = d.readObject();
-			d.close();
-
-			if (xmlObjekt instanceof Nastaveni) {
-				nastaveni = (Nastaveni) xmlObjekt;
-			} else {
-				nastaveni = new Nastaveni();
-				log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
-			}
-
-			nactiNastaveniGUI();
-
-			log.log(Level.INFO, "Nastavení bylo načteno.");
-		} catch (FileNotFoundException ex) {
-			log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: soubor nenalezen", ex);
-		} catch (IOException ex) {
-			log.log(Level.SEVERE, "Nastavení se nepodařilo načíst: I/O.", ex);
-		}
-	}
-
-	/** Vytvoří (pokud neexistuje) v domovském adresáři složku, kam se ukládá nastavení a případně logy */
-	private static boolean vytvorSlozkuProgramu() {
-		if (new File(getCestaKeSlozceProgramu()).mkdirs()) {
-			log.log(Level.INFO, "Složka pro nastavení programu byla vytvořena: {0}", getCestaKeSlozceProgramu());
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/** Uloží nastavení do souboru */
-	private void ulozNastaveni() {
-		try {
-			ulozNastaveniGUI();
-
-			vytvorSlozkuProgramu();
-
-			XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
-			e.writeObject(nastaveni);
-			e.close();
-			log.log(Level.INFO, "Nastavení bylo uloženo.");
-		} catch (FileNotFoundException ex) {
-			log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: soubor nenalezen.", ex);
-		} catch (IOException ex) {
-			log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: I/O.", ex);
-		}
-	}
-
-	/** Posbírá zadané hodnoty z GUI a uloží je do objektu nastaveni */
-	private void ulozNastaveniGUI() {
-		nastaveni.setDatabaze(vstupDatabaze.getText());
-		nastaveni.setDbHeslo(vstupDBheslo.getPassword());
-		nastaveni.setDbJmeno(vstupDBjmeno.getText());
-		nastaveni.setLimitZprav((Integer) vstupSMTPlimitPrijemcu.getValue());
-		nastaveni.setPostovniHeslo(vstupSMTPheslo.getPassword());
-		nastaveni.setPostovniJmeno(vstupSMTPjmeno.getText());
-		nastaveni.setPostovniPort((Integer) vstupSMTPport.getValue());
-		nastaveni.setPostovniServer(vstupSMTPserver.getText());
-		nastaveni.setVychoziPrijemci(prijemciVychozi.getAdresy());
-		nastaveni.setZkušebníPrijemci(prijemciZkusebni.getAdresy());
-	}
-
-	/** Aktualizuje GUI formuláře hodnotami z objektu nastaveni */
-	private void nactiNastaveniGUI() {
-		vstupDatabaze.setText(nastaveni.getDatabaze());
-		if (nastaveni.getDbHeslo() != null) {
-			vstupDBheslo.setText(String.valueOf(nastaveni.getDbHeslo()));
-		}
-		vstupDBjmeno.setText(nastaveni.getDbJmeno());
-		vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
-		if (nastaveni.getPostovniHeslo() != null) {
-			vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
-		}
-		vstupSMTPjmeno.setText(nastaveni.getPostovniJmeno());
-		vstupSMTPport.setValue(nastaveni.getPostovniPort());
-		vstupSMTPserver.setText(nastaveni.getPostovniServer());
-		prijemciVychozi.setAdresy(nastaveni.getVychoziPrijemci());
-		prijemciZkusebni.setAdresy(nastaveni.getZkušebníPrijemci());
-	}
-
-	protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
-		zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
-	}
-
-	protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
-		JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
-		if (loguj) {
-			log.log(Level.INFO, "{0}: {1}", new Object[]{nadpis, text});
-		}
-	}
-
-	protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
-		if (logovat) {
-			log.log(zavaznost, strucnaZprava, vyjimka);
-		}
-
-		JXErrorPane chybovyPanel = new JXErrorPane();
-		ErrorInfo chybovaInformace = new ErrorInfo(nadpis, strucnaZprava, podrobnaZprava, null, vyjimka, zavaznost, null);
-		chybovyPanel.setErrorInfo(chybovaInformace);
-		JDialog dialog = JXErrorPane.createDialog(vlastnik, chybovyPanel);
-		dialog.setVisible(true);
-	}
-
-	private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
-		zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
-	}
-
-	private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
-		zobrazInformacniDialog(this, nadpis, text, loguj);
-	}
-
-	private void zobrazChybovyDialog(String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
-		zobrazChybovyDialog(this, nadpis, strucnaZprava, podrobnaZprava, vyjimka, zavaznost, logovat);
-	}
-
-	/** This method is called from within the constructor to
-	 * initialize the form.
-	 * WARNING: Do NOT modify this code. The content of this method is
-	 * always regenerated by the Form Editor.
-	 */
+    /** Soubor, kde je uložené nastavení */
+    private static final String NASTAVENI_SOUBOR = "Nastaveni.xml.gz";
+    private static final String CERTIFIKATY_SOUBOR = "DuveryhodneCertifikaty.keystore";
+    private static final String NASTAVENI_SLOZKA = ".SuperPostak";
+    private static final String DOMACI_ADRESAR = System.getProperty("user.home");
+    private static Logger log = Logger.getLogger(SuperPostak.class.getName());
+    private Nastaveni nastaveni = new Nastaveni();
+    private Postak postak = new Postak(nastaveni);
+
+    /**
+     * Creates new form SuperPostak
+     * @param ladit předvyplní testovací hodnoty - zprávu
+     * @param exit při zavření okna ukončí program     
+     */
+    public SuperPostak(boolean ladit, boolean exit) {
+        log.log(Level.WARNING, "Program byl spuštěn.");
+        nactiOvladaceJDBC();
+        vytvorSlozkuProgramu();
+        initComponents();
+
+        nactiNastaveni();
+        ulozNastaveni();
+        nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
+
+        inicializujCardLayout();
+        setLocationRelativeTo(null);
+
+        /** Vyřešíme problém TAB vs. Focus */
+        vyresitTabFocusProblem(vstupSQL);
+        vyresitTabFocusProblem(vstupZprava);
+
+        /** Ladicí hodnoty */
+        if (ladit) {
+            nastavLadiciHodnoty();
+        }
+        
+        if (exit) {
+            setDefaultCloseOperation(EXIT_ON_CLOSE);
+        }
+
+
+    }
+
+    private void inicializujCardLayout() {
+        panelDatabaze.setName("panelDatabaze");
+        panelOdeslat.setName("panelOdeslat");
+        panelPrijemci.setName("panelPrijemci");
+        panelServer.setName("panelServer");
+        panelVychoziPrijemci.setName("panelVychoziPrijemci");
+        panelZprava.setName("panelZprava");
+
+        panel.add(panelDatabaze, panelDatabaze.getName());
+        panel.add(panelOdeslat, panelOdeslat.getName());
+        panel.add(panelPrijemci, panelPrijemci.getName());
+        panel.add(panelServer, panelServer.getName());
+        panel.add(panelVychoziPrijemci, panelVychoziPrijemci.getName());
+        panel.add(panelZprava, panelZprava.getName());
+
+        setPanel(panelZprava);
+        pack();
+    }
+
+    /**
+     * Vyplní formuláře (odesílatel, předmět, zpráva, příjemci...) výchozími hodnotami,
+     * aby se dal program testovat jedním kliknutím.
+     */
+    private void nastavLadiciHodnoty() {
+        try {
+            vstupAdresaOdesilatele.setText("SuperPostak@frantovo.cz");
+            vstupJmenoOdesilatele.setText("SuperPošťák");
+            vstupPredmet.setText("Zkušební zpráva od SuperPošťáka");
+            vstupZprava.setText("Toto je obyčejná zkušební zpráva v češtině :-)");
+            ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
+            adresy.add(new InternetAddressKomu("SuperPostak@frantovo.cz", "SuperPošťák"));
+            prijemciZkusebni.setAdresy(adresy);
+        } catch (UnsupportedEncodingException e) {
+            log.log(Level.SEVERE, null, e);
+        }
+    }
+
+    /**
+     * Pokusíme se načíst ovladače pro různé DB a výsledek zapíšeme do logu.
+     * Další ovladače je možné přidat pomocí manifestu v příslušných knihovnách.
+     * viz http://www.sweb.cz/pichlik/archive/2006_08_06_archive.html#115502885631518161
+     */
+    private void nactiOvladaceJDBC() {
+        nactiOvladacJDBC("org.postgresql.Driver", "PostgreSQL");
+        nactiOvladacJDBC("com.mysql.jdbc.Driver", "MySQL");
+        nactiOvladacJDBC("net.sourceforge.jtds.jdbc.Driver", "jTDS Sybase a MS SQL");
+        nactiOvladacJDBC("com.sybase.jdbc2.jdbc.SybDriver", "Sybase.com");
+    }
+
+    /**
+     * @param trida ovladač databáze, který se má načíst
+     * @param jmeno název databáze     
+     */
+    private void nactiOvladacJDBC(String trida, String jmeno) {
+        try {
+            Class.forName(trida);
+            log.log(Level.INFO, "JDBC ovladač pro " + jmeno + " byl úspěšně načten.");
+        } catch (ClassNotFoundException e) {
+            log.log(Level.INFO, "JDBC ovladač pro " + jmeno + " se nepodařilo načíst.");
+        }
+    }
+
+    /** Vrací plnou cestu k souboru s nastavením */
+    protected static String getCestaKCertifikatum() {
+        return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
+    }
+
+    /** Vrací plnou cestu k souboru s nastavením */
+    protected static String getCestaKNastaveni() {
+        return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
+    }
+
+    /** Vrací plnou cestu ke složce programu (nastavení, certifikáty a logy) */
+    protected static String getCestaKeSlozceProgramu() {
+        return DOMACI_ADRESAR + File.separator + NASTAVENI_SLOZKA + File.separator;
+    }
+
+    /** Načte nastavení ze souboru */
+    private void nactiNastaveni() {
+        try {
+            XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
+            Object xmlObjekt = d.readObject();
+            d.close();
+
+            if (xmlObjekt instanceof Nastaveni) {
+                nastaveni = (Nastaveni) xmlObjekt;
+            } else {
+                nastaveni = new Nastaveni();
+                log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
+            }
+
+            nactiNastaveniGUI();
+
+            log.log(Level.INFO, "Nastavení bylo načteno.");
+        } catch (FileNotFoundException ex) {
+            log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: soubor nenalezen", ex);
+        } catch (IOException ex) {
+            log.log(Level.SEVERE, "Nastavení se nepodařilo načíst: I/O.", ex);
+        }
+    }
+
+    /** Vytvoří (pokud neexistuje) v domovském adresáři složku, kam se ukládá nastavení a případně logy */
+    private static boolean vytvorSlozkuProgramu() {
+        if (new File(getCestaKeSlozceProgramu()).mkdirs()) {
+            log.log(Level.INFO, "Složka pro nastavení programu byla vytvořena: " + getCestaKeSlozceProgramu());
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /** Uloží nastavení do souboru */
+    private void ulozNastaveni() {
+        try {
+            ulozNastaveniGUI();
+
+            vytvorSlozkuProgramu();
+
+            XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
+            e.writeObject(nastaveni);
+            e.close();
+            log.log(Level.INFO, "Nastavení bylo uloženo.");
+        } catch (FileNotFoundException ex) {
+            log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: soubor nenalezen.", ex);
+        } catch (IOException ex) {
+            log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: I/O.", ex);
+        }
+    }
+
+    /** Posbírá zadané hodnoty z GUI a uloží je do objektu nastaveni */
+    private void ulozNastaveniGUI() {
+        nastaveni.setDatabaze(vstupDatabaze.getText());
+        nastaveni.setDbHeslo(vstupDBheslo.getPassword());
+        nastaveni.setDbJmeno(vstupDBjmeno.getText());
+        nastaveni.setLimitZprav((Integer) vstupSMTPlimitPrijemcu.getValue());
+        nastaveni.setPostovniHeslo(vstupSMTPheslo.getPassword());
+        nastaveni.setPostovniJmeno(vstupSMTPjmeno.getText());
+        nastaveni.setPostovniPort((Integer) vstupSMTPport.getValue());
+        nastaveni.setPostovniServer(vstupSMTPserver.getText());
+        nastaveni.setVychoziPrijemci(prijemciVychozi.getAdresy());
+    }
+
+    /** Aktualizuje GUI formuláře hodnotami z objektu nastaveni */
+    private void nactiNastaveniGUI() {
+        vstupDatabaze.setText(nastaveni.getDatabaze());
+        if (nastaveni.getDbHeslo() != null) {
+            vstupDBheslo.setText(String.valueOf(nastaveni.getDbHeslo()));
+        }
+        vstupDBjmeno.setText(nastaveni.getDbJmeno());
+        vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
+        if (nastaveni.getPostovniHeslo() != null) {
+            vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
+        }
+        vstupSMTPjmeno.setText(nastaveni.getPostovniJmeno());
+        vstupSMTPport.setValue(nastaveni.getPostovniPort());
+        vstupSMTPserver.setText(nastaveni.getPostovniServer());
+        prijemciVychozi.setAdresy(nastaveni.getVychoziPrijemci());
+    }
+
+    protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
+        zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
+    }
+
+    protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
+        JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
+        if (loguj) {
+            log.log(Level.INFO, nadpis + ": " + text);
+        }
+    }
+
+    protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
+        if (logovat) {
+            log.log(zavaznost, strucnaZprava, vyjimka);
+        }
+
+        JXErrorPane chybovyPanel = new JXErrorPane();
+        ErrorInfo chybovaInformace = new ErrorInfo(nadpis, strucnaZprava, podrobnaZprava, null, vyjimka, zavaznost, null);
+        chybovyPanel.setErrorInfo(chybovaInformace);
+        JDialog dialog = JXErrorPane.createDialog(vlastnik, chybovyPanel);
+        dialog.setVisible(true);
+    }
+
+    private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
+        zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
+    }
+
+    private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
+        zobrazInformacniDialog(this, nadpis, text, loguj);
+    }
+
+    private void zobrazChybovyDialog(String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
+        zobrazChybovyDialog(this, nadpis, strucnaZprava, podrobnaZprava, vyjimka, zavaznost, logovat);
+    }
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
     private void initComponents() {
@@ -350,8 +344,6 @@
         vstupZprava = new javax.swing.JTextArea();
         jLabel15 = new javax.swing.JLabel();
+        vstupFormatHTML = new javax.swing.JCheckBox();
         odpovedetKomuOdkaz = new org.jdesktop.swingx.JXHyperlink();
-        formátProstý = new javax.swing.JRadioButton();
-        formátXHTML = new javax.swing.JRadioButton();
-        formátOboje = new javax.swing.JRadioButton();
         odpovedetKomuDialog = new javax.swing.JDialog();
         jLabel18 = new javax.swing.JLabel();
@@ -361,5 +353,4 @@
         odpovedetKomuAdresa = new javax.swing.JTextField();
         odpovedetKomuHotovo = new javax.swing.JButton();
-        formátSkupina = new javax.swing.ButtonGroup();
         jXHeader1 = new org.jdesktop.swingx.JXHeader();
         taskPanel = new org.jdesktop.swingx.JXTaskPaneContainer();
@@ -703,4 +694,8 @@
         jLabel15.setText("Formát zprávy");
 
+        vstupFormatHTML.setMnemonic('h');
+        vstupFormatHTML.setText("HTML");
+        vstupFormatHTML.setToolTipText("Při nezaškrtnutí se odešle jako prostý text");
+
         odpovedetKomuOdkaz.setForeground(javax.swing.UIManager.getDefaults().getColor("windowText"));
         odpovedetKomuOdkaz.setMnemonic('e');
@@ -715,24 +710,4 @@
         });
 
-        formátSkupina.add(formátProstý);
-        formátProstý.setSelected(true);
-        formátProstý.setText("Prostý text");
-
-        formátSkupina.add(formátXHTML);
-        formátXHTML.setText("(X)HTML");
-        formátXHTML.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                formátXHTMLActionPerformed(evt);
-            }
-        });
-
-        formátSkupina.add(formátOboje);
-        formátOboje.setText("Oboje");
-        formátOboje.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                formátObojeActionPerformed(evt);
-            }
-        });
-
         javax.swing.GroupLayout panelZpravaLayout = new javax.swing.GroupLayout(panelZprava);
         panelZprava.setLayout(panelZpravaLayout);
@@ -741,7 +716,7 @@
             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
                 .addContainerGap()
-                .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
-                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
+                .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 438, Short.MAX_VALUE)
+                    .addGroup(panelZpravaLayout.createSequentialGroup()
                         .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                             .addGroup(panelZpravaLayout.createSequentialGroup()
@@ -754,16 +729,12 @@
                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
                         .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addComponent(vstupJmenoOdesilatele)
-                            .addComponent(vstupAdresaOdesilatele)
-                            .addComponent(vstupPredmet)))
-                    .addGroup(panelZpravaLayout.createSequentialGroup()
+                            .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
+                            .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
+                            .addComponent(vstupPredmet, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)))
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelZpravaLayout.createSequentialGroup()
                         .addComponent(jLabel15)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                        .addComponent(formátProstý)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                        .addComponent(formátXHTML)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                        .addComponent(formátOboje)
-                        .addGap(0, 0, Short.MAX_VALUE)))
+                        .addGap(33, 33, 33)
+                        .addComponent(vstupFormatHTML, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
+                        .addGap(247, 247, 247)))
                 .addContainerGap())
         );
@@ -788,7 +759,5 @@
                 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                     .addComponent(jLabel15)
-                    .addComponent(formátProstý)
-                    .addComponent(formátXHTML)
-                    .addComponent(formátOboje))
+                    .addComponent(vstupFormatHTML))
                 .addContainerGap())
         );
@@ -841,5 +810,5 @@
                     .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addComponent(jLabel17)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                 .addComponent(odpovedetKomuHotovo)
@@ -950,298 +919,251 @@
     }// </editor-fold>//GEN-END:initComponents
     private void vstupPredmetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vstupPredmetActionPerformed
+        
 }//GEN-LAST:event_vstupPredmetActionPerformed
 
     private void lnTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnTextActionPerformed
-		setPanel(panelZprava);
+        setPanel(panelZprava);
     }//GEN-LAST:event_lnTextActionPerformed
 
     private void lnPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnPrijemciActionPerformed
-		setPanel(panelPrijemci);
+        setPanel(panelPrijemci);
     }//GEN-LAST:event_lnPrijemciActionPerformed
 
     private void lnOdeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnOdeslatActionPerformed
-		setPanel(panelOdeslat);
+        setPanel(panelOdeslat);
     }//GEN-LAST:event_lnOdeslatActionPerformed
 
     private void lnServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnServerActionPerformed
-		setPanel(panelServer);
+        setPanel(panelServer);
     }//GEN-LAST:event_lnServerActionPerformed
 
     private void lnDatabazeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnDatabazeActionPerformed
-		setPanel(panelDatabaze);
+        setPanel(panelDatabaze);
     }//GEN-LAST:event_lnDatabazeActionPerformed
 
     private void lnVychoziPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnVychoziPrijemciActionPerformed
-		setPanel(panelVychoziPrijemci);
+        setPanel(panelVychoziPrijemci);
     }//GEN-LAST:event_lnVychoziPrijemciActionPerformed
 
     private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
-		ulozNastaveni();
-		log.log(Level.WARNING, "Ukončuji program.");
+        ulozNastaveni();
+        log.log(Level.WARNING, "Ukončuji program.");
     }//GEN-LAST:event_formWindowClosing
 
-	/**
-	 * Sestaví zprávu na základě GUI vstupů. Všechno kromě příjemců,
-	 * ti se přidají až dodatečně, podle toho,
-	 * jestli jde o zkušební nebo skutečné rozesílání.
-	 */
-	private HromadnaZprava getZprava() throws UnsupportedEncodingException {
-		HromadnaZprava zprava = new HromadnaZprava();
-		zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
-		zprava.setPredmet(vstupPredmet.getText());
-		zprava.setText(vstupZprava.getText());
-
-		if (formátProstý.isSelected()) {
-			zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
-		} else if (formátXHTML.isSelected()) {
-			zprava.setFormatHTML(HromadnaZprava.FORMÁT.XHTML);
-		} else if (formátOboje.isSelected()) {
-			zprava.setFormatHTML(HromadnaZprava.FORMÁT.OBOJE);
-		} else {
-			log.severe("Není zvolen formát zprávy → nastavuji: prostý text.");
-			zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
-		}
-
-		if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
-			InternetAddress komu = new InternetAddress();
-			komu.setPersonal(odpovedetKomuJmeno.getText());
-			komu.setAddress(odpovedetKomuAdresa.getText());
-			zprava.setOdpovedetKomu(komu);
-		}
-
-		return zprava;
-	}
-
-	/** Všichni příjemci, kterým bude odeslána ostrá zpráva. */
-	private ArrayList<InternetAddressKomu> getPrijemciVsichni() throws SQLException, UnsupportedEncodingException {
-		ArrayList<InternetAddressKomu> vsichni = new ArrayList<InternetAddressKomu>();
-		Collection<InternetAddressKomu> adresyVychozi = nastaveni.getVychoziPrijemci();
-		Collection<InternetAddressKomu> adresySQL = getPrijemciSQL();
-		Collection<InternetAddressKomu> adresyDodatecne = prijemciDodatecni.getAdresy();
-
-		if (adresyVychozi != null) {
-			vsichni.addAll(adresyVychozi);
-		}
-		if (adresySQL != null) {
-			vsichni.addAll(adresySQL);
-		}
-		if (adresyDodatecne != null) {
-			vsichni.addAll(adresyDodatecne);
-		}
-		return vsichni;
-	}
+    /**
+     * Sestaví zprávu na základě GUI vstupů. Všechno kromě příjemců,
+     * ti se přidají až dodatečně, podle toho,
+     * jestli jde o zkušební nebo skutečné rozesílání.
+     */
+    private HromadnaZprava getZprava() throws UnsupportedEncodingException {
+        HromadnaZprava zprava = new HromadnaZprava();
+        zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
+        zprava.setPredmet(vstupPredmet.getText());
+        zprava.setText(vstupZprava.getText());
+        zprava.setFormatHTML(vstupFormatHTML.isSelected());
+
+        if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
+            InternetAddress komu = new InternetAddress();
+            komu.setPersonal(odpovedetKomuJmeno.getText());
+            komu.setAddress(odpovedetKomuAdresa.getText());
+            zprava.setOdpovedetKomu(komu);
+        }
+
+        return zprava;
+    }
+
+    /** Všichni příjemci, kterým bude odeslána ostrá zpráva. */
+    private ArrayList<InternetAddressKomu> getPrijemciVsichni() throws SQLException, UnsupportedEncodingException {
+        ArrayList<InternetAddressKomu> vsichni = new ArrayList<InternetAddressKomu>();
+        Collection<InternetAddressKomu> adresyVychozi = nastaveni.getVychoziPrijemci();
+        Collection<InternetAddressKomu> adresySQL = getPrijemciSQL();
+        Collection<InternetAddressKomu> adresyDodatecne = prijemciDodatecni.getAdresy();
+
+        if (adresyVychozi != null) {
+            vsichni.addAll(adresyVychozi);
+        }
+        if (adresySQL != null) {
+            vsichni.addAll(adresySQL);
+        }
+        if (adresyDodatecne != null) {
+            vsichni.addAll(adresyDodatecne);
+        }
+        return vsichni;
+    }
 
     private void rozeslatHromadnouZpravuTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
-		try {
-			ulozNastaveniGUI();
-			HromadnaZprava zprava = getZprava();
-			zprava.setPrijemci(getPrijemciVsichni());
-
-			int volba = JOptionPane.showOptionDialog(this, "Počet příjemců hromadné zprávy: " + zprava.getPrijemci().size() + "\nPřejete si zprávu odeslat?", "Potvrdit odeslání", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
-			if (volba == JOptionPane.YES_OPTION) {
-				odesli(zprava);
-				Postak.vypisPrijemce(zprava.getPrijemci());
-				zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
-			}
-		} catch (Exception e) {
-			zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
-		}
+        try {
+            ulozNastaveniGUI();
+            HromadnaZprava zprava = getZprava();
+            zprava.setPrijemci(getPrijemciVsichni());
+
+            int volba = JOptionPane.showOptionDialog(this, "Počet příjemců hromadné zprávy: " + zprava.getPrijemci().size() + "\nPřejete si zprávu odeslat?", "Potvrdit odeslání", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
+            if (volba == JOptionPane.YES_OPTION) {
+                odesli(zprava);
+                Postak.vypisPrijemce(zprava.getPrijemci());
+                zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
+            }
+        } catch (Exception e) {
+            zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
+        }
 }//GEN-LAST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
 
     private void rozeslatZkusebniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatZkusebniTlacitkoActionPerformed
-		try {
-			ulozNastaveniGUI();
-			HromadnaZprava zprava = getZprava();
-			zprava.setPrijemci(prijemciZkusebni.getAdresy());
-
-			odesli(zprava);
-
-			zobrazInformacniDialog("Odesláno", "Zkušební zpráva byla odeslána.\nPočet adresátů: " + zprava.getPrijemci().size(), true);
-		} catch (Exception e) {
-			zobrazChybovyDialog("Zkušební zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
-		}
+        try {
+            ulozNastaveniGUI();
+            HromadnaZprava zprava = getZprava();
+            zprava.setPrijemci(prijemciZkusebni.getAdresy());
+
+            odesli(zprava);
+
+            zobrazInformacniDialog("Odesláno", "Zkušební zpráva byla odeslána.\nPočet adresátů: " + zprava.getPrijemci().size(), true);
+        } catch (Exception e) {
+            zobrazChybovyDialog("Zkušební zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
+        }        
     }//GEN-LAST:event_rozeslatZkusebniTlacitkoActionPerformed
 
     private void vyzkousetPripojeniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetPripojeniTlacitkoActionPerformed
-		try {
+        try {
             getSpojeni();//GEN-LAST:event_vyzkousetPripojeniTlacitkoActionPerformed
-			zobrazInformacniDialog("Připojeno k DB", "Připojení k DB proběhlo úspěšně", false);
-		} catch (SQLException e) {
-			zobrazChybovyDialog("Spojení s DB", "Připojení k databázi selhalo", null, e, Level.SEVERE, true);
-		}
-	}
+            zobrazInformacniDialog("Připojeno k DB", "Připojení k DB proběhlo úspěšně", false);
+        } catch (SQLException e) {
+            zobrazChybovyDialog("Spojení s DB", "Připojení k databázi selhalo", null, e, Level.SEVERE, true);
+        }
+    }
 
     private void vyzkousetSQLTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetSQLTlacitkoActionPerformed
-		try {
+        try {
             Collection<InternetAddressKomu> adresy = getPrijemciSQL();//GEN-LAST:event_vyzkousetSQLTlacitkoActionPerformed
-			if (adresy == null) {
-				zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze neproběhl.\nSQL dotaz je prázdný.", false);
-			} else {
-				zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
-			}
-		} catch (Exception e) {
-			zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
-		}
-	}
+            if (adresy == null) {
+                zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze neproběhl.\nSQL dotaz je prázdný.", false);
+            } else {
+                zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
+            }
+        } catch (Exception e) {
+            zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
+        }
+    }
 
     private void zobrazitSQLPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
-		try {
-			Collection<InternetAddressKomu> adresy = getPrijemciSQL();
-
-			ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
-			zobrazovac.setNastaveni(nastaveni);
-			zobrazovac.setAdresy(adresy);
-			zobrazovac.setLocationRelativeTo(this);
-			zobrazovac.setVisible(true);
-
-		} catch (Exception e) {
-			zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
-		}
+        try {
+            Collection<InternetAddressKomu> adresy = getPrijemciSQL();
+
+            ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
+            zobrazovac.setAdresy(adresy);
+            zobrazovac.setLocationRelativeTo(this);
+            zobrazovac.setVisible(true);
+
+        } catch (Exception e) {
+            zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
+        }
     }//GEN-LAST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
 
     private void zobrazitVsechnyPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
-		try {
-			Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
-
-			ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
-			zobrazovac.setAdresy(adresy);
-			zobrazovac.setLocationRelativeTo(this);
-			zobrazovac.setVisible(true);
-
-		} catch (Exception e) {
-			zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
-		}
+        try {
+            Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
+
+            ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
+            zobrazovac.setAdresy(adresy);
+            zobrazovac.setLocationRelativeTo(this);
+            zobrazovac.setVisible(true);
+
+        } catch (Exception e) {
+            zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
+        }
     }//GEN-LAST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
 
     private void odpovedetKomuOdkazActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuOdkazActionPerformed
-		odpovedetKomuDialog.pack();
-		odpovedetKomuDialog.setLocationRelativeTo(this);
-		odpovedetKomuDialog.setModalityType(ModalityType.APPLICATION_MODAL);
-		odpovedetKomuDialog.getRootPane().setDefaultButton(odpovedetKomuHotovo);
-		odpovedetKomuDialog.setVisible(true);
+        odpovedetKomuDialog.pack();
+        odpovedetKomuDialog.setLocationRelativeTo(this);
+        odpovedetKomuDialog.setModalityType(ModalityType.APPLICATION_MODAL);
+        odpovedetKomuDialog.getRootPane().setDefaultButton(odpovedetKomuHotovo);
+        odpovedetKomuDialog.setVisible(true);
 }//GEN-LAST:event_odpovedetKomuOdkazActionPerformed
 
     private void odpovedetKomuHotovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuHotovoActionPerformed
-		odpovedetKomuDialog.setVisible(false);
-
-		if (vstupJmenoOdesilatele.getText().isEmpty()) {
-			vstupJmenoOdesilatele.setText(odpovedetKomuJmeno.getText());
-		}
-
-		if (vstupAdresaOdesilatele.getText().isEmpty()) {
-			String[] částiAdresy = odpovedetKomuAdresa.getText().split("@");
-			if (částiAdresy.length == 2) {
-				vstupAdresaOdesilatele.setText("noreply@" + částiAdresy[1]);
-			}
-		}
+        odpovedetKomuDialog.setVisible(false);
 }//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
 
-	private void formátXHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátXHTMLActionPerformed
-		nastavVýchozíXHTML();
-	}//GEN-LAST:event_formátXHTMLActionPerformed
-
-	private void formátObojeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátObojeActionPerformed
-		nastavVýchozíXHTML();
-	}//GEN-LAST:event_formátObojeActionPerformed
-
-	/**
-	 * Pokud ještě není vyplněn žádný text, vložíme šablonu.
-	 */
-	private void nastavVýchozíXHTML() {
-		if (vstupZprava.getText().isEmpty()) {
-			vstupZprava.setText("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
-					+ "<body>\n\n"
-					+ "<p></p>\n"
-					+ "<div class=\"patička\"></div>\n\n"
-					+ "</body>\n"
-					+ "</html>");
-		}
-	}
-
-	/** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
-	private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
-		if ("".equals(vstupSQL.getText())) {
-			return null;
-		} else {
-			return getSpojeni().getAdresy(vstupSQL.getText());
-		}
-	}
-
-	private DataSQL getSpojeni() throws SQLException {
-		return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
-	}
-
-	/** Obalovací třída, která v průběhu odesílání zobrazuje kurzor s hodinami. */
-	private void odesli(HromadnaZprava zprava) throws MessagingException {
-		setCursor(new Cursor(Cursor.WAIT_CURSOR));
-		try {
-			postak.setNastaveni(nastaveni);
-			postak.odesli(zprava);
-
-		} catch (MessagingException e) {
-			throw e;
-		} finally {
-			setCursor(Cursor.getDefaultCursor());
-		}
-	}
-
-	private void setPanel(JComponent komponenta) {
-
-		if (panel.getLayout() instanceof CardLayout) {
-			CardLayout l = (CardLayout) panel.getLayout();
-			l.show(panel, komponenta.getName());
-		} else {
-			log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
-		}
-
-	}
-
-	/** Změní chování tabulátoru v textovém poli - aby se pomocí TABu dalo skočit na další komponentu */
-	private void vyresitTabFocusProblem(JTextArea textArea) {
-		textArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
-		textArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
-	}
-
-	public JXTaskPaneContainer getTaskPanel() {
-		return taskPanel;
-	}
-
-	/**
-	 * @param args the command line arguments
-	 */
-	public static void main(String args[]) {
-		final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
-
-		try {
-			//LookAndFeel laf = UIManager.getLookAndFeel();
-
-			//laf = new SubstanceLookAndFeel();
-			//laf = new SubstanceBusinessLookAndFeel();
-			//laf = new SubstanceBusinessBlueSteelLookAndFeel();
-			//laf = new SubstanceBusinessBlackSteelLookAndFeel();
-
-			UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
-		} catch (ClassNotFoundException ex) {
-			log.log(Level.SEVERE, null, ex);
-		} catch (InstantiationException ex) {
-			log.log(Level.SEVERE, null, ex);
-		} catch (IllegalAccessException ex) {
-			log.log(Level.SEVERE, null, ex);
-		} catch (UnsupportedLookAndFeelException ex) {
-			log.log(Level.SEVERE, null, ex);
-		}
-
-		java.awt.EventQueue.invokeLater(new Runnable() {
-
-			public void run() {
-				new SuperPostak(ladit, true).setVisible(true);
-			}
-		});
-	}
+    /** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
+    private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
+        if ("".equals(vstupSQL.getText())) {
+            return null;
+        } else {
+            return getSpojeni().getAdresy(vstupSQL.getText());
+        }
+    }
+
+    private DataSQL getSpojeni() throws SQLException {
+        return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
+    }
+
+    /** Obalovací třída, která v průběhu odesílání zobrazuje kurzor s hodinami. */
+    private void odesli(HromadnaZprava zprava) throws MessagingException {
+        setCursor(new Cursor(Cursor.WAIT_CURSOR));
+        try {
+            postak.setNastaveni(nastaveni);
+            postak.odesli(zprava);
+
+        } catch (MessagingException e) {
+            throw e;
+        } finally {
+            setCursor(Cursor.getDefaultCursor());
+        }
+    }
+
+    private void setPanel(JComponent komponenta) {
+
+        if (panel.getLayout() instanceof CardLayout) {
+            CardLayout l = (CardLayout) panel.getLayout();
+            l.show(panel, komponenta.getName());
+        } else {
+            log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
+        }
+
+    }
+
+    /** Změní chování tabulátoru v textovém poli - aby se pomocí TABu dalo skočit na další komponentu */
+    private void vyresitTabFocusProblem(JTextArea textArea) {
+        textArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
+        textArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
+    }
+
+    public JXTaskPaneContainer getTaskPanel() {
+        return taskPanel;
+    }
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
+
+        /**try {
+            //LookAndFeel laf = UIManager.getLookAndFeel();
+
+            //laf = new SubstanceLookAndFeel();
+            //laf = new SubstanceBusinessLookAndFeel();
+            //laf = new SubstanceBusinessBlueSteelLookAndFeel();
+            //laf = new SubstanceBusinessBlackSteelLookAndFeel();
+
+            UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
+        } catch (ClassNotFoundException ex) {
+            log.log(Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            log.log(Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            log.log(Level.SEVERE, null, ex);
+        } catch (UnsupportedLookAndFeelException ex) {
+            log.log(Level.SEVERE, null, ex);
+        } */
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+
+            public void run() {
+                new SuperPostak(ladit, true).setVisible(true);
+            }
+            });
+    }
     // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JRadioButton formátOboje;
-    private javax.swing.JRadioButton formátProstý;
-    private javax.swing.ButtonGroup formátSkupina;
-    private javax.swing.JRadioButton formátXHTML;
     private javax.swing.JLabel jLabel1;
     private javax.swing.JLabel jLabel10;
@@ -1300,4 +1222,5 @@
     private javax.swing.JTextField vstupDBjmeno;
     private javax.swing.JTextField vstupDatabaze;
+    private javax.swing.JCheckBox vstupFormatHTML;
     private javax.swing.JTextField vstupJmenoOdesilatele;
     private javax.swing.JTextField vstupPredmet;
Index: java/SuperPostak/src/cz/frantovo/superPostak/TODO.txt
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/TODO.txt	(revision 0:e76872ad5226)
+++ java/SuperPostak/src/cz/frantovo/superPostak/TODO.txt	(revision 0:e76872ad5226)
@@ -0,0 +1,30 @@
+    Přidat dotaz - odsouhlasení před odesláním
+    Export adres
+    Import adres
+    Zobrazení adres
+    Editovatelnost seznamů (zapnuto/vypnuto)
+    SQL připojení
+    SQL načítání
+    Odesílací třída
+    HTML zprávy
+    SMTP přihlašování
+    SMTP SSL
+    Dělení na dávky
+Obojetný formát zpráv: html + text
+
+
+    Kontrola vstupu: adresy se zavináčem, délky...
+Inteligentní interpret chybových hlášek
+
+Nápověda u nastavení serveru
+"O aplikaci"
+Možnost neukládání hesla k DB, případně šifrování
+Dokumentace - DocBook - JavaHelp
+    
+
+Odebírání více příjemců současně (multiselekt v tabulce)
+automatické doplňování dříve napsaných textů (jména, adresy)
+Řádek s logy - místo dialogů
+Zvýrazňování SQL syntaxe
+
+Refaktoring JFTable
Index: java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.form
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.form	(revision 5:bea5d9e11d37)
+++ java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.form	(revision 0:e76872ad5226)
@@ -1,3 +1,3 @@
-<?xml version="1.1" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 
 <Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
@@ -12,5 +12,4 @@
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
     <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
     <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
Index: java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.java
===================================================================
--- java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.java	(revision 5:bea5d9e11d37)
+++ java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.java	(revision 0:e76872ad5226)
@@ -1,6 +1,11 @@
+/*
+ * ZobrazovacAdres.java
+ *
+ * Created on 18. únor 2008, 0:13
+ */
+
 package cz.frantovo.superPostak;
 
 import cz.frantovo.postak.InternetAddressKomu;
-import cz.frantovo.postak.Nastaveni;
 import java.util.Collection;
 
@@ -10,22 +15,16 @@
  */
 public class ZobrazovacAdres extends javax.swing.JDialog {
-
-    private static final long serialVersionUID = 5084215476284985170L;
-
+    
     /** Creates new form ZobrazovacAdres */
     public ZobrazovacAdres(java.awt.Frame parent, boolean modal) {
         super(parent, modal);
         initComponents();
-        panelAdres.setEditovatelny(false);
+        panelAdres.setEditovatelny(false);        
     }
-
+    
     public void setAdresy(Collection<InternetAddressKomu> adresy) {
         panelAdres.setAdresy(adresy);
-    }
-
-	public void setNastaveni(Nastaveni n) {
-		panelAdres.setNastaveni(n);
-	}
-
+    }    
+    
     /** This method is called from within the constructor to
      * initialize the form.
@@ -54,5 +53,5 @@
         pack();
     }// </editor-fold>//GEN-END:initComponents
-
+    
     /**
      * @param args the command line arguments
@@ -60,10 +59,7 @@
     public static void main(String args[]) {
         java.awt.EventQueue.invokeLater(new Runnable() {
-
             public void run() {
                 ZobrazovacAdres dialog = new ZobrazovacAdres(new javax.swing.JFrame(), true);
                 dialog.addWindowListener(new java.awt.event.WindowAdapter() {
-
-                    @Override
                     public void windowClosing(java.awt.event.WindowEvent e) {
                         System.exit(0);
@@ -74,6 +70,8 @@
         });
     }
+    
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private cz.frantovo.superPostak.PanelPrijemcu panelAdres;
     // End of variables declaration//GEN-END:variables
+    
 }
Index: icence/gpl-3.0.txt
===================================================================
--- licence/gpl-3.0.txt	(revision 10:11879ab34364)
+++ 	(revision )
@@ -1,674 +1,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Index: icence/licence.txt
===================================================================
--- licence/licence.txt	(revision 10:11879ab34364)
+++ 	(revision )
@@ -1,12 +1,0 @@
-Program SuperPošťák vydávám pod licencí:
-GNU General Public License, verze 3
-
-  viz gpl-3.0.txt
-  viz http://www.fsf.org/licensing/licenses/gpl-3.0.html
-
-
-František Kučera
-
-  http://frantovo.cz/blog
-  http://frantovo.cz/
-  franta-hg@frantovo.cz
