Эта функция должна помочь:
function overCell(x,y)
{
//top left
var f1 = -CELL_HEIGHT/CELL_WIDTH * (x%CELL_WIDTH) + CELL_HEIGHT/2;
//bottom left
var f2 = CELL_HEIGHT/CELL_WIDTH * (x%CELL_WIDTH) + CELL_HEIGHT/2;
//top right
var f3 = CELL_HEIGHT/CELL_WIDTH * (x%CELL_WIDTH) - CELL_HEIGHT/2;
//bottom right
var f4 = -CELL_HEIGHT/CELL_WIDTH * (x%CELL_WIDTH) + 3*CELL_HEIGHT/2;
if (f1 > 0 && f1 < CELL_HEIGHT/2 && y%CELL_HEIGHT <= f1)
{
activeCell.css({
"left":(x-x%CELL_WIDTH - CELL_WIDTH/2)+"px",
"top" :(y-y%CELL_HEIGHT - CELL_HEIGHT/2)+"px"
});
}
else if (f2 > CELL_HEIGHT/2 && f2 < CELL_HEIGHT && y%CELL_HEIGHT >= f2)
{
activeCell.css({
"left":(x-x%CELL_WIDTH - CELL_WIDTH/2)+"px",
"top" :(y-y%CELL_HEIGHT + CELL_HEIGHT/2)+"px"
});
}
else if (f3 > 0 && f3 < CELL_HEIGHT/2 && y%CELL_HEIGHT <= f3)
{
activeCell.css({
"left":(x-x%CELL_WIDTH + CELL_WIDTH/2)+"px",
"top" :(y-y%CELL_HEIGHT - CELL_HEIGHT/2)+"px"
});
}
else if (f4 < CELL_WIDTH/2 && f4 > CELL_WIDTH/4 && y%CELL_HEIGHT >= f4)
{
activeCell.css({
"left":(x-x%CELL_WIDTH + CELL_WIDTH/2)+"px",
"top" :(y-y%CELL_HEIGHT + CELL_HEIGHT/2)+"px"
});
}
else
{
activeCell.css({
"left":(x-x%CELL_WIDTH)+"px",
"top" :(y-y%CELL_HEIGHT)+"px"
});
}
}