Index: applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoAction.java
===================================================================
--- applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoAction.java	(revision 30373)
+++ applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/PointInfoAction.java	(revision 30466)
@@ -103,5 +103,5 @@
                 @Override
                 protected void realRun() throws SAXException {
-                    infoSync(pos, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+                    infoSync(pos, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, true));
                 }
 
Index: applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruianModule.java
===================================================================
--- applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruianModule.java	(revision 30373)
+++ applications/editors/josm/plugins/pointInfo/src/org/openstreetmap/josm/plugins/pointinfo/ruianModule.java	(revision 30466)
@@ -37,4 +37,7 @@
 import java.io.InputStream;
 import java.io.ByteArrayInputStream;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
 
 import javax.json.Json;
@@ -74,4 +77,5 @@
     private String  m_kraj;
     private String  m_psc;
+    private float   m_vzdalenost;
 
     public addrPlaces () {
@@ -99,4 +103,5 @@
       m_kraj = "";
       m_psc = "";
+      m_vzdalenost = 0;
     }
 
@@ -177,4 +182,8 @@
     }
 
+    public void setVzdalenost (float v) {
+      m_vzdalenost = v;
+    }
+
     public long getRuianID () {
       return m_ruian_id;
@@ -253,4 +262,120 @@
     }
 
+    public String getVzdalenost () {
+      DecimalFormat df = new DecimalFormat("0.00");
+      return df.format(m_vzdalenost) + "m";
+    }
+
+}
+
+class objectWithoutGeometry {
+    private long     m_ruian_id;
+    private int      m_podlazi;
+    private int      m_byty;
+    private String   m_zpusob_vyuziti;
+    private String   m_zpusob_vyuziti_kod;
+    private String   m_zpusob_vyuziti_key;
+    private String   m_zpusob_vyuziti_val;
+    private String   m_dokonceni;
+    private String   m_plati_od;
+    private float    m_vzdalenost;
+
+    public objectWithoutGeometry () {
+      init();
+    }
+
+    private void init () {
+      m_ruian_id = 0;
+      m_podlazi = 0;
+      m_byty = 0;
+      m_zpusob_vyuziti = "";
+      m_zpusob_vyuziti_kod = "";
+      m_zpusob_vyuziti_key = "";
+      m_zpusob_vyuziti_val = "";
+      m_dokonceni = "";
+      m_plati_od = "";
+      m_vzdalenost = 0;
+    }
+
+    public void setRuianID (long v) {
+      m_ruian_id = v;
+    }
+
+    public void setPodlazi (int v) {
+      m_podlazi = v;
+    }
+
+    public void setByty (int v) {
+      m_byty = v;
+    }
+
+    public void setZpusobVyuziti (String v) {
+      m_zpusob_vyuziti = v;
+    }
+
+    public void setZpusobVyuzitiKod (String v) {
+      m_zpusob_vyuziti_kod = v;
+    }
+
+    public void setZpusobVyuzitiKey (String v) {
+      m_zpusob_vyuziti_key = v;
+    }
+
+    public void setZpusobVyuzitiVal (String v) {
+      m_zpusob_vyuziti_val = v;
+    }
+
+    public void setDokonceni (String v) {
+      m_dokonceni = v;
+    }
+
+    public void setPlatiOd (String v) {
+      m_plati_od = v;
+    }
+
+    public void setVzdalenost (float v) {
+      m_vzdalenost = v;
+    }
+
+    public long getRuianID () {
+      return m_ruian_id;
+    }
+
+    public int getPodlazi () {
+      return m_podlazi;
+    }
+
+    public int getByty () {
+      return m_byty;
+    }
+
+    public String getZpusobVyuziti () {
+      return m_zpusob_vyuziti;
+    }
+
+    public String getZpusobVyuzitiKod () {
+      return m_zpusob_vyuziti_kod;
+    }
+
+    public String getZpusobVyuzitiKey () {
+      return m_zpusob_vyuziti_key;
+    }
+
+    public String getZpusobVyuzitiVal () {
+      return m_zpusob_vyuziti_val;
+    }
+
+    public String getDokonceni () {
+      return m_dokonceni;
+    }
+
+    public String getPlatiOd () {
+      return m_plati_od;
+    }
+
+    public String getVzdalenost () {
+      DecimalFormat df = new DecimalFormat("0.00");
+      return df.format(m_vzdalenost) + "m";
+    }
 }
 
@@ -275,4 +400,6 @@
     private String   m_objekt_plati_od;
 
+    private ArrayList <objectWithoutGeometry> m_so_bez_geometrie;
+
     private ArrayList <addrPlaces> m_adresni_mista;
 
@@ -323,4 +450,5 @@
       m_objekt_plati_od = "";
 
+      m_so_bez_geometrie = new ArrayList<objectWithoutGeometry> ();
       m_adresni_mista = new ArrayList<addrPlaces> ();
 
@@ -446,4 +574,79 @@
 // =========================================================================
       try {
+        JsonArray arr = obj.getJsonArray("so_bez_geometrie");
+
+        for(int i = 0; i < arr.size(); i++)
+        {
+          JsonObject soBezGeom = arr.getJsonObject(i);
+          objectWithoutGeometry so = new objectWithoutGeometry();
+
+          try {
+            so.setRuianID(Long.parseLong(soBezGeom.getString("ruian_id")));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.ruian_id: " + e.getMessage());
+          }
+
+          try {
+            so.setPodlazi(Integer.parseInt(soBezGeom.getString("pocet_podlazi")));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.pocet_podlazi: " + e.getMessage());
+          }
+
+          try {
+            so.setByty(Integer.parseInt(soBezGeom.getString("pocet_bytu")));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.pocet_bytu: " + e.getMessage());
+          }
+
+          try {
+            so.setZpusobVyuziti(soBezGeom.getString("zpusob_vyuziti"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.zpusob_vyuziti: " + e.getMessage());
+          }
+
+          try {
+            so.setZpusobVyuzitiKod(soBezGeom.getString("zpusob_vyuziti_kod"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.zpusob_vyuziti_kod: " + e.getMessage());
+          }
+
+          try {
+            so.setZpusobVyuzitiKey(soBezGeom.getString("zpusob_vyuziti_key"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.zpusob_vyuziti_key: " + e.getMessage());
+          }
+
+          try {
+            so.setZpusobVyuzitiVal(soBezGeom.getString("zpusob_vyuziti_val"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.zpusob_vyuziti_val: " + e.getMessage());
+          }
+
+          try {
+            so.setDokonceni(soBezGeom.getString("dokonceni"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.dokonceni: " + e.getMessage());
+          }
+
+          try {
+            so.setPlatiOd(soBezGeom.getString("plati_od"));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.plati_od: " + e.getMessage());
+          }
+
+          try {
+            so.setVzdalenost(Float.parseFloat(soBezGeom.getString("vzdalenost")));
+          } catch (Exception e) {
+            System.out.println("so_bez_geometrie.vzdalenost: " + e.getMessage());
+          }
+
+          m_so_bez_geometrie.add(so);
+        }
+      } catch (Exception e) {
+        System.out.println("so_bez_geometrie: " + e.getMessage());
+      }
+
+// =========================================================================
+      try {
         JsonArray arr = obj.getJsonArray("adresni_mista");
 
@@ -569,4 +772,10 @@
           } catch (Exception e) {
             System.out.println("adresni_mista.psc: " + e.getMessage());
+          }
+
+          try {
+            am.setVzdalenost(Float.parseFloat(adresniMisto.getString("vzdalenost")));
+          } catch (Exception e) {
+            System.out.println("adresni_mista.vzdalenost: " + e.getMessage());
           }
 
@@ -879,4 +1088,6 @@
           r.append("<tr><td bgcolor=#e5e5ff>");
           if (!m_adresni_mista.get(i).getUlice().isEmpty()) {
+            r.append(m_adresni_mista.get(i).getVzdalenost());
+            r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>");
             r.append(m_adresni_mista.get(i).getUlice() + " " + x);
             r.append("<br/><u>" + m_adresni_mista.get(i).getObec() + "</u>");
@@ -887,4 +1098,6 @@
             r.append("&nbsp;&nbsp;<a href=file://tags.create-on-place/address:"+i+">"+ icon_create_addr_ruian +"</a>");
           } else {
+            r.append(m_adresni_mista.get(i).getVzdalenost());
+            r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>");
             r.append(m_adresni_mista.get(i).getCastObce() + " " + x + "&nbsp;");
             if (!m_adresni_mista.get(i).getCastObce().equals(m_adresni_mista.get(i).getObec())) {
@@ -901,4 +1114,25 @@
         r.append("</table><br/>");
       }
+
+      if (m_so_bez_geometrie.size() > 0) {
+        r.append("<i><u>Budovy bez geometrie v okolí</u></i><br/>");
+        r.append("<table>");
+        for (int i=0; i<m_so_bez_geometrie.size(); i++) {
+          r.append("<tr><td bgcolor=#e5e5ff>");
+          r.append(m_so_bez_geometrie.get(i).getVzdalenost());
+          r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>");
+          r.append(m_so_bez_geometrie.get(i).getRuianID());
+          if (m_so_bez_geometrie.get(i).getZpusobVyuziti().length() > 0) {
+            r.append(" - " + m_so_bez_geometrie.get(i).getZpusobVyuziti());
+          }
+          r.append("</td><td valign=\"top\"  bgcolor=#e5e5ff>");
+          r.append("&nbsp;&nbsp;<a href="+ url_stavebni_objekt + m_so_bez_geometrie.get(i).getRuianID() + ">"+ icon_ext_link +"</a> ");
+          r.append("&nbsp;&nbsp;<a href=file://tags.copy/building>"+ icon_copy_tags +"</a></br>");
+          r.append("</td></tr>");
+        }
+        r.append("</table><br/>");
+        r.append("<br/>");
+      }
+
       r.append("<hr/>");
       r.append("<center><i><small>Zdroj: <a href=\"http://www.ruian.cz/\">" + m_source + "</a></small></i></center>");
@@ -1130,5 +1364,5 @@
 
     private String m_text = "";
-    private String URL = "http://josm.poloha.net/pointInfo/v2/index.php";
+    private String URL = "http://josm.poloha.net/pointInfo/v3/index.php";
     protected PointInfoServer server = new PointInfoServer();
 
