home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Plugins / tinymce-advanced / mce / advlink / jscripts / functions.js
Encoding:
JavaScript  |  2008-02-20  |  18.6 KB  |  588 lines

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