add cms, add todo
[ssproject1617.git] / testcms-final-anon / system / admin / theme / assets / js / popup.js
1
2 var Popup = function() {
3
4 var $id = Number.random(100, 1000);
5
6 var overlay = new Element('div', {
7 'id': 'popup_overlay_' + $id,
8 'class': 'popup_overlay'
9 });
10
11 var box = new Element('div', {
12 'id': 'popup_box_' + $id,
13 'class': 'popup_box',
14 'styles': {
15 'opacity': 0
16 }
17 });
18
19 var position = function() {
20 var body = $$('body').pop(),
21 offset = body.getScroll(),
22 screen = body.getScrollSize(),
23 size = box.getSize();
24
25 return {
26 'left': (screen.x / 2) - (size.x / 2),
27 'top': offset.y + 50
28 };
29 };
30
31 var open = function() {
32 var body = $$('body'), options = arguments[0] || {};
33
34 // default options
35 var defaults = {
36 'content': new Element('p'),
37 'handle': false,
38 'width': 600
39 }
40
41 for(var key in defaults) {
42 options[key] = (options[key] === undefined) ? defaults[key] : options[key];
43 }
44
45 // append overlay
46 body.grab(overlay);
47
48 // apply box styles
49 box.setStyles({
50 'width': options.width
51 });
52
53 // append box
54 body.grab(box);
55
56 // add content
57 box.empty();
58 box.grab(options.content);
59
60 // position box and show
61 var pos = position();
62
63 box.setStyles({
64 'top': pos.top,
65 'left': pos.left
66 });
67
68 box.fade('in');
69
70 // bind events
71 overlay.addEvent('click', close);
72
73 if(options.handle.addEvent) {
74 options.handle.addEvent('click', close);
75 }
76 };
77
78 var close = function() {
79 overlay.dispose();
80 box.dispose();
81 return false;
82 };
83
84 return {
85 'open': open,
86 'close': close
87 };
88
89 };
90