// the searchradii layer is used to lay concentric circles when they do a geocode search
// searchmarker is used to mark the center of their selection
/* var searchmarker = new OpenLayers.Layer.MapServer('Site Marker',
                    '/cgi-bin/mapserv?map=/maps/reservepits/radius.map',
                    {layers: 'groundzero', map_imagetype:'image/gif', centerx:0, centery:0 },
                    {isBaseLayer:false, transparent:true, singleTile:true, visibility:false }
);
var searchradii = new OpenLayers.Layer.MapServer('Site Radii',
                    '/cgi-bin/mapserv?map=/maps/reservepits/radius.map',
                    {layers: 'radii', map_imagetype:'image/gif', centerx:0, centery:0 },
                    {isBaseLayer:false, transparent:true, singleTile:true, visibility:false }
);
*/
var oldmarker = new OpenLayers.Marker();
var searchmarker = new OpenLayers.Layer.Markers();
// we use Google'a geocoder, since it's great
var geocoder = new GClientGeocoder();
function geocodeAndZoom(address) {
    if (address) geocoder.getLatLng(address,geocodeAjaxHandler);
    return false;
}
function geocodeAjaxHandler(point) {
    if (!point) return alert('Adresse nicht gefunden.');
    var lat = point.lat();
    var lon = point.lng();
    var zum = 16;
//    var zum = map.numZoomlevels - 1;
    map.setCenter(new OpenLayers.LonLat(lon,lat).transform(map.displayProjection, map.projection), zum);
// redraw the radii circles around this new center
    map.addLayer(searchmarker);
    searchmarker.setVisibility(true);
    size = new OpenLayers.Size(32,32);
    calculateOffset = function(size) {
    return new OpenLayers.Pixel(-(size.w/2), -size.h); };
    icon = new OpenLayers.Icon(
           'http://www.geoas.net/ms/MapFish/client/examples/AGIS/images/PIN3-32.gif',
           size, null, calculateOffset);
    searchmarker.removeMarker(oldmarker);
    marker = new OpenLayers.Marker(new OpenLayers.LonLat(lon,lat).transform(map.displayProjection, map.projection), icon);
    searchmarker.addMarker(marker);
    oldmarker = marker;
    searchmarker.redraw(); 
/*    searchradii.setVisibility(true);
    searchradii.mergeNewParams({centerx:lon,centery:lat});
    searchradii.redraw();
    searchmarker.setVisibility(true);
    searchmarker.mergeNewParams({centerx:lon,centery:lat});
    searchmarker.redraw(); */
}

// these handle click events, turning them into geocode searches
function handleMapClick(evt) {
    return OpenLayers.Event.isLeftClick(evt) ? handleLeftMapClick(evt) : handleRightMapClick(evt);
}
function handleLeftMapClick(evt) {
    // suppress the click from going any further
    OpenLayers.Event.stop(evt);
    return false;
}
function handleRightMapClick(evt) {
    var point = map.getLonLatFromViewPortPx(new OpenLayers.Pixel(evt.xy.x,evt.xy.y) );
    point = new GLatLng(point.lat,point.lon);
    geocodeAjaxHandler(point);
    // suppress the page's behavior of a context menu
    OpenLayers.Event.stop(evt);
    return false;
}
