]> git.openstreetmap.org Git - rails.git/blob - public/javascripts/site.js
Try and make message and comment notifications more idiot proof.
[rails.git] / public / javascripts / site.js
1 function updatelinks(lon,lat,zoom,layers) {
2   var decimals = Math.pow(10, Math.floor(zoom/3));
3   var node;
4
5   lat = Math.round(lat * decimals) / decimals;
6   lon = Math.round(lon * decimals) / decimals;
7
8   node = document.getElementById("permalinkanchor");
9   if (node) {
10     var args = getArgs(node.href);
11     args["lat"] = lat;
12     args["lon"] = lon;
13     args["zoom"] = zoom;
14     if (layers) {
15       args["layers"] = layers;
16     }
17     node.href = setArgs(node.href, args);
18   }
19
20   node = document.getElementById("viewanchor");
21   if (node) {
22     var args = getArgs(node.href);
23     args["lat"] = lat;
24     args["lon"] = lon;
25     args["zoom"] = zoom;
26     if (layers) {
27       args["layers"] = layers;
28     }
29     node.href = setArgs(node.href, args);
30   }
31
32   node = document.getElementById("exportanchor");
33   if (node) {
34     var args = getArgs(node.href);
35     args["lat"] = lat;
36     args["lon"] = lon;
37     args["zoom"] = zoom;
38     if (layers) {
39       args["layers"] = layers;
40     }
41     node.href = setArgs(node.href, args);
42   }
43
44   node = document.getElementById("editanchor");
45   if (node) {
46     if (zoom >= 11) {
47       var args = new Object();
48       args.lat = lat;
49       args.lon = lon;
50       args.zoom = zoom;
51       node.href = setArgs("/edit", args);
52       node.style.fontStyle = 'normal';
53     } else {
54       node.href = 'javascript:alert("zoom in to edit map");';
55       node.style.fontStyle = 'italic';
56     }
57   }
58 }
59
60 function getArgs(url) {
61   var args = new Object();
62   var querystart = url.indexOf("?");
63
64   if (querystart >= 0) {
65      var querystring = url.substring(querystart + 1);
66      var queryitems = querystring.split("&");
67
68      for (var i = 0; i < queryitems.length; i++) {
69         if (match = queryitems[i].match(/^(.*)=(.*)$/)) {
70            args[unescape(match[1])] = unescape(match[2]);
71         } else {
72            args[unescape(queryitems[i])] = null
73         }
74      }
75   }
76
77   return args;
78 }
79
80 function setArgs(url, args) {
81    var queryitems = new Array();
82
83    for (arg in args)
84    {
85       if (args[arg] == null) {
86          queryitems.push(escape(arg));
87       } else {
88          queryitems.push(escape(arg) + "=" + escape(args[arg]));
89       }
90    }
91
92    return url.replace(/\?.*$/, "") + "?" + queryitems.join("&");
93 }
94
95 function getStyle(el, property) {
96   var style;
97
98   if (el.currentStyle) {
99     style = el.currentStyle[property];
100   } else if( window.getComputedStyle ) {
101     style = document.defaultView.getComputedStyle(el,null).getPropertyValue(property);
102   } else {
103     style = el.style[property];
104   }
105
106   return style;
107 }