changeset 14046:b24e5a708fad

web: Made elapsed time calculation dynamic (javascript). This allow safe caching of the pages by the browser and still display the right amount of elapsed time upon page refresh. If javascript is disabled, absolute time is displayed, leaving it readable. All the templates have been updated.
author Benoit Allard <benoit@aeteurope.nl>
date Thu, 28 Apr 2011 17:02:39 +0200
parents 1c38777f7b8a
children 30ccb7d03864
files mercurial/templates/coal/header.tmpl mercurial/templates/coal/map mercurial/templates/gitweb/changelogentry.tmpl mercurial/templates/gitweb/changeset.tmpl mercurial/templates/gitweb/fileannotate.tmpl mercurial/templates/gitweb/filerevision.tmpl mercurial/templates/gitweb/footer.tmpl mercurial/templates/gitweb/graph.tmpl mercurial/templates/gitweb/header.tmpl mercurial/templates/gitweb/map mercurial/templates/monoblue/changelogentry.tmpl mercurial/templates/monoblue/changeset.tmpl mercurial/templates/monoblue/fileannotate.tmpl mercurial/templates/monoblue/filerevision.tmpl mercurial/templates/monoblue/footer.tmpl mercurial/templates/monoblue/graph.tmpl mercurial/templates/monoblue/header.tmpl mercurial/templates/monoblue/map mercurial/templates/paper/changeset.tmpl mercurial/templates/paper/fileannotate.tmpl mercurial/templates/paper/filediff.tmpl mercurial/templates/paper/filelogentry.tmpl mercurial/templates/paper/filerevision.tmpl mercurial/templates/paper/footer.tmpl mercurial/templates/paper/graph.tmpl mercurial/templates/paper/header.tmpl mercurial/templates/paper/map mercurial/templates/paper/shortlogentry.tmpl mercurial/templates/spartan/changelogentry.tmpl mercurial/templates/spartan/changeset.tmpl mercurial/templates/spartan/fileannotate.tmpl mercurial/templates/spartan/filelogentry.tmpl mercurial/templates/spartan/filerevision.tmpl mercurial/templates/spartan/footer.tmpl mercurial/templates/spartan/graph.tmpl mercurial/templates/spartan/header.tmpl mercurial/templates/spartan/map mercurial/templates/spartan/shortlogentry.tmpl mercurial/templates/static/graph.js mercurial/templates/static/mercurial.js tests/test-hgweb-commands.t tests/test-hgweb-descend-empties.t tests/test-hgweb-diffs.t tests/test-hgweb-empty.t tests/test-hgweb-filelog.t tests/test-hgweb-removed.t tests/test-hgweb.t tests/test-hgwebdir.t
diffstat 48 files changed, 373 insertions(+), 232 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templates/coal/header.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/coal/header.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -4,3 +4,4 @@
 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
 <meta name="robots" content="index, nofollow" />
 <link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
+<script type="text/javascript" src="{staticurl}mercurial.js"></script>
--- a/mercurial/templates/coal/map	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/coal/map	Thu Apr 28 17:02:39 2011 +0200
@@ -197,7 +197,7 @@
     <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
     <td>{description}</td>
     <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
     <td class="indexlinks">{archives%indexarchiveentry}</td>
   </tr>\n'
 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
--- a/mercurial/templates/gitweb/changelogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/changelogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,5 +1,5 @@
 <div>
-<a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
+<a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|date}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
 </div>
 <div class="title_text">
 <div class="log_link">
--- a/mercurial/templates/gitweb/changeset.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/changeset.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -32,7 +32,7 @@
 <div class="title_text">
 <table cellspacing="0">
 <tr><td>author</td><td>{author|obfuscate}</td></tr>
-<tr><td></td><td>{date|date} ({date|age})</td></tr>
+<tr><td></td><td class="date age">{date|date}</td></tr>
 {branch%changesetbranch}
 <tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
 {parent%changesetparent}
--- a/mercurial/templates/gitweb/fileannotate.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/fileannotate.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -40,7 +40,7 @@
  <td>{author|obfuscate}</td></tr>
 <tr>
  <td></td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
 {branch%filerevbranch}
 <tr>
  <td>changeset {rev}</td>
--- a/mercurial/templates/gitweb/filerevision.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/filerevision.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -40,7 +40,7 @@
  <td>{author|obfuscate}</td></tr>
 <tr>
  <td></td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
 {branch%filerevbranch}
 <tr>
  <td>changeset {rev}</td>
--- a/mercurial/templates/gitweb/footer.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/footer.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,3 +1,4 @@
+<script type="text/javascript">process_dates()</script>
 <div class="page_footer">
 <div class="page_footer_text">{repo|escape}</div>
 <div class="rss_logo">
--- a/mercurial/templates/gitweb/graph.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/graph.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -44,7 +44,6 @@
 <ul id="graphnodes"></ul>
 </div>
 
-<script type="text/javascript" src="{staticurl}graph.js"></script>
 <script>
 <!-- hide script content
 
--- a/mercurial/templates/gitweb/header.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/header.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -5,4 +5,4 @@
 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
 <meta name="robots" content="index, nofollow"/>
 <link rel="stylesheet" href="{staticurl}style-gitweb.css" type="text/css" />
-
+<script type="text/javascript" src="{staticurl}mercurial.js"></script>
--- a/mercurial/templates/gitweb/map	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/gitweb/map	Thu Apr 28 17:02:39 2011 +0200
@@ -162,7 +162,7 @@
 tags = tags.tmpl
 tagentry = '
   <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
     <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
     <td class="link">
       <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -173,7 +173,7 @@
 bookmarks = bookmarks.tmpl
 bookmarkentry = '
   <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
     <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
     <td class="link">
       <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -184,7 +184,7 @@
 branches = branches.tmpl
 branchentry = '
   <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
     <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
     <td class="{status}">{branch|escape}</td>
     <td class="link">
@@ -228,7 +228,7 @@
 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
 shortlogentry = '
   <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
     <td><i>{author|person}</i></td>
     <td>
       <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
@@ -243,7 +243,7 @@
   </tr>'
 filelogentry = '
   <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
     <td>
       <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
         <b>{desc|strip|firstline|escape|nonempty}</b>
@@ -262,7 +262,7 @@
     </td>
     <td>{description}</td>
     <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
     <td class="indexlinks">{archives%indexarchiveentry}</td>
     <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
   </tr>\n'
--- a/mercurial/templates/monoblue/changelogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/changelogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,6 +1,6 @@
 <h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
 <ul class="changelog-entry">
-    <li class="age">{date|age}</li>
+    <li class="age">{date|date}</li>
     <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
     <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
 </ul>
--- a/mercurial/templates/monoblue/changeset.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/changeset.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -38,7 +38,7 @@
     <h2 class="no-link no-border">changeset</h2>
 
     <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>
 
     <dl class="overview">
         <dt>author</dt>
--- a/mercurial/templates/monoblue/fileannotate.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/fileannotate.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -40,7 +40,7 @@
 
     <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
     <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>
 
     <dl class="overview">
         <dt>author</dt>
--- a/mercurial/templates/monoblue/filerevision.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/filerevision.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -40,7 +40,7 @@
 
     <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
     <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>
 
     <dl class="overview">
         <dt>author</dt>
--- a/mercurial/templates/monoblue/footer.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/footer.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,3 +1,4 @@
+    <script type="text/javascript">process_dates()</script>
     <div class="page-footer">
         <p>Mercurial Repository: {repo|escape}</p>
         <ul class="rss-logo">
--- a/mercurial/templates/monoblue/graph.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/graph.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -40,7 +40,6 @@
         <ul id="graphnodes"></ul>
     </div>
 
-    <script type="text/javascript" src="{staticurl}graph.js"></script>
     <script>
     <!-- hide script content
 
--- a/mercurial/templates/monoblue/header.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/header.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -4,3 +4,4 @@
     <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
     <meta name="robots" content="index, nofollow"/>
     <link rel="stylesheet" href="{staticurl}style-monoblue.css" type="text/css" />
+    <script type="text/javascript" src="{staticurl}mercurial.js"></script>
--- a/mercurial/templates/monoblue/map	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/monoblue/map	Thu Apr 28 17:02:39 2011 +0200
@@ -139,7 +139,7 @@
 tags = tags.tmpl
 tagentry = '
   <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
     <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
     <td class="nowrap">
       <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -150,7 +150,7 @@
 bookmarks = bookmarks.tmpl
 bookmarkentry = '
   <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap date">{date|date}</td>
     <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
     <td class="nowrap">
       <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -161,7 +161,7 @@
 branches = branches.tmpl
 branchentry = '
   <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
     <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
     <td class="{status}">{branch|escape}</td>
     <td class="nowrap">
@@ -194,7 +194,7 @@
 bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
 shortlogentry = '
   <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
     <td>{author|person}</td>
     <td>
       <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
@@ -209,7 +209,7 @@
   </tr>'
 filelogentry = '
   <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
     <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
     <td class="nowrap">
       <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
@@ -222,7 +222,7 @@
     <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
     <td>{description}</td>
     <td>{contact|obfuscate}</td>
-    <td>{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
     <td class="indexlinks">{archives%indexarchiveentry}</td>
     <td>
       <div class="rss_logo">
--- a/mercurial/templates/paper/changeset.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/changeset.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -49,7 +49,7 @@
 </tr>
 <tr>
  <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
 <tr>
  <th class="author">parents</th>
  <td class="author">{parent%changesetparent}</td>
--- a/mercurial/templates/paper/fileannotate.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/fileannotate.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -54,7 +54,7 @@
 </tr>
 <tr>
  <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
 </tr>
 <tr>
  <th class="author">parents</th>
--- a/mercurial/templates/paper/filediff.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/filediff.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -53,7 +53,7 @@
 </tr>
 <tr>
  <th>date</th>
- <td>{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
 </tr>
 <tr>
  <th>parents</th>
--- a/mercurial/templates/paper/filelogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/filelogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,5 +1,5 @@
  <tr class="parity{parity}">
-  <td class="age">{date|age}</td>
+  <td class="age">{date|date}</td>
   <td class="author">{author|person}</td>
   <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
  </tr>
--- a/mercurial/templates/paper/filerevision.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/filerevision.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -52,7 +52,7 @@
 </tr>
 <tr>
  <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
 </tr>
 <tr>
  <th class="author">parents</th>
--- a/mercurial/templates/paper/footer.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/footer.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,3 +1,4 @@
+<script type="text/javascript">process_dates()</script>
 {motd}
 
 </body>
--- a/mercurial/templates/paper/graph.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/graph.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -55,7 +55,6 @@
 <ul id="graphnodes"></ul>
 </div>
 
-<script type="text/javascript" src="{staticurl}graph.js"></script>
 <script type="text/javascript">
 <!-- hide script content
 
--- a/mercurial/templates/paper/header.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/header.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -4,3 +4,4 @@
 <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
 <meta name="robots" content="index, nofollow" />
 <link rel="stylesheet" href="{staticurl}style-paper.css" type="text/css" />
+<script type="text/javascript" src="{staticurl}mercurial.js"></script>
--- a/mercurial/templates/paper/map	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/map	Thu Apr 28 17:02:39 2011 +0200
@@ -196,7 +196,7 @@
     <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
     <td>{description}</td>
     <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
     <td class="indexlinks">{archives%indexarchiveentry}</td>
   </tr>\n'
 indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
--- a/mercurial/templates/paper/shortlogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/paper/shortlogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,5 +1,5 @@
  <tr class="parity{parity}">
-  <td class="age">{age(date)}</td>
+  <td class="age">{date|date}</td>
   <td class="author">{author|person}</td>
   <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags % '<span class="tag">{name|escape}</span> '}{bookmarks % '<span class="tag">{name|escape}</span> '}</td>
  </tr>
--- a/mercurial/templates/spartan/changelogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/changelogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,6 +1,6 @@
 <table class="logEntry parity{parity}">
  <tr>
-  <th class="age">{date|age}:</th>
+  <th><span class="age">{date|date}</span>:</th>
   <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
  </tr>
  <tr>
--- a/mercurial/templates/spartan/changeset.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/changeset.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -31,7 +31,7 @@
 </tr>
 <tr>
  <th class="date">date:</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
 </tr>
 <tr>
  <th class="files">files:</th>
--- a/mercurial/templates/spartan/fileannotate.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/fileannotate.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -30,7 +30,7 @@
  <td>{author|obfuscate}</td></tr>
 <tr>
  <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
 </tr>
 <tr>
  <td class="metatag">permissions:</td>
--- a/mercurial/templates/spartan/filelogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/filelogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,6 +1,6 @@
 <table class="logEntry parity{parity}">
  <tr>
-  <th class="age">{date|age}:</th>
+  <th><span class="age">{date|date}</span>:</th>
   <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
  </tr>
  <tr>
--- a/mercurial/templates/spartan/filerevision.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/filerevision.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -30,7 +30,7 @@
  <td>{author|obfuscate}</td></tr>
 <tr>
  <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
 <tr>
  <td class="metatag">permissions:</td>
  <td>{permissions|permissions}</td></tr>
--- a/mercurial/templates/spartan/footer.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/footer.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,3 +1,4 @@
+<script type="text/javascript">process_dates()</script>
 {motd}
 <div class="logo">
 <a href="{logourl}">
--- a/mercurial/templates/spartan/graph.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/graph.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -36,7 +36,6 @@
 <ul id="graphnodes"></ul>
 </div>
 
-<script type="text/javascript" src="{staticurl}graph.js"></script>
 <script type="text/javascript">
 <!-- hide script content
 
--- a/mercurial/templates/spartan/header.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/header.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -4,3 +4,4 @@
 <link rel="icon" href="{staticurl}hgicon.png" type="image/png">
 <meta name="robots" content="index, nofollow" />
 <link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
+<script type="text/javascript" src="{staticurl}mercurial.js"></script>
--- a/mercurial/templates/spartan/map	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/map	Thu Apr 28 17:02:39 2011 +0200
@@ -168,7 +168,7 @@
     <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
     <td>{description}</td>
     <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
     <td class="indexlinks">
       <a href="{url}rss-log">RSS</a>
       <a href="{url}atom-log">Atom</a>
--- a/mercurial/templates/spartan/shortlogentry.tmpl	Wed Apr 27 21:55:46 2011 -0400
+++ b/mercurial/templates/spartan/shortlogentry.tmpl	Thu Apr 28 17:02:39 2011 +0200
@@ -1,6 +1,6 @@
 <table class="slogEntry parity{parity}">
  <tr>
-  <td class="age">{date|age}</td>
+  <td class="age">{date|date}</td>
   <td class="author">{author|person}</td>
   <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
  </tr>
--- a/mercurial/templates/static/graph.js	Wed Apr 27 21:55:46 2011 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-// branch_renderer.js - Rendering of branch DAGs on the client side
-//
-// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
-// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
-//
-// derived from code written by Scott James Remnant <scott@ubuntu.com>
-// Copyright 2005 Canonical Ltd.
-//
-// This software may be used and distributed according to the terms
-// of the GNU General Public License, incorporated herein by reference.
-
-var colors = [
-	[ 1.0, 0.0, 0.0 ],
-	[ 1.0, 1.0, 0.0 ],
-	[ 0.0, 1.0, 0.0 ],
-	[ 0.0, 1.0, 1.0 ],
-	[ 0.0, 0.0, 1.0 ],
-	[ 1.0, 0.0, 1.0 ]
-];
-
-function Graph() {
-	
-	this.canvas = document.getElementById('graph');
-	if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
-	this.ctx = this.canvas.getContext('2d');
-	this.ctx.strokeStyle = 'rgb(0, 0, 0)';
-	this.ctx.fillStyle = 'rgb(0, 0, 0)';
-	this.cur = [0, 0];
-	this.line_width = 3;
-	this.bg = [0, 4];
-	this.cell = [2, 0];
-	this.columns = 0;
-	this.revlink = '';
-	
-	this.scale = function(height) {
-		this.bg_height = height;
-		this.box_size = Math.floor(this.bg_height / 1.2);
-		this.cell_height = this.box_size;
-	}
-	
-	function colorPart(num) {
-		num *= 255
-		num = num < 0 ? 0 : num;
-		num = num > 255 ? 255 : num;
-		var digits = Math.round(num).toString(16);
-		if (num < 16) {
-			return '0' + digits;
-		} else {
-			return digits;
-		}
-	}
-
-	this.setColor = function(color, bg, fg) {
-		
-		// Set the colour.
-		//
-		// Picks a distinct colour based on an internal wheel; the bg
-		// parameter provides the value that should be assigned to the 'zero'
-		// colours and the fg parameter provides the multiplier that should be
-		// applied to the foreground colours.
-		
-		color %= colors.length;
-		var red = (colors[color][0] * fg) || bg;
-		var green = (colors[color][1] * fg) || bg;
-		var blue = (colors[color][2] * fg) || bg;
-		red = Math.round(red * 255);
-		green = Math.round(green * 255);
-		blue = Math.round(blue * 255);
-		var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
-		this.ctx.strokeStyle = s;
-		this.ctx.fillStyle = s;
-		return s;
-		
-	}
-
-	this.render = function(data) {
-		
-		var backgrounds = '';
-		var nodedata = '';
-		
-		for (var i in data) {
-			
-			var parity = i % 2;
-			this.cell[1] += this.bg_height;
-			this.bg[1] += this.bg_height;
-			
-			var cur = data[i];
-			var node = cur[1];
-			var edges = cur[2];
-			var fold = false;
-			
-			for (var j in edges) {
-				
-				line = edges[j];
-				start = line[0];
-				end = line[1];
-				color = line[2];
-
-				if (end > this.columns || start > this.columns) {
-					this.columns += 1;
-				}
-				
-				if (start == this.columns && start > end) {
-					var fold = true;
-				}
-				
-				x0 = this.cell[0] + this.box_size * start + this.box_size / 2;
-				y0 = this.bg[1] - this.bg_height / 2;
-				x1 = this.cell[0] + this.box_size * end + this.box_size / 2;
-				y1 = this.bg[1] + this.bg_height / 2;
-				
-				this.edge(x0, y0, x1, y1, color);
-				
-			}
-			
-			// Draw the revision node in the right column
-			
-			column = node[0]
-			color = node[1]
-			
-			radius = this.box_size / 8;
-			x = this.cell[0] + this.box_size * column + this.box_size / 2;
-			y = this.bg[1] - this.bg_height / 2;
-			var add = this.vertex(x, y, color, parity, cur);
-			backgrounds += add[0];
-			nodedata += add[1];
-			
-			if (fold) this.columns -= 1;
-			
-		}
-		
-		document.getElementById('nodebgs').innerHTML += backgrounds;
-		document.getElementById('graphnodes').innerHTML += nodedata;
-		
-	}
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/mercurial.js	Thu Apr 28 17:02:39 2011 +0200
@@ -0,0 +1,220 @@
+// mercurial.js - JavaScript utility functions
+//
+// Rendering of branch DAGs on the client side
+// Display of elapsed time
+//
+// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
+// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
+//
+// derived from code written by Scott James Remnant <scott@ubuntu.com>
+// Copyright 2005 Canonical Ltd.
+//
+// This software may be used and distributed according to the terms
+// of the GNU General Public License, incorporated herein by reference.
+
+var colors = [
+	[ 1.0, 0.0, 0.0 ],
+	[ 1.0, 1.0, 0.0 ],
+	[ 0.0, 1.0, 0.0 ],
+	[ 0.0, 1.0, 1.0 ],
+	[ 0.0, 0.0, 1.0 ],
+	[ 1.0, 0.0, 1.0 ]
+];
+
+function Graph() {
+	
+	this.canvas = document.getElementById('graph');
+	if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
+	this.ctx = this.canvas.getContext('2d');
+	this.ctx.strokeStyle = 'rgb(0, 0, 0)';
+	this.ctx.fillStyle = 'rgb(0, 0, 0)';
+	this.cur = [0, 0];
+	this.line_width = 3;
+	this.bg = [0, 4];
+	this.cell = [2, 0];
+	this.columns = 0;
+	this.revlink = '';
+	
+	this.scale = function(height) {
+		this.bg_height = height;
+		this.box_size = Math.floor(this.bg_height / 1.2);
+		this.cell_height = this.box_size;
+	}
+	
+	function colorPart(num) {
+		num *= 255
+		num = num < 0 ? 0 : num;
+		num = num > 255 ? 255 : num;
+		var digits = Math.round(num).toString(16);
+		if (num < 16) {
+			return '0' + digits;
+		} else {
+			return digits;
+		}
+	}
+
+	this.setColor = function(color, bg, fg) {
+		
+		// Set the colour.
+		//
+		// Picks a distinct colour based on an internal wheel; the bg
+		// parameter provides the value that should be assigned to the 'zero'
+		// colours and the fg parameter provides the multiplier that should be
+		// applied to the foreground colours.
+		
+		color %= colors.length;
+		var red = (colors[color][0] * fg) || bg;
+		var green = (colors[color][1] * fg) || bg;
+		var blue = (colors[color][2] * fg) || bg;
+		red = Math.round(red * 255);
+		green = Math.round(green * 255);
+		blue = Math.round(blue * 255);
+		var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
+		this.ctx.strokeStyle = s;
+		this.ctx.fillStyle = s;
+		return s;
+		
+	}
+
+	this.render = function(data) {
+		
+		var backgrounds = '';
+		var nodedata = '';
+		
+		for (var i in data) {
+			
+			var parity = i % 2;
+			this.cell[1] += this.bg_height;
+			this.bg[1] += this.bg_height;
+			
+			var cur = data[i];
+			var node = cur[1];
+			var edges = cur[2];
+			var fold = false;
+			
+			for (var j in edges) {
+				
+				line = edges[j];
+				start = line[0];
+				end = line[1];
+				color = line[2];
+
+				if (end > this.columns || start > this.columns) {
+					this.columns += 1;
+				}
+				
+				if (start == this.columns && start > end) {
+					var fold = true;
+				}
+				
+				x0 = this.cell[0] + this.box_size * start + this.box_size / 2;
+				y0 = this.bg[1] - this.bg_height / 2;
+				x1 = this.cell[0] + this.box_size * end + this.box_size / 2;
+				y1 = this.bg[1] + this.bg_height / 2;
+				
+				this.edge(x0, y0, x1, y1, color);
+				
+			}
+			
+			// Draw the revision node in the right column
+			
+			column = node[0]
+			color = node[1]
+			
+			radius = this.box_size / 8;
+			x = this.cell[0] + this.box_size * column + this.box_size / 2;
+			y = this.bg[1] - this.bg_height / 2;
+			var add = this.vertex(x, y, color, parity, cur);
+			backgrounds += add[0];
+			nodedata += add[1];
+			
+			if (fold) this.columns -= 1;
+			
+		}
+		
+		document.getElementById('nodebgs').innerHTML += backgrounds;
+		document.getElementById('graphnodes').innerHTML += nodedata;
+		
+	}
+
+}
+
+
+process_dates = (function(document, RegExp, Math, isNaN, Date, _false, _true){
+
+	// derived from code from mercurial/templatefilter.py
+
+	var scales = {
+		'year':  365 * 24 * 60 * 60,
+		'month':  30 * 24 * 60 * 60,
+		'week':    7 * 24 * 60 * 60,
+		'day':    24 * 60 * 60,
+		'hour':   60 * 60,
+		'minute': 60,
+		'second': 1
+	};
+
+	function format(count, string){
+		var ret = count + ' ' + string;
+		if (count > 1){
+			ret = ret + 's';
+		}
+		return ret;
+	}
+
+	function age(datestr){
+		var now = new Date();
+		var once = new Date(datestr);
+
+		if (isNaN(once.getTime())){
+			// parsing error
+			return datestr;
+		}
+
+		var delta = Math.floor((now.getTime() - once.getTime()) / 1000);
+
+		var future = _false;
+		if (delta < 0){
+			future = _true;
+			delta = -delta;
+			if (delta > (30 * scales.year)){
+				return "in the distant future";
+			}
+		}
+
+		if (delta > (2 * scales.year)){
+			return once.getFullYear() + '-' + once.getMonth() + '-' + once.getDate();
+		}
+
+		for (unit in scales){
+			var s = scales[unit];
+			var n = Math.floor(delta / s);
+			if ((n >= 2) || (s == 1)){
+				if (future){
+					return format(n, unit) + ' from now';
+				} else {
+					return format(n, unit) + ' ago';
+				}
+			}
+		}
+	}
+
+	return function(){
+		var nodes = document.getElementsByTagName('*');
+		var ageclass = new RegExp('\\bage\\b');
+		var dateclass = new RegExp('\\bdate\\b');
+		for (var i=0; i<nodes.length; ++i){
+			var node = nodes[i];
+			var classes = node.className;
+			if (ageclass.test(classes)){
+				var agevalue = age(node.textContent);
+				if (dateclass.test(classes)){
+					// We want both: date + (age)
+					node.textContent += ' ('+agevalue+')';
+				} else {
+					node.textContent = agevalue;
+				}
+			}
+		}
+	}
+})(document, RegExp, Math, isNaN, Date, false, true)
--- a/tests/test-hgweb-commands.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-commands.t	Thu Apr 28 17:02:39 2011 +0200
@@ -187,6 +187,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: log</title>
   <link rel="alternate" type="application/atom+xml"
@@ -245,17 +246,17 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/1d22e65f027e">branch</a><span class="branchhead">stable</span> <span class="tag">tip</span> <span class="tag">something</span> </td>
    </tr>
    <tr class="parity1">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/a4f92ed23982">Added tag 1.0 for changeset 2ef0ac749a14</a><span class="branchhead">default</span> </td>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
    </tr>
@@ -271,6 +272,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -285,6 +287,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 2ef0ac749a14</title>
   </head>
@@ -336,7 +339,7 @@
   </tr>
   <tr>
    <th class="date">date</th>
-   <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
   <tr>
    <th class="author">parents</th>
    <td class="author"></td>
@@ -367,6 +370,7 @@
   
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -398,6 +402,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: searching for base</title>
   </head>
@@ -442,7 +447,7 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/2ef0ac749a14">base</a><span class="tag">1.0</span> <span class="tag">anotherthing</span> </td>
    </tr>
@@ -457,6 +462,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -496,6 +502,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a4f92ed23982 foo</title>
   </head>
@@ -550,7 +557,7 @@
   </tr>
   <tr>
    <th class="date">date</th>
-   <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
   </tr>
   <tr>
    <th class="author">parents</th>
@@ -573,6 +580,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -619,7 +627,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow"/>
   <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
-  
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: Summary</title>
   <link rel="alternate" type="application/atom+xml"
@@ -664,7 +672,7 @@
   <table cellspacing="0">
   
   <tr class="parity0">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><i>test</i></td>
   <td>
   <a class="list" href="/rev/1d22e65f027e?style=gitweb">
@@ -678,7 +686,7 @@
   </td>
   </tr>
   <tr class="parity1">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><i>test</i></td>
   <td>
   <a class="list" href="/rev/a4f92ed23982?style=gitweb">
@@ -692,7 +700,7 @@
   </td>
   </tr>
   <tr class="parity0">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><i>test</i></td>
   <td>
   <a class="list" href="/rev/2ef0ac749a14?style=gitweb">
@@ -712,7 +720,7 @@
   <table cellspacing="0">
   
   <tr class="parity0">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>1.0</b></a></td>
   <td class="link">
   <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
@@ -727,7 +735,7 @@
   <table cellspacing="0">
   
   <tr class="parity0">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><a class="list" href="/rev/2ef0ac749a14?style=gitweb"><b>anotherthing</b></a></td>
   <td class="link">
   <a href="/rev/2ef0ac749a14?style=gitweb">changeset</a> |
@@ -736,7 +744,7 @@
   </td>
   </tr>
   <tr class="parity1">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><a class="list" href="/rev/1d22e65f027e?style=gitweb"><b>something</b></a></td>
   <td class="link">
   <a href="/rev/1d22e65f027e?style=gitweb">changeset</a> |
@@ -751,7 +759,7 @@
   <table cellspacing="0">
   
   <tr class="parity0">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
   <td class="">stable</td>
   <td class="link">
@@ -761,7 +769,7 @@
   </td>
   </tr>
   <tr class="parity1">
-  <td class="age"><i>1970-01-01</i></td>
+  <td class="age"><i class="age">Thu Jan 01 00:00:00 1970 +0000</i></td>
   <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
   <td class="">default</td>
   <td class="link">
@@ -774,6 +782,7 @@
     <td colspan="4"><a class="list"  href="#">...</a></td>
   </tr>
   </table>
+  <script type="text/javascript">process_dates()</script>
   <div class="page_footer">
   <div class="page_footer_text">test</div>
   <div class="rss_logo">
@@ -796,7 +805,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow"/>
   <link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
-  
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: Graph</title>
   <link rel="alternate" type="application/atom+xml"
@@ -843,7 +852,6 @@
   <ul id="graphnodes"></ul>
   </div>
   
-  <script type="text/javascript" src="/static/graph.js"></script>
   <script>
   <!-- hide script content
   
@@ -925,6 +933,7 @@
   | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-2</a> <a href="/graph/tip?style=gitweb">tip</a> 
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   <div class="page_footer">
   <div class="page_footer_text">test</div>
   <div class="rss_logo">
--- a/tests/test-hgweb-descend-empties.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-descend-empties.t	Thu Apr 28 17:02:39 2011 +0200
@@ -36,6 +36,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 9087c84a0f5d /</title>
   </head>
@@ -129,6 +130,7 @@
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
--- a/tests/test-hgweb-diffs.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-diffs.t	Thu Apr 28 17:02:39 2011 +0200
@@ -29,6 +29,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 0cd96de13884</title>
   </head>
@@ -80,7 +81,7 @@
   </tr>
   <tr>
    <th class="date">date</th>
-   <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
   <tr>
    <th class="author">parents</th>
    <td class="author"></td>
@@ -111,6 +112,7 @@
   
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -153,6 +155,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a diff</title>
   </head>
@@ -208,7 +211,7 @@
   </tr>
   <tr>
    <th>date</th>
-   <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
   </tr>
   <tr>
    <th>parents</th>
@@ -233,6 +236,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -256,6 +260,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 0cd96de13884</title>
   </head>
@@ -307,7 +312,7 @@
   </tr>
   <tr>
    <th class="date">date</th>
-   <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
   <tr>
    <th class="author">parents</th>
    <td class="author"></td>
@@ -340,6 +345,7 @@
   
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -384,6 +390,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a diff</title>
   </head>
@@ -439,7 +446,7 @@
   </tr>
   <tr>
    <th>date</th>
-   <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
   </tr>
   <tr>
    <th>parents</th>
@@ -465,6 +472,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
--- a/tests/test-hgweb-empty.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-empty.t	Thu Apr 28 17:02:39 2011 +0200
@@ -13,6 +13,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: log</title>
   <link rel="alternate" type="application/atom+xml"
@@ -82,6 +83,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -96,6 +98,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: log</title>
   <link rel="alternate" type="application/atom+xml"
@@ -165,6 +168,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -179,6 +183,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: revision graph</title>
   <link rel="alternate" type="application/atom+xml"
@@ -236,7 +241,6 @@
   <ul id="graphnodes"></ul>
   </div>
   
-  <script type="text/javascript" src="/static/graph.js"></script>
   <script type="text/javascript">
   <!-- hide script content
   
@@ -320,6 +324,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -334,6 +339,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 000000000000 /</title>
   </head>
@@ -391,6 +397,7 @@
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
--- a/tests/test-hgweb-filelog.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-filelog.t	Thu Apr 28 17:02:39 2011 +0200
@@ -117,6 +117,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a history</title>
   <link rel="alternate" type="application/atom+xml"
@@ -178,12 +179,12 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
    </tr>
    <tr class="parity1">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/5ed941583260">first a</a></td>
    </tr>
@@ -199,6 +200,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -216,6 +218,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a history</title>
   <link rel="alternate" type="application/atom+xml"
@@ -277,12 +280,12 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/01de2d66a28d">second a</a></td>
    </tr>
    <tr class="parity1">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/5ed941583260">first a</a></td>
    </tr>
@@ -298,6 +301,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -315,6 +319,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a history</title>
   <link rel="alternate" type="application/atom+xml"
@@ -376,7 +381,7 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/5ed941583260">first a</a></td>
    </tr>
@@ -392,6 +397,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -409,6 +415,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a history</title>
   <link rel="alternate" type="application/atom+xml"
@@ -470,7 +477,7 @@
     <th class="description">description</th>
    </tr>
    <tr class="parity0">
-    <td class="age">1970-01-01</td>
+    <td class="age">Thu Jan 01 00:00:00 1970 +0000</td>
     <td class="author">test</td>
     <td class="description"><a href="/rev/5ed941583260">first a</a></td>
    </tr>
@@ -486,6 +493,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -503,6 +511,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: error</title>
   </head>
@@ -547,6 +556,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -565,6 +575,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png">
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: c history</title>
   <link rel="alternate" type="application/atom+xml"
@@ -593,7 +604,7 @@
   
   <table class="logEntry parity0">
    <tr>
-    <th class="age">1970-01-01:</th>
+    <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
     <th class="firstline"><a href="/rev/b7682196df1c?style=spartan">change c</a></th>
    </tr>
    <tr>
@@ -618,7 +629,7 @@
   
   <table class="logEntry parity1">
    <tr>
-    <th class="age">1970-01-01:</th>
+    <th><span class="age">Thu Jan 01 00:00:00 1970 +0000</span>:</th>
     <th class="firstline"><a href="/rev/1a6696706df2?style=spartan">mv b</a></th>
    </tr>
    <tr>
@@ -651,6 +662,7 @@
   
   
   
+  <script type="text/javascript">process_dates()</script>
   
   <div class="logo">
   <a href="http://mercurial.selenic.com/">
--- a/tests/test-hgweb-removed.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb-removed.t	Thu Apr 28 17:02:39 2011 +0200
@@ -24,6 +24,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: c78f6c5cbea9</title>
   </head>
@@ -75,7 +76,7 @@
   </tr>
   <tr>
    <th class="date">date</th>
-   <td class="date">Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td></tr>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td></tr>
   <tr>
    <th class="author">parents</th>
    <td class="author"><a href="/rev/cb9a9f314b8b">cb9a9f314b8b</a> </td>
@@ -102,6 +103,7 @@
   
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -119,6 +121,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: a diff</title>
   </head>
@@ -174,7 +177,7 @@
   </tr>
   <tr>
    <th>date</th>
-   <td>Thu Jan 01 00:00:00 1970 +0000 (1970-01-01)</td>
+   <td class="date age">Thu Jan 01 00:00:00 1970 +0000</td>
   </tr>
   <tr>
    <th>parents</th>
@@ -199,6 +202,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
--- a/tests/test-hgweb.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgweb.t	Thu Apr 28 17:02:39 2011 +0200
@@ -47,6 +47,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: error</title>
   </head>
@@ -91,6 +92,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -133,6 +135,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: error</title>
   </head>
@@ -177,6 +180,7 @@
   </div>
   </div>
   
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -201,6 +205,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>test: 2ef0ac749a14 /</title>
   </head>
@@ -279,6 +284,7 @@
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
--- a/tests/test-hgwebdir.t	Wed Apr 27 21:55:46 2011 -0400
+++ b/tests/test-hgwebdir.t	Thu Apr 28 17:02:39 2011 +0200
@@ -143,6 +143,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>Mercurial repositories index</title>
   </head>
@@ -169,7 +170,7 @@
   <td><a href="/t/a/?style=paper">t/a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -177,7 +178,7 @@
   <td><a href="/b/?style=paper">b</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -185,7 +186,7 @@
   <td><a href="/coll/a/?style=paper">coll/a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -193,7 +194,7 @@
   <td><a href="/coll/a/.hg/patches/?style=paper">coll/a/.hg/patches</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -201,7 +202,7 @@
   <td><a href="/coll/b/?style=paper">coll/b</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -209,7 +210,7 @@
   <td><a href="/coll/c/?style=paper">coll/c</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -217,7 +218,7 @@
   <td><a href="/rcoll/a/?style=paper">rcoll/a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -225,7 +226,7 @@
   <td><a href="/rcoll/a/.hg/patches/?style=paper">rcoll/a/.hg/patches</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -233,7 +234,7 @@
   <td><a href="/rcoll/b/?style=paper">rcoll/b</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -241,7 +242,7 @@
   <td><a href="/rcoll/b/d/?style=paper">rcoll/b/d</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -249,7 +250,7 @@
   <td><a href="/rcoll/c/?style=paper">rcoll/c</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -257,7 +258,7 @@
   <td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -265,7 +266,7 @@
   <td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -273,7 +274,7 @@
   <td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -281,7 +282,7 @@
   <td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -289,7 +290,7 @@
   <td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -297,7 +298,7 @@
   <td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -305,7 +306,7 @@
   <td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -313,7 +314,7 @@
   <td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -321,7 +322,7 @@
   <td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -329,7 +330,7 @@
   <td><a href="/astar/?style=paper">astar</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
@@ -337,13 +338,14 @@
   <td><a href="/astar/.hg/patches/?style=paper">astar/.hg/patches</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -370,6 +372,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>Mercurial repositories index</title>
   </head>
@@ -396,13 +399,14 @@
   <td><a href="/t/a/?style=paper">a</a></td>
   <td>unknown</td>
   <td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
-  <td class="age">* ago</td> (glob)
+  <td class="age">*</td> (glob)
   <td class="indexlinks"></td>
   </tr>
   
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>
@@ -560,6 +564,7 @@
   <link rel="icon" href="/static/hgicon.png" type="image/png" />
   <meta name="robots" content="index, nofollow" />
   <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
+  <script type="text/javascript" src="/static/mercurial.js"></script>
   
   <title>Mercurial repositories index</title>
   </head>
@@ -585,6 +590,7 @@
   </table>
   </div>
   </div>
+  <script type="text/javascript">process_dates()</script>
   
   
   </body>