--- /dev/null
+ 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