<!DOCTYPE html>
<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.

-->
<html lang="en">
  <head>
    <title>Overview</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <link rel="stylesheet" href="style/layout.css?0.11.0" type="text/css">
    <script src="script/json2.js"></script>
    <script src="script/sha1.js"></script>
    <script src="script/jquery.js"></script>
    <script src="script/jquery.couch.js"></script>
    <script src="script/jquery.dialog.js"></script>
    <script src="script/futon.js"></script>
    <script src="script/futon.browse.js"></script>
    <script src="script/futon.format.js"></script>
    <script>
      var page = new $.futon.CouchIndexPage();
      $(document).ready(function() {
        if (!/index\.html$/.test(location.pathname)) {
          $.futon.navigation.ready(function() {
            this.updateSelection(location.pathname + "index.html");
          });
        }
        var dbsPerPage = parseInt($.futon.storage.get("per_page"));
        if (dbsPerPage) $("#perpage").val(dbsPerPage);
        $("#perpage").change(function() {
          page.updateDatabaseListing();
          $.futon.storage.set("per_page", this.value);
        });

        page.updateDatabaseListing();

        $("#toolbar button.add").click(function() {
          page.addDatabase();
        });
      });
    </script>
  </head>
  <body>
    <div id="wrap">
      <h1><strong>Overview</strong></h1>
      <div id="content">
        <ul id="toolbar">
          <li><button class="add">Create Database …</button></li>
        </ul>

        <table class="listing" id="databases" cellspacing="0">
          <caption>Databases</caption>
          <thead>
            <tr>
              <th>Name</th>
              <th class="size">Size</th>
              <th class="count">Number of Documents</th>
              <th class="seq">Update Seq</th>
            </tr>
          </thead>
          <tbody class="content">
          </tbody>
          <tbody class="footer">
            <tr>
              <td colspan="5">
                <div id="paging">
                  <a class="prev">← Previous Page</a> |
                  <label>Rows per page: <select id="perpage">
                    <option selected>10</option>
                    <option>25</option>
                    <option>50</option>
                    <option>100</option>
                  </select></label> |
                  <a class="next">Next Page →</a>
                </div>
                <span></span>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

    </div>
  </body>
</html>
