text: //>>built
  define("dojox/editor/plugins/SpellCheck",["dijit","dojo","dojox","dojo/i18n!dojox/editor/plugins/nls/SpellCheck","dojo/require!dijit/_base/popup,dijit/_Widget,dijit/_Templated,dijit/form/TextBox,dijit/form/DropDownButton,dijit/TooltipDialog,dijit/form/MultiSelect,dojo/io/script,dijit/Menu"],function(_1,_2,_3){
  _2.provide("dojox.editor.plugins.SpellCheck");
  _2.require("dijit._base.popup");
  _2.require("dijit._Widget");
  _2.require("dijit._Templated");
  _2.require("dijit.form.TextBox");
  _2.require("dijit.form.DropDownButton");
  _2.require("dijit.TooltipDialog");
  _2.require("dijit.form.MultiSelect");
  _2.require("dojo.io.script");
  _2.require("dijit.Menu");
  _2.requireLocalization("dojox.editor.plugins","SpellCheck");
  _2.experimental("dojox.editor.plugins.SpellCheck");
  _2.declare("dojox.editor.plugins._spellCheckControl",[_1._Widget,_1._Templated],{widgetsInTemplate:true,templateString:"<table role='presentation' class='dijitEditorSpellCheckTable'>"+"<tr><td colspan='3' class='alignBottom'><label for='${textId}' id='${textId}_label'>${unfound}</label>"+"<div class='dijitEditorSpellCheckBusyIcon' id='${id}_progressIcon'></div></td></tr>"+"<tr>"+"<td class='dijitEditorSpellCheckBox'><input dojoType='dijit.form.TextBox' required='false' intermediateChanges='true' "+"class='dijitEditorSpellCheckBox' dojoAttachPoint='unfoundTextBox' id='${textId}'/></td>"+"<td><button dojoType='dijit.form.Button' class='blockButton' dojoAttachPoint='skipButton'>${skip}</button></td>"+"<td><button dojoType='dijit.form.Button' class='blockButton' dojoAttachPoint='skipAllButton'>${skipAll}</button></td>"+"</tr>"+"<tr>"+"<td class='alignBottom'><label for='${selectId}'>${suggestions}</td></label>"+"<td colspan='2'><button dojoType='dijit.form.Button' class='blockButton' dojoAttachPoint='toDicButton'>${toDic}</button></td>"+"</tr>"+"<tr>"+"<td>"+"<select dojoType='dijit.form.MultiSelect' id='${selectId}' "+"class='dijitEditorSpellCheckBox listHeight' dojoAttachPoint='suggestionSelect'></select>"+"</td>"+"<td colspan='2'>"+"<button dojoType='dijit.form.Button' class='blockButton' dojoAttachPoint='replaceButton'>${replace}</button>"+"<div class='topMargin'><button dojoType='dijit.form.Button' class='blockButton' "+"dojoAttachPoint='replaceAllButton'>${replaceAll}</button><div>"+"</td>"+"</tr>"+"<tr>"+"<td><div class='topMargin'><button dojoType='dijit.form.Button' dojoAttachPoint='cancelButton'>${cancel}</button></div></td>"+"<td></td>"+"<td></td>"+"</tr>"+"</table>",constructor:function(){
  this.ignoreChange=false;
  this.isChanged=false;
  this.isOpen=false;
  this.closable=true;
  },postMixInProperties:function(){
  this.id=_1.getUniqueId(this.declaredClass.replace(/\./g,"_"));
  this.textId=this.id+"_textBox";
  this.selectId=this.id+"_select";
  },postCreate:function(){
  var _4=this.suggestionSelect;
  _2.removeAttr(_4.domNode,"multiple");
  _4.addItems=function(_5){
  var _6=this;
  var o=null;
  if(_5&&_5.length>0){
  _2.forEach(_5,function(_7,i){
  o=_2.create("option",{innerHTML:_7,value:_7},_6.domNode);
  if(i==0){
  o.selected=true;
  }
  });
  }
  };
  _4.removeItems=function(){
  _2.empty(this.domNode);
  };
  _4.deselectAll=function(){
  this.containerNode.selectedIndex=-1;
  };
  this.connect(this,"onKeyPress","_cancel");
  this.connect(this.unfoundTextBox,"onKeyPress","_enter");
  this.connect(this.unfoundTextBox,"onChange","_unfoundTextBoxChange");
  this.connect(this.suggestionSelect,"onKeyPress","_enter");
  this.connect(this.skipButton,"onClick","onSkip");
  this.connect(this.skipAllButton,"onClick","onSkipAll");
  this.connect(this.toDicButton,"onClick","onAddToDic");
  this.connect(this.replaceButton,"onClick","onReplace");
  this.connect(this.replaceAllButton,"onClick","onReplaceAll");
  this.connect(this.cancelButton,"onClick","onCancel");
  },onSkip:function(){
  },onSkipAll:function(){
  },onAddToDic:function(){
  },onReplace:function(){
  },onReplaceAll:function(){
  },onCancel:function(){
  },onEnter:function(){
  },focus:function(){
  this.unfoundTextBox.focus();
  },_cancel:function(_8){
  if(_8.keyCode==_2.keys.ESCAPE){
  this.onCancel();
  _2.stopEvent(_8);
  }
  },_enter:function(_9){
  if(_9.keyCode==_2.keys.ENTER){
  this.onEnter();
  _2.stopEvent(_9);
  }
  },_unfoundTextBoxChange:function(){
  var id=this.textId+"_label";
  if(!this.ignoreChange){
  _2.byId(id).innerHTML=this["replaceWith"];
  this.isChanged=true;
  this.suggestionSelect.deselectAll();
  }else{
  _2.byId(id).innerHTML=this["unfound"];
  }
  },_setUnfoundWordAttr:function(_a){
  _a=_a||"";
  this.unfoundTextBox.set("value",_a);
  },_getUnfoundWordAttr:function(){
  return this.unfoundTextBox.get("value");
  },_setSuggestionListAttr:function(_b){
  var _c=this.suggestionSelect;
  _b=_b||[];
  _c.removeItems();
  _c.addItems(_b);
  },_getSelectedWordAttr:function(){
  var _d=this.suggestionSelect.getSelected();
  if(_d&&_d.length>0){
  return _d[0].value;
  }else{
  return this.unfoundTextBox.get("value");
  }
  },_setDisabledAttr:function(_e){
  this.skipButton.set("disabled",_e);
  this.skipAllButton.set("disabled",_e);
  this.toDicButton.set("disabled",_e);
  this.replaceButton.set("disabled",_e);
  this.replaceAllButton.set("disabled",_e);
  },_setInProgressAttr:function(_f){
  var id=this.id+"_progressIcon",cmd=_f?"removeClass":"addClass";
  _2[cmd](id,"hidden");
  }});
  _2.declare("dojox.editor.plugins._SpellCheckScriptMultiPart",null,{ACTION_QUERY:"query",ACTION_UPDATE:"update",callbackHandle:"callback",maxBufferLength:100,delimiter:" ",label:"response",_timeout:30000,SEC:1000,constructor:function(){
  this.serviceEndPoint="";
  this._queue=[];
  this.isWorking=false;
  this.exArgs=null;
  this._counter=0;
  },send:function(_10,_11){
  var _12=this,dt=this.delimiter,mbl=this.maxBufferLength,_13=this.label,_14=this.serviceEndPoint,_15=this.callbackHandle,_16=this.exArgs,_17=this._timeout,l=0,r=0;
  if(!this._result){
  this._result=[];
  }
  _11=_11||this.ACTION_QUERY;
  var _18=function(){
  var _19=[];
  var _1a=0;
  if(_10&&_10.length>0){
  _12.isWorking=true;
  var len=_10.length;
  do{
  l=r+1;
  if((r+=mbl)>len){
  r=len;
  }else{
  while(dt&&_10.charAt(r)!=dt&&r<=len){
  r++;
  }
  }
  _19.push({l:l,r:r});
  _1a++;
  }while(r<len);
  _2.forEach(_19,function(_1b,_1c){
  var _1d={url:_14,action:_11,timeout:_17,callbackParamName:_15,handle:function(_1e,_1f){
  if(++_12._counter<=this.size&&!(_1e instanceof Error)&&_1e[_13]&&_2.isArray(_1e[_13])){
  var _20=this.offset;
  _2.forEach(_1e[_13],function(_21){
  _21.offset+=_20;
  });
  _12._result[this.number]=_1e[_13];
  }
  if(_12._counter==this.size){
  _12._finalizeCollection(this.action);
  _12.isWorking=false;
  if(_12._queue.length>0){
  (_12._queue.shift())();
  }
  }
  }};
  _1d.content=_16?_2.mixin(_16,{action:_11,content:_10.substring(_1b.l-1,_1b.r)}):{action:_11,content:_10.substring(_1b.l-1,_1b.r)};
  _1d.size=_1a;
  _1d.number=_1c;
  _1d.offset=_1b.l-1;
  _2.io.script.get(_1d);
  });
  }
  };
  if(!_12.isWorking){
  _18();
  }else{
  _12._queue.push(_18);
  }
  },_finalizeCollection:function(_22){
  var _23=this._result,len=_23.length;
  for(var i=0;i<len;i++){
  var _24=_23.shift();
  _23=_23.concat(_24);
  }
  if(_22==this.ACTION_QUERY){
  this.onLoad(_23);
  }
  this._counter=0;
  this._result=[];
  },onLoad:function(_25){
  },setWaitingTime:function(_26){
  this._timeout=_26*this.SEC;
  }});
  _2.declare("dojox.editor.plugins.SpellCheck",[_1._editor._Plugin],{url:"",bufferLength:100,interactive:false,timeout:30,button:null,_editor:null,exArgs:null,_cursorSpan:"<span class=\"cursorPlaceHolder\"></span>",_cursorSelector:"cursorPlaceHolder",_incorrectWordsSpan:"<span class='incorrectWordPlaceHolder'>${text}</span>",_ignoredIncorrectStyle:{"cursor":"inherit","borderBottom":"none","backgroundColor":"transparent"},_normalIncorrectStyle:{"cursor":"pointer","borderBottom":"1px dotted red","backgroundColor":"yellow"},_highlightedIncorrectStyle:{"borderBottom":"1px dotted red","backgroundColor":"#b3b3ff"},_selector:"incorrectWordPlaceHolder",_maxItemNumber:3,constructor:function(){
  this._spanList=[];
  this._cache={};
  this._enabled=true;
  this._iterator=0;
  },setEditor:function(_27){
  this._editor=_27;
  this._initButton();
  this._setNetwork();
  this._connectUp();
  },_initButton:function(){
  var _28=this,_29=(this._strings=_2.i18n.getLocalization("dojox.editor.plugins","SpellCheck")),_2a=(this._dialog=new _1.TooltipDialog());
  _2a.set("content",(this._dialogContent=new _3.editor.plugins._spellCheckControl({unfound:_29["unfound"],skip:_29["skip"],skipAll:_29["skipAll"],toDic:_29["toDic"],suggestions:_29["suggestions"],replaceWith:_29["replaceWith"],replace:_29["replace"],replaceAll:_29["replaceAll"],cancel:_29["cancel"]})));
  this.button=new _1.form.DropDownButton({label:_29["widgetLabel"],showLabel:false,iconClass:"dijitEditorSpellCheckIcon",dropDown:_2a,id:_1.getUniqueId(this.declaredClass.replace(/\./g,"_"))+"_dialogPane",closeDropDown:function(_2b){
  if(_28._dialogContent.closable){
  _28._dialogContent.isOpen=false;
  if(_2.isIE){
  var pos=_28._iterator,_2c=_28._spanList;
  if(pos<_2c.length&&pos>=0){
  _2.style(_2c[pos],_28._normalIncorrectStyle);
  }
  }
  if(this._opened){
  _1.popup.close(this.dropDown);
  if(_2b){
  this.focus();
  }
  this._opened=false;
  this.state="";
  }
  }
  }});
  _28._dialogContent.isOpen=false;
  _2a.domNode.setAttribute("aria-label",this._strings["widgetLabel"]);
  },_setNetwork:function(){
  var _2d=this.exArgs;
  if(!this._service){
  var _2e=(this._service=new _3.editor.plugins._SpellCheckScriptMultiPart());
  _2e.serviceEndPoint=this.url;
  _2e.maxBufferLength=this.bufferLength;
  _2e.setWaitingTime(this.timeout);
  if(_2d){
  delete _2d.name;
  delete _2d.url;
  delete _2d.interactive;
  delete _2d.timeout;
  _2e.exArgs=_2d;
  }
  }
  },_connectUp:function(){
  var _2f=this._editor,_30=this._dialogContent;
  this.connect(this.button,"set","_disabled");
  this.connect(this._service,"onLoad","_loadData");
  this.connect(this._dialog,"onOpen","_openDialog");
  this.connect(_2f,"onKeyPress","_keyPress");
  this.connect(_2f,"onLoad","_submitContent");
  this.connect(_30,"onSkip","_skip");
  this.connect(_30,"onSkipAll","_skipAll");
  this.connect(_30,"onAddToDic","_add");
  this.connect(_30,"onReplace","_replace");
  this.connect(_30,"onReplaceAll","_replaceAll");
  this.connect(_30,"onCancel","_cancel");
  this.connect(_30,"onEnter","_enter");
  _2f.contentPostFilters.push(this._spellCheckFilter);
  _2.publish(_1._scopeName+".Editor.plugin.SpellCheck.getParser",[this]);
  if(!this.parser){
  console.error("Can not get the word parser!");
  }
  },_disabled:function(_31,_32){
  if(_31=="disabled"){
  if(_32){
  this._iterator=0;
  this._spanList=[];
  }else{
  if(this.interactive&&!_32&&this._service){
  this._submitContent(true);
  }
  }
  this._enabled=!_32;
  }
  },_keyPress:function(evt){
  if(this.interactive){
  var v=118,V=86,cc=evt.charCode;
  if(!evt.altKey&&cc==_2.keys.SPACE){
  this._submitContent();
  }else{
  if((evt.ctrlKey&&(cc==v||cc==V))||(!evt.ctrlKey&&evt.charCode)){
  this._submitContent(true);
  }
  }
  }
  },_loadData:function(_33){
  var _34=this._cache,_35=this._editor.get("value"),_36=this._dialogContent;
  this._iterator=0;
  _2.forEach(_33,function(d){
  _34[d.text]=d.suggestion;
  _34[d.text].correct=false;
  });
  if(this._enabled){
  _36.closable=false;
  this._markIncorrectWords(_35,_34);
  _36.closable=true;
  if(this._dialogContent.isOpen){
  this._iterator=-1;
  this._skip();
  }
  }
  },_openDialog:function(){
  var _37=this._dialogContent;
  _37.ignoreChange=true;
  _37.set("unfoundWord","");
  _37.set("suggestionList",null);
  _37.set("disabled",true);
  _37.set("inProgress",true);
  _37.isOpen=true;
  _37.closable=false;
  this._submitContent();
  _37.closable=true;
  },_skip:function(evt,_38){
  var _39=this._dialogContent,_3a=this._spanList||[],len=_3a.length,_3b=this._iterator;
  _39.closable=false;
  _39.isChanged=false;
  _39.ignoreChange=true;
  if(!_38&&_3b>=0&&_3b<len){
  this._skipWord(_3b);
  }
  while(++_3b<len&&_3a[_3b].edited==true){
  }
  if(_3b<len){
  this._iterator=_3b;
  this._populateDialog(_3b);
  this._selectWord(_3b);
  }else{
  this._iterator=-1;
  _39.set("unfoundWord",this._strings["msg"]);
  _39.set("suggestionList",null);
  _39.set("disabled",true);
  _39.set("inProgress",false);
  }
  setTimeout(function(){
  if(_2.isWebKit){
  _39.skipButton.focus();
  }
  _39.focus();
  _39.ignoreChange=false;
  _39.closable=true;
  },0);
  },_skipAll:function(){
  this._dialogContent.closable=false;
  this._skipWordAll(this._iterator);
  this._skip();
  },_add:function(){
  var _3c=this._dialogContent;
  _3c.closable=false;
  _3c.isOpen=true;
  this._addWord(this._iterator,_3c.get("unfoundWord"));
  this._skip();
  },_replace:function(){
  var _3d=this._dialogContent,_3e=this._iterator,_3f=_3d.get("selectedWord");
  _3d.closable=false;
  this._replaceWord(_3e,_3f);
  this._skip(null,true);
  },_replaceAll:function(){
  var _40=this._dialogContent,_41=this._spanList,len=_41.length,_42=_41[this._iterator].innerHTML.toLowerCase(),_43=_40.get("selectedWord");
  _40.closable=false;
  for(var _44=0;_44<len;_44++){
  if(_41[_44].innerHTML.toLowerCase()==_42){
  this._replaceWord(_44,_43);
  }
  }
  this._skip(null,true);
  },_cancel:function(){
  this._dialogContent.closable=true;
  this._editor.focus();
  },_enter:function(){
  if(this._dialogContent.isChanged){
  this._replace();
  }else{
  this._skip();
  }
  },_query:function(_45){
  var _46=this._service,_47=this._cache,_48=this.parser.parseIntoWords(this._html2Text(_45))||[];
  var _49=[];
  _2.forEach(_48,function(_4a){
  _4a=_4a.toLowerCase();
  if(!_47[_4a]){
  _47[_4a]=[];
  _47[_4a].correct=true;
  _49.push(_4a);
  }
  });
  if(_49.length>0){
  _46.send(_49.join(" "));
  }else{
  if(!_46.isWorking){
  this._loadData([]);
  }
  }
  },_html2Text:function(_4b){
  var _4c=[],_4d=false,len=_4b?_4b.length:0;
  for(var i=0;i<len;i++){
  if(_4b.charAt(i)=="<"){
  _4d=true;
  }
  if(_4d==true){
  _4c.push(" ");
  }else{
  _4c.push(_4b.charAt(i));
  }
  if(_4b.charAt(i)==">"){
  _4d=false;
  }
  }
  return _4c.join("");
  },_getBookmark:function(_4e){
  var ed=this._editor,cp=this._cursorSpan;
  ed.execCommand("inserthtml",cp);
  var nv=ed.get("value"),_4f=nv.indexOf(cp),i=-1;
  while(++i<_4f&&_4e.charAt(i)==nv.charAt(i)){
  }
  return i;
  },_moveToBookmark:function(){
  var ed=this._editor,cps=_2.query("."+this._cursorSelector,ed.document),_50=cps&&cps[0];
  if(_50){
  ed._sCall("selectElement",[_50]);
  ed._sCall("collapse",[true]);
  var _51=_50.parentNode;
  if(_51){
  _51.removeChild(_50);
  }
  }
  },_submitContent:function(_52){
  if(_52){
  var _53=this,_54=3000;
  if(this._delayHandler){
  clearTimeout(this._delayHandler);
  this._delayHandler=null;
  }
  setTimeout(function(){
  _53._query(_53._editor.get("value"));
  },_54);
  }else{
  this._query(this._editor.get("value"));
  }
  },_populateDialog:function(_55){
  var _56=this._spanList,_57=this._cache,_58=this._dialogContent;
  _58.set("disabled",false);
  if(_55<_56.length&&_56.length>0){
  var _59=_56[_55].innerHTML;
  _58.set("unfoundWord",_59);
  _58.set("suggestionList",_57[_59.toLowerCase()]);
  _58.set("inProgress",false);
  }
  },_markIncorrectWords:function(_5a,_5b){
  var _5c=this,_5d=this.parser,_5e=this._editor,_5f=this._incorrectWordsSpan,_60=this._normalIncorrectStyle,_61=this._selector,_62=_5d.parseIntoWords(this._html2Text(_5a).toLowerCase()),_63=_5d.getIndices(),_64=this._cursorSpan,_65=this._getBookmark(_5a),_66="<span class='incorrectWordPlaceHolder'>".length,_67=false,_68=_5a.split(""),_69=null;
  for(var i=_62.length-1;i>=0;i--){
  var _6a=_62[i];
  if(_5b[_6a]&&!_5b[_6a].correct){
  var _6b=_63[i],len=_62[i].length,end=_6b+len;
  if(end<=_65&&!_67){
  _68.splice(_65,0,_64);
  _67=true;
  }
  _68.splice(_6b,len,_2.string.substitute(_5f,{text:_5a.substring(_6b,end)}));
  if(_6b<_65&&_65<end&&!_67){
  var tmp=_68[_6b].split("");
  tmp.splice(_66+_65-_6b,0,_64);
  _68[_6b]=tmp.join("");
  _67=true;
  }
  }
  }
  if(!_67){
  _68.splice(_65,0,_64);
  _67=true;
  }
  _5e.set("value",_68.join(""));
  _5e._cursorToStart=false;
  this._moveToBookmark();
  _69=this._spanList=_2.query("."+this._selector,_5e.document);
  _69.forEach(function(_6c,i){
  _6c.id=_61+i;
  });
  if(!this.interactive){
  delete _60.cursor;
  }
  _69.style(_60);
  if(this.interactive){
  if(_5c._contextMenu){
  _5c._contextMenu.uninitialize();
  _5c._contextMenu=null;
  }
  _5c._contextMenu=new _1.Menu({targetNodeIds:[_5e.iframe],bindDomNode:function(_6d){
  _6d=_2.byId(_6d);
  var cn;
  var _6e,win;
  if(_6d.tagName.toLowerCase()=="iframe"){
  _6e=_6d;
  win=this._iframeContentWindow(_6e);
  cn=_2.body(_5e.document);
  }else{
  cn=(_6d==_2.body()?_2.doc.documentElement:_6d);
  }
  var _6f={node:_6d,iframe:_6e};
  _2.attr(_6d,"_dijitMenu"+this.id,this._bindings.push(_6f));
  var _70=_2.hitch(this,function(cn){
  return [_2.connect(cn,this.leftClickToOpen?"onclick":"oncontextmenu",this,function(evt){
  var _71=evt.target,_72=_5c._strings;
  if(_2.hasClass(_71,_61)&&!_71.edited){
  _2.stopEvent(evt);
  var _73=_5c._maxItemNumber,id=_71.id,_74=id.substring(_61.length),_75=_5b[_71.innerHTML.toLowerCase()],_76=_75.length;
  this.destroyDescendants();
  if(_76==0){
  this.addChild(new _1.MenuItem({label:_72["iMsg"],disabled:true}));
  }else{
  for(var i=0;i<_73&&i<_76;i++){
  this.addChild(new _1.MenuItem({label:_75[i],onClick:(function(){
  var idx=_74,txt=_75[i];
  return function(){
  _5c._replaceWord(idx,txt);
  _5e.focus();
  };
  })()}));
  }
  }
  this.addChild(new _1.MenuSeparator());
  this.addChild(new _1.MenuItem({label:_72["iSkip"],onClick:function(){
  _5c._skipWord(_74);
  _5e.focus();
  }}));
  this.addChild(new _1.MenuItem({label:_72["iSkipAll"],onClick:function(){
  _5c._skipWordAll(_74);
  _5e.focus();
  }}));
  this.addChild(new _1.MenuSeparator());
  this.addChild(new _1.MenuItem({label:_72["toDic"],onClick:function(){
  _5c._addWord(_74);
  _5e.focus();
  }}));
  this._scheduleOpen(_71,_6e,{x:evt.pageX,y:evt.pageY});
  }
  }),_2.connect(cn,"onkeydown",this,function(evt){
  if(evt.shiftKey&&evt.keyCode==_2.keys.F10){
  _2.stopEvent(evt);
  this._scheduleOpen(evt.target,_6e);
  }
  })];
  });
  _6f.connects=cn?_70(cn):[];
  if(_6e){
  _6f.onloadHandler=_2.hitch(this,function(){
  var win=this._iframeContentWindow(_6e),cn=_2.body(_5e.document);
  _6f.connects=_70(cn);
  });
  if(_6e.addEventListener){
  _6e.addEventListener("load",_6f.onloadHandler,false);
  }else{
  _6e.attachEvent("onload",_6f.onloadHandler);
  }
  }
  }});
  }
  },_selectWord:function(_77){
  var ed=this._editor,_78=this._spanList;
  if(_77<_78.length&&_78.length>0){
  ed._sCall("selectElement",[_78[_77]]);
  ed._sCall("collapse",[true]);
  this._findText(_78[_77].innerHTML,false,false);
  if(_2.isIE){
  _2.style(_78[_77],this._highlightedIncorrectStyle);
  }
  }
  },_replaceWord:function(_79,_7a){
  var _7b=this._spanList;
  _7b[_79].innerHTML=_7a;
  _2.style(_7b[_79],this._ignoredIncorrectStyle);
  _7b[_79].edited=true;
  },_skipWord:function(_7c){
  var _7d=this._spanList;
  _2.style(_7d[_7c],this._ignoredIncorrectStyle);
  this._cache[_7d[_7c].innerHTML.toLowerCase()].correct=true;
  _7d[_7c].edited=true;
  },_skipWordAll:function(_7e,_7f){
  var _80=this._spanList,len=_80.length;
  _7f=_7f||_80[_7e].innerHTML.toLowerCase();
  for(var i=0;i<len;i++){
  if(!_80[i].edited&&_80[i].innerHTML.toLowerCase()==_7f){
  this._skipWord(i);
  }
  }
  },_addWord:function(_81,_82){
  var _83=this._service;
  _83.send(_82||this._spanList[_81].innerHTML.toLowerCase(),_83.ACTION_UPDATE);
  this._skipWordAll(_81,_82);
  },_findText:function(txt,_84,_85){
  var ed=this._editor,win=ed.window,_86=false;
  if(txt){
  if(win.find){
  _86=win.find(txt,_84,_85,false,false,false,false);
  }else{
  var doc=ed.document;
  if(doc.selection){
  this._editor.focus();
  var _87=doc.body.createTextRange();
  var _88=doc.selection?doc.selection.createRange():null;
  if(_88){
  if(_85){
  _87.setEndPoint("EndToStart",_88);
  }else{
  _87.setEndPoint("StartToEnd",_88);
  }
  }
  var _89=_84?4:0;
  if(_85){
  _89=_89|1;
  }
  _86=_87.findText(txt,_87.text.length,_89);
  if(_86){
  _87.select();
  }
  }
  }
  }
  return _86;
  },_spellCheckFilter:function(_8a){
  var _8b=/<span class=["']incorrectWordPlaceHolder["'].*?>(.*?)<\/span>/g;
  return _8a.replace(_8b,"$1");
  }});
  _2.subscribe(_1._scopeName+".Editor.getPlugin",null,function(o){
  if(o.plugin){
  return;
  }
  var _8c=o.args.name.toLowerCase();
  if(_8c==="spellcheck"){
  o.plugin=new _3.editor.plugins.SpellCheck({url:("url" in o.args)?o.args.url:"",interactive:("interactive" in o.args)?o.args.interactive:false,bufferLength:("bufferLength" in o.args)?o.args.bufferLength:100,timeout:("timeout" in o.args)?o.args.timeout:30,exArgs:o.args});
  }
  });
  });
  