]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index.js
Restore the duplicate search form in the header
[rails.git] / app / assets / javascripts / index.js
index d7a14c31209c98f26f32d7ae7cabb05969b231b7..55e612f17668f6e3da055b2fdcf003b3a03c9285 100644 (file)
@@ -150,7 +150,8 @@ $(document).ready(function () {
       map.getLayersCode(),
       map._object);
 
-    $.cookie("_osm_location", cookieContent(map), { expires: expiry });
+    $.removeCookie("_osm_location");
+    $.cookie("_osm_location", cookieContent(map), { expires: expiry, path: "/" });
   });
 
   if ($.cookie('_osm_welcome') == 'hide') {
@@ -227,6 +228,9 @@ $(document).ready(function () {
     };
 
     page.load = function() {
+      if (!("autofocus" in document.createElement("input"))) {
+        $("#sidebar .search_form input[name=query]").focus();
+      }
       return map.getState();
     };
 
@@ -250,14 +254,24 @@ $(document).ready(function () {
 
     page.pushstate = page.popstate = function(path, id) {
       OSM.loadSidebarContent(path, function() {
-        page.load(path, id);
+        addObject(type, id);
       });
     };
 
     page.load = function(path, id) {
-      map.addObject({type: type, id: parseInt(id)});
+      addObject(type, id, true);
     };
 
+    function addObject(type, id, center) {
+      var bounds = map.addObject({type: type, id: parseInt(id)}, function(bounds) {
+        if (!window.location.hash && bounds.isValid()) {
+          OSM.router.moveListenerOff();
+          map.once('moveend', OSM.router.moveListenerOn);
+          if (center || !map.getBounds().contains(bounds)) map.fitBounds(bounds);
+        }
+      });
+    }
+
     page.unload = function() {
       map.removeObject();
     };