- EditArea.prototype.show_search = function(){\r
- if(_$("area_search_replace").style.visibility=="visible"){\r
- this.hidden_search();\r
- }else{\r
- this.open_inline_popup("area_search_replace");\r
- var text= this.area_get_selection();\r
- var search= text.split("\n")[0];\r
- _$("area_search").value= search;\r
- _$("area_search").focus();\r
- }\r
- };\r
- \r
- EditArea.prototype.hidden_search= function(){\r
- /*_$("area_search_replace").style.visibility="hidden";\r
- this.textarea.focus();\r
- var icon= _$("search");\r
- setAttribute(icon, "class", getAttribute(icon, "class").replace(/ selected/g, "") );*/\r
- this.close_inline_popup("area_search_replace");\r
- };\r
- \r
- EditArea.prototype.area_search= function(mode){\r
- \r
- if(!mode)\r
- mode="search";\r
- _$("area_search_msg").innerHTML=""; \r
- var search=_$("area_search").value; \r
- \r
- this.textarea.focus(); \r
- this.textarea.textareaFocused=true;\r
- \r
- var infos= this.get_selection_infos(); \r
- var start= infos["selectionStart"];\r
- var pos=-1;\r
- var pos_begin=-1;\r
- var length=search.length;\r
- \r
- if(_$("area_search_replace").style.visibility!="visible"){\r
- this.show_search();\r
- return;\r
- }\r
- if(search.length==0){\r
- _$("area_search_msg").innerHTML=this.get_translation("search_field_empty");\r
- return;\r
- }\r
- // advance to the next occurence if no text selected\r
- if(mode!="replace" ){\r
- if(_$("area_search_reg_exp").checked)\r
- start++;\r
- else\r
- start+= search.length;\r
- }\r
- \r
- //search\r
- if(_$("area_search_reg_exp").checked){\r
- // regexp search\r
- var opt="m";\r
- if(!_$("area_search_match_case").checked)\r
- opt+="i";\r
- var reg= new RegExp(search, opt);\r
- pos= infos["full_text"].substr(start).search(reg);\r
- pos_begin= infos["full_text"].search(reg);\r
- if(pos!=-1){\r
- pos+=start;\r
- length=infos["full_text"].substr(start).match(reg)[0].length;\r
- }else if(pos_begin!=-1){\r
- length=infos["full_text"].match(reg)[0].length;\r
- }\r
- }else{\r
- if(_$("area_search_match_case").checked){\r
- pos= infos["full_text"].indexOf(search, start); \r
- pos_begin= infos["full_text"].indexOf(search); \r
- }else{\r
- pos= infos["full_text"].toLowerCase().indexOf(search.toLowerCase(), start); \r
- pos_begin= infos["full_text"].toLowerCase().indexOf(search.toLowerCase()); \r
- } \r
- }\r
- \r
- // interpret result\r
- if(pos==-1 && pos_begin==-1){\r
- _$("area_search_msg").innerHTML="<strong>"+search+"</strong> "+this.get_translation("not_found");\r
- return;\r
- }else if(pos==-1 && pos_begin != -1){\r
- begin= pos_begin;\r
- _$("area_search_msg").innerHTML=this.get_translation("restart_search_at_begin");\r
- }else\r
- begin= pos;\r
- \r
- //_$("area_search_msg").innerHTML+="<strong>"+search+"</strong> found at "+begin+" strat at "+start+" pos "+pos+" curs"+ infos["indexOfCursor"]+".";\r
- if(mode=="replace" && pos==infos["indexOfCursor"]){\r
- var replace= _$("area_replace").value;\r
- var new_text=""; \r
- if(_$("area_search_reg_exp").checked){\r
- var opt="m";\r
- if(!_$("area_search_match_case").checked)\r
- opt+="i";\r
- var reg= new RegExp(search, opt);\r
- new_text= infos["full_text"].substr(0, begin) + infos["full_text"].substr(start).replace(reg, replace);\r
- }else{\r
- new_text= infos["full_text"].substr(0, begin) + replace + infos["full_text"].substr(begin + length);\r
- }\r
- this.textarea.value=new_text;\r
- this.area_select(begin, length);\r
- this.area_search();\r
- }else\r
- this.area_select(begin, length);\r
- };\r
- \r
- \r
- \r
- \r
- EditArea.prototype.area_replace= function(){ \r
- this.area_search("replace");\r
- };\r
- \r
- EditArea.prototype.area_replace_all= function(){\r
- /* this.area_select(0, 0);\r
- _$("area_search_msg").innerHTML="";\r
- while(_$("area_search_msg").innerHTML==""){\r
- this.area_replace();\r
- }*/\r
- \r
- var base_text= this.textarea.value;\r
- var search= _$("area_search").value; \r
- var replace= _$("area_replace").value;\r
- if(search.length==0){\r
- _$("area_search_msg").innerHTML=this.get_translation("search_field_empty");\r
- return ;\r
- }\r
- \r
- var new_text="";\r
- var nb_change=0;\r
- if(_$("area_search_reg_exp").checked){\r
- // regExp\r
- var opt="mg";\r
- if(!_$("area_search_match_case").checked)\r
- opt+="i";\r
- var reg= new RegExp(search, opt);\r
- nb_change= infos["full_text"].match(reg).length;\r
- new_text= infos["full_text"].replace(reg, replace);\r
- \r
- }else{\r
- \r
- if(_$("area_search_match_case").checked){\r
- var tmp_tab=base_text.split(search);\r
- nb_change= tmp_tab.length -1 ;\r
- new_text= tmp_tab.join(replace);\r
- }else{\r
- // case insensitive\r
- var lower_value=base_text.toLowerCase();\r
- var lower_search=search.toLowerCase();\r
- \r
- var start=0;\r
- var pos= lower_value.indexOf(lower_search); \r
- while(pos!=-1){\r
- nb_change++;\r
- new_text+= this.textarea.value.substring(start , pos)+replace;\r
- start=pos+ search.length;\r
- pos= lower_value.indexOf(lower_search, pos+1);\r
- }\r
- new_text+= this.textarea.value.substring(start); \r
- }\r
- } \r
- if(new_text==base_text){\r
- _$("area_search_msg").innerHTML="<strong>"+search+"</strong> "+this.get_translation("not_found");\r
- }else{\r
- this.textarea.value= new_text;\r
- _$("area_search_msg").innerHTML="<strong>"+nb_change+"</strong> "+this.get_translation("occurrence_replaced");\r
- // firefox and opera doesn't manage with the focus if it's done directly\r
- //editArea.textarea.focus();editArea.textarea.textareaFocused=true;\r
- setTimeout("editArea.textarea.focus();editArea.textarea.textareaFocused=true;", 100);\r
- }\r
- \r
- \r
- };\r