Reproduzierbare Veröffentlichungen

(Arne Babenhauserheide)
2013-12-20: add ui repo for org-mode s5 presentations

add ui repo for org-mode s5 presentations

diff --git a/ui/bg-shade.png b/ui/bg-shade.png
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..172c914f6f0dd3ef6d97b3c23c31f539f8f69389
GIT binary patch
literal 594
zc%17D@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST~P>fl1QS#WAE}&fCiy1sfC?4mhNU
zOI1HFE){!lDeI%X<E)t1b@v!$&aP*EaGr<hpn||CF;WP#O&Uy-SENrV0j3oOPgg&e
IbxsLQ0Qi-Il>h($

diff --git a/ui/default/blank.gif b/ui/default/blank.gif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..75b945d2553848b8b6f41fe5e24599c0687b8472
GIT binary patch
literal 49
zc${<hbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNTbkJOdL`2qS|v08zdQ
ATL1t6

diff --git a/ui/default/bodybg.gif b/ui/default/bodybg.gif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5f448a16fe6dc7a03a4279fb19f9ba3af38eb634
GIT binary patch
literal 10119
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

diff --git a/ui/default/framing.css b/ui/default/framing.css
new file mode 100644
--- /dev/null
+++ b/ui/default/framing.css
@@ -0,0 +1,22 @@
+/* The following styles size, place, and layer the slide components.
+   Edit these if you want to change the overall slide layout.
+   The commented lines can be uncommented (and modified, if necessary) 
+    to help you with the rearrangement process. */
+
+/* target = 1024x768 */
+
+div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
+div#header {top: 0; height: 3em; z-index: 1;}
+div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
+.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2;  list-style: none;}
+div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
+div#controls form {text-align: right; width: 100%; margin: 0;}
+#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
+html>body #currentSlide {position: fixed;}
+
+/*
+div#header {background: #FCC;}
+div#footer {background: #CCF;}
+div#controls {background: #BBD;}
+div#currentSlide {background: #FFC;}
+*/
diff --git a/ui/default/iepngfix.htc b/ui/default/iepngfix.htc
new file mode 100644
--- /dev/null
+++ b/ui/default/iepngfix.htc
@@ -0,0 +1,42 @@
+<public:component>
+<public:attach event="onpropertychange" onevent="doFix()" />
+
+<script>
+
+// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
+// Free usage permitted as long as this notice remains intact.
+
+// This must be a path to a blank image. That's all the configuration you need here.
+var blankImg = 'ui/default/blank.gif';
+
+var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
+
+function filt(s, m) {
+ if (filters[f]) {
+  filters[f].enabled = s ? true : false;
+  if (s) with (filters[f]) { src = s; sizingMethod = m }
+ } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
+}
+
+function doFix() {
+ if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
+  (event && !/(background|src)/.test(event.propertyName))) return;
+
+ if (tagName == 'IMG') {
+  if ((/\.png$/i).test(src)) {
+   filt(src, 'image');  // was 'scale'
+   src = blankImg;
+  } else if (src.indexOf(blankImg) < 0) filt();
+ } else if (style.backgroundImage) {
+  if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
+   var s = RegExp.$1;
+   style.backgroundImage = '';
+   filt(s, 'crop');
+  } else filt();
+ }
+}
+
+doFix();
+
+</script>
+</public:component>
\ No newline at end of file
diff --git a/ui/default/notes.css b/ui/default/notes.css
new file mode 100644
--- /dev/null
+++ b/ui/default/notes.css
@@ -0,0 +1,122 @@
+/* Following are the note styles -- edit away! */
+
+body {
+	margin: 0;
+	padding: 1.0em;
+	background: #333; 
+	color: #FFF;
+	font: 2em/1.4em 'Lucida Grande', Verdana, sans-serif;
+}
+
+div.timers {
+	background: #FFF;
+	color: #333;
+	border: 0.08em solid #222;
+	border-top-width: 1px;
+	border-left-width: 1px;
+	float: left;
+	padding: 0.2em;
+	margin: 0 0 0.5em;
+	position: relative;
+}
+
+div.timers h1 {
+	text-align: left;
+	font-size: 0.6em;
+	line-height: 1.4em;
+	background-color: #FF9;
+	padding: 0 0.75em;
+	margin: 0.25em 0 0;
+	border: 1px solid #EE8;
+}
+
+div.timers div.controls {
+	position: absolute;
+	right: 0.25em;
+	top: 0.1em;
+	line-height: 1em;
+}
+
+div.timers h1 a {
+	text-decoration: none;
+	color: #000;
+}
+
+div.timers div.controls a {
+	font-size: 0.5em;
+	padding: 0;
+	color: #330;
+}
+
+div.timers a.control {
+	position: absolute;
+	text-decoration: none;
+	padding: 0 0.25em;
+	color: #AAA;
+	outline: 0;
+}
+
+#minus {
+	left: 0.25em;
+}
+
+#plus {
+	right: 0.25em;
+}
+
+.overtime {
+	background: yellow;
+	color: red;
+	border: 3px solid;
+	padding: 0.1em 0.25em;
+	font-weight: bold;
+}
+
+div.timers h2 {
+	font-size: 0.6em;
+	line-height: 1.0em;
+	font-weight: normal;
+	margin: 0 0 -0.25em;
+	padding-top: 0.5em;
+	color: #666;
+}
+
+div.timers p {margin: 0; padding: 0 0.5em;}
+div.timers form {margin: 0;}
+
+div.timers span.clock {
+	font-family: monospace;
+}
+
+div.timers ul {margin: 0; padding: 0; list-style: none;}
+div.timers li {float: left; width: 5em; margin: 0; padding: 0 0.5em;
+  text-align: center;}
+
+div#elapsed {width: 12.1em;}
+div#remaining {clear: left; width: 12.1em;}
+div#remaining p {text-align: center;}
+
+#slide,
+#next,
+#notes,
+#nextnotes {
+	font-size: 0.75em;
+	line-height: 1.4em;
+	clear: left;
+/*	max-width: 30.0em; */
+	text-shadow: 0.1em 0.1em 0.1em #111;
+}
+
+#next {margin-top: 2.5em;}
+#next, #nextnotes {
+	color: #999;
+	font-size: 0.66em;
+}
+
+em.disclaimer {
+	color: #666;
+}
+
+div.collapsed h1 {display: block; font-size: 0.33em;}
+div.collapsed h1 a {display: inline;}
+div.collapsed * {display: none;}
diff --git a/ui/default/opera.css b/ui/default/opera.css
new file mode 100644
--- /dev/null
+++ b/ui/default/opera.css
@@ -0,0 +1,7 @@
+/* DO NOT CHANGE THESE unless you really want to break Opera Show */
+.slide {
+	visibility: visible !important;
+	position: static !important;
+	page-break-before: always;
+}
+#slide0 {page-break-before: avoid;}
diff --git a/ui/default/outline.css b/ui/default/outline.css
new file mode 100644
--- /dev/null
+++ b/ui/default/outline.css
@@ -0,0 +1,15 @@
+/* don't change this unless you want the layout stuff to show up in the outline view! */
+
+.layout div, #footer *, #controlForm * {display: none;}
+#footer, #controls, #controlForm, #navLinks, #toggle {
+  display: block; visibility: visible; margin: 0; padding: 0;}
+#toggle {float: right; padding: 0.5em;}
+html>body #toggle {position: fixed; top: 0; right: 0;}
+
+/* making the outline look pretty-ish */
+
+#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
+#slide0 h1 {padding-top: 1.5em;}
+.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
+  border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
+#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
diff --git a/ui/default/pretty.css b/ui/default/pretty.css
new file mode 100644
--- /dev/null
+++ b/ui/default/pretty.css
@@ -0,0 +1,82 @@
+/* Following are the presentation styles -- edit away! */
+
+body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2.25em;}
+:link, :visited {text-decoration: none; color: #00C;}
+#controls :active {color: #88A !important;}
+#controls :focus {outline: 1px dotted #227;}
+h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
+ul, pre {margin: 0; line-height: 1em;}
+html, body {margin: 0; padding: 0;}
+
+blockquote, q {font-style: italic;}
+blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
+blockquote p {margin: 0;}
+blockquote i {font-style: normal;}
+blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
+blockquote b i {font-style: italic;}
+
+kbd {font-weight: bold; font-size: 1em;}
+sup {font-size: smaller; line-height: 1px;}
+
+.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
+.slide code.bad, code del {color: red;}
+.slide code.old {color: silver;}
+.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
+.slide pre code {display: block;}
+.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
+.slide li {margin-top: 0.75em; margin-right: 0;}
+.slide ul ul {line-height: 1;}
+.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
+.slide img.leader {display: block; margin: 0 auto;}
+
+div#header, div#footer {background: #005; color: #AAB;
+  font-family: Verdana, Helvetica, sans-serif;}
+div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
+  line-height: 1px;}
+div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
+#footer h1, #footer h2 {display: block; padding: 0 1em;}
+#footer h2 {font-style: italic;}
+
+div.long {font-size: 0.75em;}
+.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
+  margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
+  font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
+  color: #DDE; background: #005;}
+.slide h3 {font-size: 130%;}
+h1 abbr {font-variant: small-caps;}
+
+div#controls {position: absolute; left: 60%; bottom: 0;
+  width: 40%;
+  text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}
+html>body div#controls {position: fixed; padding: 0; top: auto;}
+#controls #navLinks a {padding: 0; margin: 0 0.5em; 
+  background: #005; border: none; color: #779; 
+  cursor: pointer;}
+#controls #navList #jumplist {background: #DDD; color: #227;}
+
+#currentSlide {text-align: center; font-size: 0.5em; color: #449;}
+
+#slide0 {padding-top: 3.5em; font-size: 90%;}
+#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
+   font: bold 2em Helvetica, sans-serif; white-space: normal;
+   color: #000; background: transparent;}
+#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;}
+#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
+#slide0 h4 {margin-top: 0; font-size: 1em;}
+
+ul.urls {list-style: none; display: inline; margin: 0;}
+.urls li {display: inline; margin: 0;}
+.note {display: none;}
+.external {border-bottom: 1px dotted gray;}
+html>body .external {border-bottom: none;}
+.external:after {content: " \274F"; font-size: smaller; color: #77B;}
+
+.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
+img.incremental {visibility: hidden;}
+.slide .current {color: #B02;}
+
+
+/* diagnostics
+
+li:after {content: " [" attr(class) "]"; color: #F88;}
+ */
\ No newline at end of file
diff --git a/ui/default/print.css b/ui/default/print.css
new file mode 100644
--- /dev/null
+++ b/ui/default/print.css
@@ -0,0 +1,1 @@
+/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
.slide, ul {page-break-inside: avoid; visibility: visible !important;}
h1 {page-break-after: avoid;}

body {font-size: 12pt; background: white;}
* {color: black;}

#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
#slide0 h3 {margin: 0; padding: 0;}
#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
#slide0 {margin-bottom: 3em;}

h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
.extra {background: transparent !important;}
div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
ul.extra a {font-weight: bold;}
p.example {display: none;}

#header {display: none;}
#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
#footer h2, #controls {display: none;}

/* The following rule keeps the layout stuff out of print.  Remove at your own risk! */
.layout, .layout * {display: none !important;}
\ No newline at end of file
diff --git a/ui/default/s5-core.css b/ui/default/s5-core.css
new file mode 100644
--- /dev/null
+++ b/ui/default/s5-core.css
@@ -0,0 +1,9 @@
+/* Do not edit or override these styles! The system will likely break if you do. */
+
+div#header, div#footer, div#controls, .slide {position: absolute;}
+html>body div#header, html>body div#footer, 
+  html>body div#controls, html>body .slide {position: fixed;}
+.handout, .notes {display: none;}
+.layout {display: block;}
+.slide, .hideme, .incremental {visibility: hidden;}
+#slide0 {visibility: visible;}
diff --git a/ui/default/slides.css b/ui/default/slides.css
new file mode 100644
--- /dev/null
+++ b/ui/default/slides.css
@@ -0,0 +1,3 @@
+@import url(s5-core.css); /* required to make the slide show run at all */
+@import url(framing.css); /* sets basic placement and size of slide components */
+@import url(pretty.css);  /* stuff that makes the slides look better than blah */
\ No newline at end of file
diff --git a/ui/default/slides.js b/ui/default/slides.js
new file mode 100644
--- /dev/null
+++ b/ui/default/slides.js
@@ -0,0 +1,764 @@
+// S5 v1.2a1 slides.js -- released into the Public Domain
+//
+// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information 
+// about all the wonderful and talented contributors to this code!
+
+var undef;
+var slideCSS = '';
+var snum = 0;
+var smax = 1;
+var incpos = 0;
+var number = undef;
+var s5mode = true;
+var defaultView = 'slideshow';
+var controlVis = 'visible';
+
+var s5NotesWindow;
+var s5NotesWindowLoaded = false;
+var previousSlide = 0;
+var presentationStart = new Date();
+var slideStart = new Date();
+
+var countdown = {
+	timer: 0,
+	state: 'pause',
+	start: new Date(),
+	end: 0,
+	remaining: 0
+};
+
+
+var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
+var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
+var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
+
+function hasClass(object, className) {
+	if (!object.className) return false;
+	return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
+}
+
+function hasValue(object, value) {
+	if (!object) return false;
+	return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
+}
+
+function removeClass(object,className) {
+	if (!object || !hasClass(object,className)) return;
+	object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
+}
+
+function addClass(object,className) {
+	if (!object || hasClass(object, className)) return;
+	if (object.className) {
+		object.className += ' '+className;
+	} else {
+		object.className = className;
+	}
+}
+
+function GetElementsWithClassName(elementName,className) {
+	var allElements = document.getElementsByTagName(elementName);
+	var elemColl = new Array();
+	for (var i = 0; i< allElements.length; i++) {
+		if (hasClass(allElements[i], className)) {
+			elemColl[elemColl.length] = allElements[i];
+		}
+	}
+	return elemColl;
+}
+
+function isParentOrSelf(element, id) {
+	if (element == null || element.nodeName=='BODY') return false;
+	else if (element.id == id) return true;
+	else return isParentOrSelf(element.parentNode, id);
+}
+
+function nodeValue(node) {
+	var result = "";
+	if (node.nodeType == 1) {
+		var children = node.childNodes;
+		for (var i = 0; i < children.length; ++i) {
+			result += nodeValue(children[i]);
+		}		
+	}
+	else if (node.nodeType == 3) {
+		result = node.nodeValue;
+	}
+	return(result);
+}
+
+function slideLabel() {
+	var slideColl = GetElementsWithClassName('*','slide');
+	var list = document.getElementById('jumplist');
+	smax = slideColl.length;
+	for (var n = 0; n < smax; n++) {
+		var obj = slideColl[n];
+
+		var did = 'slide' + n.toString();
+		obj.setAttribute('id',did);
+
+//		if (isOp) continue;   // Opera fix (hallvord)
+
+		var otext = '';
+		var menu = obj.firstChild;
+		if (!menu) continue; // to cope with empty slides
+		while (menu && menu.nodeType == 3) {
+			menu = menu.nextSibling;
+		}
+	 	if (!menu) continue; // to cope with slides with only text nodes
+
+		var menunodes = menu.childNodes;
+		for (var o = 0; o < menunodes.length; o++) {
+			otext += nodeValue(menunodes[o]);
+		}
+		list.options[list.length] = new Option(n + ' : '  + otext, n);
+	}
+}
+
+function currentSlide() {
+	var cs;
+	if (document.getElementById) {
+		cs = document.getElementById('currentSlide');
+	} else {
+		cs = document.currentSlide;
+	}
+	cs.innerHTML = '<a id="plink" href="">' + 
+		'<span id="csHere">' + snum + '<\/span> ' + 
+		'<span id="csSep">\/<\/span> ' + 
+		'<span id="csTotal">' + (smax-1) + '<\/span>' +
+		'<\/a>'
+		;
+	if (snum == 0) {
+		cs.style.visibility = 'hidden';
+	} else {
+		cs.style.visibility = 'visible';
+	}
+}
+
+function go(step) {
+	if (document.getElementById('slideProj').disabled || step == 0) return;
+	var jl = document.getElementById('jumplist');
+	var cid = 'slide' + snum;
+	var ce = document.getElementById(cid);
+	if (incrementals[snum].length > 0) {
+		for (var i = 0; i < incrementals[snum].length; i++) {
+			removeClass(incrementals[snum][i], 'current');
+			removeClass(incrementals[snum][i], 'incremental');
+		}
+	}
+	if (step != 'j') {
+		snum += step;
+		lmax = smax - 1;
+		if (snum > lmax) snum = lmax;
+		if (snum < 0) snum = 0;
+	} else
+		snum = parseInt(jl.value);
+	var nid = 'slide' + snum;
+	var ne = document.getElementById(nid);
+	if (!ne) {
+		ne = document.getElementById('slide0');
+		snum = 0;
+	}
+	if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
+	if (incrementals[snum].length > 0 && incpos == 0) {
+		for (var i = 0; i < incrementals[snum].length; i++) {
+			if (hasClass(incrementals[snum][i], 'current'))
+				incpos = i + 1;
+			else
+				addClass(incrementals[snum][i], 'incremental');
+		}
+	}
+	if (incrementals[snum].length > 0 && incpos > 0)
+		addClass(incrementals[snum][incpos - 1], 'current');
+	if (isOp) { //hallvord
+		location.hash = nid;
+	} else {
+		ce.style.visibility = 'hidden'; 
+		ne.style.visibility = 'visible';
+	} // /hallvord
+	jl.selectedIndex = snum;
+	currentSlide();
+	loadNote();
+	permaLink();
+	number = undef;
+}
+
+function goTo(target) {
+	if (target >= smax || target == snum) return;
+	go(target - snum);
+}
+
+function subgo(step) {
+	if (step > 0) {
+		removeClass(incrementals[snum][incpos - 1],'current');
+		removeClass(incrementals[snum][incpos], 'incremental');
+		addClass(incrementals[snum][incpos],'current');
+		incpos++;
+	} else {
+		incpos--;
+		removeClass(incrementals[snum][incpos],'current');
+		addClass(incrementals[snum][incpos], 'incremental');
+		addClass(incrementals[snum][incpos - 1],'current');
+	}
+	loadNote();
+}
+
+function toggle() {
+	var slideColl = GetElementsWithClassName('*','slide');
+	var slides = document.getElementById('slideProj');
+	var outline = document.getElementById('outlineStyle');
+	if (!slides.disabled) {
+		slides.disabled = true;
+		outline.disabled = false;
+		s5mode = false;
+		fontSize('1em');
+		for (var n = 0; n < smax; n++) {
+			var slide = slideColl[n];
+			slide.style.visibility = 'visible';
+		}
+	} else {
+		slides.disabled = false;
+		outline.disabled = true;
+		s5mode = true;
+		fontScale();
+		for (var n = 0; n < smax; n++) {
+			var slide = slideColl[n];
+			slide.style.visibility = 'hidden';
+		}
+		slideColl[snum].style.visibility = 'visible';
+	}
+}
+
+function showHide(action) {
+	var obj = GetElementsWithClassName('*','hideme')[0];
+	switch (action) {
+	case 's': obj.style.visibility = 'visible'; break;
+	case 'h': obj.style.visibility = 'hidden'; break;
+	case 'k':
+		if (obj.style.visibility != 'visible') {
+			obj.style.visibility = 'visible';
+		} else {
+			obj.style.visibility = 'hidden';
+		}
+	break;
+	}
+}
+
+// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
+function keys(key) {
+	if (!key) {
+		key = event;
+		key.which = key.keyCode;
+	}
+	if (key.which == 84) {
+		toggle();
+		return;
+	}
+	if (s5mode) {
+		switch (key.which) {
+			case 10: // return
+			case 13: // enter
+				if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+				if (key.target && isParentOrSelf(key.target, 'controls')) return;
+				if(number != undef) {
+					goTo(number);
+					break;
+				}
+			case 32: // spacebar
+			case 34: // page down
+			case 39: // rightkey
+			case 40: // downkey
+				if(number != undef) {
+					go(number);
+				} else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+					go(1);
+				} else {
+					subgo(1);
+				}
+				break;
+			case 33: // page up
+			case 37: // leftkey
+			case 38: // upkey
+				if(number != undef) {
+					go(-1 * number);
+				} else if (!incrementals[snum] || incpos <= 0) {
+					go(-1);
+				} else {
+					subgo(-1);
+				}
+				break;
+			case 36: // home
+				goTo(0);
+				break;
+			case 35: // end
+				goTo(smax-1);
+				break;
+			case 67: // c
+				showHide('k');
+				break;
+			case 78: // n
+				createNotesWindow();
+				break;
+		}
+		if (key.which < 48 || key.which > 57) {
+			number = undef;
+		} else {
+			if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+			if (key.target && isParentOrSelf(key.target, 'controls')) return;
+			number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
+		}
+	}
+	return false;
+}
+
+function clicker(e) {
+	number = undef;
+	var target;
+	if (window.event) {
+		target = window.event.srcElement;
+		e = window.event;
+	} else target = e.target;
+	if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
+	if (!e.which || e.which == 1) {
+		if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+			go(1);
+		} else {
+			subgo(1);
+		}
+	}
+}
+
+function findSlide(hash) {
+	var target = null;
+	var slides = GetElementsWithClassName('*','slide');
+	for (var i = 0; i < slides.length; i++) {
+		var targetSlide = slides[i];
+		if ( (targetSlide.name && targetSlide.name == hash)
+		 || (targetSlide.id && targetSlide.id == hash) ) {
+			target = targetSlide;
+			break;
+		}
+	}
+	while(target != null && target.nodeName != 'BODY') {
+		if (hasClass(target, 'slide')) {
+			return parseInt(target.id.slice(5));
+		}
+		target = target.parentNode;
+	}
+	return null;
+}
+
+function slideJump() {
+	if (window.location.hash == null) return;
+	var sregex = /^#slide(\d+)$/;
+	var matches = sregex.exec(window.location.hash);
+	var dest = null;
+	if (matches != null) {
+		dest = parseInt(matches[1]);
+	} else {
+		dest = findSlide(window.location.hash.slice(1));
+	}
+	if (dest != null)
+		go(dest - snum);
+}
+
+function fixLinks() {
+	var thisUri = window.location.href;
+	thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
+	var aelements = document.getElementsByTagName('A');
+	for (var i = 0; i < aelements.length; i++) {
+		var a = aelements[i].href;
+		var slideID = a.match('\#slide[0-9]{1,2}');
+		if ((slideID) && (slideID[0].slice(0,1) == '#')) {
+			var dest = findSlide(slideID[0].slice(1));
+			if (dest != null) {
+				if (aelements[i].addEventListener) {
+					aelements[i].addEventListener("click", new Function("e",
+						"if (document.getElementById('slideProj').disabled) return;" +
+						"go("+dest+" - snum); " +
+						"if (e.preventDefault) e.preventDefault();"), true);
+				} else if (aelements[i].attachEvent) {
+					aelements[i].attachEvent("onclick", new Function("",
+						"if (document.getElementById('slideProj').disabled) return;" +
+						"go("+dest+" - snum); " +
+						"event.returnValue = false;"));
+				}
+			}
+		}
+	}
+}
+
+function externalLinks() {
+	if (!document.getElementsByTagName) return;
+	var anchors = document.getElementsByTagName('a');
+	for (var i=0; i<anchors.length; i++) {
+		var anchor = anchors[i];
+		if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
+			anchor.target = '_blank';
+			addClass(anchor,'external');
+		}
+	}
+}
+
+function permaLink() {
+	document.getElementById('plink').href = window.location.pathname + '#slide' + snum;
+}
+
+function createControls() {
+	var controlsDiv = document.getElementById("controls");
+	if (!controlsDiv) return;
+	var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
+	var hideDiv, hideList = '';
+	if (controlVis == 'hidden') {
+		hideDiv = hider;
+	} else {
+		hideList = hider;
+	}
+	controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
+	'<div id="navLinks">' +
+	'<a accesskey="n" id="show-notes" href="javascript:createNotesWindow();" title="Show Notes">≡<\/a>' +
+	'<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' +
+	'<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' +
+	'<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' +
+	'<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
+	'<\/div><\/form>';
+	if (controlVis == 'hidden') {
+		var hidden = document.getElementById('navLinks');
+	} else {
+		var hidden = document.getElementById('jumplist');
+	}
+	addClass(hidden,'hideme');
+}
+
+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
+	if (!s5mode) return false;
+	var vScale = 48;  // both yield 16 (the usual browser default) at 1024x768
+	var hScale = 64;  // perhaps should auto-calculate based on theme's declared value?
+	if (window.innerHeight) {
+		var vSize = window.innerHeight;
+		var hSize = window.innerWidth;
+	} else if (document.documentElement.clientHeight) {
+		var vSize = document.documentElement.clientHeight;
+		var hSize = document.documentElement.clientWidth;
+	} else if (document.body.clientHeight) {
+		var vSize = document.body.clientHeight;
+		var hSize = document.body.clientWidth;
+	} else {
+		var vSize = 700;  // assuming 1024x768, minus chrome and such
+		var hSize = 1024; // these do not account for kiosk mode or Opera Show
+	}
+	var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
+	fontSize(newSize + 'px');
+	if (isGe) {  // hack to counter incremental reflow bugs
+		var obj = document.getElementsByTagName('body')[0];
+		obj.style.display = 'none';
+		obj.style.display = 'block';
+	}
+}
+
+function fontSize(value) {
+	if (!(s5ss = document.getElementById('s5ss'))) {
+		if (!document.createStyleSheet) {
+			document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
+			s5ss.setAttribute('media','screen, projection');
+			s5ss.setAttribute('id','s5ss');
+		} else {
+			document.createStyleSheet();
+			document.s5ss = document.styleSheets[document.styleSheets.length - 1];
+		}
+	}
+	if (!(document.s5ss && document.s5ss.addRule)) {
+		while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
+		s5ss.appendChild(document.createTextNode('html {font-size: ' + value + ' !important;}'));
+	} else {
+		document.s5ss.addRule('html','font-size: ' + value + ' !important;');
+	}
+}
+
+function notOperaFix() {
+	slideCSS = document.getElementById('slideProj').href;
+	var slides = document.getElementById('slideProj');
+	var outline = document.getElementById('outlineStyle');
+	slides.setAttribute('media','screen');
+	outline.disabled = true;
+	if (isGe) {
+		slides.setAttribute('href','null');   // Gecko fix
+		slides.setAttribute('href',slideCSS); // Gecko fix
+	}
+	if (isIE && document.styleSheets && document.styleSheets[0]) {
+		document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
+		document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
+		document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
+	}
+}
+
+function getIncrementals(obj) {
+	var incrementals = new Array();
+	if (!obj) 
+		return incrementals;
+	var children = obj.childNodes;
+	for (var i = 0; i < children.length; i++) {
+		var child = children[i];
+		if (hasClass(child, 'incremental')) {
+			if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+				removeClass(child, 'incremental');
+				for (var j = 0; j < child.childNodes.length; j++) {
+					if (child.childNodes[j].nodeType == 1) {
+						addClass(child.childNodes[j], 'incremental');
+					}
+				}
+			} else {
+				incrementals[incrementals.length] = child;
+				removeClass(child,'incremental');
+			}
+		}
+		if (hasClass(child, 'show-first')) {
+			if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+				removeClass(child, 'show-first');
+				if (child.childNodes[isGe].nodeType == 1) {
+					removeClass(child.childNodes[isGe], 'incremental');
+				}
+			} else {
+				incrementals[incrementals.length] = child;
+			}
+		}
+		incrementals = incrementals.concat(getIncrementals(child));
+	}
+	return incrementals;
+}
+
+function createIncrementals() {
+	var incrementals = new Array();
+	for (var i = 0; i < smax; i++) {
+		incrementals[i] = getIncrementals(document.getElementById('slide'+i));
+	}
+	return incrementals;
+}
+
+function defaultCheck() {
+	var allMetas = document.getElementsByTagName('meta');
+	for (var i = 0; i< allMetas.length; i++) {
+		if (allMetas[i].name == 'defaultView') {
+			defaultView = allMetas[i].content;
+		}
+		if (allMetas[i].name == 'controlVis') {
+			controlVis = allMetas[i].content;
+		}
+	}
+}
+
+// Key trap fix, new function body for trap()
+function trap(e) {
+	if (!e) {
+		e = event;
+		e.which = e.keyCode;
+	}
+	try {
+		modifierKey = e.ctrlKey || e.altKey || e.metaKey;
+	}
+	catch(e) {
+		modifierKey = false;
+	}
+	return modifierKey || e.which == 0;
+}
+
+function noteLabel() { // Gives notes id's to match parent slides
+	var notes = GetElementsWithClassName('div','notes');
+	for (var i = 0; i < notes.length; i++) {
+		var note = notes[i];
+		var id = 'note' + note.parentNode.id.substring(5);
+		note.setAttribute('id',id);
+	}
+	resetElapsedSlide();
+	resetRemainingTime();
+	window.setInterval('updateElaspedTime()', 1000);
+}
+
+function createNotesWindow() { // creates a window for our notes
+	if (!s5NotesWindow || s5NotesWindow.closed) { // Create the window if it doesn't exist
+		s5NotesWindowLoaded = false;
+		// Note: Safari has a tendency to ignore window options preferring to default to the settings of the parent window, grr.
+		s5NotesWindow = window.open('ui/s5-notes.html', 's5NotesWindow', 'top=0,left=0');
+	}
+	if (s5NotesWindowLoaded) { // Load the current note if the Note HTML has loaded
+		loadNote();
+	} else { // Keep trying...
+		window.setTimeout('createNotesWindow()', 50);
+	}
+}
+
+function loadNote() {
+// Loads a note into the note window
+	var notes = nextNotes = '<em class="disclaimer">There are no notes for this slide.</em>';
+	if (document.getElementById('note' + snum)) {
+		notes = document.getElementById('note' + snum).innerHTML;
+	}
+	if (document.getElementById('note' + (snum + 1))) {
+		nextNotes = document.getElementById('note' + (snum + 1)).innerHTML;
+	}
+	
+	var jl = document.getElementById('jumplist');
+	var slideTitle = jl.options[jl.selectedIndex].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex) ? ' (' + jl.selectedIndex + '/' + (smax - 1) + ')' : '');
+	if (incrementals[snum].length > 0) {
+//		alert('howdy');
+		slideTitle += ' <small>[' + incpos + '/' + incrementals[snum].length + ']</small>';
+	}
+	if (jl.selectedIndex < smax - 1) {
+		var nextTitle = jl.options[jl.selectedIndex + 1].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex + 1) ? ' (' + (jl.selectedIndex + 1) + '/' + (smax - 1) + ')' : '');
+	} else {
+		var nextTitle = '[end of slide show]';
+	}
+	
+	if (s5NotesWindow && !s5NotesWindow.closed && s5NotesWindow.document) {
+		s5NotesWindow.document.getElementById('slide').innerHTML = slideTitle;
+		s5NotesWindow.document.getElementById('notes').innerHTML = notes;
+		s5NotesWindow.document.getElementById('next').innerHTML = nextTitle;
+		s5NotesWindow.document.getElementById('nextnotes').innerHTML = nextNotes;
+	}
+	resetElapsedSlide();
+}
+
+function minimizeTimer(id) {
+	var obj = s5NotesWindow.document.getElementById(id);
+	if (hasClass(obj,'collapsed')) {
+		removeClass(obj,'collapsed');
+	} else {
+		addClass(obj,'collapsed');
+	}
+}
+
+function resetElapsedTime() {
+	presentationStart = new Date();
+	slideStart = new Date();
+	updateElaspedTime();
+}
+
+function resetElapsedSlide() {
+	if (snum != previousSlide) {
+		slideStart = new Date();
+		previousSlide = snum;
+		updateElaspedTime();
+	}
+}
+
+function updateElaspedTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var now = new Date();
+	var ep = s5NotesWindow.document.getElementById('elapsed-presentation');
+	var es = s5NotesWindow.document.getElementById('elapsed-slide');
+	ep.innerHTML = formatTime(now.valueOf() - presentationStart.valueOf());
+	es.innerHTML = formatTime(now.valueOf() - slideStart.valueOf());
+}
+
+function resetRemainingTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var startField = s5NotesWindow.document.getElementById('startFrom');
+	startFrom = readTime(startField.value);
+	countdown.remaining = startFrom * 60000;  // convert to msecs
+	countdown.start = new Date().valueOf();
+	countdown.end = countdown.start + countdown.remaining;
+	var tl = s5NotesWindow.document.getElementById('timeLeft');
+	var timeLeft = formatTime(countdown.remaining);
+	tl.innerHTML = timeLeft;
+}
+
+function updateRemainingTime() {
+	if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+	var tl = s5NotesWindow.document.getElementById('timeLeft');
+	var now = new Date();
+	if (countdown.state == 'run') {
+		countdown.remaining = countdown.end - now;
+	}
+	tl.style.color = '';
+	tl.style.backgroundColor = '';
+	if (countdown.remaining >= 0) {
+		var timeLeft = formatTime(countdown.remaining);
+		removeClass(tl,'overtime');
+		if (countdown.remaining < 300000) {
+			tl.style.color = 'rgb(' + (255-Math.round(countdown.remaining/2000)) + ',0,0)';
+			tl.style.backgroundColor = 'rgb(255,255,' + (Math.round(countdown.remaining/2000)) + ')';
+		}
+	} else {
+		var timeLeft = '-' + formatTime(-countdown.remaining);
+		addClass(tl,'overtime');
+	}
+	tl.innerHTML = timeLeft;
+}
+
+function toggleRemainingTime() {
+	if (countdown.state == 'pause') countdown.state = 'run'; else countdown.state = 'pause';
+	if (countdown.state == 'pause') {
+		window.clearInterval(countdown.timer);
+	}
+	if (countdown.state == 'run') {
+		countdown.start = new Date().valueOf();
+		countdown.end = countdown.start + countdown.remaining;
+		countdown.timer = window.setInterval('updateRemainingTime()', 1000);
+	}
+}
+
+function alterRemainingTime(amt) {
+	var change = amt * 60000;  // convert to msecs
+	countdown.end += change;
+	countdown.remaining += change;
+	updateRemainingTime();
+}
+
+function formatTime(msecs)  {
+	var time = new Date(msecs);
+	
+	var hrs = time.getUTCHours() + ((time.getUTCDate() -1) * 24); // I doubt anyone will spend more than 24 hours on a presentation or single slide but just in case...
+	hrs = (hrs < 10) ? '0'+hrs : hrs;
+	if (hrs == 'NaN' || isNaN(hrs)) hrs = '--';
+	
+	var min = time.getUTCMinutes();
+	min = (min < 10) ? '0'+min : min;
+	if (min == 'NaN' || isNaN(min)) min = '--';
+	
+	var sec = time.getUTCSeconds();
+	sec = (sec < 10) ? '0'+sec : sec;
+	if (sec == 'NaN' || isNaN(sec)) sec = '--';
+
+	return hrs + ':' + min + ':' + sec;
+}
+
+function readTime(val) {
+	var sregex = /:/;
+	var matches = sregex.exec(val);
+	if (matches == null) {
+		return val;
+	} else {
+		var times = val.split(':');
+		var hours = parseInt(times[0]);
+		var mins = parseInt(times[1]);
+		var total = (hours * 60) + mins;
+		return total;
+	}
+}
+
+function windowChange() {
+	fontScale();
+}
+
+function startup() {
+	defaultCheck();
+	createControls();  // hallvord
+	slideLabel();
+	incrementals = createIncrementals();
+	noteLabel(); // [SI:060104] must follow slideLabel()
+	loadNote();
+	fixLinks();
+	externalLinks();
+	fontScale();
+	if (!isOp) notOperaFix();
+	slideJump();
+	if (defaultView == 'outline') {
+		toggle();
+	}
+	document.onkeyup = keys;
+	document.onkeypress = trap;
+	document.onclick = clicker;
+}
+
+window.onload = startup;
+window.onresize = function(){setTimeout('windowChange()',5);}
\ No newline at end of file
diff --git a/ui/i18n/framing.css b/ui/i18n/framing.css
new file mode 100644
--- /dev/null
+++ b/ui/i18n/framing.css
@@ -0,0 +1,23 @@
+/* The following styles size and place the slide components.
+   Edit them if you want to change the overall slide layout.
+   The commented lines can be uncommented (and modified, if necessary) 
+    to help you with the rearrangement process. */
+
+div#header, div#footer, div.slide {width: 100%; top: 0; left: 0;}
+div#header {top: 0; left: 0; z-index: 1;}
+div#footer {top: auto; bottom: 0; width: 100%; z-index: 5;}
+div.slide {top: 0; width: 88%; padding: 1em 7% 2em 5%; z-index: 2;}
+
+#footer div#controls {bottom: 1.5em; left: 0; width: 100%; text-align: center; z-index: 1;}
+div#controls form {margin: 0; padding: 0;}
+
+#currentSlide {position: absolute; left: 0; bottom: 0.5em; z-index: 10;
+  width: 100%; text-align: center;}
+html>body #currentSlide {position: fixed;}
+
+/*
+div#header {background: #FCC;}
+div#footer {background: #CCF;}
+div#controls {background: #BBD;}
+div#currentSlide {background: #FFC;}
+*/
diff --git a/ui/i18n/pretty.css b/ui/i18n/pretty.css
new file mode 100644
--- /dev/null
+++ b/ui/i18n/pretty.css
@@ -0,0 +1,38 @@
+/* Following are the presentation styles -- edit away!
+   Note that the 'body' font size may have to be changed if the resolution is
+    different than expected. */
+
+body {background: #95A7D4 url(http://cs.unm.edu/~eschulte/notes/s5/ui/i18n/bg-slide.jpg) 100% 100% no-repeat; color: #210; font: 29px Arial, sans-serif;}
+a {text-decoration: none; color: #336; border-bottom: 1px dotted;}
+h1, h2, h3, h4, h5, h6 {font-size: 1em; margin: 0;}
+sup {font-size: 0.75em; font-weight: normal;
+  vertical-align: 0.5em; line-height: 1px;}
+ul {margin-left: 1em; padding-left: 0;}
+li {margin-bottom: 0.66em;}
+li li {margin: 0.33em 0; font-size: smaller;}
+
+#header {background: url(http://cs.unm.edu/~eschulte/notes/s5/ui/i18n/bg-shade.png); border-bottom: 1px solid #333;
+  padding-bottom: 2em;}
+#footer {background: url(http://cs.unm.edu/~eschulte/notes/s5/ui/i18n/bg-shade.png); color: #BBB; border-top: 1px solid #333;}
+#header, #footer {font-size: 0.5em;}
+#footer h1, #footer h2 { padding: 0.5em 0.75em;
+  font-weight: normal; font-style: italic;}
+#footer h1 {left: 0; font-size: 1em; letter-spacing: 1px;}
+#footer h2 {position: absolute; bottom: 0; right: 0;}
+
+#controls a {display: none;}
+#controls select {visibility: hidden;}
+#controls div:hover select {visibility: visible;}
+
+#currentSlide {font-size: 0.5em;}
+#currentSlide span {font-size: 13px; color: rgb(49%,47%,66%);}
+#currentSlide #csSep {display: none;}
+#currentSlide #csHere {font-weight: bold;}
+#currentSlide #csHere:before {content: "#"; font-weight: normal;}
+#currentSlide #csTotal:before {content: " of ";}
+
+.slide h1 {font-size: 1.66em; line-height: 1; letter-spacing: -1px;
+  margin: 0 -15% 1em 0; padding: 0.25em 15% 0.06125em 0; border-bottom: 0.06125em solid rgb(90,94,120);}
+#slide0 h1 {border: none; font-size: 2.25em; letter-spacing: 0; margin: 3em 0 1.5em;}
+#slide0 h3 {margin-bottom: 0;}
+#slide0 h4 {margin-top: 0; font-size: smaller;}
diff --git a/ui/i18n/s5-core.css b/ui/i18n/s5-core.css
new file mode 100644
--- /dev/null
+++ b/ui/i18n/s5-core.css
@@ -0,0 +1,9 @@
+/* Do not edit or override these styles! The system will likely break if you do. */
+
+div#header, div#footer, div.slide {position: absolute;}
+html>body div#header, html>body div#footer, html>body div.slide {position: fixed;}
+div.slide {visibility: hidden;}
+#slide0 {visibility: visible;}
+div#controls {position: absolute;}
+#footer>div#controls {position: fixed;}
+.handout {display: none;}
diff --git a/ui/i18n/slides.css b/ui/i18n/slides.css
new file mode 100644
--- /dev/null
+++ b/ui/i18n/slides.css
@@ -0,0 +1,3 @@
+@import url(s5-core.css); /* required to make the slide show run at all */
+@import url(framing.css); /* sets basic placement and size of slide components */
+@import url(pretty.css);  /* stuff that makes the slides look better than blah */
\ No newline at end of file
diff --git a/ui/railscast/framing.css b/ui/railscast/framing.css
new file mode 100644
--- /dev/null
+++ b/ui/railscast/framing.css
@@ -0,0 +1,23 @@
+/* The following styles size and place the slide components.
+   Edit them if you want to change the overall slide layout.
+   The commented lines can be uncommented (and modified, if necessary) 
+    to help you with the rearrangement process. */
+
+div#header, div#footer, div.slide {width: 100%; top: 0; left: 0;}
+div#header {top: 0; left: 0; z-index: 1;}
+div#footer {top: auto; bottom: 0; width: 100%; z-index: 5;}
+div.slide {top: 0; width: 88%; padding: 1em 7% 2em 5%; z-index: 2;}
+
+#footer div#controls {bottom: 1.5em; left: 0; width: 100%; text-align: center; z-index: 1;}
+div#controls form {margin: 0; padding: 0;}
+
+#currentSlide {position: absolute; left: 0; bottom: 0.5em; z-index: 10;
+  width: 100%; text-align: center;}
+html>body #currentSlide {position: fixed;}
+
+/*
+div#header {background: #FCC;}
+div#footer {background: #CCF;}
+div#controls {background: #BBD;}
+div#currentSlide {background: #FFC;}
+*/
diff --git a/ui/railscast/pretty.css b/ui/railscast/pretty.css
new file mode 100644
--- /dev/null
+++ b/ui/railscast/pretty.css
@@ -0,0 +1,124 @@
+/* Following are the presentation styles -- edit away!
+   Note that the 'body' font size may have to be changed if the resolution is
+   different than expected. */
+
+body {
+    background: #232323 100% 100% no-repeat;
+    color: #E6E1DC;
+    font: 29px Arial, sans-serif;
+}
+a {
+    text-decoration: none;
+    color: #A9F5F2;
+    border-bottom: 1px dotted;
+}
+h1, h2, h3, h4, h5, h6 {
+    font-size: 1em;
+    margin: 0;
+}
+code {
+    color: #A4A4A4;
+}
+b {
+    color: white;
+}
+sup {
+    font-size: 0.75em;
+    font-weight: normal;
+    vertical-align: 0.5em;
+    line-height: 1px;
+}
+ul {
+    margin-left: 1em;
+    padding-left: 0;
+}
+li {
+    margin-bottom: 0.66em;
+}
+li li {
+    margin: 0.33em 0;
+    font-size: smaller;
+}
+
+#header {
+}
+#footer {
+    background: url(http://cs.unm.edu/~eschulte/notes/s5/ui/railscast/bg-shade.png);
+    color: #BBB;
+    border-top: 1px solid #333;
+}
+#header, #footer {
+    font-size: 0.5em;
+}
+#footer h1, #footer h2 {
+    padding: 0.5em 0.75em;
+    font-weight: normal;
+    font-style: italic;
+}
+#footer h1 {
+    left: 0;
+    font-size: 1em;
+    letter-spacing: 1px;
+}
+#footer h2 {
+    position: absolute;
+    bottom: 0;
+    right: 0;
+}
+
+#controls a {
+    display: none;
+}
+#controls select {
+    visibility: hidden;
+}
+#controls div:hover select {
+    visibility: visible;
+}
+
+#currentSlide {
+    font-size: 0.5em;
+}
+#currentSlide span {
+    font-size: 13px;
+    color: rgb(49%,47%,66%);
+}
+#currentSlide #csSep {
+    display: none;
+}
+#currentSlide #csHere {
+    font-weight: bold;
+}
+#currentSlide #csHere:before {
+    content: "#";
+    font-weight: normal;
+}
+#currentSlide #csTotal:before {
+    content: " of ";
+}
+
+.slide h1 {
+    font-size: 1.66em;
+    line-height: 1;
+    letter-spacing: -1px;
+    margin: 0 -15% 1em 0;
+    padding: 0 15% 0.06125em 0;
+    border-bottom: 0.06125em solid rgb(90,94,120);
+}
+#slide0 h1 {
+    border: none;
+    font-size: 2.25em;
+    letter-spacing: 0;
+    margin: 0 0 1em;
+}
+#slide0 h3 {
+    margin-bottom: 0;
+}
+#slide0 h4 {
+    margin-top: 0;
+    font-size: smaller;
+}
+#slide0 a {
+    color: #E6E1DC;
+    border-bottom: none;
+}
\ No newline at end of file
diff --git a/ui/railscast/s5-core.css b/ui/railscast/s5-core.css
new file mode 100644
--- /dev/null
+++ b/ui/railscast/s5-core.css
@@ -0,0 +1,9 @@
+/* Do not edit or override these styles! The system will likely break if you do. */
+
+div#header, div#footer, div.slide {position: absolute;}
+html>body div#header, html>body div#footer, html>body div.slide {position: fixed;}
+div.slide {visibility: hidden;}
+#slide0 {visibility: visible;}
+div#controls {position: absolute;}
+#footer>div#controls {position: fixed;}
+.handout {display: none;}
diff --git a/ui/railscast/slides.css b/ui/railscast/slides.css
new file mode 100644
--- /dev/null
+++ b/ui/railscast/slides.css
@@ -0,0 +1,3 @@
+@import url(s5-core.css); /* required to make the slide show run at all */
+@import url(framing.css); /* sets basic placement and size of slide components */
+@import url(pretty.css);  /* stuff that makes the slides look better than blah */
\ No newline at end of file