Напиши функцию, для скрола вниз при новом сообщении. И при новом сообщении выполняй ее. Плюс сделай проверку, если пользователь прокрутил очень много от конца чата, чтобы не запускать этот самый скролл вниз.
Перед тем как открыть, считываешь все координаты ( высота/ширина диалога, положение от верха / слева страницы, высота страницы и и.п), сравниваешь, добавляешь классы и уже потом открываешь диалог.