AC_4897, AC_4898, AC_4899: Multifile uploader fixes.
[acontent.git] / docs / include / jscripts / tiny_mce / plugins / searchreplace / js / searchreplace.js
1 tinyMCEPopup.requireLangPack();\r
2 \r
3 var SearchReplaceDialog = {\r
4         init : function(ed) {\r
5                 var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
6 \r
7                 this.switchMode(m);\r
8 \r
9                 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
10 \r
11                 // Focus input field\r
12                 f[m + '_panel_searchstring'].focus();\r
13         },\r
14 \r
15         switchMode : function(m) {\r
16                 var f, lm = this.lastMode;\r
17 \r
18                 if (lm != m) {\r
19                         f = document.forms[0];\r
20 \r
21                         if (lm) {\r
22                                 f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;\r
23                                 f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;\r
24                                 f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;\r
25                                 f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;\r
26                         }\r
27 \r
28                         mcTabs.displayTab(m + '_tab',  m + '_panel');\r
29                         document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";\r
30                         document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";\r
31                         this.lastMode = m;\r
32                 }\r
33         },\r
34 \r
35         searchNext : function(a) {\r
36                 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
37 \r
38                 // Get input\r
39                 f = document.forms[0];\r
40                 s = f[m + '_panel_searchstring'].value;\r
41                 b = f[m + '_panel_backwardsu'].checked;\r
42                 ca = f[m + '_panel_casesensitivebox'].checked;\r
43                 rs = f['replace_panel_replacestring'].value;\r
44 \r
45                 if (s == '')\r
46                         return;\r
47 \r
48                 function fix() {\r
49                         // Correct Firefox graphics glitches\r
50                         r = se.getRng().cloneRange();\r
51                         ed.getDoc().execCommand('SelectAll', false, null);\r
52                         se.setRng(r);\r
53                 };\r
54 \r
55                 function replace() {\r
56                         if (tinymce.isIE)\r
57                                 ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE\r
58                         else\r
59                                 ed.getDoc().execCommand('InsertHTML', false, rs);\r
60                 };\r
61 \r
62                 // IE flags\r
63                 if (ca)\r
64                         fl = fl | 4;\r
65 \r
66                 switch (a) {\r
67                         case 'all':\r
68                                 // Move caret to beginning of text\r
69                                 ed.execCommand('SelectAll');\r
70                                 ed.selection.collapse(true);\r
71 \r
72                                 if (tinymce.isIE) {\r
73                                         while (r.findText(s, b ? -1 : 1, fl)) {\r
74                                                 r.scrollIntoView();\r
75                                                 r.select();\r
76                                                 replace();\r
77                                                 fo = 1;\r
78 \r
79                                                 if (b) {\r
80                                                         r.moveEnd("character", -(rs.length)); // Otherwise will loop forever\r
81                                                 }\r
82                                         }\r
83 \r
84                                         tinyMCEPopup.storeSelection();\r
85                                 } else {\r
86                                         while (w.find(s, ca, b, false, false, false, false)) {\r
87                                                 replace();\r
88                                                 fo = 1;\r
89                                         }\r
90                                 }\r
91 \r
92                                 if (fo)\r
93                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
94                                 else\r
95                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
96 \r
97                                 return;\r
98 \r
99                         case 'current':\r
100                                 if (!ed.selection.isCollapsed())\r
101                                         replace();\r
102 \r
103                                 break;\r
104                 }\r
105 \r
106                 se.collapse(b);\r
107                 r = se.getRng();\r
108 \r
109                 // Whats the point\r
110                 if (!s)\r
111                         return;\r
112 \r
113                 if (tinymce.isIE) {\r
114                         if (r.findText(s, b ? -1 : 1, fl)) {\r
115                                 r.scrollIntoView();\r
116                                 r.select();\r
117                         } else\r
118                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
119 \r
120                         tinyMCEPopup.storeSelection();\r
121                 } else {\r
122                         if (!w.find(s, ca, b, false, false, false, false))\r
123                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
124                         else\r
125                                 fix();\r
126                 }\r
127         }\r
128 };\r
129 \r
130 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r