// ==UserScript==
// @name           LessWrong anti-kibitzer
// @namespace      http://stanford.edu/~marce110/
// @description    Allows the user to toggle whether point values and commenters are shown on LW.
// @include        http://*lesswrong.com/*
// @include        http://*.lesswrong.com/*
// ==/UserScript==


// LessWrong anti-kibitzer version 0.44
// Thanks to Baughn for fixing the flickering bug.

function forallElts(pattern, fn){
  var allElts = document.evaluate(pattern,
      document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  for(var i = 0 ; i < allElts.snapshotLength ; i++){
    fn(allElts.snapshotItem(i));
  }
}

function forallKibitzes(fn){
  forallElts("//span[contains(@class,'author')]", fn)
  forallElts("//span[contains(@class,'score')]", fn)
  forallElts("//span[contains(@class,'votes')]", fn)
  forallElts("//span[contains(@id,'score')]", fn)
  forallElts("//div[contains(@class,'reddit-link')]//span", fn)
  forallElts("//div[@id='siteTable']//a[contains(@href,'lesswrong.com/user')]", fn)
  forallElts("//div[@id='side-comments']//a[contains(@href,'lesswrong.com/user')]", fn)
}

function hide(n) { n.style.display = "none"; }
function show(n) { n.style.display = "inline"; }

var kib_hidden = false;
function toggle_kibitzing(){
  clearInterval(busy);
  kbutton = document.getElementById("kbutton")
  if(kib_hidden){
    forallKibitzes(show)
    kib_hidden = false;
    kbutton.value = "Turn Kibitzing Off";
  }else{
    forallKibitzes(hide)
    kib_hidden = true;
    kbutton.value = "Turn Kibitzing On";
  }
}
var busy=0;
var times=20;
function apply_kibitzing(){
  times--;
  if (times<=0) {clearInterval(busy);}
    forallKibitzes(hide)
}

unsafeWindow.toggle_kibitzing = toggle_kibitzing;

var div = document.createElement("div")
div.innerHTML = "<div id='kfloat' style='position:fixed;top:0px;right:0px'><form><input id='kbutton' type='button' value='Turn Kibitzing On' onclick='toggle_kibitzing()'/></form></div><script>toggle_kibitzing()</script>";

document.body.appendChild(div);
busy=unsafeWindow.setInterval(function() {apply_kibitzing();},100);
