hello again, I'm looking for some help to make a function which helps me to insert a DOM node where my cursor is positioned i got one but it gets me an error in IE

this is the function i have:

Code JavaScript:
function insertNodeAtSelection(win, insertNode)
{
	var sel=null;
	// get current selection
  	sel = win.getSelection();
	// get the first range of the selection
	// (there's almost always only one range)
	var range = sel.getRangeAt(0);
 
	// deselect everything
	sel.removeAllRanges();
 
	// remove content of current selection from document
	range.deleteContents();
 
	// get location of current selection
	var container = range.startContainer;
	var pos = range.startOffset;
 
	// make a new range for the new selection
	range=document.createRange();
 
	if (container.nodeType==3 && insertNode.nodeType==3) {
 
		// if we insert text in a textnode, do optimized insertion
		container.insertData(pos, insertNode.nodeValue);
 
		// put cursor after inserted text
		range.setEnd(container, pos+insertNode.length);
		range.setStart(container, pos+insertNode.length);
 
	} else {
 
 
		var afterNode;
		if (container.nodeType==3) {
 
			// when inserting into a textnode
			// we create 2 new textnodes
			// and put the insertNode in between
 
			var textNode = container;
			container = textNode.parentNode;
			var text = textNode.nodeValue;
 
			// text before the split
			var textBefore = text.substr(0,pos);
			// text after the split
			var textAfter = text.substr(pos);
 
			var beforeNode = document.createTextNode(textBefore);
			afterNode = document.createTextNode(textAfter);
 
			// insert the 3 new nodes before the old one
			container.insertBefore(afterNode, textNode);
			container.insertBefore(insertNode, afterNode);
			container.insertBefore(beforeNode, insertNode);
 
			// remove the old node
			container.removeChild(textNode);
 
		} else {
 
			// else simply insert the node
			afterNode = container.childNodes[pos];
			container.insertBefore(insertNode, afterNode);
		}
 
		range.setEnd(afterNode, 0);
		range.setStart(afterNode, 0);
	}
 
	sel.addRange(range);
};

the parameter win is my object in this case an iframe and the nothe is a node object in this case an IMG