
var rectangle = {
	"draw" : function(rect, context) {
		p0 = rect.magnets[0];
		p1 = rect.magnets[1];
		p2 = rect.magnets[2];
		p3 = rect.magnets[3];
		p4 = rect.magnets[4];
		context.fillStyle=rect.color;
		context.fillRect(p1.x,p1.y,p4.x-p1.x,p4.y-p1.y);
	},

	"drawSelected" : line.drawSelected,

	"containsPoint" : function(rect, point) {
		p0 = rect.magnets[0];
		p1 = rect.magnets[1];
		p2 = rect.magnets[2];
		p3 = rect.magnets[3];
		p4 = rect.magnets[4];
		if (point.x > p1.x) {
			if (point.y > p1.y) {
				if (point.x < p4.x) {
					if (point.y < p4.y) {
						return true;
					}
				}
			}
		}
		return false;
	},

	"moveMagnet" : function(rect, oldMagnet, newMagnet) {
		p0 = rect.magnets[0];
		p1 = rect.magnets[1];
		p2 = rect.magnets[2];
		p3 = rect.magnets[3];
		p4 = rect.magnets[4];
		var width = p4.x-p1.x;
		var height = p4.y-p1.y;
		var found = false;
		if (oldMagnet == p0) {
			found = true;
			p1.x = newMagnet.x-(width/2);
			p1.y = newMagnet.y-(height/2);
		} else if (oldMagnet == p1) {
			found = true;
			width = p4.x-newMagnet.x;
			height = p4.y-newMagnet.y;
			p1.x = newMagnet.x;
			p1.y = newMagnet.y;
		} else if (oldMagnet == p2) {
			found = true;
			width = newMagnet.x-p1.x;
			height = p4.y-newMagnet.y;
			p1.y = newMagnet.y;
		} else if (oldMagnet == p3) {
			found = true;
			width = p4.x-newMagnet.x;
			height = newMagnet.y-p1.y;
			p1.x = newMagnet.x;
		} else if (oldMagnet == p4) {
			found = true;
			width = newMagnet.x-p1.x;
			height = newMagnet.y-p1.y;
		}
		if (found) {
			p0.x = p1.x+(width/2);
			p0.y = p1.y+(height/2);
			p4.x = p1.x+width;
			p4.y = p1.y+height;
			p2.x = p4.x;
			p2.y = p1.y;
			p3.x = p1.x;
			p3.y = p4.y;
		}
	},

	"showEditorPanel" : function(rect, panel) {
		var update = function() {
			rect.color = colorInput.value;
			redraw();
		};

		var colorLabel = document.createElement("span");
		colorLabel.appendChild(document.createTextNode("color: "));
		var colorInput = document.createElement("input");
		colorInput.value = rect.color;
		colorInput.onchange = update;
		panel.appendChild(colorLabel);
		panel.appendChild(colorInput);
	},

	"toSource" : function(rect) {
		var s = "  {\n    type:\"rectangle\",\n    color:\"";
		s += rect.color;
		s += "\",\n    magnets:"+magnetListToSource(rect.magnets)+"\n  }";
		return s;
	}
}


