//*************************Sobrescriure funcions dels controls OpenLayers necessaris per les eines d'edició (OpenLayers.NGDibuixar)************************************/

OpenLayers.Control.DrawFeature.prototype.drawFeature = function(geometry)
{	
    var feature = new OpenLayers.Feature.Vector(geometry);   
	if(storeFeatures){//drawTools
		feature.style={};
		feature.styleSelect={};
		clone(geometry.style,feature.style);
		clone(OpenLayers.Feature.Vector.style['select'],feature.styleSelect);
		/*feature.styleSelect.fillColor="#FFB502";
		feature.styleSelect.strokeColor="#FF0000";*/
		//feature.estat='new';
	}
    this.layer.addFeatures([feature]);
    this.featureAdded(feature);
    this.events.triggerEvent("featureadded",{feature : feature});
}

OpenLayers.Handler.RegularPolygon.prototype.createGeometry= function() 
{
	this.angle = Math.PI * ((1/this.sides) - (1/2));
    if(this.snapAngle) {
        this.angle += this.snapAngle * (Math.PI / 180);
    }
    this.feature.geometry = OpenLayers.Geometry.Polygon.createRegularPolygon(
        this.origin, this.radius, this.sides, this.snapAngle
    );
    if(storeFeatures) this.feature.geometry.style=OpenLayers.NGDibuixar.FEATURE_STYLE['cercle']; //drawTools
}

OpenLayers.Handler.Polygon.prototype.createFeature= function() 
{
    this.polygon = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.Polygon());
    this.line = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.LinearRing());
    this.polygon.geometry.addComponent(this.line.geometry);    
    if(storeFeatures) this.style=OpenLayers.NGDibuixar.FEATURE_STYLE['polygon']; //drawTools
    this.point = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.Point());
    this.layer.addFeatures([this.polygon, this.point], {silent: true});
}

OpenLayers.Handler.Polygon.prototype.getGeometry= function() 
{

    var geometry = this.polygon.geometry;
    if(this.multi) {
        geometry = new OpenLayers.Geometry.MultiPolygon([geometry]);
    }
    if(storeFeatures) geometry.style=this.style; //drawTools
    return geometry;
}

OpenLayers.Handler.Path.prototype.createFeature= function() 
{
    this.line = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.LineString());
    if(storeFeatures) this.style=OpenLayers.NGDibuixar.FEATURE_STYLE['line']; //drawTools
    this.point = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.Point());
    this.layer.addFeatures([this.line, this.point], {silent: true});
}

OpenLayers.Handler.Path.prototype.getGeometry= function() {
        var geometry = this.line.geometry;
        if(this.multi) {
            geometry = new OpenLayers.Geometry.MultiLineString([geometry]);
        }
        if(storeFeatures) geometry.style=this.style;
        return geometry;
    }

OpenLayers.Handler.Point.prototype.createFeature= function() 
{
    this.point = new OpenLayers.Feature.Vector(
        new OpenLayers.Geometry.Point()
    );
    if(storeFeatures) this.style=OpenLayers.NGDibuixar.FEATURE_STYLE['point'];
    this.layer.addFeatures([this.point], {silent: true});
}

OpenLayers.Handler.Point.getGeometry= function() 
{
    var geometry = this.point.geometry;
    if(this.multi) {
        geometry = new OpenLayers.Geometry.MultiPoint([geometry]);
    }
    if(storeFeatures) geometry.style=this.style;
    return geometry;
}

OpenLayers.Handler.Point.prototype.finalize= function(cancel) 
{
    var key = cancel ? "cancel" : "done";
    this.drawing = false;
    this.mouseDown = false;
    this.lastDown = null;
    this.lastUp = null;
    var geom = this.geometryClone();
	if(storeFeatures) geom.style = this.style;
    this.callback(key, [geom]);
    if(cancel || !this.persist) {
        this.destroyFeature();
    }
}


