Para arrastrar el elemento podemos usar position:fixed, esto hace las coordenadas más fáciles de manejar. Al final deberíamos devolverla a position:absolute para fijar el elemento en el documento.
Cuando las coordinadas están en el tope/fondo de la ventana, usamos window.scrollTo para desplazarla.
Más detalles en el código, en los comentarios.