(function($){ 
	$.fn.extend({
		highlight: function(strings) {
			
			function findText(node, string) {
				if (node.nodeType == 3)
					return searchText(node, string);
				else if (node.nodeType == 1 && node.childNodes && !(/(script|style)/i.test(node.tagName))) {
					for (var i = 0; i < node.childNodes.length; ++i) {
						i += findText(node.childNodes[i], string);
					}
				}
				return 0;
	
			}
 
			function searchText(node, string){
				var position = node.data.toUpperCase().indexOf(string);
				if (position >= 0)
					return highlight(node, position, string);
				else
					return 0;
			}
	
			 function highlight(node, position, string){
				var spannode = document.createElement('span');
				spannode.className = 'highlight';
				var middlebit = node.splitText(position);
				var endbit = middlebit.splitText(string.length);
				var middleclone = middlebit.cloneNode(true);
				spannode.appendChild(middleclone);
				middlebit.parentNode.replaceChild(spannode, middlebit);
				return 1;
			}
 
			 return this.each(function() {
				if(typeof strings == 'string')
					findText(this, strings.toUpperCase());	
				else
					for (var i = 0; i < strings.length; ++i) findText(this, strings[i].toUpperCase());	
			 });
		}
	}); 
})(jQuery);