(function($){
	$.fn.deorphanize = function(){
		var MIN_WIDTH = 225;
		var ALLOWED = 'b|i|em|strong';
		var reALLOWED_TAGS = new RegExp('<(\/?)(' + ALLOWED + ')>', 'g');
		var reALLOWED_TAGS_TEMP = new RegExp('\{\{\{(\/?)(' + ALLOWED + ')\}\}\}', 'g');
		var reLAST_TWO_WORDS = new RegExp('([^ ^<^>]+) ([^ ^<^>]+)$');
		return this.each(function(){
			var jqObj = $(this);
			// don't worry about orphans if less than min width
			var jqWidthSensor = $('<hr />');
			jqObj.append(jqWidthSensor);
			var textWidth = jqWidthSensor.width();
			jqWidthSensor.remove();
			if (textWidth < MIN_WIDTH) return;
			
			var oldStr = jqObj.html();
			var newStr = oldStr.replace(reALLOWED_TAGS, '{{{$1$2}}}');
			newStr = newStr.replace(reLAST_TWO_WORDS, '$1&nbsp;$2');
			newStr = newStr.replace(reALLOWED_TAGS_TEMP, '<$1$2>');
			jqObj.html(newStr);
		});
	};
})(jQuery);

