<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>OpenLayers Mouseevents Example</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script> 
        
        <script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map;
        function init(){


                OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
 
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.onClick,
                            'dblclick': this.onDblclick,
                            'rightclick': this.onRight,
                            'mouseup': this.onMouseup,
                            'mousedown': this.onMousedown
                        }, this.handlerOptions
                    );
                }, 
 
                onClick: function(evt) {
                    var msg = "click " + evt.xy;
                    console.log(msg);
                },
 
                onDblclick: function(evt) {  
                    var msg = "dblclick " + evt.xy;
                    console.log(msg);
                },

                onRight: function(evt) {  
                    var msg = "rightclick " + evt.xy;
                    console.log(msg);
                    OpenLayers.Event.stop();
                },

                onMouseup: function(evt) {  
                    var msg = "mouseup " + evt.xy;
                    console.log(msg);
                    OpenLayers.Event.stop();
                },

                onMousedown: function(evt) {  
                    var msg = "mousedown " + evt.xy;
                    console.log(msg);
                    OpenLayers.Event.stop();
                }
 
            });

            var sngl = new OpenLayers.Control.Click({
                                handlerOptions: {
                                "single": true
                            }
                        });

            var dbl = new OpenLayers.Control.Click({
                handlerOptions: {
                    "single": false,
                    "double": true
                }
            });

            var rght = new OpenLayers.Control.Click({
                handlerOptions: {
                    "single": true,
                    "stopSingle": true
                }
            });
                
            var mu = new OpenLayers.Control.Click({
                handlerOptions: {
                    "single": true
                }
            });
                
            var md = new OpenLayers.Control.Click({
                handlerOptions: {
                    "single": true
                }
            });
                
            map = new OpenLayers.Map(
                                'map',
                                {
                                        controls: [
                                                new OpenLayers.Control.Navigation({documentDrag: true}),
                                                new OpenLayers.Control.KeyboardDefaults(),
                                                new OpenLayers.Control.PanZoom(),
                                                new OpenLayers.Control.ArgParser(),
                                                new OpenLayers.Control.Attribution(),
                                        ],
                                        projection: 'EPSG:900913',
                                          units: 'm'
                        });

                        map.addControl(new OpenLayers.Control.LayerSwitcher());
                        map.addControl(sngl);
                        map.addControl(dbl);
                        map.addControl(rght);
                        map.addControl(mu);
                        map.addControl(md);
                        sngl.activate();
                        dbl.activate();
                        rght.activate();
                        mu.activate();
                        md.activate();

                    var gphy = new OpenLayers.Layer.Google(
                        "Google Physical",
                        {type: google.maps.MapTypeId.TERRAIN}
                    );
                    var gmap = new OpenLayers.Layer.Google(
                        "Google Streets", // the default
                        {numZoomLevels: 20}
                    );
                    var ghyb = new OpenLayers.Layer.Google(
                        "Google Hybrid",
                        {type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20}
                    );
                    var gsat = new OpenLayers.Layer.Google(
                        "Google Satellite",
                        {type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
                    ); 

                    map.addLayers([gphy, gmap, ghyb, gsat]);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.setCenter(new OpenLayers.LonLat(-80,44).transform(
                                new OpenLayers.Projection("EPSG:4326"),
                                map.getProjectionObject()
                        ),5);
        }

    </script>
  </head>
  <body onload="init()" style="padding:0;margin:0;">
    <div id="map" style="margin:0;padding:0;width:100%;height:100%;"></div>
  </body>
</html>