<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Example</title>
	<link rel="stylesheet" href="../css/style.css">
	<script type="text/javascript" src="../../dist/paper.js"></script>
	<script type="text/paperscript" canvas="canvas">
	var i, text, handleInText, handleOutText, y
		segmentTexts = [],
		handleTexts = [],
		path = new Path();

	path.fullySelected = true;

	function onMouseMove(event) {
		var delta, i, curve, firstPoint, secondPoint,
			point = event.point.clone();
		// Constrain the event point, to not cut off the text:
		if (point.y < 22) {
			point.y = 22;
		}
		if (point.y > view.size.height - 24) {
			point.y = view.size.height - 24;
		}
	    delta = point - view.center;
		for (i = 0; i < path.segments.length; i++) {
			segmentTexts[i].point = path.segments[i].point - [0, 10];
		}
		for (i = 0; i < path.curves.length; i++) {
			curve = path.curves[i];
			curve.handle1.y = curve.handle2.y = delta.y * (i % 2 ? 1 : -1);
			firstPoint = curve.point1 + curve.handle1;
			secondPoint = curve.point2 + curve.handle2;
			handleTexts[i * 2].point = secondPoint -
					(firstPoint.y < y ? [0, 10] : [0, -18]);
			handleTexts[i * 2 + 1].point = firstPoint -
					(firstPoint.y < y ? [0, 10] : [0, -18]);
		}
	}

	function onResize(event) {
		var width = view.size.width,
			offset = width / 30,
			vector = new Point({
		    	angle: 45,
		    	length: width / 5
			});
		y = view.size.height / 2;
		path.segments = [
			[[offset, y], null, vector.rotate(-90)],
			[[width / 2, y], vector.rotate(-180), vector],
			[[width - offset, y], vector.rotate(90), null]
		];
		onMouseMove({
			point: new Point(event.size.width, event.size.height - 24)
		});
	}

	project.currentStyle.fillColor = 'black';

	for (i = 0; i < 3; i++) {
		text = new PointText();
		text.content = '' + i;
		text.justification = 'center';
		text.fontSize = 9;
		segmentTexts.push(text);
	}

	for (i = 0; i < 2; i++) {
		handleInText = new PointText();
		handleInText.content = 'handleIn';
		handleInText.justification = 'center';
		handleInText.fontSize = 9;
		handleTexts.push(handleInText);

		handleOutText = new PointText();
		handleOutText.content = 'handleOut';
		handleOutText.justification = 'center';
		handleOutText.fontSize = 9;
		handleTexts.push(handleOutText);
	}

	// Call onResize once to correctly position everything
	onResize({
		size: {
			width: view.size.width,
			height: view.size.height * 2 / 3
		}
	});
	</script>
</head>
<body>
	<canvas id='canvas' width=303 height=167 resize></canvas>
</body>
</html>