Index: trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 1766)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 1767)
@@ -15,4 +15,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.TreeMap;
 import java.util.jar.Attributes;
@@ -21,4 +22,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AboutAction;
 import org.openstreetmap.josm.tools.LanguageInfo;
 
@@ -34,4 +36,5 @@
     public int mainversion = 0;
     public String className = null;
+    public boolean oldmode = false;
     public String requires = null;
     public String link = null;
@@ -70,5 +73,5 @@
             if (manifest == null)
                 throw new IOException(file+" contains no manifest.");
-            scanManifest(manifest);
+            scanManifest(manifest, false);
             libraries.add(0, fileToURL(file));
             jar.close();
@@ -78,10 +81,12 @@
     }
 
-    public PluginInformation(InputStream manifestStream, String name) {
+    public PluginInformation(InputStream manifestStream, String name, String url) {
         this.name = name;
         try {
             Manifest manifest = new Manifest();
             manifest.read(manifestStream);
-            scanManifest(manifest);
+            if(url != null)
+                downloadlink = url;
+            scanManifest(manifest, url != null);
         } catch (IOException e) {
             throw new PluginException(null, name, e);
@@ -89,5 +94,5 @@
     }
 
-    private void scanManifest(Manifest manifest)
+    private void scanManifest(Manifest manifest, boolean oldcheck)
     {
         String lang = LanguageInfo.getLanguageCodeManifest();
@@ -114,4 +119,31 @@
         catch(NumberFormatException e) {}
         author = attr.getValue("Author");
+        if(oldcheck && mainversion > AboutAction.getVersionNumber())
+        {
+            int myv = AboutAction.getVersionNumber();
+            for(Map.Entry entry : attr.entrySet())
+            {
+                try {
+                    String key = ((Attributes.Name)entry.getKey()).toString();
+                    if(key.endsWith("_Plugin-Url"))
+                    {
+                        int mv = Integer.parseInt(key.substring(0,key.length()-11));
+                        if(mv <= myv && (mv > mainversion || mainversion > myv))
+                        {
+                            String v = (String)entry.getValue();
+                            int i = v.indexOf(";");
+                            if(i > 0)
+                            {
+                                downloadlink = v.substring(i+1);
+                                mainversion = mv;
+                                version = v.substring(0,i);
+                                oldmode = true;
+                            }
+                        }
+                    }
+                }
+                catch(Exception e) { e.printStackTrace(); }
+            }
+        }
 
         String classPath = attr.getValue(Attributes.Name.CLASS_PATH);
@@ -213,5 +245,5 @@
         InputStream manifestStream = PluginInformation.class.getResourceAsStream("/org/openstreetmap/josm/plugins/"+name+"/MANIFEST.MF");
         if (manifestStream != null)
-            return new PluginInformation(manifestStream, pluginName);
+            return new PluginInformation(manifestStream, pluginName, null);
 
         Collection<String> locations = getPluginLocations();
Index: trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 1766)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginSelection.java	(revision 1767)
@@ -168,4 +168,6 @@
             if ((remoteversion == null) || remoteversion.equals(""))
                 remoteversion = tr("unknown");
+            else if(plugin.oldmode)
+                remoteversion += "*";
 
             String localversion = "";
@@ -284,6 +286,5 @@
                                             PluginInformation info = new PluginInformation(
                                             new ByteArrayInputStream(manifest.getBytes("utf-8")),
-                                            name.substring(0,name.length()-4));
-                                            info.downloadlink = url;
+                                            name.substring(0,name.length()-4), url);
                                             if(!availablePlugins.containsKey(info.name))
                                                 availablePlugins.put(info.name, info);
@@ -305,6 +306,5 @@
                                 PluginInformation info = new PluginInformation(
                                 new ByteArrayInputStream(manifest.getBytes("utf-8")),
-                                name.substring(0,name.length()-4));
-                                info.downloadlink = url;
+                                name.substring(0,name.length()-4), url);
                                 if(!availablePlugins.containsKey(info.name))
                                     availablePlugins.put(info.name, info);
