
function selectNone() {
	for (i=0; i<diagram.length; i++) {
		diagram[i].selected = false;
	}
}

function select(point, shift) {
	magnet = getMagnetAtPoint(point);
	if (magnet) {
		selectedMagnets = [ magnet ];
		return;
	}

	// no magnets were found.  try selecting an object
	for (var i=diagram.length-1; i>=0; i--) {
		if (containsPoint(diagram[i], point)) {
			if (diagram[i].selected && shift) {
				diagram[i].selected = false;
				showEditorPanel(null);
				selectedMagnets = [];
			} else {
				if (!diagram[i].selected && !shift) {
					selectNone();
				}
				diagram[i].selected = true;
				showEditorPanel(diagram[i]);
				selectedMagnets = [];
				for (var j=0; j<diagram.length; j++) {
					if (diagram[j].selected && diagram[j].magnets) {
						selectedMagnets[selectedMagnets.length] = diagram[j].magnets[0];
					}
				}
			}
			return;
		}
	}

	selectedMagnets = [];
	if (!shift) {
		selectNone();
	}
}

var selectedMagnets = [];
var previousPosition = null;

selectTool = {
	"mouseDown" : function(point, shift) {
		select(point, shift);
		previousPosition = point;
		redraw();
	},

	"mouseUp" : function(point, shift) {
		selectedMagnets = [];
		previousPosition = null;
	},

	"mouseMove" : function(point, shift) {
		highlightMagnet(getMagnetAtPoint(point));
		for (var i=0; i<selectedMagnets.length; i++) {
			var selectedMagnet = selectedMagnets[i];
			if (selectedMagnet) {
				//selectedMagnet.x += point.x-previousPosition.x;
				//selectedMagnet.y += point.y-previousPosition.y;
				moveMagnet(selectedMagnet,
					addMagnets(selectedMagnet,
						addMagnets(point,
							makeMagnet(-previousPosition.x, -previousPosition.y))));
			}
		}
		previousPosition = point;
		redraw();
	}
}

