/* Copyright (c) 2008 Geosignal, 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/Feature/Vector.js
 * @requires OpenLayers/Handler/Feature.js
 * @requires OpenLayers/Handler/Path.js
 * @requires OpenLayers/Handler/Point.js
 */

/**
 * Class: OpenLayers.Control.SelectPolygone
 * Selects gsMap features from a given layer on the polygone. 
 *
 * Inherits from:
 *  - <OpenLayers.Control>
 */
OpenLayers.Control.SelectPolygone = OpenLayers.Class(OpenLayers.Control, {
  

    /**
     * Constructor: <OpenLayers.Control.SelectPoint>
     *
     * Parameters:
     * layer - {<OpenLayers.Layer.gsMap>} 
     * options - {Object} 
     */
    initialize: function(layer, options) {
    		this.options = options;
    		this.handlerOptions = {};
        OpenLayers.Control.prototype.initialize.apply(this, [options]);
        this.callbacks = OpenLayers.Util.extend({done: this.sendRequest},
                                                this.callbacks);
        this.layer = layer;   
        this.handler = new OpenLayers.Handler.Polygon(this, this.callbacks, this.handlerOptions);
        OpenLayers.Util.extend(this.handler.style,OpenLayers.Feature.Vector.style['default']);
        OpenLayers.Util.extend(this.handler.style,{pointRadius: 1,fillColor:'#ff0000'});
    },
    
		sendRequest: function(features){				
        var query = "typeSelection=point&ctrl=0&polyCoord="+features;        
        if(!this.layer)return ;
        //ToDo si plusieurs layers OU layer actif ?!
        this.layer.query = query;
        this.layer.redraw();
        this.layer.query = "";
        this.handler.destroyFeature();
        
        if(this.options.afterSelect) {
        	this.options.afterSelect();
        }
		},
    /** 
     * Method: setMap
     * Set the map property for the control. 
     * 
     * Parameters:
     * map - {<OpenLayers.Map>} 
     */
    setMap: function(map) {
        this.handler.setMap(map);
        OpenLayers.Control.prototype.setMap.apply(this, arguments);
    },

    CLASS_NAME: "OpenLayers.Control.SelectPolygone"
});

