Вот простейший пример реализации
jsfiddle.net, закрывается по кнопке и при клике вне попапа.
Если размеры заранее не известны то можно еще добавить функцию которая определяет высоту и при ресайзе центрует попап.
Если попапов очень много можно использовать у ссылок data атрибут, например data-target="callback", c именем целевого попапа и добавить соответствующую подстановку в функцию появления.