{#
    named_data_theme/layout.html
    ~~~~~~~~~~~~~~~~~
#}
{% extends "basic/layout.html" %}

{% block header %}
    <!--headercontainer-->
    <div id="header_container">
    
        <!--header-->
        <div class="row">    
             <div class="three columns">
                  <div id="logo">
                        <a href="http://named-data.net" title="A Future Internet Architecture"><img src="http://named-data.net/wp-content/uploads/cropped-20130722_Logo2.png" alt="" /></a>
                  </div><!--logo end-->
             </div>

             <!--top menu-->
             <div class="nine columns" id="menu_container" >
               <h1><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a></h1>
             </div>
        </div>
    </div><!--header container end-->    

{% endblock %}

{% block content %}
    <div class="content-wrapper">
      <div class="content">
        <div class="document">
          {%- block document %}
            {{ super() }}
          {%- endblock %}
        </div>
        <div class="sidebar">
          {%- block sidebartoc %}
          <h3>{{ _('Table Of Contents') }}</h3>
          {{ toctree() }}
          {%- endblock %}
          {%- block sidebarsearch %}
          <h3 style="margin-top: 1.5em;">{{ _('Search') }}</h3>
          <form class="search" action="{{ pathto('search') }}" method="get">
            <input type="text" name="q" />
            <input type="submit" value="{{ _('Go') }}" />
            <input type="hidden" name="check_keywords" value="yes" />
            <input type="hidden" name="area" value="default" />
          </form>
          <p class="searchtip" style="font-size: 90%">
            {{ _('Enter search terms or a module, class or function name.') }}
          </p>
          {%- endblock %}
        </div>
        <div class="clearer"></div>
      </div>
    </div>
{% endblock %}

{% block footer %}
    <div id="footer-container">
        <!--footer container-->
        <div class="row">
        </div><!-- footer container-->
    </div>
    
    <div id="footer-info">
        <!--footer container-->
        <div class="row">
            <div class="twelve columns">                    

                <div id="copyright">This research is partially supported by NSF (Award <a href="http://www.nsf.gov/awardsearch/showAward?AWD_ID=1040868" target="_blank>">CNS-1040868</a>)<br/><br/><a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US" target="_blank">Creative Commons Attribution 3.0 Unported License</a> except where noted.</div>
                    
            </div>    
        </div>        
    </div><!--footer info end-->
    
    <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-22320603-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>
{% endblock %}

{% block relbar1 %}{% endblock %}
{% block relbar2 %}{% endblock %}
