1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
2 |
<html> |
3 |
<head> |
4 |
<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
5 |
<link rel="shortcut icon" type="image/ico" href="http://www.sprymedia.co.uk/media/images/favicon.ico"> |
6 |
|
7 |
<title>KeyTables example</title> |
8 |
<style type="text/css" title="currentStyle"> |
9 |
@import "../../media/css/demo_page.css"; |
10 |
@import "../../media/css/demo_table.css"; |
11 |
</style> |
12 |
<script type="text/javascript" charset="utf-8" src="../../media/js/jquery.js"></script> |
13 |
<script type="text/javascript" charset="utf-8" src="js/KeyTable.js"></script> |
14 |
<script type="text/javascript" charset="utf-8"> |
15 |
function fnMessage ( sMesg ) |
16 |
{ |
17 |
var n = document.getElementById('info'); |
18 |
n.innerHTML += sMesg+"<br>"; |
19 |
n.scrollTop = n.scrollHeight; |
20 |
} |
21 |
|
22 |
$(document).ready( function () { |
23 |
var keys = new KeyTable(); |
24 |
|
25 |
/* Focus handler for all cells in last column */ |
26 |
keys.event.focus( 4, null, function( nNode, x, y ) { |
27 |
fnMessage( "Cell "+x+","+y+" focused ('live' event - column)" ); |
28 |
} ); |
29 |
|
30 |
/* Focus handler for all cells in 8th row */ |
31 |
keys.event.focus( null, 7, function( nNode, x, y ) { |
32 |
fnMessage( "Cell "+x+","+y+" focused ('live' event - row)" ); |
33 |
} ); |
34 |
|
35 |
/* Focus using coords. */ |
36 |
keys.event.focus( 1, 0, function( nNode ) { |
37 |
keys.event.remove.focus( nNode ); |
38 |
fnMessage( "Cell 1,0 focus - this event has now been removed" ); |
39 |
} ); |
40 |
|
41 |
keys.event.focus( 1, 3, function() { |
42 |
fnMessage( "Cell 1,3 focus" ); |
43 |
} ); |
44 |
|
45 |
/* focus with a node */ |
46 |
keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() { |
47 |
fnMessage( "Cell 0,2 focus" ); |
48 |
} ); |
49 |
|
50 |
/* Blur using a node */ |
51 |
keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() { |
52 |
fnMessage( "Cell 1,2 blur" ); |
53 |
} ); |
54 |
|
55 |
/* Blur using coords */ |
56 |
keys.event.blur( 2, 4, function() { |
57 |
fnMessage( "Cell 2,4 blur" ); |
58 |
} ); |
59 |
|
60 |
/* Action */ |
61 |
keys.event.action( 2, 2, function( nNode ) { |
62 |
fnMessage( "Cell 2,2 action" ); |
63 |
if ( nNode.style.fontWeight == "" || nNode.style.fontWeight == "normal" ) { |
64 |
nNode.style.fontWeight = "bold"; |
65 |
} else { |
66 |
nNode.style.fontWeight = "normal"; |
67 |
} |
68 |
} ); |
69 |
|
70 |
keys.event.action( 2, 5, function( nNode ) { |
71 |
fnMessage( "Cell 2,5 action" ); |
72 |
if ( nNode.style.fontStyle == "" ) { |
73 |
nNode.style.fontStyle = "italic"; |
74 |
} else { |
75 |
nNode.style.fontStyle = ""; |
76 |
} |
77 |
} ); |
78 |
} ); |
79 |
</script> |
80 |
</head> |
81 |
<body id="dt_example"> |
82 |
<div id="container"> |
83 |
<div class="full_width big"> |
84 |
KeyTable example |
85 |
</div> |
86 |
|
87 |
<h1>Preamble</h1> |
88 |
<p>KeyTable allows you to use keyboard navigation on an HTML table. The focused cell is shown through the CSS class ('focus') which in the case below is simply a blue border. Events such as 'focus', 'blur', 'esc' (the escape key) and 'return' (the return key) can be assigned event handling functions thought the API presented.</p> |
89 |
<p>The example shown below has a few cells (selected at random, but near the top) with blur and focus events assigned to them. You can also see the navigation around the table using arrow keys.</p> |
90 |
|
91 |
<h1>Live example</h1> |
92 |
<div id="info" class="box"> |
93 |
Event information:<br> |
94 |
</div> |
95 |
<div id="demo"> |
96 |
<table cellpadding="0" cellspacing="0" border="0" class="display KeyTable" id="example"> |
97 |
<thead> |
98 |
<tr> |
99 |
<th>Rendering engine</th> |
100 |
<th>Browser</th> |
101 |
<th>Platform(s)</th> |
102 |
<th>Engine version</th> |
103 |
<th>CSS grade</th> |
104 |
</tr> |
105 |
</thead> |
106 |
<tbody> |
107 |
<tr class="gradeX"> |
108 |
<td>Trident</td> |
109 |
<td>Internet Explorer 4.0 (focus once)</td> |
110 |
<td>Win 95+</td> |
111 |
<td class="center">4</td> |
112 |
<td class="center">X</td> |
113 |
</tr> |
114 |
<tr class="gradeC"> |
115 |
<td>Trident</td> |
116 |
<td>Internet Explorer 5.0</td> |
117 |
<td>Win 95+ (blur)</td> |
118 |
<td class="center">5</td> |
119 |
<td class="center">C</td> |
120 |
</tr> |
121 |
<tr class="gradeA"> |
122 |
<td>Trident (focus)</td> |
123 |
<td>Internet Explorer 5.5</td> |
124 |
<td>Win 95+ (action/bold)</td> |
125 |
<td class="center">5.5</td> |
126 |
<td class="center">A</td> |
127 |
</tr> |
128 |
<tr class="gradeA"> |
129 |
<td>Trident</td> |
130 |
<td>Internet Explorer 6 (focus)</td> |
131 |
<td>Win 98+</td> |
132 |
<td class="center">6</td> |
133 |
<td class="center">A</td> |
134 |
</tr> |
135 |
<tr class="gradeA"> |
136 |
<td>Trident</td> |
137 |
<td>Internet Explorer 7</td> |
138 |
<td>Win XP SP2+ (blur)</td> |
139 |
<td class="center">7</td> |
140 |
<td class="center">A</td> |
141 |
</tr> |
142 |
<tr class="gradeA"> |
143 |
<td>Trident</td> |
144 |
<td>AOL browser (AOL desktop)</td> |
145 |
<td>Win XP (action/italic)</td> |
146 |
<td class="center">6</td> |
147 |
<td class="center">A</td> |
148 |
</tr> |
149 |
<tr class="gradeA"> |
150 |
<td>Gecko</td> |
151 |
<td>Firefox 1.0</td> |
152 |
<td>Win 98+ / OSX.2+</td> |
153 |
<td class="center">1.7</td> |
154 |
<td class="center">A</td> |
155 |
</tr> |
156 |
<tr class="gradeA"> |
157 |
<td>Gecko (focus - row)</td> |
158 |
<td>Firefox 1.5</td> |
159 |
<td>Win 98+ / OSX.2+</td> |
160 |
<td class="center">1.8</td> |
161 |
<td class="center">A</td> |
162 |
</tr> |
163 |
<tr class="gradeA"> |
164 |
<td>Gecko</td> |
165 |
<td>Firefox 2.0</td> |
166 |
<td>Win 98+ / OSX.2+</td> |
167 |
<td class="center">1.8</td> |
168 |
<td class="center">A</td> |
169 |
</tr> |
170 |
<tr class="gradeA"> |
171 |
<td>Gecko</td> |
172 |
<td>Firefox 3.0</td> |
173 |
<td>Win 2k+ / OSX.3+</td> |
174 |
<td class="center">1.9</td> |
175 |
<td class="center">A</td> |
176 |
</tr> |
177 |
<tr class="gradeA"> |
178 |
<td>Gecko</td> |
179 |
<td>Camino 1.0</td> |
180 |
<td>OSX.2+</td> |
181 |
<td class="center">1.8</td> |
182 |
<td class="center">A</td> |
183 |
</tr> |
184 |
<tr class="gradeA"> |
185 |
<td>Gecko</td> |
186 |
<td>Camino 1.5</td> |
187 |
<td>OSX.3+</td> |
188 |
<td class="center">1.8</td> |
189 |
<td class="center">A</td> |
190 |
</tr> |
191 |
<tr class="gradeA"> |
192 |
<td>Gecko</td> |
193 |
<td>Netscape 7.2</td> |
194 |
<td>Win 95+ / Mac OS 8.6-9.2</td> |
195 |
<td class="center">1.7</td> |
196 |
<td class="center">A</td> |
197 |
</tr> |
198 |
<tr class="gradeA"> |
199 |
<td>Gecko</td> |
200 |
<td>Netscape Browser 8</td> |
201 |
<td>Win 98SE+</td> |
202 |
<td class="center">1.7</td> |
203 |
<td class="center">A</td> |
204 |
</tr> |
205 |
<tr class="gradeA"> |
206 |
<td>Gecko</td> |
207 |
<td>Netscape Navigator 9</td> |
208 |
<td>Win 98+ / OSX.2+</td> |
209 |
<td class="center">1.8</td> |
210 |
<td class="center">A</td> |
211 |
</tr> |
212 |
<tr class="gradeA"> |
213 |
<td>Gecko</td> |
214 |
<td>Mozilla 1.0</td> |
215 |
<td>Win 95+ / OSX.1+</td> |
216 |
<td class="center">1</td> |
217 |
<td class="center">A</td> |
218 |
</tr> |
219 |
<tr class="gradeA"> |
220 |
<td>Gecko</td> |
221 |
<td>Mozilla 1.1</td> |
222 |
<td>Win 95+ / OSX.1+</td> |
223 |
<td class="center">1.1</td> |
224 |
<td class="center">A</td> |
225 |
</tr> |
226 |
<tr class="gradeA"> |
227 |
<td>Gecko</td> |
228 |
<td>Mozilla 1.2</td> |
229 |
<td>Win 95+ / OSX.1+</td> |
230 |
<td class="center">1.2</td> |
231 |
<td class="center">A</td> |
232 |
</tr> |
233 |
<tr class="gradeA"> |
234 |
<td>Gecko</td> |
235 |
<td>Mozilla 1.3</td> |
236 |
<td>Win 95+ / OSX.1+</td> |
237 |
<td class="center">1.3</td> |
238 |
<td class="center">A</td> |
239 |
</tr> |
240 |
<tr class="gradeA"> |
241 |
<td>Gecko</td> |
242 |
<td>Mozilla 1.4</td> |
243 |
<td>Win 95+ / OSX.1+</td> |
244 |
<td class="center">1.4</td> |
245 |
<td class="center">A</td> |
246 |
</tr> |
247 |
<tr class="gradeA"> |
248 |
<td>Gecko</td> |
249 |
<td>Mozilla 1.5</td> |
250 |
<td>Win 95+ / OSX.1+</td> |
251 |
<td class="center">1.5</td> |
252 |
<td class="center">A</td> |
253 |
</tr> |
254 |
<tr class="gradeA"> |
255 |
<td>Gecko</td> |
256 |
<td>Mozilla 1.6</td> |
257 |
<td>Win 95+ / OSX.1+</td> |
258 |
<td class="center">1.6</td> |
259 |
<td class="center">A</td> |
260 |
</tr> |
261 |
<tr class="gradeA"> |
262 |
<td>Gecko</td> |
263 |
<td>Mozilla 1.7</td> |
264 |
<td>Win 98+ / OSX.1+</td> |
265 |
<td class="center">1.7</td> |
266 |
<td class="center">A</td> |
267 |
</tr> |
268 |
<tr class="gradeA"> |
269 |
<td>Gecko</td> |
270 |
<td>Mozilla 1.8</td> |
271 |
<td>Win 98+ / OSX.1+</td> |
272 |
<td class="center">1.8</td> |
273 |
<td class="center">A</td> |
274 |
</tr> |
275 |
<tr class="gradeA"> |
276 |
<td>Gecko</td> |
277 |
<td>Seamonkey 1.1</td> |
278 |
<td>Win 98+ / OSX.2+</td> |
279 |
<td class="center">1.8</td> |
280 |
<td class="center">A</td> |
281 |
</tr> |
282 |
<tr class="gradeA"> |
283 |
<td>Gecko</td> |
284 |
<td>Epiphany 2.20</td> |
285 |
<td>Gnome</td> |
286 |
<td class="center">1.8</td> |
287 |
<td class="center">A</td> |
288 |
</tr> |
289 |
<tr class="gradeA"> |
290 |
<td>Webkit</td> |
291 |
<td>Safari 1.2</td> |
292 |
<td>OSX.3</td> |
293 |
<td class="center">125.5</td> |
294 |
<td class="center">A</td> |
295 |
</tr> |
296 |
<tr class="gradeA"> |
297 |
<td>Webkit</td> |
298 |
<td>Safari 1.3</td> |
299 |
<td>OSX.3</td> |
300 |
<td class="center">312.8</td> |
301 |
<td class="center">A</td> |
302 |
</tr> |
303 |
<tr class="gradeA"> |
304 |
<td>Webkit</td> |
305 |
<td>Safari 2.0</td> |
306 |
<td>OSX.4+</td> |
307 |
<td class="center">419.3</td> |
308 |
<td class="center">A</td> |
309 |
</tr> |
310 |
<tr class="gradeA"> |
311 |
<td>Webkit</td> |
312 |
<td>Safari 3.0</td> |
313 |
<td>OSX.4+</td> |
314 |
<td class="center">522.1</td> |
315 |
<td class="center">A</td> |
316 |
</tr> |
317 |
<tr class="gradeA"> |
318 |
<td>Webkit</td> |
319 |
<td>OmniWeb 5.5</td> |
320 |
<td>OSX.4+</td> |
321 |
<td class="center">420</td> |
322 |
<td class="center">A</td> |
323 |
</tr> |
324 |
<tr class="gradeA"> |
325 |
<td>Webkit</td> |
326 |
<td>iPod Touch / iPhone</td> |
327 |
<td>iPod</td> |
328 |
<td class="center">420.1</td> |
329 |
<td class="center">A</td> |
330 |
</tr> |
331 |
<tr class="gradeA"> |
332 |
<td>Webkit</td> |
333 |
<td>S60</td> |
334 |
<td>S60</td> |
335 |
<td class="center">413</td> |
336 |
<td class="center">A</td> |
337 |
</tr> |
338 |
<tr class="gradeA"> |
339 |
<td>Presto</td> |
340 |
<td>Opera 7.0</td> |
341 |
<td>Win 95+ / OSX.1+</td> |
342 |
<td class="center">-</td> |
343 |
<td class="center">A</td> |
344 |
</tr> |
345 |
<tr class="gradeA"> |
346 |
<td>Presto</td> |
347 |
<td>Opera 7.5</td> |
348 |
<td>Win 95+ / OSX.2+</td> |
349 |
<td class="center">-</td> |
350 |
<td class="center">A</td> |
351 |
</tr> |
352 |
<tr class="gradeA"> |
353 |
<td>Presto</td> |
354 |
<td>Opera 8.0</td> |
355 |
<td>Win 95+ / OSX.2+</td> |
356 |
<td class="center">-</td> |
357 |
<td class="center">A</td> |
358 |
</tr> |
359 |
<tr class="gradeA"> |
360 |
<td>Presto</td> |
361 |
<td>Opera 8.5</td> |
362 |
<td>Win 95+ / OSX.2+</td> |
363 |
<td class="center">-</td> |
364 |
<td class="center">A</td> |
365 |
</tr> |
366 |
<tr class="gradeA"> |
367 |
<td>Presto</td> |
368 |
<td>Opera 9.0</td> |
369 |
<td>Win 95+ / OSX.3+</td> |
370 |
<td class="center">-</td> |
371 |
<td class="center">A</td> |
372 |
</tr> |
373 |
<tr class="gradeA"> |
374 |
<td>Presto</td> |
375 |
<td>Opera 9.2</td> |
376 |
<td>Win 88+ / OSX.3+</td> |
377 |
<td class="center">-</td> |
378 |
<td class="center">A</td> |
379 |
</tr> |
380 |
<tr class="gradeA"> |
381 |
<td>Presto</td> |
382 |
<td>Opera 9.5</td> |
383 |
<td>Win 88+ / OSX.3+</td> |
384 |
<td class="center">-</td> |
385 |
<td class="center">A</td> |
386 |
</tr> |
387 |
<tr class="gradeA"> |
388 |
<td>Presto</td> |
389 |
<td>Opera for Wii</td> |
390 |
<td>Wii</td> |
391 |
<td class="center">-</td> |
392 |
<td class="center">A</td> |
393 |
</tr> |
394 |
<tr class="gradeA"> |
395 |
<td>Presto</td> |
396 |
<td>Nokia N800</td> |
397 |
<td>N800</td> |
398 |
<td class="center">-</td> |
399 |
<td class="center">A</td> |
400 |
</tr> |
401 |
<tr class="gradeA"> |
402 |
<td>Presto</td> |
403 |
<td>Nintendo DS browser</td> |
404 |
<td>Nintendo DS</td> |
405 |
<td class="center">8.5</td> |
406 |
<td class="center">C/A<sup>1</sup></td> |
407 |
</tr> |
408 |
<tr class="gradeC"> |
409 |
<td>KHTML</td> |
410 |
<td>Konqureror 3.1</td> |
411 |
<td>KDE 3.1</td> |
412 |
<td class="center">3.1</td> |
413 |
<td class="center">C</td> |
414 |
</tr> |
415 |
<tr class="gradeA"> |
416 |
<td>KHTML</td> |
417 |
<td>Konqureror 3.3</td> |
418 |
<td>KDE 3.3</td> |
419 |
<td class="center">3.3</td> |
420 |
<td class="center">A</td> |
421 |
</tr> |
422 |
<tr class="gradeA"> |
423 |
<td>KHTML</td> |
424 |
<td>Konqureror 3.5</td> |
425 |
<td>KDE 3.5</td> |
426 |
<td class="center">3.5</td> |
427 |
<td class="center">A</td> |
428 |
</tr> |
429 |
<tr class="gradeX"> |
430 |
<td>Tasman</td> |
431 |
<td>Internet Explorer 4.5</td> |
432 |
<td>Mac OS 8-9</td> |
433 |
<td class="center">-</td> |
434 |
<td class="center">X</td> |
435 |
</tr> |
436 |
<tr class="gradeC"> |
437 |
<td>Tasman</td> |
438 |
<td>Internet Explorer 5.1</td> |
439 |
<td>Mac OS 7.6-9</td> |
440 |
<td class="center">1</td> |
441 |
<td class="center">C</td> |
442 |
</tr> |
443 |
<tr class="gradeC"> |
444 |
<td>Tasman</td> |
445 |
<td>Internet Explorer 5.2</td> |
446 |
<td>Mac OS 8-X</td> |
447 |
<td class="center">1</td> |
448 |
<td class="center">C</td> |
449 |
</tr> |
450 |
<tr class="gradeA"> |
451 |
<td>Misc</td> |
452 |
<td>NetFront 3.1</td> |
453 |
<td>Embedded devices</td> |
454 |
<td class="center">-</td> |
455 |
<td class="center">C</td> |
456 |
</tr> |
457 |
<tr class="gradeA"> |
458 |
<td>Misc</td> |
459 |
<td>NetFront 3.4</td> |
460 |
<td>Embedded devices</td> |
461 |
<td class="center">-</td> |
462 |
<td class="center">A</td> |
463 |
</tr> |
464 |
<tr class="gradeX"> |
465 |
<td>Misc</td> |
466 |
<td>Dillo 0.8</td> |
467 |
<td>Embedded devices</td> |
468 |
<td class="center">-</td> |
469 |
<td class="center">X</td> |
470 |
</tr> |
471 |
<tr class="gradeX"> |
472 |
<td>Misc</td> |
473 |
<td>Links</td> |
474 |
<td>Text only</td> |
475 |
<td class="center">-</td> |
476 |
<td class="center">X</td> |
477 |
</tr> |
478 |
<tr class="gradeX"> |
479 |
<td>Misc</td> |
480 |
<td>Lynx</td> |
481 |
<td>Text only</td> |
482 |
<td class="center">-</td> |
483 |
<td class="center">X</td> |
484 |
</tr> |
485 |
<tr class="gradeC"> |
486 |
<td>Misc</td> |
487 |
<td>IE Mobile</td> |
488 |
<td>Windows Mobile 6</td> |
489 |
<td class="center">-</td> |
490 |
<td class="center">C</td> |
491 |
</tr> |
492 |
<tr class="gradeC"> |
493 |
<td>Misc</td> |
494 |
<td>PSP browser</td> |
495 |
<td>PSP</td> |
496 |
<td class="center">-</td> |
497 |
<td class="center">C</td> |
498 |
</tr> |
499 |
<tr class="gradeU"> |
500 |
<td>Other browsers</td> |
501 |
<td>All others</td> |
502 |
<td>-</td> |
503 |
<td class="center">-</td> |
504 |
<td class="center">U</td> |
505 |
</tr> |
506 |
</tbody> |
507 |
</table> |
508 |
</div> |
509 |
<div class="spacer"></div> |
510 |
|
511 |
|
512 |
<h1>Initialisation code</h1> |
513 |
<pre>function fnMessage ( sMesg ) |
514 |
{ |
515 |
var n = document.getElementById('info'); |
516 |
n.innerHTML += sMesg+"<br>"; |
517 |
n.scrollTop = n.scrollHeight; |
518 |
} |
519 |
|
520 |
$(document).ready( function () { |
521 |
var keys = new KeyTable(); |
522 |
|
523 |
/* Focus handler for all cells in last column */ |
524 |
keys.event.focus( 4, null, function( nNode, x, y ) { |
525 |
fnMessage( "Cell "+x+","+y+" focused ('live' event - column)" ); |
526 |
} ); |
527 |
|
528 |
/* Focus handler for all cells in 8th row */ |
529 |
keys.event.focus( null, 7, function( nNode, x, y ) { |
530 |
fnMessage( "Cell "+x+","+y+" focused ('live' event - row)" ); |
531 |
} ); |
532 |
|
533 |
/* Focus using coords. */ |
534 |
keys.event.focus( 1, 0, function( nNode ) { |
535 |
keys.event.remove.focus( nNode ); |
536 |
fnMessage( "Cell 1,0 focus - this event has now been removed" ); |
537 |
} ); |
538 |
|
539 |
keys.event.focus( 1, 3, function() { |
540 |
fnMessage( "Cell 1,3 focus" ); |
541 |
} ); |
542 |
|
543 |
/* focus with a node */ |
544 |
keys.event.focus( $('#example tbody tr:eq(2) td:eq(0)')[0], function() { |
545 |
fnMessage( "Cell 0,2 focus" ); |
546 |
} ); |
547 |
|
548 |
/* Blur using a node */ |
549 |
keys.event.blur( $('#example tbody tr:eq(1) td:eq(2)')[0], function() { |
550 |
fnMessage( "Cell 1,2 blur" ); |
551 |
} ); |
552 |
|
553 |
/* Blur using coords */ |
554 |
keys.event.blur( 2, 4, function() { |
555 |
fnMessage( "Cell 2,4 blur" ); |
556 |
} ); |
557 |
|
558 |
/* Action */ |
559 |
keys.event.action( 2, 2, function( nNode ) { |
560 |
fnMessage( "Cell 2,2 action" ); |
561 |
if ( nNode.style.fontWeight == "" || nNode.style.fontWeight == "normal" ) { |
562 |
nNode.style.fontWeight = "bold"; |
563 |
} else { |
564 |
nNode.style.fontWeight = "normal"; |
565 |
} |
566 |
} ); |
567 |
|
568 |
keys.event.action( 2, 5, function( nNode ) { |
569 |
fnMessage( "Cell 2,5 action" ); |
570 |
if ( nNode.style.fontStyle == "" ) { |
571 |
nNode.style.fontStyle = "italic"; |
572 |
} else { |
573 |
nNode.style.fontStyle = ""; |
574 |
} |
575 |
} ); |
576 |
} );</pre> |
577 |
|
578 |
|
579 |
<h1>Other examples</h1> |
580 |
<ul> |
581 |
<li><a href="index.html">Basic usage</a></li> |
582 |
<li><a href="editing.html">Editing a table</a></li> |
583 |
<li><a href="form.html">Integration with an HTML form</a></li> |
584 |
<li><a href="datatable.html">Integration with DataTables</a></li> |
585 |
<li><a href="datatable_scrolling.html">Using KeyTable with scrolling in DataTables</a></li> |
586 |
</ul> |
587 |
|
588 |
<div id="footer" style="text-align:center;"> |
589 |
<span style="font-size:10px;"> |
590 |
KeyTable © Allan Jardine 2009.<br> |
591 |
Information in the table © <a href="http://www.u4eatech.com">U4EA Technologies</a> 2007-2009.</span> |
592 |
</div> |
593 |
</div> |
594 |
</body> |
595 |
</html> |