As mentioned you're not waiting until one animation has finished before you start the other. You have just set them up to in effect start all at the same time. Whilst you have used some callbacks i'm confident you understand how they work and just need to put more in.
So callbacks
are needed:
$('#overlay').fadeIn(500, function () {
$('#overlaybox').animate({ 'top': '40px' }, 100);
});
$('#survey').slideUp(1500, function(){
console.log('-after overlay show');
console.log('before ajaxPutSurveyItems()');
ajaxPutSurveyItems(save, after);
console.log('after ajaxPutSurveyItems()');
$('#survey').slideDown(1500, function(){
$('#overlaybox').animate({ 'top': '-200px' }, 300, function () {
$('#overlay').fadeOut(2500);
});
});
console.log('-after overlay hide');
});