bug 2509: fix file permissions
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / js / tinymce / jscripts / tiny_mce / plugins / advlink / jscripts / functions.js
1 /* Functions for the advlink plugin popup */\r
2 \r
3 var templates = {\r
4         "window.open" : "window.open('${url}','${target}','${options}')"\r
5 };\r
6 \r
7 function preinit() {\r
8         // Initialize\r
9         tinyMCE.setWindowArg('mce_windowresize', false);\r
10 \r
11         // Import external list url javascript\r
12         var url = tinyMCE.getParam("external_link_list_url");\r
13         if (url != null) {\r
14                 // Fix relative\r
15                 if (url.charAt(0) != '/' && url.indexOf('://') == -1)\r
16                         url = tinyMCE.documentBasePath + "/" + url;\r
17 \r
18                 document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');\r
19         }\r
20 }\r
21 \r
22 function changeClass() {\r
23         var formObj = document.forms[0];\r
24         formObj.classes.value = getSelectValue(formObj, 'classlist');\r
25 }\r
26 \r
27 function init() {\r
28         tinyMCEPopup.resizeToInnerSize();\r
29 \r
30         var formObj = document.forms[0];\r
31         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
32         var elm = inst.getFocusElement();\r
33         var action = "insert";\r
34         var html;\r
35 \r
36         document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');\r
37         document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');\r
38         document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');\r
39         document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');\r
40         document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');\r
41 \r
42         // Link list\r
43         html = getLinkListHTML('linklisthref','href');\r
44         if (html == "")\r
45                 document.getElementById("linklisthrefrow").style.display = 'none';\r
46         else\r
47                 document.getElementById("linklisthrefcontainer").innerHTML = html;\r
48 \r
49         // Resize some elements\r
50         if (isVisible('hrefbrowser'))\r
51                 document.getElementById('href').style.width = '260px';\r
52 \r
53         if (isVisible('popupurlbrowser'))\r
54                 document.getElementById('popupurl').style.width = '180px';\r
55 \r
56         elm = tinyMCE.getParentElement(elm, "a");\r
57         if (elm != null && elm.nodeName == "A")\r
58                 action = "update";\r
59 \r
60         formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); \r
61 \r
62         setPopupControlsDisabled(true);\r
63 \r
64         if (action == "update") {\r
65                 var href = tinyMCE.getAttrib(elm, 'href');\r
66 \r
67                 href = convertURL(href, elm, true);\r
68 \r
69                 // Use mce_href if found\r
70                 var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');\r
71                 if (mceRealHref != "") {\r
72                         href = mceRealHref;\r
73 \r
74                         if (tinyMCE.getParam('convert_urls'))\r
75                                 href = convertURL(href, elm, true);\r
76                 }\r
77 \r
78                 var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));\r
79 \r
80                 // Setup form data\r
81                 setFormValue('href', href);\r
82                 setFormValue('title', tinyMCE.getAttrib(elm, 'title'));\r
83                 setFormValue('id', tinyMCE.getAttrib(elm, 'id'));\r
84                 setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));\r
85                 setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));\r
86                 setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));\r
87                 setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));\r
88                 setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));\r
89                 setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));\r
90                 setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));\r
91                 setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
92                 setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
93                 setFormValue('type', tinyMCE.getAttrib(elm, 'type'));\r
94                 setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));\r
95                 setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));\r
96                 setFormValue('onclick', onclick);\r
97                 setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));\r
98                 setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));\r
99                 setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));\r
100                 setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));\r
101                 setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));\r
102                 setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));\r
103                 setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));\r
104                 setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));\r
105                 setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));\r
106                 setFormValue('target', tinyMCE.getAttrib(elm, 'target'));\r
107                 setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));\r
108 \r
109                 // Parse onclick data\r
110                 if (onclick != null && onclick.indexOf('window.open') != -1)\r
111                         parseWindowOpen(onclick);\r
112                 else\r
113                         parseFunction(onclick);\r
114 \r
115                 // Select by the values\r
116                 selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));\r
117                 selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));\r
118                 selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));\r
119                 selectByValue(formObj, 'linklisthref', href);\r
120 \r
121                 if (href.charAt(0) == '#')\r
122                         selectByValue(formObj, 'anchorlist', href);\r
123 \r
124                 addClassesToList('classlist', 'advlink_styles');\r
125 \r
126                 selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);\r
127                 selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);\r
128         } else\r
129                 addClassesToList('classlist', 'advlink_styles');\r
130 \r
131         window.focus();\r
132 }\r
133 \r
134 function checkPrefix(n) {\r
135         if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))\r
136                 n.value = 'mailto:' + n.value;\r
137 \r
138         if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))\r
139                 n.value = 'http://' + n.value;\r
140 }\r
141 \r
142 function setFormValue(name, value) {\r
143         document.forms[0].elements[name].value = value;\r
144 }\r
145 \r
146 function convertURL(url, node, on_save) {\r
147         return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");\r
148 }\r
149 \r
150 function parseWindowOpen(onclick) {\r
151         var formObj = document.forms[0];\r
152 \r
153         // Preprocess center code\r
154         if (onclick.indexOf('return false;') != -1) {\r
155                 formObj.popupreturn.checked = true;\r
156                 onclick = onclick.replace('return false;', '');\r
157         } else\r
158                 formObj.popupreturn.checked = false;\r
159 \r
160         var onClickData = parseLink(onclick);\r
161 \r
162         if (onClickData != null) {\r
163                 formObj.ispopup.checked = true;\r
164                 setPopupControlsDisabled(false);\r
165 \r
166                 var onClickWindowOptions = parseOptions(onClickData['options']);\r
167                 var url = onClickData['url'];\r
168 \r
169                 if (tinyMCE.getParam('convert_urls'))\r
170                         url = convertURL(url, null, true);\r
171 \r
172                 formObj.popupname.value = onClickData['target'];\r
173                 formObj.popupurl.value = url;\r
174                 formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');\r
175                 formObj.popupheight.value = getOption(onClickWindowOptions, 'height');\r
176 \r
177                 formObj.popupleft.value = getOption(onClickWindowOptions, 'left');\r
178                 formObj.popuptop.value = getOption(onClickWindowOptions, 'top');\r
179 \r
180                 if (formObj.popupleft.value.indexOf('screen') != -1)\r
181                         formObj.popupleft.value = "c";\r
182 \r
183                 if (formObj.popuptop.value.indexOf('screen') != -1)\r
184                         formObj.popuptop.value = "c";\r
185 \r
186                 formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";\r
187                 formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";\r
188                 formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";\r
189                 formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";\r
190                 formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";\r
191                 formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";\r
192                 formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";\r
193 \r
194                 buildOnClick();\r
195         }\r
196 }\r
197 \r
198 function parseFunction(onclick) {\r
199         var formObj = document.forms[0];\r
200         var onClickData = parseLink(onclick);\r
201 \r
202         // TODO: Add stuff here\r
203 }\r
204 \r
205 function getOption(opts, name) {\r
206         return typeof(opts[name]) == "undefined" ? "" : opts[name];\r
207 }\r
208 \r
209 function setPopupControlsDisabled(state) {\r
210         var formObj = document.forms[0];\r
211 \r
212         formObj.popupname.disabled = state;\r
213         formObj.popupurl.disabled = state;\r
214         formObj.popupwidth.disabled = state;\r
215         formObj.popupheight.disabled = state;\r
216         formObj.popupleft.disabled = state;\r
217         formObj.popuptop.disabled = state;\r
218         formObj.popuplocation.disabled = state;\r
219         formObj.popupscrollbars.disabled = state;\r
220         formObj.popupmenubar.disabled = state;\r
221         formObj.popupresizable.disabled = state;\r
222         formObj.popuptoolbar.disabled = state;\r
223         formObj.popupstatus.disabled = state;\r
224         formObj.popupreturn.disabled = state;\r
225         formObj.popupdependent.disabled = state;\r
226 \r
227         setBrowserDisabled('popupurlbrowser', state);\r
228 }\r
229 \r
230 function parseLink(link) {\r
231         link = link.replace(new RegExp('&#39;', 'g'), "'");\r
232 \r
233         var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");\r
234 \r
235         // Is function name a template function\r
236         var template = templates[fnName];\r
237         if (template) {\r
238                 // Build regexp\r
239                 var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));\r
240                 var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";\r
241                 var replaceStr = "";\r
242                 for (var i=0; i<variableNames.length; i++) {\r
243                         // Is string value\r
244                         if (variableNames[i].indexOf("'${") != -1)\r
245                                 regExp += "'(.*)'";\r
246                         else // Number value\r
247                                 regExp += "([0-9]*)";\r
248 \r
249                         replaceStr += "$" + (i+1);\r
250 \r
251                         // Cleanup variable name\r
252                         variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");\r
253 \r
254                         if (i != variableNames.length-1) {\r
255                                 regExp += "\\s*,\\s*";\r
256                                 replaceStr += "<delim>";\r
257                         } else\r
258                                 regExp += ".*";\r
259                 }\r
260 \r
261                 regExp += "\\);?";\r
262 \r
263                 // Build variable array\r
264                 var variables = new Array();\r
265                 variables["_function"] = fnName;\r
266                 var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');\r
267                 for (var i=0; i<variableNames.length; i++)\r
268                         variables[variableNames[i]] = variableValues[i];\r
269 \r
270                 return variables;\r
271         }\r
272 \r
273         return null;\r
274 }\r
275 \r
276 function parseOptions(opts) {\r
277         if (opts == null || opts == "")\r
278                 return new Array();\r
279 \r
280         // Cleanup the options\r
281         opts = opts.toLowerCase();\r
282         opts = opts.replace(/;/g, ",");\r
283         opts = opts.replace(/[^0-9a-z=,]/g, "");\r
284 \r
285         var optionChunks = opts.split(',');\r
286         var options = new Array();\r
287 \r
288         for (var i=0; i<optionChunks.length; i++) {\r
289                 var parts = optionChunks[i].split('=');\r
290 \r
291                 if (parts.length == 2)\r
292                         options[parts[0]] = parts[1];\r
293         }\r
294 \r
295         return options;\r
296 }\r
297 \r
298 function buildOnClick() {\r
299         var formObj = document.forms[0];\r
300 \r
301         if (!formObj.ispopup.checked) {\r
302                 formObj.onclick.value = "";\r
303                 return;\r
304         }\r
305 \r
306         var onclick = "window.open('";\r
307         var url = formObj.popupurl.value;\r
308 \r
309         if (tinyMCE.getParam('convert_urls'))\r
310                 url = convertURL(url, null, true);\r
311 \r
312         onclick += url + "','";\r
313         onclick += formObj.popupname.value + "','";\r
314 \r
315         if (formObj.popuplocation.checked)\r
316                 onclick += "location=yes,";\r
317 \r
318         if (formObj.popupscrollbars.checked)\r
319                 onclick += "scrollbars=yes,";\r
320 \r
321         if (formObj.popupmenubar.checked)\r
322                 onclick += "menubar=yes,";\r
323 \r
324         if (formObj.popupresizable.checked)\r
325                 onclick += "resizable=yes,";\r
326 \r
327         if (formObj.popuptoolbar.checked)\r
328                 onclick += "toolbar=yes,";\r
329 \r
330         if (formObj.popupstatus.checked)\r
331                 onclick += "status=yes,";\r
332 \r
333         if (formObj.popupdependent.checked)\r
334                 onclick += "dependent=yes,";\r
335 \r
336         if (formObj.popupwidth.value != "")\r
337                 onclick += "width=" + formObj.popupwidth.value + ",";\r
338 \r
339         if (formObj.popupheight.value != "")\r
340                 onclick += "height=" + formObj.popupheight.value + ",";\r
341 \r
342         if (formObj.popupleft.value != "") {\r
343                 if (formObj.popupleft.value != "c")\r
344                         onclick += "left=" + formObj.popupleft.value + ",";\r
345                 else\r
346                         onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";\r
347         }\r
348 \r
349         if (formObj.popuptop.value != "") {\r
350                 if (formObj.popuptop.value != "c")\r
351                         onclick += "top=" + formObj.popuptop.value + ",";\r
352                 else\r
353                         onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";\r
354         }\r
355 \r
356         if (onclick.charAt(onclick.length-1) == ',')\r
357                 onclick = onclick.substring(0, onclick.length-1);\r
358 \r
359         onclick += "');";\r
360 \r
361         if (formObj.popupreturn.checked)\r
362                 onclick += "return false;";\r
363 \r
364         // tinyMCE.debug(onclick);\r
365 \r
366         formObj.onclick.value = onclick;\r
367 \r
368         if (formObj.href.value == "")\r
369                 formObj.href.value = url;\r
370 }\r
371 \r
372 function setAttrib(elm, attrib, value) {\r
373         var formObj = document.forms[0];\r
374         var valueElm = formObj.elements[attrib.toLowerCase()];\r
375 \r
376         if (typeof(value) == "undefined" || value == null) {\r
377                 value = "";\r
378 \r
379                 if (valueElm)\r
380                         value = valueElm.value;\r
381         }\r
382 \r
383         if (value != "") {\r
384                 elm.setAttribute(attrib.toLowerCase(), value);\r
385 \r
386                 if (attrib == "style")\r
387                         attrib = "style.cssText";\r
388 \r
389                 if (attrib.substring(0, 2) == 'on')\r
390                         value = 'return true;' + value;\r
391 \r
392                 if (attrib == "class")\r
393                         attrib = "className";\r
394 \r
395                 eval('elm.' + attrib + "=value;");\r
396         } else\r
397                 elm.removeAttribute(attrib);\r
398 }\r
399 \r
400 function getAnchorListHTML(id, target) {\r
401         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
402         var nodes = inst.getBody().getElementsByTagName("a"), name, i;\r
403         var html = "";\r
404 \r
405         html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';\r
406         html += 'this.options[this.selectedIndex].value;">';\r
407         html += '<option value="">---</option>';\r
408 \r
409         for (i=0; i<nodes.length; i++) {\r
410                 if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")\r
411                         html += '<option value="#' + name + '">' + name + '</option>';\r
412         }\r
413 \r
414         html += '</select>';\r
415 \r
416         return html;\r
417 }\r
418 \r
419 function insertAction() {\r
420         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
421         var elm = inst.getFocusElement();\r
422 \r
423         checkPrefix(document.forms[0].href);\r
424 \r
425         elm = tinyMCE.getParentElement(elm, "a");\r
426 \r
427         tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
428 \r
429         // Create new anchor elements\r
430         if (elm == null) {\r
431                 if (tinyMCE.isSafari)\r
432                         tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');\r
433                 else\r
434                         tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");\r
435 \r
436                 var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");\r
437                 for (var i=0; i<elementArray.length; i++) {\r
438                         var elm = elementArray[i];\r
439 \r
440                         // Move cursor to end\r
441                         try {\r
442                                 tinyMCE.selectedInstance.selection.collapse(false);\r
443                         } catch (ex) {\r
444                                 // Ignore\r
445                         }\r
446 \r
447                         // Move cursor behind the new anchor\r
448                         // Don't remember why this was needed so it's now removed\r
449                         /*\r
450                         if (tinyMCE.isGecko) {\r
451                                 var sp = inst.getDoc().createTextNode(" ");\r
452 \r
453                                 if (elm.nextSibling)\r
454                                         elm.parentNode.insertBefore(sp, elm.nextSibling);\r
455                                 else\r
456                                         elm.parentNode.appendChild(sp);\r
457 \r
458                                 // Set range after link\r
459                                 var rng = inst.getDoc().createRange();\r
460                                 rng.setStartAfter(elm);\r
461                                 rng.setEndAfter(elm);\r
462 \r
463                                 // Update selection\r
464                                 var sel = inst.getSel();\r
465                                 sel.removeAllRanges();\r
466                                 sel.addRange(rng);\r
467                         }\r
468                         */\r
469 \r
470                         setAllAttribs(elm);\r
471                 }\r
472         } else\r
473                 setAllAttribs(elm);\r
474 \r
475         tinyMCE._setEventsEnabled(inst.getBody(), false);\r
476         tinyMCEPopup.execCommand("mceEndUndoLevel");\r
477         tinyMCEPopup.close();\r
478 }\r
479 \r
480 function setAllAttribs(elm) {\r
481         var formObj = document.forms[0];\r
482         var href = formObj.href.value;\r
483         var target = getSelectValue(formObj, 'targetlist');\r
484 \r
485         // Make anchors absolute\r
486         if (href.charAt(0) != '#' && tinyMCE.getParam('convert_urls'))\r
487                 href = convertURL(href, elm);\r
488 \r
489         setAttrib(elm, 'href', href);\r
490         setAttrib(elm, 'mce_href', href);\r
491         setAttrib(elm, 'title');\r
492         setAttrib(elm, 'target', target == '_self' ? '' : target);\r
493         setAttrib(elm, 'id');\r
494         setAttrib(elm, 'style');\r
495         setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
496         setAttrib(elm, 'rel');\r
497         setAttrib(elm, 'rev');\r
498         setAttrib(elm, 'charset');\r
499         setAttrib(elm, 'hreflang');\r
500         setAttrib(elm, 'dir');\r
501         setAttrib(elm, 'lang');\r
502         setAttrib(elm, 'tabindex');\r
503         setAttrib(elm, 'accesskey');\r
504         setAttrib(elm, 'type');\r
505         setAttrib(elm, 'onfocus');\r
506         setAttrib(elm, 'onblur');\r
507         setAttrib(elm, 'onclick');\r
508         setAttrib(elm, 'ondblclick');\r
509         setAttrib(elm, 'onmousedown');\r
510         setAttrib(elm, 'onmouseup');\r
511         setAttrib(elm, 'onmouseover');\r
512         setAttrib(elm, 'onmousemove');\r
513         setAttrib(elm, 'onmouseout');\r
514         setAttrib(elm, 'onkeypress');\r
515         setAttrib(elm, 'onkeydown');\r
516         setAttrib(elm, 'onkeyup');\r
517 \r
518         // Refresh in old MSIE\r
519         if (tinyMCE.isMSIE5)\r
520                 elm.outerHTML = elm.outerHTML;\r
521 }\r
522 \r
523 function getSelectValue(form_obj, field_name) {\r
524         var elm = form_obj.elements[field_name];\r
525 \r
526         if (elm == null || elm.options == null)\r
527                 return "";\r
528 \r
529         return elm.options[elm.selectedIndex].value;\r
530 }\r
531 \r
532 function getLinkListHTML(elm_id, target_form_element, onchange_func) {\r
533         if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)\r
534                 return "";\r
535 \r
536         var html = "";\r
537 \r
538         html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
539         html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
540         html += 'this.options[this.selectedIndex].value;';\r
541 \r
542         if (typeof(onchange_func) != "undefined")\r
543                 html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
544 \r
545         html += '"><option value="">---</option>';\r
546 \r
547         for (var i=0; i<tinyMCELinkList.length; i++)\r
548                 html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';\r
549 \r
550         html += '</select>';\r
551 \r
552         return html;\r
553 \r
554         // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
555 }\r
556 \r
557 function getTargetListHTML(elm_id, target_form_element) {\r
558         var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');\r
559         var html = '';\r
560 \r
561         html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
562         html += 'this.options[this.selectedIndex].value;">';\r
563 \r
564         html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';\r
565         html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';\r
566         html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';\r
567         html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';\r
568 \r
569         for (var i=0; i<targets.length; i++) {\r
570                 var key, value;\r
571 \r
572                 if (targets[i] == "")\r
573                         continue;\r
574 \r
575                 key = targets[i].split('=')[0];\r
576                 value = targets[i].split('=')[1];\r
577 \r
578                 html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';\r
579         }\r
580 \r
581         html += '</select>';\r
582 \r
583         return html;\r
584 }\r
585 \r
586 // While loading\r
587 preinit();\r