<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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.
-->
<!doctype html>
<html lang="en" ng-app="appservices">

<head>
  <meta charset="utf-8">
  <title>Apigee App Services</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="">
  <meta name="author" content="">

  <link id="libScript" href="js/libs/bootstrap/custom/css/bootstrap.min.css" rel="stylesheet"/>
  <link id="libScript" rel="stylesheet" href="bower_components/intro.js/introjs.css">
  <link id="libScript" href="css/dash.min.css" rel="stylesheet"/>

  <!--styles for jquery ui calendar component-->
  <link id="libScript" rel="stylesheet" type="text/css" href="js/libs/jqueryui/jquery-ui-1.8.9.custom.css"/>
  <link id="libScript" rel="stylesheet" type="text/css" href="js/libs/jqueryui/jquery-ui-timepicker.css"/>
</head>
<body ng-controller="PageCtrl" ng-intro-onchange="help.introjs_ChangeEvent" ng-intro-options="help.IntroOptions" ng-intro-onexit="help.introjs_ExitEvent" ng-intro-oncomplete="help.introjs_CompleteEvent" ng-intro-method="startHelp" ng-intro-autostart="false">
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N52333"
                  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-N52333');</script>
<!-- End Google Tag Manager -->
<header ng-cloak >
  <nav class="navbar navbar-static-top">
    <div class="container-fluid">
      <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="brand" href="#"><img src="img/logo.gif"/></a>
      <div appswitcher ></div>


      <div class="nav-collapse collapse"  ng-show="loaded">
        <div class="navbar-text pull-left" ng-if="activeUI">
          <button class="helpButton" ng-class='{helpButtonClicked:help.helpTooltipsEnabled}' ng-click="help.toggleTooltips()" ng-show="help.showHelpButtons">{{help.helpButtonStatus}}</button>
          <button class="helpButton" ng-click="startHelp(); help.introjs_StartEvent();" ng-show="help.showHelpButtons">Take the Tour</button>
        </div>
        <div class="navbar-text pull-right" ng-if="activeUI">
          <span class="navbar-text" id="userEmail" >{{userEmail}}</span> |
          <span ng-controller="LoginCtrl"><a id="logout-link" ng-click="logout()" title="logout"><i class="pictogram">&#59201</i></a></span> | 
          <span ><a ng-click="profile()" title="profile"><i class="pictogram">&#59170</i></a></span> | <span ><a href="#!/organizations" title="organizations"><i class="pictogram">&#128362;</i></a></span>
          <span><a href="archive/" target="_blank">Legacy Portal</a></span> |
        </div>

      </div>
    </div>
  </nav>
</header>
<section class="side-menu" ng-cloak   ng-show="activeUI">
  <div class="sidebar-nav">
    <div id="intro-1-org" class="nav-collapse collapse">

      <org-menu context="orgmenu"  ></org-menu>

    </div>
    <div id="intro-3-side-menu">
        <div class="nav-collapse collapse" id="sideMenu" ng-include="&apos;menu.html&apos;">
        </div>
    </div>
  </div>
</section>

<section class="main-content" ng-cloak  ng-show="loaded">
  <div class="container-fluid">
    <div class="row-fluid">
      <div class="span12">
        <bsmodal id="tooltips"
             title="Help Tooltips Enabled"
             close="hideModal"
             closelabel="OK"
             ng-cloak>
          <p>Hover your cursor over the '(?)' icons to get helpful tips and information.</p>
        </bsmodal>
        <!--header app/org context nav-->

        <nav class="navbar secondary"    ng-show="activeUI">
          <div class="container-fluid">
            <div class="row-fluid">
              <div class="span12">
                <div class="span5" id="intro-2-app-menu">
                  <app-menu></app-menu>
                </div>
                <div class="span7 button-area">
                  <div class="nav-collapse collapse">
                    <ul class="helper-links nav span12">
                      <li class="sdks span12">
                        <ul id="intro-9-sdks" class="pull-right">
                          <li class="title"><label>SDKs and Modules</label></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ios"><i class="sdk-icon-ios"></i></a></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#android"><i class="sdk-icon-android"></i></a></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#javascript"><i class="sdk-icon-js"></i></a></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#nodejs"><i class="sdk-icon-node"></i></a></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ruby"><i class="sdk-icon-ruby"></i></a></li>
                          <li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#c"><i class="sdk-icon-net"></i></a></li>
                        </ul>
                      </li>
                    </ul>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </nav>
        <!--for demo mode-->
        <!--todo - this needs a style applied only when shown ng-class-->
        <div ng-controller="AlertCtrl" ng-cloak class="alert-holder main-alert">
          <alerti ng-repeat="alert in alerts" type="alert.type" closeable="true" index="$index" ng-cloak>{{alert.msg}}</alerti>
        </div>

        <insecure-banner></insecure-banner>
        <!--Dynamic Content-->
        <div ng-view class="page-holder"></div>

        <footer>
          <hr>
          <p class="pull-right">&copy; Apigee 2014</p>
        </footer>
      </div>
    </div>
  </div>
</section>
<script id="libScript" src="js/libs/usergrid-libs.min.js"></script>
<script id="libScript" src="js/libs/bootstrap/custom/js/bootstrap.min.js"></script>
<!--todo - remove this. temporarily including jquery ui for calendar in push-->
<script id="libScript" src="js/libs/jqueryui/jquery.ui.timepicker.min.js" type="text/javascript"></script>
<!-- In dev use: <script src="js/libs/angular-1.1.5.js"></script> -->
<!--<script type="text/javascript" src="js/libs/angular-ui-ng-grid/ng-grid-2.0.2.debug.js"></script>-->
<script src="config.js"></script>
<script id="main-script" src="js/usergrid.min.js"></script>
<script type="text/javascript">
    //Google Analytics
    var _gaq = _gaq || [];
    //_gaq.push(['_setAccount', 'yours']);
    try{
        (function(document) {
            if(!document){
                return;
            }
            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);
        })(document || null);
    }catch(e){};
    //End Google Analytics
</script>
</body>
</html>
