jQuery.fn.replaceTextWithElement = function(stringToMatch, element) {
		
	if (!Node) {
    	var Node = {
        	TEXT_NODE: 3
      	}
    };

	var replacementElement = jQuery(element);
	
	var textNodes=[];

	function getContentsRecursive(element) {
		var prevSibling = null;
		jQuery(element).contents().each(function() {
			if (this.nodeType == Node.TEXT_NODE) {
				var jNode=$(this);
				var matchIndex=jNode.text().indexOf(stringToMatch);
				if (matchIndex>-1) {
					var parts=jNode.text().split(stringToMatch);
					var parent=jNode.parent();
					var insertBefore = $(jNode[0].nextSibling);
					jNode.remove();
					
					if (insertBefore.length) {
						insertBefore.before(parts.shift());
					} else {
						parent.append(parts.shift());
					};
					
					if (parts.length) {
						for (var i=0;i<parts.length;i++) {
							replacementObjectClone = replacementElement.clone();
							if (insertBefore.length) {
								insertBefore.before(replacementObjectClone);
								insertBefore.before(parts[i]);
							} else {
								parent.append(replacementObjectClone);
								parent.append(parts[i]);
							};
						};
					};
				};
			} else {
				getContentsRecursive(this);
			};
		});
	};
	
	getContentsRecursive(this);
};

