// Based on Wallblazer Script by the mighty graf salamander and Pedro
// Idea and first code by Karl Badde www.ninedaysoff.de
// Code rewritten by Jonathan Puckey www.jonathanpuckey.com

var values = {
	anchorSize: 3,
	tStrokeWidth: 0.25,
	handleSize: 3
};

var fillCol = new CMYKColor(0, 1, 1, 0);

values = Dialog.prompt('set Anchorman values', {
	anchorSize: { description: 'anchor size'},
	tStrokeWidth: { description: 'tangent stroke'},
	handleSize: { description: 'handler size'}
}, values);


var anchors = new Group();
var tangents = new Group();
var handles = new Group();
var all = new Group([handles, anchors, tangents]);

var selItems = document.selectedItems;
var selLen = selItems.length;
for(var i=0; i<selLen; i++){
	var art = document.selectedItems[i];
	drawCurves(art)
}

function drawCurves(art){
	var l = art.children.length;
	if(l){
		for(var i = 0; i < l; i++){
			drawCurves(art.children[i])
		}
	}else{
		var curveL = art.curves.length;
		for (var i = 0; i < curveL; i++){
			var curve = art.curves[i];
			drawCurve(curve);
		}
	}
}

function drawCurve(curve){
	var pt1 = curve.point1;
	var pt2 = curve.point2;
	var handle1 = curve.handle1 + pt1;
	var handle2 = curve.handle2 + pt2;
	
	if(!pt1.equals(handle1)){

		var tangent = createTangent(pt1, handle1, fillCol, values.tStrokeWidth);
		tangents.appendTop(tangent);

		var handle = createHandle(handle1, values.handleSize, fillCol);
		handles.appendTop(handle);

	}
	
	if(!pt2.equals(handle2)){

		var tangent = createTangent(pt2, handle2, fillCol, values.tStrokeWidth);
		tangents.appendTop(tangent);
		
		var handle = createHandle(handle2, values.handleSize, fillCol);
		handles.appendTop(handle);
	}
	
	var anchor = createAnchor(pt1, values.anchorSize, fillCol);
	anchors.appendTop(anchor);

	var anchor = createAnchor(pt2, values.anchorSize, fillCol);
	anchors.appendTop(anchor);
}

function createAnchor(point, size, fillColor){
	var rec = new Rectangle(point, point + size) {
		center: point
	};
	return new Path.Rectangle(rec) {
		strokeColor: null,
		fillColor: fillColor
	};
}

function createHandle(point, size, fillColor){
	var rec = new Rectangle(point, point + size) {
		center: point
	};

	return new Path.Oval(rec) {
		strokeColor: null,
		fillColor: fillColor
	};
}

function createTangent(pt, pt2, strokeColor, strokeWidth){
	return new Path.Line(pt, pt2) {
		strokeWidth: strokeWidth,
		strokeColor: strokeColor,
		fillColor: null
	};
}
