--- /dev/null
+/* Functions for the advimage plugin popup */
+
+var preloadImg = null;
+
+function preinit() {
+ // Initialize
+ tinyMCE.setWindowArg('mce_windowresize', false);
+
+ // Import external list url javascript
+ var url = tinyMCE.getParam("external_image_list_url");
+ if (url != null) {
+ // Fix relative
+ if (url.charAt(0) != '/')
+ url = tinyMCE.documentBasePath + "/" + url;
+
+ document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
+ }
+}
+
+function convertURL(url, node, on_save) {
+ return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
+}
+
+function getImageSrc(str) {
+ var pos = -1;
+
+ if (!str)
+ return "";
+
+ if ((pos = str.indexOf('this.src=')) != -1) {
+ var src = str.substring(pos + 10);
+
+ src = src.substring(0, src.indexOf('\''));
+
+ return src;
+ }
+
+ return "";
+}
+
+function getStyle(elm, st, attrib, style) {
+ var val = tinyMCE.getAttrib(elm, attrib);
+
+ if (typeof(style) == 'undefined')
+ style = attrib;
+
+ return val == '' ? (st[style] ? st[style].replace('px', '') : '') : val;
+}
+
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ var formObj = document.forms[0];
+ var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+ var elm = inst.getFocusElement();
+ var action = "insert";
+
+ // Resize some elements
+ if (isVisible('srcbrowser'))
+ document.getElementById('src').style.width = '260px';
+
+ if (isVisible('overbrowser'))
+ document.getElementById('onmouseoversrc').style.width = '260px';
+
+ if (isVisible('outbrowser'))
+ document.getElementById('onmouseoutsrc').style.width = '260px';
+
+ if (isVisible('longdescbrowser'))
+ document.getElementById('longdesc').style.width = '180px';
+
+ // Check action
+ if (elm != null && elm.nodeName == "IMG")
+ action = "update";
+
+ formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
+
+ if (action == "update") {
+ var src = tinyMCE.getAttrib(elm, 'src');
+ var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
+ var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
+
+ // Fix for drag-drop/copy paste bug in Mozilla
+ mceRealSrc = tinyMCE.getAttrib(elm, 'mce_real_src');
+ if (mceRealSrc != "")
+ src = mceRealSrc;
+
+ src = convertURL(src, elm, true);
+
+ if (onmouseoversrc != "")
+ onmouseoversrc = convertURL(onmouseoversrc, elm, true);
+
+ if (onmouseoutsrc != "")
+ onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);
+
+ // Setup form data
+ var style = tinyMCE.parseStyle(elm.style.cssText);
+ formObj.src.value = src;
+ formObj.alt.value = tinyMCE.getAttrib(elm, 'alt');
+ formObj.title.value = tinyMCE.getAttrib(elm, 'title');
+ formObj.border.value = getStyle(elm, style, 'border', 'border-width');
+ formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');
+ formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');
+ formObj.width.value = getStyle(elm, style, 'width');
+ formObj.height.value = getStyle(elm, style, 'height');
+ formObj.onmouseoversrc.value = onmouseoversrc;
+ formObj.onmouseoutsrc.value = onmouseoutsrc;
+ formObj.id.value = tinyMCE.getAttrib(elm, 'id');
+ formObj.dir.value = tinyMCE.getAttrib(elm, 'dir');
+ formObj.lang.value = tinyMCE.getAttrib(elm, 'lang');
+ formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc');
+ formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap');
+ formObj.style.value = tinyMCE.serializeStyle(style);
+
+ // Select by the values
+ if (tinyMCE.isMSIE)
+ selectByValue(formObj, 'align', getStyle(elm, style, 'align', 'styleFloat'));
+ else
+ selectByValue(formObj, 'align', getStyle(elm, style, 'align', 'cssFloat'));
+
+ selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));
+ selectByValue(formObj, 'imagelistsrc', src);
+ selectByValue(formObj, 'imagelistover', onmouseoversrc);
+ selectByValue(formObj, 'imagelistout', onmouseoutsrc);
+
+ updateStyle();
+ showPreviewImage(src);
+ changeAppearance();
+
+ window.focus();
+ }
+
+ addClassesToList('classlist', 'advimage_styles');
+
+ // If option enabled default contrain proportions to checked
+ if (tinyMCE.getParam("advimage_constrain_proportions", true))
+ formObj.constrain.checked = true;
+
+ // Check swap image if valid data
+ if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")
+ setSwapImageDisabled(false);
+ else
+ setSwapImageDisabled(true);
+}
+
+function setSwapImageDisabled(state) {
+ var formObj = document.forms[0];
+
+ formObj.onmousemovecheck.checked = !state;
+
+ setBrowserDisabled('overbrowser', state);
+ setBrowserDisabled('outbrowser', state);
+
+ if (formObj.imagelistover)
+ formObj.imagelistover.disabled = state;
+
+ if (formObj.imagelistout)
+ formObj.imagelistout.disabled = state;
+
+ formObj.onmouseoversrc.disabled = state;
+ formObj.onmouseoutsrc.disabled = state;
+}
+
+function setAttrib(elm, attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib];
+
+ if (typeof(value) == "undefined" || value == null) {
+ value = "";
+
+ if (valueElm)
+ value = valueElm.value;
+ }
+
+ if (value != "") {
+ elm.setAttribute(attrib, value);
+
+ if (attrib == "style")
+ attrib = "style.cssText";
+
+ if (attrib == "longdesc")
+ attrib = "longDesc";
+
+ if (attrib == "width") {
+ attrib = "style.width";
+ value = value + "px";
+ }
+
+ if (attrib == "height") {
+ attrib = "style.height";
+ value = value + "px";
+ }
+
+ if (attrib == "class")
+ attrib = "className";
+
+ eval('elm.' + attrib + "=value;");
+ } else
+ elm.removeAttribute(attrib);
+}
+
+function makeAttrib(attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib];
+
+ if (typeof(value) == "undefined" || value == null) {
+ value = "";
+
+ if (valueElm)
+ value = valueElm.value;
+ }
+
+ if (value == "")
+ return "";
+
+ // XML encode it
+ value = value.replace(/&/g, '&');
+ value = value.replace(/\"/g, '"');
+ value = value.replace(/</g, '<');
+ value = value.replace(/>/g, '&gr;');
+
+ return ' ' + attrib + '="' + value + '"';
+}
+
+function insertAction() {
+ var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+ var elm = inst.getFocusElement();
+ var formObj = document.forms[0];
+ var src = formObj.src.value;
+ var onmouseoversrc = formObj.onmouseoversrc.value;
+ var onmouseoutsrc = formObj.onmouseoutsrc.value;
+
+ // Fix output URLs
+ src = convertURL(src, tinyMCE.imgElement);
+
+ if (onmouseoversrc && onmouseoversrc != "")
+ onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";
+
+ if (onmouseoutsrc && onmouseoutsrc != "")
+ onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";
+
+ if (elm != null && elm.nodeName == "IMG") {
+ setAttrib(elm, 'src', src);
+ setAttrib(elm, 'mce_real_src', src);
+ setAttrib(elm, 'alt');
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'border');
+ setAttrib(elm, 'vspace');
+ setAttrib(elm, 'hspace');
+ setAttrib(elm, 'width');
+ setAttrib(elm, 'height');
+ setAttrib(elm, 'onmouseover', onmouseoversrc);
+ setAttrib(elm, 'onmouseout', onmouseoutsrc);
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ setAttrib(elm, 'longdesc');
+ setAttrib(elm, 'usemap');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+ setAttrib(elm, 'align', getSelectValue(formObj, 'align'));
+
+ //tinyMCEPopup.execCommand("mceRepaint");
+
+ // Refresh in old MSIE
+ if (tinyMCE.isMSIE5)
+ elm.outerHTML = elm.outerHTML;
+ } else {
+ var html = "<img";
+
+ html += makeAttrib('src', src);
+ html += makeAttrib('alt');
+ html += makeAttrib('title');
+ html += makeAttrib('border');
+ html += makeAttrib('vspace');
+ html += makeAttrib('hspace');
+ html += makeAttrib('width');
+ html += makeAttrib('height');
+ html += makeAttrib('onmouseover', onmouseoutsrc);
+ html += makeAttrib('onmouseout', onmouseoutsrc);
+ html += makeAttrib('id');
+ html += makeAttrib('dir');
+ html += makeAttrib('lang');
+ html += makeAttrib('longdesc');
+ html += makeAttrib('usemap');
+ html += makeAttrib('style');
+ html += makeAttrib('class', getSelectValue(formObj, 'classlist'));
+ html += makeAttrib('align', getSelectValue(formObj, 'align'));
+ html += " />";
+
+ tinyMCEPopup.execCommand("mceInsertContent", false, html);
+ }
+
+ tinyMCEPopup.close();
+}
+
+function cancelAction() {
+ tinyMCEPopup.close();
+}
+
+function changeAppearance() {
+ var formObj = document.forms[0];
+ var img = document.getElementById('alignSampleImg');
+
+ if (img) {
+ img.align = formObj.align.value;
+ img.border = formObj.border.value;
+ img.hspace = formObj.hspace.value;
+ img.vspace = formObj.vspace.value;
+ }
+}
+
+function changeMouseMove() {
+ var formObj = document.forms[0];
+
+ setSwapImageDisabled(!formObj.onmousemovecheck.checked);
+}
+
+function updateStyle() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ if (tinyMCE.getParam('inline_styles', false)) {
+ st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";
+ st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";
+ st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";
+ st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
+ st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
+ st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
+ st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
+ } else {
+ st['width'] = st['height'] = st['border-width'] = null;
+
+ if (st['margin-top'] == st['margin-bottom'])
+ st['margin-top'] = st['margin-bottom'] = null;
+
+ if (st['margin-left'] == st['margin-right'])
+ st['margin-left'] = st['margin-right'] = null;
+ }
+
+ formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function styleUpdated() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ if (st['width'])
+ formObj.width.value = st['width'].replace('px', '');
+
+ if (st['height'])
+ formObj.height.value = st['height'].replace('px', '');
+
+ if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])
+ formObj.vspace.value = st['margin-top'].replace('px', '');
+
+ if (st['margin-left'] && st['margin-left'] == st['margin-right'])
+ formObj.hspace.value = st['margin-left'].replace('px', '');
+
+ if (st['border-width'])
+ formObj.border.value = st['border-width'].replace('px', '');
+}
+
+function changeHeight() {
+ var formObj = document.forms[0];
+
+ if (!formObj.constrain.checked || !preloadImg) {
+ updateStyle();
+ return;
+ }
+
+ var temp = (formObj.width.value / preloadImg.width) * preloadImg.height;
+ formObj.height.value = temp.toFixed(0);
+ updateStyle();
+}
+
+function changeWidth() {
+ var formObj = document.forms[0];
+
+ if (!formObj.constrain.checked || !preloadImg) {
+ updateStyle();
+ return;
+ }
+
+ var temp = (formObj.height.value / preloadImg.height) * preloadImg.width;
+ formObj.width.value = temp.toFixed(0);
+ updateStyle();
+}
+
+function onSelectMainImage(target_form_element, name, value) {
+ var formObj = document.forms[0];
+
+ formObj.alt.value = name;
+ formObj.title.value = name;
+
+ resetImageData();
+ showPreviewImage(formObj.elements[target_form_element].value);
+}
+
+function showPreviewImage(src) {
+ selectByValue(document.forms[0], 'imagelistsrc', src);
+
+ var elm = document.getElementById('prev');
+ var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
+
+ if (src == "")
+ elm.innerHTML = "";
+ else
+ elm.innerHTML = '<img src="' + src + '" border="0" />'
+
+ getImageData(src);
+}
+
+function getImageData(src) {
+ preloadImg = new Image();
+
+ tinyMCE.addEvent(preloadImg, "load", updateImageData);
+ tinyMCE.addEvent(preloadImg, "error", resetImageData);
+
+ preloadImg.src = src;
+}
+
+function updateImageData() {
+ var formObj = document.forms[0];
+
+ if (formObj.width.value == "")
+ formObj.width.value = preloadImg.width;
+
+ if (formObj.height.value == "")
+ formObj.height.value = preloadImg.height;
+
+ updateStyle();
+}
+
+function resetImageData() {
+ var formObj = document.forms[0];
+ formObj.width.value = formObj.height.value = "";
+}
+
+function getSelectValue(form_obj, field_name) {
+ var elm = form_obj.elements[field_name];
+
+ if (elm == null || elm.options == null)
+ return "";
+
+ return elm.options[elm.selectedIndex].value;
+}
+
+function renderImageList(elm_id, target_form_element, onchange_func) {
+ if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)
+ return;
+
+ var html = "";
+
+ html += '<tr><td class="column1"><label for="' + elm_id + '">{$lang_image_list}</label></td>';
+ html += '<td colspan="2"><select id="' + elm_id + '" name="' + elm_id + '"';
+ html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;';
+
+ if (typeof(onchange_func) != "undefined")
+ html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+ html += '"><option value="">---</option>';
+
+ for (var i=0; i<tinyMCEImageList.length; i++)
+ html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
+
+ html += '</select></td></tr>';
+
+ document.write(html);
+
+ // tinyMCE.debug('-- image list start --', html, '-- image list end --');
+}
+
+// While loading
+preinit();