Index: trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 8686)
+++ trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java	(revision 8688)
@@ -10,4 +10,5 @@
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.concurrent.Future;
@@ -63,5 +64,5 @@
             DownloadOsmTask task = new DownloadOsmTask();
             Future<?> future = task.download(
-                    new OverpassDownloadReader(area, dialog.getOverpassQuery()),
+                    new OverpassDownloadReader(area, dialog.getOverpassServer(), dialog.getOverpassQuery()),
                     dialog.isNewLayerRequired(), area, null);
             Main.worker.submit(new PostDownloadHandler(task, future));
@@ -71,7 +72,11 @@
     static final class OverpassDownloadDialog extends DownloadDialog {
 
+        protected HistoryComboBox overpassServer;
         protected HistoryComboBox overpassWizard;
         protected JTextArea overpassQuery;
         private static OverpassDownloadDialog instance;
+        static final StringProperty OVERPASS_SERVER = new StringProperty("download.overpass.server", "http://overpass-api.de/api/");
+        static final CollectionProperty OVERPASS_SERVER_HISTORY = new CollectionProperty("download.overpass.servers",
+                Arrays.asList("http://overpass-api.de/api/", "http://overpass.osm.rambler.ru/cgi/"));
         static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard", new ArrayList<String>());
 
@@ -129,4 +134,13 @@
             gbc.ipady = 200;
             pnl.add(scrollPane, gbc);
+
+            overpassServer = new HistoryComboBox();
+            pnl.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5));
+            pnl.add(overpassServer, GBC.eol().fill(GBC.HORIZONTAL));
+
+        }
+
+        public String getOverpassServer() {
+            return overpassServer.getText();
         }
 
@@ -138,4 +152,6 @@
         public void restoreSettings() {
             super.restoreSettings();
+            overpassServer.setPossibleItems(OVERPASS_SERVER_HISTORY.get());
+            overpassServer.setText(OVERPASS_SERVER.get());
             overpassWizard.setPossibleItems(OVERPASS_WIZARD_HISTORY.get());
         }
@@ -145,4 +161,6 @@
             super.rememberSettings();
             overpassWizard.addCurrentItemToHistory();
+            OVERPASS_SERVER.put(getOverpassServer());
+            OVERPASS_SERVER_HISTORY.put(overpassServer.getHistory());
             OVERPASS_WIZARD_HISTORY.put(overpassWizard.getHistory());
         }
@@ -152,9 +170,10 @@
     static class OverpassDownloadReader extends BoundingBoxDownloader {
 
+        final String overpassServer;
         final String overpassQuery;
-        static final StringProperty OVERPASS_URL = new StringProperty("download.overpass.url", "https://overpass-api.de/api/");
-
-        public OverpassDownloadReader(Bounds downloadArea, String overpassQuery) {
+
+        public OverpassDownloadReader(Bounds downloadArea, String overpassServer, String overpassQuery) {
             super(downloadArea);
+            this.overpassServer = overpassServer;
             this.overpassQuery = overpassQuery.trim();
         }
@@ -162,5 +181,5 @@
         @Override
         protected String getBaseUrl() {
-            return OVERPASS_URL.get();
+            return overpassServer;
         }
 
