﻿{% 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">
  {% 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 src="{% static 'js/xosApi.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="content">
            <div class="tools">
              {% 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="statusMsg" id="statusMsg">
              <!-- this is a placeholder for xoslib views to display status messages -->
            </div>

            <div class="branding">
              {% block footer_branding %}
                {% with 'ADMIN_NAME'|suit_conf as admin_name %}
                  {{XOS_BRANDING_NAME}}
                  <!-- {{ admin_name }} -->
                  {% if admin_name == 'Django Suit' %}
                    {{ 'VERSION'|suit_conf }}
                  {% endif %}
                {% endwith %}
              {% endblock %}
            </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>
