var locator;
var pos = new Point(0,0);
var angle = new Point(0,0);
var tolerance = 2;

function onMouseDrag(event)
{
	var invert = (event.point - pos).angle > 0 ? 1 : 0;
	
	if(document.getItems({selected: true}).length> 0)
	{
		var selected = document.getItems({selected: true})[0];
		var hitResult = document.hitTest(event.point, 'paths', tolerance);
		
		if(hitResult && hitResult.item != locator)
		{
			normal = hitResult.curve.getTangent(hitResult.parameter);
			pos = hitResult.curve.getPoint(hitResult.parameter);
		}
		
		if(locator != null)
		{
			locator.remove();
		}
		//to avoid some strange alerts
		if(selected.isValid())
		{
			locator = selected.clone();
			locator.position.x = pos.x;
			locator.position.y = pos.y - locator.bounds.height/2;
			locator.rotate(normal.angle + 180 * invert, locator.bounds.bottomCenter);
		}
	}
	else
	{
		Dialog.alert('Select an object first');
	}
}

function onMouseUp(event)
{
	if(locator != null)
	{
		document.deselectAll();
		locator.fullySelected = true;
	}
}