<!DOCTYPE html>
<html lang="en">

<head>
<title>{{ page.title }} - Apache Brooklyn (incubating)</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{% dependency_url bootstrap.css %}" rel="stylesheet">
<link href="{{site.url}}/style/css/bootstrap-theme.css" rel="stylesheet">
<link href="{{site.url}}/style/css/theme.css" rel="stylesheet">
</head>

<body>

<nav class="navbar navbar-default navbar-fixed-top" id="header" role="navigation">
    <div class="container">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                {% if page.navgroup != 'home' %}<a class="navbar-brand" href="{{site.url}}"><img src="{{site.url}}/style/img/apache-brooklyn-logo-244px-wide.png" alt="brooklyn"></a>{% endif %}
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    {% for navgroup in site.data.navgroups %}
                    {% if navgroup.page.menu2 %}
                    <li class="dropdown{% if page.navgroup == navgroup.id %} active{% endif %}">
                        <a href="{{site.url}}{{navgroup.page.url}}">{{navgroup.title}}</a>
                        <ul class="dropdown-menu" role="menu">
                            <li>
                                <a href="{{site.url}}{{navgroup.page.url}}">{{navgroup.title_in_menu}}</a>
                            </li>
                            <li class="divider"></li>
                            {% for child in navgroup.page.menu2 %}
                            <li>
                                <a href="{{site.url}}{{child.reference.url}}">{{child.reference.title}}</a>
                            </li>
                            {% endfor %}
                        </ul>
                    </li><!-- {{ navgroup.id }} -->
                    {% else %}
                    <li class="{% if page.navgroup == navgroup.id %}active{% endif %}"><a href="{{site.url}}{{navgroup.page.url}}">{{navgroup.title}}</a></li><!-- {{ navgroup.id }} -->
                    {% endif %}
                    {% endfor %}
                </ul>
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
    </div>
</nav>

{{ content }}

<script src="{% dependency_url jquery.js %}"></script>
<script src="{% dependency_url bootstrap.js %}"></script>

<script language="JavaScript" type="application/javascript">
    $(window).resize(function () { 
        $('body').css('padding-top', parseInt($('#header').css("height"))+10);
        $('body').css('padding-bottom', parseInt($('#footer').css("height"))+10);
    });
    
    $(window).load(function () { 
        $('body').css('padding-top', parseInt($('#header').css("height"))+10);        
        $('body').css('padding-bottom', parseInt($('#footer').css("height"))+10);
    });</script>
</body>

</html>

