Here are the math-y bits, courtesy of @ch402:
// The math-y bits
var a2 = Math.atan2(source.y, source.x);
var angle = function(source, compare) {
var cross = source.x * compare.y - source.y * compare.x;
var sd = Math.sqrt(source.x * source.x + source.y * source.y);
var cd = Math.sqrt(compare.x * compare.x + compare.y * compare.y);