From c83fcdd487796e6cdcf32c2cec0c00760085fcf1 Mon Sep 17 00:00:00 2001
From: Damien Cassou <damien@cassou.me>
Date: Fri, 8 Dec 2023 11:34:49 +0100
Subject: [PATCH] Delete unmaintained docs/ folder

---
 docs/docco/abstractSegment.html          |  78 ----
 docs/docco/core.html                     |  21 -
 docs/docco/docco.css                     | 192 --------
 docs/docco/events.html                   | 317 -------------
 docs/docco/hashLocation.html             | 173 -------
 docs/docco/htmlCanvas.html               | 507 ---------------------
 docs/docco/optionalParameterSegment.html |  60 ---
 docs/docco/parameterSegment.html         | 118 -----
 docs/docco/route.html                    | 270 -----------
 docs/docco/routeFactory.html             |  71 ---
 docs/docco/routeMatchResult.html         | 134 ------
 docs/docco/router.html                   | 552 -----------------------
 docs/docco/staticSegment.html            |  44 --
 docs/docco/url.html                      | 156 -------
 docs/docco/widget-extensions.html        |  16 -
 docs/docco/widget.html                   | 455 -------------------
 16 files changed, 3164 deletions(-)
 delete mode 100644 docs/docco/abstractSegment.html
 delete mode 100644 docs/docco/core.html
 delete mode 100644 docs/docco/docco.css
 delete mode 100644 docs/docco/events.html
 delete mode 100644 docs/docco/hashLocation.html
 delete mode 100644 docs/docco/htmlCanvas.html
 delete mode 100644 docs/docco/optionalParameterSegment.html
 delete mode 100644 docs/docco/parameterSegment.html
 delete mode 100644 docs/docco/route.html
 delete mode 100644 docs/docco/routeFactory.html
 delete mode 100644 docs/docco/routeMatchResult.html
 delete mode 100644 docs/docco/router.html
 delete mode 100644 docs/docco/staticSegment.html
 delete mode 100644 docs/docco/url.html
 delete mode 100644 docs/docco/widget-extensions.html
 delete mode 100644 docs/docco/widget.html

diff --git a/docs/docco/abstractSegment.html b/docs/docco/abstractSegment.html
deleted file mode 100644
index 57027ca9..00000000
--- a/docs/docco/abstractSegment.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>abstractSegment.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               abstractSegment.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;klassified&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-  <span class="cm">/**</span>
-<span class="cm">   * A segment represents a single part of a route that can be matched</span>
-<span class="cm">   * against a URL segment using `match()`.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {{}} spec</span>
-<span class="cm">   * @param {string} segmentString</span>
-<span class="cm">   * @param {{}} spec.options all route options</span>
-<span class="cm">   * @param my</span>
-<span class="cm">   * @returns {abstractSegment}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">abstractSegment</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">segmentString</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">segmentString</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">options</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="cm">/**</span>
-<span class="cm">     * Answers true if route segment match URL segment</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Value captured for urlSegment</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getValue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">segmentString</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Variable part of the route.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isParameter</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Optional segments can be omitted in URLs and the</span>
-<span class="cm">     * URL will still match the route if all other non</span>
-<span class="cm">     * optional segments match.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isOptional</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * String representation for segment that can be used eg. when debugging.</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">segmentString</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="nx">abstractSegment</span><span class="p">.</span><span class="kr">class</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">abstractSegment</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/core.html b/docs/docco/core.html
deleted file mode 100644
index 4e3eea16..00000000
--- a/docs/docco/core.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>core.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               core.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="p">[</span>
-    <span class="s1">&#39;./htmlCanvas&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./widget&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./widget-extensions&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./router&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./events&#39;</span>
-  <span class="p">],</span>
-
-  <span class="kd">function</span> <span class="p">(</span><span class="nx">htmlCanvas</span><span class="p">,</span> <span class="nx">widget</span><span class="p">,</span> <span class="nx">ext</span><span class="p">,</span> <span class="nx">router</span><span class="p">,</span> <span class="nx">events</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="p">{</span>
-      <span class="nx">htmlCanvas</span> <span class="o">:</span> <span class="nx">htmlCanvas</span><span class="p">,</span>
-      <span class="nx">widget</span> <span class="o">:</span> <span class="nx">widget</span><span class="p">,</span>
-      <span class="nx">ext</span> <span class="o">:</span> <span class="nx">ext</span><span class="p">,</span>
-      <span class="nx">router</span> <span class="o">:</span> <span class="nx">router</span><span class="p">,</span>
-      <span class="nx">events</span> <span class="o">:</span> <span class="nx">events</span>
-    <span class="p">};</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/docco.css b/docs/docco/docco.css
deleted file mode 100644
index 04cc7ecb..00000000
--- a/docs/docco/docco.css
+++ /dev/null
@@ -1,192 +0,0 @@
-/*--------------------- Layout and Typography ----------------------------*/
-body {
-  font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
-  font-size: 15px;
-  line-height: 22px;
-  color: #252519;
-  margin: 0; padding: 0;
-}
-a {
-  color: #261a3b;
-}
-  a:visited {
-    color: #261a3b;
-  }
-p {
-  margin: 0 0 15px 0;
-}
-h1, h2, h3, h4, h5, h6 {
-  margin: 0px 0 15px 0;
-}
-  h1 {
-    margin-top: 40px;
-  }
-hr {
-    border: 0 none;
-    border-top: 1px solid #e5e5ee;
-    height: 1px;
-    margin: 20px 0;
-}
-#container {
-  position: relative;
-}
-#background {
-  position: fixed;
-  top: 0; left: 525px; right: 0; bottom: 0;
-  background: #f5f5ff;
-  border-left: 1px solid #e5e5ee;
-  z-index: -1;
-}
-#jump_to, #jump_page {
-  background: white;
-  -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
-  -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
-  font: 10px Arial;
-  text-transform: uppercase;
-  cursor: pointer;
-  text-align: right;
-}
-#jump_to, #jump_wrapper {
-  position: fixed;
-  right: 0; top: 0;
-  padding: 5px 10px;
-}
-  #jump_wrapper {
-    padding: 0;
-    display: none;
-  }
-    #jump_to:hover #jump_wrapper {
-      display: block;
-    }
-    #jump_page {
-      padding: 5px 0 3px;
-      margin: 0 0 25px 25px;
-    }
-      #jump_page .source {
-        display: block;
-        padding: 5px 10px;
-        text-decoration: none;
-        border-top: 1px solid #eee;
-      }
-        #jump_page .source:hover {
-          background: #f5f5ff;
-        }
-        #jump_page .source:first-child {
-        }
-table td {
-  border: 0;
-  outline: 0;
-}
-  td.docs, th.docs {
-    max-width: 450px;
-    min-width: 450px;
-    min-height: 5px;
-    padding: 10px 25px 1px 50px;
-    overflow-x: hidden;
-    vertical-align: top;
-    text-align: left;
-  }
-    .docs pre {
-      margin: 15px 0 15px;
-      padding-left: 15px;
-    }
-    .docs p tt, .docs p code {
-      background: #f8f8ff;
-      border: 1px solid #dedede;
-      font-size: 12px;
-      padding: 0 0.2em;
-    }
-    .pilwrap {
-      position: relative;
-    }
-      .pilcrow {
-        font: 12px Arial;
-        text-decoration: none;
-        color: #454545;
-        position: absolute;
-        top: 3px; left: -20px;
-        padding: 1px 2px;
-        opacity: 0;
-        -webkit-transition: opacity 0.2s linear;
-      }
-        td.docs:hover .pilcrow {
-          opacity: 1;
-        }
-  td.code, th.code {
-    padding: 14px 15px 16px 25px;
-    width: 100%;
-    vertical-align: top;
-    background: #f5f5ff;
-    border-left: 1px solid #e5e5ee;
-  }
-    pre, tt, code {
-      font-size: 12px; line-height: 18px;
-      font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace;
-      margin: 0; padding: 0;
-    }
-
-
-/*---------------------- Syntax Highlighting -----------------------------*/
-td.linenos { background-color: #f0f0f0; padding-right: 10px; }
-span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
-body .hll { background-color: #ffffcc }
-body .c { color: #408080; font-style: italic }  /* Comment */
-body .err { border: 1px solid #FF0000 }         /* Error */
-body .k { color: #954121 }                      /* Keyword */
-body .o { color: #666666 }                      /* Operator */
-body .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-body .cp { color: #BC7A00 }                     /* Comment.Preproc */
-body .c1 { color: #408080; font-style: italic } /* Comment.Single */
-body .cs { color: #408080; font-style: italic } /* Comment.Special */
-body .gd { color: #A00000 }                     /* Generic.Deleted */
-body .ge { font-style: italic }                 /* Generic.Emph */
-body .gr { color: #FF0000 }                     /* Generic.Error */
-body .gh { color: #000080; font-weight: bold }  /* Generic.Heading */
-body .gi { color: #00A000 }                     /* Generic.Inserted */
-body .go { color: #808080 }                     /* Generic.Output */
-body .gp { color: #000080; font-weight: bold }  /* Generic.Prompt */
-body .gs { font-weight: bold }                  /* Generic.Strong */
-body .gu { color: #800080; font-weight: bold }  /* Generic.Subheading */
-body .gt { color: #0040D0 }                     /* Generic.Traceback */
-body .kc { color: #954121 }                     /* Keyword.Constant */
-body .kd { color: #954121; font-weight: bold }  /* Keyword.Declaration */
-body .kn { color: #954121; font-weight: bold }  /* Keyword.Namespace */
-body .kp { color: #954121 }                     /* Keyword.Pseudo */
-body .kr { color: #954121; font-weight: bold }  /* Keyword.Reserved */
-body .kt { color: #B00040 }                     /* Keyword.Type */
-body .m { color: #666666 }                      /* Literal.Number */
-body .s { color: #219161 }                      /* Literal.String */
-body .na { color: #7D9029 }                     /* Name.Attribute */
-body .nb { color: #954121 }                     /* Name.Builtin */
-body .nc { color: #0000FF; font-weight: bold }  /* Name.Class */
-body .no { color: #880000 }                     /* Name.Constant */
-body .nd { color: #AA22FF }                     /* Name.Decorator */
-body .ni { color: #999999; font-weight: bold }  /* Name.Entity */
-body .ne { color: #D2413A; font-weight: bold }  /* Name.Exception */
-body .nf { color: #0000FF }                     /* Name.Function */
-body .nl { color: #A0A000 }                     /* Name.Label */
-body .nn { color: #0000FF; font-weight: bold }  /* Name.Namespace */
-body .nt { color: #954121; font-weight: bold }  /* Name.Tag */
-body .nv { color: #19469D }                     /* Name.Variable */
-body .ow { color: #AA22FF; font-weight: bold }  /* Operator.Word */
-body .w { color: #bbbbbb }                      /* Text.Whitespace */
-body .mf { color: #666666 }                     /* Literal.Number.Float */
-body .mh { color: #666666 }                     /* Literal.Number.Hex */
-body .mi { color: #666666 }                     /* Literal.Number.Integer */
-body .mo { color: #666666 }                     /* Literal.Number.Oct */
-body .sb { color: #219161 }                     /* Literal.String.Backtick */
-body .sc { color: #219161 }                     /* Literal.String.Char */
-body .sd { color: #219161; font-style: italic } /* Literal.String.Doc */
-body .s2 { color: #219161 }                     /* Literal.String.Double */
-body .se { color: #BB6622; font-weight: bold }  /* Literal.String.Escape */
-body .sh { color: #219161 }                     /* Literal.String.Heredoc */
-body .si { color: #BB6688; font-weight: bold }  /* Literal.String.Interpol */
-body .sx { color: #954121 }                     /* Literal.String.Other */
-body .sr { color: #BB6688 }                     /* Literal.String.Regex */
-body .s1 { color: #219161 }                     /* Literal.String.Single */
-body .ss { color: #19469D }                     /* Literal.String.Symbol */
-body .bp { color: #954121 }                     /* Name.Builtin.Pseudo */
-body .vc { color: #19469D }                     /* Name.Variable.Class */
-body .vg { color: #19469D }                     /* Name.Variable.Global */
-body .vi { color: #19469D }                     /* Name.Variable.Instance */
-body .il { color: #666666 }                     /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/docco/events.html b/docs/docco/events.html
deleted file mode 100644
index 8c35ea78..00000000
--- a/docs/docco/events.html
+++ /dev/null
@@ -1,317 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>events.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               events.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([],</span>
-    <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-
-        <span class="cm">/**</span>
-<span class="cm">         * Keeps a list of bindings/callbacks that can be added using **push()** and</span>
-<span class="cm">         * removed using **remove()**. *trigger()* executes all callbacks one by one in registration order.</span>
-<span class="cm">         *</span>
-<span class="cm">         * @param [spec] {Object}</span>
-<span class="cm">         * @param [my] {Object}</span>
-<span class="cm">         * @returns {event}</span>
-<span class="cm">         */</span>
-        <span class="kd">var</span> <span class="nx">event</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">spec</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">my</span> <span class="o">=</span> <span class="nx">my</span> <span class="o">||</span> <span class="p">{};</span>
-
-            <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">bindCallback</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="kd">var</span> <span class="nx">bindings</span> <span class="o">=</span> <span class="p">[];</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <h4>Public API</h4>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="cm">/**</span>
-<span class="cm">             * Binds callback to event. The callback will be invoked whenever the event is fired.</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param callback {function}</span>
-<span class="cm">             * @returns {eventBinding}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">bindCallback</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Like on() except callback will only be fired once</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param callback {function}</span>
-<span class="cm">             * @returns {eventBinding}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onceOn</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">onceBinding</span> <span class="o">=</span> <span class="nx">eventBinding</span><span class="p">({</span>
-                    <span class="nx">callback</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-                        <span class="nx">my</span><span class="p">.</span><span class="nx">remove</span><span class="p">(</span><span class="nx">onceBinding</span><span class="p">);</span>
-                        <span class="nx">callback</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span>
-                    <span class="p">}</span>
-                <span class="p">});</span>
-
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">onceBinding</span><span class="p">);</span>
-                <span class="k">return</span> <span class="nx">onceBinding</span><span class="p">;</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Removed &#39;binding&#39; attached to event.</span>
-<span class="cm">             * @param name {String} Name of event</span>
-<span class="cm">             * @param binding {eventBinding} Binding</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">off</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                <span class="nx">my</span><span class="p">.</span><span class="nx">remove</span><span class="p">(</span><span class="nx">binding</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Trigger event by executing all callbacks one by one in registration order.</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param arguments {Object|Object[]} Arguments passed to callback of each binding</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">trigger</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">params</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">binding</span><span class="p">.</span><span class="nx">execute</span><span class="p">(</span><span class="nx">params</span><span class="p">);</span>
-                <span class="p">});</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Unbind all callbacks bound to this event.</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">dispose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">slice</span><span class="p">().</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">binding</span><span class="p">.</span><span class="nx">unbind</span><span class="p">();</span>
-                <span class="p">});</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * @param binding {eventBinding}</span>
-<span class="cm">             */</span>
-            <span class="nx">my</span><span class="p">.</span><span class="nx">push</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">binding</span><span class="p">);</span>
-                <span class="nx">binding</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * @param binding {eventBinding}</span>
-<span class="cm">             */</span>
-            <span class="nx">my</span><span class="p">.</span><span class="nx">remove</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">bindings</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">binding</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Create and add callback binding to event</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param callback</span>
-<span class="cm">             * @returns {eventBinding}</span>
-<span class="cm">             */</span>
-            <span class="kd">function</span> <span class="nx">bindCallback</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">binding</span> <span class="o">=</span> <span class="nx">eventBinding</span><span class="p">({</span> <span class="nx">callback</span><span class="o">:</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">event</span><span class="o">:</span> <span class="nx">that</span> <span class="p">});</span>
-                <span class="nx">bindings</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">binding</span><span class="p">);</span>
-                <span class="k">return</span> <span class="nx">binding</span><span class="p">;</span>
-            <span class="p">}</span>
-
-            <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-        <span class="p">};</span>
-
-        <span class="cm">/**</span>
-<span class="cm">         * Keeps a list of events.</span>
-<span class="cm">         *</span>
-<span class="cm">         * @returns {{}}</span>
-<span class="cm">         */</span>
-        <span class="kd">var</span> <span class="nx">eventCategory</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Map of events with name as key</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="kd">var</span> <span class="nx">namedEvents</span> <span class="o">=</span> <span class="p">{};</span>
-            <span class="kd">var</span> <span class="nx">events</span> <span class="o">=</span> <span class="p">[];</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Lazily makes sure that an event exists for &#39;name&#39;.</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param name {String}</span>
-<span class="cm">             * @returns {event} Also return the event</span>
-<span class="cm">             */</span>
-            <span class="kd">function</span> <span class="nx">ensureEventHolderFor</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">hasEventNamed</span><span class="p">(</span><span class="nx">name</span><span class="p">))</span> <span class="p">{</span>
-                    <span class="nx">addEvent</span><span class="p">(</span><span class="nx">event</span><span class="p">(),</span> <span class="nx">name</span><span class="p">);</span>
-                <span class="p">}</span>
-                <span class="k">return</span> <span class="nx">namedEvents</span><span class="p">[</span><span class="nx">name</span><span class="p">];</span>
-            <span class="p">}</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Create a new event and if name i supplied adds it to event manager</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param [name] {string} Name of event in eventHandler</span>
-<span class="cm">             * @returns {event}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">createEvent</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">addEvent</span><span class="p">(</span><span class="nx">event</span><span class="p">(),</span> <span class="nx">name</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Binds callback to a named event. The callback will be invoked whenever the event is fired.</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param name {String}</span>
-<span class="cm">             * @param callback {function}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">ensureEventHolderFor</span><span class="p">(</span><span class="nx">name</span><span class="p">).</span><span class="nx">on</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Removed &#39;binding&#39; attached to event.</span>
-<span class="cm">             * @param name {String} Name of event</span>
-<span class="cm">             * @param binding {eventBinding} Binding</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">off</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">binding</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">ensureEventHolderFor</span><span class="p">(</span><span class="nx">name</span><span class="p">).</span><span class="nx">off</span><span class="p">(</span><span class="nx">binding</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Like on() except callback will only be fired once</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param name</span>
-<span class="cm">             * @param callback</span>
-<span class="cm">             * @returns {*}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onceOn</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">ensureEventHolderFor</span><span class="p">(</span><span class="nx">name</span><span class="p">).</span><span class="nx">onceOn</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Trigger all callbacks attached to event</span>
-<span class="cm">             * @param name</span>
-<span class="cm">             * @param arguments Any arguments to trigger is sent as arguments to callback.</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">trigger</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">params</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-                <span class="kd">var</span> <span class="nx">event</span> <span class="o">=</span> <span class="nx">ensureEventHolderFor</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
-                <span class="nx">event</span><span class="p">.</span><span class="nx">trigger</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">params</span><span class="p">);</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Dispose all events.</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">dispose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-                <span class="nx">events</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">event</span><span class="p">.</span><span class="nx">dispose</span><span class="p">();</span>
-                <span class="p">});</span>
-
-                <span class="nx">namedEvents</span> <span class="o">=</span> <span class="p">{};</span>
-                <span class="nx">events</span> <span class="o">=</span> <span class="p">[];</span>
-            <span class="p">};</span>
-
-
-            <span class="cm">/**</span>
-<span class="cm">             * Answers true if an event with name exists</span>
-<span class="cm">             *</span>
-<span class="cm">             * @param name {String}</span>
-<span class="cm">             * @returns {boolean}</span>
-<span class="cm">             */</span>
-            <span class="kd">function</span> <span class="nx">hasEventNamed</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">namedEvents</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="p">;</span>
-            <span class="p">}</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * @param event {event}</span>
-<span class="cm">             * @param [name] {string}</span>
-<span class="cm">             * @returns {event}</span>
-<span class="cm">             */</span>
-            <span class="kd">function</span> <span class="nx">addEvent</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="nx">events</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">event</span><span class="p">);</span>
-                <span class="k">if</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">namedEvents</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">event</span><span class="p">;</span>
-                <span class="p">}</span>
-                <span class="k">return</span> <span class="nx">event</span><span class="p">;</span>
-            <span class="p">}</span>
-
-            <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-        <span class="p">};</span>
-
-        <span class="cm">/**</span>
-<span class="cm">         * Binds a callback to an event</span>
-<span class="cm">         *</span>
-<span class="cm">         * @param spec.callback {function} Callback to execute on event</span>
-<span class="cm">         * @param spec.event {event} Event to bind callback to</span>
-
-<span class="cm">         * @returns {eventBinding}</span>
-<span class="cm">         */</span>
-        <span class="kd">var</span> <span class="nx">eventBinding</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">spec</span> <span class="o">=</span> <span class="nx">spec</span> <span class="o">||</span> <span class="p">{};</span>
-            <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span>
-
-            <span class="kd">var</span> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">callback</span><span class="p">;</span>
-            <span class="kd">var</span> <span class="nx">event</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">event</span><span class="p">;</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Is bound to an event</span>
-<span class="cm">             * @returns {boolean}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">isBound</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">event</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="p">;</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Remove itself from event, if bound.</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">unbind</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-                <span class="k">if</span> <span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">isBound</span><span class="p">())</span> <span class="p">{</span>
-                    <span class="nx">event</span><span class="p">.</span><span class="nx">off</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-                    <span class="nx">event</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
-                <span class="p">}</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * @param anEvent</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">bind</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">anEvent</span><span class="p">)</span> <span class="p">{</span>
-                <span class="nx">that</span><span class="p">.</span><span class="nx">unbind</span><span class="p">();</span>
-                <span class="k">if</span> <span class="p">(</span><span class="nx">anEvent</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">event</span> <span class="o">=</span> <span class="nx">anEvent</span><span class="p">;</span>
-                <span class="p">}</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Executes connected callback</span>
-<span class="cm">             * @param params</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">execute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">if</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="nx">callback</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">params</span><span class="p">);</span>
-                <span class="p">}</span>
-            <span class="p">};</span>
-
-            <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-        <span class="p">};</span>
-
-        <span class="cm">/**</span>
-<span class="cm">         * Singleton object that keeps a list of named event categories.</span>
-<span class="cm">         */</span>
-        <span class="kd">var</span> <span class="nx">eventManager</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Map of event categories with (category) name as key</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="kd">var</span> <span class="nx">categories</span> <span class="o">=</span> <span class="p">{};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Register a new event category with &#39;name&#39;.</span>
-<span class="cm">             * @param name</span>
-<span class="cm">             * @returns {eventCategory}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">register</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">if</span> <span class="p">(</span><span class="nx">categories</span><span class="p">[</span><span class="nx">name</span><span class="p">])</span> <span class="p">{</span>
-                    <span class="k">throw</span> <span class="p">(</span><span class="s1">&#39;A event category is already registered for &#39;</span> <span class="o">+</span> <span class="nx">name</span><span class="p">);</span>
-                <span class="p">}</span>
-                <span class="nx">categories</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">eventCategory</span><span class="p">();</span>
-
-                <span class="k">return</span> <span class="nx">categories</span><span class="p">[</span><span class="nx">name</span><span class="p">];</span>
-            <span class="p">};</span>
-
-            <span class="cm">/**</span>
-<span class="cm">             * Returns event category by name. Creates a new category if not already</span>
-<span class="cm">             * registered.</span>
-<span class="cm">             * @param name</span>
-<span class="cm">             * @returns {*}</span>
-<span class="cm">             */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">at</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">categories</span><span class="p">[</span><span class="nx">name</span><span class="p">])</span> <span class="p">{</span>
-                    <span class="nx">that</span><span class="p">.</span><span class="nx">register</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
-                <span class="p">}</span>
-
-                <span class="k">return</span> <span class="nx">categories</span><span class="p">[</span><span class="nx">name</span><span class="p">];</span>
-            <span class="p">};</span>
-
-            <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-        <span class="p">})();</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Exports Singleton event manager
-but also expose event and event category</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">eventManager</span><span class="p">.</span><span class="nx">eventCategory</span> <span class="o">=</span> <span class="nx">eventCategory</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p>@deprecated Spelling mistake</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">eventManager</span><span class="p">.</span><span class="nx">eventhandler</span> <span class="o">=</span> <span class="nx">eventCategory</span><span class="p">;</span>
-        <span class="nx">eventManager</span><span class="p">.</span><span class="nx">event</span> <span class="o">=</span> <span class="nx">event</span><span class="p">;</span>
-
-        <span class="k">return</span> <span class="nx">eventManager</span><span class="p">;</span>
-    <span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/hashLocation.html b/docs/docco/hashLocation.html
deleted file mode 100644
index 9b5528ca..00000000
--- a/docs/docco/hashLocation.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>hashLocation.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               hashLocation.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;jquery&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;../events&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;./url&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;klassified&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">jQuery</span><span class="p">,</span> <span class="nx">events</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * In modern browsers we use the &#39;hashchange&#39; event to listen for location changes. If not supported</span>
-<span class="cm">   * we poll for changes using a timer.</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">noHashChangeSupport</span> <span class="o">=</span> <span class="o">!</span><span class="p">(</span><span class="s1">&#39;onhashchange&#39;</span> <span class="k">in</span> <span class="nb">window</span><span class="p">);</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Num ms between each location change poll on browsers without &#39;hashchange&#39;</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">pollInterval</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Manages and listens for changes in the hash fragment of the URL.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @example</span>
-<span class="cm">   *    var location = hash();</span>
-<span class="cm">   *    hash.on(&#39;changed&#39;, function(newUrl) { window.alert(newUrl); });</span>
-<span class="cm">   *    location.start();</span>
-<span class="cm">   *    location.setUrl(&#39;newUrl&#39;);</span>
-<span class="cm">   *    location.setUrl(&#39;anotherUrl&#39;);</span>
-<span class="cm">   *    location.back();</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {{}} [spec]</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param [my]</span>
-<span class="cm">   * @returns {hashLocation}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">hashLocation</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="kd">var</span> <span class="nx">pollTimerId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
-
-    <span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span> <span class="c1">// last hash fragment</span>
-    <span class="nx">my</span><span class="p">.</span><span class="nx">history</span> <span class="o">=</span> <span class="p">[];</span> <span class="c1">// history of visited hash fragments</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">events</span> <span class="o">=</span> <span class="nx">events</span><span class="p">.</span><span class="nx">eventCategory</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="cm">/**</span>
-<span class="cm">     * Triggered when location change with new URL as</span>
-<span class="cm">     * argument.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @type {event}</span>
-<span class="cm">     */</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">onChanged</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s1">&#39;changed&#39;</span><span class="p">);</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Set hash fragment to URL</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {url|string} aUrl</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">setUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">aHash</span> <span class="o">=</span> <span class="nx">urlToHash</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">);</span>
-      <span class="nx">setWindowHash</span><span class="p">(</span><span class="nx">aHash</span><span class="p">);</span>
-      <span class="nx">setCurrentHash</span><span class="p">(</span><span class="nx">aHash</span><span class="p">);</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Creates a URL from current hash fragment</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {url}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">urlFromHash</span><span class="p">(</span><span class="nx">getWindowHash</span><span class="p">());</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Creates a raw URL string from a URL that can be used eg. in a href.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string|url} aUrl</span>
-<span class="cm">     * @returns {string}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">linkToUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">urlToHash</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">);</span>
-    <span class="p">};</span>
-
-
-    <span class="cm">/**</span>
-<span class="cm">     * Navigate back to previous location in history. If history is empty</span>
-<span class="cm">     * the location will be changed to fallback URL.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string|url} fallbackUrl</span>
-<span class="cm">     * @returns {string} URL</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">back</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fallbackUrl</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">that</span><span class="p">.</span><span class="nx">isHistoryEmpty</span><span class="p">())</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
-        <span class="nx">setWindowHash</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nx">pop</span><span class="p">());</span>
-      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">fallbackUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">setWindowHash</span><span class="p">(</span><span class="nx">urlToHash</span><span class="p">(</span><span class="nx">fallbackUrl</span><span class="p">));</span>
-      <span class="p">}</span>
-
-      <span class="nx">setCurrentHash</span><span class="p">();</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Return `true` if the history is empty.</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isHistoryEmpty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Start listening for URL changes. If `hashchange` is supported by the browser</span>
-<span class="cm">     * it will be used, otherwise a timer will poll for changes.</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">start</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">stop</span><span class="p">();</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span> <span class="o">=</span> <span class="nx">getWindowHash</span><span class="p">();</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">history</span> <span class="o">=</span> <span class="p">[</span><span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span><span class="p">];</span>
-
-      <span class="k">if</span> <span class="p">(</span><span class="nx">noHashChangeSupport</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">pollTimerId</span> <span class="o">=</span> <span class="nx">setInterval</span><span class="p">(</span><span class="nx">check</span><span class="p">,</span> <span class="nx">pollInterval</span><span class="p">);</span>
-      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-        <span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="s1">&#39;hashchange&#39;</span><span class="p">,</span> <span class="nx">check</span><span class="p">);</span>
-      <span class="p">}</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Stop listening for location changes and unregister all bindings.</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">stop</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">pollTimerId</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">clearInterval</span><span class="p">(</span><span class="nx">pollTimerId</span><span class="p">);</span>
-        <span class="nx">pollTimerId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
-      <span class="p">}</span>
-      <span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">unbind</span><span class="p">(</span><span class="s1">&#39;hashchange&#39;</span><span class="p">,</span> <span class="nx">check</span><span class="p">);</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Private</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="kd">function</span> <span class="nx">getWindowHash</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">hash</span><span class="p">;</span>
-    <span class="p">}</span>
-
-    <span class="kd">function</span> <span class="nx">setWindowHash</span><span class="p">(</span><span class="nx">aHash</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">hash</span> <span class="o">=</span> <span class="nx">aHash</span><span class="p">;</span>
-    <span class="p">}</span>
-
-    <span class="kd">function</span> <span class="nx">urlToHash</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">aUrl</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">aUrl</span> <span class="o">=</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">aUrl</span><span class="p">});</span>
-      <span class="p">}</span>
-      <span class="k">return</span> <span class="s1">&#39;#!/&#39;</span> <span class="o">+</span> <span class="nx">aUrl</span><span class="p">.</span><span class="nx">toString</span><span class="p">();</span>
-    <span class="p">}</span>
-
-    <span class="kd">function</span> <span class="nx">urlFromHash</span><span class="p">(</span><span class="nx">aHash</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Remove hash/hash-bang and any leading /</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">return</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">aHash</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/^#!?[\/]?/</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)});</span>
-    <span class="p">}</span>
-
-    <span class="kd">function</span> <span class="nx">setCurrentHash</span><span class="p">(</span><span class="nx">newHash</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">newHash</span> <span class="o">=</span> <span class="nx">newHash</span> <span class="o">||</span> <span class="nx">getWindowHash</span><span class="p">();</span>
-
-      <span class="k">if</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span> <span class="o">!==</span> <span class="nx">newHash</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span> <span class="o">=</span> <span class="nx">newHash</span><span class="p">;</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span><span class="p">);</span>
-      <span class="p">}</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">onChanged</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="nx">urlFromHash</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span><span class="p">));</span>
-    <span class="p">}</span>
-
-    <span class="kd">function</span> <span class="nx">check</span><span class="p">()</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">windowHash</span> <span class="o">=</span> <span class="nx">getWindowHash</span><span class="p">();</span>
-
-      <span class="kd">var</span> <span class="nx">urlChanged</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">currentHash</span> <span class="o">!==</span> <span class="nx">windowHash</span><span class="p">;</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">urlChanged</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">setCurrentHash</span><span class="p">(</span><span class="nx">windowHash</span><span class="p">);</span>
-      <span class="p">}</span>
-    <span class="p">}</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">hashLocation</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/htmlCanvas.html b/docs/docco/htmlCanvas.html
deleted file mode 100644
index d761a0bc..00000000
--- a/docs/docco/htmlCanvas.html
+++ /dev/null
@@ -1,507 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>htmlCanvas.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               htmlCanvas.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="p">[</span>
-    <span class="s1">&#39;jquery&#39;</span>
-  <span class="p">],</span>
-
-  <span class="kd">function</span> <span class="p">(</span><span class="nx">jQuery</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * @typedef {function} renderer</span>
-<span class="cm">     * @param {htmlCanvas} html</span>
-<span class="cm">     */</span>
-
-    <span class="cm">/** @typedef {({}|string|renderer|widget|htmlTagBrush|*)} renderable */</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Supported HTML 'tags'</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="kd">var</span> <span class="nx">tags</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;a abbr acronym address area article aside audio b bdi bdo big &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;blockquote body br button canvas caption cite code col colgroup command &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;datalist dd del details dfn div dl dt em embed fieldset figcaption figure &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;footer form frame frameset h1 h2 h3 h4 h5 h6 hr head header hgroup html i &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;iframe img input ins kbd keygen label legend li link map mark meta meter &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;nav noscript object ol optgroup option output p param pre progress q rp rt&#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;ruby samp script section select small source span strong style sub summary&#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;sup table tbody td textarea tfoot th thead time title tr track tt ul var&#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;video wbr&#39;</span><span class="p">).</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Supported HTML events</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="kd">var</span> <span class="nx">attributes</span> <span class="o">=</span> <span class="s1">&#39;href for id media rel src style title type&#39;</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">);</span>
-
-    <span class="kd">var</span> <span class="nx">omitSymbol</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Supported HTML attributes</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="kd">var</span> <span class="nx">events</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;blur focus focusin focusout load resize scroll unload &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;click dblclick mousedown mouseup mousemove mouseover &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;mouseout mouseenter mouseleave change select submit &#39;</span> <span class="o">+</span>
-      <span class="s1">&#39;keydown keypress keyup error dragstart dragenter dragover dragleave drop dragend&#39;</span><span class="p">).</span><span class="nx">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">);</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * htmlCanvas provides a DSL that we use to add elements to the DOM using a HTML looking syntax.</span>
-<span class="cm">     *</span>
-<span class="cm">     * The basic metaphor used is one of painting on a canvas using brushes. The canvas is the</span>
-<span class="cm">     * DOM and the brushes HTML &#39;tags&#39;. Note that it have nothing to do with the HTML5 canvas tag</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *    // A htmlCanvas is created on a jQuery object:</span>
-<span class="cm">     *    var html = htmlCanvas($(&#39;BODY&#39;));</span>
-<span class="cm">     *</span>
-<span class="cm">     *    // We write HTML using standard tags:</span>
-<span class="cm">     *    html.h1(&#39;Hello World!&#39;);</span>
-<span class="cm">     *</span>
-<span class="cm">     *    // and standard attributes:</span>
-<span class="cm">     *    html.a({ id: &#39;id&#39;, href: &#39;http://www.google.se&#39;}, &#39;Google&#39;);</span>
-<span class="cm">     *</span>
-<span class="cm">     *    // Callbacks can be attached to events:</span>
-<span class="cm">     *    html.a({click: function() { alert(&#39;Hello World!&#39;)} &#39;Click me!&#39;);</span>
-<span class="cm">     *</span>
-<span class="cm">     *    // Tags can be nested:</span>
-<span class="cm">     *    html.div({&#39;class&#39; : &#39;outer_div&#39;},</span>
-<span class="cm">     *      html.div({&#39;class&#39; : &#39;inner_div&#39;},</span>
-<span class="cm">     *        html.span(&#39;Some text&#39;)</span>
-<span class="cm">     *      )</span>
-<span class="cm">     *    );</span>
-<span class="cm">     *</span>
-<span class="cm">     *    // Parts can be assigned to variables:</span>
-<span class="cm">     *    var homeButton = html.a(&#39;Home&#39;).href(&#39;/&#39;);</span>
-<span class="cm">     *    if(showAlert) {</span>
-<span class="cm">     *      homeButton.click(function() { alert(&#39;Hello&#39;); });</span>
-<span class="cm">     *    }</span>
-<span class="cm">     *</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string|jQuery|htmlTagBrush} [rootElement] Element to  &quot;paint&quot; on. If not supplied a document fragment will be created</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {htmlCanvas}</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">htmlCanvas</span><span class="p">(</span><span class="nx">rootElement</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="kd">var</span> <span class="nx">root</span> <span class="o">=</span> <span class="nx">htmlTagBrush</span><span class="p">({</span> <span class="nx">element</span><span class="o">:</span> <span class="nx">rootElement</span> <span class="p">});</span>
-
-      <span class="cm">/** @typedef {{}} htmlCanvas */</span>
-      <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * The root object that brushes will append elements to.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @type {htmlTagBrush}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">root</span> <span class="o">=</span> <span class="nx">root</span><span class="p">;</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Creates a brush that &quot;paints&quot; a tag of type tagName. Any children supplied</span>
-<span class="cm">       * will be appended as children to brush.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} tagName Type of element (supported by document.createElement)</span>
-<span class="cm">       * @param {renderable[]} [children] Renderable objects to append as children of brush.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">tag</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">tagName</span><span class="p">,</span> <span class="nx">children</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">tagBrush</span> <span class="o">=</span> <span class="nx">htmlTagBrush</span><span class="p">({</span> <span class="nx">tag</span><span class="o">:</span> <span class="nx">tagName</span><span class="p">,</span> <span class="nx">children</span><span class="o">:</span> <span class="nx">children</span> <span class="p">});</span>
-        <span class="nx">root</span><span class="p">.</span><span class="nx">appendBrush</span><span class="p">(</span><span class="nx">tagBrush</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">tagBrush</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Tags builders for each supported tag type.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  html.h1(&#39;Title&#39;);</span>
-<span class="cm">       *  html.strong(&#39;Important stuff&#39;);</span>
-<span class="cm">       *  html.span(html.strong(userName), &#39; signed in.&#39;)</span>
-<span class="cm">       */</span>
-      <span class="nx">tags</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">tagName</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">[</span><span class="nx">tagName</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-          <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
-          <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">tag</span><span class="p">(</span><span class="nx">tagName</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span>
-        <span class="p">};</span>
-      <span class="p">});</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns omit symbol that is used to omit a attribute pair</span>
-<span class="cm">       * and omit the object appended to brush.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">omit</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">omitSymbol</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append an object to the root brush</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param anObject</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">render</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
-        <span class="nx">root</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="nx">args</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append an unescaped HTML string to the root brush</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">raw</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">root</span><span class="p">.</span><span class="nx">raw</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append an unescaped string replacing all spaces by</span>
-<span class="cm">       * non-breaking spaces</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">renderNonBreaking</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">raw</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\s/g</span><span class="p">,</span> <span class="s2">&quot;&amp;nbsp;&quot;</span><span class="p">));</span>
-      <span class="p">};</span>
-
-      <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-    <span class="p">}</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * A tag brush object represents a DOM element, built on a canvas. The element can</span>
-<span class="cm">     * be created from a &#39;tag&#39; or an element matched using &#39;jQuery&#39;.</span>
-<span class="cm">     *</span>
-<span class="cm">     * Note: A brush is usually only created from `htmlCanvas` and it should only</span>
-<span class="cm">     * be used once.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {{}} spec</span>
-<span class="cm">     * @param {string} [spec.tag] Name of tag to create (using document.createElement)</span>
-<span class="cm">     * @param {string|jQuery|widget|htmlTagBrush|*} [spec.element]</span>
-<span class="cm">     * @param {renderable[]} [spec.children]</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {htmlTagBrush}</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">htmlTagBrush</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="cm">/** @typedef {{}} htmlTagBrush */</span>
-      <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Create a new element from tagName or get it from elements.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @type {HTMLElement}</span>
-<span class="cm">       */</span>
-      <span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">tag</span> <span class="o">?</span> <span class="nx">createElement</span><span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">tag</span><span class="p">)</span> <span class="o">:</span> <span class="nx">getElement</span><span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">element</span><span class="p">);</span>
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;htmlTagBrush requires an element&#39;</span><span class="p">);</span>
-      <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * DOM element created by brush</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {HTMLElement}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">element</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">element</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Appends child objects to brush. Can take a single or several arguments.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  html.h1().render(</span>
-<span class="cm">       *    &#39;hello&#39;,</span>
-<span class="cm">       *    html.span(&#39;world&#39;,</span>
-<span class="cm">       *      function(html) {</span>
-<span class="cm">       *        html.img().src(&#39;foo.img&#39;);</span>
-<span class="cm">       *        }</span>
-<span class="cm">       *      )</span>
-<span class="cm">       *    );</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {renderable[]} arguments Any renderable objects</span>
-<span class="cm">       * @returns {htmlTagBrush}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">render</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
-        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">args</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">append</span><span class="p">(</span><span class="nx">args</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
-        <span class="p">}</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Implementation for `appendToBrush()` to allow a brush to be</span>
-<span class="cm">       * appended to another brush.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {htmlTagBrush} aTagBrush</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">appendToBrush</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">aTagBrush</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">aTagBrush</span><span class="p">.</span><span class="nx">appendBrush</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append brush as child.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {htmlTagBrush} aTagBrush</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">appendBrush</span> <span class="o">=</span> <span class="nx">appendBrush</span><span class="p">;</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Set unescaped html contents.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} htmlContents</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">html</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">htmlContents</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">html</span><span class="p">(</span><span class="nx">htmlContents</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append an unescaped html contents.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} htmlContents</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">raw</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">htmlContents</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">append</span><span class="p">(</span><span class="nx">htmlContents</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append an unescaped string replacing all spaces by</span>
-<span class="cm">       * non-breaking spaces</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">renderNonBreaking</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">raw</span><span class="p">(</span><span class="nx">htmlString</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\s/g</span><span class="p">,</span> <span class="s2">&quot;&amp;nbsp;&quot;</span><span class="p">));</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Bind callback to DOM event</span>
-<span class="cm">       *</span>
-<span class="cm">       * @usage</span>
-<span class="cm">       *    html.a(&#39;click me&#39;).on(&#39;click&#39;, function() {</span>
-<span class="cm">       *      alert(&#39;click&#39;);</span>
-<span class="cm">       *    });</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} eventType One or more DOM event types, such as &quot;click&quot; or &quot;submit,&quot; or custom event names.</span>
-<span class="cm">       * @param {function} callback A function to execute each time the event is triggered.</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">eventType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">bind</span><span class="p">(</span><span class="nx">eventType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Event functions for each supported event type.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  aBrush.click(function() { .. });</span>
-<span class="cm">       *  aBrush.blur(function() { .. });</span>
-<span class="cm">       */</span>
-      <span class="nx">events</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">eventType</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">[</span><span class="nx">eventType</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">eventType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
-        <span class="p">};</span>
-      <span class="p">});</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Adds a new attribute or changes the value of an existing attribute on the specified element.</span>
-<span class="cm">       * @param key</span>
-<span class="cm">       * @param value</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">setAttribute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>Omit attribute if value is omit</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span><span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="nx">omitSymbol</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-        <span class="p">}</span>
-
-        <span class="nx">element</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Accessors for each supported attribute.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  aBrush.id(&#39;id&#39;);</span>
-<span class="cm">       *  aBrush.src(&#39;javascript:0&#39;);</span>
-<span class="cm">       *  aBrush.href(&#39;#&#39;);</span>
-<span class="cm">       */</span>
-      <span class="nx">attributes</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">attributeName</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">[</span><span class="nx">attributeName</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="nx">attributeName</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span>
-        <span class="p">};</span>
-      <span class="p">});</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Set element style with key/value or object literal.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *    html.h1().css(&#39;display&#39;, &#39;block&#39;);</span>
-<span class="cm">       *    html.h1().css({&#39;display&#39; : &#39;block&#39;, &#39;color&#39; : &#39;red&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string|{}} key</span>
-<span class="cm">       * @param {string} value</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">css</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">key</span> <span class="o">===</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">css</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span>
-        <span class="p">}</span>
-        <span class="k">else</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">css</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span> <span class="c1">// otherwise assume key is a map (object literal)</span>
-        <span class="p">}</span>
-
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Set attributes using object literal.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  html.h1().attr({id : &#39;myid&#39;, &#39;class&#39; : &#39;myclass&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @note</span>
-<span class="cm">       *  Use klass or &#39;class&#39; with quotation marks as key instead of class since its a reserved word.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param object</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">attr</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">if</span> <span class="p">(</span><span class="nx">object</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <p>Attach functions</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">===</span> <span class="s2">&quot;function&quot;</span><span class="p">)</span> <span class="p">{</span>
-              <span class="nx">that</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">object</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
-            <span class="p">}</span>
-
-            <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;klass&#39;</span><span class="p">)</span> <span class="p">{</span>
-              <span class="nx">that</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">object</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
-            <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-              <span class="nx">that</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">object</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
-            <span class="p">}</span>
-          <span class="p">}</span>
-        <span class="p">}</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Appends className to class attribute</span>
-<span class="cm">       * @param className</span>
-<span class="cm">       * @returns {htmlTagBrush}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">addClass</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">className</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">addClass</span><span class="p">(</span><span class="nx">className</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Removes className from class attribute</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} className</span>
-<span class="cm">       * @returns {htmlTagBrush}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">removeClass</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">className</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">removeClass</span><span class="p">(</span><span class="nx">className</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns jQuery that match element.</span>
-<span class="cm">       * @returns {jQuery}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">jQuery</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">element</span><span class="p">());</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <p>Private</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Creates a new element from tagName</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} tagName</span>
-<span class="cm">       * @returns {Element}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">createElement</span><span class="p">(</span><span class="nx">tagName</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">tagName</span><span class="p">);</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Appends object as child to brush. A tag brush knows how to append:</span>
-<span class="cm">       *</span>
-<span class="cm">       * - strings</span>
-<span class="cm">       * - functions (that take a htmlCanvas as argument)</span>
-<span class="cm">       * - other brushes and widgets (that implements `appendToBrush()`)</span>
-<span class="cm">       * - map / object literal with attributes (eg. {id: &#39;aId&#39;, &#39;class&#39; : &#39;aClass&#39;})</span>
-<span class="cm">       * - array of valid objects (see above)</span>
-<span class="cm">       *</span>
-<span class="cm">       * all other objects are appended using:</span>
-<span class="cm">       * `jQuery(element).append(object);`</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {renderable|renderable[]|{}} object</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">append</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;undefined&#39;</span> <span class="o">||</span> <span class="nx">object</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;cannot append null or undefined to brush&#39;</span><span class="p">);</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Ignore object if it's a omit symbol</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span><span class="p">(</span><span class="nx">object</span> <span class="o">===</span> <span class="nx">omitSymbol</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span><span class="p">;</span>
-        <span class="p">}</span>
-
-        <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;object&quot;</span> <span class="o">&amp;&amp;</span> <span class="nx">object</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">===</span> <span class="nb">Array</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">object</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">append</span><span class="p">(</span><span class="nx">object</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
-          <span class="p">}</span>
-        <span class="p">}</span>
-        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">appendString</span><span class="p">(</span><span class="nx">object</span><span class="p">);</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;function&quot;</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">appendFunction</span><span class="p">(</span><span class="nx">object</span><span class="p">);</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;object&quot;</span> <span class="o">&amp;&amp;</span>
-          <span class="nx">object</span><span class="p">.</span><span class="nx">appendToBrush</span> <span class="cm">/* eg. widget and tagBrush implement appendToBrush */</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">object</span><span class="p">.</span><span class="nx">appendToBrush</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span> <span class="c1">// double dispatch</span>
-        <span class="p">}</span>
-        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;object&quot;</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="nx">object</span><span class="p">);</span> <span class="c1">// assume attributes if none of above</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-          <span class="nx">jQuery</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="nx">object</span><span class="p">);</span> <span class="c1">// default to jquery</span>
-        <span class="p">}</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Appends DOM node as last child of element or concatenate with</span>
-<span class="cm">       * text if element can&#39;t have children.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string|HTMLElement} child</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">appendChild</span><span class="p">(</span><span class="nx">child</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="nx">element</span><span class="p">.</span><span class="nx">canHaveChildren</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">element</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">child</span><span class="p">);</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-          <span class="nx">element</span><span class="p">.</span><span class="nx">text</span> <span class="o">=</span> <span class="nx">element</span><span class="p">.</span><span class="nx">text</span> <span class="o">+</span> <span class="nx">child</span><span class="p">.</span><span class="nx">innerHTML</span><span class="p">;</span>
-        <span class="p">}</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Appends element of brush</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {htmlTagBrush} aTagBrush</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">appendBrush</span><span class="p">(</span><span class="nx">aTagBrush</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">appendChild</span><span class="p">(</span><span class="nx">aTagBrush</span><span class="p">.</span><span class="nx">element</span><span class="p">());</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append text as child. `string` is escaped</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} string</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">appendString</span><span class="p">(</span><span class="nx">string</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">jQuery</span><span class="p">(</span><span class="nx">element</span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">createTextNode</span><span class="p">(</span><span class="nx">string</span><span class="p">));</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Append function by executing function with this element as canvas.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {renderer} fn</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">appendFunction</span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">brushCanvas</span> <span class="o">=</span> <span class="nx">htmlCanvas</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-        <span class="nx">fn</span><span class="p">(</span><span class="nx">brushCanvas</span><span class="p">);</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Element is set to first match if a jQuery was given.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string|jQuery|HTMLElement|widget|htmlTagBrush} [object]</span>
-<span class="cm">       * @returns {HTMLElement}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">getElement</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">&#182;</a>               </div>               <p>Create a fragment if no object</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;undefined&#39;</span> <span class="o">||</span> <span class="nx">object</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span>  <span class="nx">jQuery</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">createDocumentFragment</span><span class="p">()).</span><span class="nx">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-12">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-12">&#182;</a>               </div>               <p>Any object that implements asJQuery eg. widget and tagBrush</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">object</span> <span class="o">===</span> <span class="s2">&quot;object&quot;</span> <span class="o">&amp;&amp;</span> <span class="nx">object</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">object</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-13">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-13">&#182;</a>               </div>               <p>Fall back on jQuery if a string containing a selector expression,
-a DOM Element, an existing jQuery object or any other argument that
-jQuery accept (http://api.jquery.com/jQuery/)</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">return</span> <span class="nx">jQuery</span><span class="p">(</span><span class="nx">object</span><span class="p">).</span><span class="nx">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-      <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-14">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-14">&#182;</a>               </div>               <p>Init</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Append children to support nesting</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *    html.ul(html.li(html.a({href: &#39;#&#39;}, &#39;home&#39;));</span>
-<span class="cm">       */</span>
-      <span class="k">if</span><span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">children</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">append</span><span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">children</span><span class="p">);</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-    <span class="p">}</span>
-
-
-    <span class="k">return</span> <span class="nx">htmlCanvas</span><span class="p">;</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/optionalParameterSegment.html b/docs/docco/optionalParameterSegment.html
deleted file mode 100644
index 44f1a93e..00000000
--- a/docs/docco/optionalParameterSegment.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>optionalParameterSegment.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               optionalParameterSegment.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;./parameterSegment&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parameterSegment</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Optional parameters can have a default value.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {{}} spec abstractSegment string</span>
-<span class="cm">   * @param my</span>
-<span class="cm">   * @returns {parameter}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">optionalParameterSegment</span> <span class="o">=</span> <span class="nx">parameterSegment</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">defaultValue</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">defaults</span> <span class="o">&amp;&amp;</span> <span class="nx">my</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">defaults</span><span class="p">[</span><span class="nx">my</span><span class="p">.</span><span class="nx">name</span><span class="p">];</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="cm">/**</span>
-<span class="cm">     * Parameter value or default value if not matched.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getValue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">urlSegment</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="o">?</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">defaultValue</span> <span class="o">:</span>
-        <span class="nx">urlSegment</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Always true.</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isOptional</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * String representation for segment that can be used eg. when debugging.</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="s1">&#39;optional(&#39;</span> <span class="o">+</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getName</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="nx">optionalParameterSegment</span><span class="p">.</span><span class="kr">class</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">)</span> <span class="p">{</span>
-    <span class="cm">/**</span>
-<span class="cm">     * Match segment strings with a leading `?`.</span>
-<span class="cm">     * @param {string} segmentString</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">segmentString</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;?&#39;</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">optionalParameterSegment</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/parameterSegment.html b/docs/docco/parameterSegment.html
deleted file mode 100644
index 5e97b644..00000000
--- a/docs/docco/parameterSegment.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>parameterSegment.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               parameterSegment.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;./abstractSegment&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">abstractSegment</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Constructs validator functions from constraints parameters.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {*} constraint</span>
-<span class="cm">   * @returns {function} function that take a urlSegment as argument</span>
-<span class="cm">   */</span>
-  <span class="kd">function</span> <span class="nx">parameterValidator</span><span class="p">(</span><span class="nx">constraint</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Custom function that take a url segment as argument</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">constraint</span> <span class="o">===</span> <span class="s1">&#39;function&#39;</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">constraint</span><span class="p">;</span>
-    <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Match against RegExp</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="k">if</span><span class="p">(</span><span class="nx">constraint</span> <span class="k">instanceof</span> <span class="nb">RegExp</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">exp</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="nx">constraint</span><span class="p">);</span>
-      <span class="k">return</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">exp</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">);</span>
-      <span class="p">};</span>
-    <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Match valid options in an array</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="k">if</span><span class="p">(</span><span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">constraint</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;[object Array]&#39;</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">options</span> <span class="o">=</span> <span class="nx">constraint</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">option</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">option</span><span class="p">.</span><span class="nx">toLowerCase</span><span class="p">();</span>
-      <span class="p">});</span>
-      <span class="k">return</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">urlSegment</span><span class="p">.</span><span class="nx">toLowerCase</span><span class="p">();</span>
-        <span class="k">return</span> <span class="nx">options</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">!==</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-      <span class="p">};</span>
-    <span class="p">}</span>
-  <span class="p">}</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Parameter match URL segments if all constraints are met.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {{}} spec abstractSegment spec</span>
-<span class="cm">   * @param [my]</span>
-<span class="cm">   * @returns {parameterSegment}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">parameterSegment</span> <span class="o">=</span> <span class="nx">abstractSegment</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">segmentString</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> <span class="c1">// strip of the leading #</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">constraints</span> <span class="o">=</span> <span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">constraints</span> <span class="o">&amp;&amp;</span> <span class="nx">my</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">constraints</span><span class="p">[</span><span class="nx">my</span><span class="p">.</span><span class="nx">name</span><span class="p">]</span> <span class="o">&amp;&amp;</span>
-        <span class="p">[</span><span class="nx">my</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">constraints</span><span class="p">[</span><span class="nx">my</span><span class="p">.</span><span class="nx">name</span><span class="p">]])</span> <span class="o">||</span> <span class="p">[];</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">validators</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">constraints</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">parameterValidator</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">);</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="cm">/**</span>
-<span class="cm">     * Name is segmentString without leading property type char.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {string}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getName</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Value captured for urlSegment</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getValue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">urlSegment</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Always true</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isParameter</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Match urSegment if all constraints are met.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {boolean|*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">urlSegment</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="nx">that</span><span class="p">.</span><span class="nx">validate</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">);</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Answers true if url segment meet all constraints for parameter.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">validate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">validators</span><span class="p">.</span><span class="nx">every</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">validator</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">validator</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">);</span>
-      <span class="p">});</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * String representation for segment that can be used eg. when debugging.</span>
-<span class="cm">     * @returns {*}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="s1">&#39;param(&#39;</span> <span class="o">+</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getName</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="nx">parameterSegment</span><span class="p">.</span><span class="kr">class</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Match segment strings with a leading `#`.</span>
-<span class="cm">     * @param {string} segmentString</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">segmentString</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;#&#39;</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">parameterSegment</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/route.html b/docs/docco/route.html
deleted file mode 100644
index 583825fc..00000000
--- a/docs/docco/route.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>route.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               route.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="p">[</span><span class="s1">&#39;./routeFactory&#39;</span><span class="p">,</span> <span class="s1">&#39;../events&#39;</span><span class="p">,</span> <span class="s1">&#39;./routeMatchResult&#39;</span><span class="p">,</span> <span class="s1">&#39;jquery&#39;</span><span class="p">,</span> <span class="s1">&#39;./url&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;klassified&#39;</span><span class="p">],</span>
-  <span class="kd">function</span><span class="p">(</span><span class="nx">routeFactory</span><span class="p">,</span> <span class="nx">events</span><span class="p">,</span> <span class="nx">routeMatchResult</span><span class="p">,</span> <span class="nx">jQuery</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Routes represent the path for which an action should be taken (see `matched` event).</span>
-<span class="cm">     *</span>
-<span class="cm">     * Route is implemented as an array of segments. A route can be constructed from a segment array</span>
-<span class="cm">     * or a route pattern string.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *    var aRouteFromSegments = route({segments: arrayOfRouteSegments});</span>
-<span class="cm">     *    var aRouteFromPattern = route(&#39;/segmentA/#aParameter/?andAnOptionalParameter&#39;);</span>
-<span class="cm">     *</span>
-<span class="cm">     * Route pattern strings are parsed into segment arrays by `routeFactory`.</span>
-<span class="cm">     *</span>
-<span class="cm">     * Route match URL:s by comparing the URL segments against an array</span>
-<span class="cm">     * of route segments. A route match a URL if the segments matches the route segments.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  route(&#39;/User/#id&#39;).matchUrl(&#39;/User/john&#39;).matched(); // =&gt; true</span>
-<span class="cm">     *</span>
-<span class="cm">     * Route would match URL since first segment in URL match Route (both &#39;User&#39;) and second</span>
-<span class="cm">     * segment is matched since a route parameter will match all values (if no constraints).</span>
-<span class="cm">     *</span>
-<span class="cm">     * Some segments can be optional and other mandatory. The strategy to match route with optional</span>
-<span class="cm">     * segments is to match it against the segments and then all combinations of optional parameters.</span>
-<span class="cm">     *</span>
-<span class="cm">     * An array with all optional sequences is calculated when route is created.</span>
-<span class="cm">     *</span>
-<span class="cm">     * Note: Avoid large number of optionals since it will consume memory and slow down matching.</span>
-<span class="cm">     * You can use query parameters instead.</span>
-<span class="cm">     *</span>
-<span class="cm">     * When a URL is matched the router will bind matches parameters to corresponding segments in URL</span>
-<span class="cm">     * and return them in `matchResult`</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *</span>
-<span class="cm">     *    var result = route(&#39;/user/#id&#39;).matchUrl(&#39;/user/john&#39;);</span>
-<span class="cm">     *    console.dir(result.getValues()); // =&gt; { user: &#39;john&#39;}</span>
-<span class="cm">     *</span>
-<span class="cm">     * Routes can also be used as patterns for creating URLs</span>
-<span class="cm">     *</span>
-<span class="cm">     *    var url = route(&#39;/user/#id&#39;).expand({id: &#39;john&#39;});</span>
-<span class="cm">     *    console.log(url); // =&gt; &#39;/user/john&#39;</span>
-<span class="cm">     *</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string|{}} spec Route pattern or route spec</span>
-<span class="cm">     * @param {boolean} spec.ignoreTrailingSegments Route will match if all route segment match</span>
-<span class="cm">     * even if url have trailing unmatched segments</span>
-<span class="cm">     * @param {segment[]} [spec.segments] Array of route segments</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {{}} my</span>
-<span class="cm">     * @returns {route}</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">route</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="kd">var</span> <span class="nx">segments</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">ignoreTrailingSegments</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">optionalSequences</span><span class="p">;</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Build segments from pattern</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">segments</span> <span class="o">=</span> <span class="nx">routeFactory</span><span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">options</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Route match URL if all route segments match
-but URL still contain trailing segments (default false)</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">ignoreTrailingSegments</span> <span class="o">=</span> <span class="p">(</span><span class="nx">spec</span><span class="p">.</span><span class="nx">options</span> <span class="o">&amp;&amp;</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">ignoreTrailingSegments</span><span class="p">)</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Array with all optional sequences, ie. all combinations
-of optional parameters. Array must be ordered to match URL:s
-left to right.</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">optionalSequences</span> <span class="o">=</span> <span class="p">[];</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Pre-calculate optional sequences.</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">ensureOptionalSequences</span><span class="p">();</span>
-      <span class="p">};</span>
-
-            <span class="nx">my</span><span class="p">.</span><span class="nx">events</span> <span class="o">=</span> <span class="nx">events</span><span class="p">.</span><span class="nx">eventCategory</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="nx">that</span><span class="p">.</span><span class="nx">onMatched</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s1">&#39;matched&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>@deprecated Use event property instead</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">on</span><span class="p">;</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Match route against URL by comparing segments. Triggers</span>
-<span class="cm">       * `onMatched` event on match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} url</span>
-<span class="cm">       * @returns {routeMatchResult}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">matchUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">match</span> <span class="o">=</span> <span class="nx">findMatch</span><span class="p">(</span><span class="nx">url</span><span class="p">);</span>
-        <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">match</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">routeMatchResult</span><span class="p">.</span><span class="nx">routeNoMatchResult</span><span class="p">;</span>
-        <span class="p">}</span>
-
-        <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">createMatchResult</span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
-                <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">&#39;matched&#39;</span><span class="p">,</span> <span class="nx">result</span><span class="p">);</span>
-
-        <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Expands route into a url. All non optional route parameters must exist</span>
-<span class="cm">       * in `params`.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {{}} params Key/Values where keys are route parameter names and values the values to use</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string} URL string</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">expand</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">params</span> <span class="o">=</span> <span class="nx">params</span> <span class="o">||</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <p>Try to expand route into URL</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">urlSegments</span> <span class="o">=</span> <span class="p">[];</span>
-        <span class="nx">segments</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">routeSegment</span><span class="p">)</span> <span class="p">{</span>
-          <span class="kd">var</span> <span class="nx">urlSegment</span><span class="p">;</span>
-          <span class="k">if</span><span class="p">(</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">isParameter</span><span class="p">())</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <p>Use supplied value for parameters</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="nx">urlSegment</span> <span class="o">=</span> <span class="nx">params</span><span class="p">[</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getName</span><span class="p">()];</span>
-          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>name/value for segments</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="nx">urlSegment</span> <span class="o">=</span> <span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getValue</span><span class="p">();</span>
-          <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">&#182;</a>               </div>               <p>Skip if no match and optional</p>             </td>             <td class="code">               <div class="highlight"><pre>          <span class="k">if</span><span class="p">(</span><span class="nx">urlSegment</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span>
-            <span class="nx">routeSegment</span><span class="p">.</span><span class="nx">isOptional</span><span class="p">())</span> <span class="p">{</span>
-            <span class="k">return</span><span class="p">;</span>
-          <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-12">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-12">&#182;</a>               </div>               <p>Validate segment</p>             </td>             <td class="code">               <div class="highlight"><pre>          <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">))</span> <span class="p">{</span>
-            <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Could not generate a valid URL&#39;</span><span class="p">);</span>
-          <span class="p">}</span>
-
-          <span class="nx">urlSegments</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">);</span>
-        <span class="p">});</span>
-
-        <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="p">{};</span>
-
-        <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">params</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">param</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">that</span><span class="p">.</span><span class="nx">hasParameter</span><span class="p">(</span><span class="nx">param</span><span class="p">))</span> <span class="p">{</span>
-            <span class="nx">query</span><span class="p">[</span><span class="nx">param</span><span class="p">]</span> <span class="o">=</span> <span class="nx">params</span><span class="p">[</span><span class="nx">param</span><span class="p">];</span></pre></div>             </td>           </tr>                               <tr id="section-13">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-13">&#182;</a>               </div>               <p>Handle array param values</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="k">if</span><span class="p">(</span><span class="nx">query</span><span class="p">[</span><span class="nx">param</span><span class="p">]</span> <span class="k">instanceof</span> <span class="nb">Array</span><span class="p">)</span> <span class="p">{</span>
-              <span class="nx">query</span><span class="p">[</span><span class="nx">param</span><span class="p">]</span> <span class="o">=</span> <span class="nx">query</span><span class="p">[</span><span class="nx">param</span><span class="p">].</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">);</span>
-            <span class="p">}</span>
-          <span class="p">}</span>
-        <span class="p">});</span>
-
-        <span class="k">return</span> <span class="nx">url</span><span class="p">.</span><span class="nx">build</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">),</span> <span class="nx">query</span><span class="p">).</span><span class="nx">toString</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Answers true if parameter with `name` exists in route.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} name</span>
-<span class="cm">       * @returns {boolean}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">hasParameter</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">segments</span><span class="p">.</span><span class="nx">some</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">segment</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">segment</span><span class="p">.</span><span class="nx">isParameter</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="nx">segment</span><span class="p">.</span><span class="nx">getName</span><span class="p">()</span> <span class="o">===</span> <span class="nx">name</span><span class="p">;</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns a string representation of route useful for debugging.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="s1">&#39;route(&#39;</span> <span class="o">+</span> <span class="nx">segments</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span><span class="p">;</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-14">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-14">&#182;</a>               </div>               <p>Private</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Checks if an array of url segments match a sequence of route segments.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string[]} urlSegments</span>
-<span class="cm">       * @param {segments[]} [sequence] Route segments will be used as default</span>
-<span class="cm">       * @returns {boolean}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">isMatch</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">,</span> <span class="nx">sequence</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">sequence</span> <span class="o">=</span> <span class="nx">sequence</span> <span class="o">||</span> <span class="nx">segments</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-15">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-15">&#182;</a>               </div>               <p>Can not match if different sizes</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">.</span><span class="nx">length</span> <span class="o">!=</span> <span class="nx">sequence</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">ignoreTrailingSegments</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-16">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-16">&#182;</a>               </div>               <p>All routeSegments much match corresponding URL segment</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">return</span> <span class="nx">sequence</span><span class="p">.</span><span class="nx">every</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">routeSegment</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
-          <span class="kd">var</span> <span class="nx">urlSegment</span> <span class="o">=</span> <span class="nx">urlSegments</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
-          <span class="k">return</span> <span class="nx">urlSegment</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="nx">routeSegment</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns first sequence of segments that match url or null if no sequence match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} url</span>
-<span class="cm">       * @returns {segment[]}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">findMatch</span><span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">urlSegments</span> <span class="o">=</span> <span class="nx">url</span><span class="p">.</span><span class="nx">getSegments</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-17">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-17">&#182;</a>               </div>               <p>Try match url segments</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">if</span><span class="p">(</span><span class="nx">isMatch</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">))</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">segments</span><span class="p">;</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-18">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-18">&#182;</a>               </div>               <p>then optional sequences</p>             </td>             <td class="code">               <div class="highlight"><pre>                <span class="kd">var</span> <span class="nx">sequenceIndex</span><span class="p">;</span>
-        <span class="k">for</span><span class="p">(</span><span class="nx">sequenceIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">sequenceIndex</span> <span class="o">&lt;</span> <span class="nx">optionalSequences</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">sequenceIndex</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">if</span><span class="p">(</span><span class="nx">isMatch</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">,</span> <span class="nx">optionalSequences</span><span class="p">[</span><span class="nx">sequenceIndex</span><span class="p">]))</span> <span class="p">{</span>
-            <span class="k">return</span> <span class="nx">optionalSequences</span><span class="p">[</span><span class="nx">sequenceIndex</span><span class="p">];</span>
-          <span class="p">}</span>
-        <span class="p">}</span>
-
-        <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Pre-calculate all optional sequences of segments.</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">ensureOptionalSequences</span> <span class="p">()</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-19">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-19">&#182;</a>               </div>               <p>Find positions for optionals</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">optionalPositions</span> <span class="o">=</span> <span class="p">[];</span>
-        <span class="nx">segments</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">segment</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">if</span><span class="p">(</span><span class="nx">segment</span><span class="p">.</span><span class="nx">isOptional</span><span class="p">())</span> <span class="p">{</span>
-            <span class="nx">optionalPositions</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">index</span><span class="p">);</span>
-          <span class="p">}</span>
-        <span class="p">});</span>
-
-        <span class="k">if</span><span class="p">(</span><span class="nx">optionalPositions</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">15</span><span class="p">)</span>  <span class="p">{</span>
-          <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span> <span class="p">(</span><span class="s1">&#39;Too many optional arguments. &quot;&#39;</span> <span class="o">+</span> <span class="nx">optionalPositions</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span>
-            <span class="s1">&#39;&quot;&quot; optionals would generate  &#39;</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="nx">optionalPositions</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="o">+</span>
-            <span class="s1">&#39; optional sequences.&#39;</span><span class="p">);</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-20">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-20">&#182;</a>               </div>               <p>Generate possible sequences</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">possibleOptionalSequences</span> <span class="o">=</span> <span class="nx">orderedSubsets</span><span class="p">(</span><span class="nx">optionalPositions</span><span class="p">);</span>
-
-        <span class="nx">possibleOptionalSequences</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">sequence</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-21">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-21">&#182;</a>               </div>               <p>Clone segments array and remove optionals matching
-indexes in index sequence</p>             </td>             <td class="code">               <div class="highlight"><pre>          <span class="kd">var</span> <span class="nx">optionalSequence</span> <span class="o">=</span> <span class="nx">segments</span><span class="p">.</span><span class="nx">slice</span><span class="p">();</span>
-          <span class="nx">sequence</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">optionalIndex</span><span class="p">,</span> <span class="nx">numRemoved</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-22">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-22">&#182;</a>               </div>               <p>Remove optional but take in to account that we have already
-removed {numRemoved} from permutation.</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="nx">optionalSequence</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">optionalIndex</span> <span class="o">-</span> <span class="nx">numRemoved</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-          <span class="p">});</span>
-
-          <span class="nx">optionalSequences</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">optionalSequence</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Create a &#39;routeMatchResult&#39; from a matched sequence.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {segment[]} match Matched segment sequence</span>
-<span class="cm">       * @param {url} url Matched URL</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {routeMatchResult}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">createMatchResult</span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">urlSegments</span> <span class="o">=</span> <span class="nx">url</span><span class="p">.</span><span class="nx">getSegments</span><span class="p">();</span>
-
-        <span class="kd">var</span> <span class="nx">parameterValues</span> <span class="o">=</span> <span class="p">{};</span>
-        <span class="nx">segments</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">routeSegment</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">isParameter</span><span class="p">())</span> <span class="p">{</span>
-            <span class="k">return</span><span class="p">;</span>
-          <span class="p">}</span>
-
-          <span class="kd">var</span> <span class="nx">matchedIndex</span> <span class="o">=</span> <span class="nx">match</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">routeSegment</span><span class="p">);</span>
-          <span class="k">if</span><span class="p">(</span><span class="nx">matchedIndex</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">parameterValues</span><span class="p">[</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getName</span><span class="p">()]</span> <span class="o">=</span> <span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getValue</span><span class="p">(</span><span class="nx">urlSegments</span><span class="p">[</span><span class="nx">matchedIndex</span><span class="p">]);</span>
-          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-            <span class="nx">parameterValues</span><span class="p">[</span><span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getName</span><span class="p">()]</span> <span class="o">=</span> <span class="nx">routeSegment</span><span class="p">.</span><span class="nx">getValue</span><span class="p">();</span>
-          <span class="p">}</span>
-        <span class="p">});</span>
-
-
-        <span class="k">return</span> <span class="nx">routeMatchResult</span><span class="p">({</span><span class="nx">route</span><span class="o">:</span> <span class="nx">that</span><span class="p">,</span> <span class="nx">url</span><span class="o">:</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">values</span><span class="o">:</span> <span class="nx">parameterValues</span> <span class="p">});</span>
-      <span class="p">}</span>
-    <span class="p">});</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Generates all subsets of an array with same internal order. Returned subsets are</span>
-<span class="cm">     * ordered in right to left order.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  orderedSubsets([1,2,3]); // =&gt; [[1,2,3],[2,3],[1,3],[3],[1,2],[2],[1]]</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {[]} input</span>
-<span class="cm">     * @returns {[[]]} Array with all subset arrays</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">orderedSubsets</span><span class="p">(</span><span class="nx">input</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">results</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">result</span><span class="p">,</span> <span class="nx">mask</span><span class="p">,</span>
-        <span class="nx">total</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">input</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span>
-
-      <span class="k">for</span> <span class="p">(</span><span class="nx">mask</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">mask</span> <span class="o">&lt;</span> <span class="nx">total</span><span class="p">;</span> <span class="nx">mask</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">result</span> <span class="o">=</span> <span class="p">[];</span>
-        <span class="nx">i</span> <span class="o">=</span> <span class="nx">input</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
-        <span class="k">do</span> <span class="p">{</span>
-          <span class="k">if</span> <span class="p">((</span><span class="nx">mask</span> <span class="o">&amp;</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="nx">i</span><span class="p">))</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">result</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">input</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
-          <span class="p">}</span>
-        <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="nx">i</span><span class="o">--</span><span class="p">);</span>
-        <span class="nx">results</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">results</span><span class="p">;</span>
-    <span class="p">}</span>
-
-    <span class="k">return</span> <span class="nx">route</span><span class="p">;</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/routeFactory.html b/docs/docco/routeFactory.html
deleted file mode 100644
index 4d0b86ec..00000000
--- a/docs/docco/routeFactory.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>routeFactory.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               routeFactory.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;./parameterSegment&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;./optionalParameterSegment&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;./staticSegment&#39;</span><span class="p">,</span>
-  <span class="s1">&#39;./abstractSegment&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parameterSegment</span><span class="p">,</span> <span class="nx">optionalParameterSegment</span><span class="p">,</span> <span class="nx">staticSegment</span><span class="p">,</span> <span class="nx">abstractSegment</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Token/Char used to separate segments in route patterns.</span>
-<span class="cm">   * @type {string}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">routePatternSeparator</span> <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="p">;</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Creates a route from pattern. A pattern is a string with route segments</span>
-<span class="cm">   * separated by `routePatternSeparator`.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @example</span>
-<span class="cm">   *  routeFactory(`/foo/#bar/?baz`);</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {string} pattern</span>
-<span class="cm">   * @param {{}} options</span>
-<span class="cm">   * @returns {abstractSegment[]}</span>
-<span class="cm">   */</span>
-  <span class="kd">function</span> <span class="nx">routeFactory</span><span class="p">(</span><span class="nx">pattern</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">pattern</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="p">[];</span>
-    <span class="p">}</span>
-
-    <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
-    <span class="kd">var</span> <span class="nx">segmentStrings</span> <span class="o">=</span> <span class="nx">pattern</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="nx">routePatternSeparator</span><span class="p">);</span>
-
-    <span class="kd">var</span> <span class="nx">nonEmptySegmentStrings</span> <span class="o">=</span> <span class="nx">segmentStrings</span>
-      <span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">call</span><span class="p">,</span> <span class="nb">String</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">trim</span><span class="p">)</span>
-      <span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">);</span>
-
-    <span class="kd">var</span> <span class="nx">segmentArray</span> <span class="o">=</span> <span class="nx">nonEmptySegmentStrings</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">segmentFactory</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
-    <span class="p">});</span>
-
-    <span class="k">return</span> <span class="nx">segmentArray</span><span class="p">;</span>
-  <span class="p">}</span>
-
-
-  <span class="cm">/**</span>
-<span class="cm">   * Create segment from string</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {string} segmentString</span>
-<span class="cm">   * @param {{}} options</span>
-<span class="cm">   * @returns {abstractSegment}</span>
-<span class="cm">   */</span>
-  <span class="kd">function</span> <span class="nx">segmentFactory</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
-
-    <span class="kd">var</span> <span class="nx">segments</span> <span class="o">=</span> <span class="nx">abstractSegment</span><span class="p">.</span><span class="nx">allSubclasses</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Find segment type from string</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">segments</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">segment</span> <span class="o">=</span> <span class="nx">segments</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
-      <span class="k">if</span><span class="p">(</span><span class="nx">segment</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">))</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">segment</span><span class="p">({</span>
-          <span class="nx">segmentString</span><span class="o">:</span> <span class="nx">segmentString</span><span class="p">,</span>
-          <span class="nx">options</span><span class="o">:</span> <span class="nx">options</span>
-        <span class="p">});</span>
-      <span class="p">}</span>
-    <span class="p">}</span>
-
-    <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
-  <span class="p">}</span>
-
-  <span class="k">return</span> <span class="nx">routeFactory</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/routeMatchResult.html b/docs/docco/routeMatchResult.html
deleted file mode 100644
index 8097b88d..00000000
--- a/docs/docco/routeMatchResult.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>routeMatchResult.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               routeMatchResult.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;klassified&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * Route match result are used as the answer of matching a url against a route.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param {{}} [spec]</span>
-<span class="cm">   * @param {{}} spec.url Matched URL</span>
-<span class="cm">   * @param {{}} spec.route Matched Route</span>
-<span class="cm">   * @param {{}} spec.values Hash with matched parameter names as keys and matching url segment values.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @returns {routeMatchResult}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">routeMatchResult</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="kd">var</span> <span class="nx">url</span><span class="p">;</span>
-    <span class="kd">var</span> <span class="nx">route</span><span class="p">;</span>
-    <span class="kd">var</span> <span class="nx">urlParameters</span><span class="p">;</span>
-    <span class="kd">var</span> <span class="nx">routeParameters</span><span class="p">;</span>
-    <span class="kd">var</span> <span class="nx">parameters</span><span class="p">;</span>
-
-    <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-      <span class="nx">url</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">url</span><span class="p">;</span>
-      <span class="nx">route</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">route</span><span class="p">;</span>
-
-      <span class="nx">urlParameters</span> <span class="o">=</span> <span class="p">(</span><span class="nx">url</span> <span class="o">&amp;&amp;</span> <span class="nx">url</span><span class="p">.</span><span class="nx">getQuery</span> <span class="o">&amp;&amp;</span> <span class="nx">url</span><span class="p">.</span><span class="nx">getQuery</span><span class="p">())</span> <span class="o">||</span> <span class="p">{};</span>
-      <span class="nx">routeParameters</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">values</span> <span class="o">||</span> <span class="p">{};</span>
-      <span class="nx">parameters</span> <span class="o">=</span> <span class="nx">mergeParameters</span><span class="p">(</span><span class="nx">routeParameters</span><span class="p">,</span> <span class="nx">urlParameters</span><span class="p">);</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="cm">/**</span>
-<span class="cm">     * Matched route</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {route}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getRoute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">route</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Matched URL</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {url}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getUrl</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">url</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Answers true if route match URL</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">isMatch</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Values for parameters in route</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {{}}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getRouteParameters</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">routeParameters</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Values for parameters in query</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {{}}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getQueryParameters</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">url</span><span class="p">.</span><span class="nx">getQuery</span><span class="p">();</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * All matched parameters</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {{}}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getParameters</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">parameters</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Constructs an array with all parameters in same order as in route pattern with</span>
-<span class="cm">     * query parameter as the last value.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {Array}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">getActionArguments</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">actionArguments</span> <span class="o">=</span>  <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">routeParameters</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">parameterName</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">routeParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">];</span>
-      <span class="p">});</span>
-      <span class="nx">actionArguments</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">url</span><span class="p">.</span><span class="nx">getQuery</span><span class="p">());</span>
-      <span class="k">return</span> <span class="nx">actionArguments</span><span class="p">;</span>
-    <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Private</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="kd">function</span> <span class="nx">mergeParameters</span><span class="p">(</span><span class="nx">routeParameters</span><span class="p">,</span> <span class="nx">queryParameters</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">allValues</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Fill with route parameters</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">parameterName</span> <span class="k">in</span> <span class="nx">routeParameters</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">routeParameters</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">parameterName</span><span class="p">))</span> <span class="p">{</span>
-          <span class="nx">allValues</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">]</span> <span class="o">=</span> <span class="nx">routeParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">];</span>
-        <span class="p">}</span>
-      <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Fill with query parameters</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">queryParameterName</span> <span class="k">in</span> <span class="nx">queryParameters</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">queryParameters</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">queryParameterName</span><span class="p">))</span> <span class="p">{</span>
-          <span class="nx">allValues</span><span class="p">[</span><span class="nx">queryParameterName</span><span class="p">]</span> <span class="o">=</span> <span class="nx">queryParameters</span><span class="p">[</span><span class="nx">queryParameterName</span><span class="p">];</span>
-        <span class="p">}</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">allValues</span><span class="p">;</span>
-
-    <span class="p">}</span>
-  <span class="p">});</span>
-
-  <span class="nx">routeMatchResult</span><span class="p">.</span><span class="kr">class</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Result to use when match does not match url</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">routeNoMatchResult</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-
-      <span class="cm">/** @typedef {routeMatchResult} routeNoMatchResult */</span>
-      <span class="kd">var</span> <span class="nx">instance</span> <span class="o">=</span> <span class="nx">that</span><span class="p">();</span>
-
-      <span class="nx">instance</span><span class="p">.</span><span class="nx">isMatch</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="k">return</span> <span class="nx">instance</span><span class="p">;</span>
-    <span class="p">}());</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">routeMatchResult</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/router.html b/docs/docco/router.html
deleted file mode 100644
index e2f46867..00000000
--- a/docs/docco/router.html
+++ /dev/null
@@ -1,552 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>router.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               router.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="p">[</span>
-    <span class="s1">&#39;jquery&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;../events&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./route&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./url&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./hashLocation&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;klassified&#39;</span>
-  <span class="p">],</span>
-  <span class="kd">function</span><span class="p">(</span><span class="nx">jQuery</span><span class="p">,</span> <span class="nx">events</span><span class="p">,</span> <span class="nx">route</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">hashLocation</span><span class="p">,</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Lazily creates a singleton instance of</span>
-<span class="cm">     * hash-fragment listener `hashLocation()`.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {hashLocation}</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">hashSingleton</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hashSingleton</span><span class="p">.</span><span class="nx">instance</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">hashSingleton</span><span class="p">.</span><span class="nx">instance</span> <span class="o">=</span> <span class="nx">hashLocation</span><span class="p">();</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">hashSingleton</span><span class="p">.</span><span class="nx">instance</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">    * Router allow you to keep state in the URL. When a user visits a specific URL the application</span>
-<span class="cm">    * can be transformed accordingly.</span>
-<span class="cm">    *</span>
-<span class="cm">    * Router have a routing table consisting of an array of routes. When the router resolves a URL</span>
-<span class="cm">    * each route is matched against the URL one-by-one. The order is defined by the route priority</span>
-<span class="cm">    * property (lower first). If two routes have the same priority or if priority is omitted, routes</span>
-<span class="cm">    * are matched in registration order.</span>
-<span class="cm">    *</span>
-<span class="cm">    * @param [spec]</span>
-<span class="cm">    * @param [spec.locationHandler] hashSingleton by default</span>
-<span class="cm">    *</span>
-<span class="cm">    * @returns {{}}</span>
-<span class="cm">    */</span>
-    <span class="kd">var</span> <span class="nx">router</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">location</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">locationHandler</span> <span class="o">||</span> <span class="nx">hashSingleton</span><span class="p">();</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span> <span class="o">=</span> <span class="p">[];</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span> <span class="o">=</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Listen for URL changes and resolve URL when changed</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">onChanged</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="nx">my</span><span class="p">.</span><span class="nx">resolveUrl</span><span class="p">();</span> <span class="p">});</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Events</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="nx">my</span><span class="p">.</span><span class="nx">events</span> <span class="o">=</span> <span class="nx">events</span><span class="p">.</span><span class="nx">eventCategory</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Triggered when a route is matched with `routeMatchResult` as argument.</span>
-<span class="cm">       * @type {event}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onRouteMatched</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s1">&#39;routeMatched&#39;</span><span class="p">);</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Triggered when a route is not matched with &#39;url&#39; as argument.</span>
-<span class="cm">       * @type {event}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onRouteNotFound</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s1">&#39;routeNotFound&#39;</span><span class="p">);</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Triggered each time a URL is resolved with `url` as argument</span>
-<span class="cm">       * @type {event}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onResolveUrl</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">(</span><span class="s1">&#39;resolveUrl&#39;</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>@deprecated Use event property instead</p>             </td>             <td class="code">               <div class="highlight"><pre>            <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">on</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Tries to resolve URL by matching the URL against all routes in</span>
-<span class="cm">       * route table. Unless `fallThrough` is set on the matched route, router</span>
-<span class="cm">       * will stop on first match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Last match is also stored as `my.lastMatch`</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} [aUrl] A URL or current url as default</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">resolveUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">aUrl</span> <span class="o">===</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">aUrl</span> <span class="o">=</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">aUrl</span><span class="p">});</span>
-        <span class="p">}</span>
-
-        <span class="nx">my</span><span class="p">.</span><span class="nx">resolveUrl</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Creates and adds a new route to the routing table.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *</span>
-<span class="cm">       *    // Simplest possible route</span>
-<span class="cm">       *    aRouter.addRoute({</span>
-<span class="cm">       *      pattern: &#39;/user/#id&#39;,</span>
-<span class="cm">       *      action: function(id, query) { console.log(id, query);},</span>
-<span class="cm">       *    });</span>
-<span class="cm">       *</span>
-<span class="cm">       *    // Route with name and priority,</span>
-<span class="cm">       *    aRouter.addRoute({</span>
-<span class="cm">       *      name: &#39;user&#39;,</span>
-<span class="cm">       *      pattern: &#39;/user/#id&#39;,</span>
-<span class="cm">       *      priority: 4000,</span>
-<span class="cm">       *      action: function(id) { console.log(id);},</span>
-<span class="cm">       *    });</span>
-<span class="cm">       *</span>
-<span class="cm">       *    // Route with only pattern and custom onMatched event handler,</span>
-<span class="cm">       *    var route = aRouter.addRoute({ pattern: &#39;&#39;/user/#id&#39;&#39;});</span>
-<span class="cm">       *    route.onMatched(function(result) {</span>
-<span class="cm">       *      console.dir(result.getValues());</span>
-<span class="cm">       *    });</span>
-<span class="cm">       *</span>
-<span class="cm">       *    // Route with route options,</span>
-<span class="cm">       *    aRouter.addRoute({</span>
-<span class="cm">       *      pattern: &#39;/user/#id&#39;,</span>
-<span class="cm">       *      priority: 4000,</span>
-<span class="cm">       *      defaults: {</span>
-<span class="cm">       *        id: &#39;john_doe&#39;</span>
-<span class="cm">       *      },</span>
-<span class="cm">       *      constraints: {</span>
-<span class="cm">       *        id: [&#39;john_doe&#39;, &#39;jane_doe&#39;]</span>
-<span class="cm">       *      }</span>
-<span class="cm">       *    });</span>
-<span class="cm">       *</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {routeSpec} routeSpec Options passed to route plus options below</span>
-<span class="cm">       * @param {string} routeSpec.pattern Route pattern as string</span>
-<span class="cm">       * @param {function} routeSpec.action Executed when route is matched with parameters as arguments +</span>
-<span class="cm">       * query object as the last argument.</span>
-<span class="cm">       * @param {string} routeSpec.pattern Route pattern as string</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {route}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">addRoute</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">routeSpec</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">routeSpec</span> <span class="o">=</span> <span class="nx">routeSpec</span> <span class="o">||</span> <span class="p">{};</span>
-
-        <span class="kd">var</span> <span class="nx">newRoute</span> <span class="o">=</span> <span class="nx">route</span><span class="p">({</span>
-          <span class="nx">pattern</span><span class="o">:</span> <span class="nx">routeSpec</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span>
-          <span class="nx">options</span><span class="o">:</span> <span class="nx">routeSpec</span>
-        <span class="p">});</span>
-
-        <span class="k">if</span><span class="p">(</span><span class="nx">routeSpec</span><span class="p">.</span><span class="nx">action</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">newRoute</span><span class="p">.</span><span class="nx">onMatched</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">routeSpec</span><span class="p">.</span><span class="nx">action</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">result</span><span class="p">.</span><span class="nx">getActionArguments</span><span class="p">());</span>
-          <span class="p">});</span>
-        <span class="p">}</span>
-
-                <span class="nx">newRoute</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">routeSpec</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
-        <span class="nx">newRoute</span><span class="p">.</span><span class="nx">fallThrough</span> <span class="o">=</span> <span class="nx">routeSpec</span><span class="p">.</span><span class="nx">fallThrough</span><span class="p">;</span>
-
-        <span class="nx">newRoute</span><span class="p">.</span><span class="nx">priority</span> <span class="o">=</span> <span class="nx">routeSpec</span><span class="p">.</span><span class="nx">priority</span><span class="p">;</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">addRoute</span><span class="p">(</span><span class="nx">newRoute</span><span class="p">);</span>
-
-        <span class="k">return</span> <span class="nx">newRoute</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Find a route using a predicate function. The function is applied on routes</span>
-<span class="cm">       * on-by-one until match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {function} predicate</span>
-<span class="cm">       * @returns {route} Matched route or null if not matched</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">findRoute</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">predicate</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">numRoutes</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
-                <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">routeIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">routeIndex</span> <span class="o">&lt;</span> <span class="nx">numRoutes</span><span class="p">;</span> <span class="nx">routeIndex</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="kd">var</span> <span class="nx">route</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">[</span><span class="nx">routeIndex</span><span class="p">];</span>
-                    <span class="k">if</span><span class="p">(</span><span class="nx">predicate</span><span class="p">(</span><span class="nx">route</span><span class="p">))</span> <span class="p">{</span>
-                        <span class="k">return</span> <span class="nx">route</span><span class="p">;</span>
-                    <span class="p">}</span>
-                <span class="p">}</span>
-
-                <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Finds route by name</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} routeName</span>
-<span class="cm">       * @returns {route}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">getRouteByName</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">routeName</span><span class="p">)</span> <span class="p">{</span>
-                <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">findRoute</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="k">return</span> <span class="nx">route</span><span class="p">.</span><span class="nx">name</span> <span class="o">&amp;&amp;</span> <span class="nx">route</span><span class="p">.</span><span class="nx">name</span> <span class="o">===</span> <span class="nx">routeName</span><span class="p">;</span>
-                <span class="p">});</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Removes a route from routing table</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param route</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">removeRoute</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">route</span><span class="p">);</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">index</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Route not in route table&#39;</span><span class="p">);</span>
-        <span class="p">}</span>
-
-        <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Removes all routes from routing table.</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">clear</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-                <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span> <span class="o">=</span> <span class="p">[];</span>
-                <span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Pipes URL matching &#39;routeSpec&#39; to another router.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {{}} routeSpec Same options as `addRoute`</span>
-<span class="cm">       * @param {router} router</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {route}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">pipeRoute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">routeSpec</span><span class="p">,</span> <span class="nx">router</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">routeSpec</span> <span class="o">||</span> <span class="o">!</span><span class="nx">routeSpec</span><span class="p">.</span><span class="nx">pattern</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;Route pattern required&#39;</span><span class="p">);</span>
-        <span class="p">}</span>
-
-        <span class="kd">var</span> <span class="nx">aRoute</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">addRoute</span><span class="p">(</span><span class="nx">routeSpec</span><span class="p">);</span>
-        <span class="nx">aRoute</span><span class="p">.</span><span class="nx">onMatched</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">router</span><span class="p">.</span><span class="nx">resolveUrl</span><span class="p">(</span><span class="nx">result</span><span class="p">.</span><span class="nx">getUrl</span><span class="p">());</span>
-        <span class="p">});</span>
-
-        <span class="k">return</span> <span class="nx">aRoute</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Pipe not found to a different router</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {router} router</span>
-<span class="cm">       * @returns {route}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">pipeNotFound</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">router</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">onRouteNotFound</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">aRawUrl</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">router</span><span class="p">.</span><span class="nx">resolveUrl</span><span class="p">(</span><span class="nx">aRawUrl</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns the current URL</span>
-<span class="cm">       * @returns {url}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">getUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">getUrl</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Constructs a link that can be used eg. in href.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  // Link to a route by name (recommended)</span>
-<span class="cm">       *  aRouter.linkTo(&#39;users-list&#39;, {user: &#39;jane&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       *  // Link to a path</span>
-<span class="cm">       *  aRouter.linkTo(&#39;/user/mikael&#39;);</span>
-<span class="cm">       *  aRouter.linkTo(&#39;/user/&#39;, {sortBy: &#39;name&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} routeName Name of route or path</span>
-<span class="cm">       * @param {{}} [parameters]</span>
-<span class="cm">       * @param {boolean} [includeCurrentParameters=false] Merge parameters with parameters in current match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">linkTo</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">routeName</span><span class="p">,</span> <span class="nx">parameters</span><span class="p">,</span> <span class="nx">includeCurrentParameters</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">route</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getRouteByName</span><span class="p">(</span><span class="nx">routeName</span><span class="p">);</span>
-                <span class="k">if</span><span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">linkToUrl</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">expand</span><span class="p">({</span>
-            <span class="nx">routeName</span><span class="o">:</span> <span class="nx">route</span><span class="p">.</span><span class="nx">name</span><span class="p">,</span>
-            <span class="nx">parameters</span><span class="o">:</span> <span class="nx">parameters</span><span class="p">,</span>
-            <span class="nx">excludeCurrentParameters</span><span class="o">:</span> <span class="o">!</span><span class="nx">includeCurrentParameters</span>
-          <span class="p">}));</span>
-                <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>fallback to path (eg. /user/john) if route is not defined</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">linkToPath</span><span class="p">(</span><span class="nx">routeName</span><span class="p">,</span> <span class="nx">parameters</span><span class="p">);</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Link to a path</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  aRouter.linkToPath(&#39;/user/mikael&#39;);</span>
-<span class="cm">       *  aRouter.linkToPath(&#39;/user/&#39;, {sortBy: &#39;name&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} path</span>
-<span class="cm">       * @param {{}} query</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">linkToPath</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">linkToUrl</span><span class="p">(</span><span class="nx">url</span><span class="p">.</span><span class="nx">build</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="nx">query</span><span class="p">));</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Link from url</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} aUrl</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">linkToUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">linkToUrl</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Redirects browser to route or path.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  // Redirect to a route by name</span>
-<span class="cm">       *  aRouter.redirectTo(&#39;users-list&#39;, {user: &#39;jane&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       *  // Redirect to a path</span>
-<span class="cm">       *  aRouter.redirectTo(&#39;/user/mikael&#39;);</span>
-<span class="cm">       *  aRouter.redirectTo(&#39;/user/&#39;, {sortBy: &#39;name&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} routeName</span>
-<span class="cm">       * @param {{}} [parameters]</span>
-<span class="cm">       * @param {boolean} [includeCurrentParameters=false] Merge parameters with parameters in current match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">redirectTo</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">routeName</span><span class="p">,</span> <span class="nx">parameters</span><span class="p">,</span> <span class="nx">includeCurrentParameters</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">route</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getRouteByName</span><span class="p">(</span><span class="nx">routeName</span><span class="p">);</span>
-                <span class="k">if</span><span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">setUrl</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">expand</span><span class="p">({</span>
-            <span class="nx">routeName</span><span class="o">:</span> <span class="nx">route</span><span class="p">.</span><span class="nx">name</span><span class="p">,</span>
-            <span class="nx">parameters</span><span class="o">:</span> <span class="nx">parameters</span><span class="p">,</span>
-            <span class="nx">excludeCurrentParameters</span><span class="o">:</span> <span class="o">!</span><span class="nx">includeCurrentParameters</span>
-          <span class="p">}));</span>
-                <span class="p">}</span>
-
-                <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">redirectToPath</span><span class="p">(</span><span class="nx">routeName</span><span class="p">,</span> <span class="nx">parameters</span><span class="p">);</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Redirect to a path</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *  aRouter.redirectToPath(&#39;/user/mikael&#39;);</span>
-<span class="cm">       *  aRouter.redirectToPath(&#39;/user/&#39;, {sortBy: &#39;name&#39;});</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} path</span>
-<span class="cm">       * @param {{}} query</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">redirectToPath</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">redirectToUrl</span><span class="p">(</span><span class="nx">url</span><span class="p">.</span><span class="nx">build</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="nx">query</span><span class="p">));</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Redirect to url</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} aUrl</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">redirectToUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">setUrl</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Constructs a new URL from parameters with a route as template. If no route is</span>
-<span class="cm">       * supplied the last matched route is used.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Parameters are merged with parameters from last match unless `excludeCurrentParameters`</span>
-<span class="cm">       * is set to true.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {{}} [options]</span>
-<span class="cm">       * @param {string} [options.routeName] Name of route to link to. Default route from last match.</span>
-<span class="cm">       * @param {{}} [options.parameters={}]</span>
-<span class="cm">       * @param {boolean} [options.excludeCurrentParameters=false]</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {url}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">expand</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">routeName</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">routeName</span><span class="p">;</span>
-        <span class="kd">var</span> <span class="nx">suppliedParameters</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">parameters</span> <span class="o">||</span> <span class="p">{};</span>
-        <span class="kd">var</span> <span class="nx">excludeCurrentParameters</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">excludeCurrentParameters</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <p>Pick a template route</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">templateRoute</span><span class="p">;</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">routeName</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">templateRoute</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getRouteByName</span><span class="p">(</span><span class="nx">routeName</span><span class="p">)</span> <span class="o">||</span> <span class="nx">route</span><span class="p">();</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">templateRoute</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span><span class="p">.</span><span class="nx">getRoute</span><span class="p">();</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-          <span class="nx">templateRoute</span> <span class="o">=</span> <span class="nx">route</span><span class="p">();</span>
-        <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <p>Merge current parameters with supplied parameters</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">currentParameters</span> <span class="o">=</span> <span class="o">!</span><span class="nx">excludeCurrentParameters</span> <span class="o">?</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getParameters</span><span class="p">()</span> <span class="o">:</span> <span class="p">{};</span>
-        <span class="kd">var</span> <span class="nx">allParameters</span> <span class="o">=</span> <span class="nx">merge</span><span class="p">(</span><span class="nx">currentParameters</span><span class="p">,</span> <span class="nx">suppliedParameters</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Fill with defaults if needed</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">parameterName</span><span class="p">){</span>
-          <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">parameterName</span> <span class="k">in</span> <span class="nx">allParameters</span><span class="p">))</span> <span class="p">{</span>
-            <span class="nx">allParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">]</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">]</span> <span class="o">===</span> <span class="s2">&quot;function&quot;</span> <span class="o">?</span>
-              <span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">]()</span> <span class="o">:</span>
-              <span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">];</span>
-          <span class="p">}</span>
-        <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">&#182;</a>               </div>               <p>Expand template route and construct URL</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="kd">var</span> <span class="nx">aRawUrl</span> <span class="o">=</span> <span class="nx">templateRoute</span><span class="p">.</span><span class="nx">expand</span><span class="p">(</span><span class="nx">allParameters</span><span class="p">);</span>
-        <span class="k">return</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">aRawUrl</span><span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Constructs a link from supplied parameters.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {{}} [parameters={}]</span>
-<span class="cm">       * @param {boolean} [excludeCurrentParameters=false]</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">linkToParameters</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parameters</span><span class="p">,</span> <span class="nx">excludeCurrentParameters</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">linkToUrl</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">expand</span><span class="p">({</span>
-          <span class="nx">parameters</span><span class="o">:</span> <span class="nx">parameters</span><span class="p">,</span>
-          <span class="nx">excludeCurrentParameters</span><span class="o">:</span> <span class="nx">excludeCurrentParameters</span>
-        <span class="p">}));</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Constructs a link from supplied parameters.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {{}} [parameters={}]</span>
-<span class="cm">       * @param {boolean} [excludeCurrentParameters=false]</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">setParameters</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parameters</span><span class="p">,</span> <span class="nx">excludeCurrentParameters</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">redirectToUrl</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">expand</span><span class="p">({</span>
-          <span class="nx">parameters</span><span class="o">:</span> <span class="nx">parameters</span><span class="p">,</span>
-          <span class="nx">excludeCurrentParameters</span><span class="o">:</span> <span class="nx">excludeCurrentParameters</span>
-        <span class="p">}));</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Return current parameters, ether from last match or if no match</span>
-<span class="cm">       * from query in current URL.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {{}} Parameter values with parameter names as keys</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">getParameters</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">getUrl</span><span class="p">().</span><span class="nx">getQuery</span><span class="p">();</span>
-        <span class="p">}</span>
-
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span><span class="p">.</span><span class="nx">getParameters</span><span class="p">();</span>
-            <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns parameter value by name</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string} parameterName</span>
-<span class="cm">       * @returns {*}</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">getParameter</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">parameterName</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">parameters</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getParameters</span><span class="p">();</span>
-                <span class="k">return</span> <span class="nx">parameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">];</span>
-            <span class="p">};</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">setDefaultParameter</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parameterName</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">defaultParameters</span><span class="p">[</span><span class="nx">parameterName</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Navigate back to previous location in history. If history is empty</span>
-<span class="cm">       * the location will be changed to fallback URL.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {string|url} aFallbackUrl</span>
-<span class="cm">       * @returns {string} URL</span>
-<span class="cm">       */</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">back</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aFallbackUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">back</span><span class="p">(</span><span class="nx">aFallbackUrl</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Return `true` if the history is empty</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">isHistoryEmpty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">isHistoryEmpty</span><span class="p">();</span>
-      <span class="p">};</span>
-
-
-      <span class="cm">/**</span>
-<span class="cm">       * Start listening for location changes and automatically</span>
-<span class="cm">       * resolve new URLs (including the current)</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">start</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">start</span><span class="p">();</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">resolveUrl</span><span class="p">();</span> <span class="c1">// resolve current url</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Stop listening for location changes.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">stop</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">stop</span><span class="p">();</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-12">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-12">&#182;</a>               </div>               <p>Protected</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Tries to resolve URL by matching the URL against all routes in</span>
-<span class="cm">       * route table. Unless  `fallThrough`is set on the matched route router</span>
-<span class="cm">       * will stop on first match.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Last match is also stored as `my.lastMatch`</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {url} [aUrl] A URL or current url as default</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">resolveUrl</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">aUrl</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">currentUrl</span> <span class="o">=</span> <span class="nx">aUrl</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="o">?</span> <span class="nx">my</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">getUrl</span><span class="p">()</span> <span class="o">:</span> <span class="nx">aUrl</span><span class="p">;</span>
-
-        <span class="nx">that</span><span class="p">.</span><span class="nx">onResolveUrl</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="nx">currentUrl</span><span class="p">);</span>
-
-        <span class="kd">var</span> <span class="nx">numMatched</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">some</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">candidateRoute</span><span class="p">)</span> <span class="p">{</span>
-          <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">currentUrl</span><span class="p">.</span><span class="nx">matchRoute</span><span class="p">(</span><span class="nx">candidateRoute</span><span class="p">);</span>
-          <span class="k">if</span><span class="p">(</span><span class="nx">result</span><span class="p">.</span><span class="nx">isMatch</span><span class="p">())</span> <span class="p">{</span>
-            <span class="nx">my</span><span class="p">.</span><span class="nx">lastMatch</span> <span class="o">=</span> <span class="nx">result</span><span class="p">;</span>
-            <span class="nx">numMatched</span><span class="o">++</span><span class="p">;</span>
-            <span class="nx">that</span><span class="p">.</span><span class="nx">onRouteMatched</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
-
-            <span class="k">if</span><span class="p">(</span><span class="nx">candidateRoute</span><span class="p">.</span><span class="nx">fallThrough</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="o">||</span>
-              <span class="nx">candidateRoute</span><span class="p">.</span><span class="nx">fallThrough</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
-              <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
-            <span class="p">}</span>
-          <span class="p">}</span>
-        <span class="p">});</span>
-
-        <span class="k">if</span> <span class="p">(</span><span class="nx">numMatched</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">onRouteNotFound</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="nx">currentUrl</span><span class="p">.</span><span class="nx">toString</span><span class="p">());</span>
-        <span class="p">}</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Injects route in route table. Routes are ordered by priority (lower first) with</span>
-<span class="cm">       * routes without priority last. Routes with same priority are order in</span>
-<span class="cm">       * registration order.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {route} route</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">addRoute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">routeIndex</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">route</span><span class="p">.</span><span class="nx">priority</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span>
-          <span class="k">do</span> <span class="p">{</span> <span class="o">--</span><span class="nx">routeIndex</span><span class="p">;</span> <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">[</span><span class="nx">routeIndex</span><span class="p">]</span> <span class="o">&amp;&amp;</span>
-          <span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">[</span><span class="nx">routeIndex</span><span class="p">].</span><span class="nx">priority</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="o">||</span>
-          <span class="nx">route</span><span class="p">.</span><span class="nx">priority</span> <span class="o">&lt;</span> <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">[</span><span class="nx">routeIndex</span><span class="p">].</span><span class="nx">priority</span><span class="p">));</span>
-          <span class="nx">routeIndex</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
-        <span class="p">}</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">routeTable</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">routeIndex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">route</span><span class="p">);</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-13">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-13">&#182;</a>               </div>               <p>Private</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Shallow merge all objects in arguments. Properties in later objects overwrites</span>
-<span class="cm">       * properties.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">merge</span><span class="p">()</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">objects</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span>
-
-        <span class="kd">var</span> <span class="nx">target</span> <span class="o">=</span> <span class="p">{};</span>
-        <span class="nx">objects</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">obj</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
-            <span class="nx">target</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span>
-          <span class="p">});</span>
-        <span class="p">});</span>
-
-        <span class="k">return</span> <span class="nx">target</span><span class="p">;</span>
-      <span class="p">}</span>
-    <span class="p">});</span>
-
-    <span class="k">return</span> <span class="nx">router</span><span class="p">;</span>
-  <span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/staticSegment.html b/docs/docco/staticSegment.html
deleted file mode 100644
index 1e63a52b..00000000
--- a/docs/docco/staticSegment.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>staticSegment.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               staticSegment.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;./abstractSegment&#39;</span>
-<span class="p">],</span> <span class="kd">function</span><span class="p">(</span><span class="nx">abstractSegment</span><span class="p">)</span> <span class="p">{</span>
-
-  <span class="cm">/**</span>
-<span class="cm">   * A static segment match URL segments that are identical</span>
-<span class="cm">   * to the route segment string.</span>
-<span class="cm">   *</span>
-<span class="cm">   * @param spec abstractSegment spec</span>
-<span class="cm">   * @param [my]</span>
-<span class="cm">   * @returns {segment}</span>
-<span class="cm">   */</span>
-  <span class="kd">var</span> <span class="nx">staticSegment</span> <span class="o">=</span> <span class="nx">abstractSegment</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Static segment match if URL and route segment</span>
-<span class="cm">     * strings are identical.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} urlSegment</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">urlSegment</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getValue</span><span class="p">()</span> <span class="o">===</span> <span class="nx">urlSegment</span><span class="p">;</span>
-    <span class="p">};</span>
-
-    <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-  <span class="p">});</span>
-
-  <span class="nx">staticSegment</span><span class="p">.</span><span class="kr">class</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Match all but parameter segment strings</span>
-<span class="cm">     * @param {string} segmentString</span>
-<span class="cm">     * @returns {boolean}</span>
-<span class="cm">     */</span>
-    <span class="nx">that</span><span class="p">.</span><span class="nx">match</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="p">[</span><span class="s1">&#39;#&#39;</span><span class="p">,</span> <span class="s1">&#39;?&#39;</span><span class="p">].</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">segmentString</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-    <span class="p">};</span>
-  <span class="p">});</span>
-
-  <span class="k">return</span> <span class="nx">staticSegment</span><span class="p">;</span>
-<span class="p">});</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/url.html b/docs/docco/url.html
deleted file mode 100644
index 55db59bc..00000000
--- a/docs/docco/url.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>url.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               url.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">([</span>
-  <span class="s1">&#39;klassified&#39;</span>
-<span class="p">],</span>
-  <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Token/Char used to separate segments in URL paths.</span>
-<span class="cm">     * @type {string}</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">urlSeparator</span> <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="p">;</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * A `url` actually represents the fragment part of the actual url.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  var url = url({rawUrl: &#39;path/to?foo=a&amp;bar=b&#39;});</span>
-<span class="cm">     *  url.getPath(); // =&gt; &#39;path/to&#39;</span>
-<span class="cm">     *  url.getQuery(); // =&gt; {foo: &#39;a&#39;, bar: &#39;b&#39;}</span>
-<span class="cm">     *  url.matchRoute(aRoute); // =&gt; true</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} rawUrl</span>
-<span class="cm">     * @returns {url}</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="kd">var</span> <span class="nx">rawUrl</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">path</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">query</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">segments</span><span class="p">;</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-        <span class="nx">rawUrl</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">rawUrl</span> <span class="o">||</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
-        <span class="nx">path</span> <span class="o">=</span> <span class="nx">parsePath</span><span class="p">(</span><span class="nx">rawUrl</span><span class="p">);</span>
-        <span class="nx">query</span> <span class="o">=</span> <span class="nx">parseQuery</span><span class="p">(</span><span class="nx">rawUrl</span><span class="p">);</span>
-        <span class="nx">segments</span> <span class="o">=</span> <span class="nx">parseSegments</span><span class="p">(</span><span class="nx">path</span><span class="p">);</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * URL path</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">getPath</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">path</span><span class="p">;</span> <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Key/Value pairs parsed from query</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {{}}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">getQuery</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">query</span><span class="p">;</span> <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Segments in path parsed by splitting `path` by `urlSeparator`</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {string[]}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">getSegments</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">segments</span><span class="p">;</span> <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Answers true if the route is a match for the receiver</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param route</span>
-<span class="cm">       * @returns {boolean}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">matchRoute</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">route</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">route</span><span class="p">.</span><span class="nx">matchUrl</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Returns `rawUrl`</span>
-<span class="cm">       * @returns {string}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">rawUrl</span><span class="p">;</span>
-      <span class="p">};</span>
-    <span class="p">});</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Create URL from path and query</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  var aUrl = url(&#39;/path/to&#39;, {foo: &#39;bar&#39; });</span>
-<span class="cm">     *  aUrl.toString(); // =&gt; &#39;path/to?foo=bar&#39;</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} path</span>
-<span class="cm">     * @param {{}} query</span>
-<span class="cm">     * @returns {url}</span>
-<span class="cm">     */</span>
-    <span class="nx">url</span><span class="p">.</span><span class="nx">build</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">path</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span><span class="p">(</span><span class="nx">path</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;undefined&#39;</span> <span class="o">||</span> <span class="nx">path</span> <span class="o">===</span> <span class="kc">null</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">path</span> <span class="o">!==</span> <span class="s2">&quot;string&quot;</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">throw</span> <span class="s1">&#39;accepts only string paths&#39;</span><span class="p">;</span>
-      <span class="p">}</span>
-
-      <span class="k">if</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">queryPart</span> <span class="o">=</span> <span class="nb">decodeURIComponent</span><span class="p">(</span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">param</span><span class="p">(</span><span class="nx">query</span><span class="p">));</span>
-                <span class="k">if</span><span class="p">(</span><span class="nx">queryPart</span><span class="p">)</span> <span class="p">{</span>
-                    <span class="k">return</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">path</span> <span class="o">+</span> <span class="s1">&#39;?&#39;</span> <span class="o">+</span> <span class="nx">queryPart</span><span class="p">});</span>
-                <span class="p">}</span>
-            <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">url</span><span class="p">({</span><span class="nx">rawUrl</span><span class="o">:</span> <span class="nx">path</span><span class="p">});</span>
-    <span class="p">};</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Splits URL path into segments. Removes leading, trailing, and</span>
-<span class="cm">     * duplicated `urlSeparator`.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  parseSegments(&#39;/a/path/to&#39;); // =&gt; [&#39;a&#39;, &#39;path&#39;, &#39;to&#39;]</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param path</span>
-<span class="cm">     * @returns {string[]}</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">parseSegments</span><span class="p">(</span><span class="nx">path</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Split on separator and remove all leading, trailing, and
-duplicated <code>urlSeparator</code> by filtering empty strings.</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">return</span> <span class="nx">path</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="nx">urlSeparator</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">);</span>
-    <span class="p">}</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Returns path from a raw URL</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  parsePath(&#39;/a/path/to?foo=bar&#39;); // =&gt; &#39;/a/path/to&#39;</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} rawUrl</span>
-<span class="cm">     * @returns {string}</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">parsePath</span><span class="p">(</span><span class="nx">rawUrl</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="nx">rawUrl</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\?.*$/g</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
-    <span class="p">}</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Extract query key/value(s) from a rawUrl and return them as an</span>
-<span class="cm">     * object literal with key/values.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *  parsePath(&#39;/a/path/to?foo=bar&amp;test=1&#39;); // =&gt; {foo: &#39;bar&#39;, test: &#39;1&#39;}</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {string} rawUrl</span>
-<span class="cm">     * @returns {{}}</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">parseQuery</span><span class="p">(</span><span class="nx">rawUrl</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Extract query key/value(s) from a rawUrl and add them to <code>query</code> object.</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="sr">/[^?]*\?(.*)$/g</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="nx">rawUrl</span><span class="p">);</span>
-      <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="p">{};</span>
-      <span class="kd">var</span> <span class="nx">pair</span><span class="p">;</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">result</span> <span class="o">&amp;&amp;</span> <span class="nx">result</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
-        <span class="p">(</span><span class="nx">result</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">split</span><span class="p">(</span><span class="s2">&quot;&amp;&quot;</span><span class="p">)).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">each</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">pair</span> <span class="o">=</span> <span class="nx">each</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="p">);</span>
-          <span class="nx">query</span><span class="p">[</span><span class="nx">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="nx">pair</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
-        <span class="p">});</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">query</span><span class="p">;</span>
-    <span class="p">}</span>
-
-    <span class="k">return</span> <span class="nx">url</span><span class="p">;</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/widget-extensions.html b/docs/docco/widget-extensions.html
deleted file mode 100644
index 3ce1c231..00000000
--- a/docs/docco/widget-extensions.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>widget-extensions.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               widget-extensions.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>               <p>Widget extensions</p>
-
-<p>In your application include widget extensions. Using require.js:
-define(['canvas/'widget-extensions], function(ext) { ... });</p>
-
-<p>add properties to ext that you need in all widgets.
-ext.hello = function() { alert('hello world')};</p>
-
-<p>and use in all widgets:
-my.hello();</p>             </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="p">{};</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file
diff --git a/docs/docco/widget.html b/docs/docco/widget.html
deleted file mode 100644
index 9d2a8d73..00000000
--- a/docs/docco/widget.html
+++ /dev/null
@@ -1,455 +0,0 @@
-<!DOCTYPE html>  <html> <head>   <title>widget.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>            <div id="jump_to">         Jump To &hellip;         <div id="jump_wrapper">           <div id="jump_page">                                           <a class="source" href="core.html">                 core.js               </a>                                           <a class="source" href="events.html">                 events.js               </a>                                           <a class="source" href="htmlCanvas.html">                 htmlCanvas.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="abstractSegment.html">                 abstractSegment.js               </a>                                           <a class="source" href="hashLocation.html">                 hashLocation.js               </a>                                           <a class="source" href="optionalParameterSegment.html">                 optionalParameterSegment.js               </a>                                           <a class="source" href="parameterSegment.html">                 parameterSegment.js               </a>                                           <a class="source" href="route.html">                 route.js               </a>                                           <a class="source" href="routeFactory.html">                 routeFactory.js               </a>                                           <a class="source" href="routeMatchResult.html">                 routeMatchResult.js               </a>                                           <a class="source" href="router.html">                 router.js               </a>                                           <a class="source" href="staticSegment.html">                 staticSegment.js               </a>                                           <a class="source" href="url.html">                 url.js               </a>                                           <a class="source" href="widget-extensions.html">                 widget-extensions.js               </a>                                           <a class="source" href="widget.html">                 widget.js               </a>                        </div>         </div>       </div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               widget.js             </h1>           </th>           <th class="code">           </th>         </tr>       </thead>       <tbody>                               <tr id="section-1">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-1">&#182;</a>               </div>                            </td>             <td class="code">               <div class="highlight"><pre><span></span><span class="nx">define</span><span class="p">(</span>
-  <span class="p">[</span>
-    <span class="s1">&#39;klassified&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./widget-extensions&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./router&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./events&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;./htmlCanvas&#39;</span><span class="p">,</span>
-    <span class="s1">&#39;jquery&#39;</span>
-  <span class="p">],</span>
-
-  <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">ext</span><span class="p">,</span> <span class="nx">router</span><span class="p">,</span> <span class="nx">events</span><span class="p">,</span> <span class="nx">htmlCanvas</span><span class="p">,</span> <span class="nx">jQuery</span><span class="p">)</span> <span class="p">{</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Base for all widgets. A widget can keep state in variables, contain logic and</span>
-<span class="cm">     * render itself using `renderOn()`.</span>
-<span class="cm">     *</span>
-<span class="cm">     * @example</span>
-<span class="cm">     *</span>
-<span class="cm">     *    var titleWidget = function(spec) {</span>
-<span class="cm">     *      var that = widget(spec);</span>
-<span class="cm">     *</span>
-<span class="cm">     *      var title = spec.title || &#39;Hello World&#39;;</span>
-<span class="cm">     *</span>
-<span class="cm">     *      that.renderContentOn = function(html) {</span>
-<span class="cm">     *        html.h1(title)</span>
-<span class="cm">     *      }</span>
-<span class="cm">     *</span>
-<span class="cm">     *      return that;</span>
-<span class="cm">     *    };</span>
-<span class="cm">     *</span>
-<span class="cm">     *    var helloWorldWidget = titleWidget({title: &#39;Hello Widget!&#39;});</span>
-<span class="cm">     *</span>
-<span class="cm">     *    $(document).ready(function() {</span>
-<span class="cm">     *      helloWorldWidget.appendTo(&#39;BODY&#39;);</span>
-<span class="cm">     *    });</span>
-<span class="cm">     *</span>
-<span class="cm">     * Widgets can also be rendered on a HTML canvas (since widget implements `appendToBrush()`). Eg.</span>
-<span class="cm">     *</span>
-<span class="cm">     *    html.div(helloWorldWidget)</span>
-<span class="cm">     *</span>
-<span class="cm">     * It is therefor easy to compose widgets from other widgets.</span>
-<span class="cm">     *</span>
-<span class="cm">     *</span>
-<span class="cm">     * @param {Object} spec</span>
-<span class="cm">     * @param {String} [spec.id] Unique id for widget. Also used for root element when attached/rendered to DOM.</span>
-<span class="cm">     *                           If not provided an ID will automatically be generated and assigned.</span>
-<span class="cm">     * @param {Object} [my]</span>
-<span class="cm">     *</span>
-<span class="cm">     * @returns {widget}</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">widget</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">subclass</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">that</span><span class="p">,</span> <span class="nx">my</span><span class="p">)</span> <span class="p">{</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Keep track of the rendered subwidgets</span>
-<span class="cm">       */</span>
-      <span class="kd">var</span> <span class="nx">children</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">id</span><span class="p">;</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">spec</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="kr">super</span><span class="p">(</span><span class="nx">spec</span><span class="p">);</span>
-        <span class="nx">id</span> <span class="o">=</span> <span class="nx">spec</span><span class="p">.</span><span class="nx">id</span> <span class="o">||</span> <span class="nx">idGenerator</span><span class="p">.</span><span class="nx">newId</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">&#182;</a>               </div>               <p>When within an update transaction, do not update the widget</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">my</span><span class="p">.</span><span class="nx">inUpdateTransaction</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-        <span class="nx">children</span> <span class="o">=</span> <span class="p">[];</span>
-      <span class="p">};</span>
-
-      <span class="cm">/** Events for widget */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">events</span> <span class="o">=</span> <span class="nx">events</span><span class="p">.</span><span class="nx">eventCategory</span><span class="p">();</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">onAttach</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">();</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">onDetach</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">createEvent</span><span class="p">();</span></pre></div>             </td>           </tr>                               <tr id="section-3">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-3">&#182;</a>               </div>               <p>Public</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Returns a unique id for the widget</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {String}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">getId</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">id</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getId</span><span class="p">;</span> <span class="c1">//TODO: deprecated</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Performance tasks need for freeing/releasing/cleaning-up resources used by widget.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Should always be executed before a widget is disposed. Especially</span>
-<span class="cm">       * if the widget register events to avoid memory leaks.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Most widgets should override `my.dispose` instead of overriding</span>
-<span class="cm">       * this function.</span>
-<span class="cm">       *</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">dispose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">children</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">child</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">child</span><span class="p">.</span><span class="nx">dispose</span><span class="p">();</span>
-        <span class="p">});</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">dispose</span><span class="p">();</span>
-
-        <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">dispose</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Method to be performed when a root widget is detached from the</span>
-<span class="cm">       * DOM. The widegt and all its children will call `my.willDetach` in</span>
-<span class="cm">       * turn.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">willDetach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">children</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">child</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">child</span><span class="p">.</span><span class="nx">willDetach</span><span class="p">();</span>
-        <span class="p">});</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">willDetach</span><span class="p">();</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">onDetach</span><span class="p">.</span><span class="nx">trigger</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Renders the widget on a JQuery / DOM</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       * widget.appendTo(&#39;BODY&#39;);</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param aJQuery</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">appendTo</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">aJQuery</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">withAttachHooks</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-          <span class="nx">renderBasicOn</span><span class="p">(</span><span class="nx">htmlCanvas</span><span class="p">(</span><span class="nx">aJQuery</span><span class="p">));</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Does the same as appendTo except it first clear the</span>
-<span class="cm">       * elements matched by aJQuery</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param aJQuery</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">replace</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">aJQuery</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">withAttachHooks</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-          <span class="kd">var</span> <span class="nx">canvas</span> <span class="o">=</span> <span class="nx">htmlCanvas</span><span class="p">(</span><span class="nx">aJQuery</span><span class="p">);</span>
-          <span class="nx">canvas</span><span class="p">.</span><span class="nx">root</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">empty</span><span class="p">();</span>
-          <span class="nx">renderBasicOn</span><span class="p">(</span><span class="nx">canvas</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Answers a jQuery that match the root DOM element. By default</span>
-<span class="cm">       * by selecting an element that have the same ID as the widget.</span>
-<span class="cm">       *</span>
-<span class="cm">       * See &#39;renderOn&#39;</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {*}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">jQuery</span><span class="p">(</span><span class="s1">&#39;#&#39;</span> <span class="o">+</span> <span class="nx">that</span><span class="p">.</span><span class="nx">getId</span><span class="p">());</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Answers true if if widget have rendered content in DOM</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {boolean}</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">isRendered</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Implementation for `appendToBrush()` to allow a widget to be</span>
-<span class="cm">       * appended to a brush. See &#39;htmlCanvas&#39;.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Basically it allows us to do:</span>
-<span class="cm">       *    html.div(widget);</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param aTagBrush</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">appendToBrush</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">aTagBrush</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">withAttachHooks</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-          <span class="nx">renderBasicOn</span><span class="p">(</span><span class="nx">htmlCanvas</span><span class="p">(</span><span class="nx">aTagBrush</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">()));</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Trigger the `willAttach` event on the receiver and all</span>
-<span class="cm">       * rendered subwidgets.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">triggerWillAttach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">willAttach</span><span class="p">();</span>
-        <span class="nx">children</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">widget</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">widget</span><span class="p">.</span><span class="nx">triggerWillAttach</span><span class="p">();</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Trigger the `didAttach` event on the receiver and all</span>
-<span class="cm">       * rendered subwidgets.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">triggerDidAttach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">didAttach</span><span class="p">();</span>
-        <span class="nx">children</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">widget</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">widget</span><span class="p">.</span><span class="nx">triggerDidAttach</span><span class="p">();</span>
-        <span class="p">});</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">onAttach</span><span class="p">.</span><span class="nx">trigger</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Evaluate `fn`, calling `willAttach` before and `didAttach` after</span>
-<span class="cm">       * the evaluation.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">withAttachHooks</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">inRendering</span> <span class="o">=</span> <span class="nx">inRenderingLoop</span><span class="p">();</span>
-        <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">inRendering</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">triggerWillAttach</span><span class="p">();</span>
-        <span class="p">}</span>
-        <span class="nx">fn</span><span class="p">();</span>
-        <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">inRendering</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">triggerDidAttach</span><span class="p">();</span>
-        <span class="p">}</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-4">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-4">&#182;</a>               </div>               <p>Expose events</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="nx">that</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">on</span><span class="p">;</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">onceOn</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">onceOn</span><span class="p">;</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">off</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">off</span><span class="p">;</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">trigger</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">trigger</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-5">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-5">&#182;</a>               </div>               <p>Protected</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Exposes the internal ID generator. Generates new unique IDs to be used</span>
-<span class="cm">       * for sub-widgets, etc.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @returns {String}</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">nextId</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">idGenerator</span><span class="p">.</span><span class="nx">newId</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Widget specific dispose.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">dispose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span></pre></div>             </td>           </tr>                               <tr id="section-6">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-6">&#182;</a>               </div>               <p>Route / Controller extensions</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="nx">my</span><span class="p">.</span><span class="nx">router</span> <span class="o">=</span> <span class="nx">router</span><span class="p">.</span><span class="nx">getRouter</span><span class="p">();</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">linkTo</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">linkTo</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">linkToPath</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">linkToPath</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">linkToUrl</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">linkToUrl</span><span class="p">;</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">redirectTo</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">redirectTo</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">redirectToPath</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">redirectToPath</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">redirectToUrl</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">redirectToUrl</span><span class="p">;</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">getParameters</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">getParameters</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">getParameter</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">getParameter</span><span class="p">;</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">setParameters</span> <span class="o">=</span> <span class="nx">my</span><span class="p">.</span><span class="nx">router</span><span class="p">.</span><span class="nx">setParameters</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">&#182;</a>               </div>               <p>Render</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="cm">/**</span>
-<span class="cm">       * Private rendering function.  This is the function</span>
-<span class="cm">       * internally called each time the widget is rendered, in</span>
-<span class="cm">       * `appendTo`, `replace` and `update`.</span>
-<span class="cm">       *</span>
-<span class="cm">       */</span>
-      <span class="kd">function</span> <span class="nx">renderBasicOn</span><span class="p">(</span><span class="nx">html</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">withChildrenRegistration</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-          <span class="nx">that</span><span class="p">.</span><span class="nx">renderOn</span><span class="p">(</span><span class="nx">html</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">}</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Main entry point for rendering. For convenience &#39;renderOn&#39; will  wrap the content</span>
-<span class="cm">       * rendered by &#39;renderContentOn&#39; in a root element (renderRootOn) that will be matched</span>
-<span class="cm">       * by asJQuery.</span>
-<span class="cm">       *</span>
-<span class="cm">       * Usually concrete widgets override &#39;renderContentOn&#39; to render it content. Widgets</span>
-<span class="cm">       * can override &#39;renderOn&#39; but must then make sure that it can be matched by &#39;asJQuery&#39;.</span>
-<span class="cm">       *</span>
-<span class="cm">       * One way to do that is to make sure to have only one root element and setting the ID of</span>
-<span class="cm">       * that element to the ID of the widget.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *</span>
-<span class="cm">       *    that.renderOn = function (html) {</span>
-<span class="cm">       *      html.ul({id: that.getId()}</span>
-<span class="cm">       *        html.li(&#39;BMW&#39;),</span>
-<span class="cm">       *        html.li(&#39;Toyota&#39;)</span>
-<span class="cm">       *      );</span>
-<span class="cm">       *    };</span>
-<span class="cm">       *</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param html</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">renderOn</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">html</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-8">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-8">&#182;</a>               </div>               <p>Renders widget by wrapping <code>renderContentOn()</code> in a root element.</p>             </td>             <td class="code">               <div class="highlight"><pre>        <span class="nx">my</span><span class="p">.</span><span class="nx">renderRootOn</span><span class="p">(</span><span class="nx">html</span><span class="p">).</span><span class="nx">render</span><span class="p">(</span><span class="nx">that</span><span class="p">.</span><span class="nx">renderContentOn</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="nx">my</span><span class="p">.</span><span class="nx">withChildrenRegistration</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">parent</span> <span class="o">=</span> <span class="nx">currentWidget</span><span class="p">.</span><span class="nx">get</span><span class="p">();</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">parent</span><span class="p">.</span><span class="nx">registerChild</span><span class="p">(</span><span class="nx">that</span><span class="p">);</span>
-        <span class="p">}</span>
-        <span class="nx">withCurrentWidget</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-          <span class="nx">children</span> <span class="o">=</span> <span class="p">[];</span>
-          <span class="nx">fn</span><span class="p">();</span>
-        <span class="p">},</span> <span class="nx">that</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">registerChild</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">widget</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">children</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">widget</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Renders a wrapper element (by default a &#39;widgetjs-widget&#39; tag) and</span>
-<span class="cm">       * set the element ID to the ID of the widget so that it can be found by</span>
-<span class="cm">       * &#39;asJQuery&#39; eg. when we re-render using &#39;update&#39;.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param html</span>
-<span class="cm">       * @returns {htmlBrush}</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">renderRootOn</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">html</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">return</span> <span class="nx">html</span><span class="p">.</span><span class="nx">tag</span><span class="p">(</span><span class="s1">&#39;widgetjs-widget&#39;</span><span class="p">).</span><span class="nx">id</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Overridden in concrete widgets to render widget to canvas/DOM.</span>
-<span class="cm">       *</span>
-<span class="cm">       * @example</span>
-<span class="cm">       *</span>
-<span class="cm">       *    that.renderContentOn = function (html) {</span>
-<span class="cm">       *      html.ul(</span>
-<span class="cm">       *        html.li(&#39;BMW&#39;),</span>
-<span class="cm">       *        html.li(&#39;Toyota&#39;)</span>
-<span class="cm">       *      );</span>
-<span class="cm">       *    };</span>
-<span class="cm">       *</span>
-<span class="cm">       * @param {htmlCanvas} html</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">renderContentOn</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">html</span><span class="p">)</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Hook evaluated before the widget is attached (or reattached due</span>
-<span class="cm">       * to an update of rendering) to the DOM.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">willAttach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Hook evaluated each time the widget is attached (or</span>
-<span class="cm">       * reattached due to an update of rendering) to the DOM.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">didAttach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Hook evaluated when a widget is detached from the DOM.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">willDetach</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Hook evaluated before widget update.</span>
-<span class="cm">       */</span>
-      <span class="nx">my</span><span class="p">.</span><span class="nx">willUpdate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{};</span>
-
-      <span class="cm">/**</span>
-<span class="cm">       * Re-renders the widget and replace it in the DOM</span>
-<span class="cm">       *</span>
-<span class="cm">       * Content is first re-rendered on a document fragment. Update then replace the element matched</span>
-<span class="cm">       * by &#39;asJQuery&#39; with the new content.</span>
-<span class="cm">       *</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">update</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">inUpdateTransaction</span> <span class="o">||</span> <span class="o">!</span><span class="nx">that</span><span class="p">.</span><span class="nx">isRendered</span><span class="p">())</span> <span class="p">{</span>
-          <span class="k">return</span><span class="p">;</span>
-        <span class="p">}</span>
-
-        <span class="nx">my</span><span class="p">.</span><span class="nx">willUpdate</span><span class="p">();</span>
-        <span class="nx">my</span><span class="p">.</span><span class="nx">withAttachHooks</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">&#182;</a>               </div>               <p>Re-render</p>             </td>             <td class="code">               <div class="highlight"><pre>          <span class="kd">var</span> <span class="nx">html</span> <span class="o">=</span> <span class="nx">htmlCanvas</span><span class="p">();</span>
-          <span class="nx">renderBasicOn</span><span class="p">(</span><span class="nx">html</span><span class="p">);</span></pre></div>             </td>           </tr>                               <tr id="section-10">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-10">&#182;</a>               </div>               <p>Replace our self</p>             </td>             <td class="code">               <div class="highlight"><pre>          <span class="nx">that</span><span class="p">.</span><span class="nx">asJQuery</span><span class="p">().</span><span class="nx">replaceWith</span><span class="p">(</span><span class="nx">html</span><span class="p">.</span><span class="nx">root</span><span class="p">.</span><span class="nx">element</span><span class="p">);</span>
-        <span class="p">});</span>
-      <span class="p">};</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">withinTransaction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">,</span> <span class="nx">onDone</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span><span class="p">(</span><span class="nx">my</span><span class="p">.</span><span class="nx">inUpdateTransaction</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">fn</span><span class="p">();</span>
-        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-          <span class="k">try</span> <span class="p">{</span>
-            <span class="nx">my</span><span class="p">.</span><span class="nx">inUpdateTransaction</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
-            <span class="nx">fn</span><span class="p">();</span>
-          <span class="p">}</span>
-          <span class="k">finally</span> <span class="p">{</span>
-            <span class="nx">my</span><span class="p">.</span><span class="nx">inUpdateTransaction</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-            <span class="k">if</span><span class="p">(</span><span class="nx">onDone</span><span class="p">)</span> <span class="p">{</span>
-              <span class="nx">onDone</span><span class="p">();</span>
-            <span class="p">}</span>
-          <span class="p">}</span>
-        <span class="p">}</span>
-      <span class="p">};</span>
-
-
-      <span class="cm">/**</span>
-<span class="cm">       * Evaluate `fn`, ensuring that an update will be</span>
-<span class="cm">       * performed after evaluating the function. Nested calls</span>
-<span class="cm">       * to `withUpdate` or `update` will result in updating the</span>
-<span class="cm">       * widget only once.</span>
-<span class="cm">       */</span>
-      <span class="nx">that</span><span class="p">.</span><span class="nx">withUpdate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">withinTransaction</span><span class="p">(</span><span class="nx">fn</span><span class="p">,</span> <span class="nx">that</span><span class="p">.</span><span class="nx">update</span><span class="p">);</span>
-      <span class="p">};</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">withNoUpdate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">that</span><span class="p">.</span><span class="nx">withinTransaction</span><span class="p">(</span><span class="nx">fn</span><span class="p">);</span>
-      <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">&#182;</a>               </div>               <p>Third party protected extensions** added to <code>my</code>.
-See widget-extensions.js</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">extProperty</span> <span class="k">in</span> <span class="nx">ext</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">if</span> <span class="p">(</span><span class="nx">ext</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">extProperty</span><span class="p">))</span> <span class="p">{</span>
-          <span class="nx">my</span><span class="p">[</span><span class="nx">extProperty</span><span class="p">]</span> <span class="o">=</span> <span class="nx">ext</span><span class="p">[</span><span class="nx">extProperty</span><span class="p">];</span>
-        <span class="p">}</span>
-      <span class="p">}</span>
-
-      <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-    <span class="p">});</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Creates unique ids used by widgets to identify their root div.</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">idGenerator</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">that</span> <span class="o">=</span> <span class="p">{};</span>
-      <span class="kd">var</span> <span class="nx">id</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-
-      <span class="nx">that</span><span class="p">.</span><span class="nx">newId</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-        <span class="nx">id</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span>
-        <span class="k">return</span> <span class="nx">id</span><span class="p">.</span><span class="nx">toString</span><span class="p">();</span>
-      <span class="p">};</span>
-
-      <span class="k">return</span> <span class="nx">that</span><span class="p">;</span>
-    <span class="p">})();</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Helpers for keeping track of the currently rendered widget.</span>
-<span class="cm">     */</span>
-    <span class="kd">var</span> <span class="nx">currentWidget</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">current</span><span class="p">;</span>
-      <span class="k">return</span> <span class="p">{</span>
-        <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
-          <span class="k">return</span> <span class="nx">current</span><span class="p">;</span>
-        <span class="p">},</span>
-        <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">widget</span><span class="p">)</span> <span class="p">{</span>
-          <span class="nx">current</span> <span class="o">=</span> <span class="nx">widget</span><span class="p">;</span>
-        <span class="p">}</span>
-      <span class="p">};</span>
-    <span class="p">})();</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Return true if the parent widget is rendering the receiver.</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">inRenderingLoop</span><span class="p">()</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="o">!!</span><span class="nx">currentWidget</span><span class="p">.</span><span class="nx">get</span><span class="p">();</span>
-    <span class="p">}</span>
-
-    <span class="cm">/**</span>
-<span class="cm">     * Set `widget` as the current widget while evaluating `fn`.</span>
-<span class="cm">     */</span>
-    <span class="kd">function</span> <span class="nx">withCurrentWidget</span><span class="p">(</span><span class="nx">fn</span><span class="p">,</span> <span class="nx">widget</span><span class="p">)</span> <span class="p">{</span>
-      <span class="kd">var</span> <span class="nx">current</span> <span class="o">=</span> <span class="nx">currentWidget</span><span class="p">.</span><span class="nx">get</span><span class="p">();</span>
-      <span class="k">try</span> <span class="p">{</span>
-        <span class="nx">currentWidget</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">widget</span><span class="p">);</span>
-        <span class="nx">fn</span><span class="p">();</span>
-      <span class="p">}</span> <span class="k">finally</span> <span class="p">{</span>
-        <span class="nx">currentWidget</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">current</span><span class="p">);</span>
-      <span class="p">}</span>
-    <span class="p">}</span>
-
-    <span class="k">return</span> <span class="nx">widget</span><span class="p">;</span>
-  <span class="p">}</span>
-<span class="p">);</span>
-
-</pre></div>             </td>           </tr>                </tbody>     </table>   </div> </body> </html> 
\ No newline at end of file