JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-4.5.6_full
[ckeditor.git] / plugins / pastefromword / filter / default.js
index e9571b4..780b2cb 100644 (file)
@@ -1,10 +1,32 @@
-/*\r
-Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
-For licensing, see LICENSE.html or http://ckeditor.com/license\r
-*/\r
-\r
-(function(){var a=CKEDITOR.htmlParser.fragment.prototype,b=CKEDITOR.htmlParser.element.prototype;a.onlyChild=b.onlyChild=function(){var k=this.children,l=k.length,m=l==1&&k[0];return m||null;};b.removeAnyChildWithName=function(k){var l=this.children,m=[],n;for(var o=0;o<l.length;o++){n=l[o];if(!n.name)continue;if(n.name==k){m.push(n);l.splice(o--,1);}m=m.concat(n.removeAnyChildWithName(k));}return m;};b.getAncestor=function(k){var l=this.parent;while(l&&!(l.name&&l.name.match(k)))l=l.parent;return l;};a.firstChild=b.firstChild=function(k){var l;for(var m=0;m<this.children.length;m++){l=this.children[m];if(k(l))return l;else if(l.name){l=l.firstChild(k);if(l)return l;}}return null;};b.addStyle=function(k,l,m){var q=this;var n,o='';if(typeof l=='string')o+=k+':'+l+';';else{if(typeof k=='object')for(var p in k){if(k.hasOwnProperty(p))o+=p+':'+k[p]+';';}else o+=k;m=l;}if(!q.attributes)q.attributes={};n=q.attributes.style||'';n=(m?[o,n]:[n,o]).join(';');q.attributes.style=n.replace(/^;|;(?=;)/,'');};CKEDITOR.dtd.parentOf=function(k){var l={};for(var m in this){if(m.indexOf('$')==-1&&this[m][k])l[m]=1;}return l;};var c=/^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,d=/^(?:\b0[^\s]*\s*){1,4}$/,e='^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$',f=new RegExp(e),g=new RegExp(e.toUpperCase()),h=0,i;CKEDITOR.plugins.pastefromword={utils:{createListBulletMarker:function(k,l){var m=new CKEDITOR.htmlParser.element('cke:listbullet'),n;if(!k){k='decimal';n='ol';}else if(k[2]){if(!isNaN(k[1]))k='decimal';else if(f.test(k[1]))k='lower-roman';else if(g.test(k[1]))k='upper-roman';else if(/^[a-z]+$/.test(k[1]))k='lower-alpha';else if(/^[A-Z]+$/.test(k[1]))k='upper-alpha';else k='decimal';n='ol';}else{if(/[l\u00B7\u2002]/.test(k[1]))k='disc';else if(/[\u006F\u00D8]/.test(k[1]))k='circle';else if(/[\u006E\u25C6]/.test(k[1]))k='square';else k='disc';n='ul';}m.attributes={'cke:listtype':n,style:'list-style-type:'+k+';'};m.add(new CKEDITOR.htmlParser.text(l));return m;},isListBulletIndicator:function(k){var l=k.attributes&&k.attributes.style;if(/mso-list\s*:\s*Ignore/i.test(l))return true;},isContainingOnlySpaces:function(k){var l;return(l=k.onlyChild())&&/^(:?\s|&nbsp;)+$/.test(l.value);},resolveList:function(k){var l=k.attributes,m;if((m=k.removeAnyChildWithName('cke:listbullet'))&&m.length&&(m=m[0])){k.name='cke:li';if(l.style)l.style=CKEDITOR.plugins.pastefromword.filters.stylesFilter([['text-indent'],['line-height'],[/^margin(:?-left)?$/,null,function(p){var q=p.split(' ');\r
-p=CKEDITOR.plugins.pastefromword.utils.convertToPx(q[3]||q[1]||q[0]);p=parseInt(p,10);if(!h&&i&&p>i)h=p-i;l['cke:margin']=i=p;}]])(l.style,k)||'';var n=m.attributes,o=n.style;k.addStyle(o);CKEDITOR.tools.extend(l,n);return true;}return false;},convertToPx:(function(){var k=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(k);return function(l){if(c.test(l)){k.setStyle('width',l);return k.$.clientWidth+'px';}return l;};})(),getStyleComponents:(function(){var k=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(k);return function(l,m,n){k.setStyle(l,m);var o={},p=n.length;for(var q=0;q<p;q++)o[n[q]]=k.getStyle(n[q]);return o;};})(),listDtdParents:CKEDITOR.dtd.parentOf('ol')},filters:{flattenList:function(k){var l=k.attributes,m=k.parent,n,o=1;while(m){m.attributes&&m.attributes['cke:list']&&o++;m=m.parent;}switch(l.type){case 'a':n='lower-alpha';break;}var p=k.children,q;for(var r=0;r<p.length;r++){q=p[r];var s=q.attributes;if(q.name in CKEDITOR.dtd.$listItem){var t=q.children,u=t.length,v=t[u-1];if(v.name in CKEDITOR.dtd.$list){p.splice(r+1,0,v);v.parent=k;if(!--t.length)p.splice(r,1);}q.name='cke:li';s['cke:indent']=o;i=0;s['cke:listtype']=k.name;n&&q.addStyle('list-style-type',n,true);}}delete k.name;l['cke:list']=1;},assembleList:function(k){var l=k.children,m,n,o,p,q,r,s,t,u;for(var v=0;v<l.length;v++){m=l[v];if('cke:li'==m.name){m.name='li';n=m;o=n.attributes;p=n.attributes['cke:listtype'];q=parseInt(o['cke:indent'],10)||h&&Math.ceil(o['cke:margin']/h)||1;o.style&&(o.style=CKEDITOR.plugins.pastefromword.filters.stylesFilter([['list-style-type',p=='ol'?'decimal':'disc']])(o.style)||'');if(!s){s=new CKEDITOR.htmlParser.element(p);s.add(n);l[v]=s;}else{if(q>u){s=new CKEDITOR.htmlParser.element(p);s.add(n);r.add(s);}else if(q<u){var w=u-q,x;while(w--&&(x=s.parent))s=x.parent;s.add(n);}else s.add(n);l.splice(v--,1);}r=n;u=q;}else s=null;}h=0;},falsyFilter:function(k){return false;},stylesFilter:function(k,l){return function(m,n){var o=[];m.replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(q,r,s){r=r.toLowerCase();r=='font-family'&&(s=s.replace(/["']/g,''));var t,u,v,w;for(var x=0;x<k.length;x++){if(k[x]){t=k[x][0];u=k[x][1];v=k[x][2];w=k[x][3];if(r.match(t)&&(!u||s.match(u))){r=w||r;l&&(v=v||s);\r
-if(typeof v=='function')v=v(s,n,r);if(v&&v.push)r=v[0],v=v[1];if(typeof v=='string')o.push([r,v]);return;}}}!l&&o.push([r,s]);});for(var p=0;p<o.length;p++)o[p]=o[p].join(':');return o.length?o.join(';')+';':false;};},elementMigrateFilter:function(k,l){return function(m){var n=l?new CKEDITOR.style(k,l)._.definition:k;m.name=n.element;CKEDITOR.tools.extend(m.attributes,CKEDITOR.tools.clone(n.attributes));m.addStyle(CKEDITOR.style.getStyleText(n));};},styleMigrateFilter:function(k,l){var m=this.elementMigrateFilter;return function(n,o){var p=new CKEDITOR.htmlParser.element(null),q={};q[l]=n;m(k,q)(p);p.children=o.children;o.children=[p];};},bogusAttrFilter:function(k,l){if(l.name.indexOf('cke:')==-1)return false;},applyStyleFilter:null},getRules:function(k){var l=CKEDITOR.dtd,m=CKEDITOR.tools.extend({},l.$block,l.$listItem,l.$tableContent),n=k.config,o=this.filters,p=o.falsyFilter,q=o.stylesFilter,r=o.elementMigrateFilter,s=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),t=this.utils.createListBulletMarker,u=o.flattenList,v=o.assembleList,w=this.utils.isListBulletIndicator,x=this.utils.isContainingOnlySpaces,y=this.utils.resolveList,z=this.utils.convertToPx,A=this.utils.getStyleComponents,B=this.utils.listDtdParents,C=n.pasteFromWordRemoveFontStyles!==false,D=n.pasteFromWordRemoveStyles!==false;return{elementNames:[[/meta|link|script/,'']],root:function(E){E.filterChildren();v(E);},elements:{'^':function(E){var F;if(CKEDITOR.env.gecko&&(F=o.applyStyleFilter))F(E);},$:function(E){var F=E.name||'',G=E.attributes;if(F in m&&G.style)G.style=q([[/^(:?width|height)$/,null,z]])(G.style)||'';if(F.match(/h\d/)){E.filterChildren();if(y(E))return;r(n['format_'+F])(E);}else if(F in l.$inline){E.filterChildren();if(x(E))delete E.name;}else if(F.indexOf(':')!=-1&&F.indexOf('cke')==-1){E.filterChildren();if(F=='v:imagedata'){var H=E.attributes['o:href'];if(H)E.attributes.src=H;E.name='img';return;}delete E.name;}if(F in B){E.filterChildren();v(E);}},style:function(E){if(CKEDITOR.env.gecko){var F=E.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/),G=F&&F[1],H={};if(G){G.replace(/[\n\r]/g,'').replace(/(.+?)\{(.+?)\}/g,function(I,J,K){J=J.split(',');var L=J.length,M;for(var N=0;N<L;N++)CKEDITOR.tools.trim(J[N]).replace(/^(\w+)(\.[\w-]+)?$/g,function(O,P,Q){P=P||'*';Q=Q.substring(1,Q.length);if(Q.match(/MsoNormal/))return;if(!H[P])H[P]={};if(Q)H[P][Q]=K;else H[P]=K;});});o.applyStyleFilter=function(I){var J=H['*']?'*':I.name,K=I.attributes&&I.attributes['class'],L;\r
-if(J in H){L=H[J];if(typeof L=='object')L=L[K];L&&I.addStyle(L,true);}};}}return false;},p:function(E){E.filterChildren();if(y(E))return;if(n.enterMode==CKEDITOR.ENTER_BR){delete E.name;E.add(new CKEDITOR.htmlParser.element('br'));}else r(n['format_'+(n.enterMode==CKEDITOR.ENTER_P?'p':'div')])(E);},div:function(E){var F=E.onlyChild();if(F&&F.name=='table'){var G=E.attributes;F.attributes=CKEDITOR.tools.extend(F.attributes,G);G.style&&F.addStyle(G.style);var H=new CKEDITOR.htmlParser.element('div');H.addStyle('clear','both');E.add(H);delete E.name;}},td:function(E){if(E.getAncestor('thead'))E.name='th';},ol:u,ul:u,dl:u,font:function(E){if(!CKEDITOR.env.gecko&&w(E.parent)){delete E.name;return;}E.filterChildren();var F=E.attributes,G=F.style,H=E.parent;if('font'==H.name){CKEDITOR.tools.extend(H.attributes,E.attributes);G&&H.addStyle(G);delete E.name;}else{G=G||'';if(F.color){F.color!='#000000'&&(G+='color:'+F.color+';');delete F.color;}if(F.face){G+='font-family:'+F.face+';';delete F.face;}if(F.size){G+='font-size:'+(F.size>3?'large':F.size<3?'small':'medium')+';';delete F.size;}E.name='span';E.addStyle(G);}},span:function(E){if(!CKEDITOR.env.gecko&&w(E.parent))return false;E.filterChildren();if(x(E)){delete E.name;return null;}if(!CKEDITOR.env.gecko&&w(E)){var F=E.firstChild(function(M){return M.value||M.name=='img';}),G=F&&(F.value||'l.'),H=G.match(/^([^\s]+?)([.)]?)$/);return t(H,G);}var I=E.children,J=E.attributes,K=J&&J.style,L=I&&I[0];if(K)J.style=q([['line-height'],[/^font-family$/,null,!C?s(n.font_style,'family'):null],[/^font-size$/,null,!C?s(n.fontSize_style,'size'):null],[/^color$/,null,!C?s(n.colorButton_foreStyle,'color'):null],[/^background-color$/,null,!C?s(n.colorButton_backStyle,'color'):null]])(K,E)||'';return null;},b:r(n.coreStyles_bold),i:r(n.coreStyles_italic),u:r(n.coreStyles_underline),s:r(n.coreStyles_strike),sup:r(n.coreStyles_superscript),sub:r(n.coreStyles_subscript),a:function(E){var F=E.attributes;if(F&&!F.href&&F.name)delete E.name;},'cke:listbullet':function(E){if(E.getAncestor(/h\d/)&&!n.pasteFromWordNumberedHeadingToList)delete E.name;}},attributeNames:[[/^onmouse(:?out|over)/,''],[/^onload$/,''],[/(?:v|o):\w+/,''],[/^lang/,'']],attributes:{style:q(D?[[/^margin$|^margin-(?!bottom|top)/,null,function(E,F,G){if(F.name in {p:1,div:1}){var H=n.contentsLangDirection=='ltr'?'margin-left':'margin-right';if(G=='margin')E=A(G,E,[H])[H];else if(G!=H)return null;if(E&&!d.test(E))return[H,E];}return null;}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(E,F){if(F.name=='img')return E;\r
-}],[/^width|height$/,null,function(E,F){if(F.name in {table:1,td:1,th:1,img:1})return E;}]]:[[/^mso-/],[/-color$/,null,function(E){if(E=='transparent')return false;if(CKEDITOR.env.gecko)return E.replace(/-moz-use-text-color/g,'transparent');}],[/^margin$/,d],['text-indent','0cm'],['page-break-before'],['tab-stops'],['display','none'],C?[/font-?/]:null],D),width:function(E,F){if(F.name in l.$tableContent)return false;},border:function(E,F){if(F.name in l.$tableContent)return false;},'class':p,bgcolor:p,valign:D?p:function(E,F){F.addStyle('vertical-align',E);return false;}},comment:!CKEDITOR.env.ie?function(E,F){var G=E.match(/<img.*?>/),H=E.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);if(H){var I=H[1]||G&&'l.',J=I&&I.match(/>([^\s]+?)([.)]?)</);return t(J,I);}if(CKEDITOR.env.gecko&&G){var K=CKEDITOR.htmlParser.fragment.fromHtml(G[0]).children[0],L=F.previous,M=L&&L.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/),N=M&&M[1];N&&(K.attributes.src=N);return K;}return false;}:p};}};var j=function(){this.dataFilter=new CKEDITOR.htmlParser.filter();};j.prototype={toHtml:function(k){var l=CKEDITOR.htmlParser.fragment.fromHtml(k,false),m=new CKEDITOR.htmlParser.basicWriter();l.writeHtml(m,this.dataFilter);return m.getHtml(true);}};CKEDITOR.cleanWord=function(k,l){if(CKEDITOR.env.gecko)k=k.replace(/(<!--\[if[^<]*?\])-->([\S\s]*?)<!--(\[endif\]-->)/gi,'$1$2$3');var m=new j(),n=m.dataFilter;n.addRules(CKEDITOR.plugins.pastefromword.getRules(l));l.fire('beforeCleanWord',{filter:n});try{k=m.toHtml(k,false);}catch(o){alert(l.lang.pastefromword.error);}k=k.replace(/cke:.*?".*?"/g,'');k=k.replace(/style=""/g,'');k=k.replace(/<span>/g,'');return k;};})();\r
+/*
+ Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ For licensing, see LICENSE.md or http://ckeditor.com/license
+*/
+(function(){function C(a){a=a.toUpperCase();for(var c=D.length,b=0,f=0;f<c;++f)for(var d=D[f],e=d[1].length;a.substr(0,e)==d[1];a=a.substr(e))b+=d[0];return b}function E(a){a=a.toUpperCase();for(var c=1,b=1;0<a.length;b*=26)c+="ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(a.charAt(a.length-1))*b,a=a.substr(0,a.length-1);return c}var F=CKEDITOR.htmlParser.fragment.prototype,r=CKEDITOR.htmlParser.element.prototype;F.onlyChild=r.onlyChild=function(){var a=this.children;return 1==a.length&&a[0]||null};r.removeAnyChildWithName=
+function(a){for(var c=this.children,b=[],f,d=0;d<c.length;d++)f=c[d],f.name&&(f.name==a&&(b.push(f),c.splice(d--,1)),b=b.concat(f.removeAnyChildWithName(a)));return b};r.getAncestor=function(a){for(var c=this.parent;c&&(!c.name||!c.name.match(a));)c=c.parent;return c};F.firstChild=r.firstChild=function(a){for(var c,b=0;b<this.children.length;b++)if(c=this.children[b],a(c)||c.name&&(c=c.firstChild(a)))return c;return null};r.addStyle=function(a,c,b){var f="";if("string"==typeof c)f+=a+":"+c+";";else{if("object"==
+typeof a)for(var d in a)a.hasOwnProperty(d)&&(f+=d+":"+a[d]+";");else f+=a;b=c}this.attributes||(this.attributes={});a=this.attributes.style||"";a=(b?[f,a]:[a,f]).join(";");this.attributes.style=a.replace(/^;+|;(?=;)/g,"")};r.getStyle=function(a){var c=this.attributes.style;if(c)return c=CKEDITOR.tools.parseCssText(c,1),c[a]};CKEDITOR.dtd.parentOf=function(a){var c={},b;for(b in this)-1==b.indexOf("$")&&this[b][a]&&(c[b]=1);return c};var G=/^(?:\b0[^\s]*\s*){1,4}$/,B={ol:{decimal:/\d+/,"lower-roman":/^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/,
+"upper-roman":/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"lower-alpha":/^[a-z]+$/,"upper-alpha":/^[A-Z]+$/},ul:{disc:/[l\u00B7\u2002]/,circle:/[\u006F\u00D8]/,square:/[\u006E\u25C6]/}},D=[[1E3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]],w=0,x=null,A,H=CKEDITOR.plugins.pastefromword={utils:{createListBulletMarker:function(a,c){var b=new CKEDITOR.htmlParser.element("cke:listbullet");b.attributes={"cke:listsymbol":a[0]};
+b.add(new CKEDITOR.htmlParser.text(c));return b},isListBulletIndicator:function(a){if(/mso-list\s*:\s*Ignore/i.test(a.attributes&&a.attributes.style))return!0},isContainingOnlySpaces:function(a){var c;return(c=a.onlyChild())&&/^(:?\s|&nbsp;)+$/.test(c.value)},resolveList:function(a){var c=a.attributes,b;if((b=a.removeAnyChildWithName("cke:listbullet"))&&b.length&&(b=b[0]))return a.name="cke:li",c.style&&(c.style=H.filters.stylesFilter([["text-indent"],["line-height"],[/^margin(:?-left)?$/,null,function(a){a=
+a.split(" ");a=CKEDITOR.tools.convertToPx(a[3]||a[1]||a[0]);!w&&null!==x&&a>x&&(w=a-x);x=a;c["cke:indent"]=w&&Math.ceil(a/w)+1||1}],[/^mso-list$/,null,function(a){a=a.split(" ");if(!(2>a.length)){var b=Number(a[0].match(/\d+/));a=Number(a[1].match(/\d+/));1==a&&(b!==A&&(c["cke:reset"]=1),A=b);c["cke:indent"]=a}}]])(c.style,a)||""),c["cke:indent"]||(x=0,c["cke:indent"]=1),CKEDITOR.tools.extend(c,b.attributes),!0;A=x=w=null;return!1},getStyleComponents:function(){var a=CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;"\x3e\x3c/div\x3e',
+CKEDITOR.document);CKEDITOR.document.getBody().append(a);return function(c,b,f){a.setStyle(c,b);c={};b=f.length;for(var d=0;d<b;d++)c[f[d]]=a.getStyle(f[d]);return c}}(),listDtdParents:CKEDITOR.dtd.parentOf("ol")},filters:{flattenList:function(a,c){c="number"==typeof c?c:1;var b=a.attributes,f;switch(b.type){case "a":f="lower-alpha";break;case "1":f="decimal"}for(var d=a.children,e,k=0;k<d.length;k++)if(e=d[k],e.name in CKEDITOR.dtd.$listItem){var l=e.attributes,g=e.children,n=g[0],h=g[g.length-1];
+n.attributes&&n.attributes.style&&-1<n.attributes.style.indexOf("mso-list")&&(e.attributes.style=n.attributes.style,n.replaceWithChildren());h.name in CKEDITOR.dtd.$list&&(a.add(h,k+1),--g.length||d.splice(k--,1));e.name="cke:li";b.start&&!k&&(l.value=b.start);H.filters.stylesFilter([["tab-stops",null,function(a){(a=a.match(/0$|\d+\.?\d*\w+/))&&(x=CKEDITOR.tools.convertToPx(a[0]))}],1==c?["mso-list",null,function(a){a=a.split(" ");a=Number(a[0].match(/\d+/));a!==A&&(l["cke:reset"]=1);A=a}]:null])(l.style);
+l["cke:indent"]=c;l["cke:listtype"]=a.name;l["cke:list-style-type"]=f}else if(e.name in CKEDITOR.dtd.$list){arguments.callee.apply(this,[e,c+1]);d=d.slice(0,k).concat(e.children).concat(d.slice(k+1));a.children=[];e=0;for(g=d.length;e<g;e++)a.add(d[e]);d=a.children}delete a.name;b["cke:list"]=1},assembleList:function(a){var c=a.children,b,f,d,e,k,l;a=[];for(var g,n,h,p,m,t,q=0;q<c.length;q++)if(b=c[q],"cke:li"==b.name)if(b.name="li",f=b.attributes,h=(h=f["cke:listsymbol"])&&h.match(/^(?:[(]?)([^\s]+?)([.)]?)$/),
+p=m=t=null,f["cke:ignored"])c.splice(q--,1);else{f["cke:reset"]&&(l=e=k=null);d=Number(f["cke:indent"]);d!=e&&(n=g=null);if(h){if(n&&B[n][g].test(h[1]))p=n,m=g;else for(var u in B)for(var y in B[u])if(B[u][y].test(h[1]))if("ol"==u&&/alpha|roman/.test(y)){if(g=/roman/.test(y)?C(h[1]):E(h[1]),!t||g<t)t=g,p=u,m=y}else{p=u;m=y;break}!p&&(p=h[2]?"ol":"ul")}else p=f["cke:listtype"]||"ol",m=f["cke:list-style-type"];n=p;g=m||("ol"==p?"decimal":"disc");m&&m!=("ol"==p?"decimal":"disc")&&b.addStyle("list-style-type",
+m);if("ol"==p&&h){switch(m){case "decimal":t=Number(h[1]);break;case "lower-roman":case "upper-roman":t=C(h[1]);break;case "lower-alpha":case "upper-alpha":t=E(h[1])}b.attributes.value=t}if(l){if(d>e)a.push(l=new CKEDITOR.htmlParser.element(p)),l.add(b),k.add(l);else{if(d<e){e-=d;for(var v;e--&&(v=l.parent);)l=v.parent}l.add(b)}c.splice(q--,1)}else a.push(l=new CKEDITOR.htmlParser.element(p)),l.add(b),c[q]=l;k=b;e=d}else l&&(l=e=k=null);for(q=0;q<a.length;q++)if(l=a[q],u=l.children,g=g=void 0,y=l.children.length,
+v=g=void 0,c=/list-style-type:(.*?)(?:;|$)/,e=CKEDITOR.plugins.pastefromword.filters.stylesFilter,g=l.attributes,!c.exec(g.style)){for(k=0;k<y;k++)if(g=u[k],g.attributes.value&&Number(g.attributes.value)==k+1&&delete g.attributes.value,g=c.exec(g.attributes.style))if(g[1]!=v&&v){v=null;break}else v=g[1];if(v){for(k=0;k<y;k++)g=u[k].attributes,g.style&&(g.style=e([["list-style-type"]])(g.style)||"");l.addStyle("list-style-type",v)}}A=x=w=null},falsyFilter:function(){return!1},stylesFilter:function(a,
+c){return function(b,f){var d=[];(b||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(b,e,g){e=e.toLowerCase();"font-family"==e&&(g=g.replace(/["']/g,""));for(var n,h,p,m=0;m<a.length;m++)if(a[m]&&(b=a[m][0],n=a[m][1],h=a[m][2],p=a[m][3],e.match(b)&&(!n||g.match(n)))){e=p||e;c&&(h=h||g);"function"==typeof h&&(h=h(g,f,e));h&&h.push&&(e=h[0],h=h[1]);"string"==typeof h&&d.push([e,h]);return}!c&&d.push([e,g])});for(var e=0;e<d.length;e++)d[e]=d[e].join(":");return d.length?
+d.join(";")+";":!1}},elementMigrateFilter:function(a,c){return a?function(b){var f=c?(new CKEDITOR.style(a,c))._.definition:a;b.name=f.element;CKEDITOR.tools.extend(b.attributes,CKEDITOR.tools.clone(f.attributes));b.addStyle(CKEDITOR.style.getStyleText(f));f.attributes&&f.attributes["class"]&&(b.classWhiteList=" "+f.attributes["class"]+" ")}:function(){}},styleMigrateFilter:function(a,c){var b=this.elementMigrateFilter;return a?function(f,d){var e=new CKEDITOR.htmlParser.element(null),k={};k[c]=f;
+b(a,k)(e);e.children=d.children;d.children=[e];e.filter=function(){};e.parent=d}:function(){}},bogusAttrFilter:function(a,c){if(-1==c.name.indexOf("cke:"))return!1},applyStyleFilter:null},getRules:function(a,c){var b=CKEDITOR.dtd,f=CKEDITOR.tools.extend({},b.$block,b.$listItem,b.$tableContent),d=a.config,e=this.filters,k=e.falsyFilter,l=e.stylesFilter,g=e.elementMigrateFilter,n=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),h=this.utils.createListBulletMarker,p=e.flattenList,m=
+e.assembleList,t=this.utils.isListBulletIndicator,q=this.utils.isContainingOnlySpaces,u=this.utils.resolveList,y=function(a){a=CKEDITOR.tools.convertToPx(a);return isNaN(a)?a:a+"px"},v=this.utils.getStyleComponents,x=this.utils.listDtdParents,r=!1!==d.pasteFromWordRemoveFontStyles,w=!1!==d.pasteFromWordRemoveStyles;return{elementNames:[[/meta|link|script/,""]],root:function(a){a.filterChildren(c);m(a)},elements:{"^":function(a){var c;CKEDITOR.env.gecko&&(c=e.applyStyleFilter)&&c(a)},$:function(a){var z=
+a.name||"",e=a.attributes;z in f&&e.style&&(e.style=l([[/^(:?width|height)$/,null,y]])(e.style)||"");if(z.match(/h\d/)){a.filterChildren(c);if(u(a))return;g(d["format_"+z])(a)}else if(z in b.$inline)a.filterChildren(c),q(a)&&delete a.name;else if(-1!=z.indexOf(":")&&-1==z.indexOf("cke")){a.filterChildren(c);if("v:imagedata"==z){if(z=a.attributes["o:href"])a.attributes.src=z;a.name="img";return}delete a.name}z in x&&(a.filterChildren(c),m(a))},style:function(a){if(CKEDITOR.env.gecko){a=(a=a.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/))&&
+a[1];var c={};a&&(a.replace(/[\n\r]/g,"").replace(/(.+?)\{(.+?)\}/g,function(a,b,I){b=b.split(",");a=b.length;for(var d=0;d<a;d++)CKEDITOR.tools.trim(b[d]).replace(/^(\w+)(\.[\w-]+)?$/g,function(a,b,d){b=b||"*";d=d.substring(1,d.length);d.match(/MsoNormal/)||(c[b]||(c[b]={}),d?c[b][d]=I:c[b]=I)})}),e.applyStyleFilter=function(a){var b=c["*"]?"*":a.name,d=a.attributes&&a.attributes["class"];b in c&&(b=c[b],"object"==typeof b&&(b=b[d]),b&&a.addStyle(b,!0))})}return!1},p:function(a){if(/MsoListParagraph/i.exec(a.attributes["class"])||
+a.getStyle("mso-list")&&!a.getStyle("mso-list").match(/^(none|skip)$/i)){var b=a.firstChild(function(a){return a.type==CKEDITOR.NODE_TEXT&&!q(a.parent)});(b=b&&b.parent)&&b.addStyle("mso-list","Ignore")}a.filterChildren(c);u(a)||(d.enterMode==CKEDITOR.ENTER_BR?(delete a.name,a.add(new CKEDITOR.htmlParser.element("br"))):g(d["format_"+(d.enterMode==CKEDITOR.ENTER_P?"p":"div")])(a))},div:function(a){var c=a.onlyChild();if(c&&"table"==c.name){var b=a.attributes;c.attributes=CKEDITOR.tools.extend(c.attributes,
+b);b.style&&c.addStyle(b.style);c=new CKEDITOR.htmlParser.element("div");c.addStyle("clear","both");a.add(c);delete a.name}},td:function(a){a.getAncestor("thead")&&(a.name="th")},ol:p,ul:p,dl:p,font:function(a){if(t(a.parent))delete a.name;else{a.filterChildren(c);var b=a.attributes,d=b.style,e=a.parent;"font"==e.name?(CKEDITOR.tools.extend(e.attributes,a.attributes),d&&e.addStyle(d),delete a.name):(d=(d||"").split(";"),b.color&&("#000000"!=b.color&&d.push("color:"+b.color),delete b.color),b.face&&
+(d.push("font-family:"+b.face),delete b.face),b.size&&(d.push("font-size:"+(3<b.size?"large":3>b.size?"small":"medium")),delete b.size),a.name="span",a.addStyle(d.join(";")))}},span:function(a){if(t(a.parent))return!1;a.filterChildren(c);if(q(a))return delete a.name,null;if(t(a)){var b=a.firstChild(function(a){return a.value||"img"==a.name}),e=(b=b&&(b.value||"l."))&&b.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);if(e)return b=h(e,b),(a=a.getAncestor("span"))&&/ mso-hide:\s*all|display:\s*none /.test(a.attributes.style)&&
+(b.attributes["cke:ignored"]=1),b}if(e=(b=a.attributes)&&b.style)b.style=l([["line-height"],[/^font-family$/,null,r?null:n(d.font_style,"family")],[/^font-size$/,null,r?null:n(d.fontSize_style,"size")],[/^color$/,null,r?null:n(d.colorButton_foreStyle,"color")],[/^background-color$/,null,r?null:n(d.colorButton_backStyle,"color")]])(e,a)||"";b.style||delete b.style;CKEDITOR.tools.isEmpty(b)&&delete a.name;return null},b:g(d.coreStyles_bold),i:g(d.coreStyles_italic),u:g(d.coreStyles_underline),s:g(d.coreStyles_strike),
+sup:g(d.coreStyles_superscript),sub:g(d.coreStyles_subscript),a:function(a){var b=a.attributes;b.name&&b.name.match(/ole_link\d+/i)?delete a.name:b.href&&b.href.match(/^file:\/\/\/[\S]+#/i)&&(b.href=b.href.replace(/^file:\/\/\/[^#]+/i,""))},"cke:listbullet":function(a){a.getAncestor(/h\d/)&&!d.pasteFromWordNumberedHeadingToList&&delete a.name}},attributeNames:[[/^onmouse(:?out|over)/,""],[/^onload$/,""],[/(?:v|o):\w+/,""],[/^lang/,""]],attributes:{style:l(w?[[/^list-style-type$/,null],[/^margin$|^margin-(?!bottom|top)/,
+null,function(a,b,c){if(b.name in{p:1,div:1}){b="ltr"==d.contentsLangDirection?"margin-left":"margin-right";if("margin"==c)a=v(c,a,[b])[b];else if(c!=b)return null;if(a&&!G.test(a))return[b,a]}return null}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(a,b){if("img"==b.name)return a}],[/^width|height$/,null,function(a,b){if(b.name in{table:1,td:1,th:1,img:1})return a}]]:[[/^mso-/],[/-color$/,null,function(a){if("transparent"==a)return!1;if(CKEDITOR.env.gecko)return a.replace(/-moz-use-text-color/g,
+"transparent")}],[/^margin$/,G],["text-indent","0cm"],["page-break-before"],["tab-stops"],["display","none"],r?[/font-?/]:null],w),width:function(a,c){if(c.name in b.$tableContent)return!1},border:function(a,c){if(c.name in b.$tableContent)return!1},"class":function(a,b){return b.classWhiteList&&-1!=b.classWhiteList.indexOf(" "+a+" ")?a:!1},bgcolor:k,valign:w?k:function(a,b){b.addStyle("vertical-align",a);return!1}},comment:CKEDITOR.env.ie?k:function(a,b){var c=a.match(/<img.*?>/),d=a.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);
+return d?(d=(c=d[1]||c&&"l.")&&c.match(/>(?:[(]?)([^\s]+?)([.)]?)</),h(d,c)):CKEDITOR.env.gecko&&c?(c=CKEDITOR.htmlParser.fragment.fromHtml(c[0]).children[0],(d=(d=(d=b.previous)&&d.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/))&&d[1])&&(c.attributes.src=d),c):!1}}}},J=function(){this.dataFilter=new CKEDITOR.htmlParser.filter};J.prototype={toHtml:function(a){a=CKEDITOR.htmlParser.fragment.fromHtml(a);var c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,this.dataFilter);return c.getHtml(!0)}};
+CKEDITOR.cleanWord=function(a,c){a=a.replace(/<!\[([^\]]*?)\]>/g,"\x3c!--[$1]--\x3e");CKEDITOR.env.gecko&&(a=a.replace(/(\x3c!--\[if[^<]*?\])--\x3e([\S\s]*?)\x3c!--(\[endif\]--\x3e)/gi,"$1$2$3"));CKEDITOR.env.webkit&&(a=a.replace(/(class="MsoListParagraph[^>]+>\x3c!--\[if !supportLists\]--\x3e)([^<]+<span[^<]+<\/span>)(\x3c!--\[endif\]--\x3e)/gi,"$1\x3cspan\x3e$2\x3c/span\x3e$3"));var b=new J,f=b.dataFilter;f.addRules(CKEDITOR.plugins.pastefromword.getRules(c,f));c.fire("beforeCleanWord",{filter:f});
+try{a=b.toHtml(a)}catch(d){c.showNotification(c.lang.pastefromword.error)}a=a.replace(/cke:.*?".*?"/g,"");a=a.replace(/style=""/g,"");return a=a.replace(/<span>/g,"")}})();
\ No newline at end of file