Index: trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 5394)
+++ trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 5395)
@@ -34,4 +34,6 @@
     public File storageFile;
     public boolean fromServer;
+
+    public String creator;
 
     public final Collection<GpxTrack> tracks = new LinkedList<GpxTrack>();
Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 5394)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 5395)
@@ -446,5 +446,5 @@
         int maxLineLength;
         boolean lines;
-        if (this.isLocalFile) {
+        if (!this.data.fromServer) {
             maxLineLength = Main.pref.getInteger("draw.rawgps.max-line-length.local", spec, -1);
             lines = Main.pref.getBoolean("draw.rawgps.lines.local", spec, true);
Index: trunk/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 5394)
+++ trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 5395)
@@ -5,4 +5,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.Utils.equal;
 
 import java.io.IOException;
@@ -37,9 +38,10 @@
     // TODO: implement GPX 1.0 parsing
 
+    private String version;
     /**
      * The resulting gpx data
      */
     public GpxData data;
-    private enum State { init, metadata, wpt, rte, trk, ext, author, link, trkseg, copyright}
+    private enum State { init, gpx, metadata, wpt, rte, trk, ext, author, link, trkseg, copyright}
     private InputSource inputSource;
 
@@ -87,4 +89,13 @@
             switch(currentState) {
             case init:
+                states.push(currentState);
+                currentState = State.gpx;
+                currentData.creator = atts.getValue("creator");
+                version = atts.getValue("version");
+                if (!equal(version, "1.0") && !equal(version, "1.1")) {
+                    version = "1.1";
+                }
+                System.err.println("Version: "+version);
+            case gpx:
                 if (qName.equals("metadata")) {
                     states.push(currentState);
@@ -110,4 +121,21 @@
                 }
                 break;
+            case metadata:
+                if (qName.equals("author")) {
+                    states.push(currentState);
+                    currentState = State.author;
+                } else if (qName.equals("extensions")) {
+                    states.push(currentState);
+                    currentState = State.ext;
+                } else if (qName.equals("copyright")) {
+                    states.push(currentState);
+                    currentState = State.copyright;
+                    currentData.attr.put(GpxData.META_COPYRIGHT_AUTHOR, atts.getValue("author"));
+                } else if (qName.equals("link")) {
+                    states.push(currentState);
+                    currentState = State.link;
+                    currentLink = new GpxLink(atts.getValue("href"));
+                }
+                break;
             case author:
                 if (qName.equals("link")) {
@@ -131,21 +159,4 @@
                     states.push(currentState);
                     currentState = State.ext;
-                }
-                break;
-            case metadata:
-                if (qName.equals("author")) {
-                    states.push(currentState);
-                    currentState = State.author;
-                } else if (qName.equals("extensions")) {
-                    states.push(currentState);
-                    currentState = State.ext;
-                } else if (qName.equals("copyright")) {
-                    states.push(currentState);
-                    currentState = State.copyright;
-                    currentData.attr.put(GpxData.META_COPYRIGHT_AUTHOR, atts.getValue("author"));
-                } else if (qName.equals("link")) {
-                    states.push(currentState);
-                    currentState = State.link;
-                    currentLink = new GpxLink(atts.getValue("href"));
                 }
                 break;
@@ -323,4 +334,7 @@
                     currentState = states.pop();
                 }
+                break;
+            case gpx:
+                currentState = states.pop();
                 break;
             default:
