git.iko.soy/typeable/pandoc
on master help sign in
Removed data files for s5, slideous, slidy.

Users of s5 and slideous will have to download the needed files, as has been documented for some time in the README. slidy files will be sought on the web, as before.

commite2acc46f504e53cb5426664c480b0eb04527e1e7 authorJohn MacFarlane <fiddlosopher@gmail.com> dateSun 20 Oct 2013, 13:33 (13 years ago) parent9d6bca0
21 files changed−4622
data/s5/default/blank.gif data/s5/default/bodybg.gif data/s5/default/framing.css−23 data/s5/default/iepngfix.htc−42 data/s5/default/opera.css−7 data/s5/default/outline.css−15 data/s5/default/pretty.css−86 data/s5/default/print.css−24 data/s5/default/s5-core.css−9 data/s5/default/slides.css−3 data/s5/default/slides.js−553 data/slideous/slideous.css−95 data/slideous/slideous.js−321 data/slidy/graphics/fold-dim.gif data/slidy/graphics/fold.gif data/slidy/graphics/nofold-dim.gif data/slidy/graphics/unfold-dim.gif data/slidy/graphics/unfold.gif data/slidy/scripts/slidy.js−3016 data/slidy/styles/slidy.css−405 pandoc.cabal−23
data/s5/default/blank.gifdeleted

Binary file not shown.

data/s5/default/bodybg.gifdeleted

Binary file not shown.

data/s5/default/framing.cssdeleted−23
@@ -1,23 +0,0 @@
1−/* The following styles size, place, and layer the slide components.
2− Edit these if you want to change the overall slide layout.
3− The commented lines can be uncommented (and modified, if necessary)
4− to help you with the rearrangement process. */
5−
6−/* target = 1024x768 */
7−
8−div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
9−div#header {top: 0; height: 3em; z-index: 1;}
10−div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
11−.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
12−div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
13−div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
14− margin: 0;}
15−#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
16−html>body #currentSlide {position: fixed;}
17−
18−/*
19−div#header {background: #FCC;}
20−div#footer {background: #CCF;}
21−div#controls {background: #BBD;}
22−div#currentSlide {background: #FFC;}
23−*/
data/s5/default/iepngfix.htcdeleted−42
@@ -1,42 +0,0 @@
1−<public:component>
2−<public:attach event="onpropertychange" onevent="doFix()" />
3−
4−<script>
5−
6−// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
7−// Free usage permitted as long as this notice remains intact.
8−
9−// This must be a path to a blank image. That's all the configuration you need here.
10−var blankImg = 'ui/default/blank.gif';
11−
12−var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
13−
14−function filt(s, m) {
15− if (filters[f]) {
16− filters[f].enabled = s ? true : false;
17− if (s) with (filters[f]) { src = s; sizingMethod = m }
18− } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
19−}
20−
21−function doFix() {
22− if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
23− (event && !/(background|src)/.test(event.propertyName))) return;
24−
25− if (tagName == 'IMG') {
26− if ((/\.png$/i).test(src)) {
27− filt(src, 'image'); // was 'scale'
28− src = blankImg;
29− } else if (src.indexOf(blankImg) < 0) filt();
30− } else if (style.backgroundImage) {
31− if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
32− var s = RegExp.$1;
33− style.backgroundImage = '';
34− filt(s, 'crop');
35− } else filt();
36− }
37−}
38−
39−doFix();
40−
41−</script>
42−</public:component>
data/s5/default/opera.cssdeleted−7
@@ -1,7 +0,0 @@
1−/* DO NOT CHANGE THESE unless you really want to break Opera Show */
2−.slide {
3− visibility: visible !important;
4− position: static !important;
5− page-break-before: always;
6−}
7−#slide0 {page-break-before: avoid;}
data/s5/default/outline.cssdeleted−15
@@ -1,15 +0,0 @@
1−/* don't change this unless you want the layout stuff to show up in the outline view! */
2−
3−.layout div, #footer *, #controlForm * {display: none;}
4−#footer, #controls, #controlForm, #navLinks, #toggle {
5− display: block; visibility: visible; margin: 0; padding: 0;}
6−#toggle {float: right; padding: 0.5em;}
7−html>body #toggle {position: fixed; top: 0; right: 0;}
8−
9−/* making the outline look pretty-ish */
10−
11−#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
12−#slide0 h1 {padding-top: 1.5em;}
13−.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
14− border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
15−#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
data/s5/default/pretty.cssdeleted−86
@@ -1,86 +0,0 @@
1−/* Following are the presentation styles -- edit away! */
2−
3−body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;}
4−:link, :visited {text-decoration: none; color: #00C;}
5−#controls :active {color: #88A !important;}
6−#controls :focus {outline: 1px dotted #227;}
7−h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
8−ul, pre {margin: 0; line-height: 1em;}
9−html, body {margin: 0; padding: 0;}
10−
11−blockquote, q {font-style: italic;}
12−blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
13−blockquote p {margin: 0;}
14−blockquote i {font-style: normal;}
15−blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
16−blockquote b i {font-style: italic;}
17−
18−kbd {font-weight: bold; font-size: 1em;}
19−sup {font-size: smaller; line-height: 1px;}
20−
21−.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
22−.slide code.bad, code del {color: red;}
23−.slide code.old {color: silver;}
24−.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
25−.slide pre code {display: block;}
26−.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
27−.slide li {margin-top: 0.75em; margin-right: 0;}
28−.slide ul ul {line-height: 1;}
29−.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
30−.slide img.leader {display: block; margin: 0 auto;}
31−
32−div#header, div#footer {background: #005; color: #AAB;
33− font-family: Verdana, Helvetica, sans-serif;}
34−div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
35− line-height: 1px;}
36−div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
37−#footer h1, #footer h2 {display: block; padding: 0 1em;}
38−#footer h2 {font-style: italic;}
39−
40−div.long {font-size: 0.75em;}
41−.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
42− margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
43− font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
44− color: #DDE; background: #005;}
45−.slide h3 {font-size: 130%;}
46−h1 abbr {font-variant: small-caps;}
47−
48−div#controls {position: absolute; left: 50%; bottom: 0;
49− width: 50%;
50− text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}
51−html>body div#controls {position: fixed; padding: 0 0 1em 0;
52− top: auto;}
53−div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
54− margin: 0; padding: 0;}
55−#controls #navLinks a {padding: 0; margin: 0 0.5em;
56− background: #005; border: none; color: #779;
57− cursor: pointer;}
58−#controls #navList {height: 1em;}
59−#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;}
60−
61−#currentSlide {text-align: center; font-size: 0.5em; color: #449;}
62−
63−#slide0 {padding-top: 3.5em; font-size: 90%;}
64−#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
65− font: bold 2em Helvetica, sans-serif; white-space: normal;
66− color: #000; background: transparent;}
67−#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;}
68−#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
69−#slide0 h4 {margin-top: 0; font-size: 1em;}
70−
71−ul.urls {list-style: none; display: inline; margin: 0;}
72−.urls li {display: inline; margin: 0;}
73−.note {display: none;}
74−.external {border-bottom: 1px dotted gray;}
75−html>body .external {border-bottom: none;}
76−.external:after {content: " \274F"; font-size: smaller; color: #77B;}
77−
78−.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
79−img.incremental {visibility: hidden;}
80−.slide .current {color: #B02;}
81−
82−
83−/* diagnostics
84−
85−li:after {content: " [" attr(class) "]"; color: #F88;}
86−*/
data/s5/default/print.cssdeleted−24
@@ -1,24 +0,0 @@
1−/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
2−.slide, ul {page-break-inside: avoid; visibility: visible !important;}
3−h1 {page-break-after: avoid;}
4−
5−body {font-size: 12pt; background: white;}
6−* {color: black;}
7−
8−#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
9−#slide0 h3 {margin: 0; padding: 0;}
10−#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
11−#slide0 {margin-bottom: 3em;}
12−
13−h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
14−.extra {background: transparent !important;}
15−div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
16−ul.extra a {font-weight: bold;}
17−p.example {display: none;}
18−
19−#header {display: none;}
20−#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
21−#footer h2, #controls {display: none;}
22−
23−/* The following rule keeps the layout stuff out of print. Remove at your own risk! */
24−.layout, .layout * {display: none !important;}
data/s5/default/s5-core.cssdeleted−9
@@ -1,9 +0,0 @@
1−/* Do not edit or override these styles! The system will likely break if you do. */
2−
3−div#header, div#footer, div#controls, .slide {position: absolute;}
4−html>body div#header, html>body div#footer,
5− html>body div#controls, html>body .slide {position: fixed;}
6−.handout {display: none;}
7−.layout {display: block;}
8−.slide, .hideme, .incremental {visibility: hidden;}
9−#slide0 {visibility: visible;}
data/s5/default/slides.cssdeleted−3
@@ -1,3 +0,0 @@
1−@import url(s5-core.css); /* required to make the slide show run at all */
2−@import url(framing.css); /* sets basic placement and size of slide components */
3−@import url(pretty.css); /* stuff that makes the slides look better than blah */
data/s5/default/slides.jsdeleted−553
@@ -1,553 +0,0 @@
1−// S5 v1.1 slides.js -- released into the Public Domain
2−//
3−// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information
4−// about all the wonderful and talented contributors to this code!
5−
6−var undef;
7−var slideCSS = '';
8−var snum = 0;
9−var smax = 1;
10−var incpos = 0;
11−var number = undef;
12−var s5mode = true;
13−var defaultView = 'slideshow';
14−var controlVis = 'visible';
15−
16−var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
17−var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
18−var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
19−
20−function hasClass(object, className) {
21− if (!object.className) return false;
22− return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
23−}
24−
25−function hasValue(object, value) {
26− if (!object) return false;
27− return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
28−}
29−
30−function removeClass(object,className) {
31− if (!object) return;
32− object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
33−}
34−
35−function addClass(object,className) {
36− if (!object || hasClass(object, className)) return;
37− if (object.className) {
38− object.className += ' '+className;
39− } else {
40− object.className = className;
41− }
42−}
43−
44−function GetElementsWithClassName(elementName,className) {
45− var allElements = document.getElementsByTagName(elementName);
46− var elemColl = new Array();
47− for (var i = 0; i< allElements.length; i++) {
48− if (hasClass(allElements[i], className)) {
49− elemColl[elemColl.length] = allElements[i];
50− }
51− }
52− return elemColl;
53−}
54−
55−function isParentOrSelf(element, id) {
56− if (element == null || element.nodeName=='BODY') return false;
57− else if (element.id == id) return true;
58− else return isParentOrSelf(element.parentNode, id);
59−}
60−
61−function nodeValue(node) {
62− var result = "";
63− if (node.nodeType == 1) {
64− var children = node.childNodes;
65− for (var i = 0; i < children.length; ++i) {
66− result += nodeValue(children[i]);
67− }
68− }
69− else if (node.nodeType == 3) {
70− result = node.nodeValue;
71− }
72− return(result);
73−}
74−
75−function slideLabel() {
76− var slideColl = GetElementsWithClassName('*','slide');
77− var list = document.getElementById('jumplist');
78− smax = slideColl.length;
79− for (var n = 0; n < smax; n++) {
80− var obj = slideColl[n];
81−
82− var did = 'slide' + n.toString();
83− obj.setAttribute('id',did);
84− if (isOp) continue;
85−
86− var otext = '';
87− var menu = obj.firstChild;
88− if (!menu) continue; // to cope with empty slides
89− while (menu && menu.nodeType == 3) {
90− menu = menu.nextSibling;
91− }
92− if (!menu) continue; // to cope with slides with only text nodes
93−
94− var menunodes = menu.childNodes;
95− for (var o = 0; o < menunodes.length; o++) {
96− otext += nodeValue(menunodes[o]);
97− }
98− list.options[list.length] = new Option(n + ' : ' + otext, n);
99− }
100−}
101−
102−function currentSlide() {
103− var cs;
104− if (document.getElementById) {
105− cs = document.getElementById('currentSlide');
106− } else {
107− cs = document.currentSlide;
108− }
109− cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +
110− '<span id="csSep">\/<\/span> ' +
111− '<span id="csTotal">' + (smax-1) + '<\/span>';
112− if (snum == 0) {
113− cs.style.visibility = 'hidden';
114− } else {
115− cs.style.visibility = 'visible';
116− }
117−}
118−
119−function go(step) {
120− if (document.getElementById('slideProj').disabled || step == 0) return;
121− var jl = document.getElementById('jumplist');
122− var cid = 'slide' + snum;
123− var ce = document.getElementById(cid);
124− if (incrementals[snum].length > 0) {
125− for (var i = 0; i < incrementals[snum].length; i++) {
126− removeClass(incrementals[snum][i], 'current');
127− removeClass(incrementals[snum][i], 'incremental');
128− }
129− }
130− if (step != 'j') {
131− snum += step;
132− lmax = smax - 1;
133− if (snum > lmax) snum = lmax;
134− if (snum < 0) snum = 0;
135− } else
136− snum = parseInt(jl.value);
137− var nid = 'slide' + snum;
138− var ne = document.getElementById(nid);
139− if (!ne) {
140− ne = document.getElementById('slide0');
141− snum = 0;
142− }
143− if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
144− if (incrementals[snum].length > 0 && incpos == 0) {
145− for (var i = 0; i < incrementals[snum].length; i++) {
146− if (hasClass(incrementals[snum][i], 'current'))
147− incpos = i + 1;
148− else
149− addClass(incrementals[snum][i], 'incremental');
150− }
151− }
152− if (incrementals[snum].length > 0 && incpos > 0)
153− addClass(incrementals[snum][incpos - 1], 'current');
154− ce.style.visibility = 'hidden';
155− ne.style.visibility = 'visible';
156− jl.selectedIndex = snum;
157− currentSlide();
158− number = 0;
159−}
160−
161−function goTo(target) {
162− if (target >= smax || target == snum) return;
163− go(target - snum);
164−}
165−
166−function subgo(step) {
167− if (step > 0) {
168− removeClass(incrementals[snum][incpos - 1],'current');
169− removeClass(incrementals[snum][incpos], 'incremental');
170− addClass(incrementals[snum][incpos],'current');
171− incpos++;
172− } else {
173− incpos--;
174− removeClass(incrementals[snum][incpos],'current');
175− addClass(incrementals[snum][incpos], 'incremental');
176− addClass(incrementals[snum][incpos - 1],'current');
177− }
178−}
179−
180−function toggle() {
181− var slideColl = GetElementsWithClassName('*','slide');
182− var slides = document.getElementById('slideProj');
183− var outline = document.getElementById('outlineStyle');
184− if (!slides.disabled) {
185− slides.disabled = true;
186− outline.disabled = false;
187− s5mode = false;
188− fontSize('1em');
189− for (var n = 0; n < smax; n++) {
190− var slide = slideColl[n];
191− slide.style.visibility = 'visible';
192− }
193− } else {
194− slides.disabled = false;
195− outline.disabled = true;
196− s5mode = true;
197− fontScale();
198− for (var n = 0; n < smax; n++) {
199− var slide = slideColl[n];
200− slide.style.visibility = 'hidden';
201− }
202− slideColl[snum].style.visibility = 'visible';
203− }
204−}
205−
206−function showHide(action) {
207− var obj = GetElementsWithClassName('*','hideme')[0];
208− switch (action) {
209− case 's': obj.style.visibility = 'visible'; break;
210− case 'h': obj.style.visibility = 'hidden'; break;
211− case 'k':
212− if (obj.style.visibility != 'visible') {
213− obj.style.visibility = 'visible';
214− } else {
215− obj.style.visibility = 'hidden';
216− }
217− break;
218− }
219−}
220−
221−// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
222−function keys(key) {
223− if (!key) {
224− key = event;
225− key.which = key.keyCode;
226− }
227− if (key.which == 84) {
228− toggle();
229− return;
230− }
231− if (s5mode) {
232− switch (key.which) {
233− case 10: // return
234− case 13: // enter
235− if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
236− if (key.target && isParentOrSelf(key.target, 'controls')) return;
237− if(number != undef) {
238− goTo(number);
239− break;
240− }
241− case 32: // spacebar
242− case 34: // page down
243− case 39: // rightkey
244− case 40: // downkey
245− if(number != undef) {
246− go(number);
247− } else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
248− go(1);
249− } else {
250− subgo(1);
251− }
252− break;
253− case 33: // page up
254− case 37: // leftkey
255− case 38: // upkey
256− if(number != undef) {
257− go(-1 * number);
258− } else if (!incrementals[snum] || incpos <= 0) {
259− go(-1);
260− } else {
261− subgo(-1);
262− }
263− break;
264− case 36: // home
265− goTo(0);
266− break;
267− case 35: // end
268− goTo(smax-1);
269− break;
270− case 67: // c
271− showHide('k');
272− break;
273− }
274− if (key.which < 48 || key.which > 57) {
275− number = undef;
276− } else {
277− if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
278− if (key.target && isParentOrSelf(key.target, 'controls')) return;
279− number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
280− }
281− }
282− return false;
283−}
284−
285−function clicker(e) {
286− number = undef;
287− var target;
288− if (window.event) {
289− target = window.event.srcElement;
290− e = window.event;
291− } else target = e.target;
292− if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
293− if (!e.which || e.which == 1) {
294− if (!incrementals[snum] || incpos >= incrementals[snum].length) {
295− go(1);
296− } else {
297− subgo(1);
298− }
299− }
300−}
301−
302−function findSlide(hash) {
303− var target = null;
304− var slides = GetElementsWithClassName('*','slide');
305− for (var i = 0; i < slides.length; i++) {
306− var targetSlide = slides[i];
307− if ( (targetSlide.name && targetSlide.name == hash)
308− || (targetSlide.id && targetSlide.id == hash) ) {
309− target = targetSlide;
310− break;
311− }
312− }
313− while(target != null && target.nodeName != 'BODY') {
314− if (hasClass(target, 'slide')) {
315− return parseInt(target.id.slice(5));
316− }
317− target = target.parentNode;
318− }
319− return null;
320−}
321−
322−function slideJump() {
323− if (window.location.hash == null) return;
324− var sregex = /^#slide(\d+)$/;
325− var matches = sregex.exec(window.location.hash);
326− var dest = null;
327− if (matches != null) {
328− dest = parseInt(matches[1]);
329− } else {
330− dest = findSlide(window.location.hash.slice(1));
331− }
332− if (dest != null)
333− go(dest - snum);
334−}
335−
336−function fixLinks() {
337− var thisUri = window.location.href;
338− thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
339− var aelements = document.getElementsByTagName('A');
340− for (var i = 0; i < aelements.length; i++) {
341− var a = aelements[i].href;
342− var slideID = a.match('\#slide[0-9]{1,2}');
343− if ((slideID) && (slideID[0].slice(0,1) == '#')) {
344− var dest = findSlide(slideID[0].slice(1));
345− if (dest != null) {
346− if (aelements[i].addEventListener) {
347− aelements[i].addEventListener("click", new Function("e",
348− "if (document.getElementById('slideProj').disabled) return;" +
349− "go("+dest+" - snum); " +
350− "if (e.preventDefault) e.preventDefault();"), true);
351− } else if (aelements[i].attachEvent) {
352− aelements[i].attachEvent("onclick", new Function("",
353− "if (document.getElementById('slideProj').disabled) return;" +
354− "go("+dest+" - snum); " +
355− "event.returnValue = false;"));
356− }
357− }
358− }
359− }
360−}
361−
362−function externalLinks() {
363− if (!document.getElementsByTagName) return;
364− var anchors = document.getElementsByTagName('a');
365− for (var i=0; i<anchors.length; i++) {
366− var anchor = anchors[i];
367− if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
368− anchor.target = '_blank';
369− addClass(anchor,'external');
370− }
371− }
372−}
373−
374−function createControls() {
375− var controlsDiv = document.getElementById("controls");
376− if (!controlsDiv) return;
377− var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
378− var hideDiv, hideList = '';
379− if (controlVis == 'hidden') {
380− hideDiv = hider;
381− } else {
382− hideList = hider;
383− }
384− controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
385− '<div id="navLinks">' +
386− '<a accesskey="t" id="toggle" href="javascript:toggle();">&#216;<\/a>' +
387− '<a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;<\/a>' +
388− '<a accesskey="x" id="next" href="javascript:go(1);">&raquo;<\/a>' +
389− '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
390− '<\/div><\/form>';
391− if (controlVis == 'hidden') {
392− var hidden = document.getElementById('navLinks');
393− } else {
394− var hidden = document.getElementById('jumplist');
395− }
396− addClass(hidden,'hideme');
397−}
398−
399−function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
400− if (!s5mode) return false;
401− var vScale = 22; // both yield 32 (after rounding) at 1024x768
402− var hScale = 32; // perhaps should auto-calculate based on theme's declared value?
403− if (window.innerHeight) {
404− var vSize = window.innerHeight;
405− var hSize = window.innerWidth;
406− } else if (document.documentElement.clientHeight) {
407− var vSize = document.documentElement.clientHeight;
408− var hSize = document.documentElement.clientWidth;
409− } else if (document.body.clientHeight) {
410− var vSize = document.body.clientHeight;
411− var hSize = document.body.clientWidth;
412− } else {
413− var vSize = 700; // assuming 1024x768, minus chrome and such
414− var hSize = 1024; // these do not account for kiosk mode or Opera Show
415− }
416− var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
417− fontSize(newSize + 'px');
418− if (isGe) { // hack to counter incremental reflow bugs
419− var obj = document.getElementsByTagName('body')[0];
420− obj.style.display = 'none';
421− obj.style.display = 'block';
422− }
423−}
424−
425−function fontSize(value) {
426− if (!(s5ss = document.getElementById('s5ss'))) {
427− if (!isIE) {
428− document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
429− s5ss.setAttribute('media','screen, projection');
430− s5ss.setAttribute('id','s5ss');
431− } else {
432− document.createStyleSheet();
433− document.s5ss = document.styleSheets[document.styleSheets.length - 1];
434− }
435− }
436− if (!isIE) {
437− while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
438− s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));
439− } else {
440− document.s5ss.addRule('body','font-size: ' + value + ' !important;');
441− }
442−}
443−
444−function notOperaFix() {
445− slideCSS = document.getElementById('slideProj').href;
446− var slides = document.getElementById('slideProj');
447− var outline = document.getElementById('outlineStyle');
448− slides.setAttribute('media','screen');
449− outline.disabled = true;
450− if (isGe) {
451− slides.setAttribute('href','null'); // Gecko fix
452− slides.setAttribute('href',slideCSS); // Gecko fix
453− }
454− if (isIE && document.styleSheets && document.styleSheets[0]) {
455− document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
456− document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
457− document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
458− }
459−}
460−
461−function getIncrementals(obj) {
462− var incrementals = new Array();
463− if (!obj)
464− return incrementals;
465− var children = obj.childNodes;
466− for (var i = 0; i < children.length; i++) {
467− var child = children[i];
468− if (hasClass(child, 'incremental')) {
469− if (child.nodeName == 'OL' || child.nodeName == 'UL') {
470− removeClass(child, 'incremental');
471− for (var j = 0; j < child.childNodes.length; j++) {
472− if (child.childNodes[j].nodeType == 1) {
473− addClass(child.childNodes[j], 'incremental');
474− }
475− }
476− } else {
477− incrementals[incrementals.length] = child;
478− removeClass(child,'incremental');
479− }
480− }
481− if (hasClass(child, 'show-first')) {
482− if (child.nodeName == 'OL' || child.nodeName == 'UL') {
483− removeClass(child, 'show-first');
484− if (child.childNodes[isGe].nodeType == 1) {
485− removeClass(child.childNodes[isGe], 'incremental');
486− }
487− } else {
488− incrementals[incrementals.length] = child;
489− }
490− }
491− incrementals = incrementals.concat(getIncrementals(child));
492− }
493− return incrementals;
494−}
495−
496−function createIncrementals() {
497− var incrementals = new Array();
498− for (var i = 0; i < smax; i++) {
499− incrementals[i] = getIncrementals(document.getElementById('slide'+i));
500− }
501− return incrementals;
502−}
503−
504−function defaultCheck() {
505− var allMetas = document.getElementsByTagName('meta');
506− for (var i = 0; i< allMetas.length; i++) {
507− if (allMetas[i].name == 'defaultView') {
508− defaultView = allMetas[i].content;
509− }
510− if (allMetas[i].name == 'controlVis') {
511− controlVis = allMetas[i].content;
512− }
513− }
514−}
515−
516−// Key trap fix, new function body for trap()
517−function trap(e) {
518− if (!e) {
519− e = event;
520− e.which = e.keyCode;
521− }
522− try {
523− modifierKey = e.ctrlKey || e.altKey || e.metaKey;
524− }
525− catch(e) {
526− modifierKey = false;
527− }
528− return modifierKey || e.which == 0;
529−}
530−
531−function startup() {
532− defaultCheck();
533− if (!isOp)
534− createControls();
535− slideLabel();
536− fixLinks();
537− externalLinks();
538− fontScale();
539− if (!isOp) {
540− notOperaFix();
541− incrementals = createIncrementals();
542− slideJump();
543− if (defaultView == 'outline') {
544− toggle();
545− }
546− document.onkeyup = keys;
547− document.onkeypress = trap;
548− document.onclick = clicker;
549− }
550−}
551−
552−window.onload = startup;
553−window.onresize = function(){setTimeout('fontScale()', 50);}
data/slideous/slideous.cssdeleted−95
@@ -1,95 +0,0 @@
1−/* This work is licensed under Creative Commons GNU LGPL License.
2−
3− License: http://creativecommons.org/licenses/LGPL/2.1/
4− Version: 1.0
5−
6− Author: Stefan Goessner/2005
7− Web: http://goessner.net/
8−*/
9−@media screen, projection {
10−body {
11− background-color: #e3eee7;
12− padding: 0;
13− margin: 0;
14− color: #132;
15− border-color: #678;
16− font-size: 125%;
17−}
18−#statusbar {
19− display: none;
20− position: absolute; z-index: 10;
21− top: auto; bottom: 0; left: 0; right: 0;
22− height: 2em;
23− background-color: #f0fff8;
24− color: #132;
25− font-size: 75%;
26− padding: 0.5em 0.5em 0 2px;
27− border-top: solid 1px #000;
28−}
29−#statusbar button, #tocbox {
30− cursor: pointer;
31− color: #031;
32− background-color: #e0eee7;
33− margin: 1px;
34− padding: 0 0.5em;
35− border: inset 1px black;
36−}
37−#statusbar button:hover, #tocbox:hover {
38− color: #031;
39− background-color: #c0ccc6;
40− border: outset 1px black;
41−}
42−#tocbox {
43− width: 15em;
44−}
45−#eos {
46− visibility: hidden;
47− color: #021;
48− background-color: #fffafa;
49− border: inset 1px black;
50− font-size: 120%;
51−}
52−div.slide {
53− display: block;
54− margin: 0 0 2em 0;
55− padding: 0 150px;
56−}
57−
58−div.slide h1 {
59− background: #a0aaa4;
60− color: #f0fff8;
61− padding: 0 0.5em 0 0.5em;
62− margin: 0 -150px;
63− font-size: 120%;
64− border-bottom: solid 1px black;
65−}
66−
67−div.slide h1:before { content: "# "; }
68−div.handout { display: block; }
69−
70−body>#statusbar { /* ie6 hack for fixing the statusbar - in quirks mode */
71− position: fixed; /* thanks to Anne van Kesteren and Arthur Steiner */
72−} /* see http://limpid.nl/lab/css/fixed/footer */
73−* html body {
74− overflow: hidden;
75−}
76−* html div.slide {
77− height: 100%;
78− padding-bottom: 2em;
79− overflow: auto;
80−} /* end ie6-hack */
81−
82−} /* @media screen, projection */
83−
84−@media print {
85−body {
86− color: black;
87− font-family: sans-serif;
88− font-size: 11pt;
89−}
90−
91−#statusbar { display: none; }
92−div.slide { page-break-after: always; }
93−div.handout { display: block; }
94−
95−} /* @media print */
data/slideous/slideous.jsdeleted−321
@@ -1,321 +0,0 @@
1−/* This work is licensed under Creative Commons GNU LGPL License.
2−
3− License: http://creativecommons.org/licenses/LGPL/2.1/
4−
5− Author: Stefan Goessner/2005-2006
6− Web: http://goessner.net/
7−*/
8−var Slideous = {
9− version: 1.0,
10− // == user customisable ===
11− clickables: { a: true, button: true, img: true, input: true, object: true, textarea: true, select: true, option: true },
12− incrementables: { blockquote: { filter: "self, parent" },
13− dd: { filter: "self, parent" },
14− dt: { filter: "self, parent" },
15− h2: { filter: "self, parent" },
16− h3: { filter: "self, parent" },
17− h4: { filter: "self, parent" },
18− h5: { filter: "self, parent" },
19− h6: { filter: "self, parent" },
20− li: { filter: "self, parent" },
21− p: { filter: "self" },
22− pre: { filter: "self" },
23− img: { filter: "self, parent" },
24− object: { filter: "self, parent" },
25− table: { filter: "self, parent" },
26− td: { filter: "self, parent" },
27− th: { filter: "self, parent" },
28− tr: { filter: "parent, grandparent" }
29− },
30− autoincrementables: { ol: true, ul: true, dl: true },
31− autoincrement: false,
32− statusbar: true,
33− navbuttons: { incfontbutton: function(){Slideous.changefontsize(+Slideous.fontdelta);},
34− decfontbutton: function(){Slideous.changefontsize(-Slideous.fontdelta);},
35− contentbutton: function(){Slideous.gotoslide(Slideous.tocidx(), true, true);},
36− homebutton: function(){Slideous.gotoslide(1, true, true);},
37− prevslidebutton: function(){Slideous.previous(false);},
38− previtembutton: function(){Slideous.previous(true);},
39− nextitembutton: function(){Slideous.next(true);},
40− nextslidebutton: function(){Slideous.next(false);},
41− endbutton: function(){Slideous.gotoslide(Slideous.count,true,true);} },
42− fontsize: 125, // in percent, corresponding to body.font-size in css file
43− fontdelta: 5, // increase/decrease fontsize by this value
44− mousesensitive: true,
45− tocidx: 0,
46− tocitems: { toc: "<li><a href=\"#s{\$slideidx}\">{\$slidetitle}</a></li>",
47− tocbox: "<option value=\"#s{\$slideidx}\" title=\"{\$slidetitle}\">{\$slidetitle}</option>" },
48− keydown: function(evt) {
49− evt = evt || window.event;
50− var key = evt.keyCode || evt.which;
51− if (key && !evt.ctrlKey && !evt.altKey) {
52− switch (key) {
53− case 33: // page up ... previous slide
54− Slideous.previous(false); evt.cancel = !Slideous.showall; break;
55− case 37: // left arrow ... previous item
56− Slideous.previous(true); evt.cancel = !Slideous.showall; break;
57− case 32: // space bar
58− case 39: // right arrow
59− Slideous.next(true); evt.cancel = !Slideous.showall; break;
60− case 13: // carriage return ... next slide
61− case 34: // page down
62− Slideous.next(false); evt.cancel = !Slideous.showall; break;
63− case 35: // end ... last slide (not recognised by opera)
64− Slideous.gotoslide(Slideous.count, true, true); evt.cancel = !Slideous.showall; break;
65− case 36: // home ... first slide (not recognised by opera)
66− Slideous.gotoslide(1, true, true); evt.cancel = !Slideous.showall; break;
67− case 65: // A ... show All
68− case 80: // P ... Print mode
69− Slideous.toggleshowall(!Slideous.showall); evt.cancel = true; break;
70− case 67: // C ... goto contents
71− Slideous.gotoslide(Slideous.tocidx, true, true); evt.cancel = true; break;
72− case 77: // M ... toggle mouse sensitivity
73− Slideous.mousenavigation(Slideous.mousesensitive = !Slideous.mousesensitive); evt.cancel = true; break;
74− case 83: // S ... toggle statusbar
75− Slideous.togglestatusbar(); evt.cancel = true; break;
76− case 61: // + ... increase fontsize
77− case 107:
78− Slideous.changefontsize(+Slideous.fontdelta); evt.cancel = true; break;
79− case 109: // - ... decrease fontsize
80− Slideous.changefontsize(-Slideous.fontdelta); evt.cancel = true; break;
81− default: break;
82− }
83− if (evt.cancel) evt.returnValue = false;
84− }
85− return !evt.cancel;
86− },
87−
88− // == program logic ===
89− count: 0, // # of slides ..
90− curidx: 0, // current slide index ..
91− mousedownpos: null, // last mouse down position ..
92− contentselected: false, // indicates content selection ..
93− showall: true,
94− init: function() {
95− Slideous.curidx = 1;
96− Slideous.importproperties();
97− Slideous.registerslides();
98− document.body.innerHTML = Slideous.injectproperties(document.body.innerHTML);
99− Slideous.buildtocs();
100− Slideous.registeranchors();
101− Slideous.toggleshowall(false);
102− Slideous.updatestatus();
103− document.body.style.fontSize = Slideous.fontsize+"%";
104− document.getElementById("s1").style.display = "block";
105− document.onkeydown = Slideous.keydown;
106− Slideous.mousenavigation(Slideous.mousesensitive);
107− Slideous.registerbuttons();
108− if (window.location.hash)
109− Slideous.gotoslide(window.location.hash.substr(2), true, true);
110− },
111− registerslides: function() {
112− var div = document.getElementsByTagName("div");
113− Slideous.count = 0;
114− for (var i in div)
115− if (Slideous.hasclass(div[i], "slide"))
116− div[i].setAttribute("id", "s"+(++Slideous.count));
117− },
118− registeranchors: function() {
119− var a = document.getElementsByTagName("a"),
120− loc = (window.location.hostname+window.location.pathname).replace(/\\/g, "/");
121− for (var i in a) {
122− if (a[i].href && a[i].href.indexOf(loc) >= 0 && a[i].href.lastIndexOf("#") >= 0) {
123− a[i].href = "javascript:Slideous.gotoslide(" + a[i].href.substr(a[i].href.lastIndexOf("#")+2)+",true,true)";
124− }
125− }
126− },
127− registerbuttons: function() {
128− var button;
129− for (var b in Slideous.navbuttons)
130− if (button = document.getElementById(b))
131− button.onclick = Slideous.navbuttons[b];
132− },
133− importproperties: function() { // from html meta section ..
134− var meta = document.getElementsByTagName("meta"), elem;
135− for (var i in meta)
136− if (meta[i].attributes && meta[i].attributes["name"] && meta[i].attributes["name"].value in Slideous)
137− switch (typeof(Slideous[meta[i].attributes["name"].value])) {
138− case "number": Slideous[meta[i].attributes["name"].value] = parseInt(meta[i].attributes["content"].value); break;
139− case "boolean": Slideous[meta[i].attributes["name"].value] = meta[i].attributes["content"].value == "true" ? true : false; break;
140− default: Slideous[meta[i].attributes["name"].value] = meta[i].attributes["content"].value; break;
141− }
142− },
143− injectproperties: function(str) {
144− var meta = document.getElementsByTagName("meta"), elem;
145− for (var i in meta) {
146− if (meta[i].attributes && meta[i].attributes["name"])
147− str = str.replace(new RegExp("{\\$"+meta[i].attributes["name"].value+"}","g"), meta[i].attributes["content"].value);
148− }
149− return str = str.replace(/{\$generator}/g, "Slideous")
150− .replace(/{\$version}/g, Slideous.version)
151− .replace(/{\$title}/g, document.title)
152− .replace(/{\$slidecount}/g, Slideous.count);
153− },
154− buildtocs: function() {
155− var toc = document.getElementById("toc"), list = "",
156− tocbox = document.getElementById("tocbox");
157− if (toc) {
158− for (var i=0; i<Slideous.count; i++)
159− list += Slideous.tocitems.toc.replace(/{\$slideidx}/g, i+1).replace(/{\$slidetitle}/, document.getElementById("s"+(i+1)).getElementsByTagName("h1")[0].innerHTML);
160− toc.innerHTML = list;
161− while (toc && !Slideous.hasclass(toc, "slide")) toc = toc.parentNode;
162− if (toc) Slideous.tocidx = toc.getAttribute("id").substr(1);
163− }
164− if (tocbox) {
165− tocbox.innerHTML = "";
166− for (var i=0; i<Slideous.count; i++)
167− tocbox.options[tocbox.length] = new Option((i+1)+". "+document.getElementById("s"+(i+1)).getElementsByTagName("h1")[0].innerHTML, "#s"+(i+1));
168− tocbox.onchange = function() { Slideous.gotoslide(this.selectedIndex+1, true, true); };
169− }
170− },
171− next: function(deep) {
172− if (!Slideous.showall) {
173− var slide = document.getElementById("s"+Slideous.curidx),
174− item = Slideous.firstitem(slide, Slideous.isitemhidden);
175− if (deep) { // next item
176− if (item)
177− Slideous.displayitem(item, true);
178− else
179− Slideous.gotoslide(Slideous.curidx+1, false, false);
180− }
181− else if (item) // complete slide ..
182− while (item = Slideous.firstitem(slide, Slideous.isitemhidden))
183− Slideous.displayitem(item, true);
184− else // next slide
185− Slideous.gotoslide(Slideous.curidx+1, true, false);
186− Slideous.updatestatus();
187− }
188− },
189− previous: function(deep) {
190− if (!Slideous.showall) {
191− var slide = document.getElementById("s"+Slideous.curidx);
192− if (deep) {
193− var item = Slideous.lastitem(slide, Slideous.isitemvisible);
194− if (item)
195− Slideous.displayitem(item, false);
196− else
197− Slideous.gotoslide(Slideous.curidx-1, true, false);
198− }
199− else
200− Slideous.gotoslide(Slideous.curidx-1, true, false);
201− Slideous.updatestatus();
202− }
203− },
204− gotoslide: function(i, showitems, updatestatus) {
205− if (!Slideous.showall && i > 0 && i <= Slideous.count && i != Slideous.curidx) {
206− document.getElementById("s"+Slideous.curidx).style.display = "none";
207− var slide = document.getElementById("s"+(Slideous.curidx=i)), item;
208− while (item = Slideous.firstitem(slide, showitems ? Slideous.isitemhidden : Slideous.isitemvisible))
209− Slideous.displayitem(item, showitems);
210− slide.style.display = "block";
211− if (updatestatus)
212− Slideous.updatestatus();
213− }
214− },
215− firstitem: function(root, filter) {
216− var found = filter(root);
217− for (var node=root.firstChild; node!=null && !found; node = node.nextSibling)
218− found = Slideous.firstitem(node, filter);
219− return found;
220− },
221− lastitem: function(root, filter) {
222− var found = null;
223− for (var node=root.lastChild; node!=null && !found; node = node.previousSibling)
224− found = Slideous.lastitem(node, filter);
225− return found || filter(root);
226− },
227− isitem: function(node, visible) {
228− var nodename;
229− return node && node.nodeType == 1 // elements only ..
230− && (nodename=node.nodeName.toLowerCase()) in Slideous.incrementables
231− && ( Slideous.incrementables[nodename].filter.match("\\bself\\b") && (Slideous.hasclass(node, "incremental") || (Slideous.autoincrement && nodename in Slideous.autoincrementables))
232− || Slideous.incrementables[nodename].filter.match("\\bparent\\b") && (Slideous.hasclass(node.parentNode, "incremental") || (Slideous.autoincrement && node.parentNode.nodeName.toLowerCase() in Slideous.autoincrementables))
233− || Slideous.incrementables[nodename].filter.match("\\bgrandparent\\b") && (Slideous.hasclass(node.parentNode.parentNode, "incremental") || (Slideous.autoincrement && node.parentNode.parentNode.nodeName.toLowerCase() in Slideous.autoincrementables))
234− )
235− && (visible ? (node.style.visibility != "hidden")
236− : (node.style.visibility == "hidden"))
237− ? node : null;
238− },
239− isitemvisible: function(node) { return Slideous.isitem(node, true); },
240− isitemhidden: function(node) { return Slideous.isitem(node, false); },
241− displayitem: function(item, show) {
242− if (item) item.style.visibility = (show ? "visible" : "hidden");
243− },
244− updatestatus: function() {
245− if (Slideous.statusbar) {
246− var eos = document.getElementById("eos"),
247− idx = document.getElementById("slideidx"),
248− tocbox = document.getElementById("tocbox");
249− if (eos)
250− eos.style.visibility = Slideous.firstitem(document.getElementById("s"+Slideous.curidx), Slideous.isitemhidden) != null
251− ? "visible" : "hidden";
252− if (idx)
253− idx.innerHTML = Slideous.curidx;
254− if (tocbox)
255− tocbox.selectedIndex = Slideous.curidx-1;
256− }
257− },
258− changefontsize: function(delta) {
259− document.body.style.fontSize = (Slideous.fontsize+=delta)+"%";
260− },
261− togglestatusbar: function() {
262− document.getElementById("statusbar").style.display = (Slideous.statusbar = !Slideous.statusbar) ? "block" : "none";
263− },
264− toggleshowall: function(showall) {
265− var slide, item;
266− for (var i=0; i<Slideous.count; i++) {
267− slide = document.getElementById("s"+(i+1));
268− slide.style.display = showall ? "block" : "none";
269− while (item = Slideous.firstitem(slide, showall ? Slideous.isitemhidden : Slideous.isitemvisible))
270− Slideous.displayitem(item, showall);
271− var divs = slide.getElementsByTagName("div");
272− for (var j in divs)
273− if (Slideous.hasclass(divs[j], "handout"))
274− divs[j].style.display = showall ? "block" : "none";
275− }
276− if (!showall)
277− document.getElementById("s"+Slideous.curidx).style.display = "block";
278− if (Slideous.statusbar)
279− document.getElementById("statusbar").style.display = showall ? "none" : "block";
280− Slideous.showall = showall;
281− },
282− hasclass: function(elem, classname) {
283− var classattr = null;
284− return (classattr=(elem.attributes && elem.attributes["class"]))
285− && classattr.nodeValue.match("\\b"+classname+"\\b");
286− },
287− selectedcontent: function() {
288− return window.getSelection ? window.getSelection().toString()
289− : document.getSelection ? document.getSelection()
290− : document.selection ? document.selection.createRange().text
291− : "";
292− },
293− mousenavigation: function(on) {
294− if (on) {
295− document.onmousedown = Slideous.mousedown;
296− document.onmouseup = Slideous.mouseup;
297− }
298− else
299− document.onmousedown = document.onmouseup = null;
300− },
301− mousepos: function(e) {
302− return e.pageX ? {x: e.pageX, y: e.pageY}
303− : {x: e.x+document.body.scrollLeft, y: e.y+document.body.scrollTop};
304− },
305− mousedown: function(evt) {
306− evt = evt||window.event;
307− Slideous.mousedownpos = Slideous.mousepos(evt);
308− Slideous.contentselected = !!Slideous.selectedcontent() || ((evt.target || evt.srcElement).nodeName.toLowerCase() in Slideous.clickables);
309− return true;
310− },
311− mouseup: function(evt) {
312− evt = evt||window.event;
313− var pos = Slideous.mousepos(evt);
314− if (pos.x == Slideous.mousedownpos.x && pos.y == Slideous.mousedownpos.y && !Slideous.contentselected) {
315− Slideous.next(true);
316− return evt.returnValue = !(evt.cancel = true);
317− }
318− return false;
319− }
320−};
321−window.onload = Slideous.init;
data/slidy/graphics/fold-dim.gifdeleted

Binary file not shown.

data/slidy/graphics/fold.gifdeleted

Binary file not shown.

data/slidy/graphics/nofold-dim.gifdeleted

Binary file not shown.

data/slidy/graphics/unfold-dim.gifdeleted

Binary file not shown.

data/slidy/graphics/unfold.gifdeleted

Binary file not shown.

data/slidy/scripts/slidy.jsdeleted−3016
@@ -1,3016 +0,0 @@
1−/* slidy.js
2−
3− Copyright (c) 2005-2011 W3C (MIT, ERCIM, Keio), All Rights Reserved.
4− W3C liability, trademark, document use and software licensing
5− rules apply, see:
6−
7− http://www.w3.org/Consortium/Legal/copyright-documents
8− http://www.w3.org/Consortium/Legal/copyright-software
9−
10− Defines single name "w3c_slidy" in global namespace
11− Adds event handlers without trampling on any others
12−*/
13−
14−// the slidy object implementation
15−var w3c_slidy = {
16− // classify which kind of browser we're running under
17− ns_pos: (typeof window.pageYOffset!='undefined'),
18− khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
19− opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
20− ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
21− iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
22− android: ((navigator.userAgent).indexOf("Android") >= 0 ? true : false),
23− ie: (typeof document.all != "undefined" && !this.opera),
24− ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
25− ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
26− ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
27− ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
28−
29− // data for swipe and double tap detection on touch screens
30− last_tap: 0,
31− prev_tap: 0,
32− start_x: 0,
33− start_y: 0,
34− delta_x: 0,
35− delta_y: 0,
36−
37− // are we running as XHTML? (doesn't work on Opera)
38− is_xhtml: /xml/.test(document.contentType),
39−
40− slide_number: 0, // integer slide count: 0, 1, 2, ...
41− slide_number_element: null, // element containing slide number
42− slides: [], // set to array of slide div's
43− notes: [], // set to array of handout div's
44− backgrounds: [], // set to array of background div's
45− toolbar: null, // element containing toolbar
46− title: null, // document title
47− last_shown: null, // last incrementally shown item
48− eos: null, // span element for end of slide indicator
49− toc: null, // table of contents
50− outline: null, // outline element with the focus
51− selected_text_len: 0, // length of drag selection on document
52− view_all: 0, // 1 to view all slides + handouts
53− want_toolbar: true, // user preference to show/hide toolbar
54− mouse_click_enabled: true, // enables left click for next slide
55− scroll_hack: 0, // IE work around for position: fixed
56− disable_slide_click: false, // used by clicked anchors
57−
58− lang: "en", // updated to language specified by html file
59−
60− help_anchor: null, // used for keyboard focus hack in showToolbar()
61− help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
62− help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
63− "or Pg Up and Pg Dn. Use S and B to change font size.",
64−
65− size_index: 0,
66− size_adjustment: 0,
67− sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
68− "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
69−
70− // needed for efficient resizing
71− last_width: 0,
72− last_height: 0,
73−
74−
75− // Needed for cross browser support for relative width/height on
76− // object elements. The work around is to save width/height attributes
77− // and then to recompute absolute width/height dimensions on resizing
78− objects: [],
79−
80− // attach initialiation event handlers
81− set_up: function () {
82− var init = function() { w3c_slidy.init(); };
83− if (typeof window.addEventListener != "undefined")
84− window.addEventListener("load", init, false);
85− else
86− window.attachEvent("onload", init);
87− },
88−
89− hide_slides: function () {
90− if (document.body && !w3c_slidy.initialized)
91− document.body.style.visibility = "hidden";
92− else
93− setTimeout(w3c_slidy.hide_slides, 50);
94− },
95−
96− // hack to persuade IE to compute correct document height
97− // as needed for simulating fixed positioning of toolbar
98− ie_hack: function () {
99− window.resizeBy(0,-1);
100− window.resizeBy(0, 1);
101− },
102−
103− init: function () {
104− //alert("slidy starting test 10");
105− document.body.style.visibility = "visible";
106− this.init_localization();
107− this.add_toolbar();
108− this.wrap_implicit_slides();
109− this.collect_slides();
110− this.collect_notes();
111− this.collect_backgrounds();
112− this.objects = document.body.getElementsByTagName("object");
113− this.patch_anchors();
114− this.slide_number = this.find_slide_number(location.href);
115− window.offscreenbuffering = true;
116− this.size_adjustment = this.find_size_adjust();
117− this.time_left = this.find_duration();
118− this.hide_image_toolbar(); // suppress IE image toolbar popup
119− this.init_outliner(); // activate fold/unfold support
120− this.title = document.title;
121− this.keyboardless = (this.ipad||this.iphone||this.android);
122−
123− if (this.keyboardless)
124− {
125− w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
126− this.want_toolbar = 0;
127− }
128−
129− // work around for opera bug
130− this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
131−
132− if (this.slides.length > 0)
133− {
134− var slide = this.slides[this.slide_number];
135−
136− if (this.slide_number > 0)
137− {
138− this.set_visibility_all_incremental("visible");
139− this.last_shown = this.previous_incremental_item(null);
140− this.set_eos_status(true);
141− }
142− else
143− {
144− this.last_shown = null;
145− this.set_visibility_all_incremental("hidden");
146− this.set_eos_status(!this.next_incremental_item(this.last_shown));
147− }
148−
149− this.set_location();
150− this.add_class(this.slides[0], "first-slide");
151− w3c_slidy.show_slide(slide);
152− }
153−
154− this.toc = this.table_of_contents();
155−
156− this.add_initial_prompt();
157−
158− // bind event handlers without interfering with custom page scripts
159− // Tap events behave too weirdly to support clicks reliably on
160− // iPhone and iPad, so exclude these from click handler
161−
162− if (!this.keyboardless)
163− {
164− this.add_listener(document.body, "click", this.mouse_button_click);
165− this.add_listener(document.body, "mousedown", this.mouse_button_down);
166− }
167−
168− this.add_listener(document, "keydown", this.key_down);
169− this.add_listener(document, "keypress", this.key_press);
170− this.add_listener(window, "resize", this.resized);
171− this.add_listener(window, "scroll", this.scrolled);
172− this.add_listener(window, "unload", this.unloaded);
173−
174− //this.add_listener(document.body, "touchstart", this.touchstart);
175− //this.add_listener(document.body, "touchmove", this.touchmove);
176− //this.add_listener(document.body, "touchend", this.touchend);
177−
178− this.add_listener(document, "gesturechange", function ()
179− {
180− return false;
181− });
182−
183− this.attach_touch_handers(this.slides);
184−
185− // this seems to be a debugging hack
186− //if (!document.body.onclick)
187− // document.body.onclick = function () { };
188−
189− this.single_slide_view();
190−
191− //this.set_location();
192−
193− this.resized();
194−
195− if (this.ie7)
196− setTimeout(w3c_slidy.ie_hack, 100);
197−
198− this.show_toolbar();
199−
200− // for back button detection
201− setInterval(function () { w3c_slidy.check_location(); }, 200);
202− w3c_slidy.initialized = true;
203− },
204−
205− // create div element with links to each slide
206− table_of_contents: function () {
207− var toc = this.create_element("div");
208− this.add_class(toc, "slidy_toc hidden");
209− //toc.setAttribute("tabindex", "0");
210−
211− var heading = this.create_element("div");
212− this.add_class(heading, "toc-heading");
213− heading.innerHTML = this.localize("Table of Contents");
214−
215− toc.appendChild(heading);
216− var previous = null;
217−
218− for (var i = 0; i < this.slides.length; ++i)
219− {
220− var title = this.has_class(this.slides[i], "title");
221− var num = document.createTextNode((i + 1) + ". ");
222−
223− toc.appendChild(num);
224−
225− var a = this.create_element("a");
226− a.setAttribute("href", "#(" + (i+1) + ")");
227−
228− if (title)
229− this.add_class(a, "titleslide");
230−
231− var name = document.createTextNode(this.slide_name(i));
232− a.appendChild(name);
233− a.onclick = w3c_slidy.toc_click;
234− a.onkeydown = w3c_slidy.toc_key_down;
235− a.previous = previous;
236−
237− if (previous)
238− previous.next = a;
239−
240− toc.appendChild(a);
241−
242− if (i == 0)
243− toc.first = a;
244−
245− if (i < this.slides.length - 1)
246− {
247− var br = this.create_element("br");
248− toc.appendChild(br);
249− }
250−
251− previous = a;
252− }
253−
254− toc.focus = function () {
255− if (this.first)
256− this.first.focus();
257− }
258−
259− toc.onmouseup = w3c_slidy.mouse_button_up;
260−
261− toc.onclick = function (e) {
262− e||(e=window.event);
263−
264− if (w3c_slidy.selected_text_len <= 0)
265− w3c_slidy.hide_table_of_contents(true);
266−
267− w3c_slidy.stop_propagation(e);
268−
269− if (e.cancel != undefined)
270− e.cancel = true;
271−
272− if (e.returnValue != undefined)
273− e.returnValue = false;
274−
275− return false;
276− };
277−
278− document.body.insertBefore(toc, document.body.firstChild);
279− return toc;
280− },
281−
282− is_shown_toc: function () {
283− return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
284− },
285−
286− show_table_of_contents: function () {
287− w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
288− var toc = w3c_slidy.toc;
289− toc.focus();
290−
291− if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
292− setTimeout(w3c_slidy.ie_hack, 100);
293− },
294−
295− hide_table_of_contents: function (focus) {
296− w3c_slidy.add_class(w3c_slidy.toc, "hidden");
297−
298− if (focus && !w3c_slidy.opera &&
299− !w3c_slidy.has_class(w3c_slidy.toc, "hidden"))
300− w3c_slidy.help_anchor.focus();
301− },
302−
303− toggle_table_of_contents: function () {
304− if (w3c_slidy.is_shown_toc())
305− w3c_slidy.hide_table_of_contents(true);
306− else
307− w3c_slidy.show_table_of_contents();
308− },
309−
310− // called on clicking toc entry
311− toc_click: function (e) {
312− if (!e)
313− e = window.event;
314−
315− var target = w3c_slidy.get_target(e);
316−
317− if (target && target.nodeType == 1)
318− {
319− var uri = target.getAttribute("href");
320−
321− if (uri)
322− {
323− //alert("going to " + uri);
324− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
325− w3c_slidy.hide_slide(slide);
326− w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
327− slide = w3c_slidy.slides[w3c_slidy.slide_number];
328− w3c_slidy.last_shown = null;
329− w3c_slidy.set_location();
330− w3c_slidy.set_visibility_all_incremental("hidden");
331− w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
332− w3c_slidy.show_slide(slide);
333− //target.focus();
334−
335− try
336− {
337− if (!w3c_slidy.opera)
338− w3c_slidy.help_anchor.focus();
339− }
340− catch (e)
341− {
342− }
343− }
344− }
345−
346− w3c_slidy.hide_table_of_contents(true);
347− if (w3c_slidy.ie7) w3c_slidy.ie_hack();
348− w3c_slidy.stop_propagation(e);
349− return w3c_slidy.cancel(e);
350− },
351−
352− // called onkeydown for toc entry
353− toc_key_down: function (event) {
354− var key;
355−
356− if (!event)
357− var event = window.event;
358−
359− // kludge around NS/IE differences
360− if (window.event)
361− key = window.event.keyCode;
362− else if (event.which)
363− key = event.which;
364− else
365− return true; // Yikes! unknown browser
366−
367− // ignore event if key value is zero
368− // as for alt on Opera and Konqueror
369− if (!key)
370− return true;
371−
372− // check for concurrent control/command/alt key
373− // but are these only present on mouse events?
374−
375− if (event.ctrlKey || event.altKey)
376− return true;
377−
378− if (key == 13)
379− {
380− var uri = this.getAttribute("href");
381−
382− if (uri)
383− {
384− //alert("going to " + uri);
385− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
386− w3c_slidy.hide_slide(slide);
387− w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
388− slide = w3c_slidy.slides[w3c_slidy.slide_number];
389− w3c_slidy.last_shown = null;
390− w3c_slidy.set_location();
391− w3c_slidy.set_visibility_all_incremental("hidden");
392− w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
393− w3c_slidy.show_slide(slide);
394− //target.focus();
395−
396− try
397− {
398− if (!w3c_slidy.opera)
399− w3c_slidy.help_anchor.focus();
400− }
401− catch (e)
402− {
403− }
404− }
405−
406− w3c_slidy.hide_table_of_contents(true);
407−
408− if (self.ie7)
409− w3c_slidy.ie_hack();
410−
411− return w3c_slidy.cancel(event);
412− }
413−
414− if (key == 40 && this.next)
415− {
416− this.next.focus();
417− return w3c_slidy.cancel(event);
418− }
419−
420− if (key == 38 && this.previous)
421− {
422− this.previous.focus();
423− return w3c_slidy.cancel(event);
424− }
425−
426− return true;
427− },
428−
429− touchstart: function (e)
430− {
431− //e.preventDefault();
432− this.prev_tap = this.last_tap;
433− this.last_tap = (new Date).getTime();
434−
435− var tap_delay = this.last_tap - this.prev_tap;
436−
437− if (tap_delay <= 200)
438− {
439− // double tap
440− }
441−
442− var touch = e.touches[0];
443−
444− this.start_x = touch.pageX;
445− this.start_y = touch.pageY;
446− this.delta_x = this.delta_y = 0;
447− },
448−
449− touchmove: function (e)
450− {
451− //e.preventDefault();
452− var touch = e.touches[0];
453− this.delta_x = touch.pageX - this.start_x;
454− this.delta_y = touch.pageY - this.start_y;
455− },
456−
457− touchend: function (e)
458− {
459− //e.preventDefault();
460− var delay = (new Date).getTime() - this.last_tap;
461− var dx = this.delta_x;
462− var dy = this.delta_y;
463− var abs_dx = Math.abs(dx);
464− var abs_dy = Math.abs(dy);
465−
466− if (delay < 500 && (abs_dx > 100 || abs_dy > 100))
467− {
468− if (abs_dx > 0.5 * abs_dy)
469− {
470− if (dx < 0)
471− w3c_slidy.next_slide(true);
472− else
473− w3c_slidy.previous_slide(true);
474− }
475− else if (abs_dy > 2 * abs_dx)
476− {
477− w3c_slidy.toggle_table_of_contents();
478− }
479− }
480− },
481−
482− // ### OBSOLETE ###
483− before_print: function () {
484− this.show_all_slides();
485− this.hide_toolbar();
486− alert("before print");
487− },
488−
489− // ### OBSOLETE ###
490− after_print: function () {
491− if (!this.view_all)
492− {
493− this.single_slide_view();
494− this.show_toolbar();
495− }
496− alert("after print");
497− },
498−
499− // ### OBSOLETE ###
500− print_slides: function () {
501− this.before_print();
502− window.print();
503− this.after_print();
504− },
505−
506− // ### OBSOLETE ?? ###
507− toggle_view: function () {
508− if (this.view_all)
509− {
510− this.single_slide_view();
511− this.show_toolbar();
512− this.view_all = 0;
513− }
514− else
515− {
516− this.show_all_slides();
517− this.hide_toolbar();
518− this.view_all = 1;
519− }
520− },
521−
522− // prepare for printing ### OBSOLETE ###
523− show_all_slides: function () {
524− this.remove_class(document.body, "single_slide");
525− this.set_visibility_all_incremental("visible");
526− },
527−
528− // restore after printing ### OBSOLETE ###
529− single_slide_view: function () {
530− this.add_class(document.body, "single_slide");
531− this.set_visibility_all_incremental("visible");
532− this.last_shown = this.previous_incremental_item(null);
533− },
534−
535− // suppress IE's image toolbar pop up
536− hide_image_toolbar: function () {
537− if (!this.ns_pos)
538− {
539− var images = document.getElementsByTagName("IMG");
540−
541− for (var i = 0; i < images.length; ++i)
542− images[i].setAttribute("galleryimg", "no");
543− }
544− },
545−
546− unloaded: function (e) {
547− //alert("unloaded");
548− },
549−
550− // Safari and Konqueror don't yet support getComputedStyle()
551− // and they always reload page when location.href is updated
552− is_KHTML: function () {
553− var agent = navigator.userAgent;
554− return (agent.indexOf("KHTML") >= 0 ? true : false);
555− },
556−
557− // find slide name from first h1 element
558− // default to document title + slide number
559− slide_name: function (index) {
560− var name = null;
561− var slide = this.slides[index];
562−
563− var heading = this.find_heading(slide);
564−
565− if (heading)
566− name = this.extract_text(heading);
567−
568− if (!name)
569− name = this.title + "(" + (index + 1) + ")";
570−
571− name.replace(/\&/g, "&amp;");
572− name.replace(/\</g, "&lt;");
573− name.replace(/\>/g, "&gt;");
574−
575− return name;
576− },
577−
578− // find first h1 element in DOM tree
579− find_heading: function (node) {
580− if (!node || node.nodeType != 1)
581− return null;
582−
583− if (node.nodeName == "H1" || node.nodeName == "h1")
584− return node;
585−
586− var child = node.firstChild;
587−
588− while (child)
589− {
590− node = this.find_heading(child);
591−
592− if (node)
593− return node;
594−
595− child = child.nextSibling;
596− }
597−
598− return null;
599− },
600−
601− // recursively extract text from DOM tree
602− extract_text: function (node) {
603− if (!node)
604− return "";
605−
606− // text nodes
607− if (node.nodeType == 3)
608− return node.nodeValue;
609−
610− // elements
611− if (node.nodeType == 1)
612− {
613− node = node.firstChild;
614− var text = "";
615−
616− while (node)
617− {
618− text = text + this.extract_text(node);
619− node = node.nextSibling;
620− }
621−
622− return text;
623− }
624−
625− return "";
626− },
627−
628− // find copyright text from meta element
629− find_copyright: function () {
630− var name, content;
631− var meta = document.getElementsByTagName("meta");
632−
633− for (var i = 0; i < meta.length; ++i)
634− {
635− name = meta[i].getAttribute("name");
636− content = meta[i].getAttribute("content");
637−
638− if (name == "copyright")
639− return content;
640− }
641−
642− return null;
643− },
644−
645− find_size_adjust: function () {
646− var name, content, offset;
647− var meta = document.getElementsByTagName("meta");
648−
649− for (var i = 0; i < meta.length; ++i)
650− {
651− name = meta[i].getAttribute("name");
652− content = meta[i].getAttribute("content");
653−
654− if (name == "font-size-adjustment")
655− return 1 * content;
656− }
657−
658− return 1;
659− },
660−
661− // <meta name="duration" content="20" /> for 20 minutes
662− find_duration: function () {
663− var name, content, offset;
664− var meta = document.getElementsByTagName("meta");
665−
666− for (var i = 0; i < meta.length; ++i)
667− {
668− name = meta[i].getAttribute("name");
669− content = meta[i].getAttribute("content");
670−
671− if (name == "duration")
672− return 60000 * content;
673− }
674−
675− return null;
676− },
677−
678− replace_by_non_breaking_space: function (str) {
679− for (var i = 0; i < str.length; ++i)
680− str[i] = 160;
681− },
682−
683− // ### CHECK ME ### is use of "li" okay for text/html?
684− // for XHTML do we also need to specify namespace?
685− init_outliner: function () {
686− var items = document.getElementsByTagName("li");
687−
688− for (var i = 0; i < items.length; ++i)
689− {
690− var target = items[i];
691−
692− if (!this.has_class(target.parentNode, "outline"))
693− continue;
694−
695− target.onclick = this.outline_click;
696−/* ### more work needed for IE6
697− if (!this.ns_pos)
698− {
699− target.onmouseover = this.hover_outline;
700− target.onmouseout = this.unhover_outline;
701− }
702−*/
703− if (this.foldable(target))
704− {
705− target.foldable = true;
706− target.onfocus = function () {w3c_slidy.outline = this;};
707− target.onblur = function () {w3c_slidy.outline = null;};
708−
709− if (!target.getAttribute("tabindex"))
710− target.setAttribute("tabindex", "0");
711−
712− if (this.has_class(target, "expand"))
713− this.unfold(target);
714− else
715− this.fold(target);
716− }
717− else
718− {
719− this.add_class(target, "nofold");
720− target.visible = true;
721− target.foldable = false;
722− }
723− }
724− },
725−
726− foldable: function (item) {
727− if (!item || item.nodeType != 1)
728− return false;
729−
730− var node = item.firstChild;
731−
732− while (node)
733− {
734− if (node.nodeType == 1 && this.is_block(node))
735− return true;
736−
737− node = node.nextSibling;
738− }
739−
740− return false;
741− },
742−
743− // ### CHECK ME ### switch to add/remove "hidden" class
744− fold: function (item) {
745− if (item)
746− {
747− this.remove_class(item, "unfolded");
748− this.add_class(item, "folded");
749− }
750−
751− var node = item ? item.firstChild : null;
752−
753− while (node)
754− {
755− if (node.nodeType == 1 && this.is_block(node)) // element
756− {
757− w3c_slidy.add_class(node, "hidden");
758− }
759−
760− node = node.nextSibling;
761− }
762−
763− item.visible = false;
764− },
765−
766− // ### CHECK ME ### switch to add/remove "hidden" class
767− unfold: function (item) {
768− if (item)
769− {
770− this.add_class(item, "unfolded");
771− this.remove_class(item, "folded");
772− }
773−
774− var node = item ? item.firstChild : null;
775−
776− while (node)
777− {
778− if (node.nodeType == 1 && this.is_block(node)) // element
779− {
780− w3c_slidy.remove_class(node, "hidden");
781− }
782−
783− node = node.nextSibling;
784− }
785−
786− item.visible = true;
787− },
788−
789− outline_click: function (e) {
790− if (!e)
791− e = window.event;
792−
793− var rightclick = false;
794− var target = w3c_slidy.get_target(e);
795−
796− while (target && target.visible == undefined)
797− target = target.parentNode;
798−
799− if (!target)
800− return true;
801−
802− if (e.which)
803− rightclick = (e.which == 3);
804− else if (e.button)
805− rightclick = (e.button == 2);
806−
807− if (!rightclick && target.visible != undefined)
808− {
809− if (target.foldable)
810− {
811− if (target.visible)
812− w3c_slidy.fold(target);
813− else
814− w3c_slidy.unfold(target);
815− }
816−
817− w3c_slidy.stop_propagation(e);
818− e.cancel = true;
819− e.returnValue = false;
820− }
821−
822− return false;
823− },
824−
825− add_initial_prompt: function () {
826− var prompt = this.create_element("div");
827− prompt.setAttribute("class", "initial_prompt");
828−
829− var p1 = this.create_element("p");
830− prompt.appendChild(p1);
831− p1.setAttribute("class", "help");
832−
833− if (this.keyboardless)
834− p1.innerHTML = "swipe left to move to next slide";
835− else
836− p1.innerHTML = "Space, Right Arrow or swipe left to move to " +
837− "next slide, click help below for more details";
838−
839− this.add_listener(prompt, "click", function (e) {
840− document.body.removeChild(prompt);
841− w3c_slidy.stop_propagation(e);
842−
843− if (e.cancel != undefined)
844− e.cancel = true;
845−
846− if (e.returnValue != undefined)
847− e.returnValue = false;
848−
849− return false;
850− });
851−
852− document.body.appendChild(prompt);
853− this.initial_prompt = prompt;
854− setTimeout(function() {document.body.removeChild(prompt);}, 5000);
855− },
856−
857− add_toolbar: function () {
858− var counter, page;
859−
860− this.toolbar = this.create_element("div");
861− this.toolbar.setAttribute("class", "toolbar");
862−
863− // a reasonably behaved browser
864− if (this.ns_pos || !this.ie6)
865− {
866− var right = this.create_element("div");
867− right.setAttribute("style", "float: right; text-align: right");
868−
869− counter = this.create_element("span")
870− counter.innerHTML = this.localize("slide") + " n/m";
871− right.appendChild(counter);
872− this.toolbar.appendChild(right);
873−
874− var left = this.create_element("div");
875− left.setAttribute("style", "text-align: left");
876−
877− // global end of slide indicator
878− this.eos = this.create_element("span");
879− this.eos.innerHTML = "* ";
880− left.appendChild(this.eos);
881−
882− var help = this.create_element("a");
883− help.setAttribute("href", this.help_page);
884− help.setAttribute("title", this.localize(this.help_text));
885− help.innerHTML = this.localize("help?");
886− left.appendChild(help);
887− this.help_anchor = help; // save for focus hack
888−
889− var gap1 = document.createTextNode(" ");
890− left.appendChild(gap1);
891−
892− var contents = this.create_element("a");
893− contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
894− contents.setAttribute("title", this.localize("table of contents"));
895− contents.innerHTML = this.localize("contents?");
896− left.appendChild(contents);
897−
898− var gap2 = document.createTextNode(" ");
899− left.appendChild(gap2);
900−
901− var copyright = this.find_copyright();
902−
903− if (copyright)
904− {
905− var span = this.create_element("span");
906− span.className = "copyright";
907− span.innerHTML = copyright;
908− left.appendChild(span);
909− }
910−
911− this.toolbar.setAttribute("tabindex", "0");
912− this.toolbar.appendChild(left);
913− }
914− else // IE6 so need to work around its poor CSS support
915− {
916− this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
917− this.toolbar.style.zIndex = "200";
918− this.toolbar.style.width = "99.9%";
919− this.toolbar.style.height = "1.2em";
920− this.toolbar.style.top = "auto";
921− this.toolbar.style.bottom = "0";
922− this.toolbar.style.left = "0";
923− this.toolbar.style.right = "0";
924− this.toolbar.style.textAlign = "left";
925− this.toolbar.style.fontSize = "60%";
926− this.toolbar.style.color = "red";
927− this.toolbar.borderWidth = 0;
928− this.toolbar.className = "toolbar";
929− this.toolbar.style.background = "rgb(240,240,240)";
930−
931− // would like to have help text left aligned
932− // and page counter right aligned, floating
933− // div's don't work, so instead use nested
934− // absolutely positioned div's.
935−
936− var sp = this.create_element("span");
937− sp.innerHTML = "&nbsp;&nbsp;*&nbsp;";
938− this.toolbar.appendChild(sp);
939− this.eos = sp; // end of slide indicator
940−
941− var help = this.create_element("a");
942− help.setAttribute("href", this.help_page);
943− help.setAttribute("title", this.localize(this.help_text));
944− help.innerHTML = this.localize("help?");
945− this.toolbar.appendChild(help);
946− this.help_anchor = help; // save for focus hack
947−
948− var gap1 = document.createTextNode(" ");
949− this.toolbar.appendChild(gap1);
950−
951− var contents = this.create_element("a");
952− contents.setAttribute("href", "javascript:toggleTableOfContents()");
953− contents.setAttribute("title", this.localize("table of contents".localize));
954− contents.innerHTML = this.localize("contents?");
955− this.toolbar.appendChild(contents);
956−
957− var gap2 = document.createTextNode(" ");
958− this.toolbar.appendChild(gap2);
959−
960− var copyright = this.find_copyright();
961−
962− if (copyright)
963− {
964− var span = this.create_element("span");
965− span.innerHTML = copyright;
966− span.style.color = "black";
967− span.style.marginLeft = "0.5em";
968− this.toolbar.appendChild(span);
969− }
970−
971− counter = this.create_element("div")
972− counter.style.position = "absolute";
973− counter.style.width = "auto"; //"20%";
974− counter.style.height = "1.2em";
975− counter.style.top = "auto";
976− counter.style.bottom = 0;
977− counter.style.right = "0";
978− counter.style.textAlign = "right";
979− counter.style.color = "red";
980− counter.style.background = "rgb(240,240,240)";
981−
982− counter.innerHTML = this.localize("slide") + " n/m";
983− this.toolbar.appendChild(counter);
984− }
985−
986− // ensure that click isn't passed through to the page
987− this.toolbar.onclick =
988− function (e) {
989− if (!e)
990− e = window.event;
991−
992− var target = e.target;
993−
994− if (!target && e.srcElement)
995− target = e.srcElement;
996−
997− // work around Safari bug
998− if (target && target.nodeType == 3)
999− target = target.parentNode;
1000−
1001− w3c_slidy.stop_propagation(e);
1002−
1003− if (target && target.nodeName.toLowerCase() != "a")
1004− w3c_slidy.mouse_button_click(e);
1005− };
1006−
1007− this.slide_number_element = counter;
1008− this.set_eos_status(false);
1009− document.body.appendChild(this.toolbar);
1010− },
1011−
1012− // wysiwyg editors make it hard to use div elements
1013− // e.g. amaya loses the div when you copy and paste
1014− // this function wraps div elements around implicit
1015− // slides which start with an h1 element and continue
1016− // up to the next heading or div element
1017− wrap_implicit_slides: function () {
1018− var i, heading, node, next, div;
1019− var headings = document.getElementsByTagName("h1");
1020−
1021− if (!headings)
1022− return;
1023−
1024− for (i = 0; i < headings.length; ++i)
1025− {
1026− heading = headings[i];
1027−
1028− if (heading.parentNode != document.body)
1029− continue;
1030−
1031− node = heading.nextSibling;
1032−
1033− div = document.createElement("div");
1034− this.add_class(div, "slide");
1035− document.body.replaceChild(div, heading);
1036− div.appendChild(heading);
1037−
1038− while (node)
1039− {
1040− if (node.nodeType == 1) // an element
1041− {
1042− if (node.nodeName == "H1" || node.nodeName == "h1")
1043− break;
1044−
1045− if (node.nodeName == "DIV" || node.nodeName == "div")
1046− {
1047− if (this.has_class(node, "slide"))
1048− break;
1049−
1050− if (this.has_class(node, "handout"))
1051− break;
1052− }
1053− }
1054−
1055− next = node.nextSibling;
1056− node = document.body.removeChild(node);
1057− div.appendChild(node);
1058− node = next;
1059− }
1060− }
1061− },
1062−
1063− attach_touch_handers: function(slides)
1064− {
1065− var i, slide;
1066−
1067− for (i = 0; i < slides.length; ++i)
1068− {
1069− slide = slides[i];
1070− this.add_listener(slide, "touchstart", this.touchstart);
1071− this.add_listener(slide, "touchmove", this.touchmove);
1072− this.add_listener(slide, "touchend", this.touchend);
1073− }
1074− },
1075−
1076−// return new array of all slides
1077− collect_slides: function () {
1078− var slides = new Array();
1079− var divs = document.body.getElementsByTagName("div");
1080−
1081− for (var i = 0; i < divs.length; ++i)
1082− {
1083− div = divs.item(i);
1084−
1085− if (this.has_class(div, "slide"))
1086− {
1087− // add slide to collection
1088− slides[slides.length] = div;
1089−
1090− // hide each slide as it is found
1091− this.add_class(div, "hidden");
1092−
1093− // add dummy <br/> at end for scrolling hack
1094− var node1 = document.createElement("br");
1095− div.appendChild(node1);
1096− var node2 = document.createElement("br");
1097− div.appendChild(node2);
1098− }
1099− else if (this.has_class(div, "background"))
1100− { // work around for Firefox SVG reload bug
1101− // which otherwise replaces 1st SVG graphic with 2nd
1102− div.style.display = "block";
1103− }
1104− }
1105−
1106− this.slides = slides;
1107− },
1108−
1109− // return new array of all <div class="handout">
1110− collect_notes: function () {
1111− var notes = new Array();
1112− var divs = document.body.getElementsByTagName("div");
1113−
1114− for (var i = 0; i < divs.length; ++i)
1115− {
1116− div = divs.item(i);
1117−
1118− if (this.has_class(div, "handout"))
1119− {
1120− // add note to collection
1121− notes[notes.length] = div;
1122−
1123− // and hide it
1124− this.add_class(div, "hidden");
1125− }
1126− }
1127−
1128− this.notes = notes;
1129− },
1130−
1131− // return new array of all <div class="background">
1132− // including named backgrounds e.g. class="background titlepage"
1133− collect_backgrounds: function () {
1134− var backgrounds = new Array();
1135− var divs = document.body.getElementsByTagName("div");
1136−
1137− for (var i = 0; i < divs.length; ++i)
1138− {
1139− div = divs.item(i);
1140−
1141− if (this.has_class(div, "background"))
1142− {
1143− // add background to collection
1144− backgrounds[backgrounds.length] = div;
1145−
1146− // and hide it
1147− this.add_class(div, "hidden");
1148− }
1149− }
1150−
1151− this.backgrounds = backgrounds;
1152− },
1153−
1154− // set click handlers on all anchors
1155− patch_anchors: function () {
1156− var self = w3c_slidy;
1157− var handler = function (event) {
1158− // compare this.href with location.href
1159− // for link to another slide in this doc
1160−
1161− if (self.page_address(this.href) == self.page_address(location.href))
1162− {
1163− // yes, so find new slide number
1164− var newslidenum = self.find_slide_number(this.href);
1165−
1166− if (newslidenum != self.slide_number)
1167− {
1168− var slide = self.slides[self.slide_number];
1169− self.hide_slide(slide);
1170− self.slide_number = newslidenum;
1171− slide = self.slides[self.slide_number];
1172− self.show_slide(slide);
1173− self.set_location();
1174− }
1175− }
1176− else
1177− w3c_slidy.stop_propagation(event);
1178−
1179−// else if (this.target == null)
1180−// location.href = this.href;
1181−
1182− this.blur();
1183− self.disable_slide_click = true;
1184− };
1185−
1186− var anchors = document.body.getElementsByTagName("a");
1187−
1188− for (var i = 0; i < anchors.length; ++i)
1189− {
1190− if (window.addEventListener)
1191− anchors[i].addEventListener("click", handler, false);
1192− else
1193− anchors[i].attachEvent("onclick", handler);
1194− }
1195− },
1196−
1197− // ### CHECK ME ### see which functions are invoked via setTimeout
1198− // either directly or indirectly for use of w3c_slidy vs this
1199− show_slide_number: function () {
1200− var timer = w3c_slidy.get_timer();
1201− w3c_slidy.slide_number_element.innerHTML = timer + w3c_slidy.localize("slide") + " " +
1202− (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
1203− },
1204−
1205− // every 200mS check if the location has been changed as a
1206− // result of the user activating the Back button/menu item
1207− // doesn't work for Opera < 9.5
1208− check_location: function () {
1209− var hash = location.hash;
1210−
1211− if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
1212− w3c_slidy.goto_slide(0);
1213− else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
1214− {
1215− var num = parseInt(location.hash.substr(2));
1216−
1217− if (!isNaN(num))
1218− w3c_slidy.goto_slide(num-1);
1219− }
1220−
1221− if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
1222− {
1223− w3c_slidy.show_slide_number();
1224−
1225− if (w3c_slidy.time_left > 0)
1226− w3c_slidy.time_left -= 200;
1227− }
1228− },
1229−
1230− get_timer: function () {
1231− var timer = "";
1232− if (w3c_slidy.time_left)
1233− {
1234− var mins, secs;
1235− secs = Math.floor(w3c_slidy.time_left/1000);
1236− mins = Math.floor(secs / 60);
1237− secs = secs % 60;
1238− timer = (mins ? mins+"m" : "") + secs + "s ";
1239− }
1240−
1241− return timer;
1242− },
1243−
1244− // this doesn't push location onto history stack for IE
1245− // for which a hidden iframe hack is needed: load page into
1246− // the iframe with script that set's parent's location.hash
1247− // but that won't work for standalone use unless we can
1248− // create the page dynamically via a javascript: URL
1249− // ### use history.pushState if available
1250− set_location: function () {
1251− var uri = w3c_slidy.page_address(location.href);
1252− var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
1253−
1254− if (w3c_slidy.slide_number >= 0)
1255− uri = uri + hash;
1256−
1257− if (typeof(history.pushState) != "undefined")
1258− {
1259− document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
1260− history.pushState(0, document.title, hash);
1261− w3c_slidy.show_slide_number();
1262− return;
1263− }
1264−
1265− if (w3c_slidy.ie && (w3c_slidy.ie6 || w3c_slidy.ie7))
1266− w3c_slidy.push_hash(hash);
1267−
1268− if (uri != location.href) // && !khtml
1269− location.href = uri;
1270−
1271− if (this.khtml)
1272− hash = "(" + (w3c_slidy.slide_number+1) + ")";
1273−
1274− if (!this.ie && location.hash != hash && location.hash != "")
1275− location.hash = hash;
1276−
1277− document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
1278− w3c_slidy.show_slide_number();
1279− },
1280−
1281− page_address: function (uri) {
1282− var i = uri.indexOf("#");
1283−
1284− if (i < 0)
1285− i = uri.indexOf("%23");
1286−
1287− // check if anchor is entire page
1288−
1289− if (i < 0)
1290− return uri; // yes
1291−
1292− return uri.substr(0, i);
1293− },
1294−
1295− // only used for IE6 and IE7
1296− on_frame_loaded: function (hash) {
1297− location.hash = hash;
1298− var uri = w3c_slidy.page_address(location.href);
1299− location.href = uri + hash;
1300− },
1301−
1302− // history hack with thanks to Bertrand Le Roy
1303− push_hash: function (hash) {
1304− if (hash == "") hash = "#(1)";
1305− window.location.hash = hash;
1306−
1307− var doc = document.getElementById("historyFrame").contentWindow.document;
1308− doc.open("javascript:'<html></html>'");
1309− doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
1310− (hash) + "');</script></head><body>hello mum</body></html>");
1311− doc.close();
1312− },
1313−
1314− // find current slide based upon location
1315− // first find target anchor and then look
1316− // for associated div element enclosing it
1317− // finally map that to slide number
1318− find_slide_number: function (uri) {
1319− // first get anchor from page location
1320−
1321− var i = uri.indexOf("#");
1322−
1323− // check if anchor is entire page
1324− if (i < 0)
1325− return 0; // yes
1326−
1327− var anchor = unescape(uri.substr(i+1));
1328−
1329− // now use anchor as XML ID to find target
1330− var target = document.getElementById(anchor);
1331−
1332− if (!target)
1333− {
1334− // does anchor look like "(2)" for slide 2 ??
1335− // where first slide is (1)
1336− var re = /\((\d)+\)/;
1337−
1338− if (anchor.match(re))
1339− {
1340− var num = parseInt(anchor.substring(1, anchor.length-1));
1341−
1342− if (num > this.slides.length)
1343− num = 1;
1344−
1345− if (--num < 0)
1346− num = 0;
1347−
1348− return num;
1349− }
1350−
1351− // accept [2] for backwards compatibility
1352− re = /\[(\d)+\]/;
1353−
1354− if (anchor.match(re))
1355− {
1356− var num = parseInt(anchor.substring(1, anchor.length-1));
1357−
1358− if (num > this.slides.length)
1359− num = 1;
1360−
1361− if (--num < 0)
1362− num = 0;
1363−
1364− return num;
1365− }
1366−
1367− // oh dear unknown anchor
1368− return 0;
1369− }
1370−
1371− // search for enclosing slide
1372−
1373− while (true)
1374− {
1375− // browser coerces html elements to uppercase!
1376− if (target.nodeName.toLowerCase() == "div" &&
1377− this.has_class(target, "slide"))
1378− {
1379− // found the slide element
1380− break;
1381− }
1382−
1383− // otherwise try parent element if any
1384−
1385− target = target.parentNode;
1386−
1387− if (!target)
1388− {
1389− return 0; // no luck!
1390− }
1391− };
1392−
1393− for (i = 0; i < slides.length; ++i)
1394− {
1395− if (slides[i] == target)
1396− return i; // success
1397− }
1398−
1399− // oh dear still no luck
1400− return 0;
1401− },
1402−
1403− previous_slide: function (incremental) {
1404− if (!w3c_slidy.view_all)
1405− {
1406− var slide;
1407−
1408− if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
1409− {
1410− w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
1411− w3c_slidy.set_eos_status(false);
1412− }
1413− else if (w3c_slidy.slide_number > 0)
1414− {
1415− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1416− w3c_slidy.hide_slide(slide);
1417−
1418− w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
1419− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1420− w3c_slidy.set_visibility_all_incremental("visible");
1421− w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
1422− w3c_slidy.set_eos_status(true);
1423− w3c_slidy.show_slide(slide);
1424− }
1425−
1426− w3c_slidy.set_location();
1427−
1428− if (!w3c_slidy.ns_pos)
1429− w3c_slidy.refresh_toolbar(200);
1430− }
1431− },
1432−
1433− next_slide: function (incremental) {
1434− if (!w3c_slidy.view_all)
1435− {
1436− var slide, last = w3c_slidy.last_shown;
1437−
1438− if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
1439− w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
1440−
1441− if ((!incremental || w3c_slidy.last_shown == null) &&
1442− w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
1443− {
1444− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1445− w3c_slidy.hide_slide(slide);
1446−
1447− w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
1448− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1449− w3c_slidy.last_shown = null;
1450− w3c_slidy.set_visibility_all_incremental("hidden");
1451− w3c_slidy.show_slide(slide);
1452− }
1453− else if (!w3c_slidy.last_shown)
1454− {
1455− if (last && incremental)
1456− w3c_slidy.last_shown = last;
1457− }
1458−
1459− w3c_slidy.set_location();
1460−
1461− w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
1462−
1463− if (!w3c_slidy.ns_pos)
1464− w3c_slidy.refresh_toolbar(200);
1465− }
1466− },
1467−
1468− // to first slide with nothing revealed
1469− // i.e. state at start of presentation
1470− first_slide: function () {
1471− if (!w3c_slidy.view_all)
1472− {
1473− var slide;
1474−
1475− if (w3c_slidy.slide_number != 0)
1476− {
1477− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1478− w3c_slidy.hide_slide(slide);
1479−
1480− w3c_slidy.slide_number = 0;
1481− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1482− w3c_slidy.last_shown = null;
1483− w3c_slidy.set_visibility_all_incremental("hidden");
1484− w3c_slidy.show_slide(slide);
1485− }
1486−
1487− w3c_slidy.set_eos_status(
1488− !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
1489− w3c_slidy.set_location();
1490− }
1491− },
1492−
1493− // goto last slide with everything revealed
1494− // i.e. state at end of presentation
1495− last_slide: function () {
1496− if (!w3c_slidy.view_all)
1497− {
1498− var slide;
1499−
1500− w3c_slidy.last_shown = null; //revealNextItem(lastShown);
1501−
1502− if (w3c_slidy.last_shown == null &&
1503− w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
1504− {
1505− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1506− w3c_slidy.hide_slide(slide);
1507− w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
1508− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1509− w3c_slidy.set_visibility_all_incremental("visible");
1510− w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
1511−
1512− w3c_slidy.show_slide(slide);
1513− }
1514− else
1515− {
1516− w3c_slidy.set_visibility_all_incremental("visible");
1517− w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
1518− }
1519−
1520− w3c_slidy.set_eos_status(true);
1521− w3c_slidy.set_location();
1522− }
1523− },
1524−
1525−
1526− // ### check this and consider add/remove class
1527− set_eos_status: function (state) {
1528− if (this.eos)
1529− this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
1530− },
1531−
1532− // first slide is 0
1533− goto_slide: function (num) {
1534− //alert("going to slide " + (num+1));
1535− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
1536− w3c_slidy.hide_slide(slide);
1537− w3c_slidy.slide_number = num;
1538− slide = w3c_slidy.slides[w3c_slidy.slide_number];
1539− w3c_slidy.last_shown = null;
1540− w3c_slidy.set_visibility_all_incremental("hidden");
1541− w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
1542− document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
1543− w3c_slidy.show_slide(slide);
1544− w3c_slidy.show_slide_number();
1545− },
1546−
1547−
1548− show_slide: function (slide) {
1549− this.sync_background(slide);
1550− this.remove_class(slide, "hidden");
1551−
1552− // work around IE9 object rendering bug
1553− setTimeout("window.scrollTo(0,0);", 1);
1554− },
1555−
1556− hide_slide: function (slide) {
1557− this.add_class(slide, "hidden");
1558− },
1559−
1560− // show just the backgrounds pertinent to this slide
1561− // when slide background-color is transparent
1562− // this should now work with rgba color values
1563− sync_background: function (slide) {
1564− var background;
1565− var bgColor;
1566−
1567− if (slide.currentStyle)
1568− bgColor = slide.currentStyle["backgroundColor"];
1569− else if (document.defaultView)
1570− {
1571− var styles = document.defaultView.getComputedStyle(slide,null);
1572−
1573− if (styles)
1574− bgColor = styles.getPropertyValue("background-color");
1575− else // broken implementation probably due Safari or Konqueror
1576− {
1577− //alert("defective implementation of getComputedStyle()");
1578− bgColor = "transparent";
1579− }
1580− }
1581− else
1582− bgColor == "transparent";
1583−
1584− if (bgColor == "transparent" ||
1585− bgColor.indexOf("rgba") >= 0 ||
1586− bgColor.indexOf("opacity") >= 0)
1587− {
1588− var slideClass = this.get_class_list(slide);
1589−
1590− for (var i = 0; i < this.backgrounds.length; i++)
1591− {
1592− background = this.backgrounds[i];
1593−
1594− var bgClass = this.get_class_list(background);
1595−
1596− if (this.matching_background(slideClass, bgClass))
1597− this.remove_class(background, "hidden");
1598− else
1599− this.add_class(background, "hidden");
1600− }
1601− }
1602− else // forcibly hide all backgrounds
1603− this.hide_backgrounds();
1604− },
1605−
1606− hide_backgrounds: function () {
1607− for (var i = 0; i < this.backgrounds.length; i++)
1608− {
1609− background = this.backgrounds[i];
1610− this.add_class(background, "hidden");
1611− }
1612− },
1613−
1614− // compare classes for slide and background
1615− matching_background: function (slideClass, bgClass) {
1616− var i, count, pattern, result;
1617−
1618− // define pattern as regular expression
1619− pattern = /\w+/g;
1620−
1621− // check background class names
1622− result = bgClass.match(pattern);
1623−
1624− for (i = count = 0; i < result.length; i++)
1625− {
1626− if (result[i] == "hidden")
1627− continue;
1628−
1629− if (result[i] == "background")
1630− continue;
1631−
1632− ++count;
1633− }
1634−
1635− if (count == 0) // default match
1636− return true;
1637−
1638− // check for matches and place result in array
1639− result = slideClass.match(pattern);
1640−
1641− // now check if desired name is present for background
1642− for (i = count = 0; i < result.length; i++)
1643− {
1644− if (result[i] == "hidden")
1645− continue;
1646−
1647− if (this.has_token(bgClass, result[i]))
1648− return true;
1649− }
1650−
1651− return false;
1652− },
1653−
1654− resized: function () {
1655− var width = 0;
1656−
1657− if ( typeof( window.innerWidth ) == 'number' )
1658− width = window.innerWidth; // Non IE browser
1659− else if (document.documentElement && document.documentElement.clientWidth)
1660− width = document.documentElement.clientWidth; // IE6
1661− else if (document.body && document.body.clientWidth)
1662− width = document.body.clientWidth; // IE4
1663−
1664− var height = 0;
1665−
1666− if ( typeof( window.innerHeight ) == 'number' )
1667− height = window.innerHeight; // Non IE browser
1668− else if (document.documentElement && document.documentElement.clientHeight)
1669− height = document.documentElement.clientHeight; // IE6
1670− else if (document.body && document.body.clientHeight)
1671− height = document.body.clientHeight; // IE4
1672−
1673− if (height && (width/height > 1.05*1024/768))
1674− {
1675− width = height * 1024.0/768;
1676− }
1677−
1678− // IE fires onresize even when only font size is changed!
1679− // so we do a check to avoid blocking < and > actions
1680− if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
1681− {
1682− if (width >= 1100)
1683− w3c_slidy.size_index = 5; // 4
1684− else if (width >= 1000)
1685− w3c_slidy.size_index = 4; // 3
1686− else if (width >= 800)
1687− w3c_slidy.size_index = 3; // 2
1688− else if (width >= 600)
1689− w3c_slidy.size_index = 2; // 1
1690− else if (width)
1691− w3c_slidy.size_index = 0;
1692−
1693− // add in font size adjustment from meta element e.g.
1694− // <meta name="font-size-adjustment" content="-2" />
1695− // useful when slides have too much content ;-)
1696−
1697− if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
1698− w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
1699− w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
1700−
1701− // enables cross browser use of relative width/height
1702− // on object elements for use with SVG and Flash media
1703− w3c_slidy.adjust_object_dimensions(width, height);
1704−
1705− if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
1706− {
1707− document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
1708− }
1709−
1710− w3c_slidy.last_width = width;
1711− w3c_slidy.last_height = height;
1712−
1713− // force reflow to work around Mozilla bug
1714− if (w3c_slidy.ns_pos)
1715− {
1716− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
1717− w3c_slidy.hide_slide(slide);
1718− w3c_slidy.show_slide(slide);
1719− }
1720−
1721− // force correct positioning of toolbar
1722− w3c_slidy.refresh_toolbar(200);
1723− }
1724− },
1725−
1726− scrolled: function () {
1727− if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
1728− {
1729− w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
1730− // hide toolbar
1731− w3c_slidy.toolbar.style.display = "none";
1732−
1733− // make it reappear later
1734− if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
1735− {
1736− setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
1737− w3c_slidy.scrollhack = 1;
1738− }
1739− }
1740− },
1741−
1742− hide_toolbar: function () {
1743− w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
1744− window.focus();
1745− },
1746−
1747− // used to ensure IE refreshes toolbar in correct position
1748− refresh_toolbar: function (interval) {
1749− if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
1750− {
1751− w3c_slidy.hide_toolbar();
1752− setTimeout(function () {w3c_slidy.show_toolbar();}, interval);
1753− }
1754− },
1755−
1756− // restores toolbar after short delay
1757− show_toolbar: function () {
1758− if (w3c_slidy.want_toolbar)
1759− {
1760− w3c_slidy.toolbar.style.display = "block";
1761−
1762− if (!w3c_slidy.ns_pos)
1763− {
1764− // adjust position to allow for scrolling
1765− var xoffset = w3c_slidy.scroll_x_offset();
1766− w3c_slidy.toolbar.style.left = xoffset;
1767− w3c_slidy.toolbar.style.right = xoffset;
1768−
1769− // determine vertical scroll offset
1770− //var yoffset = scrollYOffset();
1771−
1772− // bottom is doc height - window height - scroll offset
1773− //var bottom = documentHeight() - lastHeight - yoffset
1774−
1775− //if (yoffset > 0 || documentHeight() > lastHeight)
1776− // bottom += 16; // allow for height of scrollbar
1777−
1778− w3c_slidy.toolbar.style.bottom = 0; //bottom;
1779− }
1780−
1781− w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
1782− }
1783−
1784− w3c_slidy.scrollhack = 0;
1785−
1786−
1787− // set the keyboard focus to the help link on the
1788− // toolbar to ensure that document has the focus
1789− // IE doesn't always work with window.focus()
1790− // and this hack has benefit of Enter for help
1791−
1792− try
1793− {
1794− if (!w3c_slidy.opera)
1795− w3c_slidy.help_anchor.focus();
1796− }
1797− catch (e)
1798− {
1799− }
1800− },
1801−
1802−// invoked via F key
1803− toggle_toolbar: function () {
1804− if (!w3c_slidy.view_all)
1805− {
1806− if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
1807− {
1808− w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
1809− w3c_slidy.want_toolbar = 1;
1810− }
1811− else
1812− {
1813− w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
1814− w3c_slidy.want_toolbar = 0;
1815− }
1816− }
1817− },
1818−
1819− scroll_x_offset: function () {
1820− if (window.pageXOffset)
1821− return self.pageXOffset;
1822−
1823− if (document.documentElement &&
1824− document.documentElement.scrollLeft)
1825− return document.documentElement.scrollLeft;
1826−
1827− if (document.body)
1828− return document.body.scrollLeft;
1829−
1830− return 0;
1831− },
1832−
1833− scroll_y_offset: function () {
1834− if (window.pageYOffset)
1835− return self.pageYOffset;
1836−
1837− if (document.documentElement &&
1838− document.documentElement.scrollTop)
1839− return document.documentElement.scrollTop;
1840−
1841− if (document.body)
1842− return document.body.scrollTop;
1843−
1844− return 0;
1845− },
1846−
1847− // looking for a way to determine height of slide content
1848− // the slide itself is set to the height of the window
1849− optimize_font_size: function () {
1850− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
1851−
1852− //var dh = documentHeight(); //getDocHeight(document);
1853− var dh = slide.scrollHeight;
1854− var wh = getWindowHeight();
1855− var u = 100 * dh / wh;
1856−
1857− alert("window utilization = " + u + "% (doc "
1858− + dh + " win " + wh + ")");
1859− },
1860−
1861− // from document object
1862− get_doc_height: function (doc) {
1863− if (!doc)
1864− doc = document;
1865−
1866− if (doc && doc.body && doc.body.offsetHeight)
1867− return doc.body.offsetHeight; // ns/gecko syntax
1868−
1869− if (doc && doc.body && doc.body.scrollHeight)
1870− return doc.body.scrollHeight;
1871−
1872− alert("couldn't determine document height");
1873− },
1874−
1875− get_window_height: function () {
1876− if ( typeof( window.innerHeight ) == 'number' )
1877− return window.innerHeight; // Non IE browser
1878−
1879− if (document.documentElement && document.documentElement.clientHeight)
1880− return document.documentElement.clientHeight; // IE6
1881−
1882− if (document.body && document.body.clientHeight)
1883− return document.body.clientHeight; // IE4
1884− },
1885−
1886− document_height: function () {
1887− var sh, oh;
1888−
1889− sh = document.body.scrollHeight;
1890− oh = document.body.offsetHeight;
1891−
1892− if (sh && oh)
1893− {
1894− return (sh > oh ? sh : oh);
1895− }
1896−
1897− // no idea!
1898− return 0;
1899− },
1900−
1901− smaller: function () {
1902− if (w3c_slidy.size_index > 0)
1903− {
1904− --w3c_slidy.size_index;
1905− }
1906−
1907− w3c_slidy.toolbar.style.display = "none";
1908− document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
1909− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
1910− w3c_slidy.hide_slide(slide);
1911− w3c_slidy.show_slide(slide);
1912− setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
1913− },
1914−
1915− bigger: function () {
1916− if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
1917− {
1918− ++w3c_slidy.size_index;
1919− }
1920−
1921− w3c_slidy.toolbar.style.display = "none";
1922− document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
1923− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
1924− w3c_slidy.hide_slide(slide);
1925− w3c_slidy.show_slide(slide);
1926− setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
1927− },
1928−
1929− // enables cross browser use of relative width/height
1930− // on object elements for use with SVG and Flash media
1931− // with thanks to Ivan Herman for the suggestion
1932− adjust_object_dimensions: function (width, height) {
1933− for( var i = 0; i < w3c_slidy.objects.length; i++ )
1934− {
1935− var obj = this.objects[i];
1936− var mimeType = obj.getAttribute("type");
1937−
1938− if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
1939− {
1940− if ( !obj.initialWidth )
1941− obj.initialWidth = obj.getAttribute("width");
1942−
1943− if ( !obj.initialHeight )
1944− obj.initialHeight = obj.getAttribute("height");
1945−
1946− if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
1947− {
1948− var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
1949− var newW = width * (w/100.0);
1950− obj.setAttribute("width",newW);
1951− }
1952−
1953− if ( obj.initialHeight &&
1954− obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
1955− {
1956− var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
1957− var newH = height * (h/100.0);
1958− obj.setAttribute("height", newH);
1959− }
1960− }
1961− }
1962− },
1963−
1964− // needed for Opera to inhibit default behavior
1965− // since Opera delivers keyPress even if keyDown
1966− // was cancelled
1967− key_press: function (event) {
1968− if (!event)
1969− event = window.event;
1970−
1971− if (!w3c_slidy.key_wanted)
1972− return w3c_slidy.cancel(event);
1973−
1974− return true;
1975− },
1976−
1977− // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
1978− key_down: function (event) {
1979− var key, target, tag;
1980−
1981− w3c_slidy.key_wanted = true;
1982−
1983− if (!event)
1984− event = window.event;
1985−
1986− // kludge around NS/IE differences
1987− if (window.event)
1988− {
1989− key = window.event.keyCode;
1990− target = window.event.srcElement;
1991− }
1992− else if (event.which)
1993− {
1994− key = event.which;
1995− target = event.target;
1996− }
1997− else
1998− return true; // Yikes! unknown browser
1999−
2000− // ignore event if key value is zero
2001− // as for alt on Opera and Konqueror
2002− if (!key)
2003− return true;
2004−
2005− // avoid interfering with keystroke
2006− // behavior for non-slidy chrome elements
2007− if (!w3c_slidy.slidy_chrome(target) &&
2008− w3c_slidy.special_element(target))
2009− return true;
2010−
2011− // check for concurrent control/command/alt key
2012− // but are these only present on mouse events?
2013−
2014− if (event.ctrlKey || event.altKey || event.metaKey)
2015− return true;
2016−
2017− // dismiss table of contents if visible
2018− if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
2019− {
2020− w3c_slidy.hide_table_of_contents(true);
2021−
2022− if (key == 27 || key == 84 || key == 67)
2023− return w3c_slidy.cancel(event);
2024− }
2025−
2026− if (key == 34) // Page Down
2027− {
2028− if (w3c_slidy.view_all)
2029− return true;
2030−
2031− w3c_slidy.next_slide(false);
2032− return w3c_slidy.cancel(event);
2033− }
2034− else if (key == 33) // Page Up
2035− {
2036− if (w3c_slidy.view_all)
2037− return true;
2038−
2039− w3c_slidy.previous_slide(false);
2040− return w3c_slidy.cancel(event);
2041− }
2042− else if (key == 32) // space bar
2043− {
2044− w3c_slidy.next_slide(true);
2045− return w3c_slidy.cancel(event);
2046− }
2047− else if (key == 37) // Left arrow
2048− {
2049− w3c_slidy.previous_slide(!event.shiftKey);
2050− return w3c_slidy.cancel(event);
2051− }
2052− else if (key == 36) // Home
2053− {
2054− w3c_slidy.first_slide();
2055− return w3c_slidy.cancel(event);
2056− }
2057− else if (key == 35) // End
2058− {
2059− w3c_slidy.last_slide();
2060− return w3c_slidy.cancel(event);
2061− }
2062− else if (key == 39) // Right arrow
2063− {
2064− w3c_slidy.next_slide(!event.shiftKey);
2065− return w3c_slidy.cancel(event);
2066− }
2067− else if (key == 13) // Enter
2068− {
2069− if (w3c_slidy.outline)
2070− {
2071− if (w3c_slidy.outline.visible)
2072− w3c_slidy.fold(w3c_slidy.outline);
2073− else
2074− w3c_slidy.unfold(w3c_slidy.outline);
2075−
2076− return w3c_slidy.cancel(event);
2077− }
2078− }
2079− else if (key == 188) // < for smaller fonts
2080− {
2081− w3c_slidy.smaller();
2082− return w3c_slidy.cancel(event);
2083− }
2084− else if (key == 190) // > for larger fonts
2085− {
2086− w3c_slidy.bigger();
2087− return w3c_slidy.cancel(event);
2088− }
2089− else if (key == 189 || key == 109) // - for smaller fonts
2090− {
2091− w3c_slidy.smaller();
2092− return w3c_slidy.cancel(event);
2093− }
2094− else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
2095− {
2096− w3c_slidy.bigger();
2097− return w3c_slidy.cancel(event);
2098− }
2099− else if (key == 83) // S for smaller fonts
2100− {
2101− w3c_slidy.smaller();
2102− return w3c_slidy.cancel(event);
2103− }
2104− else if (key == 66) // B for larger fonts
2105− {
2106− w3c_slidy.bigger();
2107− return w3c_slidy.cancel(event);
2108− }
2109− else if (key == 90) // Z for last slide
2110− {
2111− w3c_slidy.last_slide();
2112− return w3c_slidy.cancel(event);
2113− }
2114− else if (key == 70) // F for toggle toolbar
2115− {
2116− w3c_slidy.toggle_toolbar();
2117− return w3c_slidy.cancel(event);
2118− }
2119− else if (key == 65) // A for toggle view single/all slides
2120− {
2121− w3c_slidy.toggle_view();
2122− return w3c_slidy.cancel(event);
2123− }
2124− else if (key == 75) // toggle action of left click for next page
2125− {
2126− w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
2127− var alert_msg = (w3c_slidy.mouse_click_enabled ?
2128− "enabled" : "disabled") + " mouse click advance";
2129−
2130− alert(w3c_slidy.localize(alert_msg));
2131− return w3c_slidy.cancel(event);
2132− }
2133− else if (key == 84 || key == 67) // T or C for table of contents
2134− {
2135− if (w3c_slidy.toc)
2136− w3c_slidy.toggle_table_of_contents();
2137−
2138− return w3c_slidy.cancel(event);
2139− }
2140− else if (key == 72) // H for help
2141− {
2142− window.location = w3c_slidy.help_page;
2143− return w3c_slidy.cancel(event);
2144− }
2145− //else alert("key code is "+ key);
2146−
2147− return true;
2148− },
2149−
2150− // safe for both text/html and application/xhtml+xml
2151− create_element: function (name) {
2152− if (this.xhtml && (typeof document.createElementNS != 'undefined'))
2153− return document.createElementNS("http://www.w3.org/1999/xhtml", name)
2154−
2155− return document.createElement(name);
2156− },
2157−
2158− get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
2159− if (elem.currentStyle)
2160− {
2161− return elem.currentStyle[IEStyleProp];
2162− }
2163− else if (window.getComputedStyle)
2164− {
2165− var compStyle = window.getComputedStyle(elem, "");
2166− return compStyle.getPropertyValue(CSSStyleProp);
2167− }
2168− return "";
2169− },
2170−
2171− // the string str is a whitespace separated list of tokens
2172− // test if str contains a particular token, e.g. "slide"
2173− has_token: function (str, token) {
2174− if (str)
2175− {
2176− // define pattern as regular expression
2177− var pattern = /\w+/g;
2178−
2179− // check for matches
2180− // place result in array
2181− var result = str.match(pattern);
2182−
2183− // now check if desired token is present
2184− for (var i = 0; i < result.length; i++)
2185− {
2186− if (result[i] == token)
2187− return true;
2188− }
2189− }
2190−
2191− return false;
2192− },
2193−
2194− get_class_list: function (element) {
2195− if (typeof element.className != 'undefined')
2196− return element.className;
2197−
2198− return element.getAttribute("class");
2199− },
2200−
2201− has_class: function (element, name) {
2202− if (element.nodeType != 1)
2203− return false;
2204−
2205− var regexp = new RegExp("(^| )" + name + "\W*");
2206−
2207− if (typeof element.className != 'undefined')
2208− return regexp.test(element.className);
2209−
2210− return regexp.test(element.getAttribute("class"));
2211− },
2212−
2213− remove_class: function (element, name) {
2214− var regexp = new RegExp("(^| )" + name + "\W*");
2215− var clsval = "";
2216−
2217− if (typeof element.className != 'undefined')
2218− {
2219− clsval = element.className;
2220−
2221− if (clsval)
2222− {
2223− clsval = clsval.replace(regexp, "");
2224− element.className = clsval;
2225− }
2226− }
2227− else
2228− {
2229− clsval = element.getAttribute("class");
2230−
2231− if (clsval)
2232− {
2233− clsval = clsval.replace(regexp, "");
2234− element.setAttribute("class", clsval);
2235− }
2236− }
2237− },
2238−
2239− add_class: function (element, name) {
2240− if (!this.has_class(element, name))
2241− {
2242− if (typeof element.className != 'undefined')
2243− element.className += " " + name;
2244− else
2245− {
2246− var clsval = element.getAttribute("class");
2247− clsval = clsval ? clsval + " " + name : name;
2248− element.setAttribute("class", clsval);
2249− }
2250− }
2251− },
2252−
2253− // HTML elements that can be used with class="incremental"
2254− // note that you can also put the class on containers like
2255− // up, ol, dl, and div to make their contents appear
2256− // incrementally. Upper case is used since this is what
2257− // browsers report for HTML node names (text/html).
2258− incremental_elements: null,
2259− okay_for_incremental: function (name) {
2260− if (!this.incremental_elements)
2261− {
2262− var inclist = new Array();
2263− inclist["p"] = true;
2264− inclist["pre"] = true;
2265− inclist["li"] = true;
2266− inclist["blockquote"] = true;
2267− inclist["dt"] = true;
2268− inclist["dd"] = true;
2269− inclist["h2"] = true;
2270− inclist["h3"] = true;
2271− inclist["h4"] = true;
2272− inclist["h5"] = true;
2273− inclist["h6"] = true;
2274− inclist["span"] = true;
2275− inclist["address"] = true;
2276− inclist["table"] = true;
2277− inclist["tr"] = true;
2278− inclist["th"] = true;
2279− inclist["td"] = true;
2280− inclist["img"] = true;
2281− inclist["object"] = true;
2282− this.incremental_elements = inclist;
2283− }
2284− return this.incremental_elements[name.toLowerCase()];
2285− },
2286−
2287− next_incremental_item: function (node) {
2288− var br = this.is_xhtml ? "br" : "BR";
2289− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
2290−
2291− for (;;)
2292− {
2293− node = w3c_slidy.next_node(slide, node);
2294−
2295− if (node == null || node.parentNode == null)
2296− break;
2297−
2298− if (node.nodeType == 1) // ELEMENT
2299− {
2300− if (node.nodeName == br)
2301− continue;
2302−
2303− if (w3c_slidy.has_class(node, "incremental")
2304− && w3c_slidy.okay_for_incremental(node.nodeName))
2305− return node;
2306−
2307− if (w3c_slidy.has_class(node.parentNode, "incremental")
2308− && !w3c_slidy.has_class(node, "non-incremental"))
2309− return node;
2310− }
2311− }
2312−
2313− return node;
2314− },
2315−
2316− previous_incremental_item: function (node) {
2317− var br = this.is_xhtml ? "br" : "BR";
2318− var slide = w3c_slidy.slides[w3c_slidy.slide_number];
2319−
2320− for (;;)
2321− {
2322− node = w3c_slidy.previous_node(slide, node);
2323−
2324− if (node == null || node.parentNode == null)
2325− break;
2326−
2327− if (node.nodeType == 1)
2328− {
2329− if (node.nodeName == br)
2330− continue;
2331−
2332− if (w3c_slidy.has_class(node, "incremental")
2333− && w3c_slidy.okay_for_incremental(node.nodeName))
2334− return node;
2335−
2336− if (w3c_slidy.has_class(node.parentNode, "incremental")
2337− && !w3c_slidy.has_class(node, "non-incremental"))
2338− return node;
2339− }
2340− }
2341−
2342− return node;
2343− },
2344−
2345− // set visibility for all elements on current slide with
2346− // a parent element with attribute class="incremental"
2347− set_visibility_all_incremental: function (value) {
2348− var node = this.next_incremental_item(null);
2349−
2350− if (value == "hidden")
2351− {
2352− while (node)
2353− {
2354− w3c_slidy.add_class(node, "invisible");
2355− node = w3c_slidy.next_incremental_item(node);
2356− }
2357− }
2358− else // value == "visible"
2359− {
2360− while (node)
2361− {
2362− w3c_slidy.remove_class(node, "invisible");
2363− node = w3c_slidy.next_incremental_item(node);
2364− }
2365− }
2366− },
2367−
2368− // reveal the next hidden item on the slide
2369− // node is null or the node that was last revealed
2370− reveal_next_item: function (node) {
2371− node = w3c_slidy.next_incremental_item(node);
2372−
2373− if (node && node.nodeType == 1) // an element
2374− w3c_slidy.remove_class(node, "invisible");
2375−
2376− return node;
2377− },
2378−
2379− // exact inverse of revealNextItem(node)
2380− hide_previous_item: function (node) {
2381− if (node && node.nodeType == 1) // an element
2382− w3c_slidy.add_class(node, "invisible");
2383−
2384− return this.previous_incremental_item(node);
2385− },
2386−
2387− // left to right traversal of root's content
2388− next_node: function (root, node) {
2389− if (node == null)
2390− return root.firstChild;
2391−
2392− if (node.firstChild)
2393− return node.firstChild;
2394−
2395− if (node.nextSibling)
2396− return node.nextSibling;
2397−
2398− for (;;)
2399− {
2400− node = node.parentNode;
2401−
2402− if (!node || node == root)
2403− break;
2404−
2405− if (node && node.nextSibling)
2406− return node.nextSibling;
2407− }
2408−
2409− return null;
2410− },
2411−
2412− // right to left traversal of root's content
2413− previous_node: function (root, node) {
2414− if (node == null)
2415− {
2416− node = root.lastChild;
2417−
2418− if (node)
2419− {
2420− while (node.lastChild)
2421− node = node.lastChild;
2422− }
2423−
2424− return node;
2425− }
2426−
2427− if (node.previousSibling)
2428− {
2429− node = node.previousSibling;
2430−
2431− while (node.lastChild)
2432− node = node.lastChild;
2433−
2434− return node;
2435− }
2436−
2437− if (node.parentNode != root)
2438− return node.parentNode;
2439−
2440− return null;
2441− },
2442−
2443− previous_sibling_element: function (el) {
2444− el = el.previousSibling;
2445−
2446− while (el && el.nodeType != 1)
2447− el = el.previousSibling;
2448−
2449− return el;
2450− },
2451−
2452− next_sibling_element: function (el) {
2453− el = el.nextSibling;
2454−
2455− while (el && el.nodeType != 1)
2456− el = el.nextSibling;
2457−
2458− return el;
2459− },
2460−
2461− first_child_element: function (el) {
2462− var node;
2463−
2464− for (node = el.firstChild; node; node = node.nextSibling)
2465− {
2466− if (node.nodeType == 1)
2467− break;
2468− }
2469−
2470− return node;
2471− },
2472−
2473− first_tag: function (element, tag) {
2474− var node;
2475−
2476− if (!this.is_xhtml)
2477− tag = tag.toUpperCase();
2478−
2479− for (node = element.firstChild; node; node = node.nextSibling)
2480− {
2481− if (node.nodeType == 1 && node.nodeName == tag)
2482− break;
2483− }
2484−
2485− return node;
2486− },
2487−
2488− hide_selection: function () {
2489− if (window.getSelection) // Firefox, Chromium, Safari, Opera
2490− {
2491− var selection = window.getSelection();
2492−
2493− if (selection.rangeCount > 0)
2494− {
2495− var range = selection.getRangeAt(0);
2496− range.collapse (false);
2497− }
2498− }
2499− else // Internet Explorer
2500− {
2501− var textRange = document.selection.createRange ();
2502− textRange.collapse (false);
2503− }
2504− },
2505−
2506− get_selected_text: function () {
2507− try
2508− {
2509− if (window.getSelection)
2510− return window.getSelection().toString();
2511−
2512− if (document.getSelection)
2513− return document.getSelection().toString();
2514−
2515− if (document.selection)
2516− return document.selection.createRange().text;
2517− }
2518− catch (e)
2519− {
2520− }
2521−
2522− return "";
2523− },
2524−
2525− // make note of length of selected text
2526− // as this evaluates to zero in click event
2527− mouse_button_up: function (e) {
2528− w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
2529− },
2530−
2531− mouse_button_down: function (e) {
2532− w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
2533− w3c_slidy.mouse_x = e.clientX;
2534− w3c_slidy.mouse_y = e.clientY;
2535− },
2536−
2537− // right mouse button click is reserved for context menus
2538− // it is more reliable to detect rightclick than leftclick
2539− mouse_button_click: function (e) {
2540− if (!e)
2541− var e = window.event;
2542−
2543− if (Math.abs(e.clientX -w3c_slidy.mouse_x) +
2544− Math.abs(e.clientY -w3c_slidy.mouse_y) > 10)
2545− return true;
2546−
2547− if (w3c_slidy.selected_text_len > 0)
2548− return true;
2549−
2550− var rightclick = false;
2551− var leftclick = false;
2552− var middleclick = false;
2553− var target;
2554−
2555− if (!e)
2556− var e = window.event;
2557−
2558− if (e.target)
2559− target = e.target;
2560− else if (e.srcElement)
2561− target = e.srcElement;
2562−
2563− // work around Safari bug
2564− if (target.nodeType == 3)
2565− target = target.parentNode;
2566−
2567− if (e.which) // all browsers except IE
2568− {
2569− leftclick = (e.which == 1);
2570− middleclick = (e.which == 2);
2571− rightclick = (e.which == 3);
2572− }
2573− else if (e.button)
2574− {
2575− // Konqueror gives 1 for left, 4 for middle
2576− // IE6 gives 0 for left and not 1 as I expected
2577−
2578− if (e.button == 4)
2579− middleclick = true;
2580−
2581− // all browsers agree on 2 for right button
2582− rightclick = (e.button == 2);
2583− }
2584− else
2585− leftclick = true;
2586−
2587− if (w3c_slidy.selected_text_len > 0)
2588− {
2589− w3c_slidy.stop_propagation(e);
2590− e.cancel = true;
2591− e.returnValue = false;
2592− return false;
2593− }
2594−
2595− // dismiss table of contents
2596− w3c_slidy.hide_table_of_contents(false);
2597−
2598− // check if target is something that probably want's clicks
2599− // e.g. a, embed, object, input, textarea, select, option
2600− var tag = target.nodeName.toLowerCase();
2601−
2602− if (w3c_slidy.mouse_click_enabled && leftclick &&
2603− !w3c_slidy.special_element(target) &&
2604− !target.onclick)
2605− {
2606− w3c_slidy.next_slide(true);
2607− w3c_slidy.stop_propagation(e);
2608− e.cancel = true;
2609− e.returnValue = false;
2610− return false;
2611− }
2612−
2613− return true;
2614− },
2615−
2616− special_element: function (element) {
2617− if (this.has_class(element, "non-interactive"))
2618− return false;
2619−
2620− var tag = element.nodeName.toLowerCase();
2621−
2622− return element.onkeydown ||
2623− element.onclick ||
2624− tag == "a" ||
2625− tag == "embed" ||
2626− tag == "object" ||
2627− tag == "video" ||
2628− tag == "audio" ||
2629− tag == "svg" ||
2630− tag == "canvas" ||
2631− tag == "input" ||
2632− tag == "textarea" ||
2633− tag == "select" ||
2634− tag == "option";
2635− },
2636−
2637− slidy_chrome: function (el) {
2638− while (el)
2639− {
2640− if (el == w3c_slidy.toc ||
2641− el == w3c_slidy.toolbar ||
2642− w3c_slidy.has_class(el, "outline"))
2643− return true;
2644−
2645− el = el.parentNode;
2646− }
2647−
2648− return false;
2649− },
2650−
2651− get_key: function (e)
2652− {
2653− var key;
2654−
2655− // kludge around NS/IE differences
2656− if (typeof window.event != "undefined")
2657− key = window.event.keyCode;
2658− else if (e.which)
2659− key = e.which;
2660−
2661− return key;
2662− },
2663−
2664− get_target: function (e) {
2665− var target;
2666−
2667− if (!e)
2668− e = window.event;
2669−
2670− if (e.target)
2671− target = e.target;
2672− else if (e.srcElement)
2673− target = e.srcElement;
2674−
2675− if (target.nodeType != 1)
2676− target = target.parentNode;
2677−
2678− return target;
2679− },
2680−
2681− // does display property provide correct defaults?
2682− is_block: function (elem) {
2683− var tag = elem.nodeName.toLowerCase();
2684−
2685− return tag == "ol" || tag == "ul" || tag == "p" ||
2686− tag == "li" || tag == "table" || tag == "pre" ||
2687− tag == "h1" || tag == "h2" || tag == "h3" ||
2688− tag == "h4" || tag == "h5" || tag == "h6" ||
2689− tag == "blockquote" || tag == "address";
2690− },
2691−
2692− add_listener: function (element, event, handler) {
2693− if (window.addEventListener)
2694− element.addEventListener(event, handler, false);
2695− else
2696− element.attachEvent("on"+event, handler);
2697− },
2698−
2699− // used to prevent event propagation from field controls
2700− stop_propagation: function (event) {
2701− event = event ? event : window.event;
2702− event.cancelBubble = true; // for IE
2703−
2704− if (event.stopPropagation)
2705− event.stopPropagation();
2706−
2707− return true;
2708− },
2709−
2710− cancel: function (event) {
2711− if (event)
2712− {
2713− event.cancel = true;
2714− event.returnValue = false;
2715−
2716− if (event.preventDefault)
2717− event.preventDefault();
2718− }
2719−
2720− w3c_slidy.key_wanted = false;
2721− return false;
2722− },
2723−
2724−// for each language define an associative array
2725−// and also the help text which is longer
2726−
2727− strings_es: {
2728− "slide":"pág.",
2729− "help?":"Ayuda",
2730− "contents?":"Índice",
2731− "table of contents":"tabla de contenidos",
2732− "Table of Contents":"Tabla de Contenidos",
2733− "restart presentation":"Reiniciar presentación",
2734− "restart?":"Inicio"
2735− },
2736− help_es:
2737− "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
2738− "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
2739−
2740− strings_ca: {
2741− "slide":"pàg..",
2742− "help?":"Ajuda",
2743− "contents?":"Índex",
2744− "table of contents":"taula de continguts",
2745− "Table of Contents":"Taula de Continguts",
2746− "restart presentation":"Reiniciar presentació",
2747− "restart?":"Inici"
2748− },
2749− help_ca:
2750− "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
2751− "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
2752−
2753− strings_cs: {
2754− "slide":"snímek",
2755− "help?":"nápověda",
2756− "contents?":"obsah",
2757− "table of contents":"obsah prezentace",
2758− "Table of Contents":"Obsah prezentace",
2759− "restart presentation":"znovu spustit prezentaci",
2760− "restart?":"restart"
2761− },
2762− help_cs:
2763− "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
2764− "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
2765− "dá zvětšit a zmenšit pomocí kláves B a S.",
2766−
2767− strings_nl: {
2768− "slide":"pagina",
2769− "help?":"Help?",
2770− "contents?":"Inhoud?",
2771− "table of contents":"inhoudsopgave",
2772− "Table of Contents":"Inhoudsopgave",
2773− "restart presentation":"herstart presentatie",
2774− "restart?":"Herstart?"
2775− },
2776− help_nl:
2777− "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
2778− "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
2779−
2780− strings_de: {
2781− "slide":"Seite",
2782− "help?":"Hilfe",
2783− "contents?":"Übersicht",
2784− "table of contents":"Inhaltsverzeichnis",
2785− "Table of Contents":"Inhaltsverzeichnis",
2786− "restart presentation":"Präsentation neu starten",
2787− "restart?":"Neustart"
2788− },
2789− help_de:
2790− "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
2791− "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
2792−
2793− strings_pl: {
2794− "slide":"slajd",
2795− "help?":"pomoc?",
2796− "contents?":"spis treści?",
2797− "table of contents":"spis treści",
2798− "Table of Contents":"Spis Treści",
2799− "restart presentation":"Restartuj prezentację",
2800− "restart?":"restart?"
2801− },
2802− help_pl:
2803− "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
2804− "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
2805−
2806− strings_fr: {
2807− "slide":"page",
2808− "help?":"Aide",
2809− "contents?":"Index",
2810− "table of contents":"table des matières",
2811− "Table of Contents":"Table des matières",
2812− "restart presentation":"Recommencer l'exposé",
2813− "restart?":"Début"
2814− },
2815− help_fr:
2816− "Naviguez avec la souris, la barre d'espace, les flèches " +
2817− "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
2818− "les touches S et B pour modifier la taille de la police.",
2819−
2820− strings_hu: {
2821− "slide":"oldal",
2822− "help?":"segítség",
2823− "contents?":"tartalom",
2824− "table of contents":"tartalomjegyzék",
2825− "Table of Contents":"Tartalomjegyzék",
2826− "restart presentation":"bemutató újraindítása",
2827− "restart?":"újraindítás"
2828− },
2829− help_hu:
2830− "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
2831− "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
2832− "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
2833− "a szöveg méretét.",
2834−
2835− strings_it: {
2836− "slide":"pag.",
2837− "help?":"Aiuto",
2838− "contents?":"Indice",
2839− "table of contents":"indice",
2840− "Table of Contents":"Indice",
2841− "restart presentation":"Ricominciare la presentazione",
2842− "restart?":"Inizio"
2843− },
2844− help_it:
2845− "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
2846− "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
2847−
2848− strings_el: {
2849− "slide":"σελίδα",
2850− "help?":"βοήθεια;",
2851− "contents?":"περιεχόμενα;",
2852− "table of contents":"πίνακας περιεχομένων",
2853− "Table of Contents":"Πίνακας Περιεχομένων",
2854− "restart presentation":"επανεκκίνηση παρουσίασης",
2855− "restart?":"επανεκκίνηση;"
2856− },
2857− help_el:
2858− "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
2859− "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
2860− "το μέγεθος της γραμματοσειράς.",
2861−
2862− strings_ja: {
2863− "slide":"スライド",
2864− "help?":"ヘルプ",
2865− "contents?":"目次",
2866− "table of contents":"目次を表示",
2867− "Table of Contents":"目次",
2868− "restart presentation":"最初から再生",
2869− "restart?":"最初から"
2870− },
2871− help_ja:
2872− "マウス左クリック ・ スペース ・ 左右キー " +
2873− "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
2874−
2875− strings_zh: {
2876− "slide":"幻灯片",
2877− "help?":"帮助?",
2878− "contents?":"内容?",
2879− "table of contents":"目录",
2880− "Table of Contents":"目录",
2881− "restart presentation":"重新启动展示",
2882− "restart?":"重新启动?"
2883− },
2884− help_zh:
2885− "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
2886− "用 S, B 改变字体大小.",
2887−
2888− strings_ru: {
2889− "slide":"слайд",
2890− "help?":"помощь?",
2891− "contents?":"содержание?",
2892− "table of contents":"оглавление",
2893− "Table of Contents":"Оглавление",
2894− "restart presentation":"перезапустить презентацию",
2895− "restart?":"перезапуск?"
2896− },
2897− help_ru:
2898− "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
2899− "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
2900−
2901− strings_sv: {
2902− "slide":"sida",
2903− "help?":"hjälp",
2904− "contents?":"innehåll",
2905− "table of contents":"innehållsförteckning",
2906− "Table of Contents":"Innehållsförteckning",
2907− "restart presentation":"visa presentationen från början",
2908− "restart?":"börja om"
2909− },
2910− help_sv:
2911− "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
2912− "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
2913− "Använd tangenterna S och B för att ändra textens storlek.",
2914−
2915− strings: { },
2916−
2917− localize: function (src) {
2918− if (src == "")
2919− return src;
2920−
2921− // try full language code, e.g. en-US
2922− var s, lookup = w3c_slidy.strings[w3c_slidy.lang];
2923−
2924− if (lookup)
2925− {
2926− s = lookup[src];
2927−
2928− if (s)
2929− return s;
2930− }
2931−
2932− // strip country code suffix, e.g.
2933− // try en if undefined for en-US
2934− var lg = w3c_slidy.lang.split("-");
2935−
2936− if (lg.length > 1)
2937− {
2938− lookup = w3c_slidy.strings[lg[0]];
2939−
2940− if (lookup)
2941− {
2942− s = lookup[src];
2943−
2944− if (s)
2945− return s;
2946− }
2947− }
2948−
2949− // otherwise string as is
2950− return src;
2951− },
2952−
2953− init_localization: function () {
2954− var i18n = w3c_slidy;
2955− var help_text = w3c_slidy.help_text;
2956−
2957− // each such language array is declared in the localize array
2958− // this is used as in w3c_slidy.localize("foo");
2959− this.strings = {
2960− "es":this.strings_es,
2961− "ca":this.strings_ca,
2962− "cs":this.strings_cs,
2963− "nl":this.strings_nl,
2964− "de":this.strings_de,
2965− "pl":this.strings_pl,
2966− "fr":this.strings_fr,
2967− "hu":this.strings_hu,
2968− "it":this.strings_it,
2969− "el":this.strings_el,
2970− "jp":this.strings_ja,
2971− "zh":this.strings_zh,
2972− "ru":this.strings_ru,
2973− "sv":this.strings_sv
2974− },
2975−
2976− i18n.strings_es[help_text] = i18n.help_es;
2977− i18n.strings_ca[help_text] = i18n.help_ca;
2978− i18n.strings_cs[help_text] = i18n.help_cs;
2979− i18n.strings_nl[help_text] = i18n.help_nl;
2980− i18n.strings_de[help_text] = i18n.help_de;
2981− i18n.strings_pl[help_text] = i18n.help_pl;
2982− i18n.strings_fr[help_text] = i18n.help_fr;
2983− i18n.strings_hu[help_text] = i18n.help_hu;
2984− i18n.strings_it[help_text] = i18n.help_it;
2985− i18n.strings_el[help_text] = i18n.help_el;
2986− i18n.strings_ja[help_text] = i18n.help_ja;
2987− i18n.strings_zh[help_text] = i18n.help_zh;
2988− i18n.strings_ru[help_text] = i18n.help_ru;
2989− i18n.strings_sv[help_text] = i18n.help_sv;
2990−
2991− w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
2992−
2993− if (!w3c_slidy.lang)
2994− w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
2995−
2996− if (!w3c_slidy.lang)
2997− w3c_slidy.lang = "en";
2998− }
2999−};
3000−
3001−// hack for back button behavior
3002−if (w3c_slidy.ie6 || w3c_slidy.ie7)
3003−{
3004− document.write("<iframe id='historyFrame' " +
3005− "src='javascript:\"<html"+"></"+"html>\"' " +
3006− "height='1' width='1' " +
3007− "style='position:absolute;left:-800px'></iframe>");
3008−}
3009−
3010−// attach event listeners for initialization
3011−w3c_slidy.set_up();
3012−
3013−// hide the slides as soon as body element is available
3014−// to reduce annoying screen mess before the onload event
3015−setTimeout(w3c_slidy.hide_slides, 50);
3016−
data/slidy/styles/slidy.cssdeleted−405
@@ -1,405 +0,0 @@
1−/* slidy.css
2−
3− Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
4− W3C liability, trademark, document use and software licensing
5− rules apply, see:
6−
7− http://www.w3.org/Consortium/Legal/copyright-documents
8− http://www.w3.org/Consortium/Legal/copyright-software
9−*/
10−body
11−{
12− margin: 0 0 0 0;
13− padding: 0 0 0 0;
14− width: 100%;
15− height: 100%;
16− color: black;
17− background-color: white;
18− font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
19− font-size: 14pt;
20−}
21−
22−div.toolbar {
23− position: fixed; z-index: 200;
24− top: auto; bottom: 0; left: 0; right: 0;
25− height: 1.2em; text-align: right;
26− padding-left: 1em;
27− padding-right: 1em;
28− font-size: 60%;
29− color: red;
30− background-color: rgb(240,240,240);
31− border-top: solid 1px rgb(180,180,180);
32−}
33−
34−div.toolbar span.copyright {
35− color: black;
36− margin-left: 0.5em;
37−}
38−
39−div.initial_prompt {
40− position: absolute;
41− z-index: 1000;
42− bottom: 1.2em;
43− width: 100%;
44− background-color: rgb(200,200,200);
45− opacity: 0.35;
46− background-color: rgb(200,200,200, 0.35);
47− cursor: pointer;
48−}
49−
50−div.initial_prompt p.help {
51− text-align: center;
52−}
53−
54−div.initial_prompt p.close {
55− text-align: right;
56− font-style: italic;
57−}
58−
59−div.slidy_toc {
60− position: absolute;
61− z-index: 300;
62− width: 60%;
63− max-width: 30em;
64− height: 30em;
65− overflow: auto;
66− top: auto;
67− right: auto;
68− left: 4em;
69− bottom: 4em;
70− padding: 1em;
71− background: rgb(240,240,240);
72− border-style: solid;
73− border-width: 2px;
74− font-size: 60%;
75−}
76−
77−div.slidy_toc .toc_heading {
78− text-align: center;
79− width: 100%;
80− margin: 0;
81− margin-bottom: 1em;
82− border-bottom-style: solid;
83− border-bottom-color: rgb(180,180,180);
84− border-bottom-width: 1px;
85−}
86−
87−div.slide {
88− z-index: 20;
89− margin: 0 0 0 0;
90− padding-top: 0;
91− padding-bottom: 0;
92− padding-left: 20px;
93− padding-right: 20px;
94− border-width: 0;
95− clear: both;
96− top: 0;
97− bottom: 0;
98− left: 0;
99− right: 0;
100− line-height: 120%;
101− background-color: transparent;
102−}
103−
104−div.background {
105− display: none;
106−}
107−
108−div.handout {
109− margin-left: 20px;
110− margin-right: 20px;
111−}
112−
113−div.slide.titlepage {
114− text-align: center;
115−}
116−
117−div.slide.titlepage h1 {
118− padding-top: 10%;
119− margin-right: 0;
120−}
121−
122−div.slide h1 {
123− padding-left: 0;
124− padding-right: 20pt;
125− padding-top: 4pt;
126− padding-bottom: 4pt;
127− margin-top: 0;
128− margin-left: 0;
129− margin-right: 60pt;
130− margin-bottom: 0.5em;
131− display: block;
132− font-size: 160%;
133− line-height: 1.2em;
134− background: transparent;
135−}
136−
137−div.toc {
138− position: absolute;
139− top: auto;
140− bottom: 4em;
141− left: 4em;
142− right: auto;
143− width: 60%;
144− max-width: 30em;
145− height: 30em;
146− border: solid thin black;
147− padding: 1em;
148− background: rgb(240,240,240);
149− color: black;
150− z-index: 300;
151− overflow: auto;
152− display: block;
153− visibility: visible;
154−}
155−
156−div.toc-heading {
157− width: 100%;
158− border-bottom: solid 1px rgb(180,180,180);
159− margin-bottom: 1em;
160− text-align: center;
161−}
162−
163−img {
164− image-rendering: optimize-quality;
165−}
166−
167−pre {
168− font-size: 80%;
169− font-weight: bold;
170− line-height: 120%;
171− padding-top: 0.2em;
172− padding-bottom: 0.2em;
173− padding-left: 1em;
174− padding-right: 1em;
175− border-style: solid;
176− border-left-width: 1em;
177− border-top-width: thin;
178− border-right-width: thin;
179− border-bottom-width: thin;
180− border-color: #95ABD0;
181− color: #00428C;
182− background-color: #E4E5E7;
183−}
184−
185−li pre { margin-left: 0; }
186−
187−blockquote { font-style: italic }
188−
189−img { background-color: transparent }
190−
191−p.copyright { font-size: smaller }
192−
193−.center { text-align: center }
194−.footnote { font-size: smaller; margin-left: 2em; }
195−
196−a img { border-width: 0; border-style: none }
197−
198−a:visited { color: navy }
199−a:link { color: navy }
200−a:hover { color: red; text-decoration: underline }
201−a:active { color: red; text-decoration: underline }
202−
203−a {text-decoration: none}
204−.navbar a:link {color: white}
205−.navbar a:visited {color: yellow}
206−.navbar a:active {color: red}
207−.navbar a:hover {color: red}
208−
209−ul { list-style-type: square; }
210−ul ul { list-style-type: disc; }
211−ul ul ul { list-style-type: circle; }
212−ul ul ul ul { list-style-type: disc; }
213−li { margin-left: 0.5em; margin-top: 0.5em; }
214−li li { font-size: 85%; font-style: italic }
215−li li li { font-size: 85%; font-style: normal }
216−
217−div dt
218−{
219− margin-left: 0;
220− margin-top: 1em;
221− margin-bottom: 0.5em;
222− font-weight: bold;
223−}
224−div dd
225−{
226− margin-left: 2em;
227− margin-bottom: 0.5em;
228−}
229−
230−
231−p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
232− margin-left: 1em;
233− margin-right: 1em;
234−}
235−
236−p.subhead { font-weight: bold; margin-top: 2em; }
237−
238−.smaller { font-size: smaller }
239−.bigger { font-size: 130% }
240−
241−td,th { padding: 0.2em }
242−
243−ul {
244− margin: 0.5em 1.5em 0.5em 1.5em;
245− padding: 0;
246−}
247−
248−ol {
249− margin: 0.5em 1.5em 0.5em 1.5em;
250− padding: 0;
251−}
252−
253−ul { list-style-type: square; }
254−ul ul { list-style-type: disc; }
255−ul ul ul { list-style-type: circle; }
256−ul ul ul ul { list-style-type: disc; }
257−
258−ul li {
259− list-style: square;
260− margin: 0.1em 0em 0.6em 0;
261− padding: 0 0 0 0;
262− line-height: 140%;
263−}
264−
265−ol li {
266− margin: 0.1em 0em 0.6em 1.5em;
267− padding: 0 0 0 0px;
268− line-height: 140%;
269− list-style-type: decimal;
270−}
271−
272−li ul li {
273− font-size: 85%;
274− font-style: italic;
275− list-style-type: disc;
276− background: transparent;
277− padding: 0 0 0 0;
278−}
279−li li ul li {
280− font-size: 85%;
281− font-style: normal;
282− list-style-type: circle;
283− background: transparent;
284− padding: 0 0 0 0;
285−}
286−li li li ul li {
287− list-style-type: disc;
288− background: transparent;
289− padding: 0 0 0 0;
290−}
291−
292−li ol li {
293− list-style-type: decimal;
294−}
295−
296−
297−li li ol li {
298− list-style-type: decimal;
299−}
300−
301−/*
302− setting class="outline on ol or ul makes it behave as an
303− ouline list where blocklevel content in li elements is
304− hidden by default and can be expanded or collapsed with
305− mouse click. Set class="expand" on li to override default
306−*/
307−
308−ol.outline li:hover { cursor: pointer }
309−ol.outline li.nofold:hover { cursor: default }
310−
311−ul.outline li:hover { cursor: pointer }
312−ul.outline li.nofold:hover { cursor: default }
313−
314−ol.outline { list-style:decimal; }
315−ol.outline ol { list-style-type:lower-alpha }
316−
317−ol.outline li.nofold {
318− padding: 0 0 0 20px;
319− background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
320−}
321−ol.outline li.unfolded {
322− padding: 0 0 0 20px;
323− background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
324−}
325−ol.outline li.folded {
326− padding: 0 0 0 20px;
327− background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
328−}
329−ol.outline li.unfolded:hover {
330− padding: 0 0 0 20px;
331− background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
332−}
333−ol.outline li.folded:hover {
334− padding: 0 0 0 20px;
335− background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
336−}
337−
338−ul.outline li.nofold {
339− padding: 0 0 0 20px;
340− background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
341−}
342−ul.outline li.unfolded {
343− padding: 0 0 0 20px;
344− background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
345−}
346−ul.outline li.folded {
347− padding: 0 0 0 20px;
348− background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
349−}
350−ul.outline li.unfolded:hover {
351− padding: 0 0 0 20px;
352− background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
353−}
354−ul.outline li.folded:hover {
355− padding: 0 0 0 20px;
356− background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
357−}
358−
359−/* for slides with class "title" in table of contents */
360−a.titleslide { font-weight: bold; font-style: italic }
361−
362−/*
363− hide images for work around for save as bug
364− where browsers fail to save images used by CSS
365−*/
366−img.hidden { display: none; visibility: hidden }
367−div.initial_prompt { display: none; visibility: hidden }
368−
369− div.slide {
370− visibility: visible;
371− position: inherit;
372− }
373− div.handout {
374− border-top-style: solid;
375− border-top-width: thin;
376− border-top-color: black;
377− }
378−
379−@media screen {
380− .hidden { display: none; visibility: visible }
381−
382− div.slide.hidden { display: block; visibility: visible }
383− div.handout.hidden { display: block; visibility: visible }
384− div.background { display: none; visibility: hidden }
385− body.single_slide div.initial_prompt { display: block; visibility: visible }
386− body.single_slide div.background { display: block; visibility: visible }
387− body.single_slide div.background.hidden { display: none; visibility: hidden }
388− body.single_slide .invisible { visibility: hidden }
389− body.single_slide .hidden { display: none; visibility: hidden }
390− body.single_slide div.slide { position: absolute }
391− body.single_slide div.handout { display: none; visibility: hidden }
392−}
393−
394−@media print {
395− .hidden { display: block; visibility: visible }
396−
397− div.slide pre { font-size: 60%; padding-left: 0.5em; }
398− div.toolbar { display: none; visibility: hidden; }
399− div.slidy_toc { display: none; visibility: hidden; }
400− div.background { display: none; visibility: hidden; }
401− div.slide { page-break-before: always }
402− /* :first-child isn't reliable for print media */
403− div.slide.first-slide { page-break-before: avoid }
404−}
405−
pandoc.cabal−23
@@ -74,29 +74,6 @@ Data-Files:
7474 -- data for LaTeXMathML writer
7575 data/LaTeXMathML.js,
7676 data/MathMLinHTML.js,
77− -- data for S5 writer
78− data/s5/default/slides.js,
79− data/s5/default/s5-core.css,
80− data/s5/default/framing.css,
81− data/s5/default/pretty.css,
82− data/s5/default/opera.css,
83− data/s5/default/outline.css,
84− data/s5/default/print.css,
85− data/s5/default/slides.css,
86− data/s5/default/iepngfix.htc,
87− data/s5/default/blank.gif,
88− data/s5/default/bodybg.gif,
89− -- data for slidy writer
90− data/slidy/styles/slidy.css,
91− data/slidy/scripts/slidy.js,
92− data/slidy/graphics/fold.gif,
93− data/slidy/graphics/unfold.gif,
94− data/slidy/graphics/nofold-dim.gif,
95− data/slidy/graphics/unfold-dim.gif,
96− data/slidy/graphics/fold-dim.gif,
97− -- data for slideous writer
98− data/slideous/slideous.css,
99− data/slideous/slideous.js,
10077 -- data for dzslides writer
10178 data/dzslides/template.html,
10279 -- sample lua custom writer