﻿{% load admin_static %}{% load suit_tags %}{% load url from future %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>
      {% block title %}
          {%if title %}
              {{ title }} |
          {% endif %}
          {{XOS_BRANDING_NAME}}
      {% endblock %}
  </title>
  <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% endblock %}"/>
  <!--<link rel="stylesheet" type="text/css" href="{% static 'suit/bootstrap/dist/css/bootstrap.min.css' %}" media="all"/>-->
  <link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
  <link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
  <link rel="stylesheet" type="text/css" href="{% static 'xosNgLib.css' %}" media="all">
  {% if XOS_BRANDING_CSS %}
  <link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
  <link rel="stylesheet" type="text/css" href="{{ XOS_BRANDING_CSS }}">
  {% endif %}
  {% block extrastyle %}{% endblock %}
  {% if LANGUAGE_BIDI %}
  <link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}"/>
  {% endif %}
  <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
  <script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
  <script type="text/javascript" src="{% static 'uploadTextarea.js' %}"></script>
  <script type="text/javascript" src="{% static 'observer_status.js' %}"></script>

  <script
    src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-2.min.js"
    data-apikey="748d877b8b4e211dcd3249c1aa46d263">
  </script>

  <!-- ngXosLib -->
  <script src="{% static 'js/vendor/ngXosVendor.js' %}"></script>
  <script src="{% static 'js/vendor/ngXosHelpers.js' %}"></script>

  <script type="text/javascript">var Suit = { $: $.noConflict() }; if (!$) $ = Suit.$; </script>
  {% if 'SHOW_REQUIRED_ASTERISK'|suit_conf %}
  <style type="text/css">.required:after { content: '*'; margin: 0 0 0 5px; position: absolute; color: #ccc;}</style>
  {% endif %}
  {% block extrahead %}{% endblock %}
  {% block blockbots %}
  <meta name="robots" content="NONE,NOARCHIVE"/>
  {% endblock %}
  <link rel="shortcut icon" href="{{ XOS_BRANDING_FAVICON }}"></head>
  {% load i18n %}
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
  <div id="dialog-placeholder">
    <!-- This is a placeholder for dialog boxes, like the observer calendar -->
  </div>

  <!-- Sticky footer wrap -->
  <div id="wrap">

    <!-- Container -->
    {% block container %}
    <!-- <div id="container"> -->
      
    <!-- </div> -->
    <!-- END Header -->
    {% if not is_popup %}
    <div id="wrapper">
    {% endif %}

    {% if is_popup %}
    <div id="wrapper-popup">
    {% endif %}

      <!-- Sidebar -->
      {% if not is_popup %}
      <div id="sidebar-wrapper">
        <a href="{% url 'admin:index' %}" class="hidden-xs">
          <img class="logo" src="{% static XOS_BRANDING_ICON %}"/>
        </a>
            {% comment %}
            <!--{% include 'suit/menu.html' %}-->
            {% endcomment %}
        {% include 'admin/menu.html' %}
        <button class="navbar-toggle collapsed visible-xs" type="button">
          <i class="glyphicon glyphicon-arrow-left"></i>
        </button>
      </div>
      {% endif %}
      <!-- /#sidebar-wrapper -->

      <!-- Page Content -->
      <div id="page-content-wrapper">
        <div class="container-fluid">
          <div class="row">
            <div class="col-xs-12">
              {% block header %}
                {% if not is_popup %}
                  <!-- Header -->
                  <div id="header" class="header">
                    <button class="navbar-toggle collapsed" type="button">
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                    </button>
                    {% block logo %}
                      <a href="{% url 'admin:index' %}" class="visible-xs">
                        <img class="logo" src="{% static XOS_BRANDING_ICON %}"/>
                      </a>
                    {% endblock %}
                    <!-- <div id="branding">
                      {% block quick-search %}
                        {% with 'SEARCH_URL'|suit_conf as search_url %}
                          {% if search_url %}
                            <form class="form-search nav-quick-search" autocomplete="off" action="{% if '/' in search_url %}{{ search_url }}{% else %}{% url search_url %}{% endif %}" method="GET"> <i class="input-icon icon-search"></i>
                              <input type="text" name="q" class="input-medium search-query" id="quick-search">
                              <input type="submit" class="submit" value="">
                            </form>
                          {% endif %}
                        {% endwith %}
                      {% endblock %}
                    </div> -->
                    {% block header_time %}
                      <!-- <div id="branding2">
                        <div class="header-content header-content-first">
                          <div class="header-column icon"> <i class="icon-time"></i></div>
                          <div class="header-column">
                            <span class="date">{% suit_date %}</span>
                            <br>
                            <span class="time" id="clock">{% suit_time %}</span>
                          </div>
                        </div>
                      </div> -->
                    {% endblock %}

                    {% block header_content %}
                      <div class="header-content">
                        <div class="header-column icon">
                          <i class="icon-comment"></i>
                        </div>
                        <div class="header-column">
                          <a href="" class="grey"> <b>2</b>
                            new messages
                          </a>
                        </div>
                      </div>
                    {% endblock %}

                    {% if user.is_active and user.is_staff %}
                      <div id="user-tools">
                        {% trans 'Welcome,' %}
                        <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">{{user.email}}</a>
                        <span id="observer-status"></span>
                        <span class="user-links">
                          {% block userlinks %}
                            {% url 'django-admindocs-docroot' as docsroot %}
                            {% if docsroot %}
                              <a href="http://guide.xosproject.org/">{% trans 'Documentation' %}</a>
                              <span class="separator">|</span>
                            {% endif %}
                            <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a>
                            <span class="separator">|</span>
                            <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
                          {% endblock %}
                        </span>
                      </div>
                    {% endif %}

                    {% block nav-global %}
                    {% endblock %}
                  </div>
                {% endif %}
              {% endblock %}
            </div>
          </div>
          <div class="row content-wrapper">
            <div class="col-lg-12">
              <div class="suit-columns {{ is_popup|yesno:'one-column,two-columns' }}">
                {% block content-center %}
                  {% if not is_popup %}
                    {% block minidash %}
                      <div id="openCloudTopPage">
                        {% include "admin/newminidashboard.html" %}
                      </div>
                    {% endblock %} 

                    {% block breadcrumbs %}
                      <ul class="breadcrumb">
                        <li>
                          <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
                          {% if title %}
                            <span class="divider">&raquo;</span>
                        </li>
                        <li class="active">
                          {{ title }}
                          {% endif %}
                        </li>
                      </ul>
                    {% endblock %}
                  {% endif %}

                  {% block messages %}
                    {% if messages %}
                      {% for message in messages %}
                        <div class="alert alert-{% firstof message.tags 'info' %}">
                          <button class="close" data-dismiss="alert">×</button>
                          <strong>{% if message.tags %}{{ message.tags|capfirst }}{% else %}Message{% endif %}!</strong> 
                          {{ message }}
                        </div>
                      {% endfor %}
                    {% endif %}
                  {% endblock messages %}

                  <!-- Content -->
                  <div id="content" class="{% block coltype %}colM{% endblock %} row">
                    {% block pretitle %}
                    {% endblock %}
                    {% block content_title %}
                      {% if title %}
                        <h2 class="content-title">{{ title }}</h2>
                      {% endif %}
                    {% endblock %}
                    {% block content %}
                      {% block object-tools %}
                      {% endblock %}
                      {{ content }}
                    {% endblock %}
                    {% block sidebar_content %}
                      {% block sidebar %}{% endblock %}
                    {% endblock %}
                  </div>
                  <!-- END Content -->
                  <span class="clearfix"></span>
                  <!-- </div>
                  -->
                {% endblock %}
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- /#page-content-wrapper -->
    <!-- /#wrapper -->
    {% endblock %}
    </div>
    {% if not is_popup %}
      <!-- Sticky footer push -->
      <div id="push"></div>
    {% endif %}

    {% block footer %}
      {% if not is_popup %}
        <div id="footer" class="footer">
          <div class="container-fluid">
            <div class="row">
              <div class="tools col-xs-4">
                {% block footer_links %}
                  <a href="http://djangosuit.com/support/" target="_blank" class="icon">
                    <i class="icon-question-sign"></i>
                    Support
                  </a>
                  <a href="http://djangosuit.com/pricing/" target="_blank" class="icon">
                    <i class="icon-bookmark"></i>
                    Licence
                  </a>
                  <a href="http://github.com/darklow/django-suit/issues" target="_blank" class="icon">
                    <i class="icon-comment"></i>
                    Report a bug
                  </a>
                {% endblock %}
              </div>

              <div class="branding col-xs-4">
                {% block footer_branding %}
                  {% with 'ADMIN_NAME'|suit_conf as admin_name %}
                    {{XOS_BRANDING_NAME}}
                    <!-- {{ admin_name }} -->
                  {% endwith %}
                {% endblock %}
              </div>
            </div>
            <div class="row">
              <div class="statusMsg col-xs-12" id="statusMsg">
                <!-- this is a placeholder for xoslib views to display status messages -->
              </div>
            </div>
          </div>
        </div>
      {% endif %}
    {% endblock %}
  </div>

  <script src="{% static 'suit/bootstrap/dist/js/bootstrap.min.js' %}"></script>
  <script src="{% static 'suit/js/suit.js' %}"></script>
  <script type="text/javascript" src="//www.google.com/jsapi"></script>
  {% block extrajs %}
  {% endblock %}
  <script src="http://d3js.org/d3.v3.js"></script>
  <div class="modal fade hide" id="chartsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <!--<div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
          <h4 class="modal-title" id="myModalLabel">OpenCloud</h4>
        </div>-->
        <div class="modal-body" style="overflow-y:hidden; overflow-x:hidden;">
          <div class="chartContainer">
            <div class="row">
              <div class=" padding"></div>
            </div>

            <div class="row">
              <div class=" heading">
                <p id="chartHeading" class="heading">OpenCloud</p>
              </div>
            </div>
            <div class="row">
              <div class="padding"></div>
              <div class="padding"></div>
            </div>
            <div class="row">
              <div id="graph" class="graph"></div>
            </div>
          </div>
          <div id="graph_work" style="display:none"></div>
        </div>
        <!--<div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
        -->
      </div>
      <!-- /.modal-content -->
    </div>
    <!-- /.modal-dialog -->
  </div>
  <!-- /.modal -->

  <!-- Menu Toggle Script -->
  <script>
    $(".navbar-toggle").click(function(e) {
      e.preventDefault();
      $("#wrapper").toggleClass("toggled");
    });
  </script>
</body>
</html>
