Index: trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8609)
+++ trunk/src/org/openstreetmap/josm/data/projection/CustomProjection.java	(revision 8610)
@@ -188,4 +188,7 @@
             ellps = parseEllipsoid(parameters);
             datum = parseDatum(parameters, ellps);
+            if (ellps == null) {
+                ellps = datum.getEllipsoid();
+            }
             proj = parseProjection(parameters, ellps);
             // "utm" is a shortcut for a set of parameters
@@ -338,11 +341,21 @@
                 parameters.containsKey(Param.b.key))
             throw new ProjectionConfigurationException(tr("Combination of ellipsoid parameters is not supported."));
-        if (parameters.containsKey(Param.no_defs.key))
-            throw new ProjectionConfigurationException(tr("Ellipsoid required (+ellps=* or +a=*, +b=*)"));
-        // nothing specified, use WGS84 as default
-        return Ellipsoid.WGS84;
+        return null;
     }
 
     public Datum parseDatum(Map<String, String> parameters, Ellipsoid ellps) throws ProjectionConfigurationException {
+        String datumId = parameters.get(Param.datum.key);
+        if (datumId != null) {
+            Datum datum = Projections.getDatum(datumId);
+            if (datum == null) throw new ProjectionConfigurationException(tr("Unknown datum identifier: ''{0}''", datumId));
+            return datum;
+        }
+        if (ellps == null) {
+            if (parameters.containsKey(Param.no_defs.key))
+                throw new ProjectionConfigurationException(tr("Ellipsoid required (+ellps=* or +a=*, +b=*)"));
+            // nothing specified, use WGS84 as default
+            ellps = Ellipsoid.WGS84;
+        }
+        
         String nadgridsId = parameters.get(Param.nadgrids.key);
         if (nadgridsId != null) {
@@ -362,10 +375,4 @@
             return parseToWGS84(towgs84, ellps);
 
-        String datumId = parameters.get(Param.datum.key);
-        if (datumId != null) {
-            Datum datum = Projections.getDatum(datumId);
-            if (datum == null) throw new ProjectionConfigurationException(tr("Unknown datum identifier: ''{0}''", datumId));
-            return datum;
-        }
         if (parameters.containsKey(Param.no_defs.key))
             throw new ProjectionConfigurationException(tr("Datum required (+datum=*, +towgs84=* or +nadgrids=*)"));
