source = source.replace(/<b(\s+|>)/g, "<strong$1"); source = source.replace(/<\/b(\s+|>)/g, "</strong$1"); source = source.replace(/<i(\s+|>)/g, "<em$1"); source = source.replace(/<\/i(\s+|>)/g, "</em$1"); 
source = source.replace(/<b(\s+|>)/g, '<strong$1'); source = source.replace(/<\/b(\s+|>)/g, '</strong$1'); source = source.replace(/<i(\s+|>)/g, '<em$1'); source = source.replace(/<\/i(\s+|>)/g, '</em$1'); source = source.replace(/<u(\s+|>)/g, '<span style="text-decoration: underline;"$1'); source = source.replace(/<\/u(\s+|>)/g, "</span$1"); 
	cleanup: function(source){		// Webkit cleanup		source = source.replace(/<br class\="webkit-block-placeholder">/gi, "<br />");		source = source.replace(/<span class="Apple-style-span">(.*)<\/span>/gi, '$1');		source = source.replace(/ class="Apple-style-span"/gi, '');		source = source.replace(/<span style="">/gi, '');		// Remove padded paragraphs		source = source.replace(/<p>\s*<br \/>\s*<\/p>/gi, '<p>\u00a0</p>');		source = source.replace(/<p>(&nbsp;|\s)*<\/p>/gi, '<p>\u00a0</p>');		source = source.replace(/\s*<br \/>\s*<\/p>/gi, '</p>');		// Replace improper BRs		source = source.replace(/<br>/gi, "<br />");		// Remove leading and trailing BRs		source = source.replace(/<br \/>$/gi, '');		source = source.replace(/^<br \/>/gi, '');		// Remove useless BRs		source = source.replace(/><br \/>/gi, '>');		// Remove BRs right before the end of blocks		source = source.replace(/<br \/>\s*<\/(h1|h2|h3|h4|h5|h6|li|p)/gi, '</$1');		// Remove empty tags		source = source.replace(/(<[^\/]>|<[^\/][^>]*[^\/]>)\s*<\/[^>]*>/gi, '');		// Semantic conversion		source = source.replace(/<span style="font-weight: bold;">(.*)<\/span>/gi, '<strong>$1</strong>');		source = source.replace(/<span style="font-style: italic;">(.*)<\/span>/gi, '<em>$1</em>');		source = source.replace(/<b(\s+|>)/g, "<strong$1");		source = source.replace(/<\/b(\s+|>)/g, "</strong$1");		source = source.replace(/<i(\s+|>)/g, "<em$1");		source = source.replace(/<\/i(\s+|>)/g, "</em$1");		// Replace uppercase element names with lowercase		source = source.replace(/<[^> ]*/g, function(match){return match.toLowerCase();});		// Replace uppercase attribute names with lowercase		source = source.replace(/<[^>]*>/g, function(match){			match = match.replace(/ [^=]+=/g, function(match2){return match2.toLowerCase();});			return match;		});		// Put quotes around unquoted attributes		source = source.replace(/<[^>]*>/g, function(match){			match = match.replace(/( [^=]+=)([^"][^ >]*)/g, "$1\"$2\"");			return match;		});		// Final trim		source = source.trim();		return source;	}
5086	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5086/228b7620e22694dff7a0c94616e25e852cb025f0/MooEditable.js/clean/MooEditable.js