annotate client/digitallibrary/relato/relato.js @ 242:e2c455c2a0d0

new digimage with red triangles for moving the zoomed area (can be switched off with "clop=noarrows")
author robcast
date Wed, 04 Aug 2004 20:35:35 +0200
parents 41de43a00bf8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
1 top.name = 'f';
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
2
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
3 if ( !top.focused )
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
4 top.focused = new Object();
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
5
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
6
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
7 function identify() {
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
8 return 'Relato v0.1';
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
9 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
10
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
11
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
12 function frameSelected() {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
13 return top.focused != '';
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
14 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
15
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
16
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
17 function frameSelectable(name) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
18 // created by xls
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
19 var frames = protectedFrames();
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
20 var selectable = true;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
21 for (var i=0; i<frames.length; i++) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
22 if (frames[i] == name) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
23 selectable = false;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
24 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
25 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
26 return selectable;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
27 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
28
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
29
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
30 function noFrameSelected() {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
31 alert( "No frame activated at the moment - click on the desired frame to activate it!" );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
32 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
33
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
34
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
35 function nameOfSelectedFrame() {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
36 return top.focused.name;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
37 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
38
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
39
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
40 function selectedFrameObject() {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
41 return top.focused;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
42 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
43
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
44
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
45 function init() {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
46 // do the initialisation just if it is top-level relato
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
47 if ( top == window ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
48 init_rec( top, top.name );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
49 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
50 return true;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
51 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
52
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
53
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
54 function init_rec( current, name ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
55
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
56 if (current.frames.length > 0) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
57 for ( i=0; i < current.frames.length; i++ ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
58 if (!current.frames[i].name) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
59 current.frames[i].name = name + i;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
60 }
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
61 if (frameSelectable(current.frames[i].name)) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
62 current.frames[i].addEventListener( 'click', focusListener, true );
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
63 if (current.frames[i].name == nameOfSelectedFrame()) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
64 top.focused = current.frames[i];
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
65 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
66 } else {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
67 if (current.frames[i] == selectedFrameObject()) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
68 top.focused = '';
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
69 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
70 }
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
71 current.frames[i].addEventListener( 'unload', unloadListener, true );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
72 init_rec( current.frames[i], current.frames[i].name );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
73 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
74 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
75 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
76
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
77
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
78 function listFrames() {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
79
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
80 var frames = new Array();
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
81
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
82 function listFrames_rec( current ) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
83
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
84 if (current.frames.length > 0) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
85 for (var i=0; i < current.frames.length; i++) {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
86 listFrames_rec(current.frames[i]);
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
87 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
88 } else {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
89 frames.push(current);
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
90 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
91 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
92
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
93 listFrames_rec(top);
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
94
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
95 return frames;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
96
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
97 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
98
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
99
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
100 function getXML() {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
101 query_string = location.search;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
102 query_string.search(/xml=([^\&]*)\&/);
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
103 return RegExp.$1;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
104 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
105
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
106
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
107 function blink() {
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
108 orig_color = top.focused.document.bgColor;
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
109 top.focused.document.bgColor="black";
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
110 setTimeout('top.focused.document.bgColor="' + orig_color + '"', 100);
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
111 }
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
112
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
113
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
114 function focusListener( event ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
115
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
116 var active = this;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
117
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
118 if ( event.ctrlKey ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
119 active = this.parent;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
120 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
121
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
122 // can be used in future to mark several frames
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
123 // markActiveFrame_rec( top, active );
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
124
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
125 top.focused = active;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
126
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
127 blink();
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
128
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
129 // just debug information
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
130 window.status = top.focused.name;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
131 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
132
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
133
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
134 function unloadListener( event ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
135 setTimeout('init()', 250);
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
136 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
137
223
41de43a00bf8 new relato import
luginbue
parents: 212
diff changeset
138
212
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
139 function markActiveFrame_rec(current, active) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
140
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
141 if ( current.frames.length > 0 ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
142 for ( i=0; i < current.frames.length; i++ ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
143 markActiveFrame_rec( current.frames[i], active );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
144 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
145 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
146 if ( current.name.indexOf(active.name) == 0 ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
147 current.document.bgColor = '#444444';
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
148 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
149 current.document.bgColor = '#666666';
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
150 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
151 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
152 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
153
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
154
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
155 function loadFocusedFrame(url) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
156
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
157 if (frameSelected()) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
158 top.focused.location.href = url;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
159 setTimeout( 'top.init()', 1000 );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
160 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
161 noFrameSelected();
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
162 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
163 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
164
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
165
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
166 function loadNamedFrame(url, framename) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
167
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
168 desired = loadNamedFrame_rec(top, framename);
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
169 if ( desired ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
170 desired.location.href = url;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
171 setTimeout( 'top.init()', 1000 );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
172 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
173 alert( "Error - a frame with this name does not exist!" );
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
174 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
175 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
176
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
177 function loadNamedFrame_rec(current, framename) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
178
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
179 if ( current.frames.length > 0 ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
180 for ( i=0; i < current.frames.length; i++ ) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
181 thisone = loadNamedFrame_rec(current.frames[i], framename);
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
182 if (thisone) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
183 return thisone;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
184 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
185 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
186 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
187 if (current.name == framename) {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
188 return current;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
189 } else {
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
190 return null;
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
191 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
192 }
f1631db2ff3d relato juhuii
luginbue
parents:
diff changeset
193 }