Index: tests/Control/test_Identify.html
===================================================================
--- tests/Control/test_Identify.html	(revision 0)
+++ tests/Control/test_Identify.html	(revision 0)
@@ -0,0 +1,56 @@
+<html>
+<head>
+  <script src="../../lib/OpenLayers.js"></script>
+  <script type="text/javascript">
+    var map, control, layer; 
+
+    function init_map() {
+        control = new OpenLayers.Control.Identify(null);
+        map = new OpenLayers.Map("map", {controls:[control]});
+        layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
+                    "http://labs.metacarta.com/wms/vmap0",
+                    {layers: 'basic'} );
+        map.addLayer(layer); 
+        return [map, control];
+    }    
+    function test_Control_Identify_constructor (t) {
+        t.plan( 1 );
+    
+        control = new OpenLayers.Control.Identify();
+        t.ok( control instanceof OpenLayers.Control.Identify, "new OpenLayers.Control returns object" );
+    }
+    
+    function test_Control_Identify_click(t) {
+        t.plan(1);
+        
+        var user_id_function = function(pos) {
+            t.ok(true, "user function called successfully: pos = (" + pos.x + ", " + pos.y + ")");
+        };
+        
+        var control = new OpenLayers.Control.Identify(user_id_function);
+        var map = new OpenLayers.Map("map", {controls:[control]});
+        var layer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
+                                        "http://labs.metacarta.com/wms/vmap0",
+                                        {layers: 'basic'});
+        map.addLayer(layer); 
+        map.zoomToMaxExtent();
+        map.zoomIn();
+        control.activate();
+        var xy = new OpenLayers.Pixel(0, 0);
+        var click = {
+            'type': 'click',
+            'xy': xy,
+            'which': 1
+        };
+        map.events.triggerEvent('click', click);
+        t.delay_call(1, function(){});
+    }
+    
+
+  </script>
+</head>
+<body>
+    <a id="scale" href="">Identify</a> <br />
+    <div id="map" style="width: 1024px; height: 512px;"/>
+</body>
+</html>
Index: tests/list-tests.html
===================================================================
--- tests/list-tests.html	(revision 5788)
+++ tests/list-tests.html	(working copy)
@@ -85,6 +85,7 @@
     <li>Control/test_PanZoomBar.html</li>
     <li>Control/test_Permalink.html</li>
     <li>Control/test_Scale.html</li>
+    <li>Control/test_Identify.html</li>
     <li>Control/test_SelectFeature.html</li>
     <li>test_Handler.html</li>
     <li>Handler/test_Click.html</li>
Index: lib/OpenLayers/Control/Identify.js
===================================================================
--- lib/OpenLayers/Control/Identify.js	(revision 0)
+++ lib/OpenLayers/Control/Identify.js	(revision 0)
@@ -0,0 +1,57 @@
+/* Copyright (c) 2006-2007 MetaCarta, Inc., published under the Clear BSD
+ * license.  See http://svn.openlayers.org/trunk/openlayers/license.txt for the
+ * full text of the license. */
+
+/**
+ * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Handler/Click.js
+ *
+ * Class: OpenLayers.Control.Identify
+ *
+ * Inherits from:
+ *  - <OpenLayers.Control>
+ */
+OpenLayers.Control.Identify = OpenLayers.Class(OpenLayers.Control, {
+    /**
+     * Property: type
+     * {OpenLayers.Control.TYPE}
+     */
+    type: OpenLayers.Control.TYPE_TOOL,
+    
+    /**
+     * Constructor: OpenLayers.Control.Identify 
+     * Fires a user defined function with the mouse position
+     *
+     * Parameters:
+     * options - {userFunction} An optional object whose properties will be used
+     *     to extend the control.
+     */
+    initialize: function(userFunction, options) {
+        OpenLayers.Control.prototype.initialize.apply(this, [options]);
+        this.userFunc = userFunction;
+    },
+
+    
+    /**
+     * Method: draw
+     */    
+    draw: function() {
+        this.handler = new OpenLayers.Handler.Click( this, 
+                             {"click": this.identify}, {keyMask: this.keyMask} );
+    },
+
+    /**
+     * Method: identify
+     * Placeholder for user defined identify function
+     *
+     * Parameters:
+     * evt - {Click Event}
+     *
+     */
+    identify: function (evt) {
+        var position = evt.xy;
+        this.userFunc(position);
+    },
+    
+    CLASS_NAME: "OpenLayers.Control.Identify"
+});
Index: lib/OpenLayers.js
===================================================================
--- lib/OpenLayers.js	(revision 5795)
+++ lib/OpenLayers.js	(working copy)
@@ -130,6 +130,7 @@
             "OpenLayers/Control.js",
             "OpenLayers/Control/Attribution.js",
             "OpenLayers/Control/ZoomBox.js",
+            "OpenLayers/Control/Identify.js",
             "OpenLayers/Control/ZoomToMaxExtent.js",
             "OpenLayers/Control/DragPan.js",
             "OpenLayers/Control/Navigation.js",
