кхм... я канеш не настолько немеряно крут, чтобы написать три десятка строк за пол часа... и сортировку я не люблю... я люблю луну и спать...
но объясните мне, вот такого кода не достаточно для решения задачи ? :)

Код:
arr = [{x: ... , y: ...}, ..... ];
sortXY = function (a, b) {
return (a.y == b.y)*(a.x>b.x || -1) || (a.y>b.y || -1);
};
arr.sortOn("y");
arr.sort(sortXY);
зы: голову ! берегите голову !