anchor.diff:          {"sTitle":"First","sClass":"error-first"},
           {"sTitle":"Last","sClass":"error-last"},
           {"sTitle":"Count","sClass":"error-count"},
  -        {"sTitle":"Message","sClass":"error-message"}]
  +        {"sTitle":"Env","sClass":"error-env"},
  +        {"sTitle":"Message","sClass":"error-message"}
  +        ]
       });
  +
  +    $.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
  +      switch (aData[5]) {
  +        case "M": return $('#master').prop('checked');
  +        case "S": return $('#staging').prop('checked');
  +        case "P": return $('#production').prop('checked');
  +      }
  +      return true;
  +    });
  +    $('.env_selector').on('change', function() { exception_table.fnDraw(); });
   
       project_select.on('change', function() {
         update_status.text("-");
  
positive.code:   <style>
      .error-details { width: 20px; cursor: pointer;}
      .error-frequency { width: 50px; }
      .error-first { width: 100px; }
      .error-last { width: 100px; }
      .error-count { text-align:right; width: 50px;}
      .error-message { }
    </style>
  
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  
negative.code:       var data = '<div id="error_details">Showing '+projects[project_id].errors[group].notices.length+' notices.<br /><table cellpadding="0" cellspacing="0" border="0" style="padding-left:100px;">';
        for (var i in projects[project_id].errors[group].notices) {
          var n = projects[project_id].errors[group].notices[i];
          data += '<tr><td class="notice-at"><a href="https://<%= params[:subdomain] %>.airbrake.io/projects/'+project_id+'/groups/'+n.project_id+'/notices/'+n.uuid+'" target="_blank" title="'+n.uuid+'">'+n.created_at+'</a></td><td>'+ n.error_message +'</td></tr>';
        }
        data += '</table></div>';
        return data;
  