function splitPath(path) {
var avgd = 0, i, d;
var c, pc, dx, dy;
var points = path.split("L");
if (points.length < 2) return path;
var newpath = [ points[0] ];
var coords = points.map(function(d, i) {
// remove M and split
return d.substr(i > 0 ? 0 : 1).split(",");
});
// calc avg dist between points
for (i = 1; i < coords.length; i++) {
pc = coords[i-1]; c = coords[i];
dx = c[0] - pc[0]; dy = c[1] - pc[1];
d = Math.sqrt(dx*dx + dy*dy);
c.push(d); // push dist as last elem of c
avgd += d;
}
avgd /= coords.length - 1;
// for points with long dist from prev use M instead of L
for (i = 1; i < coords.length; i++) {
c = coords[i];
newpath.push((c[2] > 2 * avgd ? "M" : "L") + points[i]);
}
return newpath.join();
}