/*
  Reply-Blocker v2.1
  (EE v1)
  For use with Invision Power Boards
  Created and hosted by blakeo_x (stalk38125)
  ------------------------
  blakeoxx@netscape.net
*/

var forceallow
var currentuser = ""
var memdata = ""
var rbblocklist = ""

// Code Counter
// document.write("<iframe src='http://ifcodes.project-apex.com/codecounter.php?code=rblocker&board=" + escape(window.location.href.substring(window.location.href.indexOf("://")+3, window.location.href.indexOf(".")) + " " + window.location.href.substring(window.location.href.indexOf("com/")+4, (window.location.href.indexOf('/index.php')>-1?window.location.href.indexOf('/index.php'):(window.location.href.indexOf('/', window.location.href.indexOf("com/")+4)>-1?window.location.href.indexOf('/', window.location.href.indexOf("com/")+4):(window.location.href.indexOf('?')>-1?window.location.href.indexOf('?'):window.location.href.length))))) + "' style='display:none;'></iframe>")

function initrblocker()
{
 getlist()
 var span = document.getElementsByTagName('span')
 if (span == null || rbblocklist.length <= 0) return false
 
 rbblocklist = rbblocklist.toLowerCase()
 for (i=0; i<span.length; i++)
 {
  if (span[i].className == "normalname" && rbblocklist.match(">" + span[i].getElementsByTagName('A')[0].innerHTML.toLowerCase() + ">"))
  {
   if (forceallow != null && RegExp("(^|,)" + span[i+2].innerHTML.match(/(?:Group: )([^<]*)(?:<)/)[1] + "($|,)", "i").test(forceallow.join())) return false
   
   var tempid = span[i]
   do
   {
    var parenttable = tempid.parentNode
    tempid = parenttable
   } while (parenttable.tagName != "TABLE" && tempid.parentNode)
   if (parenttable.tagName != "TABLE") return false
   
   var div = parenttable.getElementsByTagName('div')
   if (div == null) return false
   var found2 = 0
   for (b=0; b<div.length; b++)
   {
    if (div[b].className == "postcolor" && found2 != 1)
    {
     div[b].innerHTML = "<CENTER><FONT color='red'><B>Post Blocked</B></FONT><BR><A href='" + loc.substring(0,loc.indexOf('showtopic=')) + "act=UserCP&amp;CODE=rblocker'>Manage Block List</A></CENTER>"
     found2 = 1
    }
    else if (div[b].className == "postcolor" && found2 == 1) div[b].style.display = "none"
   }
  }
 }
}

function setrbblocklist()
{
 if (loc.match('act=UserCP') && loc.match('CODE=rblocker'))
 {
  getlist()
  var itemarray = rbblocklist.split(">")
  var listitems = ""
  for (x=2; x<itemarray.length; x++)
  {
   if (itemarray[x] != "") listitems += "\n\r<option>" + itemarray[x]
  }
  
  var e = document.getElementById('ucpcontent')
  e.innerHTML = "<div class='maintitle'>Welcome to your control panel </div>" + "<div class='pformstrip'>Reply-Blocker Manager</div>"
  e.innerHTML += ("\n<div align='center'><p>" + 
		"\n<b>You are blocking posts from the following people:</b><br>&nbsp;<br>" + 
		"\n<form name='rblockerpage'><select name='userlist' class='forminput' size=5 multiple>" + listitems + "</select><br>" + 
		"\n<input type=button value='Add' class='forminput' onClick='rblockerxtra(1)'>&nbsp;<input type=button value='Remove' class='forminput' onClick='rblockerxtra(2)'></form></div>")
 }
 var ucpsection = document.getElementById('ucpmenu').getElementsByTagName('P')
 for (x=0; x<ucpsection.length; x++)
 {
  if (ucpsection[x].innerHTML.match("Change Password"))
  {
   ucpsection[x].innerHTML += "<BR>· <a href='" + loc.substring(0,loc.indexOf('act=')) + "act=UserCP&amp;CODE=rblocker'>Reply-Blocker Manager</a>"
  }
 }
}

function rblockerxtra(mode)
{
 if (mode == 1)
 {
  var newusr = prompt("Type the name of the user to block", "")
  if (newusr != null && newusr != "")
  {
   if (newusr == currentuser){ alert("Why would you want to block yourself? You silly goose!"); return false }
   else if (newusr == "ROOT") alert("Oh, I see your members have some...interesting naming conventions")
   else if (newusr == "Silly goose") alert("Wow, someone needs to take a stick to that guys head. Thats how we used to cure insanity back in the day")
   else if (newusr == "The fridge" || newusr == "Fridge") alert("[ -]\n\nThe fridge lolz!")
   else if (newusr == "Stupid") alert("Hey, at least hes honest...")
   
   for (x in document.rblockerpage.userlist.options) if (!isNaN(x) && document.rblockerpage.userlist.options[x].text == newusr){ alert(newusr + " is already blocked!"); return false }
   document.rblockerpage.userlist.options[document.rblockerpage.userlist.options.length] = new Option(newusr.replace(/</g, "&lt;").replace(/>/g, "&gt;"), false, false, true)
   writecookie(newusr.replace(/</g, "&lt;").replace(/>/g, "&gt;"), 0)
  }
 }
 else if (mode == 2)
 {
  var currentusers = ""
  for (x in document.rblockerpage.userlist.options) if (!isNaN(x) && document.rblockerpage.userlist.options[x].selected) currentusers += "\n" + document.rblockerpage.userlist.options[x].text
  if (currentusers == "") alert("You must select one or more users from the list to remove!")
  else if (confirm("Are you sure you want to view posts from the following users?\n" + currentusers))
  {
   for (x=0; x<document.rblockerpage.userlist.options.length; x++)
   {
    if (!isNaN(x) && document.rblockerpage.userlist.options[x].selected)
    {
     writecookie(document.rblockerpage.userlist.options[x].text, 1)
     document.rblockerpage.userlist.options[x] = null
     x--
    }
   }
  }
 }
}

function getlist()
{
 readcookie()
 if (memdata == "") return false
 var users = memdata.split("<")
 for (x=0; x<users.length; x++)
 {
  if (users[x].indexOf(currentuser) == 0) rbblocklist = users[x] + ">"
 }
}

function readcookie()
{
 currentuser = document.getElementById("userlinks").getElementsByTagName("A")[0].innerHTML
 if (currentuser == "Log In") currentuser = "Guest"
 
 var allcookies = document.cookie
 if (allcookies == "") return false
 var pos = allcookies.indexOf("rblocker=")
 if (pos == -1) return false
 start = pos + 9
 var end = allcookies.indexOf(";", start)
 if (end == -1) end = allcookies.length
 
 memdata = unescape(allcookies.substring(start, end))
}

function writecookie(poster, change)
{
 readcookie()
 var exp = new Date()
 exp.setFullYear(exp.getFullYear() + 1)
 
 var t = memdata
 if (t.match("<" + currentuser + ">") || t.indexOf(currentuser + ">") == 0)
 {
  substart = (t.match("<" + currentuser + ">")?t.indexOf("<" + currentuser + ">"):0)
  subend = (t.indexOf("<", substart+1)>-1?t.indexOf("<", substart+1):t.length)
  if (change == 1 && t.substring(substart, subend).match(">" + poster)) t = t.substring(0, substart) + t.substring(substart, subend).replace(">" + poster, "") + t.substring(subend, t.length)
  else if (change == 0 && t.substring(substart, subend).indexOf(">" + poster) == -1) t = t.substring(0, subend) + ">" + poster + t.substring(subend, t.length)
 }
 else if (change == 0 && t == "") t = currentuser + ">>" + poster
 else if (change == 0) t = t + "<" + currentuser + ">>" + poster
 
 document.cookie = "rblocker=" + escape(t) + "; expires=" + exp.toGMTString()
}



var docisloaded = document.getElementsByTagName("div")[0]
var loc = window.location.href
if (!docisloaded && loc.match('showtopic=')) window.onload=initrblocker
else if (!docisloaded && (loc.match('act=UserCP') || loc.match('act=Msg'))) window.onload=setrbblocklist
else if (loc.match('showtopic=')) initrblocker()
else if (loc.match('act=UserCP') || loc.match('act=Msg')) setrbblocklist()