Index: trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 3042)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 3043)
@@ -273,10 +273,10 @@
         String content = null;
         try {
-            content = reader.fetchHelpTopicContent(url);
+            content = reader.fetchHelpTopicContent(url, true);
         } catch(MissingHelpContentException e) {
             url = HelpUtil.getHelpTopicUrl(HelpUtil.buildAbsoluteHelpTopic(relativeHelpTopic, Locale.ENGLISH));
             try {
                 logger.info("fetching url: " + url);
-                content = reader.fetchHelpTopicContent(url);
+                content = reader.fetchHelpTopicContent(url, true);
             } catch(MissingHelpContentException e1) {
                 handleMissingHelpContent(relativeHelpTopic);
@@ -308,5 +308,5 @@
         String content = null;
         try {
-            content = reader.fetchHelpTopicContent(url);
+            content = reader.fetchHelpTopicContent(url, true);
         } catch(MissingHelpContentException e) {
             handleMissingHelpContent(absoluteHelpTopic);
@@ -342,6 +342,10 @@
             try {
                 this.url = url;
-                help.setPage(url);
-            } catch(IOException e) {
+                String content = reader.fetchHelpTopicContent(url, false);
+                help.setText(content);
+                history.setCurrentUrl(url);
+                this.url = url;
+                scrollToTop();
+            } catch(Exception e) {
                 HelpAwareOptionPane.showOptionDialog(
                         Main.parent,
Index: trunk/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java	(revision 3042)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java	(revision 3043)
@@ -50,5 +50,9 @@
 
     public void setCurrentUrl(String url) {
-        if (historyPos == history.size() -1) {
+        boolean add=true;
+
+        if (historyPos >= 0 && historyPos < history.size() && history.get(historyPos).toString().equals(url.toString())) {
+            add = false;
+        } else if (historyPos == history.size() -1) {
             // do nothing just append
         } else if (historyPos ==0 && history.size() > 0) {
@@ -59,6 +63,9 @@
             history = new ArrayList<String>();
         }
-        history.add(url);
-        historyPos = history.size()-1;
+        if(add)
+        {
+          history.add(url);
+          historyPos = history.size()-1;
+        }
         setChanged();
         notifyObservers();
Index: trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java	(revision 3042)
+++ trunk/src/org/openstreetmap/josm/gui/help/HelpContentReader.java	(revision 3043)
@@ -45,5 +45,5 @@
      * @throws MissingHelpContentException thrown if this helpTopicUrl doesn't point to an existing Wiki help page
      */
-    public String fetchHelpTopicContent(String helpTopicUrl) throws HelpContentReaderException {
+    public String fetchHelpTopicContent(String helpTopicUrl, boolean dotest) throws HelpContentReaderException {
         URL url = null;
         HttpURLConnection con = null;
@@ -54,5 +54,5 @@
             con.connect();
             in = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
-            return prepareHelpContent(in);
+            return prepareHelpContent(in, dotest);
         } catch(MalformedURLException e) {
             throw new HelpContentReaderException(e);
@@ -90,11 +90,14 @@
      * @throws MissingHelpContentException thrown, if the content read isn't a help page
      */
-    protected String prepareHelpContent(BufferedReader in) throws HelpContentReaderException {
+    protected String prepareHelpContent(BufferedReader in, boolean dotest) throws HelpContentReaderException {
         boolean isInContent = false;
         boolean isInTranslationsSideBar = false;
         boolean isExistingHelpPage = false;
+        StringBuffer sball = new StringBuffer();
         StringBuffer sb = new StringBuffer();
         try {
             for (String line = in.readLine(); line != null; line = in.readLine()) {
+                sball.append(line);
+                sball.append("\n");
                 if (line.contains("<div id=\"searchable\">")) {
                     isInContent = true;
@@ -130,8 +133,10 @@
             throw new HelpContentReaderException(e);
         }
+        if(!dotest && sb.length() == 0)
+            sb = sball;
+        else if (dotest && !isExistingHelpPage)
+            throw new MissingHelpContentException();
         sb.insert(0, "<html>");
         sb.append("<html>");
-        if (! isExistingHelpPage)
-            throw new MissingHelpContentException();
         return sb.toString();
     }
