anchor.diff:      });
     }
   
  -  function filterBundles() {
  +function filterBundles(rows) {
       var bundle = $("#bundles").val();
   
  +    for (i = 0; i < rows.length; i++)
  +    {
  +        tr = $(rows[i]);
  +        if (bundle == "" || tr.attr("title").split(",").indexOf(bundle) >= 0) {
  +            //first level filtering, so can remove hide
  +            tr.removeClass("hide");
  +        }
  +        else {
  +            //remove tr's not under this filter mode
  +            tr.addClass("hide");
  +        }
  +    }
  +    return rows;
  +}
  +
  +function filterEvents(rows) {
  +    var event = $('#event_types').val().toUpperCase();
  +
  +    for (i = 0; i < rows.length; i++)
  +    {
  +        tr = $(rows[i]);
  +        tr_data = tr.data();
  +        if (
  +            "ALL" != event || 
  +            tr_data.event_type != event
  +        ){
  +            //add hide to all who dont deserve to be here
  +            //caution: do not unhide anyone
  +            tr.addClass("hide");
  +        }
  +    }
  +
  +    return rows;
  +}
  +
  +function filterTable()
  +{
       var dataTable = initTable();
  -    $(dataTable.fnGetNodes()).each(function() {
  -      var tr = $(this);
  -      if (bundle == "" || tr.attr("title").split(",").indexOf(bundle) >= 0) {
  -        tr.removeClass("hide");
  -      }
  -      else {
  -        tr.addClass("hide");
  -      }
  -    });
  +    var all_nodes = dataTable.fnGetNodes();
  +    
  +    rows = filterBundles(all_nodes); //this filter should always be first
  +    rows = filterEvents(rows);
  +    //add more cascading filters here and pass rows....
  +    
  +    //my rows are filtered, draw table
       dataTable.fnDraw();
  -  }
  -
  -  $(document).ready(function() {
  +}
  +
  +
  +$(document).ready(function() {
       disableLinks();
       // When going through the pages of the table, disable links as needed
       $('#timeline-table').bind('draw', function (e) {
  -      disableLinks();
  +        disableLinks();
       });
   
       initTable();
   
  -    $("#bundles").change(filterBundles);
  -    filterBundles();
  -  });
  +    $("#bundles, #event_types").change(filterTable);
  +    filterTable();
  +});
   <% end %>
  
positive.code:       <% @timeline.payments.each do |payment| %>
          <% payment.refunds.each do |refund| %>
            <% bundles = payment.bundle_keys.split(",").map {|bundle_key| @bundle_names[bundle_key] }.join(",") %>
            <tr title="<%= bundles %>">
              <td>
                <% if refund.requested_date.present? %>
                  <%= format_date(refund.requested_date, @account.timezone).html_safe %>
  
negative.code:         <% else %>
            <% invoice = nil %>
          <% end %>
          <tr title="<%= bundles %>" data-event_type="PAYMENT">
            <td>
              <% if payment.requested_date.present? %>
                <%= format_date(payment.requested_date, @account.timezone).html_safe %>
  