probaste poniendo una posición negativa, y luego animarla animate() hacia abajo?
jquery tiene varias soluciones para un mismo efecto, navega un poco su documentación.
respecto a setTimeout, existe una función llamada delay(),casi seguro que puedes aplicarla ahí
en mi opinión, ese if - else lo ideal seria que lo metieras en una función, y la llamaras con un evento, aplicando $(this)
para interactuar con los efectos/eventos/funciones apuntadas a un mismo objeto