<!-- Error and Success templates -->

<script type="text/template" id="xos-error-response">
  <h5>Error</h5>
  <table>
  <tr><td>error:</td><td><%= error %></td></tr>
  <tr><td>check:</td><td><%= specific_error %></td></tr>
  </table>
  <h5>Details:</h5>
      <table>
      <tbody>
      <% _.each(reasons, function(element, index) { %>
          <tr><td><%= index %></td><td><%= element %></td></tr>
      <% }); %>
      </tbody>
      </table>
</script>

<script type="text/template" id="xos-error-rawresponse">
  <h5>Error</h5>
  <pre>The server returned:
"<%= responseText %>"</pre>
</script>

<script type="text/template" id="xos-error-template">
  <button id="close-error-box">Close Error Message</button>
  <h3>An error has occurred.</h3>
  <table class="test-error-table">
  <tr><td>Code:</td><td><%= status %></td></tr>
  <tr><td>Message:</td><td><%= statusText %></td></tr>
  </table>
</script>

<script type="text/template" id="xos-success-template">
  <button id="close-success-box">Close Success Message</button>
  <h3>Success!</h3>
  <table class="test-success-table">
  <tr><td>Code:</td><td><%= status %></td></tr>
  <tr><td>Message:</td><td><%= statusText %></td></tr>
  </table>
</script>

<script type="text/template" id="xos-navbutton-old">
  <button class="btn btn-default btn-xosnav" onclick="<%= router %>.navigate('<%= routeUrl %>', {trigger: true})"><%= name %></button><br>
</script>

<script type="text/template" id="xos-status-template">
  <div class="xos-status xos-<%= statusclass %>"><%= what %>: <%= statusText %> (<%= status %>)</div>
</script>

<script type="text/template" id="xos-tabs-template">
  <ul class="xos-nav-list">
  <% _.each(tabs, function(tab) { %>
      <li class="xos-nav-item" id="xos-nav-<%= tab["region"] %>"><%= tab["name"] %></li>
  <% }); %>
  </ul>
</script>

<script type="text/template" id="xos-title-list">
  <h3><img src="/static/img/brokencircle.gif" height=16 width=16 id="xos-list-title-spinner"> <%= title %></h3>
</script>

<script type="text/template" id="xos-title-detail">
  <h3><%= title %></h3>
</script>

<script type="text/template" id="xos-navbutton">
  <li>
      <a href="<%= routeUrl %>">
          <i class="<%= iconClass %>"></i>
          <%= name %>
      </a>
  </li>
</script>

<script type="text/template" id="xos-inline-detail-buttons-template">
    <tr>
       <td colspan=2><button class="btn js-submit btn-xos-detail btn-xos-save-leave">Save</button>
           <button class="btn js-submit btn-xos-detail btn-xos-save-continue">Save and Continue Editing</button>
           <button class="btn js-submit btn-xos-detail btn-xos-save-another">Save and Add Another</button>
           <button class="btn js-submit btn-xos-detail btn-xos-delete">Delete</button>
       </td>
    </tr>
</script>

<script type="text/template" id="xos-list-header-template">
    <button class="btn js-submit btn-xos-list btn-xos-add">Add</button>
    <button class="btn js-submit btn-xos-list btn-xos-refresh">Refresh</button>
</script>

<script type="text/template" id="xos-list-footer-template">
    <a href="<%= addChildHash %>">Add...</a>
</script>

<script type="text/template" id="xos-delete-button-template">
    <a href="#delete<%= firstCharUpper(modelName) %>/<%= id %>">delete</a>
</script>

<script type="text/template" id="xos-detail-link-template">
    <a href="#<%= collectionName %>/<%= id %>"><%= text %></a>
</script>

<script type="text/template" id="xos-add-template">
  <h3 class="xos-detail-title">Add Object: <%= modelName %></h3>
  <form>
  <table>
  <% _.each(addFields, function(fieldName) { %>
     <tr><td><%= fieldNameToHumanReadable(fieldName) %>:</td>
        <% if (fieldName in foreignFields) { %>
            <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName") %></td>
        <% } else if (inputType[fieldName] == "checkbox") { %>
            <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %>></td>
        <% } else { %>
            <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"></td>
        <% } %>
     </tr>
  <% }); %>
  <%= xosInlineDetailButtonsTemplate() %>
  </table>
  </form>
</script>

<script type="text/template" id="xos-detail-template">
  <h3 class="xos-detail-title">Add Object: <%= modelName %></h3>
  <form>
  <table>
  <% console.log(model); _.each(detailFields, function(fieldName) { %>
     <tr><td><%= fieldNameToHumanReadable(fieldName) %>:</td>
        <% if (fieldName in foreignFields) { %>
            <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName") %></td>
        <% } else if (inputType[fieldName] == "checkbox") { %>
            <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %>></td>
        <% } else { %>
            <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"></td>
        <% } %>
     </tr>
  <% }); %>
  <%= xosInlineDetailButtonsTemplate() %>
  </table>
  </form>
</script>

<!-- Deployment -->

<script type="text/template" id="xosAdmin-deployment-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>backend</th>
     <th>admin_tenant</th>
     <th># sites</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-deployment-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= backend_type %></td>
  <td><%= admin_tenant %></td>
  <td><%= typeof sites != 'undefined' && sites.length || 0 %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Image -->

<script type="text/template" id="xosAdmin-image-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>disk_format</th>
     <th>container_format</th>
     <th>path</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-image-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= disk_format %></td>
  <td><%= container_format %></td>
  <td><%= path %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- NetworkTemplate -->

<script type="text/template" id="xosAdmin-networkTemplate-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>description</th>
     <th>visibility</th>
     <th>translation</th>
     <th>sharedNetworkName</th>
     <th>sharedNetworkId</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-networkTemplate-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= description %></td>
  <td><%= visibility %></td>
  <td><%= translation %></td>
  <td><%= sharedNetworkName %></td>
  <td><%= sharedNetworkId %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Network -->

<script type="text/template" id="xosAdmin-network-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>template</th>
     <th>ports</th>
     <th>labels</th>
     <th>owner</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-network-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= idToName(template,"networkTemplates","name") %></td>
  <td><%= ports %></td>
  <td><%= labels %></td>
  <td><%= idToName(owner,"slices","name") %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- NetworkSliver -->

<script type="text/template" id="xosAdmin-networkSliver-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>network</th>
     <th>sliver</th>
     <th>ip</th>
     <th>port_id</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-networkSliver-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= idToName(network,"networks","name") %></td>
  <td><%= idToName(sliver,"slivers","name") %></td>
  <td><%= ip %></td>
  <td><%= port_id %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- NetworkDeployment -->

<script type="text/template" id="xosAdmin-networkDeployment-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>network</th>
     <th>deployment</th>
     <th>net_id</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-networkDeployment-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= idToName(network,"networks","name") %></td>
  <td><%= idToName(deployment,"deployments","name") %></td>
  <td><%= net_id %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Node -->

<script type="text/template" id="xosAdmin-node-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>site</th>
     <th>deployment</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-node-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= idToName(site,"sites","name") %></td>
  <td><%= idToName(deployment,"deployments","name") %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- SliceRole -->

<script type="text/template" id="xosAdmin-sliceRole-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>role</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-sliceRole-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= role %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Service -->

<script type="text/template" id="xosAdmin-service-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>description</th>
     <th>enabled</th>
     <th>versionNumber</th>
     <th>published</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-service-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= description %></td>
  <td><%= enabled %></td>
  <td><%= versionNumber %></td>
  <td><%= published %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Site -->

<script type="text/template" id="xosAdmin-site-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>url</th>
     <th>enabled</th>
     <th>login_base</th>
     <th>is_public</th>
     <th>abbreviated_name</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-site-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= site_url %></td>
  <td><%= enabled %></td>
  <td><%= login_base %></td>
  <td><%= is_public %></td>
  <td><%= abbreviated_name %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- Slice -->

<script type="text/template" id="xosAdmin-slice-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>enabled</th>
     <th>omf_friendly</th>
     <th>description</th>
     <th>slice_url</th>
     <th>site</th>
     <th>max_slivers</th>
     <th>service</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate() %>
</script>

<script type="text/template" id="xosAdmin-slice-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= enabled %></td>
  <td><%= omf_friendly %></td>
  <td><%= description %></td>
  <td><%= slice_url %></td>
  <td><%= idToName(site,"sites","name") %></td>
  <td><%= max_slivers %></td>
  <td><%= idToName(service,"services","name") %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- SliceDeployment -->

<script type="text/template" id="xosAdmin-sliceDeployment-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>slice</th>
     <th>deployment</th>
     <th>tenant_id</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-sliceDeployment-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= idToName(slice,"slices","name") %></td>
  <td><%= idToName(deployment,"deployments","name") %></td>
  <td><%= tenant_id %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- SlicePrivilege -->

<script type="text/template" id="xosAdmin-slicePrivilege-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>user</th>
     <th>slice</th>
     <th>role</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-slicePrivilege-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= idToName(user,"users","username") %></td>
  <td><%= idToName(slice,"slices","name") %></td>
  <td><%= idToName(role,"sliceRoles","role") %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>


<!-- Sliver -->

<script type="text/template" id="xosAdmin-sliver-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>name</th>
     <th>instance_id</th>
     <th>instance_name</th>
     <th>image</th>
     <th>creator</th>
     <th>slice</th>
     <th>node</th>
     <th>deploymentNetwork</th>
     <th>flavor</th>
     <th>userData</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-sliver-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
  <td><%= instance_id %></td>
  <td><%= instance_name %></td>
  <td><%= idToName(image,"images","name") %></td>
  <td><%= idToName(creator,"users","name") %></td>
  <td><%= idToName(slice,"slices","name") %></td>
  <td><%= idToName(node,"nodes","name") %></td>
  <td><%= idToName(deploymentNetwork,"deployments","name") %></td>
  <td><%= flavor %></td>
  <td><%= userData %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- User -->

<script type="text/template" id="xosAdmin-user-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>username</th>
     <th>firstname</th>
     <th>lastname</th>
     <th>phone</th>
     <th>user_url</th>
     <th>site</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>


<script type="text/template" id="xosAdmin-user-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: username}) %></td>
  <td><%= firstname %></td>
  <td><%= lastname %></td>
  <td><%= phone %></td>
  <td><%= user_url %></td>
  <td><%= idToName(site,"sites","name") %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<!-- UserDeployments -->

<script type="text/template" id="xosAdmin-userDeployment-list-template">
  <h3 class="xos-list-title"><%= title %></h3>
  <%= xosListHeaderTemplate() %>
  <table class="test-table">
  <thead><tr>
     <th>id</th>
     <th>user</th>
     <th>deployment</th>
     <th>kuser_id</th>
     <th>delete</th>
  </tr></thead>
  <tbody></tbody>
  </table>
  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
</script>

<script type="text/template" id="xosAdmin-userDeployment-listitem-template">
  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
  <td><%= idToName(user,"users","username") %></td>
  <td><%= idToName(deployment,"deployments","name") %></td>
  <td><%= kuser_id %></td>
  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
</script>

<script>
xosInlineDetailButtonsTemplate = _.template($("#xos-inline-detail-buttons-template").html());
xosListHeaderTemplate = _.template($("#xos-list-header-template").html());
xosListFooterTemplate = _.template($("#xos-list-footer-template").html());
xosDeleteButtonTemplate = _.template($("#xos-delete-button-template").html());
xosDetailLinkTemplate = _.template($("#xos-detail-link-template").html());
</script>
