<%
s = @site
admin_ids = Caboose::SiteMembership.where(:site_id => s.id, :role => Caboose::SiteMembership::ROLE_ADMIN).pluck(:user_id)
user_ids  = Caboose::SiteMembership.where(:site_id => s.id, :role => Caboose::SiteMembership::ROLE_USER ).pluck(:user_id)
admin_ids = [] if admin_ids.nil?
user_ids = [] if user_ids.nil?
%>
<h1>Edit Site</h1>

<p><div id='site_<%= @site.id %>_name'        ></div></p>
<p><div id='site_<%= @site.id %>_description' ></div></p>

<h2>Domains</h2>
<p><a href='#' onclick="add_domain(<%= @site.id %>);">New Domain</a></p>
<div id='new_domain_container'></div>
<% if @site.domains && @site.domains.count > 0 %>
  <table class='data'>
  <tr>
    <th>Domain</th>
    <th>Primary</th>
    <th>Delete</th>
  </tr>
  <% @site.domains.all.each do |d| %>
  <tr>
    <td><%= d.domain %></td>
    <td align='center'><input type='radio' name='primary_domain' <%= d.primary? ? "checked='true'" : '' %> onclick="set_primary_domain(<%= s.id %>, <%= d.id %>);" /></td>
    <td align='center'><input type='button' value='Delete' onclick="delete_domain(<%= @site.id %>, <%= d.id %>);" /></td>    
  </tr>
  <% end %>
  </table>
<% else %>
  <p>This site doesn't have any domains yet.</p>
<% end %>
<div id='domain_message'></div>

<h2>Members</h2>
<div id='members'>
<table class='data'>
<tr><th>User</th><th>None</th><th>User</th><th>Admin</th></tr>
<% Caboose::User.reorder('last_name, first_name').all.each do |u| %>
<tr>
  <td><%= u.first_name %> <%= u.last_name %> (<%= u.email %>)</td>
  <td align='center'><input type='radio' name='user<%= u.id %>' <%= !admin_ids.include?(u.id) && !user_ids.include?(u.id) ? "checked='true'" : '' %> onclick="remove_site_membership(<%= s.id %>, <%= u.id %>);" /></td>
  <td align='center'><input type='radio' name='user<%= u.id %>' <%= user_ids.include?(u.id)  ? "checked='true'" : ''                             %> onclick="add_site_membership(<%= s.id %>, <%= u.id %>, 'User');" /></td>
  <td align='center'><input type='radio' name='user<%= u.id %>' <%= admin_ids.include?(u.id) ? "checked='true'" : ''                             %> onclick="add_site_membership(<%= s.id %>, <%= u.id %>, 'Admin');" /></td>    
</tr>
<% end %>
</table>
</div>

<div id='message'></div>
<div id='controls'>
<input type='button' value='Back'           onclick="window.location='/admin/sites';" />
<input type='button' value='Delete Site'    onclick="delete_site(<%= @site.id %>);" />
</div>

<% content_for :caboose_css do %>
<style type='text/css'>
#content input[type=checkbox] { position: relative; }
#members { height: 200px; overflow-y: scroll; margin-bottom: 20px; }
</style>
<% end %>
<% content_for :caboose_js do %>
<%= javascript_include_tag "caboose/model/all" %>
<script type="text/javascript">

$(document).ready(function() {
  new ModelBinder({
    name: 'Site',
    id: <%= @site.id %>,
    update_url: '/admin/sites/<%= @site.id %>',
    authenticity_token: '<%= form_authenticity_token %>',
    attributes: [
      { name: 'name'        , nice_name: 'Name'        , type: 'text'     , value: <%= raw Caboose.json(@site.name)        %>, width: 400 },
      { name: 'description' , nice_name: 'Description' , type: 'textarea' , value: <%= raw Caboose.json(@site.description) %>, width: 600, height: 75 }      
    ]    
  });  
});

function delete_site(site_id, confirm)
{        
  if (!confirm)
  {
    var p = $('<p/>').addClass('note confirm')
      .append('Are you sure you want to delete the site? ')
      .append($('<input/>').attr('type','button').val('Yes').click(function() { delete_site(site_id, true); })).append(' ')
      .append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); }));
    $('#message').empty().append(p);
    return;
  }
  $('#message').html("<p class='loading'>Deleting site...</p>");
  $.ajax({
    url: '/admin/sites/' + site_id,
    type: 'delete',
    success: function(resp) {
      if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
      if (resp.redirect) window.location = resp.redirect;
    }
  });
}

function add_site_membership(site_id, user_id, role)
{
  $.ajax({
    url: '/admin/sites/' + site_id +'/members',
    type: 'post',
    data: {
      user_id: user_id,
      role: role 
    },
    succes: function(resp) {}
  });
}

function remove_site_membership(site_id, user_id)
{
  $.ajax({
    url: '/admin/sites/' + site_id +'/members/' + user_id,
    type: 'delete',    
    succes: function(resp) {}
  });
}

function add_domain(site_id, domain)
{
  if (!domain)
  {    
    var div = $('<div/>')
      .append($('<p/>')
        .addClass('note warning')
        .append("What domain would you like to add?<br />")
        .append($('<input/>').attr('type','text').attr('id','new_domain').css('width', '200px')).append(' ')
        .append($('<input/>').attr('type','button').val('Add').click(function() { add_domain(site_id, $('#new_domain').val()); })).append(' ')
        .append($('<input/>').attr('type','button').val('Cancel').click(function() { $('#new_domain_container').empty(); }))
      )
      .append($('<div/>').attr('id', 'new_domain_message'));      
    $('#new_domain_container').empty().append(div);
    return;      
  }
  $('#new_domain_message').empty().html("<p class='loading'>Adding domain...</p>");
  $.ajax({
    url: '/admin/sites/' + site_id + '/domains',
    type: 'post',
    data: { domain: domain },
    success: function(resp) {
      if (resp.error) $('#new_domain_message').html("<p class='note error'>" + resp.error + "<br /></p>");
      if (resp.refresh) window.location.reload(true);
    }
  });
}

function delete_domain(site_id, domain_id, confirm)
{        
  if (!confirm)
  {
    var p = $('<p/>').addClass('note confirm')
      .append('Are you sure you want to delete the domain? ')
      .append($('<input/>').attr('type','button').val('Yes').click(function() { delete_domain(site_id, domain_id, true); })).append(' ')
      .append($('<input/>').attr('type','button').val('No').click(function() { $('#domain_message').empty(); }));
    $('#domain_message').empty().append(p);
    return;
  }
  $('#domain_message').html("<p class='loading'>Deleting domain...</p>");
  $.ajax({
    url: '/admin/sites/' + site_id + '/domains/' + domain_id,
    type: 'delete',
    success: function(resp) {
      if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
      if (resp.refresh) window.location.reload(true);
    }
  });
}

function set_primary_domain(site_id, domain_id)
{    
  $.ajax({
    url: '/admin/sites/' + site_id + '/domains/' + domain_id + '/set-primary',
    type: 'put',    
    success: function(resp) {}
  });
}

</script>
<% end %>

<% content_for :caboose_css do %>
<style type='text/css'>
#gravatar {
  float: right;
  width: 150px;
  text-align: right;
  margin: 0 4px 0 0;
  padding: 0;
}
#gravatar img {
  border: #fff 2px solid;
}
</style>
<% end %>