var section = []; // list of anchors added to each entry

// insert anchor tags at the top of each blog entry
function markentries() {
  var entry = 0;
  var div = document.getElementsByTagName('div');
  for (var i=0; i<div.length; i++) {
    if (div[i].className == "blogbody") {
      var a = document.createElement('a');
      a.id = "entry-" + entry++;
      div[i].insertBefore(a, div[i].firstChild);
      section[section.length] = a;
    }
  }
}

// Determine the offset from the top of the page
function offsetTop(obj) {
  var y = 0;
  for (; obj; obj=obj.offsetParent) {
    y += obj.offsetTop;
    if (obj.scrollTop) y += obj.scrollTop;
  }
  return y;
}

// scroll back to the previous article
function prevArticle() {
  for (var i=section.length; --i>=0;) {
    if (offsetTop(section[i]) < document.documentElement.scrollTop) {
      window.location.hash=section[i].id;
      break;
    }
  }
}

// advance to the next article
function nextArticle() {
  for (var i=1; i<section.length; i++) {
    if (offsetTop(section[i])-20 > document.documentElement.scrollTop) {
      window.location.hash=section[i].id;
      break;
    }
  }
}

// process keypresses
function navkey(key) {
  if (!key) key=window.event;
  if (!key.target && !key.srcElement) return;
  if (key.target && key.target.tagName == 'input') return;
  if (key.srcElement && key.srcElement.tagName == 'INPUT') return;
  if (key.keyCode) key=key.keyCode;

  if (!document.documentElement) return;
  if (typeof section[0].offsetTop == 'undefined') return;

  if (key == 'J'.charCodeAt(0)) nextArticle();
  if (key == 'K'.charCodeAt(0)) prevArticle();
}

// hook events
document.onkeydown = navkey;
window.onload = markentries;

