]> dev.renevier.net Git - syj.git/blobdiff - public/js/syj.js
better mobile support
[syj.git] / public / js / syj.js
index 6c4fabe79a206c7193ce0072684b3e8572314a62..78d7606afe2276634e0db2b6227bb40cf591f22e 100644 (file)
@@ -1,4 +1,4 @@
-/*  This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+/*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
     and is published under the AGPL license. */
 
 // avoid openlayers alerts
@@ -100,7 +100,12 @@ var SYJDataUi = (function() {
             if (!infotoggler) {
                 infotoggler = new Toggler('path-infos-content');
                 $("path-infos-toggler").insert({bottom: infotoggler.element});
-                $("path-infos-anchor").observe('click', function(evt) {
+                var anchor = $("path-infos-anchor");
+                var parent = anchor.up('.menu-item');
+                if (parent) {
+                    anchor = parent;
+                }
+                anchor.observe('click', function(evt) {
                     evt.stop();
                     infotoggler.toggle(evt);
                 });
@@ -427,7 +432,7 @@ var SYJView = {
 
         if (aPos.hasOwnProperty('lon') && aPos.hasOwnProperty('lat') && aPos.hasOwnProperty('zoom')) {
             center = new OpenLayers.LonLat(parseFloat(aPos.lon), parseFloat(aPos.lat)).transform(WGS84, Mercator);
-            zoom = parseInt(aPos.zoom);
+            zoom = parseInt(aPos.zoom, 10);
         } else if (aPos.hasOwnProperty('minlon') && aPos.hasOwnProperty('minlat')
                     && aPos.hasOwnProperty('maxlon') && aPos.hasOwnProperty('maxlat')) {
             extent = new OpenLayers.Bounds(aPos.minlon, aPos.minlat, aPos.maxlon, aPos.maxlat)
@@ -441,6 +446,13 @@ var SYJView = {
         } else {
             this.map.setCenter(center, zoom);
         }
+        this.resizeMap();
+    },
+
+    resizeMap: function() {
+        var map = $('map');
+        map.style.width = map.offsetWidth.toString() + 'px';
+        map.style.height = map.offsetHeight.toString() + 'px';
     },
 
     observer: function(evt) {
@@ -611,15 +623,6 @@ var SYJView = {
             case 400:
             case 404:
                 message = SyjStrings.requestError;
-                if (transport.responseJSON) {
-                    switch (transport.responseJSON.message) {
-                        case "uniquepath":
-                            message = SyjStrings.uniquePathError;
-                        break;
-                        default:
-                        break;
-                    }
-                }
             break;
             case 403:
                 message = "";
@@ -660,7 +663,12 @@ var SYJModalClass = Class.create({
             closeMethods: ["onescapekey", "onouterclick", "onbutton"]
         });
 
-        $(this.type + "_control_anchor").observe("click", function(evt) {
+        var anchor = $(this.type + '_control_anchor');
+        var parent = anchor.up('.menu-item');
+        if (parent) {
+            anchor = parent;
+        }
+        anchor.observe("click", function(evt) {
             this.modalbox.show();
             evt.stop();
         }.bindAsEventListener(this));
@@ -693,7 +701,7 @@ var SYJModalClass = Class.create({
                 input = this.area.select('input[type="text"]')[0];
                 (function () {
                     input.activate();
-                }).defer();
+                }.defer());
             } else {
                 this.modalbox.hide();
             }
@@ -1281,3 +1289,7 @@ window.onbeforeunload = function() {
         return undefined;
     }
 };
+
+window.onresize = function() {
+    SYJView.resizeMap();
+};