1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
4<!-- configuration parameters -->
5<meta name="defaultView" content="slideshow" />
6<meta name="controlVis" content="hidden" />
7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8<meta name="generator" content="pandoc" />
9<style type="text/css" media="projection" id="slideProj">
10/* Do not edit or override these styles! The system will likely break if you do. */
12div#header, div#footer, div#controls, .slide {position: absolute;}
13html>body div#header, html>body div#footer,
14 html>body div#controls, html>body .slide {position: fixed;}
15.handout {display: none;}
16.layout {display: block;}
17.slide, .hideme, .incremental {visibility: hidden;}
18#slide0 {visibility: visible;}
20/* The following styles size, place, and layer the slide components.
21 Edit these if you want to change the overall slide layout.
22 The commented lines can be uncommented (and modified, if necessary)
23 to help you with the rearrangement process. */
25/* target = 1024x768 */
27div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
28div#header {top: 0; height: 3em; z-index: 1;}
29div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
30.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
31div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
32div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
34#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
35html>body #currentSlide {position: fixed;}
38div#header {background: #FCC;}
39div#footer {background: #CCF;}
40div#controls {background: #BBD;}
41div#currentSlide {background: #FFC;}
44/* Following are the presentation styles -- edit away! */
46body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;}
47:link, :visited {text-decoration: none; color: #00C;}
48#controls :active {color: #88A !important;}
49#controls :focus {outline: 1px dotted #227;}
50h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
51ul, pre {margin: 0; line-height: 1em;}
52html, body {margin: 0; padding: 0;}
54blockquote, q {font-style: italic;}
55blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
56blockquote p {margin: 0;}
57blockquote i {font-style: normal;}
58blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
59blockquote b i {font-style: italic;}
61kbd {font-weight: bold; font-size: 1em;}
62sup {font-size: smaller; line-height: 1px;}
64.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
65.slide code.bad, code del {color: red;}
66.slide code.old {color: silver;}
67.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
68.slide pre code {display: block;}
69.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
70.slide li {margin-top: 0.75em; margin-right: 0;}
71.slide ul ul {line-height: 1;}
72.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
73.slide img.leader {display: block; margin: 0 auto;}
75div#header, div#footer {background: #005; color: #AAB;
76 font-family: Verdana, Helvetica, sans-serif;}
77div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
79div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
80#footer h1, #footer h2 {display: block; padding: 0 1em;}
81#footer h2 {font-style: italic;}
83div.long {font-size: 0.75em;}
84.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
85 margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
86 font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
87 color: #DDE; background: #005;}
88.slide h3 {font-size: 130%;}
89h1 abbr {font-variant: small-caps;}
91div#controls {position: absolute; left: 50%; bottom: 0;
93 text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}
94html>body div#controls {position: fixed; padding: 0 0 1em 0;
96div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
97 margin: 0; padding: 0;}
98#controls #navLinks a {padding: 0; margin: 0 0.5em;
99 background: #005; border: none; color: #779;
101#controls #navList {height: 1em;}
102#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;}
104#currentSlide {text-align: center; font-size: 0.5em; color: #449;}
106#slide0 {padding-top: 3.5em; font-size: 90%;}
107#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
108 font: bold 2em Helvetica, sans-serif; white-space: normal;
109 color: #000; background: transparent;}
110#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;}
111#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
112#slide0 h4 {margin-top: 0; font-size: 1em;}
114ul.urls {list-style: none; display: inline; margin: 0;}
115.urls li {display: inline; margin: 0;}
116.note {display: none;}
117.external {border-bottom: 1px dotted gray;}
118html>body .external {border-bottom: none;}
119.external:after {content: " \274F"; font-size: smaller; color: #77B;}
121.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
122img.incremental {visibility: hidden;}
123.slide .current {color: #B02;}
128li:after {content: " [" attr(class) "]"; color: #F88;}
131<style type="text/css" media="projection" id="operaFix">
132/* DO NOT CHANGE THESE unless you really want to break Opera Show */
134 visibility: visible !important;
135 position: static !important;
136 page-break-before: always;
138#slide0 {page-break-before: avoid;}
141<style type="text/css" media="screen" id="outlineStyle">
142/* don't change this unless you want the layout stuff to show up in the outline view! */
144.layout div, #footer *, #controlForm * {display: none;}
145#footer, #controls, #controlForm, #navLinks, #toggle {
146 display: block; visibility: visible; margin: 0; padding: 0;}
147#toggle {float: right; padding: 0.5em;}
148html>body #toggle {position: fixed; top: 0; right: 0;}
150/* making the outline look pretty-ish */
152#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
153#slide0 h1 {padding-top: 1.5em;}
154.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
155 border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
156#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
159<style type="text/css" media="print" id="slidePrint">
160/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
161.slide, ul {page-break-inside: avoid; visibility: visible !important;}
162h1 {page-break-after: avoid;}
164body {font-size: 12pt; background: white;}
167#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
168#slide0 h3 {margin: 0; padding: 0;}
169#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
170#slide0 {margin-bottom: 3em;}
172h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
173.extra {background: transparent !important;}
174div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
175ul.extra a {font-weight: bold;}
176p.example {display: none;}
178#header {display: none;}
179#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
180#footer h2, #controls {display: none;}
182/* The following rule keeps the layout stuff out of print. Remove at your own risk! */
183.layout, .layout * {display: none !important;}
186<script type="text/javascript">
187// S5 v1.1 slides.js -- released into the Public Domain
189// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information
190// about all the wonderful and talented contributors to this code!
199var defaultView = 'slideshow';
200var controlVis = 'visible';
202var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
203var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
204var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
206function hasClass(object, className) {
207 if (!object.className) return false;
208 return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
211function hasValue(object, value) {
212 if (!object) return false;
213 return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
216function removeClass(object,className) {
218 object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
221function addClass(object,className) {
222 if (!object || hasClass(object, className)) return;
223 if (object.className) {
224 object.className += ' '+className;
226 object.className = className;
230function GetElementsWithClassName(elementName,className) {
231 var allElements = document.getElementsByTagName(elementName);
232 var elemColl = new Array();
233 for (var i = 0; i< allElements.length; i++) {
234 if (hasClass(allElements[i], className)) {
235 elemColl[elemColl.length] = allElements[i];
241function isParentOrSelf(element, id) {
242 if (element == null || element.nodeName=='BODY') return false;
243 else if (element.id == id) return true;
244 else return isParentOrSelf(element.parentNode, id);
247function nodeValue(node) {
249 if (node.nodeType == 1) {
250 var children = node.childNodes;
251 for (var i = 0; i < children.length; ++i) {
252 result += nodeValue(children[i]);
255 else if (node.nodeType == 3) {
256 result = node.nodeValue;
261function slideLabel() {
262 var slideColl = GetElementsWithClassName('*','slide');
263 var list = document.getElementById('jumplist');
264 smax = slideColl.length;
265 for (var n = 0; n < smax; n++) {
266 var obj = slideColl[n];
268 var did = 'slide' + n.toString();
269 obj.setAttribute('id',did);
273 var menu = obj.firstChild;
274 if (!menu) continue; // to cope with empty slides
275 while (menu && menu.nodeType == 3) {
276 menu = menu.nextSibling;
278 if (!menu) continue; // to cope with slides with only text nodes
280 var menunodes = menu.childNodes;
281 for (var o = 0; o < menunodes.length; o++) {
282 otext += nodeValue(menunodes[o]);
284 list.options[list.length] = new Option(n + ' : ' + otext, n);
288function currentSlide() {
290 if (document.getElementById) {
291 cs = document.getElementById('currentSlide');
293 cs = document.currentSlide;
295 cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +
296 '<span id="csSep">\/<\/span> ' +
297 '<span id="csTotal">' + (smax-1) + '<\/span>';
299 cs.style.visibility = 'hidden';
301 cs.style.visibility = 'visible';
306 if (document.getElementById('slideProj').disabled || step == 0) return;
307 var jl = document.getElementById('jumplist');
308 var cid = 'slide' + snum;
309 var ce = document.getElementById(cid);
310 if (incrementals[snum].length > 0) {
311 for (var i = 0; i < incrementals[snum].length; i++) {
312 removeClass(incrementals[snum][i], 'current');
313 removeClass(incrementals[snum][i], 'incremental');
319 if (snum > lmax) snum = lmax;
320 if (snum < 0) snum = 0;
322 snum = parseInt(jl.value);
323 var nid = 'slide' + snum;
324 var ne = document.getElementById(nid);
326 ne = document.getElementById('slide0');
329 if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
330 if (incrementals[snum].length > 0 && incpos == 0) {
331 for (var i = 0; i < incrementals[snum].length; i++) {
332 if (hasClass(incrementals[snum][i], 'current'))
335 addClass(incrementals[snum][i], 'incremental');
338 if (incrementals[snum].length > 0 && incpos > 0)
339 addClass(incrementals[snum][incpos - 1], 'current');
340 ce.style.visibility = 'hidden';
341 ne.style.visibility = 'visible';
342 jl.selectedIndex = snum;
347function goTo(target) {
348 if (target >= smax || target == snum) return;
352function subgo(step) {
354 removeClass(incrementals[snum][incpos - 1],'current');
355 removeClass(incrementals[snum][incpos], 'incremental');
356 addClass(incrementals[snum][incpos],'current');
360 removeClass(incrementals[snum][incpos],'current');
361 addClass(incrementals[snum][incpos], 'incremental');
362 addClass(incrementals[snum][incpos - 1],'current');
367 var slideColl = GetElementsWithClassName('*','slide');
368 var slides = document.getElementById('slideProj');
369 var outline = document.getElementById('outlineStyle');
370 if (!slides.disabled) {
371 slides.disabled = true;
372 outline.disabled = false;
375 for (var n = 0; n < smax; n++) {
376 var slide = slideColl[n];
377 slide.style.visibility = 'visible';
380 slides.disabled = false;
381 outline.disabled = true;
384 for (var n = 0; n < smax; n++) {
385 var slide = slideColl[n];
386 slide.style.visibility = 'hidden';
388 slideColl[snum].style.visibility = 'visible';
392function showHide(action) {
393 var obj = GetElementsWithClassName('*','hideme')[0];
395 case 's': obj.style.visibility = 'visible'; break;
396 case 'h': obj.style.visibility = 'hidden'; break;
398 if (obj.style.visibility != 'visible') {
399 obj.style.visibility = 'visible';
401 obj.style.visibility = 'hidden';
407// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
411 key.which = key.keyCode;
413 if (key.which == 84) {
421 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
422 if (key.target && isParentOrSelf(key.target, 'controls')) return;
423 if(number != undef) {
428 case 34: // page down
431 if(number != undef) {
433 } else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
442 if(number != undef) {
444 } else if (!incrementals[snum] || incpos <= 0) {
460 if (key.which < 48 || key.which > 57) {
463 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
464 if (key.target && isParentOrSelf(key.target, 'controls')) return;
465 number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
475 target = window.event.srcElement;
477 } else target = e.target;
478 if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
479 if (!e.which || e.which == 1) {
480 if (!incrementals[snum] || incpos >= incrementals[snum].length) {
488function findSlide(hash) {
490 var slides = GetElementsWithClassName('*','slide');
491 for (var i = 0; i < slides.length; i++) {
492 var targetSlide = slides[i];
493 if ( (targetSlide.name && targetSlide.name == hash)
494 || (targetSlide.id && targetSlide.id == hash) ) {
495 target = targetSlide;
499 while(target != null && target.nodeName != 'BODY') {
500 if (hasClass(target, 'slide')) {
501 return parseInt(target.id.slice(5));
503 target = target.parentNode;
508function slideJump() {
509 if (window.location.hash == null) return;
510 var sregex = /^#slide(\d+)$/;
511 var matches = sregex.exec(window.location.hash);
513 if (matches != null) {
514 dest = parseInt(matches[1]);
516 dest = findSlide(window.location.hash.slice(1));
523 var thisUri = window.location.href;
524 thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
525 var aelements = document.getElementsByTagName('A');
526 for (var i = 0; i < aelements.length; i++) {
527 var a = aelements[i].href;
528 var slideID = a.match('\#slide[0-9]{1,2}');
529 if ((slideID) && (slideID[0].slice(0,1) == '#')) {
530 var dest = findSlide(slideID[0].slice(1));
532 if (aelements[i].addEventListener) {
533 aelements[i].addEventListener("click", new Function("e",
534 "if (document.getElementById('slideProj').disabled) return;" +
535 "go("+dest+" - snum); " +
536 "if (e.preventDefault) e.preventDefault();"), true);
537 } else if (aelements[i].attachEvent) {
538 aelements[i].attachEvent("onclick", new Function("",
539 "if (document.getElementById('slideProj').disabled) return;" +
540 "go("+dest+" - snum); " +
541 "event.returnValue = false;"));
548function externalLinks() {
549 if (!document.getElementsByTagName) return;
550 var anchors = document.getElementsByTagName('a');
551 for (var i=0; i<anchors.length; i++) {
552 var anchor = anchors[i];
553 if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
554 anchor.target = '_blank';
555 addClass(anchor,'external');
560function createControls() {
561 var controlsDiv = document.getElementById("controls");
562 if (!controlsDiv) return;
563 var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
564 var hideDiv, hideList = '';
565 if (controlVis == 'hidden') {
570 controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
571 '<div id="navLinks">' +
572 '<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' +
573 '<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' +
574 '<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' +
575 '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
577 if (controlVis == 'hidden') {
578 var hidden = document.getElementById('navLinks');
580 var hidden = document.getElementById('jumplist');
582 addClass(hidden,'hideme');
585function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
586 if (!s5mode) return false;
587 var vScale = 22; // both yield 32 (after rounding) at 1024x768
588 var hScale = 32; // perhaps should auto-calculate based on theme's declared value?
589 if (window.innerHeight) {
590 var vSize = window.innerHeight;
591 var hSize = window.innerWidth;
592 } else if (document.documentElement.clientHeight) {
593 var vSize = document.documentElement.clientHeight;
594 var hSize = document.documentElement.clientWidth;
595 } else if (document.body.clientHeight) {
596 var vSize = document.body.clientHeight;
597 var hSize = document.body.clientWidth;
599 var vSize = 700; // assuming 1024x768, minus chrome and such
600 var hSize = 1024; // these do not account for kiosk mode or Opera Show
602 var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
603 fontSize(newSize + 'px');
604 if (isGe) { // hack to counter incremental reflow bugs
605 var obj = document.getElementsByTagName('body')[0];
606 obj.style.display = 'none';
607 obj.style.display = 'block';
611function fontSize(value) {
612 if (!(s5ss = document.getElementById('s5ss'))) {
614 document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
615 s5ss.setAttribute('media','screen, projection');
616 s5ss.setAttribute('id','s5ss');
618 document.createStyleSheet();
619 document.s5ss = document.styleSheets[document.styleSheets.length - 1];
623 while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
624 s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));
626 document.s5ss.addRule('body','font-size: ' + value + ' !important;');
630function notOperaFix() {
631 slideCSS = document.getElementById('slideProj').href;
632 var slides = document.getElementById('slideProj');
633 var outline = document.getElementById('outlineStyle');
634 slides.setAttribute('media','screen');
635 outline.disabled = true;
637 slides.setAttribute('href','null'); // Gecko fix
638 slides.setAttribute('href',slideCSS); // Gecko fix
640 if (isIE && document.styleSheets && document.styleSheets[0]) {
641 document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
642 document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
643 document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
647function getIncrementals(obj) {
648 var incrementals = new Array();
651 var children = obj.childNodes;
652 for (var i = 0; i < children.length; i++) {
653 var child = children[i];
654 if (hasClass(child, 'incremental')) {
655 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
656 removeClass(child, 'incremental');
657 for (var j = 0; j < child.childNodes.length; j++) {
658 if (child.childNodes[j].nodeType == 1) {
659 addClass(child.childNodes[j], 'incremental');
663 incrementals[incrementals.length] = child;
664 removeClass(child,'incremental');
667 if (hasClass(child, 'show-first')) {
668 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
669 removeClass(child, 'show-first');
670 if (child.childNodes[isGe].nodeType == 1) {
671 removeClass(child.childNodes[isGe], 'incremental');
674 incrementals[incrementals.length] = child;
677 incrementals = incrementals.concat(getIncrementals(child));
682function createIncrementals() {
683 var incrementals = new Array();
684 for (var i = 0; i < smax; i++) {
685 incrementals[i] = getIncrementals(document.getElementById('slide'+i));
690function defaultCheck() {
691 var allMetas = document.getElementsByTagName('meta');
692 for (var i = 0; i< allMetas.length; i++) {
693 if (allMetas[i].name == 'defaultView') {
694 defaultView = allMetas[i].content;
696 if (allMetas[i].name == 'controlVis') {
697 controlVis = allMetas[i].content;
702// Key trap fix, new function body for trap()
709 modifierKey = e.ctrlKey || e.altKey || e.metaKey;
714 return modifierKey || e.which == 0;
727 incrementals = createIncrementals();
729 if (defaultView == 'outline') {
732 document.onkeyup = keys;
733 document.onkeypress = trap;
734 document.onclick = clicker;
738window.onload = startup;
739window.onresize = function(){setTimeout('fontScale()', 50);}</script>
740<meta name="author" content="Sam Smith, Jen Jones" />
741<meta name="date" content="July 15, 2006" />
742<title>My S5 Document</title>
746<div id="controls"></div>
747<div id="currentSlide"></div>
748<div id="header"></div>
750<h1>July 15, 2006</h1>
751<h2>My S5 Document</h2>
754<div class="presentation">
757<h1>My S5 Document</h1>
758<h3>Sam Smith, Jen Jones</h3>
759<h4>July 15, 2006</h4>
765<li>second bullet</li>
770<ul class="incremental">
771<li>"Hello there"</li>
772<li>Here's a -- dash</li>
773<li>And 'ellipses'...</li>
779<li>$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</li>
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list