(function(D){D.fn.htmlClean=function(X){return this.each(function(){var Y=D(this);if(this.value){this.value=D.htmlClean(this.value,X)}else{this.innerHTML=D.htmlClean(this.innerHTML,X)}})};D.htmlClean=function(c,o){o=D.extend({},D.htmlClean.defaults,o);var f=/<(\/)?(\w+:)?([\w]+)([^>]*)>/gi;var k=/(\w+)=(".*?"|'.*?'|[^\s>]*)/gi;var e;var g=new R();var h=[g];var X=g;var a=false;if(o.bodyOnly){if(e=/<body[^>]*>((\n|.)*)<\/body>/i.exec(c)){c=e[1]}}c=c.concat("<xxx>");var d;while(e=f.exec(c)){var n=new I(e[3],e[1],e[4]);var l=c.substring(d,e.index);if(l.length>0){var Z=X.children[X.children.length-1];if(X.children.length>0&&N(Z=X.children[X.children.length-1])){X.children[X.children.length-1]=Z.concat(l)}else{X.children.push(l)}}d=f.lastIndex;if(n.isClosing){if(J(h,[n.name])){h.pop();X=h[h.length-1]}}else{var b=new R(n);if(!n.toIgnore){if(n.allowedAttributes!=null){var Y;while(Y=k.exec(n.rawAttributes)){if(n.allowedAttributes.length==0||D.inArray(Y[1],n.allowedAttributes)>-1){b.attributes.push(new A(Y[1],Y[2]))}}}var m=true;if(!X.isRoot){if(X.tag.isInline&&!n.isInline){m=false}else{if(X.tag.disallowNest&&n.disallowNest&&!n.requiredParent){m=false}else{if(n.requiredParent){if(m=J(h,n.requiredParent)){X=h[h.length-1]}}}}}if(m){X.children.push(b);if(n.toProtect){while(tagMatch2=f.exec(c)){var j=new I(tagMatch2[3],tagMatch2[1],tagMatch2[4]);if(j.isClosing&&j.name==n.name){b.children.push(RegExp.leftContext.substring(d));d=f.lastIndex;break}}}else{if(!n.isSelfClosing&&!n.isNonClosing){h.push(b);X=b}}}}}}return W(g,o).join("")};D.htmlClean.defaults={bodyOnly:true,removeAttrs:[],allowedClasses:[],format:false,formatIndent:0,replace:[[["b","big",/span.*?weight:\s*bold/i],"strong"],[["i",/span.*?style:\s*italic/i],"em"],[[/span.*?-align:\s*super/i],"sup"],[[/span.*?-align:\s*sub/i],"sub"]]};function H(a,Z,Y,X){if(!a.tag.isInline&&Y.length>0){Y.push("\n");for(i=0;i<X;i++){Y.push("\t")}}}function W(c,j){var Y=[],e=c.attributes.length==0,Z;var d=this.name.concat(c.tag.rawAttributes==undefined?"":c.tag.rawAttributes);for(var f=0;f<j.replace.length;f++){for(var k=0;k<j.replace[f][0].length;k++){var h=typeof (j.replace[f][0][k])=="string";if((h&&j.replace[f][0][k]==c.tag.name)||(!h&&j.replace[f][0][k].test(d))){c.tag.name=j.replace[f][1];f=j.replace.length;break}}}if(!c.isRoot){Y.push("<");Y.push(c.tag.name);D.each(c.attributes,function(){if(D.inArray(this.name,j.removeAttrs)==-1){var l=RegExp(/^(['"]?)(.*?)['"]?$/).exec(this.value);var n=l[2];var o=l[1];if(this.name=="class"){n=D.grep(n.split(" "),function(m){return D.inArray(m,j.allowedClasses)>-1}).join(" ");o='"'}if(n!=null&&n.length>0){Y.push(" ");Y.push(this.name);Y.push("=");Y.push(o);Y.push(n);Y.push(o)}}})}if(c.tag.isSelfClosing){Y.push(" />");e=false}else{if(c.tag.isNonClosing){e=false}else{if(!c.isRoot){Y.push(">")}var Z=j.formatIndent++;if(c.tag.toProtect){Y.push(D.htmlClean.trim(c.children.join("")))}else{var b=[];for(var a=0;a<c.children.length;a++){var X=c.children[a];var g=D.htmlClean.trim(C(N(X)?X:X.childrenToString()));if(Q(X)){if(a>0&&g.length>0&&(V(X)||F(c.children[a-1]))){b.push(" ")}}if(N(X)){if(g.length>0){b.push(g)}}else{if(a!=c.children.length-1||X.tag.name!="br"){if(j.format){H(X,j,b,Z)}b=b.concat(W(X,j))}}}j.formatIndent--;if(b.length>0){if(j.format&&b[0]!="\n"){H(c,j,Y,Z)}Y=Y.concat(b);e=false}}if(!c.isRoot){if(j.format){H(c,j,Y,Z-1)}Y.push("</");Y.push(c.tag.name);Y.push(">")}}}if(!c.tag.allowEmpty&&e){return[]}return Y}function J(X,Z,Y){Y=Y||1;if(D.inArray(X[X.length-Y].tag.name,Z)>-1){return true}else{if(X.length-(Y+1)>0&&J(X,Z,Y+1)){X.pop();return true}}return false}function R(X){if(X){this.tag=X;this.isRoot=false}else{this.tag=new I("root");this.isRoot=true}this.attributes=[];this.children=[];this.childrenToString=function(){return this.children.join("")};return this}function A(X,Y){this.name=X;this.value=Y;return this}function I(X,Z,Y){this.name=X.toLowerCase();this.isSelfClosing=D.inArray(this.name,L)>-1;this.isNonClosing=D.inArray(this.name,S)>-1;this.isClosing=(Z!=undefined&&Z.length>0);this.isInline=D.inArray(this.name,T)>-1;this.disallowNest=D.inArray(this.name,P)>-1;this.requiredParent=E[D.inArray(this.name,E)+1];this.allowEmpty=D.inArray(this.name,B)>-1;this.toIgnore=D.inArray(this.name,K)>-1;this.toProtect=D.inArray(this.name,G)>-1;this.rawAttributes=Y;this.allowedAttributes=M[D.inArray(this.name,M)+1];return this}function V(X){while(O(X)&&X.children.length>0){X=X.children[0]}return N(X)&&X.length>0&&D.htmlClean.isWhitespace(X.charAt(0))}function F(X){while(O(X)&&X.children.length>0){X=X.children[X.children.length-1]}return N(X)&&X.length>0&&D.htmlClean.isWhitespace(X.charAt(X.length-1))}function N(X){return X.constructor==String}function Q(X){return N(X)||X.tag.isInline}function O(X){return X.constructor==R}function C(X){return X.replace(/&nbsp;|\n/g," ").replace(/\s\s+/g," ")}D.htmlClean.trim=function(X){return D.htmlClean.trimStart(D.htmlClean.trimEnd(X))};D.htmlClean.trimStart=function(X){return X.substring(D.htmlClean.trimStartIndex(X))};D.htmlClean.trimStartIndex=function(X){for(var Y=0;Y<X.length-1&&D.htmlClean.isWhitespace(X.charAt(Y));Y++){}return Y};D.htmlClean.trimEnd=function(X){return X.substring(0,D.htmlClean.trimEndIndex(X))};D.htmlClean.trimEndIndex=function(Y){for(var X=Y.length-1;X>=0&&D.htmlClean.isWhitespace(Y.charAt(X));X--){}return X+1};D.htmlClean.isWhitespace=function(X){return D.inArray(X,U)!=-1};var K=["basefont","center","dir","font","frame","frameset","iframe","isindex","menu","noframes","s","strike","u"];var T=["a","abbr","acronym","address","b","big","br","button","caption","cite","code","del","em","font","hr","i","input","img","ins","label","legend","map","q","samp","select","small","span","strong","sub","sup","tt","var"];var P=["h1","h2","h3","h4","h5","h6","p","th","td"];var B=["th","td"];var E=[null,"li",["ul","ol"],"dt",["dl"],"dd",["dl"],"td",["tr"],"th",["tr"],"tr",["table","thead","tbody","tfoot"],"thead",["table"],"tbody",["table"],"tfoot",["table"]];var G=["script","style","pre","code"];var L=["br","hr","img","link","meta"];var S=["!doctype","?xml"];var M=[["class"],"?xml",[],"!doctype",[],"a",["accesskey","class","href","name","title","rel","rev","type","tabindex"],"abbr",["class","title"],"acronym",["class","title"],"blockquote",["cite","class"],"button",["class","disabled","name","type","value"],"del",["cite","class","datetime"],"form",["accept","action","class","enctype","method","name"],"input",["accept","accesskey","alt","checked","class","disabled","ismap","maxlength","name","size","readonly","src","tabindex","type","usemap","value"],"img",["alt","class","height","src","width"],"ins",["cite","class","datetime"],"label",["accesskey","class","for"],"legend",["accesskey","class"],"link",["href","rel","type"],"meta",["content","http-equiv","name","scheme"],"map",["name"],"optgroup",["class","disabled","label"],"option",["class","disabled","label","selected","value"],"q",["class","cite"],"script",["src","type"],"select",["class","disabled","multiple","name","size","tabindex"],"style",["type"],"table",["class","summary"],"textarea",["accesskey","class","cols","disabled","name","readonly","rows","tabindex"]];var U=[" "," ","\t","\n","\r","\f"]})(jQuery);