// ==UserScript==

// @name           Reddit Filter

// @namespace      redditfilter

// @description    Filter reddit submissions from specified URLs

// @include        http://reddit.com/*

// ==/UserScript==


// --- Config ---

// Regular expression - addresses to filter from reddit - for examples see http://bluesuncorp.co.uk/2008/3/14/reddit-filter
// This should match domains in the form 'subdomain.domain.com'

filter = 'subdomain\.domain\.com';

// --------------


removeids = new Array();

offset = 0; // Number of rows removed

divs = document.getElementById('siteTable').getElementsByTagName('div'); // Every div element

for (var i=0, len=divs.length; i<len; ++i) {

 div = divs[i];

 if (div.id.match('titlerow_[a-z0-9]{2}_[a-z0-9]{5}')) { // One match per submission

  // Get the id-suffix used in this submission's elements

  ids = div.id.slice(9);

  // Get reddit's shortened url for the submission

  span = div.getElementsByTagName('span');
  url = span[0].innerHTML.slice(1,-1);

  if (url.match(filter)) {

   // Add submission to array, if it matches the filter regex

   removeids[removeids.length] = ids;

   offset++

  }

  else if (offset > 0) {

   // Re-number the submission, if previous submissions have been removed

   num = document.getElementById('thingCol1_' + ids); // This element contains the submission number

   if (num.innerHTML.toLowerCase().match('<span class="?star"?><a href="?\/toplinks"?>[0-9]+\.<\/a><\/span>')) {

    // Special case for 'toplinks'

    elem = num.getElementsByTagName('a');
    elem = elem[0]

    rep = '<span class="star"><a href="/toplinks">' + (elem.innerHTML-offset) + '.</a></span>';

   }

   else {

    rep = (num.innerHTML.slice(0,-1)-offset)+'.';

   }

   num.innerHTML = rep;

  }
 }
}

for (var i=0, len=removeids.length; i<len; ++i) {

 // Remove filtered submissions

 ids = removeids[i];

 rem = document.getElementById('pre_' + ids); rem.parentNode.removeChild(rem);
 rem = document.getElementById('thingrow_' + ids); rem.parentNode.removeChild(rem);

}