I do not understand. If there is no need for the first .animate(), then why do this? If you just need an extra 400ms, add it to the first one .delay().
Example: http://jsfiddle.net/LFt4k/
$("#top-message").delay(1400).animate({top: '0px'},800)
.delay(3000).animate({top: '-500px'},800);
You do not need a start .animate()to start the queue. The method.delay() will use the "fx"default queue .
EDIT:
, , , #top-message top, auto. .
, #top-message CSS:
#top-message {
top: -500px;
}
... javascript:
$("#top-message").css({top:-500})
.delay(1400).animate({top: '0px'},800)
.delay(3000).animate({top: '-500px'},800);