changeset 7766:945d25675a32

merged.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 27 Feb 2014 16:45:36 +0100
parents 03cb95071d21 (diff) 819528f6fabb (current diff)
children 754ed00963d6 19472d3877d6
files
diffstat 22 files changed, 326 insertions(+), 113 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/conf.xml	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/doc/conf/conf.xml	Thu Feb 27 16:45:36 2014 +0100
@@ -280,11 +280,87 @@
     </artifacts>
 
     <modules>
-        <module name="winfo" selected="true"/>
-        <module name="minfo"/>
-        <module name="new_map"/>
-        <module name="new_chart"/>
-        <module name="fixanalysis"/>
+        <module name="winfo" selected="true">
+            <river name="Donau"/>
+            <river name="Elbe"/>
+            <river name="Fulda (Sommer)"/>
+            <river name="Fulda (Winter)"/>
+            <river name="Havel"/>
+            <river name="Main"/>
+            <river name="Main (Wehrarm Volkach)"/>
+            <river name="Mosel"/>
+            <river name="Neckar"/>
+            <river name="Oder"/>
+            <river name="Rhein"/>
+            <river name="Saale"/>
+            <river name="Saale-Thüringen"/>
+            <river name="Saar"/>
+            <river name="Saar (Wiltinger Bogen)"/>
+            <river name="Werra (Sommer)"/>
+            <river name="Werra (Winter)"/>
+            <river name="Weser"/>
+        </module>
+        <module name="minfo">
+            <river name="Elbe"/>
+            <river name="Oder"/>
+            <river name="Rhein"/>
+        </module>
+        <module name="new_map">
+            <river name="Donau"/>
+            <river name="Elbe"/>
+            <river name="Fulda (Sommer)"/>
+            <river name="Fulda (Winter)"/>
+            <river name="Havel"/>
+            <river name="Main"/>
+            <river name="Main (Wehrarm Volkach)"/>
+            <river name="Mosel"/>
+            <river name="Neckar"/>
+            <river name="Oder"/>
+            <river name="Rhein"/>
+            <river name="Saale"/>
+            <river name="Saale-Thüringen"/>
+            <river name="Saar"/>
+            <river name="Saar (Wiltinger Bogen)"/>
+            <river name="Werra (Sommer)"/>
+            <river name="Werra (Winter)"/>
+            <river name="Weser"/>
+        </module>
+        <module name="new_chart">
+            <river name="Donau"/>
+            <river name="Elbe"/>
+            <river name="Fulda (Sommer)"/>
+            <river name="Fulda (Winter)"/>
+            <river name="Havel"/>
+            <river name="Main"/>
+            <river name="Main (Wehrarm Volkach)"/>
+            <river name="Mosel"/>
+            <river name="Neckar"/>
+            <river name="Oder"/>
+            <river name="Rhein"/>
+            <river name="Saale"/>
+            <river name="Saale-Thüringen"/>
+            <river name="Saar"/>
+            <river name="Saar (Wiltinger Bogen)"/>
+            <river name="Werra (Sommer)"/>
+            <river name="Werra (Winter)"/>
+            <river name="Weser"/>
+        </module>
+        <module name="fixanalysis">
+            <river name="Donau"/>
+            <river name="Elbe"/>
+            <river name="Fulda (Sommer)"/>
+            <river name="Havel"/>
+            <river name="Main"/>
+            <river name="Mosel"/>
+            <river name="Neckar"/>
+            <river name="Oder"/>
+            <river name="Rhein"/>
+            <river name="Saale"/>
+            <river name="Saar"/>
+            <river name="Saar (Wiltinger Bogen)"/>
+            <river name="Werra (Sommer)"/>
+            <river name="Weser"/>
+        </module>
     </modules>
 
     <hooks>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java	Thu Feb 27 16:45:36 2014 +0100
@@ -33,6 +33,7 @@
 import org.dive4elements.artifacts.common.utils.XMLUtils;
 
 import org.dive4elements.river.artifacts.model.Module;
+import org.dive4elements.river.artifacts.model.RiverFactory;
 import org.dive4elements.river.artifacts.model.ZoomScale;
 
 import org.dive4elements.river.artifacts.states.StateFactory;
@@ -42,6 +43,7 @@
 import org.dive4elements.river.exports.GeneratorLookup;
 import org.dive4elements.river.exports.OutGenerator;
 
+import org.dive4elements.river.model.River;
 import org.dive4elements.river.themes.Theme;
 import org.dive4elements.river.themes.ThemeFactory;
 import org.dive4elements.river.themes.ThemeGroup;
@@ -571,7 +573,28 @@
             boolean selected = attrselected == null ? false :
                 attrselected.equalsIgnoreCase("true");
             logger.debug("Loaded module " + modulename);
-            modules.add(new Module(modulename, selected));
+            NodeList children = e.getChildNodes();
+            List<String> rivers = new ArrayList<String>(children.getLength());
+            for (int j = 0; j < children.getLength(); j++) {
+                if (children.item(j).getNodeType() != Node.ELEMENT_NODE) {
+                    continue;
+                }
+                Element ce = (Element)children.item(j);
+                if (ce.hasAttribute("uuid")) {
+                    rivers.add(ce.getAttribute("uuid"));
+                }
+                else if (ce.hasAttribute("name")) {
+                    List<River> allRivers = RiverFactory.getRivers();
+                    String name = ce.getAttribute("name");
+                    for (River r: allRivers) {
+                        if (name.equals(r.getName())) {
+                            rivers.add(r.getModelUuid());
+                            break;
+                        }
+                    }
+                }
+            }
+            modules.add(new Module(modulename, selected, rivers));
         }
         context.put(RiverContext.MODULES, modules);
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/Module.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/Module.java	Thu Feb 27 16:45:36 2014 +0100
@@ -8,16 +8,20 @@
 
 package org.dive4elements.river.artifacts.model;
 
+import java.util.List;
+
 /**
  * Represents a Module as is is loaded from the config
  */
 public class Module {
 
     private String name;
+    List<String> rivers;
     private boolean selected;
 
-    public Module(String name, boolean selected) {
+    public Module(String name, boolean selected, List<String> rivers) {
         this.name = name;
+        this.rivers = rivers;
         this.selected = selected;
     }
 
@@ -28,6 +32,10 @@
     public boolean isSelected() {
         return this.selected;
     }
+
+    public List<String> getRivers() {
+        return this.rivers;
+    }
 }
 
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 tw=80:
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/ModuleService.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/ModuleService.java	Thu Feb 27 16:45:36 2014 +0100
@@ -54,6 +54,11 @@
                     MODULE + "." + module.getName(), module.getName());
             ec.addAttr(m, "localname", localname, true);
 
+            for (String river : module.getRivers()) {
+                Element r = ec.create("river");
+                r.setAttribute("uuid", river);
+                m.appendChild(r);
+            }
             if (module.isSelected()) {
                 ec.addAttr(m, "selected", "true", true);
             }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/RiverInfoService.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/RiverInfoService.java	Thu Feb 27 16:45:36 2014 +0100
@@ -75,6 +75,7 @@
         ec.addAttr(r, "maxq", Double.toString(minmaxq[1]), true);
         ec.addAttr(r, "official", Long.toString(river.getOfficialNumber()),
                     true);
+        ec.addAttr(r, "model-uuid", river.getModelUuid(), true);
 
         riverele.appendChild(r);
         result.appendChild(riverele);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/RiverService.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/RiverService.java	Thu Feb 27 16:45:36 2014 +0100
@@ -59,6 +59,7 @@
         for (River river: allRivers) {
             Element r = ec.create("river");
             ec.addAttr(r, "name", river.getName(), true);
+            ec.addAttr(r, "modeluuid", river.getModelUuid(), true);
 
             rivers.appendChild(r);
         }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RiverSelect.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RiverSelect.java	Thu Feb 27 16:45:36 2014 +0100
@@ -133,7 +133,8 @@
         Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
 
         label.setTextContent(river.getName());
-        value.setTextContent(river.getName());
+        logger.debug("model uuid: " + river.getModelUuid());
+        value.setTextContent(river.getModelUuid());
 
         item.appendChild(label);
         item.appendChild(value);
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/ImportRiver.java	Thu Feb 27 16:45:36 2014 +0100
@@ -131,6 +131,8 @@
 
     protected String name;
 
+    protected String modelUuid;
+
     protected Long officialNumber;
 
     protected File wstFile;
@@ -295,12 +297,14 @@
 
     public ImportRiver(
         String               name,
+        String               modelUuid,
         File                 wstFile,
         File                 bbInfoFile,
         AnnotationClassifier annotationClassifier
     ) {
         this();
         this.name                 = name;
+        this.modelUuid            = modelUuid;
         this.wstFile              = wstFile;
         this.bbInfoFile           = bbInfoFile;
         this.annotationClassifier = annotationClassifier;
@@ -314,6 +318,14 @@
         this.name = name;
     }
 
+    public String getModelUuid() {
+        return modelUuid;
+    }
+
+    public void setModelUuid(String modelUuid) {
+        this.modelUuid = modelUuid;
+    }
+
     public Long getOfficialNumber() {
         return this.officialNumber;
     }
@@ -1582,7 +1594,7 @@
             List<River> rivers = query.list();
             if (rivers.isEmpty()) {
                 log.info("Store new river '" + name + "'");
-                peer = new River(name, u);
+                peer = new River(name, u, modelUuid);
                 if (!Config.INSTANCE.skipBWASTR()) {
                     peer.setOfficialNumber(officialNumber);
                 }
--- a/backend/src/main/java/org/dive4elements/river/importer/parsers/InfoGewParser.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/InfoGewParser.java	Thu Feb 27 16:45:36 2014 +0100
@@ -44,6 +44,9 @@
     public static final Pattern BB_INFO =
         Pattern.compile("^\\s*B\\+B-Info\\s*:\\s*(.+)");
 
+    public static final Pattern GEW_UUID =
+        Pattern.compile("^\\s*uuid\\s*:\\s*(.+)");
+
     protected ArrayList<ImportRiver> rivers;
 
     protected AnnotationClassifier annotationClassifier;
@@ -81,6 +84,7 @@
             String line = null;
 
             String riverName  = null;
+            String modelUuid  = null;
             File   wstFile    = null;
             File   bbInfoFile = null;
 
@@ -96,11 +100,13 @@
                     if (riverName != null) {
                         rivers.add(new ImportRiver(
                             riverName,
+                            modelUuid,
                             wstFile,
                             bbInfoFile,
                             annotationClassifier));
                     }
                     riverName  = river;
+                    modelUuid  = null;
                     wstFile    = null;
                     bbInfoFile = null;
                 }
@@ -118,6 +124,11 @@
                     }
                     wstFile = wst;
                 }
+                else if ((m = GEW_UUID.matcher(line)).matches()) {
+                    modelUuid = m.group(1);
+                    log.debug("Found model uuid " + modelUuid +
+                        " for river " + riverName);
+                }
                 else if ((m = BB_INFO.matcher(line)).matches()) {
                     //TODO: Make it relative to the wst file.
                     String bbInfo = m.group(1);
@@ -127,6 +138,7 @@
             if (riverName != null) {
                 rivers.add(new ImportRiver(
                     riverName,
+                    modelUuid,
                     wstFile,
                     bbInfoFile,
                     annotationClassifier));
--- a/backend/src/main/java/org/dive4elements/river/model/River.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/backend/src/main/java/org/dive4elements/river/model/River.java	Thu Feb 27 16:45:36 2014 +0100
@@ -61,6 +61,8 @@
 
     private boolean kmUp;
 
+    private String modelUuid;
+
     private List<Gauge> gauges;
 
     private List<MeasurementStation> measurementstations;
@@ -111,12 +113,22 @@
         this.kmUp = kmUp;
     }
 
+    @Column(name = "model_uuid")
+    public String getModelUuid() {
+        return this.modelUuid;
+    }
+
+    public void setModelUuid(String modelUuid) {
+        this.modelUuid = modelUuid;
+    }
+
     public River() {
     }
 
-    public River(String name, Unit wstUnit) {
-        this.name    = name;
-        this.wstUnit = wstUnit;
+    public River(String name, Unit wstUnit, String modelUuid) {
+        this.name      = name;
+        this.modelUuid = modelUuid;
+        this.wstUnit   = wstUnit;
     }
 
     @OneToMany
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java	Thu Feb 27 16:45:36 2014 +0100
@@ -192,7 +192,7 @@
                 LinkItem link = new LinkItem("river");
                 link.setHoverDelay(0);
                 link.setLinkTitle(item.getLabel());
-                link.setTarget(item.getStringValue());
+                link.setValue(item.getStringValue());
                 link.setShowTitle(false);
                 Img img = new Img();
                 img.setShowTitle(false);
@@ -238,7 +238,8 @@
                 link.addItemHoverHandler(new ItemHoverHandler() {
                     @Override
                     public void onItemHover(ItemHoverEvent event) {
-                        String river = ((LinkItem)event.getItem()).getLinkTitle();
+                        String river =
+                            ((LinkItem)event.getItem()).getValue().toString();
                         Img item = riverHighlight.get(river);
                         if (item != null) {
                             item.setVisible(true);
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java	Thu Feb 27 16:45:36 2014 +0100
@@ -73,26 +73,7 @@
         rivers = null;
         //TODO: put all the rivers into a config file, or something.
         fixRivers = new ArrayList<String>();
-        fixRivers.add("Rhein");
-        fixRivers.add("Elbe");
-        fixRivers.add("Donau");
-        fixRivers.add("Fulda (Sommer)");
-        fixRivers.add("Havel");
-        fixRivers.add("Lahn");
-        fixRivers.add("Main");
-        fixRivers.add("Mosel");
-        fixRivers.add("Neckar");
-        fixRivers.add("Oder");
-        fixRivers.add("Saale");
-        fixRivers.add("Saar");
-        fixRivers.add("Saar (Wiltinger Bogen)");
-        fixRivers.add("Werra (Sommer)");
-        fixRivers.add("Weser");
-
         minfoRivers = new ArrayList<String>();
-        minfoRivers.add("Elbe");
-        minfoRivers.add("Rhein");
-        minfoRivers.add("Oder");
 
         readModules();
     }
@@ -152,7 +133,16 @@
                     GWT.log("Module " + module.getName() + " is selected.");
                     if (radio != null) {
                         radio.setDefaultValue(module.getName());
-                        GWT.log("Setting " + module.getName() + " as selected.");
+                    }
+                }
+                if (module.getName().equals("fixanalysis")) {
+                    for (String river: module.getRivers()) {
+                        fixRivers.add(river);
+                    }
+                }
+                if (module.getName().equals("minfo")) {
+                    for (String river: module.getRivers()) {
+                        minfoRivers.add(river);
                     }
                 }
             }
@@ -242,7 +232,6 @@
     }-*/;
 
     private static String getSelectedModule() {
-        GWT.log("selected: " + radio.getValueAsString());
         return radio.getValueAsString();
     }
 }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterList.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterList.java	Thu Feb 27 16:45:36 2014 +0100
@@ -338,7 +338,8 @@
         int i = 0;
         for (River river: rivers) {
             String name = river.getName();
-            items[i++]  = new DefaultDataItem(name, null, name);
+            String mUuid = river.getModelUuid();
+            items[i++]  = new DefaultDataItem(name, null, mUuid);
         }
 
         Data data = new DefaultData(
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/ModuleServiceImpl.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ModuleServiceImpl.java	Thu Feb 27 16:45:36 2014 +0100
@@ -89,9 +89,15 @@
                         ArtifactNamespaceContext.NAMESPACE_URI, "selected");
                 boolean selected = strselected == null ? false :
                         strselected.equalsIgnoreCase("true");
+                NodeList rivers = em.getChildNodes();
+                List<String> riverUuids = new ArrayList<String>();
+                for (int j = 0; j < rivers.getLength(); j++) {
+                    Element re = (Element)rivers.item(j);
+                    riverUuids.add(re.getAttribute("uuid"));
+                }
                 logger.debug("Found module " + name + " " + localname);
                 if (user == null || user.canUseFeature("module:" + name)) {
-                    modules.add(new DefaultModule(name, localname, selected));
+                    modules.add(new DefaultModule(name, localname, selected, riverUuids));
                 }
             }
             return modules.toArray(new Module[modules.size()]);
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/RiverInfoServiceImpl.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/RiverInfoServiceImpl.java	Thu Feb 27 16:45:36 2014 +0100
@@ -368,6 +368,8 @@
                 ArtifactNamespaceContext.NAMESPACE_URI, "maxq");
         String rofficial = riverresp.getAttributeNS(
                 ArtifactNamespaceContext.NAMESPACE_URI, "official");
+        String rmuuid = riverresp.getAttributeNS(
+                ArtifactNamespaceContext.NAMESPACE_URI, "model-uuid");
 
         logger.debug("River is " + rname);
 
@@ -380,7 +382,8 @@
                 rwstunit,
                 parseDouble(rminq),
                 parseDouble(rmaxq),
-                parseLong(rofficial)
+                parseLong(rofficial),
+                rmuuid
                 );
 
         return riverinfo;
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/RiverServiceImpl.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/RiverServiceImpl.java	Thu Feb 27 16:45:36 2014 +0100
@@ -93,10 +93,12 @@
 
                 String name = tmp.getAttributeNS(
                     ArtifactNamespaceContext.NAMESPACE_URI, "name");
+                String mUuid = tmp.getAttributeNS(
+                    ArtifactNamespaceContext.NAMESPACE_URI, "modeluuid");
 
                 if (name.length() > 0
                 && (user == null || user.canUseFeature("river:" + name))) {
-                    theRivers.add(new DefaultRiver(name));
+                    theRivers.add(new DefaultRiver(name, mUuid));
                 }
             }
 
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultModule.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultModule.java	Thu Feb 27 16:45:36 2014 +0100
@@ -8,19 +8,27 @@
 
 package org.dive4elements.river.client.shared.model;
 
+import java.util.List;
+
 public class DefaultModule implements Module {
 
     private String name;
     private String localname;
     private boolean selected = false;
+    private List<String> rivers;
 
     public DefaultModule() {
     }
 
-    public DefaultModule(String name, String localname, boolean selected) {
+    public DefaultModule(
+        String name,
+        String localname,
+        boolean selected,
+        List<String> rivers) {
         this.name = name;
         this.localname = localname;
         this.selected = selected;
+        this.rivers = rivers;
     }
 
     /**
@@ -43,5 +51,12 @@
     public boolean isSelected() {
         return this.selected;
     }
+
+    /**
+     * @return the rivers
+     */
+    public List<String> getRivers() {
+        return this.rivers;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 tw=80 :
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultRiver.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultRiver.java	Thu Feb 27 16:45:36 2014 +0100
@@ -19,6 +19,9 @@
     /** The name of the river.*/
     protected String name;
 
+    /** The model uuid of the river */
+    protected String modelUuid;
+
     /**
      * The default constructor that creates empty river objects.
      */
@@ -31,8 +34,9 @@
      *
      * @param name The name of the river.
      */
-    public DefaultRiver(String name) {
+    public DefaultRiver(String name, String modelUuid) {
         this.name = name;
+        this.modelUuid = modelUuid;
     }
 
 
@@ -54,5 +58,23 @@
     public String getName() {
         return name;
     }
+
+
+
+    /**
+     * @return the modelUuid
+     */
+    public String getModelUuid() {
+        return modelUuid;
+    }
+
+
+
+    /**
+     * @param modelUuid the modelUuid to set
+     */
+    public void setModelUuid(String modelUuid) {
+        this.modelUuid = modelUuid;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultRiverInfo.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/DefaultRiverInfo.java	Thu Feb 27 16:45:36 2014 +0100
@@ -24,6 +24,7 @@
     private Double minq;
     private Double maxq;
     private Long officialnumber;
+    private String muuid;
 
     private List<GaugeInfo> gaugeinfo;
     private List<MeasurementStation> mstations;
@@ -39,7 +40,8 @@
             String wstunit,
             Double minq,
             Double maxq,
-            Long official)
+            Long official,
+            String muuid)
     {
         this.name           = name;
         this.kmup           = kmup;
@@ -49,6 +51,7 @@
         this.minq           = minq;
         this.maxq           = maxq;
         this.officialnumber = official;
+        this.muuid          = muuid;
     }
 
     public boolean isKmUp() {
@@ -112,6 +115,14 @@
     }
 
     /**
+     * Returns the model uuid of the river
+     * @return
+     */
+    public String getModelUuid() {
+        return muuid;
+    }
+
+    /**
      * Returns the MeasurementStations on this river or null if they aren't
      * available.
      */
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/Module.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/Module.java	Thu Feb 27 16:45:36 2014 +0100
@@ -9,6 +9,7 @@
 package org.dive4elements.river.client.shared.model;
 
 import java.io.Serializable;
+import java.util.List;
 
 public interface Module extends Serializable {
 
@@ -17,5 +18,7 @@
     String getLocalizedName();
 
     boolean isSelected();
+
+    List<String> getRivers();
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 tw=80 :
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/River.java	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/River.java	Thu Feb 27 16:45:36 2014 +0100
@@ -16,5 +16,7 @@
 public interface River extends Serializable {
 
     String getName();
+
+    String getModelUuid();
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/gwt-client/src/main/webapp/images/FLYS_Karte_interactive.html	Mon Feb 24 18:55:14 2014 +0100
+++ b/gwt-client/src/main/webapp/images/FLYS_Karte_interactive.html	Thu Feb 27 16:45:36 2014 +0100
@@ -5,10 +5,17 @@
       function stripRiver(name) {
         var module = getModule();
         if (module === 'fixanalysis') {
-          if (name.contains('Donau') ||
-              name.contains('Main') ||
-              name.contains('Neckar')) {
-            return name.split(' ')[0];
+          if (name === '7ca152b6-8f28-11e3-b4fd-001e0bd54d0e' ||
+              name === '7ca5330e-8f28-11e3-bd2f-001e0bd54d0e' ||
+              name === '7ca935ee-8f28-11e3-9c35-001e0bd54d0e') {
+            return '7ca152b6-8f28-11e3-b4fd-001e0bd54d0e';
+          }
+          else if (name === '7cb63c58-8f28-11e3-a8f0-001e0bd54d0e' ||
+                   name === '7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e') {
+            return '7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e';
+          }
+          else if (name === '7cbc05d4-8f28-11e3-88e3-001e0bd54d0e') {
+            return '7cba90aa-8f28-11e3-bfd5-001e0bd54d0e';
           }
         }
         return name;
@@ -26,7 +33,7 @@
         if (river) {
           highlighted = name;
           river.style.visibility="visible";
-        } 
+        }
       }
       function highlightList(name) {
         name = stripRiver(name);
@@ -59,30 +66,30 @@
 
         <!--FLYS_Karte.map-->
         <!-- mit daten -->
-        <area id="donau_area" shape="poly" onmouseover="highlight('Donau'); highlightList('Donau')" onmouseout="unHighlight('Donau'); unHighlightList('Donau')" onclick="selectRiver('Donau')" coords="226,668,276,668,277,646,385,578,433,576,431,587,458,604,429,620,396,634,363,658,305,681,230,691" />
-        <area id="donau_Ende_area" shape="poly" onmouseover="highlight('Donau'); highlightList('Donau')" onmouseout="unHighlight('Donau'); unHighlightList('Donau')" onclick="selectRiver('Donau')" coords="482,551,505,534,559,530,560,574,639,621,639,659,562,646,561,631,589,595,557,579,525,589,490,573" />
-        <area id="donau_nordarm_area" shape="poly" onmouseover="highlight('Donau (Regensburg Nordarm)'); highlightList('Donau (Regensburg Nordarm)')" onmouseout="unHighlight('Donau (Regensburg Nordarm)'); unHighlightList('Donau (Regensburg Nordarm)')" onclick="selectRiver('Donau (Regensburg Nordarm)')" coords="437,567,432,587,454,600,478,596,467,570,491,542,443,534,441,556" />
-        <area id="donau_schleusen_area" shape="poly" onmouseover="highlight('Donau (Schleusenkanäle)'); highlightList('Donau (Schleusenkanäle)')" onmouseout="unHighlight('Donau (Schleusenkanäle)'); unHighlightList('Donau (Schleusenkanäle)')" onclick="selectRiver('Donau (Schleusenkanäle)')" coords="467,569,482,552,490,573,526,589,559,579,589,596,561,631,557,614,522,618,504,600,477,594" />
-        <area id="elbe_area" shape="poly" onmouseover="highlight('Elbe'); highlightList('Elbe')" onmouseout="unHighlight('Elbe'); unHighlightList('Elbe')" onclick="selectRiver('Elbe')" coords="271,131,261,147,345,191,337,243,388,243,418,238,395,284,412,310,446,315,454,329,514,397,550,447,580,451,593,461,593,466,629,489,643,470,639,444,596,392,575,360,573,327,509,293,462,289,444,229,448,219,298,131" />
-        <area id="fulda_sommer_area" shape="poly" onmouseover="highlight('Fulda (Sommer)'); highlightList('Fulda (Sommer)')" onmouseout="unHighlight('Fulda (Sommer)'); unHighlightList('Fulda (Sommer)')" onclick="selectRiver('Fulda (Sommer)')" coords="315,363,307,371,307,381,313,386,310,393,322,402,322,414,312,425,305,437,338,436,350,410,334,399,326,389" />
-        <area id="fulda_winter_area" shape="poly" onmouseover="highlight('Fulda (Winter)'); highlightList('Fulda (Winter)')" onmouseout="unHighlight('Fulda (Winter)'); unHighlightList('Fulda (Winter)')" onclick="selectRiver('Fulda (Winter)')" coords="315,362,307,370,307,380,313,385,310,392,315,397,322,401,322,413,313,423,305,436,279,434,262,411,260,395,275,375,299,357" />
-        <area id="havel_area" shape="poly" onmouseover="highlight('Havel'); highlightList('Havel')" onmouseout="unHighlight('Havel'); unHighlightList('Havel')" onclick="selectRiver('Havel')" coords="444,230,462,288,519,270,533,217,519,177,491,189,458,202" />
-        <area id="lahn_area" shape="poly" onmouseover="highlight('Lahn'); highlightList('Lahn')" onmouseout="unHighlight('Lahn'); unHighlightList('Lahn')" onclick="selectRiver('Lahn')" coords="195,464,197,450,186,413,262,411,285,442,270,459,217,472" />
-        <area id="main_area" shape="poly" onmouseover="highlight('Main'); highlightList('Main')" onmouseout="unHighlight('Main'); unHighlightList('Main')" onclick="selectRiver('Main')" coords="240,492,240,466,303,462,335,445,375,444,454,469,468,501,394,500,381,480,350,480,337,493,344,541,308,529,272,524,269,504" />
-        <area id="main_limbach_area" shape="poly" onmouseover="highlight('Main (Wehrarm Limbach)'); highlightList('Main (Wehrarm Limbach)')" onmouseout="unHighlight('Main (Wehrarm Limbach)'); unHighlightList('Main (Wehrarm Limbach)')" onclick="selectRiver('Main (Wehrarm Limbach)')" coords="360,480,381,480,393,500,383,519,368,520" />
-        <area id="main_volkach_area" shape="poly" onmouseover="highlight('Main (Wehrarm Volkach)'); highlightList('Main (Wehrarm Volkach)')" onmouseout="unHighlight('Main (Wehrarm Volkach)'); unHighlightList('Main (Wehrarm Volkach)')" onclick="selectRiver('Main (Wehrarm Volkach)')" coords="350,480,360,480,368,522,343,541,337,493" />
-        <area id="mosel_area" shape="poly" onmouseover="highlight('Mosel'); highlightList('Mosel')" onmouseout="unHighlight('Mosel'); unHighlightList('Mosel')" onclick="selectRiver('Mosel')" coords="190,466,170,460,138,452,102,465,103,493,98,536,93,589,119,587,128,542,130,528,140,517,162,512,194,510" />
-        <area id="neckar_area" shape="poly" onmouseover="highlight('Neckar'); highlightList('Neckar')" onmouseout="unHighlight('Neckar'); unHighlightList('Neckar')" onclick="selectRiver('Neckar')" coords="231,641,253,653,288,640,386,577,357,559,342,541,319,540,292,547,290,583,308,590,306,615,250,604,226,630" />
-        <area id="neckar_wehrarm_area" shape="poly" onmouseover="highlight('Neckar (über Wehrarme)'); highlightList('Neckar (über Wehrarme)')" onmouseout="unHighlight('Neckar (über Wehrarme)'); unHighlightList('Neckar (über Wehrarme)')" onclick="selectRiver('Neckar (über Wehrarme)')" coords="272,524,248,540,253,561,259,570,254,605,306,615,308,590,290,583,292,546,320,540,309,529" />
-        <area id="oder_area" shape="poly" onmouseover="highlight('Oder'); highlightList('Oder')" onmouseout="unHighlight('Oder'); unHighlightList('Oder')" onclick="selectRiver('Oder')" coords="572,143,542,155,542,178,529,203,541,238,565,252,583,273,570,307,603,327,641,320,639,286,633,275,614,269,619,246,635,236,637,195,606,160" />
-        <area id="rhein_area" shape="poly" onmouseover="highlight('Rhein'); highlightList('Rhein')" onmouseout="unHighlight('Rhein'); unHighlightList('Rhein')" onclick="selectRiver('Rhein')" coords="86,301,138,317,157,334,153,355,177,381,185,407,198,450,197,464,219,471,224,478,240,473,241,492,269,502,273,523,249,539,254,561,260,570,256,597,227,628,229,639,252,653,277,644,279,668,236,670,237,690,265,687,281,696,283,717,248,728,188,737,170,718,167,669,203,569,222,545,213,521,195,521,193,467,171,459,145,444,122,403,49,391,52,352,23,344,4,304" />
-        <area id="saale_area" shape="poly" onmouseover="highlight('Saale'); highlightList('Saale')" onmouseout="unHighlight('Saale'); unHighlightList('Saale')" onclick="selectRiver('Saale')" coords="445,314,414,311,366,299,366,342,395,346,404,356,469,350,463,341" />
-        <area id="saale_thueringen_area" shape="poly" onmouseover="highlight('Saale-Thüringen'); highlightList('Saale-Thüringen')" onmouseout="unHighlight('Saale-Thüringen'); unHighlightList('Saale-Thüringen')" onclick="selectRiver('Saale-Thüringen')" coords="460,395,430,461,375,444,387,415,402,408,420,387,435,383" />
-        <area id="saar_area" shape="poly" onmouseover="highlight('Saar'); highlightList('Saar')" onmouseout="unHighlight('Saar'); unHighlightList('Saar')" onclick="selectRiver('Saar')" coords="152,515,193,511,193,545,180,599,151,589,146,566,147,559,143,544,153,535" />
-        <area id="saar_wiltingerbogen_area" shape="poly" onmouseover="highlight('Saar (Wiltinger Bogen)'); highlightList('Saar (Wiltinger Bogen)')" onmouseout="unHighlight('Saar (Wiltinger Bogen)'); unHighlightList('Saar (Wiltinger Bogen)')" onclick="selectRiver('Saar (Wiltinger Bogen)')" coords="130,528,139,517,152,515,152,536,142,543,147,560,134,570,126,558" />
-        <area id="werra_sommer_area" shape="poly" onmouseover="highlight('Werra (Sommer)'); highlightList('Werra (Sommer)')" onmouseout="unHighlight('Werra (Sommer)'); unHighlightList('Werra (Sommer)')" onclick="selectRiver('Werra (Sommer)')" coords="316,361,334,351,360,342,387,345,398,354,384,372,381,389,371,400,350,390,345,382,336,378,334,372,329,368" />
-        <area id="werra_winter_area" shape="poly" onmouseover="highlight('Werra (Winter)'); highlightList('Werra (Winter)')" onmouseout="unHighlight('Werra (Winter)'); unHighlightList('Werra (Winter)')" onclick="selectRiver('Werra (Winter)')" coords="315,362,326,388,334,398,350,409,370,400,353,391,347,388,346,385,344,382,335,378,333,372,329,368" />
-        <area id="weser_area" shape="poly" onmouseover="highlight('Weser'); highlightList('Weser')" onmouseout="unHighlight('Weser'); unHighlightList('Weser')" onclick="selectRiver('Weser')" coords="255,166,227,172,232,227,268,237,241,279,246,298,247,313,275,313,282,330,289,353,314,363,332,351,318,328,316,308,299,280,303,255,300,217,263,203,273,176" />
+        <area id="donau_area" shape="poly" onmouseover="highlight('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e'); highlightList('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" onmouseout="unHighlight('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e'); unHighlightList('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" onclick="selectRiver('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" coords="226,668,276,668,277,646,385,578,433,576,431,587,458,604,429,620,396,634,363,658,305,681,230,691" />
+        <area id="donau_Ende_area" shape="poly" onmouseover="highlight('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e'); highlightList('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" onmouseout="unHighlight('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e'); unHighlightList('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" onclick="selectRiver('7ca152b6-8f28-11e3-b4fd-001e0bd54d0e')" coords="482,551,505,534,559,530,560,574,639,621,639,659,562,646,561,631,589,595,557,579,525,589,490,573" />
+        <area id="donau_nordarm_area" shape="poly" onmouseover="highlight('7ca5330e-8f28-11e3-bd2f-001e0bd54d0e'); highlightList('7ca5330e-8f28-11e3-bd2f-001e0bd54d0e')" onmouseout="unHighlight('7ca5330e-8f28-11e3-bd2f-001e0bd54d0e'); unHighlightList('7ca5330e-8f28-11e3-bd2f-001e0bd54d0e')" onclick="selectRiver('7ca5330e-8f28-11e3-bd2f-001e0bd54d0e')" coords="437,567,432,587,454,600,478,596,467,570,491,542,443,534,441,556" />
+        <area id="donau_schleusen_area" shape="poly" onmouseover="highlight('7ca935ee-8f28-11e3-9c35-001e0bd54d0e'); highlightList('7ca935ee-8f28-11e3-9c35-001e0bd54d0e')" onmouseout="unHighlight('7ca935ee-8f28-11e3-9c35-001e0bd54d0e'); unHighlightList('7ca935ee-8f28-11e3-9c35-001e0bd54d0e')" onclick="selectRiver('7ca935ee-8f28-11e3-9c35-001e0bd54d0e')" coords="467,569,482,552,490,573,526,589,559,579,589,596,561,631,557,614,522,618,504,600,477,594" />
+        <area id="elbe_area" shape="poly" onmouseover="highlight('7caab446-8f28-11e3-8abe-001e0bd54d0e'); highlightList('7caab446-8f28-11e3-8abe-001e0bd54d0e')" onmouseout="unHighlight('7caab446-8f28-11e3-8abe-001e0bd54d0e'); unHighlightList('7caab446-8f28-11e3-8abe-001e0bd54d0e')" onclick="selectRiver('7caab446-8f28-11e3-8abe-001e0bd54d0e')" coords="271,131,261,147,345,191,337,243,388,243,418,238,395,284,412,310,446,315,454,329,514,397,550,447,580,451,593,461,593,466,629,489,643,470,639,444,596,392,575,360,573,327,509,293,462,289,444,229,448,219,298,131" />
+        <area id="fulda_sommer_area" shape="poly" onmouseover="highlight('7cad915c-8f28-11e3-a35b-001e0bd54d0e'); highlightList('7cad915c-8f28-11e3-a35b-001e0bd54d0e')" onmouseout="unHighlight('7cad915c-8f28-11e3-a35b-001e0bd54d0e'); unHighlightList('7cad915c-8f28-11e3-a35b-001e0bd54d0e')" onclick="selectRiver('7cad915c-8f28-11e3-a35b-001e0bd54d0e')" coords="315,363,307,371,307,381,313,386,310,393,322,402,322,414,312,425,305,437,338,436,350,410,334,399,326,389" />
+        <area id="fulda_winter_area" shape="poly" onmouseover="highlight('7cac1890-8f28-11e3-8051-001e0bd54d0e'); highlightList('7cac1890-8f28-11e3-8051-001e0bd54d0e')" onmouseout="unHighlight('7cac1890-8f28-11e3-8051-001e0bd54d0e'); unHighlightList('7cac1890-8f28-11e3-8051-001e0bd54d0e')" onclick="selectRiver('7cac1890-8f28-11e3-8051-001e0bd54d0e')" coords="315,362,307,370,307,380,313,385,310,392,315,397,322,401,322,413,313,423,305,436,279,434,262,411,260,395,275,375,299,357" />
+        <area id="havel_area" shape="poly" onmouseover="highlight('7cb1e4aa-8f28-11e3-a033-001e0bd54d0e'); highlightList('7cb1e4aa-8f28-11e3-a033-001e0bd54d0e')" onmouseout="unHighlight('7cb1e4aa-8f28-11e3-a033-001e0bd54d0e'); unHighlightList('7cb1e4aa-8f28-11e3-a033-001e0bd54d0e')" onclick="selectRiver('7cb1e4aa-8f28-11e3-a033-001e0bd54d0e')" coords="444,230,462,288,519,270,533,217,519,177,491,189,458,202" />
+        <area id="lahn_area" shape="poly" onmouseover="highlight('7cb35a10-8f28-11e3-8241-001e0bd54d0e'); highlightList('7cb35a10-8f28-11e3-8241-001e0bd54d0e')" onmouseout="unHighlight('7cb35a10-8f28-11e3-8241-001e0bd54d0e'); unHighlightList('7cb35a10-8f28-11e3-8241-001e0bd54d0e')" onclick="selectRiver('7cb35a10-8f28-11e3-8241-001e0bd54d0e')" coords="195,464,197,450,186,413,262,411,285,442,270,459,217,472" />
+        <area id="main_area" shape="poly" onmouseover="highlight('7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e'); highlightList('7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e')" onmouseout="unHighlight('7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e'); unHighlightList('7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e')" onclick="selectRiver('7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e')" coords="240,492,240,466,303,462,335,445,375,444,454,469,468,501,394,500,381,480,350,480,337,493,344,541,308,529,272,524,269,504" />
+        <area id="main_limbach_area" shape="poly" onmouseover="highlight('7cb63c58-8f28-11e3-a8f0-001e0bd54d0e'); highlightList('7cb63c58-8f28-11e3-a8f0-001e0bd54d0e')" onmouseout="unHighlight('7cb63c58-8f28-11e3-a8f0-001e0bd54d0e'); unHighlightList('7cb63c58-8f28-11e3-a8f0-001e0bd54d0e')" onclick="selectRiver('7cb63c58-8f28-11e3-a8f0-001e0bd54d0e')" coords="360,480,381,480,393,500,383,519,368,520" />
+        <area id="main_volkach_area" shape="poly" onmouseover="highlight('7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e'); highlightList('7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e')" onmouseout="unHighlight('7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e'); unHighlightList('7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e')" onclick="selectRiver('7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e')" coords="350,480,360,480,368,522,343,541,337,493" />
+        <area id="mosel_area" shape="poly" onmouseover="highlight('7cb91d24-8f28-11e3-b6e5-001e0bd54d0e'); highlightList('7cb91d24-8f28-11e3-b6e5-001e0bd54d0e')" onmouseout="unHighlight('7cb91d24-8f28-11e3-b6e5-001e0bd54d0e'); unHighlightList('7cb91d24-8f28-11e3-b6e5-001e0bd54d0e')" onclick="selectRiver('7cb91d24-8f28-11e3-b6e5-001e0bd54d0e')" coords="190,466,170,460,138,452,102,465,103,493,98,536,93,589,119,587,128,542,130,528,140,517,162,512,194,510" />
+        <area id="neckar_area" shape="poly" onmouseover="highlight('7cba90aa-8f28-11e3-bfd5-001e0bd54d0e'); highlightList('7cba90aa-8f28-11e3-bfd5-001e0bd54d0e')" onmouseout="unHighlight('7cba90aa-8f28-11e3-bfd5-001e0bd54d0e'); unHighlightList('7cba90aa-8f28-11e3-bfd5-001e0bd54d0e')" onclick="selectRiver('7cba90aa-8f28-11e3-bfd5-001e0bd54d0e')" coords="231,641,253,653,288,640,386,577,357,559,342,541,319,540,292,547,290,583,308,590,306,615,250,604,226,630" />
+        <area id="neckar_wehrarm_area" shape="poly" onmouseover="highlight('7cbc05d4-8f28-11e3-88e3-001e0bd54d0e'); highlightList('7cbc05d4-8f28-11e3-88e3-001e0bd54d0e')" onmouseout="unHighlight('7cbc05d4-8f28-11e3-88e3-001e0bd54d0e'); unHighlightList('7cbc05d4-8f28-11e3-88e3-001e0bd54d0e')" onclick="selectRiver('7cbc05d4-8f28-11e3-88e3-001e0bd54d0e')" coords="272,524,248,540,253,561,259,570,254,605,306,615,308,590,290,583,292,546,320,540,309,529" />
+        <area id="oder_area" shape="poly" onmouseover="highlight('7cbe19dc-8f28-11e3-9f28-001e0bd54d0e'); highlightList('7cbe19dc-8f28-11e3-9f28-001e0bd54d0e')" onmouseout="unHighlight('7cbe19dc-8f28-11e3-9f28-001e0bd54d0e'); unHighlightList('7cbe19dc-8f28-11e3-9f28-001e0bd54d0e')" onclick="selectRiver('7cbe19dc-8f28-11e3-9f28-001e0bd54d0e')" coords="572,143,542,155,542,178,529,203,541,238,565,252,583,273,570,307,603,327,641,320,639,286,633,275,614,269,619,246,635,236,637,195,606,160" />
+        <area id="rhein_area" shape="poly" onmouseover="highlight('7cbf9582-8f28-11e3-86b2-001e0bd54d0e'); highlightList('7cbf9582-8f28-11e3-86b2-001e0bd54d0e')" onmouseout="unHighlight('7cbf9582-8f28-11e3-86b2-001e0bd54d0e'); unHighlightList('7cbf9582-8f28-11e3-86b2-001e0bd54d0e')" onclick="selectRiver('7cbf9582-8f28-11e3-86b2-001e0bd54d0e')" coords="86,301,138,317,157,334,153,355,177,381,185,407,198,450,197,464,219,471,224,478,240,473,241,492,269,502,273,523,249,539,254,561,260,570,256,597,227,628,229,639,252,653,277,644,279,668,236,670,237,690,265,687,281,696,283,717,248,728,188,737,170,718,167,669,203,569,222,545,213,521,195,521,193,467,171,459,145,444,122,403,49,391,52,352,23,344,4,304" />
+        <area id="saale_area" shape="poly" onmouseover="highlight('7cc10390-8f28-11e3-aa81-001e0bd54d0e'); highlightList('7cc10390-8f28-11e3-aa81-001e0bd54d0e')" onmouseout="unHighlight('7cc10390-8f28-11e3-aa81-001e0bd54d0e'); unHighlightList('7cc10390-8f28-11e3-aa81-001e0bd54d0e')" onclick="selectRiver('7cc10390-8f28-11e3-aa81-001e0bd54d0e')" coords="445,314,414,311,366,299,366,342,395,346,404,356,469,350,463,341" />
+        <area id="saale_thueringen_area" shape="poly" onmouseover="highlight('7cc27068-8f28-11e3-97ce-001e0bd54d0e'); highlightList('7cc27068-8f28-11e3-97ce-001e0bd54d0e')" onmouseout="unHighlight('7cc27068-8f28-11e3-97ce-001e0bd54d0e'); unHighlightList('7cc27068-8f28-11e3-97ce-001e0bd54d0e')" onclick="selectRiver('7cc27068-8f28-11e3-97ce-001e0bd54d0e')" coords="460,395,430,461,375,444,387,415,402,408,420,387,435,383" />
+        <area id="saar_area" shape="poly" onmouseover="highlight('7cc5aca6-8f28-11e3-a55d-001e0bd54d0e'); highlightList('7cc5aca6-8f28-11e3-a55d-001e0bd54d0e')" onmouseout="unHighlight('7cc5aca6-8f28-11e3-a55d-001e0bd54d0e'); unHighlightList('7cc5aca6-8f28-11e3-a55d-001e0bd54d0e')" onclick="selectRiver('7cc5aca6-8f28-11e3-a55d-001e0bd54d0e')" coords="152,515,193,511,193,545,180,599,151,589,146,566,147,559,143,544,153,535" />
+        <area id="saar_wiltingerbogen_area" shape="poly" onmouseover="highlight('7cc7e93a-8f28-11e3-a03a-001e0bd54d0e'); highlightList('7cc7e93a-8f28-11e3-a03a-001e0bd54d0e')" onmouseout="unHighlight('7cc7e93a-8f28-11e3-a03a-001e0bd54d0e'); unHighlightList('7cc7e93a-8f28-11e3-a03a-001e0bd54d0e')" onclick="selectRiver('7cc7e93a-8f28-11e3-a03a-001e0bd54d0e')" coords="130,528,139,517,152,515,152,536,142,543,147,560,134,570,126,558" />
+        <area id="werra_sommer_area" shape="poly" onmouseover="highlight('7cb073ae-8f28-11e3-b501-001e0bd54d0e'); highlightList('7cb073ae-8f28-11e3-b501-001e0bd54d0e')" onmouseout="unHighlight('7cb073ae-8f28-11e3-b501-001e0bd54d0e'); unHighlightList('7cb073ae-8f28-11e3-b501-001e0bd54d0e')" onclick="selectRiver('7cb073ae-8f28-11e3-b501-001e0bd54d0e')" coords="316,361,334,351,360,342,387,345,398,354,384,372,381,389,371,400,350,390,345,382,336,378,334,372,329,368" />
+        <area id="werra_winter_area" shape="poly" onmouseover="highlight('7caf037a-8f28-11e3-88e6-001e0bd54d0e'); highlightList('7caf037a-8f28-11e3-88e6-001e0bd54d0e')" onmouseout="unHighlight('7caf037a-8f28-11e3-88e6-001e0bd54d0e'); unHighlightList('7caf037a-8f28-11e3-88e6-001e0bd54d0e')" onclick="selectRiver('7caf037a-8f28-11e3-88e6-001e0bd54d0e')" coords="315,362,326,388,334,398,350,409,370,400,353,391,347,388,346,385,344,382,335,378,333,372,329,368" />
+        <area id="weser_area" shape="poly" onmouseover="highlight('7ccacd44-8f28-11e3-9656-001e0bd54d0e'); highlightList('7ccacd44-8f28-11e3-9656-001e0bd54d0e')" onmouseout="unHighlight('7ccacd44-8f28-11e3-9656-001e0bd54d0e'); unHighlightList('7ccacd44-8f28-11e3-9656-001e0bd54d0e')" onclick="selectRiver('7ccacd44-8f28-11e3-9656-001e0bd54d0e')" coords="255,166,227,172,232,227,268,237,241,279,246,298,247,313,275,313,282,330,289,353,314,363,332,351,318,328,316,308,299,280,303,255,300,217,263,203,273,176" />
         <!-- ohne daten -->
         <area id="donau_1_area" shape="poly" onmouseover="highlight('Donau_1')" onmouseout="unHighlight('Donau_1')" onclick="selectRiver('Donau_1')" coords="346,639,316,672,334,750,379,750,374,735,369,715,370,696,372,664,365,648" />
         <area id="donau_2_area" shape="poly" onmouseover="highlight('Donau_2')" onmouseout="unHighlight('Donau_2')" onclick="selectRiver('Donau_2')" coords="394,615,370,655,373,670,370,721,380,749,409,741,403,706,413,682,412,644,416,623" />
@@ -104,29 +111,29 @@
       </map>
       <!-- mit Daten -->
       <img src="images/FLYS_Karte.png" style="position: absolute; left: 8px; top: 8px; z-index: 1" >
-      <img src="images/FLYS_Donau.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau" >
-      <img src="images/FLYS_Donau_Nordarm.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau (Regensburg Nordarm)" >
-      <img src="images/FLYS_Donau_Schleusen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau (Schleusenkanäle)" >
-      <img src="images/FLYS_Elbe.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Elbe" >
-      <img src="images/FLYS_Fulda_Sommer.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Fulda (Sommer)" >
-      <img src="images/FLYS_Fulda_Winter.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Fulda (Winter)" >
-      <img src="images/FLYS_Havel.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Havel" >
-      <img src="images/FLYS_Lahn.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Lahn" >
-      <img src="images/FLYS_Main.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main" >
-      <img src="images/FLYS_Main_Limbach.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main (Wehrarm Limbach)" >
-      <img src="images/FLYS_Main_Volkach.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main (Wehrarm Volkach)" >
-      <img src="images/FLYS_Mosel.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Mosel" >
-      <img src="images/FLYS_Neckar.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Neckar" >
-      <img src="images/FLYS_Neckar_Wehrarm.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Neckar (über Wehrarme)" >
-      <img src="images/FLYS_Oder.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Oder" >
-      <img src="images/FLYS_Rhein.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Rhein" >
-      <img src="images/FLYS_Saale.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saale" >
-      <img src="images/FLYS_Saale_Thueringen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saale-Thüringen" >
-      <img src="images/FLYS_Saar.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saar" >
-      <img src="images/FLYS_Saar_WiltingerBogen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saar (Wiltinger Bogen)" >
-      <img src="images/FLYS_Werra_Sommer.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Werra (Sommer)" >
-      <img src="images/FLYS_Werra_Winter.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Werra (Winter)" >
-      <img src="images/FLYS_Weser.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Weser" >
+      <img src="images/FLYS_Donau.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca152b6-8f28-11e3-b4fd-001e0bd54d0e" >
+      <img src="images/FLYS_Donau_Nordarm.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca5330e-8f28-11e3-bd2f-001e0bd54d0e" >
+      <img src="images/FLYS_Donau_Schleusen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca935ee-8f28-11e3-9c35-001e0bd54d0e" >
+      <img src="images/FLYS_Elbe.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7caab446-8f28-11e3-8abe-001e0bd54d0e" >
+      <img src="images/FLYS_Fulda_Sommer.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cad915c-8f28-11e3-a35b-001e0bd54d0e" >
+      <img src="images/FLYS_Fulda_Winter.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cac1890-8f28-11e3-8051-001e0bd54d0e" >
+      <img src="images/FLYS_Havel.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb1e4aa-8f28-11e3-a033-001e0bd54d0e" >
+      <img src="images/FLYS_Lahn.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb35a10-8f28-11e3-8241-001e0bd54d0e" >
+      <img src="images/FLYS_Main.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e" >
+      <img src="images/FLYS_Main_Limbach.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb63c58-8f28-11e3-a8f0-001e0bd54d0e" >
+      <img src="images/FLYS_Main_Volkach.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e" >
+      <img src="images/FLYS_Mosel.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb91d24-8f28-11e3-b6e5-001e0bd54d0e" >
+      <img src="images/FLYS_Neckar.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cba90aa-8f28-11e3-bfd5-001e0bd54d0e" >
+      <img src="images/FLYS_Neckar_Wehrarm.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cbc05d4-8f28-11e3-88e3-001e0bd54d0e" >
+      <img src="images/FLYS_Oder.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cbe19dc-8f28-11e3-9f28-001e0bd54d0e" >
+      <img src="images/FLYS_Rhein.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cbf9582-8f28-11e3-86b2-001e0bd54d0e" >
+      <img src="images/FLYS_Saale.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc10390-8f28-11e3-aa81-001e0bd54d0e" >
+      <img src="images/FLYS_Saale_Thueringen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc27068-8f28-11e3-97ce-001e0bd54d0e" >
+      <img src="images/FLYS_Saar.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc5aca6-8f28-11e3-a55d-001e0bd54d0e" >
+      <img src="images/FLYS_Saar_WiltingerBogen.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc7e93a-8f28-11e3-a03a-001e0bd54d0e" >
+      <img src="images/FLYS_Werra_Sommer.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb073ae-8f28-11e3-b501-001e0bd54d0e" >
+      <img src="images/FLYS_Werra_Winter.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7caf037a-8f28-11e3-88e6-001e0bd54d0e" >
+      <img src="images/FLYS_Weser.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ccacd44-8f28-11e3-9656-001e0bd54d0e" >
       <!-- ohne Daten -->
       <img src="images/FLYS_Donau_1_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau_1_inactive" >
       <img src="images/FLYS_Donau_2_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau_2_inactive" >
@@ -144,26 +151,26 @@
       <img src="images/FLYS_Spree_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Spree_inactive" >
       <img src="images/FLYS_Weser_1_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Weser_1_inactive" >
       <img src="images/FLYS_Weser_2_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Weser_2_inactive" >
-      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau_inactive" >
-      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau (Regensburg Nordarm)_inactive" >
-      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Donau (Schleusenkanäle)_inactive" >
-      <img src="images/FLYS_Fulda_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Fulda (Sommer)_inactive" >
-      <img src="images/FLYS_Fulda_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Fulda (Winter)_inactive" >
-      <img src="images/FLYS_Havel_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Havel_inactive" >
-      <img src="images/FLYS_Lahn_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Lahn_inactive" >
-      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main_inactive" >
-      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main (Wehrarm Limbach)_inactive" >
-      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Main (Wehrarm Volkach)_inactive" >
-      <img src="images/FLYS_Mosel_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Mosel_inactive" >
-      <img src="images/FLYS_Neckar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Neckar_inactive" >
-      <img src="images/FLYS_Neckar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Neckar (über Wehrarme)_inactive" >
-      <img src="images/FLYS_Saale_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saale_inactive" >
-      <img src="images/FLYS_Saale_Thueringen_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saale-Thüringen_inactive" >
+      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca152b6-8f28-11e3-b4fd-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca5330e-8f28-11e3-bd2f-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Donau_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ca935ee-8f28-11e3-9c35-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Fulda_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cad915c-8f28-11e3-a35b-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Fulda_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cac1890-8f28-11e3-8051-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Havel_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb1e4aa-8f28-11e3-a033-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Lahn_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb35a10-8f28-11e3-8241-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb4cd3c-8f28-11e3-bab7-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb63c58-8f28-11e3-a8f0-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Main_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb7adfe-8f28-11e3-a9b1-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Mosel_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb91d24-8f28-11e3-b6e5-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Neckar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cba90aa-8f28-11e3-bfd5-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Neckar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cbc05d4-8f28-11e3-88e3-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Saale_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc10390-8f28-11e3-aa81-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Saale_Thueringen_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc27068-8f28-11e3-97ce-001e0bd54d0e_inactive" >
       <img src="images/FLYS_Saale_Zwischen_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saale_Zwischen_inactive" >
-      <img src="images/FLYS_Saar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Saar_inactive" >
-      <img src="images/FLYS_Werra_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Werra (Sommer)_inactive" >
-      <img src="images/FLYS_Werra_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Werra (Winter)_inactive" >
-      <img src="images/FLYS_Weser_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="Weser_inactive" >
+      <img src="images/FLYS_Saar_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cc5aca6-8f28-11e3-a55d-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Werra_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7cb073ae-8f28-11e3-b501-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Werra_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7caf037a-8f28-11e3-88e6-001e0bd54d0e_inactive" >
+      <img src="images/FLYS_Weser_inactive.png" style="position: absolute; left: 8px; top: 8px; visibility: hidden; z-index: 50;" id="7ccacd44-8f28-11e3-9656-001e0bd54d0e_inactive" >
     </div>
   </body>
 </html>

http://dive4elements.wald.intevation.org