﻿{% 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>
  <title>{% block title %}  {%if title %} {{ title }} | {% endif %} {{ 'ADMIN_NAME'|suit_conf }}{% endblock %}</title>
  <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% endblock %}"/>
  <link rel="stylesheet" type="text/css" href="{% static 'suit/bootstrap/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">
  {% 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 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="{% static 'favicon.png' %}">
</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">

             <a href="{% url 'admin:index' %}"><h1 id="site-name"><img class="logo" height="70" width="259" src="{% static 'open-cloud-login-themed-light.png' %}"/></h1></a>
      {% block header %}
        {% if not is_popup %}
          <!-- Header -->
          <div id="header" class="header">
            
            <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>-->
          
            {% 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://open-cloud.github.io/">{% 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>
                  </span>
                {% endblock %}
              </div>
            {% endif %}

            {% block nav-global %}{% endblock %}

          </div>
           </div>
        {% endif %}
        <!-- END Header -->
      {% endblock %}


      <div class="suit-columns {{ is_popup|yesno:'one-column,two-columns' }}">

        {% block content-center %}
          <div id="suit-center" class="suit-column">

            {% if not is_popup %}
            <div id=openCloudTopPage>
            {% include "admin/newminidashboard.html" %}
            </div>

              {% 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-fluid">
              {% 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 %}


        {% block content-left %}
          {% if not is_popup %}
            <div id="suit-left" class="suit-column">
         

              {% include 'suit/menu.html' %}

            </div>
          {% endif %}
        {% endblock %}

      </div>
    </div>
  {% endblock %}

  {% if not is_popup %}
  <!-- Sticky footer push -->
  <div id="push"></div>
  {% endif %}

</div>

{% 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="copyright">
        {% block copyright %}
          Copyright &copy; 2013 DjangoSuit.com<br>Developed by <a href="http://djangosuit.com" target="_blank">DjangoSuit.com</a>
        {% endblock %}
      </div> -->

      <div class="branding">{% block footer_branding %}
        {% with 'ADMIN_NAME'|suit_conf as admin_name %}
          {{ admin_name }}
          {% if admin_name == 'Django Suit' %}
            v{{ 'VERSION'|suit_conf }}
          {% endif %}
        {% endwith %}
      {% endblock %}</div>
    </div>
  </div>
  {% endif %}
{% endblock %}

  <script src="{% static 'suit/bootstrap/js/bootstrap.min.js' %}"></script>
  <script src="{% static 'suit/js/suit.js' %}"></script>
  <script type="text/javascript" src="//www.google.com/jsapi"></script>
  <script src="{% static 'planetstack_graphs.js' %}"></script>
  <!-- src="{% static 'planetstack_graphs_old.js' %}" -->

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


<script>




</script>
</body>
</html>
