1 // Copyright (C) 2005 Rod Roark <rod@sunsetsystems.com>
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
8 // open a new cascaded window
9 function cascwin(url
, winname
, width
, height
, options
) {
10 var mywin
= window
.parent
? window
.parent
: window
;
11 var newx
= 25, newy
= 25;
12 if (!isNaN(mywin
.screenX
)) {
13 newx
+= mywin
.screenX
;
14 newy
+= mywin
.screenY
;
15 } else if (!isNaN(mywin
.screenLeft
)) {
16 newx
+= mywin
.screenLeft
;
17 newy
+= mywin
.screenTop
;
19 if ((newx
+ width
) > screen
.width
|| (newy
+ height
) > screen
.height
) {
23 return window
.open(url
, winname
, options
+
24 ",width=" + width
+ ",height=" + height
+
25 ",left=" + newx
+ ",top=" + newy
+
26 ",screenX=" + newx
+ ",screenY=" + newy
);
29 // recursive window focus-event grabber
30 function grabfocus(w
) {
31 for (var i
= 0; i
< w
.frames
.length
; ++i
) grabfocus(w
.frames
[i
]);
32 w
.onfocus
= top
.imfocused
;
34 // the following was tried and discarded because it's too invasive and
35 // does not help anyway, but i left it here for the curious.
37 // for (var i = 0; i < w.document.forms.length; ++i) {
38 // var e = w.document.forms[i].elements;
39 // for (var j = 0; j < e.length; ++j) {
40 // e[j].onfocus = top.imfocused;
45 // call this when a "modal" dialog is desired
46 function dlgopen(url
, winname
, width
, height
) {
47 if (top
.modaldialog
&& ! top
.modaldialog
.closed
) {
48 if (window
.focus
) top
.modaldialog
.focus();
49 if (top
.modaldialog
.confirm("OK to close this other popup window?")) {
50 top
.modaldialog
.close();
51 top
.modaldialog
= null;
56 top
.modaldialog
= cascwin(url
, winname
, width
, height
,
57 "resizable=1,scrollbars=1");