Index: zpt/common_template.zpt
===================================================================
--- zpt/common_template.zpt	(revision 501)
+++ zpt/common_template.zpt	(revision 501)
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+</head>
+<body>
+  <!-- block used for page header content area -->
+  <metal:block metal:define-macro="head"
+    tal:define="docpath docinfo/textURLPath | nothing;
+               query here/REQUEST/query | nothing;
+               queryType here/REQUEST/queryType | nothing;
+               bib docinfo/bib | nothing; bibType docinfo/bibType | nothing;
+               formattedLabel python:here.metadataService.getBibFormattedLabel(bibdata=bib);">
+    <div tal:condition="not:formattedLabel"
+      tal:content="string:[no bibliographical information for this document (type ${bibType})]" />
+    <div tal:condition="formattedLabel" tal:content="structure formattedLabel" />
+  </metal:block>
+  <!-- /head -->
+
+  <!-- page ruler with previous/next page buttons -->
+  <metal:block metal:define-macro="page_ruler"
+    tal:define="
+              prev python:test(pn>1,pn-1,None); next python:test(pn<numPages,pn+1,None);
+              first python:test(pn>1,1,None); last python:test(pn<numPages,numPages,None);
+              left python:test(flowLtr,prev,next); right python:test(flowLtr,next,prev);
+              leftest python:test(flowLtr,first,last); rightest python:test(flowLtr,last,first);">
+    <form class="autosubmit" tal:attributes="action viewerUrl">
+      <input type="hidden" tal:define="params python:here.getParams('pn', None)"
+        tal:repeat="param params" tal:attributes="name param; value python:params[param]" />
+      page <a tal:condition="leftest"
+        tal:attributes="href python:here.getLink('pn',leftest)">|&lt;</a> <span
+        tal:condition="not:leftest">|&lt;</span> <a tal:condition="left"
+        tal:attributes="href python:here.getLink('pn',left)">&lt;</a> <span
+        tal:condition="not:left">&lt;</span> <input class="autosubmit" size="3"
+        type="text" name="pn" tal:attributes="value pn" /> <span class="originalPage"
+        title="Original page number"
+        tal:define="originalPage pageinfo/pageNumberOrig | nothing"
+        tal:condition="python:originalPage!=None"> (<span
+        tal:replace="originalPage" /><span
+        tal:define="originalPageNorm pageinfo/pageNumberOrigNorm | nothing"
+        tal:condition="python:originalPageNorm!=None"> [<span
+          tal:replace="originalPageNorm" />]
+      </span>)
+      </span> <input type="submit" value="Go" /> of <span tal:replace="numPages" /> <a
+        tal:condition="right" tal:attributes="href python:here.getLink('pn',right)">&gt;</a>
+      <span tal:condition="not:right">&gt;</span> <a tal:condition="rightest"
+        tal:attributes="href python:here.getLink('pn',rightest)">&gt;|</a> <span
+        tal:condition="not:rightest">&gt;|</span>
+    </form>
+  </metal:block>
+  <!-- /ruler -->
+
+  <!-- toc ruler with previous/next toc page buttons -->
+  <metal:block metal:define-macro="toc_ruler">
+    <form class="autosubmit" tal:attributes="action viewerUrl">
+      <input type="hidden" tal:define="params python:here.getParams('start', None)"
+        tal:repeat="param params" tal:attributes="name param; value python:params[param]" />
+      <a tal:condition="batch/prevStart"
+        tal:attributes="href python:here.getLink('start',batch['prevStart'])">&lt;</a> <span
+        tal:condition="not:batch/prevStart">&lt;</span>
+      <select class="autosubmit" name="start">
+        <option tal:repeat="grp batch/batches"
+          tal:attributes="selected python:(start==grp['start']); value grp/start"
+          tal:content="string:${grp/start} - ${grp/end}" />
+      </select>
+      <input type="submit" value="Go" /> <a tal:condition="batch/nextStart"
+        tal:attributes="href python:here.getLink('start',batch['nextStart'])">&gt;</a> <span
+        tal:condition="not:batch/nextStart">&gt;</span>
+    </form>
+  </metal:block>
+
+</body>
+</html>
Index: zpt/head_main.zpt
===================================================================
--- zpt/head_main.zpt	(revision 489)
+++ 	(revision )
@@ -1,20 +1,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-</head>
-<body>
-  <!-- block used for page header content area -->
-  <metal:block metal:define-macro="main"
-    tal:define="docpath docinfo/textURLPath | nothing;
-               query here/REQUEST/query | nothing;
-               queryType here/REQUEST/queryType | nothing;
-               bib docinfo/bib | nothing; bibType docinfo/bibType | nothing;
-               formattedLabel python:here.metadataService.getBibFormattedLabel(bibdata=bib);">
-    <div tal:condition="not:formattedLabel"
-      tal:content="string:(no bibliographical information for ${bibType})" />
-    <div tal:condition="formattedLabel" tal:content="structure formattedLabel" />
-  </metal:block>
-</body>
-</html>
Index: zpt/toc_figures.zpt
===================================================================
--- zpt/toc_figures.zpt	(revision 489)
+++ zpt/toc_figures.zpt	(revision 501)
@@ -28,22 +28,5 @@
     </ul>
     <div class="ruler">
-      <form class="autosubmit" tal:attributes="action viewerUrl">
-        <input type="hidden"
-          tal:define="params python:here.getParams('start', None)"
-          tal:repeat="param params"
-          tal:attributes="name param; value python:params[param]" /> 
-        <a tal:condition="batch/prevStart"
-          tal:attributes="href python:here.getLink('start',batch['prevStart'])">&lt;</a>
-        <span tal:condition="not:batch/prevStart">&lt;</span> 
-        <select class="autosubmit" name="start">
-          <option tal:repeat="grp batch/batches"
-            tal:attributes="selected python:(start==grp['start']); value grp/start"
-            tal:content="string:${grp/start} - ${grp/end}" />
-        </select> 
-        <input type="submit" value="Go" /> 
-        <a tal:condition="batch/nextStart"
-          tal:attributes="href python:here.getLink('start',batch['nextStart'])">&gt;</a>
-        <span tal:condition="not:batch/nextStart">&gt;</span> 
-      </form>
+        <metal:block metal:use-macro="here/template/common_template/macros/toc_ruler"/>
     </div>
     <div class="content"
Index: zpt/toc_text.zpt
===================================================================
--- zpt/toc_text.zpt	(revision 489)
+++ zpt/toc_text.zpt	(revision 501)
@@ -28,22 +28,5 @@
     </ul>
     <div class="ruler">
-      <form class="autosubmit" tal:attributes="action viewerUrl">
-        <input type="hidden"
-          tal:define="params python:here.getParams('start', None)"
-          tal:repeat="param params"
-          tal:attributes="name param; value python:params[param]" /> 
-        <a tal:condition="batch/prevStart"
-          tal:attributes="href python:here.getLink('start',batch['prevStart'])">&lt;</a>
-        <span tal:condition="not:batch/prevStart">&lt;</span> 
-        <select class="autosubmit" name="start">
-          <option tal:repeat="grp batch/batches"
-            tal:attributes="selected python:(start==grp['start']); value grp/start"
-            tal:content="string:${grp/start} - ${grp/end}" />
-        </select> 
-        <input type="submit" value="Go" /> 
-        <a tal:condition="batch/nextStart"
-          tal:attributes="href python:here.getLink('start',batch['nextStart'])">&gt;</a>
-        <span tal:condition="not:batch/nextStart">&gt;</span> 
-      </form>
+        <metal:block metal:use-macro="here/template/common_template/macros/toc_ruler"/>
     </div>
     <div class="content"
Index: zpt/viewer_images.zpt
===================================================================
--- zpt/viewer_images.zpt	(revision 500)
+++ zpt/viewer_images.zpt	(revision 501)
@@ -6,17 +6,24 @@
               numPages docinfo/numPages | nothing; dlBaseUrl docinfo/digilibBaseUrl | nothing;">
 <head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title
+    tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')" />
   <link rel="stylesheet" href="template/docuviewer_css" type="text/css" />
   <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.js"></script>
-  <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.cookie.js"></script>
-  <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.js"></script>
-  <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.geometry.js"></script>
-  <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.arrows.js"></script>
-  <script type="text/javascript" tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.marks.js"></script>
-  <link rel="stylesheet" type="text/css" tal:attributes="href string:$dlBaseUrl/jquery/jquery.digilib.css" />
+  <script type="text/javascript"
+    tal:attributes="src string:$dlBaseUrl/jquery/jquery.cookie.js"></script>
+  <script type="text/javascript"
+    tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.js"></script>
+  <script type="text/javascript"
+    tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.geometry.js"></script>
+  <script type="text/javascript"
+    tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.arrows.js"></script>
+  <script type="text/javascript"
+    tal:attributes="src string:$dlBaseUrl/jquery/jquery.digilib.marks.js"></script>
+  <link rel="stylesheet" type="text/css"
+    tal:attributes="href string:$dlBaseUrl/jquery/jquery.digilib.css" />
 
-<script type="text/javascript"
-  tal:content="string:
+  <script type="text/javascript"
+    tal:content="string:
        var dlOpts = {
             'interactionMode' : 'fullscreen',
@@ -28,19 +35,19 @@
         };"></script>
 
-<script type="text/javascript">
-// <!--
-    $(document).ready(function() {
-        // autosubmit forms
-        $('form.autosubmit').find('.autosubmit').change(function() {
-            this.form.submit();
-        });
-        $('form.autosubmit input[type="submit"]').hide();
-        // get digilib div
-        $digilib = $('div#scaler');
-        // configure digilib
-        $digilib.digilib(dlOpts);
-    });
-// -->
-</script>
+  <script type="text/javascript">
+            // <!--
+            $(document).ready(function() {
+                // autosubmit forms
+                $('form.autosubmit').find('.autosubmit').change(function() {
+                    this.form.submit();
+                });
+                $('form.autosubmit input[type="submit"]').hide();
+                // get digilib div
+                $digilib = $('div#scaler');
+                // configure digilib
+                $digilib.digilib(dlOpts);
+            });
+        // -->
+        </script>
 </head>
 <body tal:condition="numPages">
@@ -48,62 +55,68 @@
     tal:define="docpath docinfo/textURLPath | nothing;
               pn pageinfo/pn; 
-              flowLtr python:pageinfo.get('pageFlow','ltr')!='rtl';
-              prev python:test(pn>1,pn-1,None); next python:test(pn<numPages,pn+1,None);
-              first python:test(pn>1,1,None); last python:test(pn<numPages,numPages,None);
-              left python:test(flowLtr,prev,next); right python:test(flowLtr,next,prev);
-              leftest python:test(flowLtr,first,last); rightest python:test(flowLtr,last,first);">
+              flowLtr python:pageinfo.get('pageFlow','ltr')!='rtl';">
     <div class="page-head">
-      <metal:block metal:use-macro="here/template/head_main/macros/main" />
+      <metal:block metal:use-macro="here/template/common_template/macros/head" />
     </div>
     <div class="page-body" tal:condition="python:here.isAccessible(docinfo)">
-      <!--table of contents-->
+      <!-- table of contents -->
       <div class="col-left">
-        <metal:block metal:use-macro="python:path('here/template/toc_%s/macros/main'%tocMode)" />
+        <metal:block
+          metal:use-macro="python:path('here/template/toc_%s/macros/main'%tocMode)" />
       </div>
       <!-- col-main: text page -->
       <div class="col-main">
         <div class="ruler">
-          <form class="autosubmit" tal:attributes="action viewerUrl">
-            <input type="hidden" tal:define="params python:here.getParams('pn', None)" tal:repeat="param params"
-              tal:attributes="name param; value python:params[param]" /> page <a tal:condition="leftest"
-              tal:attributes="href python:here.getLink('pn',leftest)">|&lt;</a> <span tal:condition="not:leftest">|&lt;</span> <a
-              tal:condition="left" tal:attributes="href python:here.getLink('pn',left)">&lt;</a> <span tal:condition="not:left">&lt;</span>
-            <input class="autosubmit" size="3" type="text" name="pn" tal:attributes="value pn" />
-            <tal:block tal:define="originalPage pageinfo/pageNumberOrig | nothing" tal:condition="python:originalPage!=None">
-              (<span tal:replace="originalPage" />
-              <span tal:define="originalPageNorm pageinfo/pageNumberOrigNorm | nothing"
-                tal:condition="python:originalPageNorm!=None">[<span tal:replace="originalPageNorm" />]</span>)      
-            </tal:block>
-            <input type="submit" value="Go" />
-            of <span tal:replace="numPages" /> <a tal:condition="right"
-              tal:attributes="href python:here.getLink('pn',right)">&gt;</a> <span tal:condition="not:right">&gt;</span> <a
-              tal:condition="rightest" tal:attributes="href python:here.getLink('pn',rightest)">&gt;|</a> <span
-              tal:condition="not:rightest">&gt;|</span>
-          </form>
-        </div><!-- ruler -->
+          <metal:block metal:use-macro="here/template/common_template/macros/page_ruler" />
+        </div>
         <ul class="switcher">
           <li class="sel">Image</li>
-          <li><a tal:condition="docpath" tal:attributes="href python:here.getLink('viewMode','text')">Text</a></li>
+          <li tal:condition="docpath">
+            <a tal:attributes="href python:here.getLink('viewMode','text')">Text</a>
+          </li>
         </ul>
+        <!-- /switcher -->
         <div class="content">
           <div id="scaler">
-            <img tal:attributes="src string:${docinfo/imageURL}&pn=${pageinfo/pn}&dw=500&dh=500" />
+            <img
+              tal:attributes="src string:${docinfo/imageURL}&pn=${pageinfo/pn}&dw=500&dh=500" />
           </div>
-        </div> <!-- content -->
-      </div> <!-- col-main -->
+        </div>
+        <!-- /content -->
+      </div>
+      <!-- /col-main -->
       <div class="col-right">
-          <div class="digilib-buttons">
-            <div><a href="javascript:$digilib.digilib('zoomBy', 1.4)">zoom in</a></div>
-            <div><a href="javascript:$digilib.digilib('zoomBy', 0.7)">zoom out</a></div>
-            <div><a href="javascript:$digilib.digilib('zoomArea')">zoom area</a></div>
-            <div><a href="javascript:$digilib.digilib('zoomFull')">full page</a></div>
-            <div><a href="javascript:$digilib.digilib('zoomFull', 'width')">page width</a></div>
-            <div><a href="javascript:$digilib.digilib('setMark')">set mark</a></div>
-            <div><a href="javascript:$digilib.digilib('removeMark')">remove mark</a></div>
-            <div><a href="javascript:$digilib.digilib('reference')">get reference</a></div>
-            <div><a href="javascript:$digilib.digilib('digilibUrl', 'open_new')">digilib</a></div>
+        <div class="digilib-buttons">
+          <div>
+            <a href="javascript:$digilib.digilib('zoomBy', 1.4)">zoom in</a>
           </div>
+          <div>
+            <a href="javascript:$digilib.digilib('zoomBy', 0.7)">zoom out</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('zoomArea')">zoom area</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('zoomFull')">full page</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('zoomFull', 'width')">page width</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('setMark')">set mark</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('removeMark')">remove mark</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('reference')">get reference</a>
+          </div>
+          <div>
+            <a href="javascript:$digilib.digilib('digilibUrl', 'open_new')">digilib</a>
+          </div>
+        </div>
       </div>
-    </div> <!-- page-body -->
+    </div>
+    <!-- page-body -->
     <div class="page-body" tal:condition="python:not here.isAccessible(docinfo)">
       <div class="errortext">Sorry, access to this document is restricted.</div>
Index: zpt/viewer_index.zpt
===================================================================
--- zpt/viewer_index.zpt	(revision 499)
+++ zpt/viewer_index.zpt	(revision 501)
@@ -4,4 +4,6 @@
   tal:define="docinfo options/docinfo; pageinfo options/pageinfo; viewMode pageinfo/viewMode;
                   tocMode pageinfo/tocMode; viewType pageinfo/viewType; viewerUrl docinfo/viewerUrl;
+                  docpath docinfo/textURLPath | nothing;
+                  query nothing;
                   numPages docinfo/numPages | nothing;">
 <head>
@@ -11,95 +13,88 @@
 </head>
 <body tal:condition="numPages">
-  <tal:block
-    tal:define="docpath docinfo/textURLPath; 
-                query nothing;">
-    <table width="98%">
-      <tr>
-        <td valign="top">
-              <a href="http://echo.mpiwg-berlin.mpg.de/content">
-                <img border="0" src="images/logo.png" align="top" alt=""/>
-              </a>
-            </td>
-        <td valign="top" align="right">
-          <!--<b><span>home</span>&nbsp;&nbsp;&nbsp;<span>contact</span>&nbsp;&nbsp;&nbsp;<span>help</span></b>-->
-        </td>
-        <td valign="top" align="right">
-          <!--BEGIN search -->
-          <form tal:condition="docpath" tal:attributes="action python:here.getLink()">
-                <input type="hidden" tal:define="params python:here.getParams('viewMode', None)" tal:repeat="param params" tal:attributes="name param; value python:params[param]"/>
-        <input class="textMain" name="query" onfocus="this.select();"  type="text" tal:attributes="value query"/>
-        <input type="submit" class="buttonMain" value="Search in Book"/>           
-          </form>
-          <!-- END search-->
-        </td>
-      </tr>
-    </table>
-    <table border="0">
-      <tr>
-        <td valign="top">
-          <a tal:define="tp docinfo/titlePage | nothing" tal:attributes="href python:context.getLink('viewMode','auto')">
-        <img tal:condition="tp" border="0" tal:attributes="src string:${docinfo/imageURL}&pn=$tp&dw=300&dh=500"/>
-        <img tal:condition="not:tp" border="0" src="images/oldbook.png"/>
-          </a>
-        </td>
-        <td valign="top">
-              <table border=0 id="bibinfo" tal:define="formattedData python:here.metadata.getFormattedMetaDataExtended(bibdata=docinfo.get('bib', None))">
-            <!-- wenn es bibinfo in docinfo gibt -->
+  <h1>Document information</h1>
 
-            <tal:x condition="python:formattedData">
-              <div tal:replace="structure python:formattedData"/>
-              <!-- <div><a href="javascript:showExtendedMetadata(1)">extended</a></div> -->
-                  <div tal:condition="exists:docinfo/attribution" tal:replace="structure python:here.metadataService.getAttributionFormatted('metadata_template', data=docinfo['attribution'])"/>
-                  <div tal:condition="exists:docinfo/copyright" tal:replace="structure python:here.metadataService.getCopyrightFormatted('metadata_template', data=docinfo['copyright'])"/>
-            </tal:x>
+  <div class="index-image">
+    <!-- image -->
+    <a tal:define="tp docinfo/titlePage | nothing"
+      tal:attributes="href python:context.getLink('viewMode','auto')"><img
+      tal:condition="tp" border="0"
+      tal:attributes="src string:${docinfo/imageURL}&pn=$tp&dw=300&dh=500" /><img
+      tal:condition="not:tp" border="0" src="images/oldbook.png" /></a>
+  </div>
 
-            <!-- kein template fuer die daten -->
-            <tal:x condition="python:formattedData==None">
-              <tal:x condition="exists:docinfo/bib">
-                <tr tal:define="bibinfo docinfo/bib" tal:repeat="bib bibinfo">
-                  <td class="type" tal:content="python:bib.capitalize().replace('_',' ') + ':'"/>
-                  <td class="content" tal:content="bibinfo/bib"/>
-                </tr>
-              </tal:x>
-              
-              <!-- wenn es keine bibinfo gibt (archimedes-texte) -->
-              <tal:y condition="not:exists:docinfo/bib">
-                <tr>
-                  <td class="type">Author:</td>
-                  <td class="content" tal:content="python:docinfo['creator']"/>
-                </tr>
-                <tr>
-                  <td class="type">Title:</td>
-                  <td class="content" tal:content="python:docinfo['title']"/>
-                </tr>
-                <tr>
-                  <td class="type">Year:</td>
-                  <td class="content" tal:content="python:docinfo['date']"/>
-                </tr>
-              </tal:y>
-            </tal:x> <!-- ende kein template fuer die daten -->
-              </table>
+  <div class="index-info">
+    <table border="0"
+      tal:define="formattedData python:here.metadata.getBibFormattedMetaDataExtended(bibdata=docinfo.get('bib', None))">
+      <tal:x condition="python:formattedData">
+        <!-- wenn es bibinfo in docinfo gibt -->
+        <tr tal:replace="structure python:formattedData" />
+      </tal:x>
 
-          <br/><br/><br/><br/><br/><br/>
-          <table border="0" width="100%">
-        <tr>
-          <td>
-            <a class="openbutton" tal:attributes="href python:context.getLink('viewMode','auto')">Access Book</a>
-          </td>
-        </tr>
-        
-        <tr tal:condition="docpath">
-          <td class="openbutton1">Download: 
-            <a tal:attributes="href python:'http://mpdl-system.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s.html'%(docpath.replace('.xml','.html'))" target="_blank">html</a> 
-            /
-            <a tal:attributes="href python:'http://mpdl-system.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s'%(docpath)" target="_blank">xml</a>
-          </td>
-        </tr>
-          </table>
-        </td>
-      </tr>
+      <tal:x condition="python:formattedData==None">
+        <!-- kein template fuer die daten -->
+        <tal:x condition="exists:docinfo/bib">
+          <tr tal:define="bibinfo docinfo/bib" tal:repeat="bib bibinfo">
+            <td class="type" tal:content="python:bib.capitalize().replace('_',' ') + ':'" />
+            <td class="content" tal:content="bibinfo/bib" />
+          </tr>
+        </tal:x>
+
+        <tal:y condition="not:exists:docinfo/bib">
+          <!-- wenn es kein bibinfo gibt (archimedes-texte) -->
+          <tr>
+            <td class="type">Author:</td>
+            <td class="content" tal:content="docinfo/creator" />
+          </tr>
+          <tr>
+            <td class="type">Title:</td>
+            <td class="content" tal:content="docinfo/title" />
+          </tr>
+          <tr>
+            <td class="type">Date:</td>
+            <td class="content" tal:content="docinfo/date" />
+          </tr>
+        </tal:y>
+      </tal:x>
+      <!-- ende kein template fuer die daten -->
     </table>
 
-</tal:block>
+    <table border="0">
+      <!-- attribution -->
+      <tr tal:condition="exists:docinfo/attribution"
+        tal:replace="structure python:here.metadataService.getAttributionFormatted('metadata_template', data=docinfo['attribution'])" />
+      <!-- copyright -->
+      <tr tal:condition="exists:docinfo/copyright"
+        tal:replace="structure python:here.metadataService.getCopyrightFormatted('metadata_template', data=docinfo['copyright'])" />
+    </table>
+  </div>
+
+  <div>
+    <div>
+      <a class="openbutton"
+        tal:attributes="href python:context.getLink('viewMode','auto')">Access Book</a>
+    </div>
+    <div tal:condition="docpath">
+      Download: <a
+        tal:attributes="href python:'http://mpdl-system.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s'%(docpath.replace('.xml','.html'))"
+        target="_blank">html</a> / <a
+        tal:attributes="href python:'http://mpdl-system.mpiwg-berlin.mpg.de/mpdl/getDoc?doc=%s'%(docpath)"
+        target="_blank">xml</a>
+    </div>
+    <div>
+      <!--BEGIN search -->
+      <form tal:condition="docpath" tal:attributes="action python:here.getLink()">
+        <input type="hidden" tal:define="params python:here.getParams('viewMode', None)"
+          tal:repeat="param params"
+          tal:attributes="name param; value python:params[param]" /> <input
+          class="textMain" name="query" onfocus="this.select();" type="text"
+          tal:attributes="value query" /> <input type="submit" class="buttonMain"
+          value="Search in Book" />
+      </form>
+      <!-- END search-->
+    </div>
+  </div>
+  <!-- DEBUG -->
+  <!-- <p tal:content="python:repr(docinfo)" /> -->
 </body>
 <body tal:condition="not:numPages">
Index: zpt/viewer_text.zpt
===================================================================
--- zpt/viewer_text.zpt	(revision 490)
+++ zpt/viewer_text.zpt	(revision 501)
@@ -2,152 +2,164 @@
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
-      tal:define="docinfo options/docinfo; pageinfo options/pageinfo; viewMode pageinfo/viewMode;
-                  tocMode pageinfo/tocMode; viewType pageinfo/viewType; viewerUrl docinfo/viewerUrl;
-                  numPages docinfo/numPages | nothing;">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-      <title tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')"/>
-      <link rel="stylesheet" href="template/docuviewer_css" type="text/css">
-      </head>
-      <body tal:condition="numPages">
-        <tal:block tal:define="docpath docinfo/textURLPath;
+  tal:define="docinfo options/docinfo; pageinfo options/pageinfo; viewMode pageinfo/viewMode;
+              tocMode pageinfo/tocMode; viewType pageinfo/viewType; viewerUrl docinfo/viewerUrl;
+              rootUrl here/getDocumentViewerURL;
+              numPages docinfo/numPages | nothing;">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title
+    tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')" />
+  <link rel="stylesheet" href="template/docuviewer_css" type="text/css" />
+  <script type="text/javascript" tal:attributes="src string:$rootUrl/template/jquery_js"></script>
+  <script type="text/javascript">
+            // <!--
+            $(document).ready(function() {
+                // autosubmit forms
+                $('form.autosubmit').find('.autosubmit').change(function() {
+                    this.form.submit();
+                });
+                $('form.autosubmit input[type="submit"]').hide();
+            });
+        // -->
+        </script>
+</head>
+<body tal:condition="numPages">
+  <tal:block
+    tal:define="docpath docinfo/textURLPath;
                                pn pageinfo/pn; 
                                flowLtr python:pageinfo.get('pageFlow','ltr')!='rtl';
-                               prev python:test(pn>1,pn-1,None); next python:test(pn<numPages,pn+1,None);
-                               first python:test(pn>1,1,None); last python:test(pn<numPages,numPages,None);
-                               left python:test(flowLtr,prev,next); right python:test(flowLtr,next,prev);
-                               leftest python:test(flowLtr,first,last); rightest python:test(flowLtr,last,first);
-                               textPage python:here.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo);">
-          <div class="page-head">
-            <metal:block metal:use-macro="here/template/head_main/macros/main" />
+                               textPage python:here.getTextPage(mode=viewType, pn=pn, docinfo=docinfo, pageinfo=pageinfo) or '[no text here]';">
+    <div class="page-head">
+      <metal:block metal:use-macro="here/template/common_template/macros/head" />
+    </div>
+    <div class="page-body" tal:condition="python:here.isAccessible(docinfo)">
+      <!--table of contents-->
+      <div class="col-left">
+        <metal:block
+          metal:use-macro="python:path('here/template/toc_%s/macros/main'%tocMode)" />
+      </div>
+
+      <!-- text page -->
+      <div class="col-main">
+        <div class="ruler">
+          <metal:block metal:use-macro="here/template/common_template/macros/page_ruler" />
+        </div>
+        <ul class="switcher">
+          <li>
+            <a tal:attributes="href python:here.getLink('viewMode','images')">Image</a>
+          </li>
+          <li class="sel">Text</li>
+        </ul>
+        <div class="content">
+          <div class="pageHeaderTitle" tal:condition="exists:pageinfo/pageHeaderTitle"
+            tal:content="structure pageinfo/pageHeaderTitle" />
+          <tal:block tal:replace="structure textPage" />
+        </div>
+      </div>
+      <!-- col-main -->
+
+      <!-- right-side options -->
+      <div class="col-right">
+        <!--"BEGIN TEXT DISPLAY"  -->
+        <div class="options">
+          <h4>Text display</h4>
+          <form tal:attributes="action viewerUrl" class="autosubmit">
+            <input type="hidden"
+              tal:define="params python:here.getParams(params={'viewType':None})"
+              tal:repeat="param params"
+              tal:attributes="name param; value python:params[param]" /> <input
+              class="autosubmit" type="radio" name="viewType" value=""
+              tal:attributes="checked python:viewType!='xml'" /> Text<br /> <span
+              class="optionsText" tal:condition="python:viewType!='xml'">
+              &nbsp;&nbsp;<input type="checkbox" class="autosubmit" name="viewType"
+              value="dict" tal:attributes="checked python:viewType=='dict'" /> Dictionary<br />
+            </span> <span class="optionsText"
+              tal:condition="python:viewType!='xml' and docinfo.get('numPlaces',0)">
+              &nbsp;&nbsp;<input type="checkbox" class="autosubmit" name="viewType"
+              value="gis" tal:attributes="checked python:viewType=='gis'" /> Places<br />
+            </span> <input type="radio" class="autosubmit" name="viewType"
+              tal:attributes="value string:xml; checked python:viewType=='xml'" /> XML<br />
+            <input type="submit" value="Go!" />
+          </form>
+        </div>
+        <!--"END TEXT DISPLAY"-->
+
+        <!--"BEGIN TEXT SIZE"-->
+        <div class="options">
+          <h4>Text size</h4>
+          <div class="fsizer">
+            &nbsp; <a href="javascript:fontSize(12);" class="fs_sml">S</a> <a
+              href="javascript:fontSize(14);" class="fs_med">M</a> <a
+              href="javascript:fontSize(16);" class="fs_lrg">L</a>
           </div>
-          <div class="page-body" tal:condition="python:here.isAccessible(docinfo)">
-            <!--table of contents-->
-            <div class="col-left">
-              <metal:block metal:use-macro="python:path('here/template/toc_%s/macros/main'%tocMode)" />
-            </div>
+        </div>
+        <!--"END TEXT SIZE"-->
 
-            <!-- text page -->
-            <div class="col-main">
-              <div class="ruler">
-                <form class="autosubmit" tal:attributes="action viewerUrl">
-                  <input type="hidden" tal:define="params python:here.getParams('pn', None)"
-                         tal:repeat="param params" tal:attributes="name param; value python:params[param]" />
-                  page
-                  <a tal:condition="leftest" tal:attributes="href python:here.getLink('pn',leftest)">|&lt;</a>
-                  <span tal:condition="not:leftest">|&lt;</span>
-                  <a tal:condition="left" tal:attributes="href python:here.getLink('pn',left)">&lt;</a>
-                  <span tal:condition="not:left">&lt;</span>
-                  <input class="autosubmit" size="3" type="text" name="pn" tal:attributes="value pn" /> 
-                  <tal:block tal:define="originalPage pageinfo/pageNumberOrig | nothing"
-                             tal:condition="python:originalPage!=None">
-                    (<span tal:replace="originalPage"/><span tal:define="originalPageNorm pageinfo/pageNumberOrigNorm | nothing" tal:condition="python:originalPageNorm!=None">
-                    [<span tal:replace="originalPageNorm"/>]</span>)      
-                  </tal:block>
-                  <input type="submit" value="Go" />
-                  of 
-                  <span tal:replace="numPages"/>
-                  <a tal:condition="right" tal:attributes="href python:here.getLink('pn',right)">&gt;</a>
-                  <span tal:condition="not:right">&gt;</span>
-                  <a tal:condition="rightest" tal:attributes="href python:here.getLink('pn',rightest)">&gt;|</a>
-                  <span tal:condition="not:rightest">&gt;|</span>
-                </form>
-              </div> <!-- ruler -->
-              <ul class="switcher">
-                <li>
-                  <a tal:attributes="href python:here.getLink('viewMode','images')">Image</a>
-                </li>
-                <li class="sel">Text</li>
-              </ul>
-              <div class="content">
-                <div class="pageHeaderTitle" tal:condition="exists:pageinfo/pageHeaderTitle" tal:content="structure pageinfo/pageHeaderTitle"/>
-                <tal:block tal:replace="structure textPage"/>
-              </div>
-            </div> <!-- col-main -->
-            
-            <!-- right-side options -->
-            <div class="col-right">
-              <!--"BEGIN TEXT DISPLAY"  -->
-              <div class="options">
-                <h4>Text display</h4>
-                <form tal:attributes="action viewerUrl" class="autosubmit">
-                  <input type="hidden" tal:define="params python:here.getParams(params={'viewType':None})" tal:repeat="param params" tal:attributes="name param; value python:params[param]"/>
-                  <input class="autosubmit" type="radio" name="viewType" value="" tal:attributes="checked python:viewType!='xml'"/> Text<br/>
-                  <span class="optionsText" tal:condition="python:viewType!='xml'">
-                    &nbsp;&nbsp;<input type="checkbox" class="autosubmit" name="viewType" value="dict" tal:attributes="checked python:viewType=='dict'"/> Dictionary<br/>
-                  </span>
-                  <span class="optionsText" tal:condition="python:viewType!='xml' and docinfo.get('numPlaces',0)">
-                    &nbsp;&nbsp;<input type="checkbox" class="autosubmit" name="viewType" value="gis" tal:attributes="checked python:viewType=='gis'"/> Places<br/>
-                  </span> <input type="radio" class="autosubmit" name="viewType" tal:attributes="value string:xml; checked python:viewType=='xml'"/> XML<br/>
-                  <input type="submit" value="Go!"/>
-                </form>
-              </div>
-              <!--"END TEXT DISPLAY"-->
-              
-              <!--"BEGIN TEXT SIZE"-->
-              <div class="options">
-                <h4>Text size</h4>
-                <div class="fsizer">
-                  &nbsp;
-                  <a href="javascript:fontSize(12);" class="fs_sml">S</a>
-                  <a href="javascript:fontSize(14);" class="fs_med">M</a>
-                  <a href="javascript:fontSize(16);" class="fs_lrg">L</a>
-                </div>
-              </div>
-              <!--"END TEXT SIZE"-->    
-              
-              <!--"BEGIN DICTIONARY OVERVIEW"-->
-              <div class="options" tal:condition="python:viewType=='dict'">
-                <h4>Dictionary view</h4>
-                <form name="f3" action="">
-                  <input type="radio" name="r3"/>Tab<br/>
-                  <input type="radio" name="r3"/>Window<br/>
-                </form>
-              </div>
-              <!--"END DICTIONARY OVERVIEW"-->
-              
-              <!--"BEGIN TEXT NORMALIZATION"-->
-              <div class="options" tal:condition="python:viewType!='xml'">
-                <h4>Text normalization</h4>
-                <form tal:attributes="action viewerUrl" class="autosubmit" 
-                      tal:define="norm python:pageinfo.get('characterNormalization','regPlusNorm');">
-                  <input type="hidden" tal:define="params python:here.getParams('characterNormalization',None)" tal:repeat="param params" tal:attributes="name param; value python:params[param]"/>
-                  <input type="radio" class="autosubmit" name="characterNormalization" value="orig" tal:attributes="checked python:norm=='orig'"/> Original<br/>
-                  <input type="radio" class="autosubmit" name="characterNormalization" value="reg" tal:attributes="checked python:norm=='reg'"/> Regularized<br/>
-                  <input type="radio" class="autosubmit" name="characterNormalization" value="regPlusNorm" tal:attributes="checked python:norm=='regPlusNorm'"/> Normalized<br/>
-                  <input type="submit" value="Go!"/>
-                </form>
-              </div>
-              <!--"END TEXT NORMALIZATION"-->
-              
-              <!--"BEGIN PLACES"-->
-              <div class="options" tal:condition="python:viewType=='gis'">  
-                <tal:block tal:define="gisPlaces python:here.getGisPlaces(docinfo=docinfo, pageinfo=pageinfo); gisAllPlaces python:here.getAllGisPlaces(docinfo=docinfo, pageinfo=pageinfo);">
-                  <span><b>Places</b></span><br/>(Link to extern:)<br/>
-                  <span>Page</span>
-                  <span style="float:right">
-                    <a tal:attributes="href python:'http://chinagis.mpiwg-berlin.mpg.de/chinagis/REST/db/mpdl/%s?id=%s&format=%s'%(name,gisPlaces,'gis')" target="_blank">
-                      <img src="images/arrow.png" alt=""/>
-                    </a>
-                  </span><br/>
-                  <span>Book</span>
-                  <span style="float:right">
-                    <a tal:attributes="href python:'http://chinagis.mpiwg-berlin.mpg.de/chinagis/REST/db/mpdl/%s?format=%s'%(name,'gis')" target="_blank">
-                      <img src="images/arrow.png" alt=""/>
-                    </a>
-                  </span><br/>
-                </tal:block>
-              </div>
-              <!--"END PLACES"-->   
-            </div> <!-- col-right -->
-            
-          </div> <!-- page-body -->
-          <div class="page_body" tal:condition="python:not here.isAccessible(docinfo)">
-            <div class="errortext">Sorry, access to this document is restricted.</div>
-          </div>
-        </tal:block>
-      </body>
-      <body tal:condition="not:numPages">
-        <div class="errortext">Sorry, document doesn't exist.</div>
-      </body>
-    </html>
+        <!--"BEGIN DICTIONARY OVERVIEW"-->
+        <div class="options" tal:condition="python:viewType=='dict'">
+          <h4>Dictionary view</h4>
+          <form name="f3" action="">
+            <input type="radio" name="r3" />Tab<br /> <input type="radio" name="r3" />Window<br />
+          </form>
+        </div>
+        <!--"END DICTIONARY OVERVIEW"-->
+
+        <!--"BEGIN TEXT NORMALIZATION"-->
+        <div class="options" tal:condition="python:viewType!='xml'">
+          <h4>Text normalization</h4>
+          <form tal:attributes="action viewerUrl" class="autosubmit"
+            tal:define="norm python:pageinfo.get('characterNormalization','regPlusNorm');">
+            <input type="hidden"
+              tal:define="params python:here.getParams('characterNormalization',None)"
+              tal:repeat="param params"
+              tal:attributes="name param; value python:params[param]" /> <input
+              type="radio" class="autosubmit" name="characterNormalization" value="orig"
+              tal:attributes="checked python:norm=='orig'" /> Original<br /> <input
+              type="radio" class="autosubmit" name="characterNormalization" value="reg"
+              tal:attributes="checked python:norm=='reg'" /> Regularized<br /> <input
+              type="radio" class="autosubmit" name="characterNormalization"
+              value="regPlusNorm" tal:attributes="checked python:norm=='regPlusNorm'" />
+            Normalized<br /> <input type="submit" value="Go!" />
+          </form>
+        </div>
+        <!--"END TEXT NORMALIZATION"-->
+
+        <!--"BEGIN PLACES"-->
+        <div class="options" tal:condition="python:viewType=='gis'">
+          <tal:block
+            tal:define="gisPlaces python:here.getGisPlaces(docinfo=docinfo, pageinfo=pageinfo); gisAllPlaces python:here.getAllGisPlaces(docinfo=docinfo, pageinfo=pageinfo);">
+            <span><b>Places</b></span>
+            <br />(Link to extern:)<br />
+            <span>Page</span>
+            <span style="float: right"> <a
+              tal:attributes="href python:'http://chinagis.mpiwg-berlin.mpg.de/chinagis/REST/db/mpdl/%s?id=%s&format=%s'%(name,gisPlaces,'gis')"
+              target="_blank"> <img src="images/arrow.png" alt="" />
+            </a>
+            </span>
+            <br />
+            <span>Book</span>
+            <span style="float: right"> <a
+              tal:attributes="href python:'http://chinagis.mpiwg-berlin.mpg.de/chinagis/REST/db/mpdl/%s?format=%s'%(name,'gis')"
+              target="_blank"> <img src="images/arrow.png" alt="" />
+            </a>
+            </span>
+            <br />
+          </tal:block>
+        </div>
+        <!--"END PLACES"-->
+      </div>
+      <!-- /col-right -->
+
+    </div>
+    <!-- /page-body -->
+
+    <div class="page-body" tal:condition="python:not here.isAccessible(docinfo)">
+      <div class="errortext">Sorry, access to this document is restricted.</div>
+    </div>
+
+  </tal:block>
+</body>
+<body tal:condition="not:numPages">
+  <div class="errortext">Sorry, document doesn't exist.</div>
+</body>
+</html>
