Я не совсем слежу за вашим кодом, но вот фрагмент из другого проекта, который может помочь. Вы можете настроить значения x, y и limitY, чтобы они соответствовали вашему дизайну.
$('a.tooltip').mousemove(function(e) {
var x = pageX = e.pageX,
y = pageY = e.pageY,
$elem = $( '#tooltip' ),
height = $elem.outerHeight( true ),
width = $elem.outerWidth( true ),
limitY = height + 15,
maxX = $(window).width() - width,
maxY = $(window).height() - height;
if ( !isNaN(x) && !isNaN(y) ) {
x += 10;
y -= 30;
x = Math.max( 0, Math.min( maxX, x ) );
y = Math.max( 0, Math.min( maxY, y ) );
if( pageY < limitY ) {
y = limitY;
}
$elem.css({ left: x, top: y });
}
});