
﻿
(function(){var List,Style,Heuristics,filter,tools=CKEDITOR.tools,invalidTags=['o:p','xml','script','meta','link'],shapeTags=['v:arc','v:curve','v:line','v:oval','v:polyline','v:rect','v:roundrect','v:group'],links={},inComment=0;CKEDITOR.plugins.pastefromword={};CKEDITOR.cleanWord=function(mswordHtml,editor){var msoListsDetected=Boolean(mswordHtml.match(/mso-list:\s*l\d+\s+level\d+\s+lfo\d+/)),shapesIds=[];function shapeTagging(element){if(element.attributes['o:gfxdata']||element.parent.name==='v:group'){shapesIds.push(element.attributes.id);}}
if(CKEDITOR.plugins.clipboard.isCustomDataTypesSupported){mswordHtml=CKEDITOR.plugins.pastefromword.styles.inliner.inline(mswordHtml).getBody().getHtml();}
mswordHtml=mswordHtml.replace(/<!\[/g,'<!--[').replace(/\]>/g,']-->');var fragment=CKEDITOR.htmlParser.fragment.fromHtml(mswordHtml);var filterDefinition={root:function(element){element.filterChildren(filter);CKEDITOR.plugins.pastefromword.lists.cleanup(List.createLists(element));},elementNames:[[(/^\?xml:namespace$/),''],[/^v:shapetype/,''],[new RegExp(invalidTags.join('|')),'']],elements:{'a':function(element){if(element.attributes.name){if(element.attributes.name=='_GoBack'){delete element.name;return;}
if(element.attributes.name.match(/^OLE_LINK\d+$/)){delete element.name;return;}}
if(element.attributes.href&&element.attributes.href.match(/#.+$/)){var name=element.attributes.href.match(/#(.+)$/)[1];links[name]=element;}
if(element.attributes.name&&links[element.attributes.name]){var link=links[element.attributes.name];link.attributes.href=link.attributes.href.replace(/.*#(.*)$/,'#$1');}},'div':function(element){Style.createStyleStack(element,filter,editor);},'img':function(element){var attributeStyleMap={width:function(value){Style.setStyle(element,'width',value+'px');},height:function(value){Style.setStyle(element,'height',value+'px');}};if(element.parent&&element.parent.attributes){var attrs=element.parent.attributes,style=attrs.style||attrs.STYLE;if(style&&style.match(/mso\-list:\s?Ignore/)){element.attributes['cke-ignored']=true;}}
Style.mapStyles(element,attributeStyleMap);if(element.attributes.src&&element.attributes.src.match(/^file:\/\//)&&element.attributes.alt&&element.attributes.alt.match(/^https?:\/\//)){element.attributes.src=element.attributes.alt;}
var imgShapesIds=element.attributes['v:shapes']?element.attributes['v:shapes'].split(' '):[];var isShapeFromList=CKEDITOR.tools.array.every(imgShapesIds,function(shapeId){return shapesIds.indexOf(shapeId)>-1;});if(imgShapesIds.length&&isShapeFromList){return false;}},'p':function(element){element.filterChildren(filter);if(element.attributes.style&&element.attributes.style.match(/display:\s*none/i)){return false;}
if(List.thisIsAListItem(editor,element)){if(Heuristics.isEdgeListItem(editor,element)){Heuristics.cleanupEdgeListItem(element);}
List.convertToFakeListItem(editor,element);tools.array.reduce(element.children,function(paragraphsReplaced,node){if(node.name==='p'){if(paragraphsReplaced>0){var br=new CKEDITOR.htmlParser.element('br');br.insertBefore(node);}
node.replaceWithChildren();paragraphsReplaced+=1;}
return paragraphsReplaced;},0);}else{var container=element.getAscendant(function(element){return element.name=='ul'||element.name=='ol';}),style=tools.parseCssText(element.attributes.style);if(container&&!container.attributes['cke-list-level']&&style['mso-list']&&style['mso-list'].match(/level/)){container.attributes['cke-list-level']=style['mso-list'].match(/level(\d+)/)[1];}
if(editor.config.enterMode==CKEDITOR.ENTER_BR){delete element.name;element.add(new CKEDITOR.htmlParser.element('br'));}}
Style.createStyleStack(element,filter,editor);},'pre':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h1':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h2':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h3':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h4':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h5':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'h6':function(element){if(List.thisIsAListItem(editor,element))List.convertToFakeListItem(editor,element);Style.createStyleStack(element,filter,editor);},'font':function(element){if(element.getHtml().match(/^\s*$/)){new CKEDITOR.htmlParser.text(' ').insertAfter(element);return false;}
if(editor&&editor.config.pasteFromWordRemoveFontStyles===true&&element.attributes.size){delete element.attributes.size;}
if(CKEDITOR.dtd.tr[element.parent.name]&&CKEDITOR.tools.arrayCompare(CKEDITOR.tools.objectKeys(element.attributes),['class','style'])){Style.createStyleStack(element,filter,editor);}else{createAttributeStack(element,filter);}},'ul':function(element){if(!msoListsDetected){return;}
if(element.parent.name=='li'&&tools.indexOf(element.parent.children,element)===0){Style.setStyle(element.parent,'list-style-type','none');}
List.dissolveList(element);return false;},'li':function(element){Heuristics.correctLevelShift(element);if(!msoListsDetected){return;}
element.attributes.style=Style.normalizedStyles(element,editor);Style.pushStylesLower(element);},'ol':function(element){if(!msoListsDetected){return;}
if(element.parent.name=='li'&&tools.indexOf(element.parent.children,element)===0){Style.setStyle(element.parent,'list-style-type','none');}
List.dissolveList(element);return false;},'span':function(element){element.filterChildren(filter);element.attributes.style=Style.normalizedStyles(element,editor);if(!element.attributes.style||element.attributes.style.match(/^mso\-bookmark:OLE_LINK\d+$/)||element.getHtml().match(/^(\s|&nbsp;)+$/)){for(var i=element.children.length-1;i>=0;i--){element.children[i].insertAfter(element);}
return false;}
if(element.attributes.style.match(/FONT-FAMILY:\s*Symbol/i)){element.forEach(function(node){node.value=node.value.replace(/&nbsp;/g,'');},CKEDITOR.NODE_TEXT,true);}
Style.createStyleStack(element,filter,editor);},'table':function(element){element._tdBorders={};element.filterChildren(filter);var borderStyle,occurences=0;for(var border in element._tdBorders){if(element._tdBorders[border]>occurences){occurences=element._tdBorders[border];borderStyle=border;}}
Style.setStyle(element,'border',borderStyle);var parent=element.parent,root=parent&&parent.parent,parentChildren,i;if(parent.name&&parent.name==='div'&&parent.attributes.align&&tools.objectKeys(parent.attributes).length===1&&parent.children.length===1){element.attributes.align=parent.attributes.align;parentChildren=parent.children.splice(0);element.remove();for(i=parentChildren.length-1;i>=0;i--){root.add(parentChildren[i],parent.getIndex());}
parent.remove();}},'td':function(element){var ascendant=element.getAscendant('table'),tdBorders=ascendant._tdBorders,borderStyles=['border','border-top','border-right','border-bottom','border-left'],ascendantStyle=tools.parseCssText(ascendant.attributes.style);var background=ascendantStyle.background||ascendantStyle.BACKGROUND;if(background){Style.setStyle(element,'background',background,true);}
var backgroundColor=ascendantStyle['background-color']||ascendantStyle['BACKGROUND-COLOR'];if(backgroundColor){Style.setStyle(element,'background-color',backgroundColor,true);}
var styles=tools.parseCssText(element.attributes.style);for(var style in styles){var temp=styles[style];delete styles[style];styles[style.toLowerCase()]=temp;}
for(var i=0;i<borderStyles.length;i++){if(styles[borderStyles[i]]){var key=styles[borderStyles[i]];tdBorders[key]=tdBorders[key]?tdBorders[key]+1:1;}}
Style.createStyleStack(element,filter,editor,/margin|text\-align|padding|list\-style\-type|width|height|border|white\-space|vertical\-align|background/i);},'v:imagedata':remove,'v:shape':function(element){var duplicate=false,child=element.getFirst('v:imagedata');if(child===null){shapeTagging(element);return;}
element.parent.find(function(child){if(child.name=='img'&&child.attributes&&child.attributes['v:shapes']==element.attributes.id){duplicate=true;}},true);if(duplicate){return false;}else{var src='';if(element.parent.name==='v:group'){shapeTagging(element);return;}
element.forEach(function(child){if(child.attributes&&child.attributes.src){src=child.attributes.src;}},CKEDITOR.NODE_ELEMENT,true);element.filterChildren(filter);element.name='img';element.attributes.src=element.attributes.src||src;delete element.attributes.type;}
return;},'style':function(){return false;},'object':function(element){return!!(element.attributes&&element.attributes.data);}},attributes:{'style':function(styles,element){return Style.normalizedStyles(element,editor)||false;},'class':function(classes){return falseIfEmpty(classes.replace(/(el\d+)|(font\d+)|msonormal|msolistparagraph\w*/ig,''));},'cellspacing':remove,'cellpadding':remove,'border':remove,'v:shapes':remove,'o:spid':remove},comment:function(element){if(element.match(/\[if.* supportFields.*\]/)){inComment++;}
if(element=='[endif]'){inComment=inComment>0?inComment-1:0;}
return false;},text:function(content,node){if(inComment){return'';}
var grandparent=node.parent&&node.parent.parent;if(grandparent&&grandparent.attributes&&grandparent.attributes.style&&grandparent.attributes.style.match(/mso-list:\s*ignore/i)){return content.replace(/&nbsp;/g,' ');}
return content;}};CKEDITOR.tools.array.forEach(shapeTags,function(shapeTag){filterDefinition.elements[shapeTag]=shapeTagging;});filter=new CKEDITOR.htmlParser.filter(filterDefinition);var writer=new CKEDITOR.htmlParser.basicWriter();filter.applyTo(fragment);fragment.writeHtml(writer);return writer.getHtml();};CKEDITOR.plugins.pastefromword.styles={setStyle:function(element,key,value,dontOverwrite){var styles=tools.parseCssText(element.attributes.style);if(dontOverwrite&&styles[key]){return;}
if(value===''){delete styles[key];}else{styles[key]=value;}
element.attributes.style=CKEDITOR.tools.writeCssText(styles);},mapStyles:function(element,attributeStyleMap){for(var attribute in attributeStyleMap){if(element.attributes[attribute]){if(typeof attributeStyleMap[attribute]==='function'){attributeStyleMap[attribute](element.attributes[attribute]);}else{Style.setStyle(element,attributeStyleMap[attribute],element.attributes[attribute]);}
delete element.attributes[attribute];}}},normalizedStyles:function(element,editor){var resetStyles=['background-color:transparent','border-image:none','color:windowtext','direction:ltr','mso-','text-indent','visibility:visible','div:border:none'],textStyles=['font-family','font','font-size','color','background-color','line-height','text-decoration'],matchStyle=function(){var keys=[];for(var i=0;i<arguments.length;i++){if(arguments[i]){keys.push(arguments[i]);}}
return tools.indexOf(resetStyles,keys.join(':'))!==-1;},removeFontStyles=editor&&editor.config.pasteFromWordRemoveFontStyles===true;var styles=tools.parseCssText(element.attributes.style);if(element.name=='cke:li'){if(styles['TEXT-INDENT']&&styles.MARGIN){element.attributes['cke-indentation']=List.getElementIndentation(element);styles.MARGIN=styles.MARGIN.replace(/(([\w\.]+ ){3,3})[\d\.]+(\w+$)/,'$10$3');}}
var keys=tools.objectKeys(styles);for(var i=0;i<keys.length;i++){var styleName=keys[i].toLowerCase(),styleValue=styles[keys[i]],indexOf=CKEDITOR.tools.indexOf,toBeRemoved=removeFontStyles&&indexOf(textStyles,styleName.toLowerCase())!==-1;if(toBeRemoved||matchStyle(null,styleName,styleValue)||matchStyle(null,styleName.replace(/\-.*$/,'-'))||matchStyle(null,styleName)||matchStyle(element.name,styleName,styleValue)||matchStyle(element.name,styleName.replace(/\-.*$/,'-'))||matchStyle(element.name,styleName)||matchStyle(styleValue)){delete styles[keys[i]];}}
return CKEDITOR.tools.writeCssText(styles);},createStyleStack:function(element,filter,editor,skipStyles){var children=[],i;element.filterChildren(filter);for(i=element.children.length-1;i>=0;i--){children.unshift(element.children[i]);element.children[i].remove();}
Style.sortStyles(element);var styles=tools.parseCssText(Style.normalizedStyles(element,editor)),innermostElement=element,styleTopmost=element.name==='span';for(var style in styles){if(style.match(skipStyles||/margin|text\-align|width|border|padding/i)){continue;}
if(styleTopmost){styleTopmost=false;continue;}
var newElement=new CKEDITOR.htmlParser.element('span');newElement.attributes.style=style+':'+styles[style];innermostElement.add(newElement);innermostElement=newElement;delete styles[style];}
if(!CKEDITOR.tools.isEmpty(styles)){element.attributes.style=CKEDITOR.tools.writeCssText(styles);}else{delete element.attributes.style;}
for(i=0;i<children.length;i++){innermostElement.add(children[i]);}},sortStyles:function(element){var orderedStyles=['border','border-bottom','font-size','background'],style=tools.parseCssText(element.attributes.style),keys=tools.objectKeys(style),sortedKeys=[],nonSortedKeys=[];for(var i=0;i<keys.length;i++){if(tools.indexOf(orderedStyles,keys[i].toLowerCase())!==-1){sortedKeys.push(keys[i]);}else{nonSortedKeys.push(keys[i]);}}
sortedKeys.sort(function(a,b){var aIndex=tools.indexOf(orderedStyles,a.toLowerCase());var bIndex=tools.indexOf(orderedStyles,b.toLowerCase());return aIndex-bIndex;});keys=[].concat(sortedKeys,nonSortedKeys);var sortedStyles={};for(i=0;i<keys.length;i++){sortedStyles[keys[i]]=style[keys[i]];}
element.attributes.style=CKEDITOR.tools.writeCssText(sortedStyles);},pushStylesLower:function(element,exceptions,wrapText){if(!element.attributes.style||element.children.length===0){return false;}
exceptions=exceptions||{};var retainedStyles={'list-style-type':true,'width':true,'height':true,'border':true,'border-':true};var styles=tools.parseCssText(element.attributes.style);for(var style in styles){if(style.toLowerCase()in retainedStyles||retainedStyles[style.toLowerCase().replace(/\-.*$/,'-')]||style.toLowerCase()in exceptions){continue;}
var pushed=false;for(var i=0;i<element.children.length;i++){var child=element.children[i];if(child.type===CKEDITOR.NODE_TEXT&&wrapText){var wrapper=new CKEDITOR.htmlParser.element('span');wrapper.setHtml(child.value);child.replaceWith(wrapper);child=wrapper;}
if(child.type!==CKEDITOR.NODE_ELEMENT){continue;}
pushed=true;Style.setStyle(child,style,styles[style]);}
if(pushed){delete styles[style];}}
element.attributes.style=CKEDITOR.tools.writeCssText(styles);return true;},inliner:{filtered:['break-before','break-after','break-inside','page-break','page-break-before','page-break-after','page-break-inside'],parse:function(styles){var parseCssText=CKEDITOR.tools.parseCssText,filterStyles=CKEDITOR.plugins.pastefromword.styles.inliner.filter,sheet=styles.is?styles.$.sheet:createIsolatedStylesheet(styles);function createIsolatedStylesheet(styles){var style=new CKEDITOR.dom.element('style'),iframe=new CKEDITOR.dom.element('iframe');iframe.hide();CKEDITOR.document.getBody().append(iframe);iframe.$.contentDocument.documentElement.appendChild(style.$);style.$.textContent=styles;iframe.remove();return style.$.sheet;}
function getStyles(cssText){var startIndex=cssText.indexOf('{'),endIndex=cssText.indexOf('}');return parseCssText(cssText.substring(startIndex+1,endIndex),true);}
var parsedStyles=[],rules,i;if(sheet){rules=sheet.cssRules;for(i=0;i<rules.length;i++){if(rules[i].type===window.CSSRule.STYLE_RULE){parsedStyles.push({selector:rules[i].selectorText,styles:filterStyles(getStyles(rules[i].cssText))});}}}
return parsedStyles;},filter:function(stylesObj){var toRemove=CKEDITOR.plugins.pastefromword.styles.inliner.filtered,indexOf=tools.array.indexOf,newObj={},style;for(style in stylesObj){if(indexOf(toRemove,style)===-1){newObj[style]=stylesObj[style];}}
return newObj;},sort:function(stylesArray){function getCompareFunction(styles){var order=CKEDITOR.tools.array.map(styles,function(item){return item.selector;});return function(style1,style2){var value1=isClassSelector(style1.selector)?1:0,value2=isClassSelector(style2.selector)?1:0,result=value2-value1;return result!==0?result:order.indexOf(style2.selector)-order.indexOf(style1.selector);};}
function isClassSelector(selector){return(''+selector).indexOf('.')!==-1;}
return stylesArray.sort(getCompareFunction(stylesArray));},inline:function(html){var parseStyles=CKEDITOR.plugins.pastefromword.styles.inliner.parse,sortStyles=CKEDITOR.plugins.pastefromword.styles.inliner.sort,document=createTempDocument(html),stylesTags=document.find('style'),stylesArray=sortStyles(parseStyleTags(stylesTags));function createTempDocument(html){var parser=new DOMParser(),document=parser.parseFromString(html,'text/html');return new CKEDITOR.dom.document(document);}
function parseStyleTags(stylesTags){var styles=[],i;for(i=0;i<stylesTags.count();i++){styles=styles.concat(parseStyles(stylesTags.getItem(i)));}
return styles;}
function applyStyle(document,selector,style){var elements=document.find(selector),element,oldStyle,newStyle,i;for(i=0;i<elements.count();i++){element=elements.getItem(i);oldStyle=CKEDITOR.tools.parseCssText(element.getAttribute('style'));newStyle=CKEDITOR.tools.extend({},oldStyle,style);element.setAttribute('style',CKEDITOR.tools.writeCssText(newStyle));}}
CKEDITOR.tools.array.forEach(stylesArray,function(style){applyStyle(document,style.selector,style.styles);});return document;}}};Style=CKEDITOR.plugins.pastefromword.styles;CKEDITOR.plugins.pastefromword.lists={thisIsAListItem:function(editor,element){if(Heuristics.isEdgeListItem(editor,element)){return true;}
if((element.attributes.style&&element.attributes.style.match(/mso\-list:\s?l\d/)&&element.parent.name!=='li')||element.attributes['cke-dissolved']||element.getHtml().match(/<!\-\-\[if !supportLists]\-\->/)){return true;}
return false;},convertToFakeListItem:function(editor,element){if(Heuristics.isDegenerateListItem(editor,element)){Heuristics.assignListLevels(editor,element);}
this.getListItemInfo(element);if(!element.attributes['cke-dissolved']){var symbol;element.forEach(function(element){if(!symbol&&element.name=='img'&&element.attributes['cke-ignored']&&element.attributes.alt=='*'){symbol='·';element.remove();}},CKEDITOR.NODE_ELEMENT);element.forEach(function(element){if(!symbol&&!element.value.match(/^ /)){symbol=element.value;}},CKEDITOR.NODE_TEXT);if(typeof symbol=='undefined'){return;}
element.attributes['cke-symbol']=symbol.replace(/(?: |&nbsp;).*$/,'');List.removeSymbolText(element);}
if(element.attributes.style){var styles=tools.parseCssText(element.attributes.style);if(styles['margin-left']){delete styles['margin-left'];element.attributes.style=CKEDITOR.tools.writeCssText(styles);}}
element.name='cke:li';},convertToRealListItems:function(root){var listElements=[];root.forEach(function(element){if(element.name=='cke:li'){element.name='li';listElements.push(element);}},CKEDITOR.NODE_ELEMENT,false);return listElements;},removeSymbolText:function(element){var removed,symbol=element.attributes['cke-symbol'];element.forEach(function(node){if(!removed&&node.value.indexOf(symbol)>-1){node.value=node.value.replace(symbol,'');if(node.parent.getHtml().match(/^(\s|&nbsp;)*$/)){removed=node.parent!==element?node.parent:null;}}},CKEDITOR.NODE_TEXT);removed&&removed.remove();},setListSymbol:function(list,symbol,level){level=level||1;var style=tools.parseCssText(list.attributes.style);if(list.name=='ol'){if(list.attributes.type||style['list-style-type'])return;var typeMap={'[ivx]':'lower-roman','[IVX]':'upper-roman','[a-z]':'lower-alpha','[A-Z]':'upper-alpha','\\d':'decimal'};for(var type in typeMap){if(List.getSubsectionSymbol(symbol).match(new RegExp(type))){style['list-style-type']=typeMap[type];break;}}
list.attributes['cke-list-style-type']=style['list-style-type'];}else{var symbolMap={'·':'disc','o':'circle','§':'square'};if(!style['list-style-type']&&symbolMap[symbol]){style['list-style-type']=symbolMap[symbol];}}
List.setListSymbol.removeRedundancies(style,level);(list.attributes.style=CKEDITOR.tools.writeCssText(style))||delete list.attributes.style;},setListStart:function(list){var symbols=[],offset=0;for(var i=0;i<list.children.length;i++){symbols.push(list.children[i].attributes['cke-symbol']||'');}
if(!symbols[0]){offset++;}
switch(list.attributes['cke-list-style-type']){case'lower-roman':case'upper-roman':list.attributes.start=List.toArabic(List.getSubsectionSymbol(symbols[offset]))-offset;break;case'lower-alpha':case'upper-alpha':list.attributes.start=List.getSubsectionSymbol(symbols[offset]).replace(/\W/g,'').toLowerCase().charCodeAt(0)-96-offset;break;case'decimal':list.attributes.start=(parseInt(List.getSubsectionSymbol(symbols[offset]),10)-offset)||1;break;}
if(list.attributes.start=='1'){delete list.attributes.start;}
delete list.attributes['cke-list-style-type'];},numbering:{toNumber:function(marker,markerType){function fromAlphabet(str){var alpahbets='ABCDEFGHIJKLMNOPQRSTUVWXYZ';str=str.toUpperCase();var l=alpahbets.length,retVal=1;for(var x=1;str.length>0;x*=l){retVal+=alpahbets.indexOf(str.charAt(str.length-1))*x;str=str.substr(0,str.length-1);}
return retVal;}
function fromRoman(str){var romans=[[1000,'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']];str=str.toUpperCase();var l=romans.length,retVal=0;for(var i=0;i<l;++i){for(var j=romans[i],k=j[1].length;str.substr(0,k)==j[1];str=str.substr(k))
retVal+=j[0];}
return retVal;}
if(markerType=='decimal'){return Number(marker);}else if(markerType=='upper-roman'||markerType=='lower-roman'){return fromRoman(marker.toUpperCase());}else if(markerType=='lower-alpha'||markerType=='upper-alpha'){return fromAlphabet(marker);}else{return 1;}},getStyle:function(marker){var typeMap={'i':'lower-roman','v':'lower-roman','x':'lower-roman','l':'lower-roman','m':'lower-roman','I':'upper-roman','V':'upper-roman','X':'upper-roman','L':'upper-roman','M':'upper-roman'},firstCharacter=marker.slice(0,1),type=typeMap[firstCharacter];if(!type){type='decimal';if(firstCharacter.match(/[a-z]/)){type='lower-alpha';}
if(firstCharacter.match(/[A-Z]/)){type='upper-alpha';}}
return type;}},getSubsectionSymbol:function(symbol){return(symbol.match(/([\da-zA-Z]+).?$/)||['placeholder','1'])[1];},setListDir:function(list){var dirs={ltr:0,rtl:0};list.forEach(function(child){if(child.name=='li'){var dir=child.attributes.dir||child.attributes.DIR||'';if(dir.toLowerCase()=='rtl'){dirs.rtl++;}else{dirs.ltr++;}}},CKEDITOR.ELEMENT_NODE);if(dirs.rtl>dirs.ltr){list.attributes.dir='rtl';}},createList:function(element){if((element.attributes['cke-symbol'].match(/([\da-np-zA-NP-Z]).?/)||[])[1]){return new CKEDITOR.htmlParser.element('ol');}
return new CKEDITOR.htmlParser.element('ul');},createLists:function(root){var element,level,i,j,listElements=List.convertToRealListItems(root);if(listElements.length===0){return[];}
var lists=List.groupLists(listElements);for(i=0;i<lists.length;i++){var list=lists[i],firstLevel1Element=list[0];for(j=0;j<list.length;j++){if(list[j].attributes['cke-list-level']==1){firstLevel1Element=list[j];break;}}
var containerStack=[List.createList(firstLevel1Element)],innermostContainer=containerStack[0],allContainers=[containerStack[0]];innermostContainer.insertBefore(list[0]);for(j=0;j<list.length;j++){element=list[j];level=element.attributes['cke-list-level'];while(level>containerStack.length){var content=List.createList(element);var children=innermostContainer.children;if(children.length>0){children[children.length-1].add(content);}else{var container=new CKEDITOR.htmlParser.element('li',{style:'list-style-type:none'});container.add(content);innermostContainer.add(container);}
containerStack.push(content);allContainers.push(content);innermostContainer=content;if(level==containerStack.length){List.setListSymbol(content,element.attributes['cke-symbol'],level);}}
while(level<containerStack.length){containerStack.pop();innermostContainer=containerStack[containerStack.length-1];if(level==containerStack.length){List.setListSymbol(innermostContainer,element.attributes['cke-symbol'],level);}}
element.remove();innermostContainer.add(element);}
var level1Symbol;if(containerStack[0].children.length){level1Symbol=containerStack[0].children[0].attributes['cke-symbol'];if(!level1Symbol&&containerStack[0].children.length>1){level1Symbol=containerStack[0].children[1].attributes['cke-symbol'];}
if(level1Symbol){List.setListSymbol(containerStack[0],level1Symbol);}}
for(j=0;j<allContainers.length;j++){List.setListStart(allContainers[j]);}
for(j=0;j<list.length;j++){this.determineListItemValue(list[j]);}}
return listElements;},cleanup:function(listElements){var tempAttributes=['cke-list-level','cke-symbol','cke-list-id','cke-indentation','cke-dissolved'],i,j;for(i=0;i<listElements.length;i++){for(j=0;j<tempAttributes.length;j++){delete listElements[i].attributes[tempAttributes[j]];}}},determineListItemValue:function(element){if(element.parent.name!=='ol'){return;}
var assumedValue=this.calculateValue(element),cleanSymbol=element.attributes['cke-symbol'].match(/[a-z0-9]+/gi),computedValue,listType;if(cleanSymbol){cleanSymbol=cleanSymbol[cleanSymbol.length-1];listType=element.parent.attributes['cke-list-style-type']||this.numbering.getStyle(cleanSymbol);computedValue=this.numbering.toNumber(cleanSymbol,listType);if(computedValue!==assumedValue){element.attributes.value=computedValue;}}},calculateValue:function(element){if(!element.parent){return 1;}
var list=element.parent,elementIndex=element.getIndex(),valueFound=null,valueElementIndex,curElement,i;for(i=elementIndex;i>=0&&valueFound===null;i--){curElement=list.children[i];if(curElement.attributes&&curElement.attributes.value!==undefined){valueElementIndex=i;valueFound=parseInt(curElement.attributes.value,10);}}
if(valueFound===null){valueFound=list.attributes.start!==undefined?parseInt(list.attributes.start,10):1;valueElementIndex=0;}
return valueFound+(elementIndex-valueElementIndex);},dissolveList:function(element){var nameIs=function(name){return function(element){return element.name==name;};},isList=function(element){return nameIs('ul')(element)||nameIs('ol')(element);},arrayTools=CKEDITOR.tools.array,elements=[],children,i;element.forEach(function(child){elements.push(child);},CKEDITOR.NODE_ELEMENT,false);var items=arrayTools.filter(elements,nameIs('li')),lists=arrayTools.filter(elements,isList);arrayTools.forEach(lists,function(list){var type=list.attributes.type,start=parseInt(list.attributes.start,10)||1,level=countParents(isList,list)+1;if(!type){var style=tools.parseCssText(list.attributes.style);type=style['list-style-type'];}
arrayTools.forEach(arrayTools.filter(list.children,nameIs('li')),function(child,index){var symbol;switch(type){case'disc':symbol='·';break;case'circle':symbol='o';break;case'square':symbol='§';break;case'1':case'decimal':symbol=(start+index)+'.';break;case'a':case'lower-alpha':symbol=String.fromCharCode('a'.charCodeAt(0)+start-1+index)+'.';break;case'A':case'upper-alpha':symbol=String.fromCharCode('A'.charCodeAt(0)+start-1+index)+'.';break;case'i':case'lower-roman':symbol=toRoman(start+index)+'.';break;case'I':case'upper-roman':symbol=toRoman(start+index).toUpperCase()+'.';break;default:symbol=list.name=='ul'?'·':(start+index)+'.';}
child.attributes['cke-symbol']=symbol;child.attributes['cke-list-level']=level;});});children=arrayTools.reduce(items,function(acc,listElement){var child=listElement.children[0];if(child&&child.name&&child.attributes.style&&child.attributes.style.match(/mso-list:/i)){Style.pushStylesLower(listElement,{'list-style-type':true,'display':true});var childStyle=tools.parseCssText(child.attributes.style,true);Style.setStyle(listElement,'mso-list',childStyle['mso-list'],true);Style.setStyle(child,'mso-list','');delete listElement['cke-list-level'];var styleName=childStyle.display?'display':childStyle.DISPLAY?'DISPLAY':'';if(styleName){Style.setStyle(listElement,'display',childStyle[styleName],true);}}
if(listElement.children.length===1&&isList(listElement.children[0])){return acc;}
listElement.name='p';listElement.attributes['cke-dissolved']=true;acc.push(listElement);return acc;},[]);for(i=children.length-1;i>=0;i--){children[i].insertAfter(element);}
for(i=lists.length-1;i>=0;i--){delete lists[i].name;}
function toRoman(number){if(number>=50)return'l'+toRoman(number-50);if(number>=40)return'xl'+toRoman(number-40);if(number>=10)return'x'+toRoman(number-10);if(number==9)return'ix';if(number>=5)return'v'+toRoman(number-5);if(number==4)return'iv';if(number>=1)return'i'+toRoman(number-1);return'';}
function countParents(condition,element){return count(element,0);function count(parent,number){if(!parent||!parent.parent){return number;}
if(condition(parent.parent)){return count(parent.parent,number+1);}else{return count(parent.parent,number);}}}},groupLists:function(listElements){var i,element,lists=[[listElements[0]]],lastList=lists[0];element=listElements[0];element.attributes['cke-indentation']=element.attributes['cke-indentation']||List.getElementIndentation(element);for(i=1;i<listElements.length;i++){element=listElements[i];var previous=listElements[i-1];element.attributes['cke-indentation']=element.attributes['cke-indentation']||List.getElementIndentation(element);if(element.previous!==previous){List.chopDiscontinuousLists(lastList,lists);lists.push(lastList=[]);}
lastList.push(element);}
List.chopDiscontinuousLists(lastList,lists);return lists;},chopDiscontinuousLists:function(list,lists){var levelSymbols={};var choppedLists=[[]],lastListInfo;for(var i=0;i<list.length;i++){var lastSymbol=levelSymbols[list[i].attributes['cke-list-level']],currentListInfo=this.getListItemInfo(list[i]),currentSymbol,forceType;if(lastSymbol){forceType=lastSymbol.type.match(/alpha/)&&lastSymbol.index==7?'alpha':forceType;forceType=list[i].attributes['cke-symbol']=='o'&&lastSymbol.index==14?'alpha':forceType;currentSymbol=List.getSymbolInfo(list[i].attributes['cke-symbol'],forceType);currentListInfo=this.getListItemInfo(list[i]);if(lastSymbol.type!=currentSymbol.type||(lastListInfo&&currentListInfo.id!=lastListInfo.id&&!this.isAListContinuation(list[i]))){choppedLists.push([]);}}else{currentSymbol=List.getSymbolInfo(list[i].attributes['cke-symbol']);}
for(var j=parseInt(list[i].attributes['cke-list-level'],10)+1;j<20;j++){if(levelSymbols[j]){delete levelSymbols[j];}}
levelSymbols[list[i].attributes['cke-list-level']]=currentSymbol;choppedLists[choppedLists.length-1].push(list[i]);lastListInfo=currentListInfo;}
[].splice.apply(lists,[].concat([tools.indexOf(lists,list),1],choppedLists));},isAListContinuation:function(listElement){var prev=listElement;do{prev=prev.previous;if(prev&&prev.type===CKEDITOR.NODE_ELEMENT){if(prev.attributes['cke-list-level']===undefined){return false;}
if(prev.attributes['cke-list-level']===listElement.attributes['cke-list-level']){return prev.attributes['cke-list-id']===listElement.attributes['cke-list-id'];}}}while(prev);return false;},getElementIndentation:function(element){var style=tools.parseCssText(element.attributes.style);if(style.margin||style.MARGIN){style.margin=style.margin||style.MARGIN;var fakeElement={styles:{margin:style.margin}};CKEDITOR.filter.transformationsTools.splitMarginShorthand(fakeElement);style['margin-left']=fakeElement.styles['margin-left'];}
return parseInt(tools.convertToPx(style['margin-left']||'0px'),10);},toArabic:function(symbol){if(!symbol.match(/[ivxl]/i))return 0;if(symbol.match(/^l/i))return 50+List.toArabic(symbol.slice(1));if(symbol.match(/^lx/i))return 40+List.toArabic(symbol.slice(1));if(symbol.match(/^x/i))return 10+List.toArabic(symbol.slice(1));if(symbol.match(/^ix/i))return 9+List.toArabic(symbol.slice(2));if(symbol.match(/^v/i))return 5+List.toArabic(symbol.slice(1));if(symbol.match(/^iv/i))return 4+List.toArabic(symbol.slice(2));if(symbol.match(/^i/i))return 1+List.toArabic(symbol.slice(1));return List.toArabic(symbol.slice(1));},getSymbolInfo:function(symbol,type){var symbolCase=symbol.toUpperCase()==symbol?'upper-':'lower-',symbolMap={'·':['disc',-1],'o':['circle',-2],'§':['square',-3]};if(symbol in symbolMap||(type&&type.match(/(disc|circle|square)/))){return{index:symbolMap[symbol][1],type:symbolMap[symbol][0]};}
if(symbol.match(/\d/)){return{index:symbol?parseInt(List.getSubsectionSymbol(symbol),10):0,type:'decimal'};}
symbol=symbol.replace(/\W/g,'').toLowerCase();if((!type&&symbol.match(/[ivxl]+/i))||(type&&type!='alpha')||type=='roman'){return{index:List.toArabic(symbol),type:symbolCase+'roman'};}
if(symbol.match(/[a-z]/i)){return{index:symbol.charCodeAt(0)-97,type:symbolCase+'alpha'};}
return{index:-1,type:'disc'};},getListItemInfo:function(list){if(list.attributes['cke-list-id']!==undefined){return{id:list.attributes['cke-list-id'],level:list.attributes['cke-list-level']};}
var propValue=tools.parseCssText(list.attributes.style)['mso-list'],ret={id:'0',level:'1'};if(propValue){propValue+=' ';ret.level=propValue.match(/level(.+?)\s+/)[1];ret.id=propValue.match(/l(\d+?)\s+/)[1];}
list.attributes['cke-list-level']=list.attributes['cke-list-level']!==undefined?list.attributes['cke-list-level']:ret.level;list.attributes['cke-list-id']=ret.id;return ret;}};List=CKEDITOR.plugins.pastefromword.lists;CKEDITOR.plugins.pastefromword.images={extractFromRtf:function(rtfContent){var ret=[],rePictureHeader=/\{\\pict[\s\S]+?\\bliptag\-?\d+(\\blipupi\-?\d+)?(\{\\\*\\blipuid\s?[\da-fA-F]+)?[\s\}]*?/,rePicture=new RegExp('(?:('+rePictureHeader.source+'))([\\da-fA-F\\s]+)\\}','g'),wholeImages,imageType;wholeImages=rtfContent.match(rePicture);if(!wholeImages){return ret;}
for(var i=0;i<wholeImages.length;i++){if(rePictureHeader.test(wholeImages[i])){if(wholeImages[i].indexOf('\\pngblip')!==-1){imageType='image/png';}else if(wholeImages[i].indexOf('\\jpegblip')!==-1){imageType='image/jpeg';}else{continue;}
ret.push({hex:imageType?wholeImages[i].replace(rePictureHeader,'').replace(/[^\da-fA-F]/g,''):null,type:imageType});}}
return ret;},extractTagsFromHtml:function(html){var regexp=/<img[^>]+src="([^"]+)[^>]+/g,ret=[],item;while(item=regexp.exec(html)){ret.push(item[1]);}
return ret;}};CKEDITOR.plugins.pastefromword.heuristics={isEdgeListItem:function(editor,item){if(!CKEDITOR.env.edge||!editor.config.pasteFromWord_heuristicsEdgeList){return false;}
var innerText='';item.forEach&&item.forEach(function(text){innerText+=text.value;},CKEDITOR.NODE_TEXT);if(innerText.match(/^(?: |&nbsp;)*\(?[a-zA-Z0-9]+?[\.\)](?: |&nbsp;){2,}/)){return true;}
return Heuristics.isDegenerateListItem(editor,item);},cleanupEdgeListItem:function(item){var textOccurred=false;item.forEach(function(node){if(!textOccurred){node.value=node.value.replace(/^(?:&nbsp;|[\s])+/,'');if(node.value.length){textOccurred=true;}}},CKEDITOR.NODE_TEXT);},isDegenerateListItem:function(editor,item){return!!item.attributes['cke-list-level']||(item.attributes.style&&!item.attributes.style.match(/mso\-list/)&&!!item.find(function(child){if(child.type==CKEDITOR.NODE_ELEMENT&&item.name.match(/h\d/i)&&child.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/)){return true;}
var css=tools.parseCssText(child.attributes&&child.attributes.style,true);if(!css){return false;}
var fontSize=css.font||css['font-size']||'',fontFamily=css['font-family']||'';return(fontSize.match(/7pt/i)&&!!child.previous)||fontFamily.match(/symbol/i);},true).length);},assignListLevels:function(editor,item){if(item.attributes&&item.attributes['cke-list-level']!==undefined){return;}
var indents=[List.getElementIndentation(item)],items=[item],levels=[],array=CKEDITOR.tools.array,map=array.map;while(item.next&&item.next.attributes&&!item.next.attributes['cke-list-level']&&Heuristics.isDegenerateListItem(editor,item.next)){item=item.next;indents.push(List.getElementIndentation(item));items.push(item);}
var indentationDiffs=map(indents,function(curIndent,i){return i===0?0:curIndent-indents[i-1];}),indentationPerLevel=this.guessIndentationStep(array.filter(indents,function(val){return val!==0;}));levels=map(indents,function(val){return Math.round(val/indentationPerLevel);});if(array.indexOf(levels,0)!==-1){levels=map(levels,function(val){return val+1;});}
array.forEach(items,function(curItem,index){curItem.attributes['cke-list-level']=levels[index];});return{indents:indents,levels:levels,diffs:indentationDiffs};},guessIndentationStep:function(indentations){return indentations.length?Math.min.apply(null,indentations):null;},correctLevelShift:function(element){var isShiftedList=function(list){return list.children&&list.children.length==1&&Heuristics.isShifted(list.children[0]);};if(this.isShifted(element)){var lists=CKEDITOR.tools.array.filter(element.children,function(child){return(child.name=='ul'||child.name=='ol');});var listChildren=CKEDITOR.tools.array.reduce(lists,function(acc,list){var preceding=isShiftedList(list)?[list]:list.children;return preceding.concat(acc);},[]);CKEDITOR.tools.array.forEach(lists,function(list){list.remove();});CKEDITOR.tools.array.forEach(listChildren,function(child){element.add(child);});delete element.name;}},isShifted:function(element){if(element.name!=='li'){return false;}
return CKEDITOR.tools.array.filter(element.children,function(child){if(child.name){if(child.name=='ul'||child.name=='ol'){return false;}
if(child.name=='p'&&child.children.length===0){return false;}}
return true;}).length===0;}};Heuristics=CKEDITOR.plugins.pastefromword.heuristics;List.setListSymbol.removeRedundancies=function(style,level){if((level===1&&style['list-style-type']==='disc')||style['list-style-type']==='decimal'){delete style['list-style-type'];}};function falseIfEmpty(value){if(value===''){return false;}
return value;}
function remove(){return false;}
function createAttributeStack(element,filter){var i,children=[];element.filterChildren(filter);for(i=element.children.length-1;i>=0;i--){children.unshift(element.children[i]);element.children[i].remove();}
var attributes=element.attributes,innermostElement=element,topmost=true;for(var attribute in attributes){if(topmost){topmost=false;continue;}
var newElement=new CKEDITOR.htmlParser.element(element.name);newElement.attributes[attribute]=attributes[attribute];innermostElement.add(newElement);innermostElement=newElement;delete attributes[attribute];}
for(i=0;i<children.length;i++){innermostElement.add(children[i]);}}
CKEDITOR.plugins.pastefromword.createAttributeStack=createAttributeStack;CKEDITOR.config.pasteFromWord_heuristicsEdgeList=true;})();