// 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 anchorSize = 3;
var tStrokeWidth = 0.25;
var handleSize = 3;
var fillCol = new CMYKColor(0,1,1,0);

values = Dialog.prompt("set Anchorman values", [
	{ value: anchorSize, description: "anchor size", width: 50 },
	{ value: tStrokeWidth, description: "tangent stroke", width: 50 },
	{ value: handleSize, description: "handler size", width: 50 }
]);

if (values != null ) {
	anchorSize = values[0];
	tStrokeWidth = values[1];
	handleSize = values[2];
	
	var anchors = new Group();
	var tangents = new Group();
	var handles = new Group();
	var all = new Group([anchors,tangents,handles]);

	var selItems = activeDocument.selectedItems;
	var selLen = selItems.length;
	for(var i=0; i<selLen; i++){
		var art = activeDocument.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.add(pt1);
	var handle2 = curve.handle2.add(pt2);
	
	if(!pt1.equals(handle1)){

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

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

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

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

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

function createAnchor(point,size,fillColor){
	var sizeP = new Point(size,size);
	var rec = new Rectangle(point,point.add(sizeP));
	rec.center = point;
	var anchor = activeDocument.createRectangle(rec);
	anchor.style.stroke.color=null;
	anchor.style.fill.color=fillColor;
	return anchor;
}

function createHandle(point,size,fillColor){
	var sizeP = new Point(size,size);
	var rec = new Rectangle(point,point.add(sizeP));
	rec.center = point;
	var handle = activeDocument.createOval(rec);
	handle.style.stroke.color=null;
	handle.style.fill.color=fillColor;
	return handle
}

function createTangent(pt,pt2,strokeColor,strokeWidth){
	var tangent = new Path();
	tangent.segments.add(pt);
	tangent.segments.add(pt2);
	tangent.style.stroke.width=strokeWidth;
	tangent.style.stroke.color=strokeColor;
	tangent.style.fill.color=null;
	return tangent;
}
