var Client = {

  showTable: function(){
    obj = $(this)
    section = obj.attr("rel");
    
    $("ul#client_summary_links a").removeClass("selected")
    obj.addClass("selected")

    $("div#client_summary").html("")
    $("div#client_loading").show();
    
    $.getJSON(obj.attr("href"), function(data){
      items_array = $.map(data, function(i) { return i[section] });
      if(items_array.length > 0){
        items_table = Client.buildTable(section + "s");
        $(Client[section + "Headers"]()).appendTo(items_table);
        $(Client[section + "Rows"](items_array)).appendTo($("<tbody></tbody>")).appendTo(items_table); 
      }
      else {
        items_table = $("<p>No " + section.replace("_", " ") + "s created for this client.</p>"); 
      }

        $("div#client_loading").hide();
        $("div#client_summary").append(items_table)
    });

    return false
  },

  buildTable: function(class_name){
   return $("<table class='wide zebra " + class_name + "'></table>");

  },

  invoiceHeaders: function(){
    return "<thead><tr><th>Date</th><th>Invoice No.</th><th>Due Date</th><th>Status</th><th class='last'>Total</th><th class='last'>Due</th></tr></thead>"
  },

  estimateHeaders: function(){
    return "<thead><tr><th>Date</th><th>Estimate No.</th><th>Status</th><th class='last'>Total</th></tr></thead>"
  },

  recurring_profileHeaders: function(){
    return "<thead><tr><th>Profile Name</th><th>Frequency</th><th>Next Billing Date</th><th class='last'>Total</th></tr></thead>"
  },

  invoiceRows: function(items){
    return $.map(items, function(item){
      output_html = $("<tr id='invoice_" + item.id + "' class='invoice'></tr>"); 
      $("<td></td>").html(item.date).appendTo(output_html); //FIXME: use the user defined date format
      $("<td class='clickable_url invoice_url'></td>").html("<a href='/invoices/" + item.id + "'>" + item.invoice_no + "</a>").appendTo(output_html);
      $("<td></td>").html(item.due_date).appendTo(output_html); //FIXME: use the user defined date format
      $("<td></td>").html("<img src='/images/status_" + item.state + "_label.png' alt='" + item.state + "'/>").appendTo(output_html);
      $("<td class='last'></td>").html(item.total_billed).appendTo(output_html);
      $("<td class='last'></td>").html(item.total_due).appendTo(output_html);

      return output_html
    });
  },

  estimateRows: function(items){
    return $.map(items, function(item){
      output_html = $("<tr id='estimate_" + item.id + "' class='estimate'></tr>"); 
      $("<td></td>").html(item.date).appendTo(output_html); //FIXME: use the user defined date format
      $("<td class='clickable_url estimate_url'></td>").html("<a href='/estimates/" + item.id + "'>" + item.estimate_no + "</a>").appendTo(output_html);
      $("<td></td>").html("<img src='/images/status_" + item.state + "_label.png' alt='" + item.state + "'/>").appendTo(output_html);
      $("<td class='last'></td>").html(item.total_billed).appendTo(output_html);

      return output_html
    });
  },

  recurring_profileRows: function(items){
    return $.map(items, function(item){
      output_html = $("<tr id='recurring_profile_" + item.id + "' class='recurring_profile'></tr>"); 
      $("<td class='clickable_url recurring_profile_url'></td>").html("<a href='/recurring_profiles/" + item.id + "/edit'>" + item.profile_name + "</a>").appendTo(output_html);
      $("<td></td>").html(item.frequency_term).appendTo(output_html);
      $("<td></td>").html(item.next_billing_date).appendTo(output_html);
      $("<td class='last'></td>").html(item.total_due).appendTo(output_html);

      return output_html
    });
  }


}
