Commits

Aron Ahmadia committed 87c7d2e

basic check-in

  • Participants

Comments (0)

Files changed (56)

+I found this theme on:
+
+http://hackmap.blogspot.com/2009/10/rst2s5-with-syntax-highlighting.html
+
+The code examples here were downloaded under the MIT license:
+
+http://bpgeo.googlecode.com/
+
+Please attribute bpederse for getting pygments working with rst2s5
+NAME=index
+python rst-directive.py \
+    --stylesheet=pygments.css \
+    --theme-url=ui/small-black \
+    ${NAME}.rst > ${NAME}.html
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.8.1: http://docutils.sourceforge.net/" />
+<meta name="version" content="S5 1.1" />
+<title>Getting Started with Shaheen</title>
+<style type="text/css">
+
+.highlight .hll { background-color: #333333 }
+.highlight  { background: #111111; color: #ffffff }
+.highlight .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */
+.highlight .err { color: #ffffff } /* Error */
+.highlight .g { color: #ffffff } /* Generic */
+.highlight .k { color: #fb660a; font-weight: bold } /* Keyword */
+.highlight .l { color: #ffffff } /* Literal */
+.highlight .n { color: #ffffff } /* Name */
+.highlight .o { color: #ffffff } /* Operator */
+.highlight .x { color: #ffffff } /* Other */
+.highlight .p { color: #ffffff } /* Punctuation */
+.highlight .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */
+.highlight .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */
+.highlight .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */
+.highlight .gd { color: #ffffff } /* Generic.Deleted */
+.highlight .ge { color: #ffffff } /* Generic.Emph */
+.highlight .gr { color: #ffffff } /* Generic.Error */
+.highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #ffffff } /* Generic.Inserted */
+.highlight .go { color: #444444; background-color: #222222 } /* Generic.Output */
+.highlight .gp { color: #ffffff } /* Generic.Prompt */
+.highlight .gs { color: #ffffff } /* Generic.Strong */
+.highlight .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #ffffff } /* Generic.Traceback */
+.highlight .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #fb660a } /* Keyword.Pseudo */
+.highlight .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #ffffff } /* Literal.Date */
+.highlight .m { color: #0086f7; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #0086d2 } /* Literal.String */
+.highlight .na { color: #ff0086; font-weight: bold } /* Name.Attribute */
+.highlight .nb { color: #ffffff } /* Name.Builtin */
+.highlight .nc { color: #ffffff } /* Name.Class */
+.highlight .no { color: #0086d2 } /* Name.Constant */
+.highlight .nd { color: #ffffff } /* Name.Decorator */
+.highlight .ni { color: #ffffff } /* Name.Entity */
+.highlight .ne { color: #ffffff } /* Name.Exception */
+.highlight .nf { color: #ff0086; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #ffffff } /* Name.Label */
+.highlight .nn { color: #ffffff } /* Name.Namespace */
+.highlight .nx { color: #ffffff } /* Name.Other */
+.highlight .py { color: #ffffff } /* Name.Property */
+.highlight .nt { color: #fb660a; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #fb660a } /* Name.Variable */
+.highlight .ow { color: #ffffff } /* Operator.Word */
+.highlight .w { color: #888888 } /* Text.Whitespace */
+.highlight .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sb { color: #0086d2 } /* Literal.String.Backtick */
+.highlight .sc { color: #0086d2 } /* Literal.String.Char */
+.highlight .sd { color: #0086d2 } /* Literal.String.Doc */
+.highlight .s2 { color: #0086d2 } /* Literal.String.Double */
+.highlight .se { color: #0086d2 } /* Literal.String.Escape */
+.highlight .sh { color: #0086d2 } /* Literal.String.Heredoc */
+.highlight .si { color: #0086d2 } /* Literal.String.Interpol */
+.highlight .sx { color: #0086d2 } /* Literal.String.Other */
+.highlight .sr { color: #0086d2 } /* Literal.String.Regex */
+.highlight .s1 { color: #0086d2 } /* Literal.String.Single */
+.highlight .ss { color: #0086d2 } /* Literal.String.Symbol */
+.highlight .bp { color: #ffffff } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #fb660a } /* Name.Variable.Class */
+.highlight .vg { color: #fb660a } /* Name.Variable.Global */
+.highlight .vi { color: #fb660a } /* Name.Variable.Instance */
+.highlight .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */
+
+</style>
+<!-- configuration parameters -->
+<meta name="defaultView" content="slideshow" />
+<meta name="controlVis" content="hidden" />
+<!-- style sheet links -->
+<script src="ui/small-black/slides.js" type="text/javascript"></script>
+<link rel="stylesheet" href="ui/small-black/slides.css"
+      type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/small-black/outline.css"
+      type="text/css" media="screen" id="outlineStyle" />
+<link rel="stylesheet" href="ui/small-black/print.css"
+      type="text/css" media="print" id="slidePrint" />
+<link rel="stylesheet" href="ui/small-black/opera.css"
+      type="text/css" media="projection" id="operaFix" />
+
+<style type="text/css">
+#currentSlide {display: none;}
+</style>
+</head>
+<body>
+<div class="layout">
+<div id="controls"></div>
+<div id="currentSlide"></div>
+<div id="header">
+
+</div>
+<div id="footer">
+<h1>Getting Started with Shaheen</h1>
+<h2><a class="reference external" href="http://bpgeo.googlecode.com/">http://bpgeo.googlecode.com/</a></h2>
+</div>
+</div>
+<div class="presentation">
+<div class="slide" id="slide0">
+<h1 class="title">Getting Started with Shaheen</h1>
+
+
+</div>
+<div class="slide" id="what-is-shaheen">
+<h1>What is Shaheen</h1>
+<p>Intro or something.</p>
+</div>
+<div class="slide" id="logging-on">
+<h1>Logging on</h1>
+<div class="highlight"><pre>ssh username@shaheen.hpc.kaust.edu.sa
+</pre></div>
+</div>
+<div class="slide" id="example-code-bash">
+<h1>Example Code (bash)</h1>
+<div class="highlight"><pre><span class="nv">NAME</span><span class="o">=</span>index
+python rst-directive.py <span class="se">\</span>
+    --stylesheet<span class="o">=</span>pygments.css <span class="se">\</span>
+    --theme-url<span class="o">=</span>ui/small-black <span class="se">\</span>
+    <span class="k">${</span><span class="nv">NAME</span><span class="k">}</span>.rst &gt; <span class="k">${</span><span class="nv">NAME</span><span class="k">}</span>.html
+</pre></div>
+</div>
+<div class="slide" id="credits">
+<h1>Credits</h1>
+<p><a class="reference external" href="http://bpgeo.googlecode.com/">http://bpgeo.googlecode.com/</a></p>
+</div>
+</div>
+</body>
+</html>
+Getting Started with Shaheen
+================================================
+
+
+What is Shaheen
+----------------------------
+
+Intro or something.
+
+
+Logging on
+---------------------
+
+.. sourcecode:: bash
+
+   ssh username@shaheen.hpc.kaust.edu.sa
+
+
+Example Code (bash) 
+-------------------
+ 
+.. sourcecode:: bash
+
+    NAME=index
+    python rst-directive.py \
+        --stylesheet=pygments.css \
+        --theme-url=ui/small-black \
+        ${NAME}.rst > ${NAME}.html
+
+Credits
+------------
+http://bpgeo.googlecode.com/
+
+.. footer:: http://bpgeo.googlecode.com/
+
+.highlight .hll { background-color: #333333 }
+.highlight  { background: #111111; color: #ffffff }
+.highlight .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */
+.highlight .err { color: #ffffff } /* Error */
+.highlight .g { color: #ffffff } /* Generic */
+.highlight .k { color: #fb660a; font-weight: bold } /* Keyword */
+.highlight .l { color: #ffffff } /* Literal */
+.highlight .n { color: #ffffff } /* Name */
+.highlight .o { color: #ffffff } /* Operator */
+.highlight .x { color: #ffffff } /* Other */
+.highlight .p { color: #ffffff } /* Punctuation */
+.highlight .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */
+.highlight .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */
+.highlight .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */
+.highlight .gd { color: #ffffff } /* Generic.Deleted */
+.highlight .ge { color: #ffffff } /* Generic.Emph */
+.highlight .gr { color: #ffffff } /* Generic.Error */
+.highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #ffffff } /* Generic.Inserted */
+.highlight .go { color: #444444; background-color: #222222 } /* Generic.Output */
+.highlight .gp { color: #ffffff } /* Generic.Prompt */
+.highlight .gs { color: #ffffff } /* Generic.Strong */
+.highlight .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #ffffff } /* Generic.Traceback */
+.highlight .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #fb660a } /* Keyword.Pseudo */
+.highlight .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #ffffff } /* Literal.Date */
+.highlight .m { color: #0086f7; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #0086d2 } /* Literal.String */
+.highlight .na { color: #ff0086; font-weight: bold } /* Name.Attribute */
+.highlight .nb { color: #ffffff } /* Name.Builtin */
+.highlight .nc { color: #ffffff } /* Name.Class */
+.highlight .no { color: #0086d2 } /* Name.Constant */
+.highlight .nd { color: #ffffff } /* Name.Decorator */
+.highlight .ni { color: #ffffff } /* Name.Entity */
+.highlight .ne { color: #ffffff } /* Name.Exception */
+.highlight .nf { color: #ff0086; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #ffffff } /* Name.Label */
+.highlight .nn { color: #ffffff } /* Name.Namespace */
+.highlight .nx { color: #ffffff } /* Name.Other */
+.highlight .py { color: #ffffff } /* Name.Property */
+.highlight .nt { color: #fb660a; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #fb660a } /* Name.Variable */
+.highlight .ow { color: #ffffff } /* Operator.Word */
+.highlight .w { color: #888888 } /* Text.Whitespace */
+.highlight .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sb { color: #0086d2 } /* Literal.String.Backtick */
+.highlight .sc { color: #0086d2 } /* Literal.String.Char */
+.highlight .sd { color: #0086d2 } /* Literal.String.Doc */
+.highlight .s2 { color: #0086d2 } /* Literal.String.Double */
+.highlight .se { color: #0086d2 } /* Literal.String.Escape */
+.highlight .sh { color: #0086d2 } /* Literal.String.Heredoc */
+.highlight .si { color: #0086d2 } /* Literal.String.Interpol */
+.highlight .sx { color: #0086d2 } /* Literal.String.Other */
+.highlight .sr { color: #0086d2 } /* Literal.String.Regex */
+.highlight .s1 { color: #0086d2 } /* Literal.String.Single */
+.highlight .ss { color: #0086d2 } /* Literal.String.Symbol */
+.highlight .bp { color: #ffffff } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #fb660a } /* Name.Variable.Class */
+.highlight .vg { color: #fb660a } /* Name.Variable.Global */
+.highlight .vi { color: #fb660a } /* Name.Variable.Instance */
+.highlight .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */
+# -*- coding: utf-8 -*-
+"""
+    The Pygments reStructuredText directive
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    This fragment is a Docutils_ 0.5 directive that renders source code
+    (to HTML only, currently) via Pygments.
+
+    To use it, adjust the options below and copy the code into a module
+    that you import on initialization.  The code then automatically
+    registers a ``sourcecode`` directive that you can use instead of
+    normal code blocks like this::
+
+        .. sourcecode:: python
+
+            My code goes here.
+
+    If you want to have different code styles, e.g. one with line numbers
+    and one without, add formatters with their names in the VARIANTS dict
+    below.  You can invoke them instead of the DEFAULT one by using a
+    directive option::
+
+        .. sourcecode:: python
+            :linenos:
+
+            My code goes here.
+
+    Look at the `directive documentation`_ to get all the gory details.
+
+    .. _Docutils: http://docutils.sf.net/
+    .. _directive documentation:
+       http://docutils.sourceforge.net/docs/howto/rst-directives.html
+
+    :copyright: Copyright 2006-2009 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+# Options
+# ~~~~~~~
+
+# Set to True if you want inline CSS styles instead of classes
+INLINESTYLES = False
+STYLE = "fruity"
+
+from pygments.formatters import HtmlFormatter
+
+# The default formatter
+DEFAULT = HtmlFormatter(noclasses=INLINESTYLES, style=STYLE)
+
+# Add name -> formatter pairs for every variant you want to use
+VARIANTS = {
+    # 'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
+}
+
+
+from docutils import nodes
+from docutils.parsers.rst import directives, Directive
+
+from pygments import highlight
+from pygments.lexers import get_lexer_by_name, TextLexer
+
+class Pygments(Directive):
+    """ Source code syntax hightlighting.
+    """
+    required_arguments = 1
+    optional_arguments = 0
+    final_argument_whitespace = True
+    option_spec = dict([(key, directives.flag) for key in VARIANTS])
+    has_content = True
+
+    def run(self):
+        self.assert_has_content()
+        try:
+            lexer = get_lexer_by_name(self.arguments[0])
+        except ValueError:
+            # no lexer found - use the text one instead of an exception
+            lexer = TextLexer()
+        # take an arbitrary option if more than one is given
+        formatter = self.options and VARIANTS[self.options.keys()[0]] or DEFAULT
+
+        print >>open('pygments.css', 'w'), formatter.get_style_defs('.highlight')
+        parsed = highlight(u'\n'.join(self.content), lexer, formatter)
+        return [nodes.raw('', parsed, format='html')]
+
+directives.register_directive('sourcecode', Pygments)
+
+from docutils.core import publish_cmdline, default_description
+
+description = ('Generates S5 (X)HTML slideshow documents from standalone '
+               'reStructuredText sources.  ' + default_description)
+
+publish_cmdline(writer_name='s5', description=description)

ui/scala_gfx/audio_link.png

Added
New image

ui/scala_gfx/audio_on.png

Added
New image

ui/scala_gfx/audio_over.png

Added
New image

ui/scala_gfx/auto_link.png

Added
New image

ui/scala_gfx/auto_on.png

Added
New image

ui/scala_gfx/auto_over.png

Added
New image

ui/scala_gfx/delay_link.png

Added
New image

ui/scala_gfx/exit_link.png

Added
New image

ui/scala_gfx/exit_over.png

Added
New image

ui/scala_gfx/fade_link.png

Added
New image

ui/scala_gfx/fade_on.png

Added
New image

ui/scala_gfx/fade_over.png

Added
New image

ui/scala_gfx/framing.css

+/* 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: 0.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: 12%; left: 44%; 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;}
+*/

ui/scala_gfx/last_link.png

Added
New image

ui/scala_gfx/last_over.png

Added
New image

ui/scala_gfx/list_link.png

Added
New image

ui/scala_gfx/loop_link.png

Added
New image

ui/scala_gfx/loop_on.png

Added
New image

ui/scala_gfx/loop_over.png

Added
New image

ui/scala_gfx/next_link.png

Added
New image

ui/scala_gfx/next_over.png

Added
New image

ui/scala_gfx/notes_link.png

Added
New image

ui/scala_gfx/notes_over.png

Added
New image

ui/scala_gfx/opera.css

+/* 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;}

ui/scala_gfx/outline.css

+/* don't change this unless you want the layout stuff to show up in the outline view! */
+
+.hide, .layout div, #footer *, #controlForm * {display: none;}
+#footer, #controls, #controlForm, #navLinks, #sheet {display: block; visibility: visible; margin: 0; padding: 0;}
+#sheet {float: right; padding: 0.5em;}
+html>body #sheet {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;}
+#sheet {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}

ui/scala_gfx/pause_link.png

Added
New image

ui/scala_gfx/pause_on.png

Added
New image

ui/scala_gfx/pause_over.png

Added
New image

ui/scala_gfx/pretty.css

+/* Following are the presentation styles -- edit away! */
+
+body {background: #000; color: #fff; font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size: 2.25em;}
+a:link, a:visited {text-decoration: none; color: #F93;}
+/* a:focus, a:hover {color: #f33 !important;} */
+
+h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
+h1 {background-color: transparent;}
+
+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;}
+
+img {border: 0; }
+kbd {font-weight: bold; font-size: 1em;}
+sup {font-size: smaller; line-height: 1px;}
+
+.slide code {padding: 2px 0.25em; font-weight: bold; color: #f30;}
+.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: #f30; 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 {color: #666; font-family: Verdana, Arial, Helvetica, sans-serif;}
+div#header {background-color: transparent; line-height: 1px;}
+div#footer {background-color: transparent; font-size: 0.5em; font-weight: bold; padding: 1em 0;}
+#footer h1, #footer h2 {border: none; display: block; padding: 0; position:absolute; bottom:0.5em;}
+#footer h1 {left:1em; color: #666;}
+#footer h2 {right:1em; color: #666; font-style: italic;}
+
+div.long {font-size: 0.75em;}
+.slide h1 {position: absolute; top: 0.9em; left: 1.25em; z-index: 1; margin: 0.35em 0 0 50px; padding: 0; white-space: nowrap; font: bold 150%/1em Tahoma, Verdana, Arial, Helvetica, sans-serif; text-transform: capitalize; color: #fff; border-bottom: solid 0.1em red; background-color: transparent;}
+.slide h3 {font-size: 130%;}
+h1 abbr {font-variant: small-caps;}
+
+div#controls {position: absolute; left: 0; bottom: 0; width: 100%; text-align: center; font: bold 1em Verdana, Arial, Helvetica, sans-serif;}
+html>body div#controls {background: transparent; position: fixed; padding: 0; top: auto; text-align: center;}
+#controls #sheet {display: none;}
+#controls #controlForm {height: 32px; width: 100%; text-align: center; vertical-align: middle;}
+#controls #navLinks {border-top: 1px solid #999; overflow: hidden; padding: 0; margin: 0; height: 32px; width: 100%; background-color: #808080; text-align: center; vertical-align: middle; white-space: nowrap;}
+#controls #navLinks ul {margin: 0 auto; padding: 0; height: 32px; width: 500px; white-space: nowrap; text-align: center;}
+#controls #navLinks ul li {list-style: none; display: inline; margin: 0; padding: 0; float: left; height: 32px; width: 32px; text-align: center; background-color: transparent;}
+#controls #navLinks ul li.vr {list-style: none; display: inline; margin: 0px 2px; padding: 0; float: left; height: 32px; width: 1px; text-align: center; background-color: #606060;}
+#controls #navLinks ul li a {margin: 0; padding: 0; float: left; height: 32px; width: 32px; background-color: transparent;}
+
+#controls #navLinks ul li#exit {background: url(exit_link.png) no-repeat top left;}
+#controls #navLinks ul li#exit a:hover {background: url(exit_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#toggle {background: url(toggle_link.png) no-repeat top left;}
+#controls #navLinks ul li#toggle a:hover {background: url(toggle_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#show-notes {background: url(notes_link.png) no-repeat top left;}
+#controls #navLinks ul li#show-notes a:hover {background: url(notes_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#zero {background: url(zero_link.png) no-repeat top left;}
+#controls #navLinks ul li#zero a:hover {background: url(zero_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#prev {background: url(prev_link.png) no-repeat top left;}
+#controls #navLinks ul li#prev a:hover {background: url(prev_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#next {background: url(next_link.png) no-repeat top left;}
+#controls #navLinks ul li#next a:hover {background: url(next_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#last {background: url(last_link.png) no-repeat top left;}
+#controls #navLinks ul li#last a:hover {background: url(last_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#lst {background: url(list_link.png) no-repeat top left;}
+
+#controls #navLinks ul li#fade a.isoff {background: url(fade_link.png) no-repeat top left;}
+#controls #navLinks ul li#fade a.ison {background: url(fade_on.png) no-repeat top right;}
+#controls #navLinks ul li#fade a:hover {background: url(fade_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#audio {background: url(audio_link.png) no-repeat top left;}
+#controls #navLinks ul li#audio a.isoff {background: url(audio_link.png) no-repeat top left;}
+#controls #navLinks ul li#audio a.ison {background: url(audio_on.png) no-repeat top right;}
+#controls #navLinks ul li#audio a:hover {background: url(audio_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#vol {background: url(volume_link.png) no-repeat top left;}
+
+#controls #navLinks ul li#auto a.isoff {background: url(auto_link.png) no-repeat top left;}
+#controls #navLinks ul li#auto a.ison {background: url(auto_on.png) no-repeat top right;}
+#controls #navLinks ul li#auto a:hover {background: url(auto_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#pause a.isoff {background: url(pause_link.png) no-repeat top left;}
+#controls #navLinks ul li#pause a.ison {background: url(pause_on.png) no-repeat top right;}
+#controls #navLinks ul li#pause a:hover {background: url(pause_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#loop a.isoff {background: url(loop_link.png) no-repeat top left;}
+#controls #navLinks ul li#loop a.ison {background: url(loop_on.png) no-repeat top right;}
+#controls #navLinks ul li#loop a:hover {background: url(loop_over.png) no-repeat bottom left;}
+
+#controls #navLinks ul li#del {background: url(delay_link.png) no-repeat top left;}
+
+#jumplist, #volumelist, #delaylist {padding: 0; margin: 0; width: 32px; height: 32px; cursor: n-resize;}
+
+#currentSlide {white-space: nowrap; text-align: center; margin-bottom: -0.5em; font-size: 0.5em; background-color: transparent; color: #999;}
+
+#guru {position: absolute; visibility: visible; left: 0px; top: 0px; padding: 4px; width: 99%; height: auto; text-align: center; background-color: black; z-index: 10;}
+#guru div {border: solid 3px red; padding: 4px; font-family: monospace; font-size: 60%; width: auto; height: auto; color: red; text-align: center;}
+
+#slide0 {padding-top: 3.5em; font-size: 90%;}
+#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; border: none; font: bold 3em Verdana, Arial, Helvetica, sans-serif; font-variant: small-caps; white-space: normal; color: #fff; background-color: transparent;}
+#slide0 h2 {font: bold italic 1em Arial, 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: #F93;}
+
+.incremental, .incremental *, .incremental *:after {color: #999; visibility: visible;}
+img.incremental, canvas.incremental {visibility: hidden;}
+.slide .current {color: #ff0;}
+
+/* diagnostics
+li:after {content: " [" attr(class) "]"; color: #F88;}
+*/
+
+table.piechart, table.barchart, table.linechart { border-spacing: 0.3em 0.15em;  }
+table.piechart tr th, table.barchart tr th, table.linechart tr th { white-space: nowrap; }
+table.piechart tr td, table.barchart tr td, table.linechart tr td { vertical-align: top; white-space: nowrap; }
+table.piechart tr td.col, table.barchart tr td.col, table.linechart tr td.col { border-bottom: 1px solid #555; border-right: 1px solid #555; }
+table.fs90 tr td, table.fs90 tr th, div.fs90, pre.fs90, p.fs90 ,ul.fs90 {font-size: 0.9em; }
+table.fs75 tr td, table.fs75 tr th, div.fs75, pre.fs75, p.fs75 ,ul.fs75 {font-size: 0.75em; }
+table.fs66 tr td, table.fs66 tr th, div.fs66, pre.fs66, p.fs66 ,ul.fs66 {font-size: 0.66em; }
+table.fs50 tr td, table.fs50 tr th, div.fs50, pre.fs50, p.fs50 ,ul.fs50 {font-size: 0.5em; }
+
+#soundmanager-debug {position:fixed; top:0px; right:0px; width:30em; height:20em; overflow:auto; border:1px solid red; padding:1em; margin:2em; font-family:"sans serif"; font-size: 12px;color: black; background-color:#f6f6f6; z-index: 100;}
+#soundmanager-debug code {font-size: 11px;}

ui/scala_gfx/prev_link.png

Added
New image

ui/scala_gfx/prev_over.png

Added
New image

ui/scala_gfx/print.css

+/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
+img {page-break-inside: avoid; page-break-after: avoid;}
+/*.slide {page-break-after: always;}*/

ui/scala_gfx/s5-core.css

+/* 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, .hide {display: none;}
+.layout {display: block;}
+.slide, .hideme, .incremental {visibility: hidden;}
+#slide0 {visibility: visible;}

ui/scala_gfx/slides.css

+@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 */

ui/scala_gfx/slides.js

+// S5 1.3beta7 (18-Apr-2007) advanced version by C. Effenberger 
+// Please see http://s5.netzgesta.de/ for more information
+// based on 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!
+// audio extension: soundmanager2 is NOT Public Domain
+// Please see http://www.schillmania.com/projects/soundmanager2/ for information
+
+var undef;
+var slideCSS = '';
+var snum = 0;
+var smax = 1;
+var incpos = 0;
+var number = undef;
+var firstTime = 1;
+var s5mode = true;
+var helpmode = false;
+var defaultView = 'slideshow'; //outline
+var controlVis = 'visible';
+
+// scalable images extension
+var empx = 0;
+var images = new Array();
+var canvas = new Array();
+var medias = new Array();
+var piecharts = new Array(); 
+var barcharts = new Array();
+var linecharts = new Array();  
+// scalable images extension
+
+// transition extension
+var tranSitions = false;
+var fadeModus = false;
+var fadeDuration = 500;
+var incrDuration = 250;
+var opac = 1;
+var cid = '';
+var nid = '';
+var tid = '';
+var jl = '';
+// transition extension
+
+// autoplay extension
+var autoMatic = false;
+var playLoop = false;
+var playPause = false;
+var autoRun = false;
+var playDelay = 5000;
+var remainDer = 0;
+var incrDelay = 0;
+// autoplay extension
+
+// audio extension
+var sound = new Array();
+var audioSupport = false;
+var audioVolume = 100;
+var audioError = false;
+var swfUnloaded = true;
+var bgSoundItem = 9999;
+var curSoundID = -1;
+// audio extension
+
+// panel extension
+var imgWidth = 32;
+var imgHeight = 32;
+// panel extension
+
+// canvas chart extension
+var canvasSupport = false;
+var ChartData = new Array();
+var colorSlice = new Array();
+var font = document.createElement("img");
+font.setAttribute("src", "ui/graphic_support/numeric.png");
+signs = {
+	'0': {sx: 0, sy: 0, sw: 48, sh: 64},
+	'1': {sx: 48, sy: 0, sw: 48, sh: 64},
+	'2': {sx: 96, sy: 0, sw: 48, sh: 64},
+	'3': {sx: 144, sy: 0, sw: 48, sh: 64},
+	'4': {sx: 192, sy: 0, sw: 48, sh: 64},
+	'5': {sx: 240, sy: 0, sw: 48, sh: 64},
+	'6': {sx: 288, sy: 0, sw: 48, sh: 64},
+	'7': {sx: 336, sy: 0, sw: 48, sh: 64},
+	'8': {sx: 384, sy: 0, sw: 48, sh: 64},
+	'9': {sx: 432, sy: 0, sw: 48, sh: 64},
+	'%': {sx: 480, sy: 0, sw: 48, sh: 64},
+	'.': {sx: 528, sy: 0, sw: 24, sh: 64}
+};
+var colorNames= new Array(); 
+colorNames["black"]="#000000"; colorNames["maroon"]="#800000";
+var canvas_bgcolor = "";
+var canvas_width = 200;
+var canvas_height = 200;
+var canvas_noshade = 0;
+var canvas_nofill = 0;
+var canvas_noshadow = 0;
+var canvas_htmltext = 0;
+var canvas_imgtext = 0;
+var canvas_notext = 0;
+// canvas chart extension
+
+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;
+if(isIE) var notIE7 = parseInt(navigator.appVersion) < 7 ? 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;
+var isS2 = navigator.userAgent.indexOf('Safari') >= 2 ? 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 changeClass(object,className) {
+	if (!object) return;
+	object.firstChild.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);
+		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, at, fd, ss;
+	if (document.getElementById) {
+		cs = document.getElementById('currentSlide');
+	} else {
+		cs = document.currentSlide;
+	}
+	fd = fadeModus?"F":"&ndash;";
+	ss = audioSupport?"S":"&ndash;";  
+	at = (autoMatic?(playPause?"||":(playLoop?"&gt;0":"&gt;|")):"&ndash;&ndash;");
+	cs.innerHTML = '<div id="plink" nowrap="nowrap">' + 
+	'<span id="csFade">[' + fd + ss + ']<\/span>&nbsp;' +
+	'<span id="csHere"><strong>' + snum + '<\/strong><\/span>' + 
+	'<span id="csSep">\/<\/span>' + 
+	'<span id="csTotal">' + (smax-1) + '<\/span>&nbsp;' +
+	'<span id="csAuto">[' + at + ']<\/span>' +
+	'<\/div>';
+		
+	if (snum == 0) {
+		cs.style.visibility = 'hidden';
+	} else {
+		cs.style.visibility = 'visible';
+	}
+}
+
+function go(step) {
+	if (document.getElementById('slideProj').disabled || step == 0) return;
+	jl = document.getElementById('jumplist');
+	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);
+	}	
+	nid = 'slide' + snum;
+	var ne = document.getElementById(nid);
+	if (!ne) {
+		ne = document.getElementById('slide0');
+		nid = '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');
+	}
+	var guru = document.getElementById('guru');
+	if(guru && snum==0) {
+		guru.style.visibility = 'visible';
+	}else if(guru && snum>0) {
+		guru.style.visibility = 'hidden';
+	}	
+	if(tranSitions && s5mode && fadeModus) {
+		if(curSoundID != getSoundID(nid)) {
+			if(curSoundID == bgSoundItem && !sound[getSoundID(nid)]) {
+			}else {fadeoutSound(curSoundID,true); } // audio support
+		}		
+		changeOpac(0,nid);
+		changeOpac(100,cid);
+		ce.style.visibility = 'visible';
+		shiftOpacity(cid,fadeDuration);
+		window.setTimeout("changeSlides()",fadeDuration);
+	}else {
+		if(curSoundID != getSoundID(nid)) {
+			if(curSoundID == bgSoundItem && !sound[getSoundID(nid)]) {
+			}else {stopSound(curSoundID); } // audio support 
+		}
+		ce.style.visibility = 'hidden';
+		if (isOp) location.hash = nid;
+		ne.style.visibility = 'visible';
+		finishSlides();		
+	}
+}
+
+function changeSlides() {
+	if(nid != cid) changeOpac(100,cid);
+	document.getElementById(cid).style.visibility = 'hidden';
+	document.getElementById(nid).style.visibility = 'visible';
+	if (isOp) location.hash = nid;
+	shiftOpacity(nid,fadeDuration);
+	window.setTimeout("finishSlides()",fadeDuration);
+}
+
+function finishSlides() {
+	jl.selectedIndex = snum;
+	currentSlide();
+	loadNote();
+	permaLink();
+	number = undef;
+	if(sound[getSoundID(nid)]) {
+		playSound(nid); // audio support
+	}else if(sound[bgSoundItem] && curSoundID != bgSoundItem) {
+		playSound(bgSoundItem); // audio support
+	}
+}
+
+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');
+		if(tranSitions && s5mode && fadeModus) { 			
+			if(!incrementals[snum][incpos].id) {
+				var tmp = new Date(); tid = "inc" + String(tmp.getTime());
+				incrementals[snum][incpos].id = tid;
+			}else {
+				tid = incrementals[snum][incpos].id;
+			}	
+			if(typeof(incrementals[snum][incpos].src) != "undefined" || incrementals[snum][incpos].getContext) {
+				changeOpac(0,tid);		
+				addClass(incrementals[snum][incpos],'current');
+				shiftOpacity(tid,incrDuration);
+				setTimeout("nextInc()",incrDuration);
+			}else {
+				addClass(incrementals[snum][incpos],'current');
+				nextInc();
+			}	
+		}else {
+			addClass(incrementals[snum][incpos],'current');
+			nextInc();
+		}
+	} else {
+		incpos--;
+		removeClass(incrementals[snum][incpos],'current');
+		addClass(incrementals[snum][incpos], 'incremental');
+		addClass(incrementals[snum][incpos - 1],'current');
+		loadNote();
+	}
+}
+
+function nextInc() {
+	incpos++;
+	loadNote();
+}
+
+function toggle() {
+	var slideColl = GetElementsWithClassName('*','slide');
+	var slides = document.getElementById('slideProj');
+	var outline = document.getElementById('outlineStyle');
+	var guru = document.getElementById('guru');
+	if (!slides.disabled) {
+		stopPlay();
+		if(audioSupport && !swfUnloaded) stopAllSounds();
+		slides.disabled = true;
+		outline.disabled = false;
+		s5mode = false;
+		fontSize(1,'em');
+		for (var n = 0; n < smax; n++) {
+			var slide = slideColl[n];
+			slide.style.visibility = 'visible';
+		}
+		if(guru) guru.style.visibility = 'hidden';
+	} 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';
+		if(guru && snum==0) guru.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;
+	}
+}
+
+function keys(key) {
+	if (!key) {
+		key = event;
+		key.which = key.keyCode;
+	}
+	if (helpmode) {
+		dumpHelpReq();
+		return;
+	}
+	if (key.which == 84 && !isOp) {
+		toggle();
+		return;
+	}
+	if (s5mode) {
+		if (autoMatic) {
+			switch (key.which) {
+			case 70: // f/ading on/off
+				switchFade();
+				break;
+			case 83: // s/ound on/off
+				toggleSounds();
+				break;	
+			case 67: // c
+				showHide('k');
+				break;
+			case 65: // a/utoplay on/off
+				stopPlay();
+				break;
+			case 76: // l/ooping on/off
+				switchLoop();
+				break;
+			case 80: // p/ause
+			case 32: // spacebar
+				pausePlay();
+				break;
+			}
+		}else {
+			switch (key.which) {
+			case 8: // backspace = HELP
+				createHelpReq();
+				break;								
+			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 65: // a/utoplay
+				startPlay();
+				break;				
+			case 72: // h
+			case 36: // home
+				goTo(0);
+				break;
+			case 69: // e
+			case 35: // end
+				goTo(smax-1);
+				break;
+			case 70: // f/ade transitions on/off
+				switchFade();
+				break;
+			case 76: // l/ooping on/off
+				switchLoop();
+				break;
+			case 83: // s/ound support on/off
+				toggleSounds();
+				break;					
+			case 27: // escape
+			case 81: // q
+				if(!isOp) byby();
+				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 (!helpmode) {
+		if (!e.which || e.which == 1) {
+			if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+				go(1);
+			} else {
+				subgo(1);
+			}
+		}
+	} else {
+		dumpHelpReq();  
+	}
+}
+
+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;
+	}
+	if(isOp) {
+		var str = '';
+	}else {
+		var str = '<a accesskey="t" id="sheet" title="toggle CSS" href="javascript:toggle();">&plusmn;<\/a>';
+	}	
+	if(isIE) {
+		var tmp = "move around&xA0;until the color&xA0;change to red!";
+	}else if(isS2) {
+		var tmp = "move around\r\nuntil the color\r\nchange to red!";
+	}else {
+		var tmp = "move around until color change to red!";
+	}
+	if(isIE) {
+		controlsDiv.innerHTML = str +
+		'<form action="#" id="controlForm"' + hideDiv + '>' +
+		'<div id="navLinks" title="press [backspace] for keyboard help!"><ul>' +
+		'<li id="show-notes"><a href="javascript:createNotesWindow();" accesskey="n" title="show Notes"><\/a><\/li>' +
+		'<li id="toggle"><a href="javascript:toggle();" accesskey="t" title="toggle CSS"><\/a><\/li>' +
+		'<li id="zero"><a href="javascript:goTo(0);" accesskey="h" title="goto Start Slide"><\/a><\/li>' +
+		'<li id="prev"><a href="javascript:go(-1);" accesskey="y" title="previous Slide"><\/a><\/li>' +
+		'<li id="next"><a href="javascript:go(1);" accesskey="x" title="next Slide"><\/a><\/li>' +
+		'<li id="last"><a href="javascript:goTo(smax-1);" accesskey="e" title="goto Last Slide"><\/a><\/li>' +
+		'<li id="lst" style="vertical-align: middle; width: 160px;"><select style="cursor: auto; width: 160px; height: auto;" id="jumplist" title="select named Slide" onchange="go(\'j\');"><\/select><\/li>' +
+		'<li id="auto"><a class="isoff" href="javascript:togglePlay();" accesskey="a" title="Auto Play"><\/a><\/li>' +
+		'<li id="pause"><a class="isoff" href="javascript:pausePlay();" accesskey="p" title="Pause"><\/a><\/li>' +
+		'<li id="loop"><a class="isoff" href="javascript:switchLoop();" accesskey="l" title="Loop"><\/a><\/li>' +
+		'<li id="del" style="vertical-align: middle; width: 52px;"><select style="cursor: auto; width: 52px; height: auto;" id="delaylist" title="select Delay" onchange="setDelay();"><option value="90">90<\/option><option value="75">75<\/option><option value="60">60<\/option><option value="45">45<\/option><option value="30">30<\/option><option value="20">20<\/option><option value="15">15<\/option><option value="10">10<\/option><option value="5">5<\/option><\/select><\/li>' +
+		'<\/ul><\/div><\/form>';
+	}else {
+		controlsDiv.innerHTML = str +
+		'<form action="#" id="controlForm"' + hideDiv + '>' +
+		'<div id="navLinks" title="press [backspace] or double click this area for keyboard help!" ondblclick="createHelpReq();"><ul>' +
+		'<li id="exit"><a href="javascript:byby();" accesskey="q" title="exit Show"><\/a><\/li>' +
+		'<li id="show-notes"><a href="javascript:createNotesWindow();" accesskey="n" title="show Notes"><\/a><\/li>' +
+		'<li id="toggle"><a href="javascript:toggle();" accesskey="t" title="toggle CSS"><\/a><\/li>' +
+		'<li class="vr"><\/li>' +
+		'<li id="zero"><a href="javascript:goTo(0);" accesskey="h" title="goto Start Slide"><\/a><\/li>' +
+		'<li id="prev"><a href="javascript:go(-1);" accesskey="y" title="previous Slide"><\/a><\/li>' +
+		'<li id="next"><a href="javascript:go(1);" accesskey="x" title="next Slide"><\/a><\/li>' +
+		'<li id="last"><a href="javascript:goTo(smax-1);" accesskey="e" title="goto Last Slide"><\/a><\/li>' +
+		'<li id="lst"><a id="list" style="cursor:wait;" title="' + tmp + '"><\/a><select id="jumplist" title="select named Slide" onchange="go(\'j\');"><\/select><\/li>' +
+		'<li id="fadeLinks" class="vr"><\/li>' +
+		'<li id="fade"><a class="isoff" href="javascript:switchFade();" accesskey="f" title="Transions"><\/a><\/li>' +
+		'<li id="audioLinks" class="vr"><\/li>' +
+		'<li id="audio"><a class="isoff" href="javascript:toggleSounds();" accesskey="s" title="Sounds" ><\/a><\/li>' +
+		'<li id="vol"><a id="volume" style="cursor:wait;" title="' + tmp + '"><\/a><select id="volumelist" title="select Volume" onchange="setVolume();"><option value="100">100<\/option><option value="90">90<\/option><option value="80">80<\/option><option value="70">70<\/option><option value="60">60<\/option><option value="50">50<\/option><option value="40">40<\/option><option value="30">30<\/option><option value="20">20<\/option><option value="10">10<\/option><option value="0">0<\/option><\/select><\/li>' +	
+		'<li id="autoLinks" class="vr"><\/li>' +
+		'<li id="auto"><a class="isoff" href="javascript:togglePlay();" accesskey="a" title="Auto Play"><\/a><\/li>' +
+		'<li id="pause"><a class="isoff" href="javascript:pausePlay();" accesskey="p" title="Pause"><\/a><\/li>' +
+		'<li id="loop"><a class="isoff" href="javascript:switchLoop();" accesskey="l" title="Loop"><\/a><\/li>' +
+		'<li id="del"><a id="delay" style="cursor:wait;" title="' + tmp + '"><\/a><select id="delaylist" title="select Delay" onchange="setDelay();"><option value="90">90<\/option><option value="75">75<\/option><option value="60">60<\/option><option value="45">45<\/option><option value="30">30<\/option><option value="20">20<\/option><option value="15">15<\/option><option value="10">10<\/option><option value="5">5<\/option><\/select><\/li>' +
+		'<\/ul>' +
+		'<a href="http://s5.netzgesta.de" target="_blank" title="S5 Reloaded"><img style="position: absolute; right: 0; bottom: 0;" src="data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAYpSURBVHjaYvz//z8DOYCRkZEZRAEx0Ij/f2HiAAHEgqYIpACkkB1J7g8Q/wLRIJ1QNSB5fiDmAOLvQKHPQPoHSB4ggFiQDGMCUnxALAPECkAsBLIdiD8A8SMgfghU8wlqkTgQK1ZVVWldv3792fr16y8D+c9AhgMEECPIy1DDRIDYAojdzMzMWNXV1UG2/v/y5Qvzw4cPP587d24/kH8Gar/uwoULQ+/cufNFXFyciZmZ+UVmZuZKoFmvAQII5kJOIDbi4uKK2Llz53EbG5vP6GGWn5+vMWnSpJtA5jcg5v327Rtnc3PzfSD79+rVq2WBNBtIHUAAwQzkAWKzBQsWnIUZFhISovXmzZsfkpKSDD09PY8kJCR+QtWCguGvrKwsz7Rp07Q4ODh+srCwgILiH0gSIIBgBrICsUBoaCgorBiANgqvXbtWDMg8AcQf9+7d+x0o9xbI/gJV/3fVqlUvmJiY/gIdcaWhoYETahEDQADBDPwNxO9h3gNpBiq6f/HiRbWjR4+yvnr16grQNbeh6kCWsxkYGIhClT8yNDQUgyYhBoAAYoIKfgXi06mpqUowQ+vr6x+uW7fu0suXL8+uWbOGS0BAwB7kC6jXvqmoqLDIyclxzZo1S4udnR2WtBgAAggWyyCXSgOxZUxMjGpWVtY7S0vLr8iRsnnzZl4/P7/DQCYoYtSA2DApKUkVGNNPDh06dBrIvwU06xNAAMEM5AIKqAOxCjQsmHl5eXWdnJx4N2zYcB4prd4CUpfwJRuAAGJCimULoGYpbm5uZ5DBnz9/5tq4caPWkSNHeJEc+g0aTFzfv3/nACabjzk5OW8FBQVloLmHASCAYJECUiTg7+//HJiQTzY2NsrfvXv3n7m5+T5YMgJGEkjDS2gY/pKRkeHt7Ow0Bsb0v9+/fz+HxTJAAMG8DHKFLTC9aRUXF79BT9Qgw4CWHAAy70FdYgjEDgkJCTpWVlYMQBfeAaaMPqBZbwECCGYgMzQGQSleCehS0X///jEDvf9lxYoVoOTyAIjfANX+BqrlBrL1gLFf09vb+0FaWvoHMBctA6USUKQABBAjrPiCliKg7AOKIG5ougLlju9Ipc1foDJWqMWGhYWFtsBg4RISEnrg5uY2BWQgQACxIBkGMkQKijmRfPwXWuI8ASp7DQ1vEP4DDO8PwBzzDJheT0CLPQaAAEJOh0o8zAzeihwMiv+gGZ0B4sz/bIwM797/YTh1/wfDIWj5qAfMmtFnzpz5ICIiwqKoqPgjKChoOtCs5wABhJyXpUCGzddgOIethJ71jEFi1nNwgQrKz8zv37//097eDop15qVLl0pAzWAACCAWhEMYOJFdduELA++b3wxsTIwMfzmYGH6xMDG8gYYpKAg+cnJy/gB6VwuYZFiA7E+wvAwQQCy46ozexwzG17+BYx6UVE4B8Vmo68CRFR0dDQo3UAHBBUwJ4lCLGAACCNnAv4zQxAkCxbIMZ0EuBIYb98EPDFo3voGTzjOogVzArGf969cvNmC2+wssHD7BDAQIIBakmHwPDPy3MAMNeBhgpfbbVEkGhqQbDJaXvjI8BPJB4jz79u37DcwlP+fPn38NuTwECCBkA1+8+8Nwtusxg+STHwwcP/8z8EuwMXA1KjBcBSlwEmRgBhrID/U2O7QMBIEHxsbGkrAwBAggmIGgNMT64AfDWyB+By0EQMVZlC0/wwsXQYa38hzgCGGBWv5ZU1OT4c+fP8yLFi1SA3r5Haw8BAggmIGg5KBpJ8BgeOYTg8S3f2DN/OxMDNwgw0AKnv0EJ+avsITu7u6+EZqzQEHwHFqaMwAEEAtShS/pLcTwrU+Z4QwsyQANOwIL06tfGV5BqwmQWoGKigoLYJnJvWPHjhstLS169vb2M0DqAAIIVh6CXHT/9ndIawEUITCXgUDrQwbGbe8YjkJdAzZQVVVV/t69e8LAgtUYaNgxWKQABBByacMHzfTK9gIMYkBZpj//GT4c+8gAKm1AsfseqPYPtHTXAtaEacBqlgHoyq+srKw3XV1dFwHlvwEEECNyYwmp3cIJjbUf0DbLP7RGEg+0bcMCjQxQzH8BWQgQQIzktr5wAYAAYmKgMgAIMAAp8Fx3osz1lgAAAABJRU5ErkJggg==" width="20" height="32" alt="S5" \/><\/a>' +
+		'<\/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 && !isOp) return false;
+	var hScreen = screen.width; var vScreen = screen.height;
+	var vWindow = window.outerHeight; var hWindow = window.outerWidth;
+	if (isOp && s5mode && defaultView=='slideshow' && ((hScreen != hWindow) || (vScreen != vWindow))) {
+		toggle();
+		return false;
+	}
+	if (isOp && !s5mode && ((hScreen != hWindow) || (vScreen != vWindow))) return false;
+	if (isOp && !s5mode && (hScreen == hWindow) && (vScreen == vWindow)) toggle();
+	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 equals 8:5
+		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));
+	extendImgSizes(newSize); // scalable images extension
+	extendCanSizes(newSize); // scalable canvas extension
+	extendObjSizes(newSize); // scalable object extension
+	fontSize(newSize,"px");
+	if(!isS2 || firstTime==0) {
+		generateCanvas(); // dynamic canvas extension
+	}
+	if (isGe) {  // hack to counter incremental reflow bugs
+		var obj = document.getElementsByTagName('body')[0];
+		obj.style.visibility = 'hidden';
+		obj.style.display = 'none';
+		obj.style.display = 'block';
+		obj.style.visibility = 'visible';
+		changeOpac(100,'slide' + snum);
+		shiftOpacity('slide' + snum,10);
+		window.setTimeout("fixReflow()",10);
+	}else {
+		setListPos(); // invisible select extension
+	}
+}
+
+function fixReflow() {
+	shiftOpacity('slide' + snum,10);
+	window.setTimeout("finishReflow()",10);
+}
+function finishReflow() {
+	setListPos(); // invisible select extension
+}
+
+function fontSize(val,fmt) {
+	var value = val + fmt;
+	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 windowChange() {
+	fontScale();
+}
+
+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 && notIE7) && document.styleSheets && document.styleSheets[0]) {
+		document.styleSheets[0].addRule('img', 'behavior: url(ui/graphic_support/iepngfix.htc)');
+		document.styleSheets[0].addRule('div', 'behavior: url(ui/graphic_support/iepngfix.htc)');
+		document.styleSheets[0].addRule('.slide', 'behavior: url(ui/graphic_support/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 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;
+}
+
+// notes extension
+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) {
+		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;
+	}
+}
+// notes extension
+
+// startup process
+function createSlideShow() {
+	defaultCheck();	
+	if(!isIE) createDetector(); // (degrade IE) scalable images extension 
+	if(opac!=0 || isIE) { // &&!isIE (degrade IE)
+		tranSitions = false;
+		fadeModus = false;
+	}
+	if(tranSitions && document.getElementById && document.createElement){
+		createProgress();
+		var nop=document.getElementById('StartupControl');
+		nop.onload = dumpProgress;
+	}else {
+		startup();
+		showAll();
+		setListPos(true); // invisible select extension
+		panelSetup();
+		audioSetup(); // audio extension
+		if(isS2 && firstTime>=1) {
+			generateCanvas(); // dynamic canvas extension
+		} firstTime = 0;
+	}
+}
+
+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;
+		}
+		if (allMetas[i].name == 'tranSitions') {
+			tranSitions = (allMetas[i].content == "true") ? true : false;
+			fadeModus = (tranSitions == true) ? true : false;
+		}
+		if (allMetas[i].name == 'fadeDuration') {
+			var tmp = parseInt(allMetas[i].content);
+			fadeDuration = Math.max(200,Math.min(tmp,2000));
+		}
+		if (allMetas[i].name == 'incrDuration') {
+			var tmp = parseInt(allMetas[i].content);
+			incrDuration = Math.max(50,Math.min(tmp,500));
+		}
+		if (allMetas[i].name == 'autoMatic') {
+			autoMatic = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'playLoop') {
+			playLoop = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'playDelay') {
+			var tmp = parseInt(allMetas[i].content);
+			playDelay = Math.max(5,Math.min(tmp,90))*1000;
+			playDelay = (fadeModus == true) ? (playDelay+(2*fadeDuration)) : playDelay;
+		}
+		if (allMetas[i].name == 'audioSupport') {
+			audioSupport = (allMetas[i].content == "true") ? true : false;
+		}
+		if (allMetas[i].name == 'audioVolume') {
+			var tmp = parseInt(allMetas[i].content);
+			audioVolume = Math.max(0,Math.min(tmp,100));
+		}
+		if (allMetas[i].name == 'audioError') {
+			audioError = (allMetas[i].content == "true") ? true : false;
+		}						
+	}
+}
+
+function createProgress() {
+	var obj = document.getElementsByTagName("body")[0].firstChild;
+	var pg = document.createElement('div');
+	pg.id = "StartupProgress";
+	pg.style.position = 'absolute';
+	pg.style.left = 0 + 'px';
+	pg.style.top = 0 + 'px';
+	pg.style.width = 100 + '%';
+	pg.style.height = 100 + '%';
+	pg.style.margin = 0 + 'px';
+	pg.style.padding = 0 + 'px';
+	if (isIE) {
+		pg.style.filter = "alpha(opacity=100)";	
+	}else {
+		pg.style.opacity = 1.0;
+	}
+	pg.style.backgroundColor="rgb(255, 255, 255)";
+	pg.style.textAlign = "center";
+	pg.style.backgroundPosition="center center";
+	pg.style.backgroundRepeat="no-repeat";
+	pg.style.backgroundImage="url(ui/graphic_support/progress.gif)";
+	document.getElementsByTagName("body")[0].insertBefore(pg,obj);
+
+	var im = document.createElement('img');
+	im.id = "StartupControl";
+	im.src = "ui/graphic_support/blank.gif?" + new Date().valueOf();
+	document.getElementsByTagName("body")[0].appendChild(im);
+}
+
+function startup() {
+	createControls(); // hallvord
+	slideLabel();
+	incrementals = createIncrementals();
+	noteLabel(); // [SI:060104] must follow slideLabel()
+	loadNote();
+	fixLinks();
+	externalLinks();
+	fontScale();
+	if (!isOp) {
+		if(isIE) {
+			document.getElementById('lst').style.backgroundImage = 'none';
+			document.getElementById('del').style.backgroundImage = 'none';
+		}else {
+			document.getElementById('audio').style.backgroundImage = 'none';
+		}
+		notOperaFix();
+	}else if(isOp) {
+		var obj = document.getElementById('exit');
+		obj.firstChild.style.visibility = 'hidden';
+		document.getElementById('exit').style.opacity = 0.5;
+		obj = document.getElementById('toggle');
+		obj.firstChild.style.visibility = 'hidden';
+		document.getElementById('toggle').style.opacity = 0.5;
+		document.getElementById('jumplist').style.visibility = 'hidden';
+		document.getElementById('list').style.visibility = 'hidden';
+		document.getElementById('lst').style.opacity = 0.5;
+		obj = document.getElementById('audio');
+		obj.firstChild.style.visibility = 'hidden';
+		document.getElementById('audio').style.opacity = 0.5;
+		document.getElementById('volumelist').style.visibility = 'hidden';
+		document.getElementById('volume').style.visibility = 'hidden';
+		document.getElementById('vol').style.opacity = 0.5;
+		document.getElementById('delaylist').style.visibility = 'hidden';
+		document.getElementById('delay').style.visibility = 'hidden';
+		document.getElementById('del').style.opacity = 0.5;
+	}
+	slideJump();
+	if (defaultView == 'outline') toggle();
+	document.onkeyup = keys;
+	document.onkeypress = trap;
+	document.onclick = clicker;
+}
+
+function preloadImgages() {
+	var temp = '';
+	var objects = document.getElementsByTagName('img');
+	for (var i=0; i < objects.length; i++) {
+		if(objects[i].src != '') {
+			temp = new Image(); 
+			temp.src = objects[i].src;
+		}
+	}
+}
+
+function showAll() {
+	var obj1 = GetElementsWithClassName('div','presentation')[0];
+	if(!obj1) var obj1 = GetElementsWithClassName('ol','presentation')[0];
+	var obj2 = GetElementsWithClassName('div','layout')[0];
+	if(!obj1){}else {obj1.style.display = 'block'};
+	if(!obj2){}else {obj2.style.display = 'block'};
+}
+
+function dumpProgress() {
+	document.body.removeChild(document.getElementById('StartupControl'));
+	startup();
+	preloadImgages();
+	showAll();
+	createSoundManagerScript();
+	shiftOpacity('StartupProgress',1000);
+	window.setTimeout("removeProgress()",1000);
+
+function removeProgress() {
+	document.body.removeChild(document.getElementById('StartupProgress'));
+	setListPos(true); // invisible select extension
+	panelSetup();
+	audioSetup(); // audio extension
+	if(isS2 && firstTime>=1) {
+		generateCanvas(); // dynamic canvas extension
+	} firstTime = 0;
+}
+function panelSetup() {
+	if(playPause) {	
+		var obj = document.getElementById('pause'); changeClass(obj,'ison');
+	}
+	if(playLoop) {	
+		var obj = document.getElementById('loop'); changeClass(obj,'ison');
+	}
+	if(audioSupport && !isIE && !isOp) {	
+		var obj = document.getElementById('audio'); changeClass(obj,'ison');
+	}
+	if(fadeModus && !isIE) {	
+		var obj = document.getElementById('fade'); changeClass(obj,'ison');
+	}
+	if(autoMatic) {
+		var obj = document.getElementById('auto'); changeClass(obj,'ison');
+		startPlay();
+	}
+	if(audioVolume && !isIE && !isOp) {
+		var idx = 0;
+		if(audioVolume >= 95 && audioVolume <= 100) {idx = 0;}
+		else if(audioVolume >= 85 && audioVolume < 95) {idx = 1;}
+		else if(audioVolume >= 75 && audioVolume < 85) {idx = 2;}
+		else if(audioVolume >= 65 && audioVolume < 75) {idx = 3;}
+		else if(audioVolume >= 55 && audioVolume < 65) {idx = 4;}
+		else if(audioVolume >= 45 && audioVolume < 55) {idx = 5;}
+		else if(audioVolume >= 35 && audioVolume < 45) {idx = 6;}
+		else if(audioVolume >= 25 && audioVolume < 35) {idx = 7;}
+		else if(audioVolume >= 15 && audioVolume < 25) {idx = 8;}
+		else if(audioVolume >= 5 && audioVolume < 15) {idx = 9;}
+		else {idx = 10;}
+		document.getElementById('volumelist').selectedIndex = idx;
+	}
+	if(playDelay && !isOp) {
+		var idx = 0; var vol = parseInt(playDelay/1000);
+		if(vol >= 83 && vol <= 90) {idx = 0;}
+		else if(vol >= 68 && vol < 83) {idx = 1;}
+		else if(vol >= 53 && vol < 68) {idx = 2;}
+		else if(vol >= 38 && vol < 53) {idx = 3;}
+		else if(vol >= 25 && vol < 38) {idx = 4;}
+		else if(vol >= 18 && vol < 25) {idx = 5;}
+		else if(vol >= 13 && vol < 18) {idx = 6;}
+		else if(vol >= 8 && vol < 13) {idx = 7;}
+		else {idx = 8;}
+		document.getElementById('delaylist').selectedIndex = idx;		
+	}
+}
+// startup process
+
+// shutdown process
+function byby() {
+	stopPlay();
+	if(tranSitions && fadeModus && s5mode && !isOp) {
+		fadeoutSound(curSoundID,true); // audio support
+		var pg = document.createElement('div');
+		pg.id = "GoodBy";
+		pg.style.position = 'absolute';
+		pg.style.left = 0 + 'px';
+		pg.style.top = 0 + 'px';
+		pg.style.width = 100 + '%';
+		pg.style.height = 100 + '%';
+		pg.style.margin = 0 + 'px';
+		pg.style.padding = 0 + 'px';
+		if (isIE) {
+			pg.style.filter = "alpha(opacity=0)";	
+		}else {
+			pg.style.opacity = 0.0;
+		}
+		pg.style.backgroundColor="rgb(255, 255, 255)";
+		pg.style.textAlign = "center";
+		pg.style.backgroundPosition="center center";
+		pg.style.backgroundRepeat="no-repeat";
+		pg.style.backgroundImage="url(ui/graphic_support/finish.gif)";		
+		document.getElementsByTagName("body")[0].appendChild(pg);
+		shiftOpacity('GoodBy',1000);
+		window.setTimeout("history.back()",1000);
+		stopSound(curSoundID); 
+		history.back();
+	}
+}
+// shutdown process
+
+// scalable images extension
+function createDetector() {
+	var em = document.createElement('div');
+	em.id='EMSizeControl'; em.style.position="absolute"; em.style.left="-999px";
+	em.style.width="1em"; em.style.height="1em"; em.style.opacity=0.0;
+	document.getElementsByTagName("body")[0].appendChild(em);
+	var nop=document.getElementById('EMSizeControl');
+	if(!nop||findPosX(nop)!=-999) {}else {
+		opac=document.getElementById('EMSizeControl').style.opacity;
+		empx=document.getElementById('EMSizeControl').offsetHeight;
+		document.body.removeChild(document.getElementById('EMSizeControl'));
+		var objects = document.getElementsByTagName('img'); 
+		var j = 0; var i = 0; var k = 0; var d; var obj;
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^scale/i)) {
+				images[j] = objects[i];
+				++j;
+			}
+		}		
+		var objects = document.getElementsByTagName('canvas'); j = 0; 
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^scale/i)) {
+				canvas[objects[i].id] = objects[i];
+				if(j==0) {
+					if(objects[i].getContext) {
+						canvasSupport = true;
+					}
+					++j;
+				}
+			}
+		}	
+		if(canvasSupport!=true) {
+			for (d in canvas) {
+				canvas[d].setAttribute("width",1); 
+				canvas[d].setAttribute("height",1); 
+			} 
+		}	
+		var objects = document.getElementsByTagName('table'); 
+		j = 0; k = 0; l = 0; var w; var h; var tmp; var cnt;
+		for (i=0; i < objects.length; i++) {
+			if(objects[i].className.match(/^piechart/i)) {
+				tmp = objects[i].id;
+				cnt = tmp.split("_");
+				obj = cnt[0] + "_canvas";
+				if(canvas[obj]) {
+					w = canvas[obj].getAttribute("width");
+					h = canvas[obj].getAttribute("height");
+					if(w>0&&h>0) {
+						piecharts[j] = objects[i];
+						em = piecharts[j].getAttribute("summary");
+						if(em != "") em = "," + em;
+						piecharts[j].setAttribute("summary", w + "," + h + em);
+						++j;