[OpenLayers-Commits] r3113 - in tags/openlayers: . release-2.4-rc3 release-2.4-rc3/build release-2.4-rc3/examples release-2.4-rc3/lib release-2.4-rc3/lib/OpenLayers release-2.4-rc3/lib/OpenLayers/Control release-2.4-rc3/lib/OpenLayers/Feature release-2.4-rc3/lib/OpenLayers/Format release-2.4-rc3/lib/OpenLayers/Geometry release-2.4-rc3/lib/OpenLayers/Handler release-2.4-rc3/lib/OpenLayers/Layer release-2.4-rc3/lib/OpenLayers/Layer/WMS release-2.4-rc3/lib/OpenLayers/Marker release-2.4-rc3/lib/OpenLayers/Popup release-2.4-rc3/lib/OpenLayers/Renderer release-2.4-rc3/lib/OpenLayers/Tile release-2.4-rc3/tests release-2.4-rc3/tests/Format release-2.4-rc3/tests/Layer release-2.4-rc3/tests/Marker

commits at openlayers.org commits at openlayers.org
Wed May 2 10:20:51 EDT 2007


Author: crschmidt
Date: 2007-05-02 10:20:28 -0400 (Wed, 02 May 2007)
New Revision: 3113

Added:
   tags/openlayers/release-2.4-rc3/
   tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html
   tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt
   tags/openlayers/release-2.4-rc3/examples/panel.html
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Markers.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Vector.js
   tags/openlayers/release-2.4-rc3/tests/Format/test_GML.html
   tags/openlayers/release-2.4-rc3/tests/Layer/test_Vector.html
   tags/openlayers/release-2.4-rc3/tests/Marker/test_Box.html
   tags/openlayers/release-2.4-rc3/tests/list-tests.html
Removed:
   tags/openlayers/release-2.4-rc3/examples/panel.html
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Markers.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Vector.js
   tags/openlayers/release-2.4-rc3/repository-license.txt
   tags/openlayers/release-2.4-rc3/tests/Layer/test_Vector.html
   tags/openlayers/release-2.4-rc3/tests/Marker/test_Box.html
   tags/openlayers/release-2.4-rc3/tests/list-tests.html
Modified:
   tags/openlayers/release-2.4-rc3/build/license.txt
   tags/openlayers/release-2.4-rc3/lib/OpenLayers.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GeoRSS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/KML.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/WFS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/WKT.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Collection.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Curve.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/LineString.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/LinearRing.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiLineString.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiPoint.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiPolygon.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Point.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Polygon.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Rectangle.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Surface.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Box.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Drag.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Feature.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Keyboard.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/MouseWheel.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Path.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Point.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Polygon.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Icon.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Boxes.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Canvas.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/EventPane.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/FixedZoomLevels.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/GML.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/GeoRSS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Google.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Grid.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/HTTPRequest.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Image.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/KaMap.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/MapServer.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/MultiMap.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/TMS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Text.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/VirtualEarth.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WFS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WMS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WMS/Untiled.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WorldWind.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Yahoo.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Map.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Marker.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Marker/Box.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup/Anchored.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup/AnchoredBubble.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/Elements.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/SVG.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/VML.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/SingleFile.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile/Image.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile/WFS.js
   tags/openlayers/release-2.4-rc3/lib/OpenLayers/Util.js
Log:
Tag OpenLayers 2.4-rc3.


Copied: tags/openlayers/release-2.4-rc3 (from rev 3111, branches/openlayers/2.4)

Modified: tags/openlayers/release-2.4-rc3/build/license.txt
===================================================================
--- branches/openlayers/2.4/build/license.txt	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/build/license.txt	2007-05-02 14:20:28 UTC (rev 3113)
@@ -2,8 +2,8 @@
 
   OpenLayers.js -- OpenLayers Map Viewer Library
 
-  Copyright 2005-2006 MetaCarta, Inc., released under a modified BSD license.
-  Please see http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+  Copyright 2005-2006 MetaCarta, Inc., released under the BSD license.
+  Please see http://svn.openlayers.org/trunk/openlayers/release-license.txt
   for the full text of the license.
 
   Includes compressed code under the following licenses:

Copied: tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html (from rev 3112, branches/openlayers/2.4/examples/outOfRangeMarkers.html)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,54 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <style type="text/css">
+        #map {
+            width: 650px;
+            height: 550px;
+            border: 1px solid black;
+        }
+    </style>
+    <script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAKsGpqSOKkB-Ih2JopAmNbBTv_3ENzieGiNBMV02NiUJp8KZGIRTQWhul8K0wiNOHDxOF0-W2RmFoRg'></script>
+    <script src="../lib/OpenLayers.js"></script>
+    <script type="text/javascript">
+        <!--
+        function init(){
+            
+            // Variables
+            var map = new OpenLayers.Map('map', { controls: [] });
+            var lon = 35;
+            var lat = -6;
+            var zoom = 6;
+            var map, layer;
+
+            // Map Controls
+            map.addControl(new OpenLayers.Control.PanZoomBar());
+            map.addControl(new OpenLayers.Control.MouseToolbar());
+            map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
+            map.addControl(new OpenLayers.Control.MousePosition());
+
+
+            // Map Layers
+            var GMapsSat = new OpenLayers.Layer.Google( "Google Satellite" , {type: G_SATELLITE_MAP, 'maxZoomLevel':18} );
+            var GMapsHybr = new OpenLayers.Layer.Google( "Google Hybrid" , {type: G_HYBRID_TYPE, 'maxZoomLevel':18} );
+            var GMapsStreets = new OpenLayers.Layer.Google( "Google Steets" , {type: G_NORMAL_MAP, 'maxZoomLevel':18} );
+            var MarkersLayer2 = new OpenLayers.Layer.Text( "Region info", {location: "outOfRangeMarkers.txt", maxResolution: 0.02});
+
+            // Add Layers
+            map.addLayers([GMapsHybr, GMapsStreets, GMapsSat, MarkersLayer2]);
+            
+
+            // Visual
+            map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
+            if (!map.getCenter()) map.zoomToMaxExtent();
+        }
+        // -->
+    </script>
+ </head>
+
+
+ <body onload="init()">
+
+    <div id="map"></div>
+
+  </body>
+</html>

Copied: tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt (from rev 3112, branches/openlayers/2.4/examples/outOfRangeMarkers.txt)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,3 @@
+point	title	description	icon
+-4.14,37.90	 	Kilimanjaro Beskrivning	http://www.villageografica.com/Africa-Webmap/img/marker-blue.png
+-3.24,34.35	 	Shinyanga Beskrivning	http://www.villageografica.com/Africa-Webmap/img/marker-blue.png

Deleted: tags/openlayers/release-2.4-rc3/examples/panel.html
===================================================================
--- branches/openlayers/2.4/examples/panel.html	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/examples/panel.html	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,90 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <style type="text/css">
-        #map {
-            width: 800px;
-            height: 475px;
-            border: 1px solid black;
-        }
-        .olControlPanel div { 
-          display:block;
-          width:  24px;
-          height: 24px;
-          margin: 5px;
-          background-color:red;
-        }
-        
-        .olControlPanel .olControlMouseDefaultsItemActive { 
-          background-color: orange;
-          background-image: url("../../oterral/ButtonBar/vector/img/PanEnable.png");
-        }
-        .olControlPanel .olControlMouseDefaultsItemInactive { 
-          background-color: orange;
-          background-image: url("../../oterral/ButtonBar/vector/img/PanDisable.png");
-        }
-        .olControlPanel .olControlDrawFeatureItemActive { 
-          width:  22px;  
-          height: 22px;
-          background-image: url("../../oterral/ButtonBar/vector/img/EditLineEnable.png");
-        }
-        .olControlPanel .olControlDrawFeatureItemInactive { 
-          width:  22px;  
-          height: 22px;
-          background-image: url("../../oterral/ButtonBar/vector/img/EditLineDisable.png");
-        }
-        .olControlPanel .olControlZoomBoxItemInactive { 
-          width:  22px;  
-          height: 22px;
-          background-color: blue;
-        }
-        .olControlPanel .olControlZoomBoxItemActive { 
-          width:  22px;  
-          height: 22px;
-          background-color: orange;
-        }
-        .olControlPanel .olControlZoomToMaxExtentItemInactive { 
-          width:  18px;  
-          height: 18px;
-          background-image: url("../img/zoom-world-mini.png");
-        }
-        
-    </style>
-    <script src="../lib/OpenLayers.js"></script>
-    <script src="../lib/Firebug/debug.js"></script>
-    <script type="text/javascript">
-        <!--
-        var lon = 5;
-        var lat = 40;
-        var zoom = 5;
-        var map, layer;
-
-        function init(){
-            map = new OpenLayers.Map( 'map', { controls: [] } );
-            layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
-                    "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
-            map.addLayer(layer);
-
-            vlayer = new OpenLayers.Layer.Vector( "Editable" );
-            map.addLayer(vlayer);
-            
-            
-            zb = new OpenLayers.Control.ZoomBox();
-            panel = new OpenLayers.Control.Panel({defaultControl: zb});
-            panel.addControls([
-                new OpenLayers.Control.MouseDefaults(),
-                zb,
-                new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path),
-                new OpenLayers.Control.ZoomToMaxExtent()
-            ]);
-            map.addControl(panel);
-
-            map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
-        }
-        // -->
-    </script>
-  </head>
-  <body onload="init()">
-    <div id="panel"></div>
-    <div id="map"></div>
-  </body>
-</html>

Copied: tags/openlayers/release-2.4-rc3/examples/panel.html (from rev 3112, branches/openlayers/2.4/examples/panel.html)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/panel.html	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/panel.html	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,90 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <style type="text/css">
+        #map {
+            width: 800px;
+            height: 475px;
+            border: 1px solid black;
+        }
+        .olControlPanel div { 
+          display:block;
+          width:  24px;
+          height: 24px;
+          margin: 5px;
+          background-color:red;
+        }
+        
+        .olControlPanel .olControlMouseDefaultsItemActive { 
+          background-color: orange;
+          background-image: url("../../oterral/ButtonBar/vector/img/PanEnable.png");
+        }
+        .olControlPanel .olControlMouseDefaultsItemInactive { 
+          background-color: orange;
+          background-image: url("../../oterral/ButtonBar/vector/img/PanDisable.png");
+        }
+        .olControlPanel .olControlDrawFeatureItemActive { 
+          width:  22px;  
+          height: 22px;
+          background-image: url("../../oterral/ButtonBar/vector/img/EditLineEnable.png");
+        }
+        .olControlPanel .olControlDrawFeatureItemInactive { 
+          width:  22px;  
+          height: 22px;
+          background-image: url("../../oterral/ButtonBar/vector/img/EditLineDisable.png");
+        }
+        .olControlPanel .olControlZoomBoxItemInactive { 
+          width:  22px;  
+          height: 22px;
+          background-color: blue;
+        }
+        .olControlPanel .olControlZoomBoxItemActive { 
+          width:  22px;  
+          height: 22px;
+          background-color: orange;
+        }
+        .olControlPanel .olControlZoomToMaxExtentItemInactive { 
+          width:  18px;  
+          height: 18px;
+          background-image: url("../img/zoom-world-mini.png");
+        }
+        
+    </style>
+    <script src="../lib/OpenLayers.js"></script>
+    <script src="../lib/Firebug/debug.js"></script>
+    <script type="text/javascript">
+        <!--
+        var lon = 5;
+        var lat = 40;
+        var zoom = 5;
+        var map, layer;
+
+        function init(){
+            map = new OpenLayers.Map( 'map', { controls: [] } );
+            layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
+                    "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
+            map.addLayer(layer);
+
+            vlayer = new OpenLayers.Layer.Vector( "Editable" );
+            map.addLayer(vlayer);
+            
+            
+            zb = new OpenLayers.Control.ZoomBox();
+            var panel = new OpenLayers.Control.Panel({defaultControl: zb});
+            panel.addControls([
+                new OpenLayers.Control.MouseDefaults(),
+                zb,
+                new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path),
+                new OpenLayers.Control.ZoomToMaxExtent()
+            ]);
+            map.addControl(panel);
+
+            map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
+        }
+        // -->
+    </script>
+  </head>
+  <body onload="init()">
+    <div id="panel"></div>
+    <div id="map"></div>
+  </body>
+</html>

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Ajax.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/BaseTypes.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ArgParser.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/DragPan.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/DrawFeature.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/EditingToolbar.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/KeyboardDefaults.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/LayerSwitcher.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /** 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MouseDefaults.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MousePosition.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MouseToolbar.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/NavToolbar.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Navigation.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/OverviewMap.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,608 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
- * for the full text of the license. */
-/**
- * @fileoverview Locator Map Control
- * @author Tim Schaub
- */
-
-/** 
- * @class
- * 
- * @requires OpenLayers/Control.js
- * @requires OpenLayers/BaseTypes.js
- * @requires OpenLayers/Events.js
- */
-OpenLayers.Control.OverviewMap = OpenLayers.Class.create();
-
-OpenLayers.Control.OverviewMap.prototype = 
-  OpenLayers.Class.inherit( OpenLayers.Control, {
-
-    /** For div.id
-     * @type String */
-    id:  "OverviewMap",
-
-    /** @type DOMElement */
-    element: null,
-    
-    /**
-     * The overvew map itself.
-     * @type OpenLayers.Map
-     */
-    ovmap: null,
-        
-    /**
-     * The overvew map size in pixels.  Note that this is the size of the map
-     * itself - the element that contains the map (default class name
-     * olControlOverviewMapElement) may have padding or other style attributes
-     * added via CSS.
-     * @type OpenLayers.Size
-     */
-    size: new OpenLayers.Size(180, 90),
-
-    /**
-     * Ordered list of layers in the overview map.  If none are sent at
-     * construction, then the default below is used.
-     * 
-     * @type Array(OpenLayers.Layer)
-     */
-    layers: null,
-
-    /**
-     * The ratio of the overview map resolution to the main map resolution
-     * at which to zoom farther out on the overview map.
-     * @type Float
-     */
-    minRatio: 8,
-
-    /**
-     * The ratio of the overview map resolution to the main map resolution
-     * at which to zoom farther in on the overview map.
-     * @type Float
-     */
-    maxRatio: 32,
-
-    /**
-     * An object containing any non-default properties to be sent to the
-     * overview map's map constructor.  These should include any non-default
-     * options that the main map was constructed with.
-     * @type: Object
-     */
-    mapOptions: null,
-
-    /**
-     * @constructor
-     * @param {Object} options Hashtable of options to set on the overview map
-     */
-    initialize: function(options) {
-        this.layers = new Array();
-        OpenLayers.Control.prototype.initialize.apply(this, [options]);
-    },
-    
-    /**
-     * 
-     */
-    destroy: function() {
-        if (!this.mapDiv) { // we've already been destroyed
-            return;
-        }
-        this.mapDiv.removeChild(this.extentRectangle);
-        this.extentRectangle = null;
-        this.rectEvents.destroy();
-        this.rectEvents = null;
-
-        this.ovmap.destroy();
-        this.ovmap = null;
-        
-        this.element.removeChild(this.mapDiv);
-        this.mapDiv = null;
-        this.mapDivEvents.destroy(); 
-        this.mapDivEvents = null;
-
-        this.div.removeChild(this.element);
-        this.element = null;
-        this.elementEvents.destroy();
-        this.elementEvents = null;
-
-        if (this.maximizeDiv) {
-            OpenLayers.Event.stopObservingElement(this.maximizeDiv);
-            this.div.removeChild(this.maximizeDiv);
-            this.maximizeDiv = null;
-        }
-        
-        if (this.minimizeDiv) {
-            OpenLayers.Event.stopObservingElement(this.minimizeDiv);
-            this.div.removeChild(this.minimizeDiv);
-            this.minimizeDiv = null;
-        }
-        
-        this.map.events.unregister('moveend', this, this.update);
-        this.map.events.unregister("changebaselayer", this, 
-                                    this.baseLayerDraw);
-
-        OpenLayers.Control.prototype.destroy.apply(this, arguments);    
-    },
-
-    /**
-     * @type DOMElement
-     */    
-    draw: function() {
-        OpenLayers.Control.prototype.draw.apply(this, arguments);
-        if(!(this.layers.length > 0)) {
-            if (this.map.baseLayer) {
-                var layer = this.map.baseLayer.clone();
-                this.layers = [layer];
-            } else {
-                this.map.events.register("changebaselayer", this, this.baseLayerDraw);
-                return this.div;
-            }
-        }
-
-        // create overview map DOM elements
-        this.element = document.createElement('div');
-        this.element.className = this.displayClass + 'Element';
-        this.element.style.display = 'none';
-
-        this.mapDiv = document.createElement('div');
-        this.mapDiv.style.width = this.size.w + 'px';
-        this.mapDiv.style.height = this.size.h + 'px';
-        this.mapDiv.style.position = 'relative';
-        this.mapDiv.style.overflow = 'hidden';
-        this.mapDiv.id = OpenLayers.Util.createUniqueID('overviewMap');
-        
-        this.extentRectangle = document.createElement('div');
-        this.extentRectangle.style.position = 'absolute';
-        this.extentRectangle.style.zIndex = 1000;  //HACK
-        this.extentRectangle.style.overflow = 'hidden';
-        this.extentRectangle.style.backgroundImage = 'url(' +
-                                        OpenLayers.Util.getImagesLocation() +
-                                        'blank.gif)';
-        this.extentRectangle.className = this.displayClass+'ExtentRectangle';
-        this.mapDiv.appendChild(this.extentRectangle);
-                
-        this.element.appendChild(this.mapDiv);  
-
-        this.div.appendChild(this.element);
-
-        this.map.events.register('moveend', this, this.update);
-        
-        // Set up events.  The image div recenters the map on click.
-        // The extent rectangle can be dragged to recenter the map.
-        // If the mousedown happened elsewhere, then mousemove and mouseup
-        // should slip through.
-        this.elementEvents = new OpenLayers.Events(this, this.element);
-        this.elementEvents.register('mousedown', this, function(e) {
-            OpenLayers.Event.stop(e);
-        });
-        this.elementEvents.register('click', this, function(e) {
-            OpenLayers.Event.stop(e);
-        });
-        this.elementEvents.register('dblclick', this, function(e) {
-            OpenLayers.Event.stop(e);
-        });
-        this.rectEvents = new OpenLayers.Events(this, this.extentRectangle);
-        this.rectEvents.register('mouseout', this, this.rectMouseOut);
-        this.rectEvents.register('mousedown', this, this.rectMouseDown);
-        this.rectEvents.register('mousemove', this, this.rectMouseMove);
-        this.rectEvents.register('mouseup', this, this.rectMouseUp);
-        this.rectEvents.register('click', this, function(e) {
-            OpenLayers.Event.stop(e);
-        });
-        this.rectEvents.register('dblclick', this, this.rectDblClick );
-        this.mapDivEvents = new OpenLayers.Events(this, this.mapDiv);
-        this.mapDivEvents.register('click', this, this.mapDivClick);
-
-        // Optionally add min/max buttons if the control will go in the
-        // map viewport.
-        if(!this.outsideViewport) {
-            this.div.className = this.displayClass + 'Container';
-            var imgLocation = OpenLayers.Util.getImagesLocation();
-            // maximize button div
-            var img = imgLocation + 'layer-switcher-maximize.png';
-            this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
-                                        this.displayClass + 'MaximizeButton', 
-                                        null, 
-                                        new OpenLayers.Size(18,18), 
-                                        img, 
-                                        'absolute');
-            this.maximizeDiv.style.display = 'none';
-            this.maximizeDiv.className = this.displayClass + 'MaximizeButton';
-            OpenLayers.Event.observe(this.maximizeDiv, 
-                          'click', 
-                          this.maximizeControl.bindAsEventListener(this));
-            OpenLayers.Event.observe(this.maximizeDiv,
-                          'dblclick',
-                          function(e) {
-                              OpenLayers.Event.stop(e);
-                          });
-            this.div.appendChild(this.maximizeDiv);
-    
-            // minimize button div
-            var img = imgLocation + 'layer-switcher-minimize.png';
-            this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
-                                        'OpenLayers_Control_minimizeDiv', 
-                                        null, 
-                                        new OpenLayers.Size(18,18), 
-                                        img, 
-                                        'absolute');
-            this.minimizeDiv.style.display = 'none';
-            this.minimizeDiv.className = this.displayClass + 'MinimizeButton';
-            OpenLayers.Event.observe(this.minimizeDiv, 
-                          'click', 
-                          this.minimizeControl.bindAsEventListener(this));
-            OpenLayers.Event.observe(this.minimizeDiv,
-                          'dblclick',
-                          function(e) {
-                              OpenLayers.Event.stop(e);
-                          });
-            this.div.appendChild(this.minimizeDiv);
-            
-            this.minimizeControl();
-        } else {
-            // show the overview map
-            this.element.style.display = '';
-        }
-        if(this.map.getExtent()) {
-            this.update();
-        }
-        return this.div;
-    },
-    
-    baseLayerDraw: function() {
-        this.draw();
-        this.map.events.unregister("changebaselayer", this, this.baseLayerDraw);
-    },
-
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    rectMouseOut: function (evt) {
-        if(this.rectDragStart != null) {
-            if(this.performedRectDrag) {
-                this.rectMouseMove(evt);
-                var rectPxBounds = this.getRectPxBounds(); 
-                // if we're off of the overview map, update the main map
-                // otherwise, keep moving the rect
-                if((rectPxBounds.top <= 0) || (rectPxBounds.left <= 0) || 
-                   (rectPxBounds.bottom >= this.size.h - this.hComp) || 
-                   (rectPxBounds.right >= this.size.w - this.wComp)) {
-                    this.updateMapToRect();
-                } else {
-                    return; 
-                }
-            }
-            document.onselectstart = null;
-            this.rectDragStart = null;
-        }
-    },
-
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    rectMouseDown: function (evt) {
-        if(!OpenLayers.Event.isLeftClick(evt)) return;
-        this.rectDragStart = evt.xy.clone();
-        this.performedRectDrag = false;
-        OpenLayers.Event.stop(evt);
-    },
-
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    rectMouseMove: function(evt) {
-        if(this.rectDragStart != null) {
-            var deltaX = this.rectDragStart.x - evt.xy.x;
-            var deltaY = this.rectDragStart.y - evt.xy.y;
-            var rectPxBounds = this.getRectPxBounds();
-            var rectTop = rectPxBounds.top;
-            var rectLeft = rectPxBounds.left;
-            var rectHeight = Math.abs(rectPxBounds.getHeight());
-            var rectWidth = rectPxBounds.getWidth();
-            // don't allow dragging off of parent element
-            var newTop = Math.max(0, (rectTop - deltaY));
-            newTop = Math.min(newTop,
-                              this.ovmap.size.h - this.hComp - rectHeight);
-            var newLeft = Math.max(0, (rectLeft - deltaX));
-            newLeft = Math.min(newLeft,
-                               this.ovmap.size.w - this.wComp - rectWidth);
-            this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
-                                                       newTop + rectHeight,
-                                                       newLeft + rectWidth,
-                                                       newTop));
-            this.rectDragStart = evt.xy.clone();
-            this.performedRectDrag = true;
-            OpenLayers.Event.stop(evt);
-        }
-    },
-
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    rectMouseUp: function(evt) {
-        if(!OpenLayers.Event.isLeftClick(evt)) return;
-        if(this.performedRectDrag) {
-            this.updateMapToRect();
-            OpenLayers.Event.stop(evt);
-        }        
-        document.onselectstart = null;
-        this.rectDragStart = null;
-    },
-    
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    rectDblClick: function(evt) {
-        this.performedRectDrag = false;
-        OpenLayers.Event.stop(evt);
-        this.updateOverview();
-    },
-
-    /**
-    * @param {OpenLayers.Event} evt
-    */
-    mapDivClick: function(evt) {
-        var pxBounds = this.getRectPxBounds();
-        var pxCenter = pxBounds.getCenterPixel();
-        var deltaX = evt.xy.x - pxCenter.x;
-        var deltaY = evt.xy.y - pxCenter.y;
-        var top = pxBounds.top;
-        var left = pxBounds.left;
-        var height = Math.abs(pxBounds.getHeight());
-        var width = pxBounds.getWidth();
-        var newTop = Math.max(0, (top + deltaY));
-        newTop = Math.min(newTop, this.ovmap.size.h - height);
-        var newLeft = Math.max(0, (left + deltaX));
-        newLeft = Math.min(newLeft, this.ovmap.size.w - width);
-        this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
-                                                   newTop + height,
-                                                   newLeft + width,
-                                                   newTop));
-        this.updateMapToRect();
-        OpenLayers.Event.stop(evt);
-    },
-
-    /** Set up the labels and divs for the control
-     * 
-     * @param {OpenLayers.Event} e
-     */
-    maximizeControl: function(e) {
-        this.element.style.display = '';
-        this.showToggle(false);
-        if (e != null) {
-            OpenLayers.Event.stop(e);                                            
-        }
-    },
-
-    /** Hide all the contents of the control, shrink the size, 
-     *   add the maximize icon
-     * 
-     * @param {OpenLayers.Event} e
-     */
-    minimizeControl: function(e) {
-        this.element.style.display = 'none';
-        this.showToggle(true);
-        if (e != null) {
-            OpenLayers.Event.stop(e);                                            
-        }
-    },
-
-    /** Hide/Show all LayerSwitcher controls depending on whether we are
-     *   minimized or not
-     * 
-     * @private
-     * 
-     * @param {Boolean} minimize
-     */
-    showToggle: function(minimize) {
-        this.maximizeDiv.style.display = minimize ? '' : 'none';
-        this.minimizeDiv.style.display = minimize ? 'none' : '';
-    },
-
-    /**
-     * Update the overview map after layers move.
-     */
-    update: function() {
-        if(this.ovmap == null) {
-            this.createMap();
-        }
-        
-        if(!this.isSuitableOverview()) {
-            this.updateOverview();
-        }
-        
-        // update extent rectangle
-        this.updateRectToMap();
-    },
-    
-    /**
-     * Determines if the overview map is suitable given the extent and
-     * resolution of the main map.
-     */
-    isSuitableOverview: function() {
-        var mapExtent = this.map.getExtent();
-        var maxExtent = this.map.maxExtent;
-        var testExtent = new OpenLayers.Bounds(
-                                Math.max(mapExtent.left, maxExtent.left),
-                                Math.max(mapExtent.bottom, maxExtent.bottom),
-                                Math.min(mapExtent.right, maxExtent.right),
-                                Math.min(mapExtent.top, maxExtent.top));        
-        var resRatio = this.ovmap.getResolution() / this.map.getResolution();
-        return ((resRatio > this.minRatio) &&
-                (resRatio <= this.maxRatio) &&
-                (this.ovmap.getExtent().containsBounds(testExtent)));
-    },
-    
-    updateOverview: function() {
-        var mapRes = this.map.getResolution();
-        var targetRes = this.ovmap.getResolution();
-        var resRatio = targetRes / mapRes;
-        if(resRatio > this.maxRatio) {
-            // zoom in overview map
-            targetRes = this.minRatio * mapRes;            
-        } else if(resRatio <= this.minRatio) {
-            // zoom out overview map
-            targetRes = this.maxRatio * mapRes;
-        }
-        this.ovmap.setCenter(this.map.center,
-                            this.ovmap.getZoomForResolution(targetRes));
-        this.updateRectToMap();
-    },
-    
-    createMap: function() {
-        // create the overview map
-        var options = OpenLayers.Util.extend(
-                        {controls: [], maxResolution: 'auto'}, this.mapOptions);
-        this.ovmap = new OpenLayers.Map(this.mapDiv.id, options);
-        this.ovmap.addLayers(this.layers);
-        this.ovmap.zoomToMaxExtent();
-        // check extent rectangle border width
-        this.wComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
-                                               'border-left-width')) +
-                     parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
-                                               'border-right-width'));
-        this.wComp = (this.wComp) ? this.wComp : 2;
-        this.hComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
-                                               'border-top-width')) +
-                     parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
-                                               'border-bottom-width'));
-        this.hComp = (this.hComp) ? this.hComp : 2;
-    },
-        
-    /**
-     * Updates the extent rectangle position and size to match the map extent
-     */
-    updateRectToMap: function() {
-        // The base layer for overview map needs to be in the same projection
-        // as the base layer for the main map.  This should be made more robust.
-        if(this.map.units != 'degrees') {
-            if(this.ovmap.getProjection() && (this.map.getProjection() != this.ovmap.getProjection())) {
-                alert('The overview map only works when it is in the same projection as the main map');
-            }
-        }
-        var pxBounds = this.getRectBoundsFromMapBounds(this.map.getExtent());
-        if (pxBounds) {
-          this.setRectPxBounds(pxBounds);
-        }
-    },
-    
-    /**
-     * Updates the map extent to match the extent rectangle position and size
-     */
-    updateMapToRect: function() {
-        var pxBounds = this.getRectPxBounds();
-        var lonLatBounds = this.getMapBoundsFromRectBounds(pxBounds);
-        this.map.setCenter(lonLatBounds.getCenterLonLat(), this.map.zoom);
-    },
-    
-    /**
-     * Get extent rectangle pixel bounds
-     * @returns An OpenLayers.Bounds wich is the extent rectangle's pixel
-     *          bounds (relative to the parent element)
-     */
-    getRectPxBounds: function() {
-        var top = parseInt(this.extentRectangle.style.top);
-        var left = parseInt(this.extentRectangle.style.left);
-        var height = parseInt(this.extentRectangle.style.height);
-        var width = parseInt(this.extentRectangle.style.width);
-        return new OpenLayers.Bounds(left, top + height, left + width, top);
-    },
-
-    /**
-     * Set extent rectangle pixel bounds.  
-     * @param {OpenLayers.Bounds} pxBounds
-     */
-    setRectPxBounds: function(pxBounds) {
-        var top = Math.max(pxBounds.top, 0);
-        var left = Math.max(pxBounds.left, 0);
-        var bottom = Math.min(pxBounds.top + Math.abs(pxBounds.getHeight()),
-                              this.ovmap.size.h - this.hComp);
-        var right = Math.min(pxBounds.left + pxBounds.getWidth(),
-                             this.ovmap.size.w - this.wComp);
-        this.extentRectangle.style.top = parseInt(top) + 'px';
-        this.extentRectangle.style.left = parseInt(left) + 'px';
-        this.extentRectangle.style.height = parseInt(bottom - top)+ 'px';
-        this.extentRectangle.style.width = parseInt(right - left) + 'px';
-    },
-
-    /**
-    * @param {OpenLayers.Bounds} lonLatBounds
-    *
-    * @returns An OpenLayers.Bounds which is the passed-in map lon/lat extent
-    *          translated into pixel bounds for the overview map
-    * @type OpenLayers.Bounds
-    */
-    getRectBoundsFromMapBounds: function(lonLatBounds) {
-        var leftBottomLonLat = new OpenLayers.LonLat(lonLatBounds.left,
-                                                     lonLatBounds.bottom);
-        var rightTopLonLat = new OpenLayers.LonLat(lonLatBounds.right,
-                                                   lonLatBounds.top);
-        var leftBottomPx = this.getOverviewPxFromLonLat(leftBottomLonLat);
-        var rightTopPx = this.getOverviewPxFromLonLat(rightTopLonLat);
-        var bounds = null;
-        if (leftBottomPx && rightTopPx) {
-            bounds = new OpenLayers.Bounds(leftBottomPx.x, leftBottomPx.y,
-                                           rightTopPx.x, rightTopPx.y);
-        }
-        return bounds;
-    },
-
-    /**
-    * @param {OpenLayers.Bounds} pxBounds
-    *
-    * @returns An OpenLayers.Bounds which is the passed-in overview rect bounds
-    *          translated into lon/lat bounds for the overview map
-    * @type OpenLayers.Bounds
-    */
-    getMapBoundsFromRectBounds: function(pxBounds) {
-        var leftBottomPx = new OpenLayers.Pixel(pxBounds.left,
-                                                pxBounds.bottom);
-        var rightTopPx = new OpenLayers.Pixel(pxBounds.right,
-                                              pxBounds.top);
-        var leftBottomLonLat = this.getLonLatFromOverviewPx(leftBottomPx);
-        var rightTopLonLat = this.getLonLatFromOverviewPx(rightTopPx);
-        return new OpenLayers.Bounds(leftBottomLonLat.lon, leftBottomLonLat.lat,
-                                     rightTopLonLat.lon, rightTopLonLat.lat);
-    },
-
-    /**
-    * @param {OpenLayers.Pixel} overviewMapPx
-    *
-    * @returns An OpenLayers.LonLat which is the passed-in overview map
-    *          OpenLayers.Pixel, translated into lon/lat by the overview map
-    * @type OpenLayers.LonLat
-    */
-    getLonLatFromOverviewPx: function(overviewMapPx) {
-        var size = this.ovmap.size;
-        var res  = this.ovmap.getResolution();
-        var center = this.ovmap.getExtent().getCenterLonLat();
-    
-        var delta_x = overviewMapPx.x - (size.w / 2);
-        var delta_y = overviewMapPx.y - (size.h / 2);
-        
-        return new OpenLayers.LonLat(center.lon + delta_x * res ,
-                                     center.lat - delta_y * res); 
-    },
-
-    /**
-    * @param {OpenLayers.LonLat} lonlat
-    *
-    * @returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, 
-    *          translated into overview map pixels
-    * @type OpenLayers.Pixel
-    */
-    getOverviewPxFromLonLat: function(lonlat) {
-        var res  = this.ovmap.getResolution();
-        var extent = this.ovmap.getExtent();
-        var px = null;
-        if (extent) {
-            px = new OpenLayers.Pixel(
-                        Math.round(1/res * (lonlat.lon - extent.left)),
-                        Math.round(1/res * (extent.top - lonlat.lat)));
-        } 
-        return px;
-    },
-
-    /** @final @type String */
-    CLASS_NAME: 'OpenLayers.Control.OverviewMap'
-    
-});

Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Control/OverviewMap.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,608 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
+ * for the full text of the license. */
+/**
+ * @fileoverview Locator Map Control
+ * @author Tim Schaub
+ */
+
+/** 
+ * @class
+ * 
+ * @requires OpenLayers/Control.js
+ * @requires OpenLayers/BaseTypes.js
+ * @requires OpenLayers/Events.js
+ */
+OpenLayers.Control.OverviewMap = OpenLayers.Class.create();
+
+OpenLayers.Control.OverviewMap.prototype = 
+  OpenLayers.Class.inherit( OpenLayers.Control, {
+
+    /** For div.id
+     * @type String */
+    id:  "OverviewMap",
+
+    /** @type DOMElement */
+    element: null,
+    
+    /**
+     * The overvew map itself.
+     * @type OpenLayers.Map
+     */
+    ovmap: null,
+        
+    /**
+     * The overvew map size in pixels.  Note that this is the size of the map
+     * itself - the element that contains the map (default class name
+     * olControlOverviewMapElement) may have padding or other style attributes
+     * added via CSS.
+     * @type OpenLayers.Size
+     */
+    size: new OpenLayers.Size(180, 90),
+
+    /**
+     * Ordered list of layers in the overview map.  If none are sent at
+     * construction, then the default below is used.
+     * 
+     * @type Array(OpenLayers.Layer)
+     */
+    layers: null,
+
+    /**
+     * The ratio of the overview map resolution to the main map resolution
+     * at which to zoom farther out on the overview map.
+     * @type Float
+     */
+    minRatio: 8,
+
+    /**
+     * The ratio of the overview map resolution to the main map resolution
+     * at which to zoom farther in on the overview map.
+     * @type Float
+     */
+    maxRatio: 32,
+
+    /**
+     * An object containing any non-default properties to be sent to the
+     * overview map's map constructor.  These should include any non-default
+     * options that the main map was constructed with.
+     * @type: Object
+     */
+    mapOptions: null,
+
+    /**
+     * @constructor
+     * @param {Object} options Hashtable of options to set on the overview map
+     */
+    initialize: function(options) {
+        this.layers = new Array();
+        OpenLayers.Control.prototype.initialize.apply(this, [options]);
+    },
+    
+    /**
+     * 
+     */
+    destroy: function() {
+        if (!this.mapDiv) { // we've already been destroyed
+            return;
+        }
+        this.mapDiv.removeChild(this.extentRectangle);
+        this.extentRectangle = null;
+        this.rectEvents.destroy();
+        this.rectEvents = null;
+
+        this.ovmap.destroy();
+        this.ovmap = null;
+        
+        this.element.removeChild(this.mapDiv);
+        this.mapDiv = null;
+        this.mapDivEvents.destroy(); 
+        this.mapDivEvents = null;
+
+        this.div.removeChild(this.element);
+        this.element = null;
+        this.elementEvents.destroy();
+        this.elementEvents = null;
+
+        if (this.maximizeDiv) {
+            OpenLayers.Event.stopObservingElement(this.maximizeDiv);
+            this.div.removeChild(this.maximizeDiv);
+            this.maximizeDiv = null;
+        }
+        
+        if (this.minimizeDiv) {
+            OpenLayers.Event.stopObservingElement(this.minimizeDiv);
+            this.div.removeChild(this.minimizeDiv);
+            this.minimizeDiv = null;
+        }
+        
+        this.map.events.unregister('moveend', this, this.update);
+        this.map.events.unregister("changebaselayer", this, 
+                                    this.baseLayerDraw);
+
+        OpenLayers.Control.prototype.destroy.apply(this, arguments);    
+    },
+
+    /**
+     * @type DOMElement
+     */    
+    draw: function() {
+        OpenLayers.Control.prototype.draw.apply(this, arguments);
+        if(!(this.layers.length > 0)) {
+            if (this.map.baseLayer) {
+                var layer = this.map.baseLayer.clone();
+                this.layers = [layer];
+            } else {
+                this.map.events.register("changebaselayer", this, this.baseLayerDraw);
+                return this.div;
+            }
+        }
+
+        // create overview map DOM elements
+        this.element = document.createElement('div');
+        this.element.className = this.displayClass + 'Element';
+        this.element.style.display = 'none';
+
+        this.mapDiv = document.createElement('div');
+        this.mapDiv.style.width = this.size.w + 'px';
+        this.mapDiv.style.height = this.size.h + 'px';
+        this.mapDiv.style.position = 'relative';
+        this.mapDiv.style.overflow = 'hidden';
+        this.mapDiv.id = OpenLayers.Util.createUniqueID('overviewMap');
+        
+        this.extentRectangle = document.createElement('div');
+        this.extentRectangle.style.position = 'absolute';
+        this.extentRectangle.style.zIndex = 1000;  //HACK
+        this.extentRectangle.style.overflow = 'hidden';
+        this.extentRectangle.style.backgroundImage = 'url(' +
+                                        OpenLayers.Util.getImagesLocation() +
+                                        'blank.gif)';
+        this.extentRectangle.className = this.displayClass+'ExtentRectangle';
+        this.mapDiv.appendChild(this.extentRectangle);
+                
+        this.element.appendChild(this.mapDiv);  
+
+        this.div.appendChild(this.element);
+
+        this.map.events.register('moveend', this, this.update);
+        
+        // Set up events.  The image div recenters the map on click.
+        // The extent rectangle can be dragged to recenter the map.
+        // If the mousedown happened elsewhere, then mousemove and mouseup
+        // should slip through.
+        this.elementEvents = new OpenLayers.Events(this, this.element);
+        this.elementEvents.register('mousedown', this, function(e) {
+            OpenLayers.Event.stop(e);
+        });
+        this.elementEvents.register('click', this, function(e) {
+            OpenLayers.Event.stop(e);
+        });
+        this.elementEvents.register('dblclick', this, function(e) {
+            OpenLayers.Event.stop(e);
+        });
+        this.rectEvents = new OpenLayers.Events(this, this.extentRectangle);
+        this.rectEvents.register('mouseout', this, this.rectMouseOut);
+        this.rectEvents.register('mousedown', this, this.rectMouseDown);
+        this.rectEvents.register('mousemove', this, this.rectMouseMove);
+        this.rectEvents.register('mouseup', this, this.rectMouseUp);
+        this.rectEvents.register('click', this, function(e) {
+            OpenLayers.Event.stop(e);
+        });
+        this.rectEvents.register('dblclick', this, this.rectDblClick );
+        this.mapDivEvents = new OpenLayers.Events(this, this.mapDiv);
+        this.mapDivEvents.register('click', this, this.mapDivClick);
+
+        // Optionally add min/max buttons if the control will go in the
+        // map viewport.
+        if(!this.outsideViewport) {
+            this.div.className = this.displayClass + 'Container';
+            var imgLocation = OpenLayers.Util.getImagesLocation();
+            // maximize button div
+            var img = imgLocation + 'layer-switcher-maximize.png';
+            this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
+                                        this.displayClass + 'MaximizeButton', 
+                                        null, 
+                                        new OpenLayers.Size(18,18), 
+                                        img, 
+                                        'absolute');
+            this.maximizeDiv.style.display = 'none';
+            this.maximizeDiv.className = this.displayClass + 'MaximizeButton';
+            OpenLayers.Event.observe(this.maximizeDiv, 
+                          'click', 
+                          this.maximizeControl.bindAsEventListener(this));
+            OpenLayers.Event.observe(this.maximizeDiv,
+                          'dblclick',
+                          function(e) {
+                              OpenLayers.Event.stop(e);
+                          });
+            this.div.appendChild(this.maximizeDiv);
+    
+            // minimize button div
+            var img = imgLocation + 'layer-switcher-minimize.png';
+            this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
+                                        'OpenLayers_Control_minimizeDiv', 
+                                        null, 
+                                        new OpenLayers.Size(18,18), 
+                                        img, 
+                                        'absolute');
+            this.minimizeDiv.style.display = 'none';
+            this.minimizeDiv.className = this.displayClass + 'MinimizeButton';
+            OpenLayers.Event.observe(this.minimizeDiv, 
+                          'click', 
+                          this.minimizeControl.bindAsEventListener(this));
+            OpenLayers.Event.observe(this.minimizeDiv,
+                          'dblclick',
+                          function(e) {
+                              OpenLayers.Event.stop(e);
+                          });
+            this.div.appendChild(this.minimizeDiv);
+            
+            this.minimizeControl();
+        } else {
+            // show the overview map
+            this.element.style.display = '';
+        }
+        if(this.map.getExtent()) {
+            this.update();
+        }
+        return this.div;
+    },
+    
+    baseLayerDraw: function() {
+        this.draw();
+        this.map.events.unregister("changebaselayer", this, this.baseLayerDraw);
+    },
+
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    rectMouseOut: function (evt) {
+        if(this.rectDragStart != null) {
+            if(this.performedRectDrag) {
+                this.rectMouseMove(evt);
+                var rectPxBounds = this.getRectPxBounds(); 
+                // if we're off of the overview map, update the main map
+                // otherwise, keep moving the rect
+                if((rectPxBounds.top <= 0) || (rectPxBounds.left <= 0) || 
+                   (rectPxBounds.bottom >= this.size.h - this.hComp) || 
+                   (rectPxBounds.right >= this.size.w - this.wComp)) {
+                    this.updateMapToRect();
+                } else {
+                    return; 
+                }
+            }
+            document.onselectstart = null;
+            this.rectDragStart = null;
+        }
+    },
+
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    rectMouseDown: function (evt) {
+        if(!OpenLayers.Event.isLeftClick(evt)) return;
+        this.rectDragStart = evt.xy.clone();
+        this.performedRectDrag = false;
+        OpenLayers.Event.stop(evt);
+    },
+
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    rectMouseMove: function(evt) {
+        if(this.rectDragStart != null) {
+            var deltaX = this.rectDragStart.x - evt.xy.x;
+            var deltaY = this.rectDragStart.y - evt.xy.y;
+            var rectPxBounds = this.getRectPxBounds();
+            var rectTop = rectPxBounds.top;
+            var rectLeft = rectPxBounds.left;
+            var rectHeight = Math.abs(rectPxBounds.getHeight());
+            var rectWidth = rectPxBounds.getWidth();
+            // don't allow dragging off of parent element
+            var newTop = Math.max(0, (rectTop - deltaY));
+            newTop = Math.min(newTop,
+                              this.ovmap.size.h - this.hComp - rectHeight);
+            var newLeft = Math.max(0, (rectLeft - deltaX));
+            newLeft = Math.min(newLeft,
+                               this.ovmap.size.w - this.wComp - rectWidth);
+            this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
+                                                       newTop + rectHeight,
+                                                       newLeft + rectWidth,
+                                                       newTop));
+            this.rectDragStart = evt.xy.clone();
+            this.performedRectDrag = true;
+            OpenLayers.Event.stop(evt);
+        }
+    },
+
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    rectMouseUp: function(evt) {
+        if(!OpenLayers.Event.isLeftClick(evt)) return;
+        if(this.performedRectDrag) {
+            this.updateMapToRect();
+            OpenLayers.Event.stop(evt);
+        }        
+        document.onselectstart = null;
+        this.rectDragStart = null;
+    },
+    
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    rectDblClick: function(evt) {
+        this.performedRectDrag = false;
+        OpenLayers.Event.stop(evt);
+        this.updateOverview();
+    },
+
+    /**
+    * @param {OpenLayers.Event} evt
+    */
+    mapDivClick: function(evt) {
+        var pxBounds = this.getRectPxBounds();
+        var pxCenter = pxBounds.getCenterPixel();
+        var deltaX = evt.xy.x - pxCenter.x;
+        var deltaY = evt.xy.y - pxCenter.y;
+        var top = pxBounds.top;
+        var left = pxBounds.left;
+        var height = Math.abs(pxBounds.getHeight());
+        var width = pxBounds.getWidth();
+        var newTop = Math.max(0, (top + deltaY));
+        newTop = Math.min(newTop, this.ovmap.size.h - height);
+        var newLeft = Math.max(0, (left + deltaX));
+        newLeft = Math.min(newLeft, this.ovmap.size.w - width);
+        this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
+                                                   newTop + height,
+                                                   newLeft + width,
+                                                   newTop));
+        this.updateMapToRect();
+        OpenLayers.Event.stop(evt);
+    },
+
+    /** Set up the labels and divs for the control
+     * 
+     * @param {OpenLayers.Event} e
+     */
+    maximizeControl: function(e) {
+        this.element.style.display = '';
+        this.showToggle(false);
+        if (e != null) {
+            OpenLayers.Event.stop(e);                                            
+        }
+    },
+
+    /** Hide all the contents of the control, shrink the size, 
+     *   add the maximize icon
+     * 
+     * @param {OpenLayers.Event} e
+     */
+    minimizeControl: function(e) {
+        this.element.style.display = 'none';
+        this.showToggle(true);
+        if (e != null) {
+            OpenLayers.Event.stop(e);                                            
+        }
+    },
+
+    /** Hide/Show all LayerSwitcher controls depending on whether we are
+     *   minimized or not
+     * 
+     * @private
+     * 
+     * @param {Boolean} minimize
+     */
+    showToggle: function(minimize) {
+        this.maximizeDiv.style.display = minimize ? '' : 'none';
+        this.minimizeDiv.style.display = minimize ? 'none' : '';
+    },
+
+    /**
+     * Update the overview map after layers move.
+     */
+    update: function() {
+        if(this.ovmap == null) {
+            this.createMap();
+        }
+        
+        if(!this.isSuitableOverview()) {
+            this.updateOverview();
+        }
+        
+        // update extent rectangle
+        this.updateRectToMap();
+    },
+    
+    /**
+     * Determines if the overview map is suitable given the extent and
+     * resolution of the main map.
+     */
+    isSuitableOverview: function() {
+        var mapExtent = this.map.getExtent();
+        var maxExtent = this.map.maxExtent;
+        var testExtent = new OpenLayers.Bounds(
+                                Math.max(mapExtent.left, maxExtent.left),
+                                Math.max(mapExtent.bottom, maxExtent.bottom),
+                                Math.min(mapExtent.right, maxExtent.right),
+                                Math.min(mapExtent.top, maxExtent.top));        
+        var resRatio = this.ovmap.getResolution() / this.map.getResolution();
+        return ((resRatio > this.minRatio) &&
+                (resRatio <= this.maxRatio) &&
+                (this.ovmap.getExtent().containsBounds(testExtent)));
+    },
+    
+    updateOverview: function() {
+        var mapRes = this.map.getResolution();
+        var targetRes = this.ovmap.getResolution();
+        var resRatio = targetRes / mapRes;
+        if(resRatio > this.maxRatio) {
+            // zoom in overview map
+            targetRes = this.minRatio * mapRes;            
+        } else if(resRatio <= this.minRatio) {
+            // zoom out overview map
+            targetRes = this.maxRatio * mapRes;
+        }
+        this.ovmap.setCenter(this.map.center,
+                            this.ovmap.getZoomForResolution(targetRes));
+        this.updateRectToMap();
+    },
+    
+    createMap: function() {
+        // create the overview map
+        var options = OpenLayers.Util.extend(
+                        {controls: [], maxResolution: 'auto'}, this.mapOptions);
+        this.ovmap = new OpenLayers.Map(this.mapDiv.id, options);
+        this.ovmap.addLayers(this.layers);
+        this.ovmap.zoomToMaxExtent();
+        // check extent rectangle border width
+        this.wComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+                                               'border-left-width')) +
+                     parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+                                               'border-right-width'));
+        this.wComp = (this.wComp) ? this.wComp : 2;
+        this.hComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+                                               'border-top-width')) +
+                     parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+                                               'border-bottom-width'));
+        this.hComp = (this.hComp) ? this.hComp : 2;
+    },
+        
+    /**
+     * Updates the extent rectangle position and size to match the map extent
+     */
+    updateRectToMap: function() {
+        // The base layer for overview map needs to be in the same projection
+        // as the base layer for the main map.  This should be made more robust.
+        if(this.map.units != 'degrees') {
+            if(this.ovmap.getProjection() && (this.map.getProjection() != this.ovmap.getProjection())) {
+                alert('The overview map only works when it is in the same projection as the main map');
+            }
+        }
+        var pxBounds = this.getRectBoundsFromMapBounds(this.map.getExtent());
+        if (pxBounds) {
+          this.setRectPxBounds(pxBounds);
+        }
+    },
+    
+    /**
+     * Updates the map extent to match the extent rectangle position and size
+     */
+    updateMapToRect: function() {
+        var pxBounds = this.getRectPxBounds();
+        var lonLatBounds = this.getMapBoundsFromRectBounds(pxBounds);
+        this.map.setCenter(lonLatBounds.getCenterLonLat(), this.map.zoom);
+    },
+    
+    /**
+     * Get extent rectangle pixel bounds
+     * @returns An OpenLayers.Bounds wich is the extent rectangle's pixel
+     *          bounds (relative to the parent element)
+     */
+    getRectPxBounds: function() {
+        var top = parseInt(this.extentRectangle.style.top);
+        var left = parseInt(this.extentRectangle.style.left);
+        var height = parseInt(this.extentRectangle.style.height);
+        var width = parseInt(this.extentRectangle.style.width);
+        return new OpenLayers.Bounds(left, top + height, left + width, top);
+    },
+
+    /**
+     * Set extent rectangle pixel bounds.  
+     * @param {OpenLayers.Bounds} pxBounds
+     */
+    setRectPxBounds: function(pxBounds) {
+        var top = Math.max(pxBounds.top, 0);
+        var left = Math.max(pxBounds.left, 0);
+        var bottom = Math.min(pxBounds.top + Math.abs(pxBounds.getHeight()),
+                              this.ovmap.size.h - this.hComp);
+        var right = Math.min(pxBounds.left + pxBounds.getWidth(),
+                             this.ovmap.size.w - this.wComp);
+        this.extentRectangle.style.top = parseInt(top) + 'px';
+        this.extentRectangle.style.left = parseInt(left) + 'px';
+        this.extentRectangle.style.height = parseInt(Math.max(bottom - top, 0))+ 'px';
+        this.extentRectangle.style.width = parseInt(Math.max(right - left, 0)) + 'px';
+    },
+
+    /**
+    * @param {OpenLayers.Bounds} lonLatBounds
+    *
+    * @returns An OpenLayers.Bounds which is the passed-in map lon/lat extent
+    *          translated into pixel bounds for the overview map
+    * @type OpenLayers.Bounds
+    */
+    getRectBoundsFromMapBounds: function(lonLatBounds) {
+        var leftBottomLonLat = new OpenLayers.LonLat(lonLatBounds.left,
+                                                     lonLatBounds.bottom);
+        var rightTopLonLat = new OpenLayers.LonLat(lonLatBounds.right,
+                                                   lonLatBounds.top);
+        var leftBottomPx = this.getOverviewPxFromLonLat(leftBottomLonLat);
+        var rightTopPx = this.getOverviewPxFromLonLat(rightTopLonLat);
+        var bounds = null;
+        if (leftBottomPx && rightTopPx) {
+            bounds = new OpenLayers.Bounds(leftBottomPx.x, leftBottomPx.y,
+                                           rightTopPx.x, rightTopPx.y);
+        }
+        return bounds;
+    },
+
+    /**
+    * @param {OpenLayers.Bounds} pxBounds
+    *
+    * @returns An OpenLayers.Bounds which is the passed-in overview rect bounds
+    *          translated into lon/lat bounds for the overview map
+    * @type OpenLayers.Bounds
+    */
+    getMapBoundsFromRectBounds: function(pxBounds) {
+        var leftBottomPx = new OpenLayers.Pixel(pxBounds.left,
+                                                pxBounds.bottom);
+        var rightTopPx = new OpenLayers.Pixel(pxBounds.right,
+                                              pxBounds.top);
+        var leftBottomLonLat = this.getLonLatFromOverviewPx(leftBottomPx);
+        var rightTopLonLat = this.getLonLatFromOverviewPx(rightTopPx);
+        return new OpenLayers.Bounds(leftBottomLonLat.lon, leftBottomLonLat.lat,
+                                     rightTopLonLat.lon, rightTopLonLat.lat);
+    },
+
+    /**
+    * @param {OpenLayers.Pixel} overviewMapPx
+    *
+    * @returns An OpenLayers.LonLat which is the passed-in overview map
+    *          OpenLayers.Pixel, translated into lon/lat by the overview map
+    * @type OpenLayers.LonLat
+    */
+    getLonLatFromOverviewPx: function(overviewMapPx) {
+        var size = this.ovmap.size;
+        var res  = this.ovmap.getResolution();
+        var center = this.ovmap.getExtent().getCenterLonLat();
+    
+        var delta_x = overviewMapPx.x - (size.w / 2);
+        var delta_y = overviewMapPx.y - (size.h / 2);
+        
+        return new OpenLayers.LonLat(center.lon + delta_x * res ,
+                                     center.lat - delta_y * res); 
+    },
+
+    /**
+    * @param {OpenLayers.LonLat} lonlat
+    *
+    * @returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat, 
+    *          translated into overview map pixels
+    * @type OpenLayers.Pixel
+    */
+    getOverviewPxFromLonLat: function(lonlat) {
+        var res  = this.ovmap.getResolution();
+        var extent = this.ovmap.getExtent();
+        var px = null;
+        if (extent) {
+            px = new OpenLayers.Pixel(
+                        Math.round(1/res * (lonlat.lon - extent.left)),
+                        Math.round(1/res * (extent.top - lonlat.lat)));
+        } 
+        return px;
+    },
+
+    /** @final @type String */
+    CLASS_NAME: 'OpenLayers.Control.OverviewMap'
+    
+});

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/PanZoom.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/PanZoomBar.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Panel.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,161 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
- * for the full text of the license. */
-
-/**
- * @class
- * 
- * @requires OpenLayers/Control.js
- */
-OpenLayers.Control.Panel = OpenLayers.Class.create();
-OpenLayers.Control.Panel.prototype = 
-  OpenLayers.Class.inherit( OpenLayers.Control, {
-    /**
-     * @type Array(OpenLayers.Control)
-     */
-    controls: null,    
-    
-    /** 
-     * The control which is activated when the control is activated (turned 
-     * on), which also happens at instantiation.
-     * @type OpenLayers.Control
-     */
-    defaultControl: null, 
-
-    /**
-     * @constructor
-     * 
-     * @param {DOMElement} element
-     * @param {String} base
-     */
-    initialize: function(element) {
-        OpenLayers.Control.prototype.initialize.apply(this, arguments);
-        this.controls = [];
-    },
-
-    destroy: function() {
-        OpenLayers.Control.prototype.destroy.apply(this, arguments);
-        for(var i = this.controls.length - 1 ; i >= 0; i--) {
-            OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);
-            this.controls[i].panel_div = null;
-        }    
-    },
-
-    activate: function() {
-        if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
-            for(var i = 0; i < this.controls.length; i++) {
-                if (this.controls[i] == this.defaultControl) {
-                    this.controls[i].activate();
-                }
-            }    
-            this.redraw();
-            return true;
-        } else {
-            return false;
-        }
-    },
-    
-    deactivate: function() {
-        if (OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
-            for(var i = 0; i < this.controls.length; i++) {
-                this.controls[i].deactivate();
-            }    
-            this.redraw();
-            return true;
-        } else {
-            return false;
-        }
-    },
-    
-    /**
-     * @type DOMElement
-     */    
-    draw: function() {
-        OpenLayers.Control.prototype.draw.apply(this, arguments);
-        for (var i = 0; i < this.controls.length; i++) {
-            this.map.addControl(this.controls[i]);
-            this.controls[i].deactivate();
-        }
-        this.activate();
-        return this.div;
-    },
-
-    /**
-     * @private
-     */
-    redraw: function() {
-        this.div.innerHTML = "";
-        if (this.active) {
-            for (var i = 0; i < this.controls.length; i++) {
-                var element = this.controls[i].panel_div;
-                if (this.controls[i].active) {
-                    element.className = this.controls[i].displayClass + "ItemActive";
-                } else {    
-                    element.className = this.controls[i].displayClass + "ItemInactive";
-                }    
-                this.div.appendChild(element);
-            }
-        }
-    },
-
-    activateControl: function (control) {
-        if (!this.active) { return false; }
-        if (control.type == OpenLayers.Control.TYPE_BUTTON) {
-            control.trigger();
-            return;
-        }     
-        for (var i = 0; i < this.controls.length; i++) {
-            if (this.controls[i] == control) {
-                control.activate();
-            } else {
-                this.controls[i].deactivate();
-            }
-        }
-        this.redraw();
-    },
-
-    /**
-     * To build a toolbar, you add a set of controls to it. addControls
-     * lets you add a single control or a list of controls to the 
-     * Control Panel.
-     * @param OpenLayers.Control
-     */    
-    addControls: function(controls) {
-        if (!(controls instanceof Array)) {
-            controls = [controls];
-        }
-        this.controls = this.controls.concat(controls);
-        
-        // Give each control a panel_div which will be used later.
-        // Access to this div is via the panel_div attribute of the 
-        // control added to the panel.
-        for (var i = 0; i < controls.length; i++) {
-            var element = document.createElement("div");
-            var textNode = document.createTextNode(" ");
-            controls[i].panel_div = element;
-            OpenLayers.Event.observe(controls[i].panel_div, "click", 
-                                     this.onClick.bind(this, controls[i]));
-            OpenLayers.Event.observe(controls[i].panel_div, "mousedown", 
-                              OpenLayers.Event.stop.bindAsEventListener());
-            OpenLayers.Event.observe(controls[i].panel_div, "mouseup", 
-                                  OpenLayers.Event.stop.bindAsEventListener());
-        }    
-
-        if (this.map) { // map.addControl() has already been called on the panel
-            for (var i = 0; i < controls.length; i++) {
-                this.map.addControl(controls[i]);
-                controls[i].deactivate();
-            }
-            this.redraw();
-        }
-    },
-    
-    onClick: function (ctrl, evt) {
-        OpenLayers.Event.stop(evt ? evt : window.event);
-        this.activateControl(ctrl);
-    },
-    
-    /** @final @type String */
-    CLASS_NAME: "OpenLayers.Control.Panel"
-});
-

Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Control/Panel.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,161 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
+ * for the full text of the license. */
+
+/**
+ * @class
+ * 
+ * @requires OpenLayers/Control.js
+ */
+OpenLayers.Control.Panel = OpenLayers.Class.create();
+OpenLayers.Control.Panel.prototype = 
+  OpenLayers.Class.inherit( OpenLayers.Control, {
+    /**
+     * @type Array(OpenLayers.Control)
+     */
+    controls: null,    
+    
+    /** 
+     * The control which is activated when the control is activated (turned 
+     * on), which also happens at instantiation.
+     * @type OpenLayers.Control
+     */
+    defaultControl: null, 
+
+    /**
+     * @constructor
+     * 
+     * @param {DOMElement} element
+     * @param {String} base
+     */
+    initialize: function(element) {
+        OpenLayers.Control.prototype.initialize.apply(this, arguments);
+        this.controls = [];
+    },
+
+    destroy: function() {
+        OpenLayers.Control.prototype.destroy.apply(this, arguments);
+        for(var i = this.controls.length - 1 ; i >= 0; i--) {
+            OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);
+            this.controls[i].panel_div = null;
+        }    
+    },
+
+    activate: function() {
+        if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
+            for(var i = 0; i < this.controls.length; i++) {
+                if (this.controls[i] == this.defaultControl) {
+                    this.controls[i].activate();
+                }
+            }    
+            this.redraw();
+            return true;
+        } else {
+            return false;
+        }
+    },
+    
+    deactivate: function() {
+        if (OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
+            for(var i = 0; i < this.controls.length; i++) {
+                this.controls[i].deactivate();
+            }    
+            this.redraw();
+            return true;
+        } else {
+            return false;
+        }
+    },
+    
+    /**
+     * @type DOMElement
+     */    
+    draw: function() {
+        OpenLayers.Control.prototype.draw.apply(this, arguments);
+        for (var i = 0; i < this.controls.length; i++) {
+            this.map.addControl(this.controls[i]);
+            this.controls[i].deactivate();
+        }
+        this.activate();
+        return this.div;
+    },
+
+    /**
+     * @private
+     */
+    redraw: function() {
+        this.div.innerHTML = "";
+        if (this.active) {
+            for (var i = 0; i < this.controls.length; i++) {
+                var element = this.controls[i].panel_div;
+                if (this.controls[i].active) {
+                    element.className = this.controls[i].displayClass + "ItemActive";
+                } else {    
+                    element.className = this.controls[i].displayClass + "ItemInactive";
+                }    
+                this.div.appendChild(element);
+            }
+        }
+    },
+
+    activateControl: function (control) {
+        if (!this.active) { return false; }
+        if (control.type == OpenLayers.Control.TYPE_BUTTON) {
+            control.trigger();
+            return;
+        }     
+        for (var i = 0; i < this.controls.length; i++) {
+            if (this.controls[i] == control) {
+                control.activate();
+            } else {
+                this.controls[i].deactivate();
+            }
+        }
+        this.redraw();
+    },
+
+    /**
+     * To build a toolbar, you add a set of controls to it. addControls
+     * lets you add a single control or a list of controls to the 
+     * Control Panel.
+     * @param OpenLayers.Control
+     */    
+    addControls: function(controls) {
+        if (!(controls instanceof Array)) {
+            controls = [controls];
+        }
+        this.controls = this.controls.concat(controls);
+        
+        // Give each control a panel_div which will be used later.
+        // Access to this div is via the panel_div attribute of the 
+        // control added to the panel.
+        // Also, stop mousedowns and clicks, but don't stop mouseup,
+        // since they need to pass through.
+        for (var i = 0; i < controls.length; i++) {
+            var element = document.createElement("div");
+            var textNode = document.createTextNode(" ");
+            controls[i].panel_div = element;
+            OpenLayers.Event.observe(controls[i].panel_div, "click", 
+                                     this.onClick.bind(this, controls[i]));
+            OpenLayers.Event.observe(controls[i].panel_div, "mousedown", 
+                              OpenLayers.Event.stop.bindAsEventListener());
+        }    
+
+        if (this.map) { // map.addControl() has already been called on the panel
+            for (var i = 0; i < controls.length; i++) {
+                this.map.addControl(controls[i]);
+                controls[i].deactivate();
+            }
+            this.redraw();
+        }
+    },
+    
+    onClick: function (ctrl, evt) {
+        OpenLayers.Event.stop(evt ? evt : window.event);
+        this.activateControl(ctrl);
+    },
+    
+    /** @final @type String */
+    CLASS_NAME: "OpenLayers.Control.Panel"
+});
+

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Permalink.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Scale.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/SelectFeature.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ZoomBox.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ZoomToMaxExtent.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Events.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 /**

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature/Vector.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 // TRASH THIS

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature/WFS.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
  * for the full text of the license. */
 
 

Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Format/GML.js	2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,437 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt 
- * for the full text of the license. */
-
-/**
- * Read/WRite GML. 
- * @requires OpenLayers/Format.js
- * @requires OpenLayers/Feature/Vector.js
- * @requires OpenLayers/Ajax.js
- * @requires OpenLayers/Geometry.js
- */
-OpenLayers.Format.GML = OpenLayers.Class.create();
-OpenLayers.Format.GML.prototype = 
-  OpenLayers.Class.inherit( OpenLayers.Format, {
-    
-    featureNS: "http://mapserver.gis.umn.edu/mapserver",
-    
-    featureName: "featureMember", 
-    
-    layerName: "features",
-    
-    geometryName: "geometry",
-    
-    collectionName: "FeatureCollection",
-    
-    gmlns: "http://www.opengis.net/gml",
-    
-
-    /** 
-     * Extract attributes from GML. Most of the time,
-     * this is a significant time usage, due to the need
-     * to recursively descend the XML to search for attributes.
-     * 
-     * @type Boolean */
-    extractAttributes: true,
-    
-    /**
-     * Read data from a string, and return a list of features. 
-     * 
-     * @param {string|XMLNode} data data to read/parse.
-     */
-     read: function(data) {
-        if (typeof data == "string") { 
-            data = OpenLayers.parseXMLString(data);
-        }    
-        var featureNodes = OpenLayers.Ajax.getElementsByTagNameNS(data, this.gmlns, "gml", this.featureName);
-        if (featureNodes.length == 0) { return []; }
-
-        // Determine dimension of the FeatureCollection. Ie, dim=2 means (x,y) coords
-        // dim=3 means (x,y,z) coords
-        // GML3 can have 2 or 3 dimensions. GML2 only 2.
-        var dim;
-        var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "posList");
-        if (coordNodes.length == 0) {
-            coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "pos");
-        }
-        if (coordNodes.length > 0) {
-            dim = coordNodes[0].getAttribute("srsDimension");
-        }    
-        this.dim = (dim == "3" || dim == 3) ? 3 : 2;
-        
-        var features = [];
-        
-        // Process all the featureMembers
-        for (var i = 0; i < featureNodes.length; i++) {
-            var feature = this.parseFeature(featureNodes[i]);
-
-            if (feature) {
-                features.push(feature);
-            }
-        }
-        return features;
-     },
-
-     /**
-      * This function is the core of the GML parsing code in OpenLayers.
-      * It creates the geometries that are then attached to the returned
-      * feature, and calls parseAttributes() to get attribute data out.
-      * @param DOMElement xmlNode
-      */
-     parseFeature: function(xmlNode) {
-        var geom;
-        var p; // [points,bounds]
-
-        var feature = new OpenLayers.Feature.Vector();
-
-        if (xmlNode.firstChild.attributes && xmlNode.firstChild.attributes['fid']) {
-            feature.fid = xmlNode.firstChild.attributes['fid'].nodeValue;
-        }
-        
-        // match MultiPolygon
-        if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon").length != 0) {
-            var multipolygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon")[0];
-            geom = new OpenLayers.Geometry.MultiPolygon();
-            var polygons = OpenLayers.Ajax.getElementsByTagNameNS(multipolygon,
-                this.gmlns, "gml", "Polygon");
-            for (var i = 0; i < polygons.length; i++) {
-                polygon = this.parsePolygonNode(polygons[i],geom);
-                geom.addComponents(polygon);
-            }
-        }
-        // match MultiLineString
-        else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "MultiLineString").length != 0) {
-            var multilinestring = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "MultiLineString")[0];
-            
-            geom = new OpenLayers.Geometry.MultiLineString();
-            var lineStrings = OpenLayers.Ajax.getElementsByTagNameNS(multilinestring, this.gmlns, "gml", "LineString");
-            
-            for (var i = 0; i < lineStrings.length; i++) {
-                p = this.parseCoords(lineStrings[i]);
-                if(p.points){
-                    var lineString = new OpenLayers.Geometry.LineString(p.points);
-                    geom.addComponents(lineString);
-                    // TBD Bounds only set for one of multiple geometries
-                }
-            }
-        }
-        // match MultiPoint
-        else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "MultiPoint").length != 0) {
-            var multiPoint = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-                this.gmlns, "gml", "MultiPoint")[0];
-                
-            geom = new OpenLayers.Geometry.MultiPoint();
-            
-            var points = OpenLayers.Ajax.getElementsByTagNameNS(multiPoint, this.gmlns, "gml", "Point");
-            
-            for (var i = 0; i < points.length; i++) {
-                p = this.parseCoords(points[i]);
-                geom.addComponents(p.points[0]);
-                // TBD Bounds only set for one of multiple geometries
-            }
-        }
-        // match Polygon
-        else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "Polygon").length != 0) {
-            var polygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-                this.gmlns, "gml", "Polygon")[0];
-            
-            geom = this.parsePolygonNode(polygon);
-        }
-        // match LineString
-        else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "LineString").length != 0) {
-            var lineString = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-                this.gmlns, "gml", "LineString")[0];
-            p = this.parseCoords(lineString);
-            if (p.points) {
-                geom = new OpenLayers.Geometry.LineString(p.points);
-                // TBD Bounds only set for one of multiple geometries
-            }
-        }
-        // match Point
-        else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-            this.gmlns, "gml", "Point").length != 0) {
-            var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
-                this.gmlns, "gml", "Point")[0];
-            
-            p = this.parseCoords(point);
-            if (p.points) {
-                geom = p.points[0];
-                // TBD Bounds only set for one of multiple geometries
-            }
-        }
-        
-        feature.geometry = geom; 
-        if (this.extractAttributes) {
-            feature.attributes = this.parseAttributes(xmlNode);
-        }    
-        
-        return feature;
-    },        
-    
-    /**
-     * recursive function parse the attributes of a GML node.
-     * Searches for any child nodes which aren't geometries,
-     * and gets their value.
-     * @param DOMElement xmlNode
-     */
-    parseAttributes: function(xmlNode) {
-        var nodes = xmlNode.childNodes;
-        var attributes = {};
-        for(var i = 0; i < nodes.length; i++) {
-            var name = nodes[i].nodeName;
-            var value = OpenLayers.Util.getXmlNodeValue(nodes[i]);
-            // Ignore Geometry attributes
-            // match ".//gml:pos|.//gml:posList|.//gml:coordinates"
-            if((name.search(":pos")!=-1)
-              ||(name.search(":posList")!=-1)
-              ||(name.search(":coordinates")!=-1)){
-               continue;    
-            }
-            
-            // Check for a leaf node
-            if((nodes[i].childNodes.length == 1 && nodes[i].childNodes[0].nodeName == "#text")
-                || (nodes[i].childNodes.length == 0 && nodes[i].nodeName!="#text")) {
-                attributes[name] = value;
-            }
-            OpenLayers.Util.extend(attributes, this.parseAttributes(nodes[i]))
-        }   
-        return attributes;
-    },
-    
-    /**
-     *
-     * @param {XMLNode} xmlNode 
-     *
-     * @return {OpenLayers.Geometry.Polygon} polygon geometry
-     */
-    parsePolygonNode: function(polygonNode) {
-        var linearRings = OpenLayers.Ajax.getElementsByTagNameNS(polygonNode,
-            this.gmlns, "gml", "LinearRing");
-        
-        var rings = [];
-        var p;
-        var polyBounds;
-        for (var i = 0; i < linearRings.length; i++) {
-            p = this.parseCoords(linearRings[i]);
-            ring1 = new OpenLayers.Geometry.LinearRing(p.points);
-            rings.push(ring1);
-        }
-        
-        var poly = new OpenLayers.Geometry.Polygon(rings);
-        return poly;
-    },
-    
-    /**
-     * Extract Geographic coordinates from an XML node.
-     * @private
-     * @param {XMLNode} xmlNode 
-     * 
-     * @return an array of OpenLayers.Geometry.Point points.
-     * @type Array
-     */
-    parseCoords: function(xmlNode) {
-        var x, y, left, bottom, right, top, bounds;
-        var p = []; // return value = [points,bounds]
-        
-        if (xmlNode) {
-            p.points = [];
-            
-            // match ".//gml:pos|.//gml:posList|.//gml:coordinates"
-            // Note: GML2 coordinates are of the form:x y,x y,x y
-            // GML2 can also be of the form <coord><x>1</x><y>2</y></coord>
-            //       GML3 posList is of the form:x y x y. OR x y z x y z.
-            
-            // GML3 Line or Polygon
-            var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "posList");
-            
-            // GML3 Point
-            if (coordNodes.length == 0) { 
-                coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "pos");
-            }    
-
-            // GML2
-            if (coordNodes.length == 0) {
-                coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "coordinates");
-            }    
-
-            // TBD: Need to handle an array of coordNodes not just coordNodes[0]
-            
-            var coordString = OpenLayers.Util.getXmlNodeValue(coordNodes[0]);
-            
-            // Extract an array of Numbers from CoordString
-            var nums = (coordString) ? coordString.split(/[, \n\t]+/) : [];
-            
-            // Remove elements caused by leading and trailing white space
-            while (nums[0] == "") 
-                nums.shift();
-            
-            while (nums[nums.length-1] == "") 
-                nums.pop();
-            
-            for(i = 0; i < nums.length; i = i + this.dim) {
-                x = parseFloat(nums[i]);
-                y = parseFloat(nums[i+1]);
-                p.points.push(new OpenLayers.Geometry.Point(x, y));
-            }
-        }
-        return p;
-    },
-    
-    /**
-     * Accept Feature Collection, and return a string. 
-     * 
-     * @param {Array} List of features to serialize into a string.
-     */
-     write: function(features) {
-        var featureCollection = document.createElementNS("http://www.opengis.net/wfs", "wfs:" + this.collectionName);
-        for (var i=0; i < features.length; i++) {
-            featureCollection.appendChild(this.createFeatureXML(features[i]));
-        }
-        return featureCollection;
-     },
-    
-    /** 
-     * Accept an OpenLayers.Feature.Vector, and build a geometry for it.
-     * 
-     * @param OpenLayers.Feature.Vector feature
-     * @returns DOMElement
-     */
-    createFeatureXML: function(feature) {
-        var geometryNode = this.buildGeometryNode(feature.geometry);
-        var geomContainer = document.createElementNS(this.featureNS, "feature:"+this.geometryName);
-        geomContainer.appendChild(geometryNode);
-        var featureNode = document.createElementNS(this.gmlns, "gml:" + this.featureName);
-        var featureContainer = document.createElementNS(this.featureNS, "feature:"+this.layerName);
-        featureContainer.appendChild(geomContainer);
-        for(var attr in feature.attributes) {
-            var attrText = document.createTextNode(feature.attributes[attr]); 
-            var nodename = attr;
-            if (attr.search(":") != -1) {
-                nodename = attr.split(":")[1];
-            }    
-            var attrContainer = document.createElementNS(this.featureNS, "feature:"+nodename);
-            attrContainer.appendChild(attrText);
-            featureContainer.appendChild(attrContainer);
-        }    
-        featureNode.appendChild(featureContainer);
-        return featureNode;
-    },    
-    
-    /** 
-     * builds a GML file with a given geometry
-     * 
-     * @param {OpenLayers.Geometry} geometry
-     */
-    buildGeometryNode: function(geometry) {
-    // TBD test if geoserver can be given a Multi-geometry for a simple-geometry data store
-    // ie if multipolygon can be sent for a polygon feature type
-        var gml = "";
-        // match MultiPolygon or Polygon
-        if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPolygon"
-            || geometry.CLASS_NAME == "OpenLayers.Geometry.Polygon") {
-                gml = document.createElementNS(this.gmlns, 'gml:MultiPolygon');
-                
-                // TBD retrieve the srs from layer
-                // srsName is non-standard, so not including it until it's right.
-                //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-                
-                var polygonMember = document.createElementNS(this.gmlns, 'gml:polygonMember');
-                
-                var polygon = document.createElementNS(this.gmlns, 'gml:Polygon');
-                var outerRing = document.createElementNS(this.gmlns, 'gml:outerBoundaryIs');
-                var linearRing = document.createElementNS(this.gmlns, 'gml:LinearRing');
-                
-                // TBD manage polygons with holes
-                linearRing.appendChild(this.buildCoordinatesNode(geometry.components[0]));
-                outerRing.appendChild(linearRing);
-                polygon.appendChild(outerRing);
-                polygonMember.appendChild(polygon);
-                
-                gml.appendChild(polygonMember);
-            }
-        // match MultiLineString or LineString
-        else if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiLineString"
-                 || geometry.CLASS_NAME == "OpenLayers.Geometry.LineString") {
-                     gml = document.createElementNS(this.gmlns, 'gml:MultiLineString');
-                     
-                     // TBD retrieve the srs from layer
-                     // srsName is non-standard, so not including it until it's right.
-                     //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-                     
-                     var lineStringMember = document.createElementNS(this.gmlns, 'gml:lineStringMember');
-                     
-                     var lineString = document.createElementNS(this.gmlns, 'gml:LineString');
-                     
-                     lineString.appendChild(this.buildCoordinatesNode(geometry));
-                     lineStringMember.appendChild(lineString);
-                     
-                     gml.appendChild(lineStringMember);
-                 }
-        // match MultiPoint or Point
-        else if (geometry.CLASS_NAME == "OpenLayers.Geometry.Point" || 
-                  geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") {
-                // TBD retrieve the srs from layer
-                // srsName is non-standard, so not including it until it's right.
-                //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-                     
-                gml = document.createElementNS(this.gmlns, 'gml:MultiPoint');
-                var parts = "";
-                if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") {
-                    parts = geometry.components;
-                } else {
-                    parts = [geometry];
-                }    
-                
-                for (var i = 0; i < parts.length; i++) { 
-                    var pointMember = document.createElementNS(this.gmlns, 'gml:pointMember');
-                    var point = document.createElementNS(this.gmlns, 'gml:Point');
-                    point.appendChild(this.buildCoordinatesNode(parts[i]));
-                    pointMember.appendChild(point);
-                    gml.appendChild(pointMember);
-               }     
-        }
-        return gml;         
-    },
-     
-    /**
-     * builds the coordinates XmlNode
-     * <gml:coordinates decimal="." cs="," ts=" ">...</gml:coordinates>
-     *
-     * @param {OpenLayers.Geometry} geometry
-     * @return {XmlNode} created xmlNode
-     */
-    buildCoordinatesNode: function(geometry) {
-        var coordinatesNode = document.createElementNS(this.gmlns, "gml:coordinates");
-        coordinatesNode.setAttribute("decimal", ".");
-        coordinatesNode.setAttribute("cs", ",");
-        coordinatesNode.setAttribute("ts", " ");
-        
-        var points = null;
-        if (geometry.components) {
-            points = geometry.components;
-        }
-
-        var path = "";
-        if (points) {
-            for (var i = 0; i < points.length; i++) {
-                path += points[i].x + "," + points[i].y + " ";
-            }
-        } else {
-           path += geometry.x + "," + geometry.y + " ";
-        }    
-        
-        var txtNode = document.createTextNode(path);
-        coordinatesNode.appendChild(txtNode);
-        
-        return coordinatesNode;
-    },
-    
-    /** @final @type String */
-    CLASS_NAME: "OpenLayers.Format.GML" 
-
-});     

Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Format/GML.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js	                        (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js	2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,441 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt 
+ * for the full text of the license. */
+
+/**
+ * Read/WRite GML. 
+ * @requires OpenLayers/Format.js
+ * @requires OpenLayers/Feature/Vector.js
+ * @requires OpenLayers/Ajax.js
+ * @requires OpenLayers/Geometry.js
+ */
+OpenLayers.Format.GML = OpenLayers.Class.create();
+OpenLayers.Format.GML.prototype = 
+  OpenLayers.Class.inherit( OpenLayers.Format, {
+    
+    featureNS: "http://mapserver.gis.umn.edu/mapserver",
+    
+    featureName: "featureMember", 
+    
+    layerName: "features",
+    
+    geometryName: "geometry",
+    
+    collectionName: "FeatureCollection",
+    
+    gmlns: "http://www.opengis.net/gml",
+    
+
+    /** 
+     * Extract attributes from GML. Most of the time,
+     * this is a significant time usage, due to the need
+     * to recursively descend the XML to search for attributes.
+     * 
+     * @type Boolean */
+    extractAttributes: true,
+    
+    /**
+     * Read data from a string, and return a list of features. 
+     * 
+     * @param {string|XMLNode} data data to read/parse.
+     */
+     read: function(data) {
+        if (typeof data == "string") { 
+            data = OpenLayers.parseXMLString(data);
+        }    
+        var featureNodes = OpenLayers.Ajax.getElementsByTagNameNS(data, this.gmlns, "gml", this.featureName);
+        if (featureNodes.length == 0) { return []; }
+
+        // Determine dimension of the FeatureCollection. Ie, dim=2 means (x,y) coords
+        // dim=3 means (x,y,z) coords
+        // GML3 can have 2 or 3 dimensions. GML2 only 2.
+        var dim;
+        var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "posList");
+        if (coordNodes.length == 0) {
+            coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "pos");
+        }
+        if (coordNodes.length > 0) {
+            dim = coordNodes[0].getAttribute("srsDimension");
+        }    
+        this.dim = (dim == "3" || dim == 3) ? 3 : 2;
+        
+        var features = [];
+        
+        // Process all the featureMembers
+        for (var i = 0; i < featureNodes.length; i++) {
+            var feature = this.parseFeature(featureNodes[i]);
+
+            if (feature) {
+                features.push(feature);
+            }
+        }
+        return features;
+     },
+
+     /**
+      * This function is the core of the GML parsing code in OpenLayers.
+      * It creates the geometries that are then attached to the returned
+      * feature, and calls parseAttributes() to get attribute data out.
+      * @param DOMElement xmlNode
+      */
+     parseFeature: function(xmlNode) {
+        var geom;
+        var p; // [points,bounds]
+
+        var feature = new OpenLayers.Feature.Vector();
+
+        // match MultiPolygon
+        if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon&quo