jQuery.fn.autolink = function(keyword,url) {
 function innerAutolink(node, keyword, url) {
  var skip = 0;
  var parentName = '';
  var escapedKeyword = keyword.replace(/[^\w\.@-]/g,'').toUpperCase();
  try { parentName = node.parentNode.nodeName; } catch(e) {}
  if (node.nodeType == 3 
  		&& parentName != 'A'
  		&& parentName != 'OPTION'
  		&& $.data(document.body, escapedKeyword) == null) {
   var pos = node.data.toUpperCase().indexOf(keyword.toUpperCase());
   if (pos >= 0 && window.location.href.indexOf(url) == -1) {
    var span = document.createElement('span');
    span.className = 'autolink';
    var link = document.createElement('a');
    link.setAttribute('href',url + '/' + keyword.replace(/ /g,'-').toLowerCase());
    link.setAttribute('title','Click here to find out more about \'' + keyword + '\'');
    var middlebit = node.splitText(pos);
    var endbit = middlebit.splitText(keyword.length);
    var middleclone = middlebit.cloneNode(true);
    link.appendChild(middleclone);
    span.appendChild(link);
    middlebit.parentNode.replaceChild(span, middlebit);
    $.data(document.body, escapedKeyword, '1');
    skip = 1;
   }
  }
  else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
   for (var i = 0; i < node.childNodes.length; ++i) {
    i += innerAutolink(node.childNodes[i], keyword, url, autolinkCountArray);
   }
  }
  return skip;
 }
 return this.each(function() {
  innerAutolink(this, keyword, url, autolinkCountArray);
 });
};
