/* Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojox.editor.plugins.FindReplace"]){dojo._hasResource["dojox.editor.plugins.FindReplace"]=true;dojo.provide("dojox.editor.plugins.FindReplace");dojo.require("dijit._editor._Plugin");dojo.require("dijit.Toolbar");dojo.require("dijit.form.TextBox");dojo.require("dijit.form.CheckBox");dojo.require("dijit.form.Button");dojo.require("dijit.TooltipDialog");dojo.require("dijit.Menu");dojo.require("dijit.CheckedMenuItem");dojo.require("dojox.editor.plugins.ToolbarLineBreak");dojo.require("dojo.i18n");dojo.require("dojo.string");dojo.requireLocalization("dojox.editor.plugins","FindReplace",null,"ROOT,cs,de,es,fr,hu,it,ja,ko,pl,pt,ru,zh,zh-tw");dojo.experimental("dojox.editor.plugins.FindReplace");dojo.declare("dojox.editor.plugins._FindReplaceTextBox",[dijit._Widget,dijit._Templated],{textId:"",label:"",widget:null,widgetsInTemplate:true,templateString:""+""+""+"",postMixInProperties:function(){this.inherited(arguments);this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));this.textId=this.id+"_text";this.inherited(arguments);},postCreate:function(){this.textBox.attr("value","");this.disabled=this.textBox.attr("disabled");this.connect(this.textBox,"onChange","onChange");},_setValueAttr:function(_1){this.value=_1;this.textBox.attr("value",_1);},focus:function(){this.textBox.focus();},_setDisabledAttr:function(_2){this.disabled=_2;this.textBox.attr("disabled",_2);},onChange:function(_3){this.value=_3;}});dojo.declare("dojox.editor.plugins._FindReplaceCheckBox",[dijit._Widget,dijit._Templated],{checkId:"",label:"",widget:null,widgetsInTemplate:true,templateString:""+""+""+"",postMixInProperties:function(){this.inherited(arguments);this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));this.checkId=this.id+"_check";this.inherited(arguments);},postCreate:function(){this.checkBox.attr("checked",false);this.disabled=this.checkBox.attr("disabled");this.checkBox.isFocusable=function(){return false;};},_setValueAttr:function(_4){this.checkBox.attr("value",_4);},_getValueAttr:function(){return this.checkBox.attr("value");},focus:function(){this.checkBox.focus();},_setDisabledAttr:function(_5){this.disabled=_5;this.checkBox.attr("disabled",_5);}});dojo.declare("dojox.editor.plugins.FindReplace",[dijit._editor._Plugin],{buttonClass:dijit.form.ToggleButton,iconClassPrefix:"dijitAdditionalEditorIcon",_initButton:function(){var _6=dojo.i18n.getLocalization("dojox.editor.plugins","FindReplace");this.button=new dijit.form.ToggleButton({label:_6["findReplace"],showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"FindReplace",tabIndex:"-1",onChange:dojo.hitch(this,"_toggleFindReplace")});if(dojo.isOpera){this.button.attr("disabled",true);}this.connect(this.button,"attr",dojo.hitch(this,function(_7,_8){if(_7==="disabled"){this._toggleFindReplace((!_8&&this._displayed),true);}}));},setEditor:function(_9){this.editor=_9;this._initButton();},toggle:function(){this.button.attr("checked",!this.button.attr("checked"));},_toggleFindReplace:function(_a,_b){if(_a&&!dojo.isOpera){dojo.style(this._frToolbar.domNode,"display","block");if(!_b){this._displayed=true;}}else{dojo.style(this._frToolbar.domNode,"display","none");if(!_b){this._displayed=false;}}this.editor.resize();},setToolbar:function(_c){this.inherited(arguments);if(!dojo.isOpera){var _d=dojo.i18n.getLocalization("dojox.editor.plugins","FindReplace");this._frToolbar=new dijit.Toolbar();dojo.style(this._frToolbar.domNode,"display","none");dojo.place(this._frToolbar.domNode,_c.domNode,"after");this._frToolbar.startup();this._caseSensitive=new dojox.editor.plugins._FindReplaceCheckBox({label:_d["matchCase"]});this._backwards=new dojox.editor.plugins._FindReplaceCheckBox({label:_d["backwards"]});this._replaceAll=new dojox.editor.plugins._FindReplaceCheckBox({label:_d["replaceAll"]});this._findField=new dojox.editor.plugins._FindReplaceTextBox({label:_d.findLabel});this._frToolbar.addChild(this._findField);this._findButton=new dijit.form.Button({label:_d["findButton"],showLabel:true,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"FindRun"});this._frToolbar.addChild(this._findButton);this._frToolbar.addChild(this._caseSensitive);this._frToolbar.addChild(this._backwards);this._frToolbar.addChild(new dojox.editor.plugins._ToolbarLineBreak());this._replaceField=new dojox.editor.plugins._FindReplaceTextBox({label:_d.replaceLabel});this._frToolbar.addChild(this._replaceField);this._replaceButton=new dijit.form.Button({label:_d["replaceButton"],showLabel:true,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"ReplaceRun"});this._frToolbar.addChild(this._replaceButton);this._frToolbar.addChild(this._replaceAll);this._findButton.attr("disabled",true);this._replaceButton.attr("disabled",true);this.connect(this._findField,"onChange","_checkButtons");this.connect(this._replaceField,"onChange","_checkButtons");this.connect(this._findButton,"onClick","_find");this.connect(this._replaceButton,"onClick","_replace");this._replDialog=new dijit.TooltipDialog();this._replDialog.startup();this._replDialog.attr("content","");this._dialogTemplate=_d.replaceDialogText;}},_checkButtons:function(){var _e=this._findField.attr("value");var _f=this._replaceField.attr("value");if(_e){this._findButton.attr("disabled",false);}else{this._findButton.attr("disabled",true);}if(_e&&_f&&_e!==_f){this._replaceButton.attr("disabled",false);}else{this._replaceButton.attr("disabled",true);}},_find:function(){var txt=this._findField.attr("value");if(txt){var _10=this._caseSensitive.attr("value");var _11=this._backwards.attr("value");return this._findText(txt,_10,_11);}return false;},_replace:function(){var ed=this.editor;ed.focus();var txt=this._findField.attr("value");var _12=this._replaceField.attr("value");var _13=0;if(txt){if(this._replaceDialogTimeout){clearTimeout(this._replaceDialogTimeout);this._replaceDialogTimeout=null;dijit.popup.close(this._replDialog);}var _14=this._replaceAll.attr("value");var _15=this._caseSensitive.attr("value");var _16=this._backwards.attr("value");var _17=dojo.withGlobal(ed.window,"getSelectedText",dijit._editor.selection,[null]);if(dojo.isMoz){txt=dojo.trim(txt);_17=dojo.trim(_17);}var _18=this._filterRegexp(txt,!_15);if(_17&&_18.test(_17)){ed.execCommand("inserthtml",_12);_13++;}if(_14){var _19=this._findText(txt,_15,_16);var _1a=function(){ed.execCommand("inserthtml",_12);_13++;_19=this._findText(txt,_15,_16);if(_19){setTimeout(dojo.hitch(this,_1a),10);}else{this._replDialog.attr("content",dojo.string.substitute(this._dialogTemplate,{"0":""+_13}));dijit.popup.open({popup:this._replDialog,around:this._replaceButton.domNode});this._replaceDialogTimeout=setTimeout(dojo.hitch(this,function(){clearTimeout(this._replaceDialogTimeout);this._replaceDialogTimeout=null;dijit.popup.close(this._replDialog);}),5000);}};if(_19){var _1b=dojo.hitch(this,_1a);_1b();}}}},_findText:function(txt,_1c,_1d){var ed=this.editor;var win=ed.window;var _1e=false;if(txt){if(win.find){_1e=win.find(txt,_1c,_1d,false,false,false,false);}else{var doc=ed.document;if(doc.selection){this.editor.focus();var _1f=doc.body.createTextRange();var _20=doc.selection?doc.selection.createRange():null;if(_20){if(_1d){_1f.setEndPoint("EndToStart",_20);}else{_1f.setEndPoint("StartToEnd",_20);}}var _21=_1c?4:0;if(_1d){_21=_21|1;}_1e=_1f.findText(txt,null,_21);if(_1e){_1f.select();}}}}return _1e;},_filterRegexp:function(_22,_23){var rxp="";var c=null;for(var i=0;i<_22.length;i++){c=_22.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_22.charAt(i);break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp="^"+rxp+"$";if(_23){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}},destroy:function(){this.inherited(arguments);if(this._replaceDialogTimeout){clearTimeout(this._replaceDialogTimeout);this._replaceDialogTimeout=null;dijit.popup.close(this._replDialog);}if(this._frToolbar){this._frToolbar.destroyRecursive();this._frToolbar=null;}if(this._replDialog){this._replDialog.destroyRecursive();this._replDialog=null;}}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}var _24=o.args.name.toLowerCase();if(_24==="findreplace"){o.plugin=new dojox.editor.plugins.FindReplace({});}});}