<%inherit file="${context['layout']}"/>

<%block name="show_title" filter="util.striptags">
    ${_('Index')}
</%block>

   <h1 id="index">${_('Index')}</h1>

   % for i, (key, dummy) in enumerate(genindexentries):
    ${i != 0 and '| ' or ''}<a href="#${key}"><strong>${key}</strong></a>
   % endfor

   <hr />

   % for i, (key, entries) in enumerate(genindexentries):
<h2 id="${key}">${key}</h2>
<table width="100%" class="indextable genindextable"><tr><td width="33%" valign="top">
<dl>
    <%
        breakat = genindexcounts[i] // 2
        numcols = 1
        numitems = 0
    %>
% for entryname, (links, subitems) in [(a, b[0:2]) for a, b in entries]:

<dt>
    % if links:
        <a href="${links[0][1]}">${entryname|h}</a>
        % for unknown, link in links[1:]:
            , <a href="${link}">[${i}]</a>
        % endfor
    % else:
        ${entryname|h}
    % endif
</dt>

    % if subitems:
    <dd><dl>
      % for subentryname, subentrylinks in subitems[0:2]:
      <dt><a href="${subentrylinks[0][1]}">${subentryname|h}</a>
              % for j, (unknown, link) in enumerate(subentrylinks[1:]):
                  <a href="${link}">[${j}]</a>
              % endfor
      </dt>
      % endfor
    </dl></dd>
    % endif

  <%
    numitems = numitems + 1 + len(subitems)
  %>
  % if numcols <2 and numitems > breakat:
     <%
        numcols = numcols + 1
     %>
        </dl></td><td width="33%" valign="top"><dl>
  % endif

% endfor
<dt></dt></dl>
</td></tr></table>
% endfor

<%def name="sidebarrel()">
% if split_index:
   <h4>${_('Index')}</h4>
   <p>
   % for i, (key, dummy) in enumerate(genindexentries):
       ${i > 0 and '| ' or ''}
       <a href="${pathto('genindex-' + key)}"><strong>${key}</strong></a>
   % endfor
   </p>

   <p><a href="${pathto('genindex-all')}"><strong>${_('Full index on one page')}</strong></a></p>
% endif
   ${parent.sidebarrel()}
</%def>
