Riim, а зачем ты div создаешь? Во-первых, ты добавляешь div'ы, которых изначально не было, а во-вторых может поменяться внешний вид
кроме того, я бы не записывал столько всего в for:
var childNodes = (parent || document.body).childNodes;
length = childNodes.length;
for (i = 0; i < length; i++) {
и использовал бы if'ы вместо тернарного оператора
if( I.nodeType == 1 )
arguments.callee(callback, I);
elseif( I.nodeType == 3 )
callback(I, i);
а еще, может, регулярное выражение можно проще сделать, но это зависит от наличия других ссылок в тексте