вот, нашел:

Код:
// уравнение прямой
function findABC(x1, y1, x2, y2){
var dx = x2-x1, dy = y2-y1;
return {a:dx, b:dy, c: x1*dy - y1*dx };
}
// проверка на пересечение
function checkIt( x1, y1, x2, y2, x3, y3, x4, y4 ){
var line1 = findABC( x1, y1, x2, y2 );
var line2 = findABC( x3, y3, x4, y4 );
var det = line1.a*line2.b - line2.a*line1.b;
// параллельны?
if (det == 0) return null;
// точка пересечения
var y0 = (line1.b*line2.c - line2.b*line1.c)/det;
var x0 = (line1.a*line2.c - line2.a*line1.c)/det;
// а лежит она на отрезках?
var XS = ( x1 == x2 ) ? true : ( ( x1 > x2 ) ? ( x1 > x0) && (x0 > x2) : ( x1 < x0) && ( x0 < x2 ) );
var XS2 = ( x3 == x4 ) ? true : ( ( x3 > x4 ) ? ( x3 > x0) && (x0 > x4) : ( x3 < x0) && ( x0 < x4 ) );
var YS = ( y1 == y2 ) ? true : ( ( y1 > y2 ) ? ( y1 > y0) && (y0 > y2) : ( y1 < y0) && ( y0 < y2 ) );
var YS2 = ( y3 == y4 ) ? true : ( ( y3 > y4 ) ? ( y3 > y0) && (y0 > y4) : ( y3 < y0) && ( y0 < y4 ) );
if(XS && XS2 && YS && YS2) return { x:x0, y:y0 };
else return null;
}
способ проверки, попадает ли точка на отрезок, мягко говоря туповат..