(function(D){D.fn.htmlClean=function(Y){return this.each(function(){var Z=D(this);if(this.value){this.value=D.htmlClean(this.value,Y)}else{this.innerHTML=D.htmlClean(this.innerHTML,Y)}})};D.htmlClean=function(d,p){p=D.extend({},D.htmlClean.defaults,p);var g=/<(\/)?(\w+:)?([\w]+)([^>]*)>/gi;var l=/(\w+)=(".*?"|'.*?'|[^\s>]*)/gi;var f;var h=new R();var j=[h];var Y=h;var b=false;if(p.bodyOnly){if(f=/<body[^>]*>((\n|.)*)<\/body>/i.exec(d)){d=f[1]}}d=d.concat("<xxx>");var e;while(f=g.exec(d)){var o=new I(f[3],f[1],f[4]);var m=d.substring(e,f.index);if(m.length>0){var a=Y.children[Y.children.length-1];if(Y.children.length>0&&N(a=Y.children[Y.children.length-1])){Y.children[Y.children.length-1]=a.concat(m)}else{Y.children.push(m)}}e=g.lastIndex;if(o.isClosing){if(J(j,[o.name])){j.pop();Y=j[j.length-1]}}else{var c=new R(o);if(!o.toIgnore){if(o.allowedAttributes!=null){var Z;while(Z=l.exec(o.rawAttributes)){if(o.allowedAttributes.length==0||D.inArray(Z[1],o.allowedAttributes)>-1){c.attributes.push(new A(Z[1],Z[2]))}}D.each(o.requiredAttributes,function(){var q=this.toString();if(!c.hasAttribute(q)){c.attributes.push(new A(q,""))}})}var n=true;if(!Y.isRoot){if(Y.tag.isInline&&!o.isInline){n=false}else{if(Y.tag.disallowNest&&o.disallowNest&&!o.requiredParent){n=false}else{if(o.requiredParent){if(n=J(j,o.requiredParent)){Y=j[j.length-1]}}}}}if(n){Y.children.push(c);if(o.toProtect){while(tagMatch2=g.exec(d)){var k=new I(tagMatch2[3],tagMatch2[1],tagMatch2[4]);if(k.isClosing&&k.name==o.name){c.children.push(RegExp.leftContext.substring(e));e=g.lastIndex;break}}}else{if(!o.isSelfClosing&&!o.isNonClosing){j.push(c);Y=c}}}}}}return W(h,p).join("")};D.htmlClean.defaults={bodyOnly:true,allowedTags:[],removeTags:[],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(b,a,Z,Y){if(!b.tag.isInline&&Z.length>0){Z.push("\n");for(i=0;i<Y;i++){Z.push("\t")}}}function W(d,l){var Z=[],f=d.attributes.length==0,a;var e=this.name.concat(d.tag.rawAttributes==undefined?"":d.tag.rawAttributes);for(var g=0;g<l.replace.length;g++){for(var m=0;m<l.replace[g][0].length;m++){var k=typeof (l.replace[g][0][m])=="string";if((k&&l.replace[g][0][m]==d.tag.name)||(!k&&l.replace[g][0][m].test(e))){d.tag.name=l.replace[g][1];g=l.replace.length;break}}}var j=(l.allowedTags.length==0||D.inArray(d.tag.name,l.allowedTags)>-1)&&(l.removeTags.length==0||D.inArray(d.tag.name,l.removeTags)==-1);if(!d.isRoot&&j){Z.push("<");Z.push(d.tag.name);D.each(d.attributes,function(){if(D.inArray(this.name,l.removeAttrs)==-1){var n=RegExp(/^(['"]?)(.*?)['"]?$/).exec(this.value);var o=n[2];var p=n[1]||"'";if(this.name=="class"){o=D.grep(o.split(" "),function(q){return D.grep(l.allowedClasses,function(r){return r[0]==q&&(r.length==1||D.inArray(d.tag.name,r[1])>-1)}).length>0}).join(" ");p="'"}if(o!=null&&(o.length>0||D.inArray(this.name,d.tag.requiredAttributes)>-1)){Z.push(" ");Z.push(this.name);Z.push("=");Z.push(p);Z.push(o);Z.push(p)}}})}if(d.tag.isSelfClosing){if(j){Z.push(" />")}f=false}else{if(d.tag.isNonClosing){f=false}else{if(!d.isRoot&&j){Z.push(">")}var a=l.formatIndent++;if(d.tag.toProtect){var c=D.htmlClean.trim(d.children.join("")).replace(/<br>/ig,"\n");Z.push(c);f=c.length==0}else{var c=[];for(var b=0;b<d.children.length;b++){var Y=d.children[b];var h=D.htmlClean.trim(C(N(Y)?Y:Y.childrenToString()));if(Q(Y)){if(b>0&&h.length>0&&(V(Y)||F(d.children[b-1]))){c.push(" ")}}if(N(Y)){if(h.length>0){c.push(h)}}else{if(b!=d.children.length-1||Y.tag.name!="br"){if(l.format){H(Y,l,c,a)}c=c.concat(W(Y,l))}}}l.formatIndent--;if(c.length>0){if(l.format&&c[0]!="\n"){H(d,l,Z,a)}Z=Z.concat(c);f=false}}if(!d.isRoot&&j){if(l.format){H(d,l,Z,a-1)}Z.push("</");Z.push(d.tag.name);Z.push(">")}}}if(!d.tag.allowEmpty&&f){return[]}return Z}function J(Y,a,Z){Z=Z||1;if(D.inArray(Y[Y.length-Z].tag.name,a)>-1){return true}else{if(Y.length-(Z+1)>0&&J(Y,a,Z+1)){Y.pop();return true}}return false}function R(Y){if(Y){this.tag=Y;this.isRoot=false}else{this.tag=new I("root");this.isRoot=true}this.attributes=[];this.children=[];this.hasAttribute=function(Z){for(var a=0;a<this.attributes.length;a++){if(this.attributes[a].name==Z){return true}}return false};this.childrenToString=function(){return this.children.join("")};return this}function A(Y,Z){this.name=Y;this.value=Z;return this}function I(Y,a,Z){this.name=Y.toLowerCase();this.isSelfClosing=D.inArray(this.name,L)>-1;this.isNonClosing=D.inArray(this.name,S)>-1;this.isClosing=(a!=undefined&&a.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=Z;this.allowedAttributes=M[D.inArray(this.name,M)+1];this.requiredAttributes=X[D.inArray(this.name,X)+1];return this}function V(Y){while(O(Y)&&Y.children.length>0){Y=Y.children[0]}return N(Y)&&Y.length>0&&D.htmlClean.isWhitespace(Y.charAt(0))}function F(Y){while(O(Y)&&Y.children.length>0){Y=Y.children[Y.children.length-1]}return N(Y)&&Y.length>0&&D.htmlClean.isWhitespace(Y.charAt(Y.length-1))}function N(Y){return Y.constructor==String}function Q(Y){return N(Y)||Y.tag.isInline}function O(Y){return Y.constructor==R}function C(Y){return Y.replace(/&nbsp;|\n/g," ").replace(/\s\s+/g," ")}D.htmlClean.trim=function(Y){return D.htmlClean.trimStart(D.htmlClean.trimEnd(Y))};D.htmlClean.trimStart=function(Y){return Y.substring(D.htmlClean.trimStartIndex(Y))};D.htmlClean.trimStartIndex=function(Y){for(var Z=0;Z<Y.length-1&&D.htmlClean.isWhitespace(Y.charAt(Z));Z++){}return Z};D.htmlClean.trimEnd=function(Y){return Y.substring(0,D.htmlClean.trimEndIndex(Y))};D.htmlClean.trimEndIndex=function(Z){for(var Y=Z.length-1;Y>=0&&D.htmlClean.isWhitespace(Z.charAt(Y));Y--){}return Y+1};D.htmlClean.isWhitespace=function(Y){return D.inArray(Y,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 X=[[],"img",["alt"]];var U=[" "," ","\t","\n","\r","\f"]})(jQuery);
