<!DOCTYPE html>
<html lang="en" manifest="/manifest.appcache">

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ page.title }}</title>
    <link rel="alternate" title="{{ site.description }}" type="application/rss+xml" href="/feed.xml">
    <link rel="stylesheet" href="{{ site.baseurl }}/static/css/pouchdb.css" />
    <meta name="theme-color" content="#6ccb99">
    <meta name="msapplication-TileColor" content="#6ccb99">
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-42479701-1']);
      _gaq.push(['_trackPageview']);

      (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
    <link href='//fonts.googleapis.com/css?family=Lato:400,700|Open+Sans:400,700' rel='stylesheet' type='text/css'>
    <link rel="icon" href="/static/favicon.ico" type="image/x-icon"/>
  </head>

  <body data-spy="scroll" data-target="#sidebar">

    <header role="banner">

      <a href="https://github.com/pouchdb/pouchdb" target="_blank">
         <div class="ribbon">GitHub</div>
      </a>

      <div class="container">

        <a class="logo" href="{{ site.baseurl }}/">
          <div class="logo-img"></div>
          <span class='logo-type'>PouchDB</span>
        </a>

        <ul class='nav nav-header nav-pills' role="navigation">
          <li>
            <a class='btn btn-link btn-lg' href="{{ site.baseurl }}/blog/">Blog</a>
          </li>
          <li>
            <a class='btn btn-link btn-lg' href="{{ site.baseurl }}/guides/">Guides</a>
          </li>
          <li>
            <a class='btn btn-link btn-lg' href="{{ site.baseurl }}/api.html">API</a>
          </li>
          <li>
            <a class='btn btn-link btn-lg' href="{{ site.baseurl }}/learn.html">Learn</a>
          </li>
          <li>
            <a class='btn btn-primary btn-lg' href="{{ site.baseurl }}/download.html">Download <strong>v{{ site.version }}</strong></a>
          </li>
        </ul>

      </div>

    </header>
    {% if page.url != "/" %}
      <div class="page-head">

        <div class="container">

          <h1 class="page-title">{{ page.title }}</h1>
          {% if page.edit != false %}
            <span class="h1">
              {% include edit_button.html %}
            </span>
          {% endif %}
          {% if page.sub_title %}
            <h4>{{ page.sub_title}}</h4>
          {% endif %}

        </div>

      </div>
    {% endif %}

    <div role="main">
      {{ content }}
    </div>

    <div class="icons">

      <div class="container">

        <div class="row">

          <div class='col-xs-4 col-md-offset-0 col-md-2'>
            <a href='https://twitter.com/pouchdb' target='_blank'>
              <div class="icon icon-twitter"></div>
              <span class="sr-only">PouchDB's Twitter</span>
            </a>
          </div>

          <div class='col-xs-4 col-md-2'>
            <a href='https://github.com/rvagg/node-levelup' target='_blank'>
              <div class="icon icon-leveldb"></div>
              <span class="sr-only">Node Levelup</span>
            </a>
          </div>

          <div class='col-xs-4 col-md-2'>
            <a href='https://github.com/pouchdb/pouchdb' target='_blank'>
              <div class="icon icon-github"></div>
              <span class="sr-only">PouchDB's Github Repo</span>
            </a>
            </div>

          <div class='col-xs-4 col-md-offset-0 col-md-2'>
            <a href='https://travis-ci.org/pouchdb/pouchdb' target='_blank'>
              <div class="icon icon-travis"></div>
              <span class="sr-only">PouchDB's Travis CI</span>
            </a>
          </div>

          <div class='col-xs-4 col-md-2'>
            <a href='http://couchdb.apache.org/' target='_blank'>
              <div class="icon icon-couchdb"></div>
              <span class="sr-only">CouchDB</span>
            </a>
          </div>

          <div class='col-xs-4 col-md-2'>
            <a href='https://saucelabs.com' target='_blank'>
              <div class="icon icon-saucelabs"></div>
              <span class="sr-only">Saucelabs</span>
            </a>
          </div>

        </div>

      </div>

    </div>

    <footer class="footer">

      <div class="container">

        <div class="row">

          <div class='col-sm-3'>
            <h3 class="nav-head">Learn</h3>
            <ul class='nav nav-silent'>
              <li><a href="{{ site.baseurl }}/getting-started.html">Getting Started</a></li>
              <li><a href="{{ site.baseurl }}/api.html">API Guide</a></li>
              <li><a href="https://github.com/pouchdb/pouchdb/wiki">Wiki</a></li>
            </ul>
          </div>

          <div class='col-sm-3'>
            <h3 class="nav-head">Discuss</h3>
            <ul class='nav nav-silent'>
              <li><a href="https://groups.google.com/forum/#!forum/pouchdb">Mailing List</a></li>
              <li><a href="irc://freenode.net/#pouchdb">IRC</a></li>
              <li><a href="http://slack.pouchdb.com/">Slack</a></li>
              <li><a href="http://twitter.com/pouchdb">Twitter</a></li>
              <li><a href="http://stackoverflow.com/questions/tagged/pouchdb">StackOverflow</a></li>
            </ul>
          </div>

          <div class='col-sm-3'>
            <h3 class="nav-head">Contribute</h3>
            <ul class='nav nav-silent'>
              <li><a href="https://github.com/pouchdb/pouchdb/blob/master/CONTRIBUTING.md">Contributing</a></li>
              <li><a href="https://github.com/pouchdb/pouchdb">Source</a></li>
              <li><a href="https://github.com/pouchdb/pouchdb/issues">Issues</a></li>
              <li><a href="https://github.com/pouchdb/pouchdb/blob/master/LICENSE">Apache License</a></li>
            </ul>
          </div>

        </div>

      </div>

    </footer>
    <script type="text/javascript" src="//code.jquery.com/jquery.min.js"></script>
    <script type="text/javascript" src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="{{ site.baseurl }}/static/js/code.min.js"></script>
    <script type="text/javascript" src="{{ site.baseurl }}/static/js/stickyfill.min.js"></script>
    <script type="text/javascript" src="//cdn.jsdelivr.net/pouchdb/latest/pouchdb.min.js"></script>
    <script type="text/javascript">
      var $navSidebarWrapper = $('.nav-sidebar-wrapper');
      if ($navSidebarWrapper.length) {
        $navSidebarWrapper.Stickyfill();
      }
      $('[data-toggle="tooltip"]').tooltip();
      function onCached(e) {
        if (applicationCache.status === 1) {
          giveIntro();
        }
      }

      function giveIntro() {
        console.log('%c\n..............................................................................\n.?I...........~+: ............................................................\n.???.........++++.............................................................\n:????+......+++++.............................................................\n.??????+++++++++:.................................H...........D..B............\n...????++++++++...................................H...........D..B............\n...=????++++++.......PPPPP...OOOO...U....U...CCCC.HHHHH...DDDDD..BBBBB........\n...?????+++++++......P...:P.OO...O..U....U..C.....H...H..D....D..B....B.......\n..???????+++++++ ....P. ..P.O....O..U....U.CC.....H...H..D....D..B....B.......\n..?????????????......P...:P.OO...O..U....U..C.....H...H..D....D..B....B.......\n...I??????????~......PPPPP...OOOO...=UUUUU...CCCC.H...H...DDDDD..BBBBB........\n....?????????~.......P.... ...................................................\n.....???????+........P........................................................\n......??????..................................................................\n..............................................................................\n..............................................................................\n..............................................................................', 'color: #4ec084');
        console.log('%c\nPouchDB itself is hosted at PouchDB.com!\nTo get started, try typing:\nvar db = new PouchDB(\'mydb\');', 'color: #4ec084');
      }
      function offerToReload() {
        $('.js-update-notification')
          .removeClass('btn-update-hidden')
          .on('click', function(){
            window.location.reload();
          });
      }
      if (window.applicationCache) {
        applicationCache.addEventListener('cached', onCached, false);
        applicationCache.addEventListener('noupdate', giveIntro, false);
        applicationCache.addEventListener('updateready', offerToReload, false);
      }
    </script>
    <button type="button" class="js-update-notification btn btn-primary btn-update btn-update-hidden">
      Content updated, reload now? ↻
    </button>
  </body>
</html>
