window.onload = srcFix;
function srcFix(){
  if(window.opera)//opera needs its own function, since it has issues w/ getAttribute()
    fixNodeOpera(document.body);
  else
    fixNode(document.body);
}
function fixNode(node){
  var ret = false;
  //if the node has src and type, let's fix it
  if(node.tagName && node.getAttribute('src') && node.getAttribute('type')){ 
    var newNode;
    //is it an image?
    if(node.getAttribute('type').substring(0,6) == "image/"){
      newNode = document.createElement("IMG");
      newNode.src = node.getAttribute('src');
      newNode.alt = newNode.innerHTML.replace(/^\s*(.*[^\s])\s*/,"$1").replace(/<[^>]+>/g,"");
    }
    else{
      newNode = document.createElement("OBJECT");
      newNode.type = node.getAttribute('type');
      newNode.data = node.getAttribute('src');
      newNode.innerHTML = node.innerHTML;
    }
    node.parentNode.insertBefore(newNode,node);
    ret = true;
  }
  //now we fix all its child nodes
  node = node.firstChild;
  var remove;
  while(node != null){
    rem = fixNode(node);
    nextNode = node.nextSibling;
    if(rem)
      node.parentNode.removeChild(node);
    node = nextNode;
  }
  return ret;
}

function fixNodeOpera(node){
  var ret = false;
  if(node.tagName){
    //if the node has src, let's fix it (we can't get the type in Opera. d'oh)
    src = node.outerHTML.replace(/^<[^>]+SRC="/,'');
    if(src != node.outerHTML){
      var newNode;
      newNode = document.createElement("OBJECT");
      newNode.data = src.substring(0,src.indexOf('"'));
      newNode.innerHTML = node.innerHTML;
      node.parentNode.insertBefore(newNode,node);
      ret = true;
    }
  }
  //now we fix all its child nodes
  node = node.firstChild;
  var remove;
  while(node != null){
    rem = fixNodeOpera(node);
    nextNode = node.nextSibling;
    if(rem)
      node.parentNode.removeChild(node);
    node = nextNode;
  }
  return ret;
}
