<%
sa = @order.shipping_address
shipping_address = sa.address1
shipping_address << "<br />#{sa.address2}" if sa.address2 && sa.address2.length > 0
shipping_address << "<br />#{sa.city}, #{sa.state} #{sa.zip}"
captured = @order.financial_status == 'captured'
%>
<input type='hidden' name='order_id'    id='order_id'     value='<%= @order.id %>' />

<h1>Edit Order #<%= @order.id %></h1>
         
<table class='data'>
<tr>
  <th><%= if @order.customer.nil? then 'Guest' else 'Customer' end %></th>
  <th>Shipping Address</th>
  <th>Order Status</th>
  <th>Payment Status</th>
  <th>Transaction ID</th>
</tr>
<tr>
  <td valign='top'>
    <%= "#{@order.shipping_address.first_name} #{@order.shipping_address.last_name}" %><br />
    <% if @order.customer %>
      <a href="mailto:<%= "#{@order.customer.email}" %>"><%= "#{@order.customer.email}" %></a><br />
    <% elsif @order.email %>
      <a href="mailto:<%= @order.email %>"><%= @order.email %></a>
    <% end %>
    <%= @order.customer ? @order.customer.phone : @order.shipping_address.phone %>
  </td>
  <td valign='top'>
    <%= "#{@order.shipping_address.name}" %><br />
    <%= raw shipping_address %>
  </td>
  <td valign='top'>
    <div id='order_<%= @order.id %>_status'></div>
  </td>
  <td valign='top'>
    <%= @order.financial_status %>
    <% if @order.financial_status == 'authorized' %>
    for <%= number_to_currency(@order.auth_amount) %>
    <% end %>
  </td>
  <td valign="top"><%= @order.transaction_id %></td>
</tr>
</table><br />

<table class='data' width='100%'>
<tr>
  <th>Item</th>
  <th>Status</th>
  <th>Tracking Number</th>  
  <th>Unit Price</th>
  <th>Quantity</th>
  <th>Subtotal</th>
</tr>
<% @order.line_items.each do |li| %>
  <tr>
    <td>
      <% if li.variant.nil? || li.variant.product.nil? %>
        <% if li.variant.nil? %>
          Unknown variant
        <% else %>
          <%= li.variant.sku %>
        <% end %>
      <% else %>
        <a href='/admin/products/<%= li.variant.product.id %>/variants?highlight=<%= li.variant.id %>'><%= li.variant.product.title  %></a><br />
        <%= li.variant.sku            %><br />
        <%= li.variant.title          %>
      <% end %>
    </td>
    <td              ><div id='lineitem_<%= li.id %>_status'          ></div></td>
    <td              ><div id='lineitem_<%= li.id %>_tracking_number' ></div></td>
    <td align='right'><%= number_to_currency(li.variant.price) %></td>    
    <td align='right'><% if captured %><%= li.quantity %><% else %><div id='lineitem_<%= li.id %>_quantity'></div><% end %></td>
    <td align='right' id='li_<%= li.id %>_subtotal'><%= number_to_currency(li.price) %></td>
  </tr>
<% end %>
<tr><td colspan='5' align='right'>Subtotal                </td><td align='right' id='subtotal'   ><%= number_to_currency(@order.subtotal ) %></td></tr>
<tr><td colspan='5' align='right'>Tax                     </td><td align='right' id='tax'        ><%= number_to_currency(@order.tax      ) %></td></tr>
<tr><td colspan='5' align='right'><%= @order.shipping_method ? @order.shipping_method : '' %> Shipping &amp; Handling </td><td align='right' id='shipping'><%= number_to_currency(@order.shipping + @order.handling) %></td></tr>
<tr>
  <td colspan='5' align='right'>Discount</td>
  <td align='right'>
    <% if captured && @order.discounts.any? %>
      <%= number_to_currency(@order.amount_discounted || 0) %>
    <% elsif @order.discounts.any? %>
      <%= number_to_currency(@order.discounts.first.amount_current) %>
    <% else %>
      $0.00
    <% end %>
  </td>
</tr>

<tr><td colspan='5' align='right'>Total                   </td><td align='right' id='total'      ><%= number_to_currency(@order.total    ) %></td></tr>
</table>
<div id='message'></div>

<p>
<input type='button' value='< Back' onclick="window.location='/admin/orders';" />
<% if @order.financial_status == 'authorized' %>
  <input type='button' value='Capture Funds' onclick="capture_funds(<%= @order.id %>);" />
  <input type='button' value='Void' onclick="void_order(<%= @order.id %>);" />
<% end %>
<% if @order.financial_status == 'captured' %>
  <input type='button' value='Refund' onclick="refund_order(<%= @order.id %>);" />
<% end %>
<input type='button' value='Resend Confirmation' onclick="resend_confirmation(<%= @order.id %>)" />
<input type='button' value='Print Order' onclick="print_order(<%= @order.id %>);" />

<% str = Caboose.plugin_hook('admin_edit_order_buttons', "", @order) %>
<% if str %><%= raw str %><% end %>
</p>

<% content_for :caboose_js do %>
<%= javascript_include_tag 'caboose/model/all' %>
<script type='text/javascript'>

function resend_confirmation(order_id)
{
  modal.autosize("<p class='loading'>Resending confirmation..</p>");
  $.ajax({
    type: 'post',
    url: '/admin/orders/' + order_id + '/resend-confirmation',
    success: function(resp) {
      if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
      if (resp.success) modal.autosize("<p class='note success'>" + resp.success + "</p>");
    }
  });
}

function capture_funds(order_id, confirm)
{
  total = $('#total').html();
  if (!confirm)
  {    
    var p = $('<p/>').addClass('note confirm')
      .append("Are you sure you want to charge " + total + " to the customer? ")
      .append($('<input/>').attr('type','button').val('Yes').click(function() { capture_funds(order_id, true); }))
      .append(' ')
      .append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); modal.autosize(); }));
    modal.autosize(p);
    return;
  }
  modal.autosize("<p class='loading'>Capturing funds...</p>");
  $.ajax({
    url: '/admin/orders/' + order_id + '/capture',
    success: function(resp) {
      if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
      if (resp.success) modal.autosize("<p class='note success'>" + resp.success + "</p>");
      if (resp.refresh) window.location.reload(true);
    }
  });
}

function void_order(order_id, confirm)
{
  if (!confirm)
  {    
    var p = $('<p/>').addClass('note confirm')
      .append("Are you sure you want to void this order? ")
      .append($('<input/>').attr('type','button').val('Yes').click(function() { void_order(order_id, true); }))
      .append(' ')
      .append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); modal.autosize(); }));
    modal.autosize(p);
    return;
  }
  modal.autosize("<p class='loading'>Voiding...</p>");
  $.ajax({
    url: '/admin/orders/' + order_id + '/void',
    success: function(resp) {
      if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
      if (resp.success) modal.autosize("<p class='note success'>" + resp.success + "</p>");
      if (resp.refresh) window.location.reload(true);
    }
  });
}

function refund_order(order_id, confirm)
{
  if (!confirm)
  {    
    var p = $('<p/>').addClass('note confirm')
      .append("Are you sure you want to refund this order? ")
      .append($('<input/>').attr('type','button').val('Yes').click(function() { refund_order(order_id, true); }))
      .append(' ')
      .append($('<input/>').attr('type','button').val('No').click(function() { $('#message').empty(); modal.autosize(); }));
    modal.autosize(p);
    return;
  }
  modal.autosize("<p class='loading'>Refunding...</p>");
  $.ajax({
    url: '/admin/orders/' + order_id + '/refund',
    success: function(resp) {
      if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
      if (resp.success) modal.autosize("<p class='note success'>" + resp.success + "</p>");
      if (resp.refresh) window.location.reload(true);
    }
  });
}

function print_order(order_id)
{
  window.open('/admin/orders/' + order_id + '/print');
}

$(document).ready(function() {
  <% @order.line_items.each do |li| %>
  new ModelBinder({
    name: 'Lineitem',
    id: <%= li.id %>,
    update_url: '/admin/orders/<%= @order.id %>/line-items/<%= li.id %>',
    authenticity_token: '<%= form_authenticity_token %>',
    attributes: [
      { name: 'status'          , nice_name: 'Status'           , type: 'select'  , align: 'left' , value: <%= raw Caboose.json(li.status          ) %>, text: <%= raw Caboose.json(li.status          ) %>, width: 150, fixed_placeholder: false, options_url: '/admin/orders/line-item-status-options' },
      { name: 'tracking_number' , nice_name: 'Tracking Number'  , type: 'text'    , align: 'left' , value: <%= raw Caboose.json(li.tracking_number ) %>, width: 200, fixed_placeholder: false },
      { name: 'quantity'        , nice_name: 'Quantity'         , type: 'text'    , align: 'right', value: <%= raw Caboose.json(li.quantity        ) %>, width:  75, fixed_placeholder: false,
        before_update: function() {          
          modal.autosize("<p class='loading'>Recalculating tax, shipping and handling...</p>"); 
        },
        after_update: function() {
          var order_id = $('#order_id').val();
          $.ajax({
            url: '/admin/orders/' + order_id + '/json',
            success: function(order) {
              $.each(order.order_line_items, function(i, li) {
                $('#li_' + li.id + '_subtotal').html('$' + parseFloat(li.variant.price * li.quantity).toFixed(2));
              });
              var sah = parseFloat(order.shipping) + parseFloat(order.handling);
              $('#subtotal' ).html('$' + parseFloat(order.subtotal ).toFixed(2));
              $('#subtotal' ).html('$' + parseFloat(order.subtotal ).toFixed(2));
              $('#tax'      ).html('$' + parseFloat(order.tax      ).toFixed(2));
              $('#shipping' ).html('$' + parseFloat(sah            ).toFixed(2));
              $('#total'    ).html('$' + parseFloat(order.total    ).toFixed(2));
              $('#order_total').val(parseFloat(order.total).toFixed(2));
              $('#message').empty();
              modal.autosize();
            }
          });
        }
      }
    ]
  });
  <% end %>

  new ModelBinder({
    name: 'Order',
    id: <%= @order.id %>,
    update_url: '/admin/orders/<%= @order.id %>',
    authenticity_token: '<%= form_authenticity_token %>',
    attributes: [
      { 
        name: 'status',
        nice_name: 'Status',
        type: 'select',
        value: <%= raw Caboose.json(@order.status) %>,
        text: <%= raw Caboose.json(@order.status) %>,
        width: 100,
        options_url: '/admin/orders/status-options',
        fixed_placeholder: false
      }
    ]
  });
});

var modal = false;
$(window).load(function() {
  modal = new CabooseModal('95%');
});

</script>
<% end %>