Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 1339)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 1340)
@@ -55,4 +55,5 @@
     protected Color textColor;
     protected int currentDashed = 0;
+    protected Color currentDashedColor;
     protected int currentWidth = 0;
     protected Stroke currentStroke = null;
@@ -247,4 +248,5 @@
         int realWidth = 0; //the real width of the element in meters
         int dashed = 0;
+        Color dashedColor = null;
         Node lastN;
 
@@ -255,4 +257,5 @@
             realWidth = l.realWidth;
             dashed = l.dashed;
+            dashedColor = l.dashedColor;
         }
         if(selected)
@@ -279,5 +282,5 @@
                         {
                             drawSeg(lastN, n, s.color != null  && !w.selected ? s.color : color,
-                            false, s.getWidth(width), s.dashed);
+                            false, s.getWidth(width), s.dashed, s.dashedColor);
                         }
                         lastN = n;
@@ -295,5 +298,5 @@
             if(lastN != null)
                 drawSeg(lastN, n, color,
-                    showOnlyHeadArrowOnly ? !it.hasNext() : showDirection, width, dashed);
+                    showOnlyHeadArrowOnly ? !it.hasNext() : showDirection, width, dashed, dashedColor);
             lastN = n;
         }
@@ -312,5 +315,5 @@
                         {
                             drawSeg(lastN, n, s.color != null && !w.selected ? s.color : color,
-                            false, s.getWidth(width), s.dashed);
+                            false, s.getWidth(width), s.dashed, s.dashedColor);
                         }
                         lastN = n;
@@ -1084,8 +1087,8 @@
     }
 
-    private void drawSeg(Node n1, Node n2, Color col, boolean showDirection, int width, int dashed) {
+    private void drawSeg(Node n1, Node n2, Color col, boolean showDirection, int width, int dashed, Color dashedColor) {
         profilerSegments++;
-        if (col != currentColor || width != currentWidth || dashed != currentDashed) {
-            displaySegments(col, width, dashed);
+        if (col != currentColor || width != currentWidth || dashed != currentDashed || dashedColor != currentDashedColor) {
+            displaySegments(col, width, dashed, dashedColor);
         }
         Point p1 = nc.getPoint(n1.eastNorth);
@@ -1108,8 +1111,8 @@
 
     protected void displaySegments() {
-        displaySegments(null, 0, 0);
-    }
-
-    protected void displaySegments(Color newColor, int newWidth, int newDash) {
+        displaySegments(null, 0, 0, null);
+    }
+
+    protected void displaySegments(Color newColor, int newWidth, int newDash, Color newDashedColor) {
         if (currentPath != null) {
             Graphics2D g2d = (Graphics2D)g;
@@ -1122,4 +1125,16 @@
             }
             g2d.draw(currentPath);
+
+            if(currentDashedColor != null) {
+                g2d.setColor(currentDashedColor);
+                if (currentStroke == null && useStrokes > dist) {
+                    if (currentDashed != 0)
+                        g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,0,new float[] {currentDashed},currentDashed));
+                    else
+                        g2d.setStroke(new BasicStroke(currentWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
+                }
+                g2d.draw(currentPath);
+            }
+            
             if(useStrokes > dist)
                 g2d.setStroke(new BasicStroke(1));
@@ -1129,4 +1144,5 @@
             currentWidth = newWidth;
             currentDashed = newDash;
+            currentDashedColor = newDashedColor;
             currentStroke = null;
         }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyleHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyleHandler.java	(revision 1339)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyleHandler.java	(revision 1340)
@@ -110,5 +110,7 @@
                     }                
                 }
-            } else if(atts.getQName(count).equals("priority"))
+            } else if (atts.getQName(count).equals("dashedcolour"))
+                line.dashedColor=convertColor(atts.getValue(count));
+            else if(atts.getQName(count).equals("priority"))
                 line.priority = Integer.parseInt(atts.getValue(count));
             else if(atts.getQName(count).equals("mode"))
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 1339)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 1340)
@@ -10,4 +10,5 @@
     public Color color;
     public int dashed;
+    public Color dashedColor;
 
     public boolean over;
@@ -22,4 +23,5 @@
         this.color = s.color;
         this.dashed = s.dashed;
+        this.dashedColor = s.dashedColor;
         this.over = s.over;
         this.widthMode = s.widthMode;
@@ -35,4 +37,5 @@
         this.color = s.color;
         this.dashed = s.dashed;
+        this.dashedColor = s.dashedColor;
         this.over = s.over;
         this.widthMode = s.widthMode;
@@ -55,4 +58,5 @@
         realWidth = 0;
         dashed = 0;
+        dashedColor = null;
         priority = 0;
         color = null;
