Нужно, чтобы
show_message собирала сообщения в стек, и по оканчанию каждой анимации запускала следующую. Тип того:
var show_message = function () {
var stack = [];
var inProgress = false;
function animate() {
var currentMessage = stack.shift();
/*
тут запускаешь свои анимации и
в коллбэке по завершению, запускаешь
следующую:
if (stack.length) animate();
else inProgress = false;
*/
}
return function (message) {
stack.push(message);
if (!inProgress) {
inProgress = true;
animate();
}
};
} ();