Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(working copy)
@@ -22,7 +22,7 @@
  */
 public class AutoScaleAction extends JosmAction {
 
-    public static final String[] modes = { marktr("data"), marktr("layer"), marktr("selection"), marktr("conflict") };
+    public static final String[] modes = {marktr("data"), marktr("layer"), marktr("selection"), marktr("conflict") };
     private final String mode;
 
     private static int getModeShortcut(String mode) {
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MapScaler.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MapScaler.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MapScaler.java	(working copy)
@@ -20,7 +20,7 @@
 	private final NavigatableComponent mv;
 	public MapScaler(NavigatableComponent mv, Projection proj) {
 		this.mv = mv;
-		setSize(100,30);
+		setSize(100,220);
 		setOpaque(false);
     }
 
@@ -38,6 +38,20 @@
 		g.drawLine(24, 3, 24, 7);
 		g.drawLine(74, 3, 74, 7);
 		g.drawString(text, (int)(50-bound.getWidth()/2), 23);
+		
+		g.drawString("Dilution:", 0, 49);
+		Color c[] = org.openstreetmap.josm.data.gpx.WayPoint.dcolors;
+		int[] d = org.openstreetmap.josm.data.gpx.WayPoint.dilution_steps;
+		for(int i = 0; i < 10; i++) {
+			g.setColor(c[i]);
+			
+			int y = 57+i*17;
+			
+			g.fillRect(1, y, 9, 9);
+			g.setColor(Color.white);
+			g.drawRect(0, y-1, 10, 10);
+			g.drawString(Integer.toString(d[i]), 15, y+9);
+		}
     }
 
 	public String helpTopic() {
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/MainMenu.java	(working copy)
@@ -125,6 +125,7 @@
 	public final JosmAction about = new AboutAction();
 	public final HistoryInfoAction historyinfo = new HistoryInfoAction();
 
+    
 	public final JMenu fileMenu = new JMenu(tr("File"));
 	public final JMenu editMenu = new JMenu(tr("Edit"));
 	public final JMenu viewMenu = new JMenu(tr("View"));
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(working copy)
@@ -559,13 +559,15 @@
 		 ********** STEP 3f - DRAW SMALL POINTS INSTEAD OF LINES ********
 		 ****************************************************************/
 		if (!large && !lines){
-			g.setColor(neutralColor);
+			//g.setColor(neutralColor);
 			for (GpxTrack trk : data.tracks) {
 				for (Collection<WayPoint> segment : trk.trackSegs) {
 					for (WayPoint trkPnt : segment) {
 						if (Double.isNaN(trkPnt.latlon.lat()) || Double.isNaN(trkPnt.latlon.lon()))
 							continue;
 						Point screen = mv.getPoint(trkPnt.eastNorth);
+						if(trkPnt.dop_color==null)  g.setColor(neutralColor);
+						else g.setColor(trkPnt.dop_color);
 						g.drawRect(screen.x, screen.y, 0, 0);
 					} // end for trkpnt
 				} // end for segment
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/io/GpxReader.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/io/GpxReader.java	(working copy)
@@ -224,6 +224,8 @@
 				break;
 			case wpt:
 				if (qName.equals("ele") || qName.equals("magvar")
+						|| qName.equals("hdop") || qName.equals("vdop")
+						|| qName.equals("pdop")
 						|| qName.equals("geoidheight") || qName.equals("name")
 						|| qName.equals("sym") || qName.equals("type")) {
 					currentWayPoint.attr.put(qName, accumulator.toString());
@@ -238,6 +240,7 @@
 					currentRoute.routePoints.add(currentWayPoint);
 				} else if (qName.equals("trkpt")) {
 					currentState = states.pop();
+					currentWayPoint.complete();
 					currentTrackSeg.add(currentWayPoint);
 				} else if (qName.equals("wpt")) {
 					currentState = states.pop();
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/coor/LatLon.java	(working copy)
@@ -27,7 +27,7 @@
      * Possible ways to display coordinates 
      */ 
     public enum CoordinateFormat { 
-        DECIMAL_DEGREES {public String toString() {return tr("Decimal Degrees");}},  
+        DECIMAL_DEGREES {public String toString() {return  tr("Decimal Degrees");}},  
         DEGREES_MINUTES_SECONDS {public String toString() {return tr("Degrees Minutes Seconds");}}; 
     } 
     
Index: E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/gpx/WayPoint.java
===================================================================
--- E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(revision 1119)
+++ E:/Programmierumgebungen/Projekte/JOSM_PATCHPREPARE/src/org/openstreetmap/josm/data/gpx/WayPoint.java	(working copy)
@@ -20,12 +20,46 @@
 	public Color speedLineColor;
 	public boolean drawLine;
 	public int dir;
+	public Color dop_color; // to remove
 
 	public WayPoint(LatLon ll) {
 		latlon = ll;
 		eastNorth = Main.proj.latlon2eastNorth(ll);
 	}
+	
+	public void complete() {
+		float hdop = 0;
+		//if (attr.containsKey("hdop"))
+		try {hdop = Float.parseFloat(attr.get("hdop").toString());} catch(Exception e){}
 
+		if(hdop==0) dop_color = null;
+		else {
+			dop_color = dcolors[dcolors.length-1];
+			for(int i = 0; i < dilution_steps.length; i++) {
+				if(hdop <= dilution_steps[i] ) {
+					dop_color = dcolors[i];
+					break;
+				}
+			}
+		}
+	}
+	
+	public static Color[] dcolors = {
+		Color.WHITE,
+		Color.CYAN,
+		Color.BLUE,
+		Color.GREEN,
+		Color.YELLOW,
+		new Color(191,127,0),	// dark orange,
+		Color.MAGENTA,
+		Color.RED,				// dark red
+		new Color(127,0,0),
+		Color.DARK_GRAY
+	};
+	public static int[] dilution_steps = {
+		1,2,3,4,5,6,7,8,9,10
+	};
+
 	@Override
 	public String toString() {
 		return "WayPoint (" + (attr.containsKey("name") ? attr.get("name") + ", " :"") + latlon.toString() + ", " + attr + ")";
@@ -34,12 +68,14 @@
 	/**
 	 * Convert the time stamp of the waypoint into seconds from the epoch
 	 */
+	public final static SimpleDateFormat GPXTIMEFMT = 
+		new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); // ignore timezone
+	
 	public void setTime() {
 		if (! attr.containsKey("time")) {
 			return;
 		}
-		SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // ignore timezone
-		Date d = f.parse(attr.get("time").toString(), new ParsePosition(0));
+		Date d = GPXTIMEFMT.parse(attr.get("time").toString(), new ParsePosition(0));
 		if (d != null /* parsing ok */) {
 			time = d.getTime() / 1000.0; /* ms => seconds */
 		}
