--- /dev/null
+tinyMCEPopup.requireLangPack();\r
+\r
+var SearchReplaceDialog = {\r
+ init : function(ed) {\r
+ var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
+\r
+ this.switchMode(m);\r
+\r
+ f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
+\r
+ // Focus input field\r
+ f[m + '_panel_searchstring'].focus();\r
+ },\r
+\r
+ switchMode : function(m) {\r
+ var f, lm = this.lastMode;\r
+\r
+ if (lm != m) {\r
+ f = document.forms[0];\r
+\r
+ if (lm) {\r
+ f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;\r
+ f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;\r
+ f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;\r
+ f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;\r
+ }\r
+\r
+ mcTabs.displayTab(m + '_tab', m + '_panel');\r
+ document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";\r
+ document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";\r
+ this.lastMode = m;\r
+ }\r
+ },\r
+\r
+ searchNext : function(a) {\r
+ var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;\r
+\r
+ // Get input\r
+ f = document.forms[0];\r
+ s = f[m + '_panel_searchstring'].value;\r
+ b = f[m + '_panel_backwardsu'].checked;\r
+ ca = f[m + '_panel_casesensitivebox'].checked;\r
+ rs = f['replace_panel_replacestring'].value;\r
+\r
+ if (s == '')\r
+ return;\r
+\r
+ function fix() {\r
+ // Correct Firefox graphics glitches\r
+ r = se.getRng().cloneRange();\r
+ ed.getDoc().execCommand('SelectAll', false, null);\r
+ se.setRng(r);\r
+ };\r
+\r
+ function replace() {\r
+ if (tinymce.isIE)\r
+ ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE\r
+ else\r
+ ed.getDoc().execCommand('InsertHTML', false, rs);\r
+ };\r
+\r
+ // IE flags\r
+ if (ca)\r
+ fl = fl | 4;\r
+\r
+ switch (a) {\r
+ case 'all':\r
+ // Move caret to beginning of text\r
+ ed.execCommand('SelectAll');\r
+ ed.selection.collapse(true);\r
+\r
+ if (tinymce.isIE) {\r
+ while (r.findText(s, b ? -1 : 1, fl)) {\r
+ r.scrollIntoView();\r
+ r.select();\r
+ replace();\r
+ fo = 1;\r
+\r
+ if (b) {\r
+ r.moveEnd("character", -(rs.length)); // Otherwise will loop forever\r
+ }\r
+ }\r
+\r
+ tinyMCEPopup.storeSelection();\r
+ } else {\r
+ while (w.find(s, ca, b, false, false, false, false)) {\r
+ replace();\r
+ fo = 1;\r
+ }\r
+ }\r
+\r
+ if (fo)\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
+ else\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+\r
+ return;\r
+\r
+ case 'current':\r
+ if (!ed.selection.isCollapsed())\r
+ replace();\r
+\r
+ break;\r
+ }\r
+\r
+ se.collapse(b);\r
+ r = se.getRng();\r
+\r
+ // Whats the point\r
+ if (!s)\r
+ return;\r
+\r
+ if (tinymce.isIE) {\r
+ if (r.findText(s, b ? -1 : 1, fl)) {\r
+ r.scrollIntoView();\r
+ r.select();\r
+ } else\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+\r
+ tinyMCEPopup.storeSelection();\r
+ } else {\r
+ if (!w.find(s, ca, b, false, false, false, false))\r
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
+ else\r
+ fix();\r
+ }\r
+ }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r