404 Blog Not Found:Best 10 Entries of 2008.01のはてブを表示するscript

404 Blog Not Found:Best 10 Entries of 2008.01のはてブを表示するscript

(function() {

if (! Array.prototype.map ) Array.prototype.map = function(f) {
  var a = [];
  for (var i = 0; i < this.length; i++) {
    a[i] = f(this[i]);
  }
  return a;
};

var getElementsByFunction = function(root, func) {
  var result = [];
  (function(node){
    var kids = node.childNodes;
    for (var i = 0, l = kids.length; i < l; i++) {
      if (func(kids[i])) result[result.length] = kids[i];
      if (kids[i].hasChildNodes()) arguments.callee(kids[i]);
    }
  })(root);
  return result;
};

var atags = [];
getElementsByFunction(document.getElementsByTagName('body')[0], function(e) {
  return e.nodeType == 1 && e.className == 'addhateb';
}).map(function(p) {
  getElementsByFunction(p, function(e) {
    return e.nodeType == 1 && e.nodeName.toLowerCase() == 'a';
  }).map(function(e){ atags[atags.length] = e });
});

atags.map(function(e) {
  var img = document.createElement('img');
  img.alt = img.src = 'http://b.hatena.ne.jp/entry/image/' + e.href;
  img.style.marginLeft = '0.25em';
  img.style.border = '0';
  var a = document.createElement('a');
  a.href = 'http://b.hatena.ne.jp/entry/' + e.href;
  a.appendChild(img);
  var n = e.nextSibling;
  if (n) e.parentNode.insertBefore(a, n);
  else e.parentNode.appendChild(a);
});

})();

だめだ。まだちゃんとよくわかんない。あとでもう一回調べよう。とりあえず写経のみ。