webcit_before_automake is now the trunk
[citadel.git] / webcit / 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 setFormValue(name, value) {\r
135         document.forms[0].elements[name].value = value;\r
136 }\r
137 \r
138 function convertURL(url, node, on_save) {\r
139         return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");\r
140 }\r
141 \r
142 function parseWindowOpen(onclick) {\r
143         var formObj = document.forms[0];\r
144 \r
145         // Preprocess center code\r
146         if (onclick.indexOf('return false;') != -1) {\r
147                 formObj.popupreturn.checked = true;\r
148                 onclick = onclick.replace('return false;', '');\r
149         }\r
150 \r
151         var onClickData = parseLink(onclick);\r
152 \r
153         if (onClickData != null) {\r
154                 formObj.ispopup.checked = true;\r
155                 setPopupControlsDisabled(false);\r
156 \r
157                 var onClickWindowOptions = parseOptions(onClickData['options']);\r
158                 var url = onClickData['url'];\r
159 \r
160                 if (tinyMCE.getParam('convert_urls'))\r
161                         url = convertURL(url, null, true);\r
162 \r
163                 formObj.popupname.value = onClickData['target'];\r
164                 formObj.popupurl.value = url;\r
165                 formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');\r
166                 formObj.popupheight.value = getOption(onClickWindowOptions, 'height');\r
167 \r
168                 formObj.popupleft.value = getOption(onClickWindowOptions, 'left');\r
169                 formObj.popuptop.value = getOption(onClickWindowOptions, 'top');\r
170 \r
171                 if (formObj.popupleft.value.indexOf('screen') != -1)\r
172                         formObj.popupleft.value = "c";\r
173 \r
174                 if (formObj.popuptop.value.indexOf('screen') != -1)\r
175                         formObj.popuptop.value = "c";\r
176 \r
177                 formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";\r
178                 formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";\r
179                 formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";\r
180                 formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";\r
181                 formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";\r
182                 formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";\r
183                 formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";\r
184 \r
185                 buildOnClick();\r
186         }\r
187 }\r
188 \r
189 function parseFunction(onclick) {\r
190         var formObj = document.forms[0];\r
191         var onClickData = parseLink(onclick);\r
192 \r
193         // TODO: Add stuff here\r
194 }\r
195 \r
196 function getOption(opts, name) {\r
197         return typeof(opts[name]) == "undefined" ? "" : opts[name];\r
198 }\r
199 \r
200 function setPopupControlsDisabled(state) {\r
201         var formObj = document.forms[0];\r
202 \r
203         formObj.popupname.disabled = state;\r
204         formObj.popupurl.disabled = state;\r
205         formObj.popupwidth.disabled = state;\r
206         formObj.popupheight.disabled = state;\r
207         formObj.popupleft.disabled = state;\r
208         formObj.popuptop.disabled = state;\r
209         formObj.popuplocation.disabled = state;\r
210         formObj.popupscrollbars.disabled = state;\r
211         formObj.popupmenubar.disabled = state;\r
212         formObj.popupresizable.disabled = state;\r
213         formObj.popuptoolbar.disabled = state;\r
214         formObj.popupstatus.disabled = state;\r
215         formObj.popupreturn.disabled = state;\r
216         formObj.popupdependent.disabled = state;\r
217 \r
218         setBrowserDisabled('popupurlbrowser', state);\r
219 }\r
220 \r
221 function parseLink(link) {\r
222         link = link.replace(new RegExp('&#39;', 'g'), "'");\r
223 \r
224         var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");\r
225 \r
226         // Is function name a template function\r
227         var template = templates[fnName];\r
228         if (template) {\r
229                 // Build regexp\r
230                 var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));\r
231                 var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";\r
232                 var replaceStr = "";\r
233                 for (var i=0; i<variableNames.length; i++) {\r
234                         // Is string value\r
235                         if (variableNames[i].indexOf("'${") != -1)\r
236                                 regExp += "'(.*)'";\r
237                         else // Number value\r
238                                 regExp += "([0-9]*)";\r
239 \r
240                         replaceStr += "$" + (i+1);\r
241 \r
242                         // Cleanup variable name\r
243                         variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");\r
244 \r
245                         if (i != variableNames.length-1) {\r
246                                 regExp += "\\s*,\\s*";\r
247                                 replaceStr += "<delim>";\r
248                         } else\r
249                                 regExp += ".*";\r
250                 }\r
251 \r
252                 regExp += "\\);?";\r
253 \r
254                 // Build variable array\r
255                 var variables = new Array();\r
256                 variables["_function"] = fnName;\r
257                 var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');\r
258                 for (var i=0; i<variableNames.length; i++)\r
259                         variables[variableNames[i]] = variableValues[i];\r
260 \r
261                 return variables;\r
262         }\r
263 \r
264         return null;\r
265 }\r
266 \r
267 function parseOptions(opts) {\r
268         if (opts == null || opts == "")\r
269                 return new Array();\r
270 \r
271         // Cleanup the options\r
272         opts = opts.toLowerCase();\r
273         opts = opts.replace(/;/g, ",");\r
274         opts = opts.replace(/[^0-9a-z=,]/g, "");\r
275 \r
276         var optionChunks = opts.split(',');\r
277         var options = new Array();\r
278 \r
279         for (var i=0; i<optionChunks.length; i++) {\r
280                 var parts = optionChunks[i].split('=');\r
281 \r
282                 if (parts.length == 2)\r
283                         options[parts[0]] = parts[1];\r
284         }\r
285 \r
286         return options;\r
287 }\r
288 \r
289 function buildOnClick() {\r
290         var formObj = document.forms[0];\r
291 \r
292         if (!formObj.ispopup.checked) {\r
293                 formObj.onclick.value = "";\r
294                 return;\r
295         }\r
296 \r
297         var onclick = "window.open('";\r
298         var url = formObj.popupurl.value;\r
299 \r
300         if (tinyMCE.getParam('convert_urls'))\r
301                 url = convertURL(url, null, true);\r
302 \r
303         onclick += url + "','";\r
304         onclick += formObj.popupname.value + "','";\r
305 \r
306         if (formObj.popuplocation.checked)\r
307                 onclick += "location=yes,";\r
308 \r
309         if (formObj.popupscrollbars.checked)\r
310                 onclick += "scrollbars=yes,";\r
311 \r
312         if (formObj.popupmenubar.checked)\r
313                 onclick += "menubar=yes,";\r
314 \r
315         if (formObj.popupresizable.checked)\r
316                 onclick += "resizable=yes,";\r
317 \r
318         if (formObj.popuptoolbar.checked)\r
319                 onclick += "toolbar=yes,";\r
320 \r
321         if (formObj.popupstatus.checked)\r
322                 onclick += "status=yes,";\r
323 \r
324         if (formObj.popupdependent.checked)\r
325                 onclick += "dependent=yes,";\r
326 \r
327         if (formObj.popupwidth.value != "")\r
328                 onclick += "width=" + formObj.popupwidth.value + ",";\r
329 \r
330         if (formObj.popupheight.value != "")\r
331                 onclick += "height=" + formObj.popupheight.value + ",";\r
332 \r
333         if (formObj.popupleft.value != "") {\r
334                 if (formObj.popupleft.value != "c")\r
335                         onclick += "left=" + formObj.popupleft.value + ",";\r
336                 else\r
337                         onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";\r
338         }\r
339 \r
340         if (formObj.popuptop.value != "") {\r
341                 if (formObj.popuptop.value != "c")\r
342                         onclick += "top=" + formObj.popuptop.value + ",";\r
343                 else\r
344                         onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";\r
345         }\r
346 \r
347         if (onclick.charAt(onclick.length-1) == ',')\r
348                 onclick = onclick.substring(0, onclick.length-1);\r
349 \r
350         onclick += "');";\r
351 \r
352         if (formObj.popupreturn.checked)\r
353                 onclick += "return false;";\r
354 \r
355         // tinyMCE.debug(onclick);\r
356 \r
357         formObj.onclick.value = onclick;\r
358 }\r
359 \r
360 function setAttrib(elm, attrib, value) {\r
361         var formObj = document.forms[0];\r
362         var valueElm = formObj.elements[attrib.toLowerCase()];\r
363 \r
364         if (typeof(value) == "undefined" || value == null) {\r
365                 value = "";\r
366 \r
367                 if (valueElm)\r
368                         value = valueElm.value;\r
369         }\r
370 \r
371         if (value != "") {\r
372                 elm.setAttribute(attrib.toLowerCase(), value);\r
373 \r
374                 if (attrib == "style")\r
375                         attrib = "style.cssText";\r
376 \r
377                 if (attrib.substring(0, 2) == 'on')\r
378                         value = 'return true;' + value;\r
379 \r
380                 if (attrib == "class")\r
381                         attrib = "className";\r
382 \r
383                 eval('elm.' + attrib + "=value;");\r
384         } else\r
385                 elm.removeAttribute(attrib);\r
386 }\r
387 \r
388 function getAnchorListHTML(id, target) {\r
389         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
390         var nodes = inst.getBody().getElementsByTagName("a");\r
391 \r
392         var html = "";\r
393 \r
394         html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';\r
395         html += 'this.options[this.selectedIndex].value;">';\r
396         html += '<option value="">---</option>';\r
397 \r
398         for (var i=0; i<nodes.length; i++) {\r
399                 if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")\r
400                         html += '<option value="#' + name + '">' + name + '</option>';\r
401         }\r
402 \r
403         html += '</select>';\r
404 \r
405         return html;\r
406 }\r
407 \r
408 function insertAction() {\r
409         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
410         var elm = inst.getFocusElement();\r
411 \r
412         elm = tinyMCE.getParentElement(elm, "a");\r
413 \r
414         tinyMCEPopup.execCommand("mceBeginUndoLevel");\r
415 \r
416         // Create new anchor elements\r
417         if (elm == null) {\r
418                 if (tinyMCE.isSafari)\r
419                         tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.getSelectedHTML() + '</a>');\r
420                 else\r
421                         tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");\r
422 \r
423                 var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");\r
424                 for (var i=0; i<elementArray.length; i++) {\r
425                         var elm = elementArray[i];\r
426 \r
427                         // Move cursor behind the new anchor\r
428                         if (tinyMCE.isGecko) {\r
429                                 var sp = inst.getDoc().createTextNode(" ");\r
430 \r
431                                 if (elm.nextSibling)\r
432                                         elm.parentNode.insertBefore(sp, elm.nextSibling);\r
433                                 else\r
434                                         elm.parentNode.appendChild(sp);\r
435 \r
436                                 // Set range after link\r
437                                 var rng = inst.getDoc().createRange();\r
438                                 rng.setStartAfter(elm);\r
439                                 rng.setEndAfter(elm);\r
440 \r
441                                 // Update selection\r
442                                 var sel = inst.getSel();\r
443                                 sel.removeAllRanges();\r
444                                 sel.addRange(rng);\r
445                         }\r
446 \r
447                         setAllAttribs(elm);\r
448                 }\r
449         } else\r
450                 setAllAttribs(elm);\r
451 \r
452         tinyMCE._setEventsEnabled(inst.getBody(), false);\r
453         tinyMCEPopup.execCommand("mceEndUndoLevel");\r
454         tinyMCEPopup.close();\r
455 }\r
456 \r
457 function setAllAttribs(elm) {\r
458         var formObj = document.forms[0];\r
459         var href = formObj.href.value;\r
460         var target = getSelectValue(formObj, 'targetlist');\r
461 \r
462         // Make anchors absolute\r
463         if (href.charAt(0) == '#')\r
464                 href = tinyMCE.settings['document_base_url'] + href;\r
465 \r
466         setAttrib(elm, 'href', convertURL(href, elm));\r
467         setAttrib(elm, 'mce_href', href);\r
468         setAttrib(elm, 'title');\r
469         setAttrib(elm, 'target', target == '_self' ? '' : target);\r
470         setAttrib(elm, 'id');\r
471         setAttrib(elm, 'style');\r
472         setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
473         setAttrib(elm, 'rel');\r
474         setAttrib(elm, 'rev');\r
475         setAttrib(elm, 'charset');\r
476         setAttrib(elm, 'hreflang');\r
477         setAttrib(elm, 'dir');\r
478         setAttrib(elm, 'lang');\r
479         setAttrib(elm, 'tabindex');\r
480         setAttrib(elm, 'accesskey');\r
481         setAttrib(elm, 'type');\r
482         setAttrib(elm, 'onfocus');\r
483         setAttrib(elm, 'onblur');\r
484         setAttrib(elm, 'onclick');\r
485         setAttrib(elm, 'ondblclick');\r
486         setAttrib(elm, 'onmousedown');\r
487         setAttrib(elm, 'onmouseup');\r
488         setAttrib(elm, 'onmouseover');\r
489         setAttrib(elm, 'onmousemove');\r
490         setAttrib(elm, 'onmouseout');\r
491         setAttrib(elm, 'onkeypress');\r
492         setAttrib(elm, 'onkeydown');\r
493         setAttrib(elm, 'onkeyup');\r
494 \r
495         // Refresh in old MSIE\r
496         if (tinyMCE.isMSIE5)\r
497                 elm.outerHTML = elm.outerHTML;\r
498 }\r
499 \r
500 function getSelectValue(form_obj, field_name) {\r
501         var elm = form_obj.elements[field_name];\r
502 \r
503         if (elm == null || elm.options == null)\r
504                 return "";\r
505 \r
506         return elm.options[elm.selectedIndex].value;\r
507 }\r
508 \r
509 function getLinkListHTML(elm_id, target_form_element, onchange_func) {\r
510         if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)\r
511                 return "";\r
512 \r
513         var html = "";\r
514 \r
515         html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
516         html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
517         html += 'this.options[this.selectedIndex].value;';\r
518 \r
519         if (typeof(onchange_func) != "undefined")\r
520                 html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
521 \r
522         html += '"><option value="">---</option>';\r
523 \r
524         for (var i=0; i<tinyMCELinkList.length; i++)\r
525                 html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';\r
526 \r
527         html += '</select>';\r
528 \r
529         return html;\r
530 \r
531         // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
532 }\r
533 \r
534 function getTargetListHTML(elm_id, target_form_element) {\r
535         var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');\r
536         var html = '';\r
537 \r
538         html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
539         html += 'this.options[this.selectedIndex].value;">';\r
540 \r
541         html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';\r
542         html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';\r
543         html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';\r
544         html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';\r
545 \r
546         for (var i=0; i<targets.length; i++) {\r
547                 var key, value;\r
548 \r
549                 if (targets[i] == "")\r
550                         continue;\r
551 \r
552                 key = targets[i].split('=')[0];\r
553                 value = targets[i].split('=')[1];\r
554 \r
555                 html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';\r
556         }\r
557 \r
558         html += '</select>';\r
559 \r
560         return html;\r
561 }\r
562 \r
563 // While loading\r
564 preinit();\r