﻿{% 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 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>
