Add Google Map of voters
[selectricity-live] / vendor / plugins / ym4r_gm / javascript / ym4r-gm.js
diff --git a/vendor/plugins/ym4r_gm/javascript/ym4r-gm.js b/vendor/plugins/ym4r_gm/javascript/ym4r-gm.js
new file mode 100644 (file)
index 0000000..1c768df
--- /dev/null
@@ -0,0 +1,117 @@
+// JS helper functions for YM4R\r
+\r
+function addInfoWindowToMarker(marker,info,options){\r
+       GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(info,options);});\r
+       return marker;\r
+}\r
+\r
+function addInfoWindowTabsToMarker(marker,info,options){\r
+     GEvent.addListener(marker, "click", function() {marker.openInfoWindowTabsHtml(info,options);});\r
+     return marker;\r
+}\r
+\r
+function addPropertiesToLayer(layer,getTile,copyright,opacity,isPng){\r
+    layer.getTileUrl = getTile;\r
+    layer.getCopyright = copyright;\r
+    layer.getOpacity = opacity;\r
+    layer.isPng = isPng;\r
+    return layer;\r
+}\r
+\r
+function addOptionsToIcon(icon,options){\r
+    for(var k in options){\r
+       icon[k] = options[k];\r
+    }\r
+    return icon;\r
+}\r
+\r
+function addCodeToFunction(func,code){\r
+    if(func == undefined)\r
+       return code;\r
+    else{\r
+       return function(){\r
+           func();\r
+           code();\r
+       }\r
+    }\r
+}\r
+\r
+function addGeocodingToMarker(marker,address){\r
+    marker.orig_initialize = marker.initialize;\r
+    orig_redraw = marker.redraw;\r
+    marker.redraw = function(force){}; //empty the redraw method so no error when called by addOverlay.\r
+    marker.initialize = function(map){\r
+       new GClientGeocoder().getLatLng(address,\r
+                                       function(latlng){\r
+           if(latlng){\r
+               marker.redraw = orig_redraw;\r
+               marker.orig_initialize(map); //init before setting point\r
+               marker.setPoint(latlng);\r
+           }//do nothing\r
+       });\r
+    };\r
+    return marker;\r
+}\r
+\r
+\r
+\r
+GMap2.prototype.centerAndZoomOnMarkers = function(markers) {\r
+     var bounds = new GLatLngBounds(markers[0].getPoint(),\r
+                                   markers[0].getPoint());\r
+     for (var i=1, len = markers.length ; i<len; i++) {\r
+        bounds.extend(markers[i].getPoint());\r
+     }\r
+     \r
+     this.centerAndZoomOnBounds(bounds);\r
+ } \r
+\r
+GMap2.prototype.centerAndZoomOnPoints = function(points) {\r
+     var bounds = new GLatLngBounds(points[0],\r
+                                   points[0]);\r
+     for (var i=1, len = points.length ; i<len; i++) {\r
+        bounds.extend(points[i]);\r
+     }\r
+     \r
+     this.centerAndZoomOnBounds(bounds);\r
+ } \r
+\r
+GMap2.prototype.centerAndZoomOnBounds = function(bounds) {\r
+    var center = bounds.getCenter();\r
+    this.setCenter(center, this.getBoundsZoomLevel(bounds));\r
+} \r
+\r
+//For full screen mode\r
+function setWindowDims(elem) {\r
+    if (window.innerWidth){\r
+       elem.style.height = (window.innerHeight) + 'px;';\r
+       elem.style.width = (window.innerWidth) + 'px;';\r
+    }else if (document.body.clientWidth){\r
+       elem.style.width = (document.body.clientWidth) + 'px';\r
+       elem.style.height = (document.body.clientHeight) + 'px';\r
+    }\r
+}\r
+\r
+ManagedMarker = function(markers,minZoom,maxZoom) {\r
+    this.markers = markers;\r
+    this.minZoom = minZoom;\r
+    this.maxZoom = maxZoom;\r
+}\r
+\r
+//Add the markers and refresh\r
+function addMarkersToManager(manager,managedMarkers){\r
+    for(var i = 0, length = managedMarkers.length; i < length;i++) {\r
+       mm = managedMarkers[i];\r
+       manager.addMarkers(mm.markers,mm.minZoom,mm.maxZoom);\r
+    }\r
+    manager.refresh();\r
+    return manager;\r
+}\r
+\r
+\r
+var INVISIBLE = new GLatLng(0,0); //almost always invisible\r
+\r
+if(self.Event && Event.observe){\r
+    Event.observe(window, 'unload', GUnload);\r
+}else{\r
+    window.onunload = GUnload;\r
+}\r

Benjamin Mako Hill || Want to submit a patch?