source: trunk/phpgwapi/js/htmlarea/popupwin.js @ 2

Revision 2, 3.7 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1// (c) dynarch.com 2003-2004
2// Distributed under the same terms as HTMLArea itself.
3
4function PopupWin(editor, title, handler, initFunction) {
5        this.editor = editor;
6        this.handler = handler;
7        var dlg = window.open("", "__ha_dialog",
8                              "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
9                              "scrollbars=no,resizable=no");
10        this.window = dlg;
11        var doc = dlg.document;
12        this.doc = doc;
13        var self = this;
14
15        var base = document.baseURI || document.URL;
16        if (base && base.match(/(.*)\/([^\/]+)/)) {
17                base = RegExp.$1 + "/";
18        }
19        if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
20                // _editor_url doesn't start with '/' which means it's relative
21                // FIXME: there's a problem here, it could be http:// which
22                // doesn't start with slash but it's not relative either.
23                base += _editor_url;
24        } else
25                base = _editor_url;
26        if (!/\/$/.test(base)) {
27                // base does not end in slash, add it now
28                base += '/';
29        }
30        this.baseURL = base;
31
32        doc.open();
33        var html = "<html><head><title>" + title + "</title>\n";
34        // html += "<base href='" + base + "htmlarea.js' />\n";
35        html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
36        html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
37        doc.write(html);
38        doc.close();
39
40        // sometimes I Hate Mozilla... ;-(
41        function init2() {
42                var body = doc.body;
43                if (!body) {
44                        setTimeout(init2, 25);
45                        return false;
46                }
47                dlg.title = title;
48                doc.documentElement.style.padding = "0px";
49                doc.documentElement.style.margin = "0px";
50                var content = doc.createElement("div");
51                content.className = "content";
52                self.content = content;
53                body.appendChild(content);
54                self.element = body;
55                initFunction(self);
56                dlg.focus();
57        };
58        init2();
59};
60
61PopupWin.prototype.callHandler = function() {
62        var tags = ["input", "textarea", "select"];
63        var params = new Object();
64        for (var ti in tags) {
65                var tag = tags[ti];
66                var els = this.content.getElementsByTagName(tag);
67                for (var j = 0; j < els.length; ++j) {
68                        var el = els[j];
69                        var val = el.value;
70                        if (el.tagName.toLowerCase() == "input") {
71                                if (el.type == "checkbox") {
72                                        val = el.checked;
73                                }
74                        }
75                        params[el.name] = val;
76                }
77        }
78        this.handler(this, params);
79        return false;
80};
81
82PopupWin.prototype.close = function() {
83        this.window.close();
84};
85
86PopupWin.prototype.addButtons = function() {
87        var self = this;
88        var div = this.doc.createElement("div");
89        this.content.appendChild(div);
90        div.className = "buttons";
91        for (var i = 0; i < arguments.length; ++i) {
92                var btn = arguments[i];
93                var button = this.doc.createElement("button");
94                div.appendChild(button);
95                button.innerHTML = HTMLArea.I18N.buttons[btn];
96                switch (btn) {
97                    case "ok":
98                        button.onclick = function() {
99                                self.callHandler();
100                                self.close();
101                                return false;
102                        };
103                        break;
104                    case "cancel":
105                        button.onclick = function() {
106                                self.close();
107                                return false;
108                        };
109                        break;
110                }
111        }
112};
113
114PopupWin.prototype.showAtElement = function() {
115        var self = this;
116        // Mozilla needs some time to realize what's goin' on..
117        setTimeout(function() {
118                var w = self.content.offsetWidth + 4;
119                var h = self.content.offsetHeight + 4;
120                // size to content -- that's fuckin' buggy in all fuckin' browsers!!!
121                // so that we set a larger size for the dialog window and then center
122                // the element inside... phuck!
123
124                // center...
125                var el = self.content;
126                var s = el.style;
127                // s.width = el.offsetWidth + "px";
128                // s.height = el.offsetHeight + "px";
129                s.position = "absolute";
130                s.left = (w - el.offsetWidth) / 2 + "px";
131                s.top = (h - el.offsetHeight) / 2 + "px";
132                if (HTMLArea.is_gecko) {
133                        self.window.innerWidth = w;
134                        self.window.innerHeight = h;
135                } else {
136                        self.window.resizeTo(w + 8, h + 35);
137                }
138        }, 25);
139};
Note: See TracBrowser for help on using the repository browser.