annotate client/digitallibrary/relato/relato.js @ 455:72f8a3e4fea9

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