Index: trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(revision 5805)
+++ trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(working copy)
@@ -144,7 +144,6 @@
         if (offsetDialog != null || layer == null || Main.map == null)
             return;
         oldMapMode = Main.map.mapMode;
-        layer.enableOffsetServer(false);
         super.actionPerformed(e);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 5805)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(working copy)
@@ -25,20 +25,16 @@
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
 import javax.swing.JSeparator;
-import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ImageryAdjustAction;
 import org.openstreetmap.josm.data.ProjectionBounds;
-import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.MenuScroller;
-import org.openstreetmap.josm.io.imagery.OffsetServer;
-import org.openstreetmap.josm.io.imagery.OsmosnimkiOffsetServer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 public abstract class ImageryLayer extends Layer {
@@ -65,23 +61,8 @@
 
     protected int sharpenLevel;
 
-    protected boolean offsetServerSupported;
-    protected boolean offsetServerUsed;
-    protected OffsetServerThread offsetServerThread;
-
     private final ImageryAdjustAction adjustAction = new ImageryAdjustAction(this);
-    private final AbstractAction useServerOffsetAction = new AbstractAction(tr("(use server offset)")) {
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            enableOffsetServer(true);
-        }
-    };
 
-    protected OffsetServerThread createoffsetServerThread() {
-        return new OffsetServerThread(new OsmosnimkiOffsetServer(
-                OsmosnimkiOffsetServer.PROP_SERVER_URL.get()));
-    }
-
     public ImageryLayer(ImageryInfo info) {
         super(info.getName());
         this.info = info;
@@ -93,10 +74,6 @@
             icon = ImageProvider.get("imagery_small");
         }
         this.sharpenLevel = PROP_SHARPEN_LEVEL.get();
-        if (OffsetServer.PROP_SERVER_ENABLED.get()) {
-            offsetServerThread = createoffsetServerThread();
-            offsetServerThread.start();
-        }
     }
 
     public double getPPD(){
@@ -163,7 +140,6 @@
         @Override
         public void actionPerformed(ActionEvent ev) {
             setOffset(b.dx, b.dy);
-            enableOffsetServer(false);
             Main.main.menu.imageryMenu.refreshOffsetMenu();
             Main.map.repaint();
         }
@@ -185,14 +161,6 @@
         }
     }
 
-    public void enableOffsetServer(boolean enable) {
-        offsetServerUsed = enable;
-        if (offsetServerUsed && !offsetServerThread.isAlive()) {
-            offsetServerThread = createoffsetServerThread();
-            offsetServerThread.start();
-        }
-    }
-
     public JMenuItem getOffsetMenuItem() {
         JMenu subMenu = new JMenu(trc("layer", "Offset"));
         subMenu.setIcon(ImageProvider.get("mapmode", "adjustimg"));
@@ -201,16 +169,9 @@
 
     public JComponent getOffsetMenuItem(JComponent subMenu) {
         JMenuItem adjustMenuItem = new JMenuItem(adjustAction);
-        if (OffsetBookmark.allBookmarks.isEmpty() && !offsetServerSupported) return adjustMenuItem;
+        if (OffsetBookmark.allBookmarks.isEmpty()) return adjustMenuItem;
 
         subMenu.add(adjustMenuItem);
-        if (offsetServerSupported) {
-            JCheckBoxMenuItem item = new JCheckBoxMenuItem(useServerOffsetAction);
-            if (offsetServerUsed) {
-                item.setSelected(true);
-            }
-            subMenu.add(item);
-        }
         subMenu.add(new JSeparator());
         boolean hasBookmarks = false;
         int menuItemHeight = 0;
@@ -219,7 +180,7 @@
                 continue;
             }
             JCheckBoxMenuItem item = new JCheckBoxMenuItem(new ApplyOffsetAction(b));
-            if (b.dx == dx && b.dy == dy && !offsetServerUsed) {
+            if (b.dx == dx && b.dy == dy) {
                 item.setSelected(true);
             }
             subMenu.add(item);
@@ -234,7 +195,7 @@
                 MenuScroller.setScrollerFor((JPopupMenu)subMenu, scrollcount);
             }
         }
-        return (hasBookmarks || offsetServerSupported) ? subMenu : adjustMenuItem;
+        return hasBookmarks ? subMenu : adjustMenuItem;
     }
 
     public BufferedImage sharpenImage(BufferedImage img) {
@@ -264,51 +225,6 @@
         g.drawString(text, (img.getWidth() + g.getFontMetrics().stringWidth(text)) / 2, img.getHeight()/2);
     }
 
-    protected class OffsetServerThread extends Thread {
-        OffsetServer offsetServer;
-        EastNorth oldCenter = new EastNorth(Double.NaN, Double.NaN);
-
-        public OffsetServerThread(OffsetServer offsetServer) {
-            this.offsetServer = offsetServer;
-            setDaemon(true);
-        }
-
-        private void updateOffset() {
-            if (Main.map == null || Main.map.mapView == null) return;
-            EastNorth center = Main.map.mapView.getCenter();
-            if (center.equals(oldCenter)) return;
-            oldCenter = center;
-
-            EastNorth offset = offsetServer.getOffset(getInfo(), center);
-            if (offset != null) {
-                setOffset(offset.east(),offset.north());
-            }
-        }
-
-        @Override
-        public void run() {
-            if (!offsetServerSupported) {
-                if (!offsetServer.isLayerSupported(info)) return;
-                offsetServerSupported = true;
-            }
-            offsetServerUsed = true;
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    Main.main.menu.imageryMenu.refreshOffsetMenu();
-                }
-            });
-            try {
-                while (offsetServerUsed) {
-                    updateOffset();
-                    Thread.sleep(1000);
-                }
-            } catch (InterruptedException e) {
-            }
-            offsetServerUsed = false;
-        }
-    }
-
     /* (non-Javadoc)
      * @see org.openstreetmap.josm.gui.layer.Layer#destroy()
      */
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java	(revision 5805)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java	(working copy)
@@ -9,20 +9,14 @@
 import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
-import javax.swing.JCheckBox;
 import javax.swing.JColorChooser;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
-import javax.swing.JTextField;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-import org.openstreetmap.josm.io.imagery.OffsetServer;
-import org.openstreetmap.josm.io.imagery.OsmosnimkiOffsetServer;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -36,8 +30,6 @@
     private final JButton btnFadeColor;
     private final JSlider fadeAmount = new JSlider(0, 100);
     private final JosmComboBox sharpen;
-    private final JCheckBox useOffsetServer;
-    private final JTextField offsetServerUrl;
 
     /**
      * Constructs a new {@code CommonSettingsPanel}.
@@ -79,18 +71,6 @@
         add(new JLabel(tr("Sharpen (requires layer re-add): ")));
         add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
         add(this.sharpen, GBC.eol().fill(GBC.HORIZONTAL));
-
-        this.useOffsetServer = new JCheckBox(tr("Use offset server: "));
-        this.offsetServerUrl = new JTextField();
-        this.useOffsetServer.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                offsetServerUrl.setEnabled(useOffsetServer.isSelected());
-            }
-        });
-        offsetServerUrl.setEnabled(useOffsetServer.isSelected());
-        add(this.useOffsetServer, GBC.eol().fill(GBC.HORIZONTAL));
-        add(this.offsetServerUrl, GBC.eol().fill(GBC.HORIZONTAL));
     }
     
     /**
@@ -102,8 +82,6 @@
         this.btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
         this.fadeAmount.setValue(ImageryLayer.PROP_FADE_AMOUNT.get());
         this.sharpen.setSelectedIndex(Math.max(0, Math.min(2, ImageryLayer.PROP_SHARPEN_LEVEL.get())));
-        this.useOffsetServer.setSelected(OffsetServer.PROP_SERVER_ENABLED.get());
-        this.offsetServerUrl.setText(OsmosnimkiOffsetServer.PROP_SERVER_URL.get());
     }
     
     /**
@@ -111,9 +89,6 @@
      * @return true when restart is required
      */
     public boolean saveSettings() {
-        OffsetServer.PROP_SERVER_ENABLED.put(useOffsetServer.isSelected());
-        OsmosnimkiOffsetServer.PROP_SERVER_URL.put(offsetServerUrl.getText());
-
         ImageryLayer.PROP_FADE_AMOUNT.put(this.fadeAmount.getValue());
         ImageryLayer.PROP_FADE_COLOR.put(this.btnFadeColor.getBackground());
         ImageryLayer.PROP_SHARPEN_LEVEL.put(sharpen.getSelectedIndex());
Index: trunk/src/org/openstreetmap/josm/io/imagery/OffsetServer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/OffsetServer.java	(revision 5805)
+++ trunk/src/org/openstreetmap/josm/io/imagery/OffsetServer.java	(working copy)
@@ -1,12 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io.imagery;
-
-import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.imagery.ImageryInfo;
-import org.openstreetmap.josm.data.preferences.BooleanProperty;
-
-public interface OffsetServer {
-    public static BooleanProperty PROP_SERVER_ENABLED = new BooleanProperty("imagery.offsetserver.enabled",false);
-    abstract boolean isLayerSupported(ImageryInfo info);
-    abstract EastNorth getOffset(ImageryInfo info, EastNorth en);
-}
Index: trunk/src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java	(revision 5805)
+++ trunk/src/org/openstreetmap/josm/io/imagery/OsmosnimkiOffsetServer.java	(working copy)
@@ -1,64 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io.imagery;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.net.URLEncoder;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.imagery.ImageryInfo;
-import org.openstreetmap.josm.data.preferences.StringProperty;
-import org.openstreetmap.josm.tools.Utils;
-
-public class OsmosnimkiOffsetServer implements OffsetServer {
-    public static final StringProperty PROP_SERVER_URL = new StringProperty("imagery.offsetserver.url","http://offset.osmosnimki.ru/offset/v0?");
-    private String url;
-
-    public OsmosnimkiOffsetServer(String url) {
-        this.url = url;
-    }
-
-    @Override
-    public boolean isLayerSupported(ImageryInfo info) {
-        try {
-            URL url = new URL(this.url + "action=CheckAvailability&id=" + URLEncoder.encode(info.getUrl(), "UTF-8"));
-            System.out.println(tr("Querying offset availability: {0}", url));
-            final BufferedReader rdr = new BufferedReader(new InputStreamReader(Utils.openHttpConnection(url).getInputStream(), "UTF-8"));
-            String response = rdr.readLine();
-            System.out.println(tr("Offset server response: {0}", response));
-            if (response == null)
-                return false;
-            if (response.contains("\"offsets_available\": true")) return true;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    @Override
-    public EastNorth getOffset(ImageryInfo info, EastNorth en) {
-        LatLon ll = Main.getProjection().eastNorth2latlon(en);
-        try {
-            URL url = new URL(this.url + "action=GetOffsetForPoint&lat=" + ll.lat() + "&lon=" + ll.lon() + "&id=" + URLEncoder.encode(info.getUrl(), "UTF-8"));
-            System.out.println(tr("Querying offset: {0}", url.toString()));
-            final BufferedReader rdr = new BufferedReader(new InputStreamReader(Utils.openHttpConnection(url).getInputStream(), "UTF-8"));
-            String s = rdr.readLine();
-            if (s == null)
-                return null;
-            int i = s.indexOf(',');
-            if (i == -1) return null;
-            String sLon = s.substring(1,i);
-            String sLat = s.substring(i+1,s.length()-1);
-            return Main.getProjection().latlon2eastNorth(new LatLon(Double.valueOf(sLat),Double.valueOf(sLon))).sub(en);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-}
