1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119: |
/* KONSTANTE(N) ************************************************************/
/* vordefinierte site-weite default-größen: */
var standardX = 500;
var standardY = 560;
var autoX = 300;
var autoY = 300;
var helpX = 450;
var helpY = 500;
var schweinigX = 200;
var schweinigY = 150;
var popupProperties = "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes";
/* INTERNE HILFSFUNKTION(EN) ***********************************************/
/* getHrefFromA gibt das href-attribut des kompletten a-elements zurück, */
/* falls ein solches übergeben worden ist. wenn nicht, dann nicht. */
/* dies macht nur sinn, wenn unser liebes cms nps die links verwaltet */
function getHrefFromA( url ) {
/* vb: fixme: das ist noch nicht der href, */
/* sondern einfach das erste doppelt gequotete attribut: */
return (url.indexOf( "<a" ) == 0) ? url.split( """ )[ 1 ] : url;
}
/* ÖFFENTLICHE FUNKTIONEN ***********+**************************************/
/* windowOpen funktioniert mit 0, 1, 2, 3, 4 parametern: */
/* 0: leere seite (about:blank) mit standard-größen */
/* 1: angegebene url (bitte kompletter a-tag) mit standard-größen */
/* 2: angegebene url (bitte kompletter a-tag) mit anderen standard-größen */
/* 3: angegebene url (bitte kompletter a-tag) mit den übergebenen größen */
/* 4: angegebene url mit breite & höhe in ein fenster mit speziellem namen */
//var popup;
function windowOpen() {
/* der 1te parameter ist die url */
url = (windowOpen.arguments.length >= 1) ? getHrefFromA( windowOpen.arguments[ 0 ] ) : "about:blank";
/* bei 2 parametern ist der 2te der popup-typ (help, standard) als string */
type = (windowOpen.arguments.length == 2) ? windowOpen.arguments[ 1 ] : "standard";
if (type == "schweinig") {
/* vb: was das wort schweinig angeht: */
/* das javascript des popups muss natürlich auch noch seinen beitrag dazu beitragen: */
/* z.b.: resize, positionierung (bzw.move), rightclick=leftclick */
popupProperties = "fullscreen=yes";
}
/* wer hier was übergibt, das nicht über der funktion definiert ist, ist selber schuld */
bridth = eval( type + "X" );
height = eval( type + "Y" );
/* bei 3 parametern sind der 2te & der 3te die größenangaben */
if (windowOpen.arguments.length >= 3) {
bridth = parseInt( windowOpen.arguments[ 1 ] );
height = parseInt( windowOpen.arguments[ 2 ] );
/* vb: fixme: wenn hier müll übergeben worden ist, dann könnte man standardX & -Y hernehmen */
}
/* bei 4 parametern ist der letzte der name des popups, */
/* um mehrere popups gleichzeitig & unabhängig voneinander öffnen & ansprechen zu können. */
popupName = (windowOpen.arguments.length == 4) ? windowOpen.arguments[ 3 ] : "popup";
eval( 'if (' + popupName + ') { var ' + popupName + '; }' );
/* jetzt machen wir das fensterl auf */
popupStr = popupName + ' = window.open( "' + url + '", "' + popupName + '", "' + popupProperties + ',width=' + bridth + ',height=' + height + '" );';
//alert( popupStr );
//if (popup) alert( "popup gibts" );
if (eval( popupName )) {
//alert( popupName + " gibts schon" );
if (eval( popupName + '.closed' )) {
/* vb: fixme: ns6 scheint mir diesen fall nicht zu checken */
eval( popupStr );
} else {
/* vb: fixme: hier heißt das fenster noch einfach immer popup */
/* aber ich glaub, er kommt hier nie an (s.u.) */
popup.location.href = url;
popup.resizeTo( bridth, height );
popup.focus();
}
} else {
/* vb: fixme: durch das eval da oben scheint immer dieser fall zuzutreffen: */
eval( popupStr );
//eval( popupName + ".document.body.onload = alert( 'hi!' );" );
if (type == "auto") {
autoX = screen.availWidth;
autoY = screen.availHeight;
eval( popupName + ".resizeTo( " + autoX + ", " + autoY + " );" );
while (eval( popupName + ".document.body.scrollWidth" ) == eval( popupName + ".document.body.clientWidth" )) {
autoX -= 30;
eval( popupName + ".resizeTo( " + autoX + ", " + autoY + " );" );
}
autoX += 50;
eval( popupName + ".resizeTo( " + autoX + ", " + autoY + " );" );
//alert( eval( popupName + ".document.body.scrollWidth" ) );
}
/* vb: fixme: der netscape macht dann das innerfensterl so, ich will aber schon das outerfensterl */
/* außerdem gibts ne zugriffsverletzung, wenn du ne seite von wo anders drin hast */
//tempStr= popupName + ".resizeTo( " + bridth + ", " + height + " );";
//alert( tempStr );
//eval( tempStr );
eval( popupName + ".focus();" );
/* vb: fixme: wenn ein fenster mit dem gleichen namen & neuen größen gewünscht ist, */
/* dann sollte ich nicht nur reload & focus, sondern auch einen resize machen. */
}
}
/* windowOpener lädt die seite im fenster, das dich aufgemacht hat */
function windowOpener( url ) {
if (window.opener) window.opener.location.href = getHrefFromA( url );
}
/* windowPrint öffnet den dialog zum drucken, wenn möglich: */
function windowPrint() {
if (window.print) {
window.print();
} else {
/* vb: fixme: wer weiß, ob das für alle browser stimmt. */
/* vielleicht sollten wir browser.ns, browser.os & browser.lang berücksichtigen */
alert( "Bitte klicken Sie mit der rechten Maustaste in das Fenster, um den Inhalt auszudrucken." );
}
}
|