diff --git a/website/polygon.js b/website/polygon.js
index 7ccd78fbb18ca2366aa6f17cd21c5a99f509bd6c..d2ec7d0371fcd06a2ec4c3a2b4043d3eacb9ae5f 100644
--- a/website/polygon.js
+++ b/website/polygon.js
@@ -7,11 +7,9 @@ function PolygonCreator(map) {
 	this.map = map;
 	this.pen = new Pen(this.map);
 	var thisOjb = this;
-	proj4.defs("EPSG:31467",
-			"+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0"
-					+ " +ellps=bessel +datum=potsdam +units=m +no_defs"); // http://spatialreference.org/ref/epsg/31467/proj4js/
-	this.event = google.maps.event.addListener(thisOjb.map, 'click', function(
-			event) {
+	proj4.defs("EPSG:31467", "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0"
+			+ " +ellps=bessel +datum=potsdam +units=m +no_defs"); // http://spatialreference.org/ref/epsg/31467/proj4js/
+	this.event = google.maps.event.addListener(thisOjb.map, 'click', function(event) {
 		thisOjb.pen.draw(event.latLng);
 	});
 	this.destroy = function() {
@@ -30,19 +28,20 @@ function Pen(map) {
 	this.polyline = null;
 	this.polygon = null;
 	this.currentDot = null;
+	this.i = 0;
 	this.draw = function(latLng) {
 		if (null != this.polygon) {
 			alert('Click Reset to draw another');
 		} else {
-			if (this.currentDot != null && this.listOfDots.length > 1
-					&& this.currentDot == this.listOfDots[0]) {
+			if (this.currentDot != null && this.listOfDots.length > 1 && this.currentDot == this.listOfDots[0]) {
 				this.drawPolygon(this.listOfDots);
 				this.refreshInfo();
 			} else {
 				if (null != this.polyline) {
 					this.polyline.remove();
 				}
-				var dot = new Dot(latLng, this.map, this);
+				var dot = new Dot(latLng, this.i, this.map, this);
+				this.i += 1;
 				this.listOfDots.push(dot);
 				this.refreshInfo();
 				if (this.listOfDots.length > 1) {
@@ -53,7 +52,6 @@ function Pen(map) {
 	}
 	this.drawPolygon = function(listOfDots, color, des, id) {
 		this.polygon = new Polygon(listOfDots, this.map, this, color, des, id);
-		// this.deleteMis();
 	}
 	this.deleteMis = function() {
 		$.each(this.listOfDots, function(index, value) {
@@ -65,13 +63,6 @@ function Pen(map) {
 			this.polyline = null;
 		}
 	}
-	this.cancel = function() {
-		if (null != this.polygon) {
-			(this.polygon.remove());
-		}
-		this.polygon = null;
-		this.deleteMis();
-	}
 	this.setCurrentDot = function(dot) {
 		this.currentDot = dot;
 	}
@@ -103,40 +94,62 @@ function Pen(map) {
 		var n = listOfDots.length;
 		for (var i = 0; i < n; i++) {
 			var latLng = listOfDots[i].latLng;
-			var gk3_coords = proj4(fromProjection, toProjection, [
-					latLng.lng(), latLng.lat() ]);
+			var gk3_coords = proj4(fromProjection, toProjection, [ latLng.lng(), latLng.lat() ]);
 			xs.push(gk3_coords[0] - 3500000);
 			ys.push(gk3_coords[1] - 5000000);
 			data += "(" + (gk3_coords.toString() + ")<br/>");
 		}
 		if (n > 2) {
-			data += "<br/>\nArea : "
-					+ (Math.round(polygonArea(xs, ys) / 1000) / 10).toString()
-					+ " ha<br/>";
+			data += "<br/>\nArea : " + (Math.round(polygonArea(xs, ys) / 1000) / 10).toString() + " ha<br/>";
 		}
 		return data;
+	}
 
+	this.updateDot = function(marker) {
+		var old_dot = this.listOfDots[marker.zIndex];
+		old_dot.setLatLng(marker.getPosition());
+		this.polyline.remove();
+		this.polyline = new Line(this.listOfDots, this.map);
+		this.polyline
+		if (null != this.polygon) {
+			(this.polygon.remove());
+			this.polygon = null;
+			this.drawPolygon(this.listOfDots);
+		}
+		this.refreshInfo();
 	}
 }
 
-function Dot(latLng, map, pen) {
+function Dot(latLng, i, map, pen) {
 	this.latLng = latLng;
 	this.parent = pen;
 	this.markerObj = new google.maps.Marker({
 		position : this.latLng,
-		// draggable: true,
-		map : map
+		draggable : true,
+		map : map,
+		zIndex : i
 	});
 	this.addListener = function() {
 		var parent = this.parent;
 		var thisMarker = this.markerObj;
 		var thisDot = this;
 		google.maps.event.addListener(thisMarker, 'click', function() {
+			// console.log("CLICKED");
 			parent.setCurrentDot(thisDot);
 			parent.draw(thisMarker.getPosition());
 		});
 	}
 	this.addListener();
+	this.addListener = function() {
+		var parent = this.parent;
+		var thisMarker = this.markerObj;
+		var thisDot = this;
+		google.maps.event.addListener(thisMarker, 'drag', function() {
+			// console.log("DRAGGED");
+			parent.updateDot(thisMarker);
+		});
+	}
+	this.addListener();
 	this.getLatLng = function() {
 		return this.latLng;
 	}
@@ -146,6 +159,9 @@ function Dot(latLng, map, pen) {
 	this.remove = function() {
 		this.markerObj.setMap(null);
 	}
+	this.setLatLng = function(latLng) {
+		this.latLng = latLng;
+	}
 }
 
 function Line(listOfDots, map) {
@@ -207,10 +223,9 @@ function Polygon(listOfDots, map, pen, color) {
 	}
 	this.addListener = function() {
 		var thisPolygon = this.polygonObj;
-		google.maps.event.addListener(thisPolygon, 'rightclick',
-				function(event) {
-					return false;
-				});
+		google.maps.event.addListener(thisPolygon, 'rightclick', function(event) {
+			return false;
+		});
 	}
 	this.addListener();
 }