OpenLayers.Handler.SimplePolygon=OpenLayers.Class(OpenLayers.Handler.Path,{toggleStyleTimer:null,originalStyle:null,errStyle:null,polygon:null,initialize:function(C,B,A){B=OpenLayers.Util.extend(B,{modify:function(E,D){this.handler.checkAddedPoint(E,D);this.layer.events.triggerEvent("sketchmodified",{vertex:E,feature:D})}});OpenLayers.Handler.Path.prototype.initialize.apply(this,arguments)},createFeature:function(A){var B=this.control.map.getLonLatFromPixel(A);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(B.lon,B.lat));this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:true})},destroyFeature:function(){OpenLayers.Handler.Path.prototype.destroyFeature.apply(this);this.polygon=null;this.toggleErrorStyle(false)},drawFeature:function(){this.setupStyles();this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var A=this.polygon&&this.polygon.geometry;if(A&&this.multi){A=new OpenLayers.Geometry.MultiPolygon([A])}return A},dblclick:function(A){if(!this.freehandMode(A)){var B=this.line.geometry.components.length-2;this.line.geometry.removeComponent(this.line.geometry.components[B]);this.removePoint();this.finalize()}return false},checkAddedPoint:function(E,L){this.setupStyles();var J=this.polygon&&this.polygon.geometry;var F=J.getVertices();if(!F||(F.length<4)){return true}var D=this.getPolygonSegments(F);if(!D||D.length<2){return true}var B=E;var K=F[F.length-2];var A={x1:K.x,y1:K.y,x2:B.x,y2:B.y};var C=F[0];var H={x1:C.x,y1:C.y,x2:B.x,y2:B.y};for(var I=0;I<D.length;I++){var G=D[I];if(this.intersectsButNotAtVertex(A,G)){this.toggleErrorStyle(true);return false}else{if(this.intersectsButNotAtVertex(H,G)){this.toggleErrorStyle(true);return false}}}this.toggleErrorStyle(false);return true},intersectsButNotAtVertex:function(B,A){if(((B.x1==A.x1)&&(B.y1==A.y1))||((B.x1==A.x2)&&(B.y1==A.y2))||((B.x2==A.x1)&&(B.y2==A.y1))||((B.x2==A.x2)&&(B.y2==A.y2))){return false}else{return OpenLayers.Geometry.segmentsIntersect(B,A)}},getPolygonSegments:function getSegments(A){return this.line.geometry.getSortedSegments()},toggleErrorStyle:function(A){if(A){if(this.style!=this.errStyle){this.style=this.errStyle;$(".olControlDrawFeatureActive").css("cursor","url(/gerrysite/js/img/errorCursor.png), wait")}}else{if(this.style!=this.originalStyle){this.style=this.originalStyle;$(".olControlDrawFeatureActive").css("cursor","default")}}},setupStyles:function(){if(this.originalStyle==null){var A=this.layer.styleMap&&this.layer.styleMap.styles.temporary;this.originalStyle=OpenLayers.Util.extend({},A.defaultStyle);this.errStyle=OpenLayers.Util.extend({},A.defaultStyle);this.errStyle.fillColor="#FF1000";this.errStyle.fillOpacity=0.8;this.errStyle.strokeColor="#FF1000";this.errStyle.strokeWidth=1}},addPoint:function(B){var C=this.control.map.getLonLatFromPixel(B);var A=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(C.lon,C.lat));if(!this.checkAddedPoint(A.geometry,null)){return }this.layer.removeFeatures([this.point]);this.point=A;this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature()},CLASS_NAME:"OpenLayers.Handler.SimplePolygon"});