<!DOCTYPE html>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ 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.
  -->

<!--
  ONOS UI - single page web app
  Version 1.1

  @author Simon Hunt
  -->
<html>
<head>
    <meta charset="utf-8">
    <title>ONOS</title>

    <link rel="shortcut icon" href="img/onos-logo.png">

    <!-- Third party library code included here -->
    <!--TODO: use the minified version of d3, once debugging is complete -->
    <script src="libs/d3.js"></script>
    <script src="libs/topojson.v1.min.js"></script>
    <script src="libs/jquery-2.1.1.min.js"></script>

    <!-- Base library and framework stylesheets included here -->
    <link rel="stylesheet" href="base.css">
    <link rel="stylesheet" href="onos2.css">
    <link rel="stylesheet" href="mast2.css">
    <link rel="stylesheet" href="floatPanel.css">
    <link rel="stylesheet" href="feedback.css">
    <link rel="stylesheet" href="onosQuickHelp.css">

    <!-- This is where contributed stylesheets get INJECTED -->
    <!-- TODO: replace with template marker and inject refs server-side -->
    <link rel="stylesheet" href="topo2.css">


    <!-- General library modules included here-->
    <script src="geometry2.js"></script>

    <!-- ONOS UI Framework included here-->
    <script src="onos2.js"></script>

</head>
<body>
    <div id="frame">
        <div id="mast">
            <!-- NOTE: masthead injected here by mast.js -->
        </div>
        <div id="view">
            <!-- NOTE: views injected here by onos.js -->
        </div>
        <div id="floatPanels">
            <!-- NOTE: floating panels injected here, as needed -->
            <!--       see onos.ui.addFloatingPanel             -->
        </div>
        <div id="alerts">
            <!-- NOTE: alert content injected here, as needed -->
        </div>
        <div id="feedback">
            <!-- NOTE: feedback flashes to user -->
        </div>
        <div id="quickhelp">
            <!-- NOTE: key bindings and mouse gesture help -->
        </div>
    </div>

    <!-- Initialize the UI...-->
    <script type="text/javascript">
        var ONOS = $.onos({
            comment: 'configuration options',
            theme: 'dark',
            startVid: 'topo'
        });
    </script>

    <!-- Library module files included here -->
    <script src="d3Utils.js"></script>
    <script src="glyphs.js"></script>

    <!-- Framework module files included here -->
    <script src="mast2.js"></script>
    <script src="feedback.js"></script>
    <script src="onosQuickHelp.js"></script>

    <!-- View Module Templates; REMOVE THESE LINES, FOR PRODUCTION -->
    <script src="module-svg-template.js"></script>
    <script src="module-div-template.js"></script>

    <!-- Sample views; REMOVE THESE LINES, FOR PRODUCTION -->
    <script src="sample2.js"></script>
    <script src="sampleRadio.js"></script>
    <script src="sampleKeys.js"></script>
    <script src="sampleHash.js"></script>

    <!-- Contributed (application) views injected here -->
    <!-- TODO: replace with template marker and inject refs server-side -->
    <script src="topo2.js"></script>

    <!-- finally, build the UI-->
    <script type="text/javascript">
        $(ONOS.buildUi);
    </script>

</body>
</html>
