Хз зачем я это сделал
Демо-страница
dialog.js
Вызывается функцией Dialog(), которая создаёт новое окно и принимает эти параметры:
Dialog( {
width : 400,
height : 200,
header : "Заголовок окна",
body : "Содержимое окна",
animated : false, // анимация при сворачивании, показе и скрытии
duration : 1000, // время для всех анимаций
modal : false, // блокировать ли содержимое страницы
noToggle : false, // не отображать кнопку "Свернуть"
noClose : false, // не отображать кнопку "Закрыть"
onlyThisWindow: false, // запретить показ других окон
onToggle : function (isOpen) {},
onClose : function () {}
} );
Dialog() возвращает объект, помогающий в дальнейшем работать с окном:
var bx = Dialog( ... );
bx.Box; // ссылка на DIV, содержащий все элементы окна (кроме Modal)
bx.Header; // ссылка на заголовок окна
bx.Body; // ссылка на тело окна
bx.ButtonClose; // кнопка "Закрыть"
bx.ButtonToggle; // кнопка "Свернуть/Развернуть"
bx.Modal; // DIV, реализующий модальность окна
bx.UserData; // объект data, переданный в Dialog( data )
bx.triggerClose(); // закрыть окно принудительно
bx.triggerToggle(); // свернуть или развернуть
bx.id; // уникальный ID окна
bx.onToggle(isOpen); // добавить обработчик на сворачивание/разворачивание окна
bx.onClose(); // добавить обработчик на закрытие окна
Примечательно, что в обработчик onToggle первым аргументом передаётся true, если окно на данный момент открыто и false, если свёрнуто.
Также есть глобальные свойства:
Dialog.onlyOneWindow = false; // запретить показ больше одного окна
Dialog.windows = []; // массив, содержащий данные о всех открытых окнах