if (!AWP.Control) AWP.Control = {};

AWP.Control.Measure = OpenLayers.Class(OpenLayers.Control.Measure, {
    initialize: function() {
		var sketchSymbolizers = {
			"Point": {
				pointRadius: 4,
				graphicName: "square",
				fillColor: "white",
				fillOpacity: 1,
				strokeWidth: 1,
				strokeOpacity: 1,
				strokeColor: "#333333"
			},
			"Line": {
				strokeWidth: 3,
				strokeOpacity: 1,
				strokeColor: "#666666",
				strokeDashstyle: "dash"
			},
			"Polygon": {
				strokeWidth: 2,
				strokeOpacity: 1,
				strokeColor: "#666666",
				fillColor: "white",
				fillOpacity: 0.3
			}
		};
		var style = new OpenLayers.Style();
		style.addRules([new OpenLayers.Rule({symbolizer: sketchSymbolizers})]);
		
		OpenLayers.Control.Measure.prototype.initialize.call(this, OpenLayers.Handler.Path, {
			title: 'Measure distance',
			displayUnits: "m",
			handlerOptions: {
				style: "default", // this forces default render intent
				layerOptions: {styleMap: new OpenLayers.StyleMap({"default": style})},
				persist: true
			}
		});
		
		this.events.on({
			"measure": this.handleMeasurements,
			"measurepartial": this.handleMeasurements
		});
    },
	handleMeasurements: function(event) {
		var geometry = event.geometry;
		var units = event.units;
		var order = event.order;
		var measure = event.measure;
		var element = document.getElementById('measureResult');
		var out = "";
		if (order == 1) {
			out += " " + measure.toFixed(3) + " " + units;
		} else {
			out += " " + measure.toFixed(3) + " " + units + "<sup>2</" + "sup>";
		}
		element.innerHTML = out;
	},
    CLASS_NAME: "AWP.Control.Measure"
});
