adicionando arquivos de media (incluindo o editor tiny mce (LGPL)
[cascardo/eventmanager.git] / media / tiny_mce / plugins / advimage / jscripts / functions.js
diff --git a/media/tiny_mce/plugins/advimage/jscripts/functions.js b/media/tiny_mce/plugins/advimage/jscripts/functions.js
new file mode 100755 (executable)
index 0000000..fc6b707
--- /dev/null
@@ -0,0 +1,538 @@
+/* Functions for the advimage plugin popup */\r
+\r
+var preloadImg = null;\r
+var orgImageWidth, orgImageHeight;\r
+\r
+function preinit() {\r
+       // Initialize\r
+       tinyMCE.setWindowArg('mce_windowresize', false);\r
+\r
+       // Import external list url javascript\r
+       var url = tinyMCE.getParam("external_image_list_url");\r
+       if (url != null) {\r
+               // Fix relative\r
+               if (url.charAt(0) != '/' && url.indexOf('://') == -1)\r
+                       url = tinyMCE.documentBasePath + "/" + url;\r
+\r
+               document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');\r
+       }\r
+}\r
+\r
+function convertURL(url, node, on_save) {\r
+       return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");\r
+}\r
+\r
+function getImageSrc(str) {\r
+       var pos = -1;\r
+\r
+       if (!str)\r
+               return "";\r
+\r
+       if ((pos = str.indexOf('this.src=')) != -1) {\r
+               var src = str.substring(pos + 10);\r
+\r
+               src = src.substring(0, src.indexOf('\''));\r
+\r
+               if (tinyMCE.getParam('convert_urls'))\r
+                       src = convertURL(src, null, true);\r
+\r
+               return src;\r
+       }\r
+\r
+       return "";\r
+}\r
+\r
+function init() {\r
+       tinyMCEPopup.resizeToInnerSize();\r
+\r
+       var formObj = document.forms[0];\r
+       var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
+       var elm = inst.getFocusElement();\r
+       var action = "insert";\r
+       var html = "";\r
+\r
+       // Image list src\r
+       html = getImageListHTML('imagelistsrc','src','onSelectMainImage');\r
+       if (html == "")\r
+               document.getElementById("imagelistsrcrow").style.display = 'none';\r
+       else\r
+               document.getElementById("imagelistsrccontainer").innerHTML = html;\r
+\r
+       // Image list oversrc\r
+       html = getImageListHTML('imagelistover','onmouseoversrc');\r
+       if (html == "")\r
+               document.getElementById("imagelistoverrow").style.display = 'none';\r
+       else\r
+               document.getElementById("imagelistovercontainer").innerHTML = html;\r
+\r
+       // Image list outsrc\r
+       html = getImageListHTML('imagelistout','onmouseoutsrc');\r
+       if (html == "")\r
+               document.getElementById("imagelistoutrow").style.display = 'none';\r
+       else\r
+               document.getElementById("imagelistoutcontainer").innerHTML = html;\r
+\r
+       // Src browser\r
+       html = getBrowserHTML('srcbrowser','src','image','advimage');\r
+       document.getElementById("srcbrowsercontainer").innerHTML = html;\r
+\r
+       // Over browser\r
+       html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage');\r
+       document.getElementById("onmouseoversrccontainer").innerHTML = html;\r
+\r
+       // Out browser\r
+       html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage');\r
+       document.getElementById("onmouseoutsrccontainer").innerHTML = html;\r
+\r
+       // Longdesc browser\r
+       html = getBrowserHTML('longdescbrowser','longdesc','file','advimage');\r
+       document.getElementById("longdesccontainer").innerHTML = html;\r
+\r
+       // Resize some elements\r
+       if (isVisible('srcbrowser'))\r
+               document.getElementById('src').style.width = '260px';\r
+\r
+       if (isVisible('oversrcbrowser'))\r
+               document.getElementById('onmouseoversrc').style.width = '260px';\r
+\r
+       if (isVisible('outsrcbrowser'))\r
+               document.getElementById('onmouseoutsrc').style.width = '260px';\r
+\r
+       if (isVisible('longdescbrowser'))\r
+               document.getElementById('longdesc').style.width = '180px';\r
+\r
+       // Check action\r
+       if (elm != null && elm.nodeName == "IMG")\r
+               action = "update";\r
+\r
+       formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); \r
+\r
+       if (action == "update") {\r
+               var src = tinyMCE.getAttrib(elm, 'src');\r
+               var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));\r
+               var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));\r
+\r
+               src = convertURL(src, elm, true);\r
+\r
+               // Use mce_src if found\r
+               var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src');\r
+               if (mceRealSrc != "") {\r
+                       src = mceRealSrc;\r
+\r
+                       if (tinyMCE.getParam('convert_urls'))\r
+                               src = convertURL(src, elm, true);\r
+               }\r
+\r
+               if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls'))\r
+                       onmouseoversrc = convertURL(onmouseoversrc, elm, true);\r
+\r
+               if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls'))\r
+                       onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);\r
+\r
+               // Setup form data\r
+               var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"));\r
+\r
+               // Store away old size\r
+               orgImageWidth = trimSize(getStyle(elm, 'width'))\r
+               orgImageHeight = trimSize(getStyle(elm, 'height'));\r
+\r
+               formObj.src.value    = src;\r
+               formObj.alt.value    = tinyMCE.getAttrib(elm, 'alt');\r
+               formObj.title.value  = tinyMCE.getAttrib(elm, 'title');\r
+               formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth'));\r
+               formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');\r
+               formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');\r
+               formObj.width.value  = orgImageWidth;\r
+               formObj.height.value = orgImageHeight;\r
+               formObj.onmouseoversrc.value = onmouseoversrc;\r
+               formObj.onmouseoutsrc.value  = onmouseoutsrc;\r
+               formObj.id.value  = tinyMCE.getAttrib(elm, 'id');\r
+               formObj.dir.value  = tinyMCE.getAttrib(elm, 'dir');\r
+               formObj.lang.value  = tinyMCE.getAttrib(elm, 'lang');\r
+               formObj.longdesc.value  = tinyMCE.getAttrib(elm, 'longdesc');\r
+               formObj.usemap.value  = tinyMCE.getAttrib(elm, 'usemap');\r
+               formObj.style.value  = tinyMCE.serializeStyle(style);\r
+\r
+               // Select by the values\r
+               if (tinyMCE.isMSIE)\r
+                       selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat'));\r
+               else\r
+                       selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat'));\r
+\r
+               addClassesToList('classlist', 'advimage_styles');\r
+\r
+               selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));\r
+               selectByValue(formObj, 'imagelistsrc', src);\r
+               selectByValue(formObj, 'imagelistover', onmouseoversrc);\r
+               selectByValue(formObj, 'imagelistout', onmouseoutsrc);\r
+\r
+               updateStyle();\r
+               showPreviewImage(src, true);\r
+               changeAppearance();\r
+\r
+               window.focus();\r
+       } else\r
+               addClassesToList('classlist', 'advimage_styles');\r
+\r
+       // If option enabled default contrain proportions to checked\r
+       if (tinyMCE.getParam("advimage_constrain_proportions", true))\r
+               formObj.constrain.checked = true;\r
+\r
+       // Check swap image if valid data\r
+       if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")\r
+               setSwapImageDisabled(false);\r
+       else\r
+               setSwapImageDisabled(true);\r
+}\r
+\r
+function setSwapImageDisabled(state) {\r
+       var formObj = document.forms[0];\r
+\r
+       formObj.onmousemovecheck.checked = !state;\r
+\r
+       setBrowserDisabled('overbrowser', state);\r
+       setBrowserDisabled('outbrowser', state);\r
+\r
+       if (formObj.imagelistover)\r
+               formObj.imagelistover.disabled = state;\r
+\r
+       if (formObj.imagelistout)\r
+               formObj.imagelistout.disabled = state;\r
+\r
+       formObj.onmouseoversrc.disabled = state;\r
+       formObj.onmouseoutsrc.disabled  = state;\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+       var formObj = document.forms[0];\r
+       var valueElm = formObj.elements[attrib];\r
+\r
+       if (typeof(value) == "undefined" || value == null) {\r
+               value = "";\r
+\r
+               if (valueElm)\r
+                       value = valueElm.value;\r
+       }\r
+\r
+       if (value != "") {\r
+               elm.setAttribute(attrib, value);\r
+\r
+               if (attrib == "style")\r
+                       attrib = "style.cssText";\r
+\r
+               if (attrib == "longdesc")\r
+                       attrib = "longDesc";\r
+\r
+               if (attrib == "width") {\r
+                       attrib = "style.width";\r
+                       value = value + "px";\r
+                       value = value.replace(/%px/g, 'px');\r
+               }\r
+\r
+               if (attrib == "height") {\r
+                       attrib = "style.height";\r
+                       value = value + "px";\r
+                       value = value.replace(/%px/g, 'px');\r
+               }\r
+\r
+               if (attrib == "class")\r
+                       attrib = "className";\r
+\r
+               eval('elm.' + attrib + "=value;");\r
+       } else {\r
+               if (attrib == 'class')\r
+                       elm.className = '';\r
+\r
+               elm.removeAttribute(attrib);\r
+       }\r
+}\r
+\r
+function makeAttrib(attrib, value) {\r
+       var formObj = document.forms[0];\r
+       var valueElm = formObj.elements[attrib];\r
+\r
+       if (typeof(value) == "undefined" || value == null) {\r
+               value = "";\r
+\r
+               if (valueElm)\r
+                       value = valueElm.value;\r
+       }\r
+\r
+       if (value == "")\r
+               return "";\r
+\r
+       // XML encode it\r
+       value = value.replace(/&/g, '&amp;');\r
+       value = value.replace(/\"/g, '&quot;');\r
+       value = value.replace(/</g, '&lt;');\r
+       value = value.replace(/>/g, '&gt;');\r
+\r
+       return ' ' + attrib + '="' + value + '"';\r
+}\r
+\r
+function insertAction() {\r
+       var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));\r
+       var elm = inst.getFocusElement();\r
+       var formObj = document.forms[0];\r
+       var src = formObj.src.value;\r
+       var onmouseoversrc = formObj.onmouseoversrc.value;\r
+       var onmouseoutsrc = formObj.onmouseoutsrc.value;\r
+\r
+       if (!AutoValidator.validate(formObj)) {\r
+               alert(tinyMCE.getLang('lang_invalid_data'));\r
+               return false;\r
+       }\r
+\r
+       if (tinyMCE.getParam("accessibility_warnings")) {\r
+               if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true)))\r
+                       return;\r
+       }\r
+\r
+       if (onmouseoversrc && onmouseoversrc != "")\r
+               onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";\r
+\r
+       if (onmouseoutsrc && onmouseoutsrc != "")\r
+               onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";\r
+\r
+       if (elm != null && elm.nodeName == "IMG") {\r
+               setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));\r
+               setAttrib(elm, 'mce_src', src);\r
+               setAttrib(elm, 'alt');\r
+               setAttrib(elm, 'title');\r
+               setAttrib(elm, 'border');\r
+               setAttrib(elm, 'vspace');\r
+               setAttrib(elm, 'hspace');\r
+               setAttrib(elm, 'width');\r
+               setAttrib(elm, 'height');\r
+               setAttrib(elm, 'onmouseover', onmouseoversrc);\r
+               setAttrib(elm, 'onmouseout', onmouseoutsrc);\r
+               setAttrib(elm, 'id');\r
+               setAttrib(elm, 'dir');\r
+               setAttrib(elm, 'lang');\r
+               setAttrib(elm, 'longdesc');\r
+               setAttrib(elm, 'usemap');\r
+               setAttrib(elm, 'style');\r
+               setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
+               setAttrib(elm, 'align', getSelectValue(formObj, 'align'));\r
+\r
+               //tinyMCEPopup.execCommand("mceRepaint");\r
+\r
+               // Repaint if dimensions changed\r
+               if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight)\r
+                       inst.repaint();\r
+\r
+               // Refresh in old MSIE\r
+               if (tinyMCE.isMSIE5)\r
+                       elm.outerHTML = elm.outerHTML;\r
+       } else {\r
+               var html = "<img";\r
+\r
+               html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));\r
+               html += makeAttrib('mce_src', src);\r
+               html += makeAttrib('alt');\r
+               html += makeAttrib('title');\r
+               html += makeAttrib('border');\r
+               html += makeAttrib('vspace');\r
+               html += makeAttrib('hspace');\r
+               html += makeAttrib('width');\r
+               html += makeAttrib('height');\r
+               html += makeAttrib('onmouseover', onmouseoversrc);\r
+               html += makeAttrib('onmouseout', onmouseoutsrc);\r
+               html += makeAttrib('id');\r
+               html += makeAttrib('dir');\r
+               html += makeAttrib('lang');\r
+               html += makeAttrib('longdesc');\r
+               html += makeAttrib('usemap');\r
+               html += makeAttrib('style');\r
+               html += makeAttrib('class', getSelectValue(formObj, 'classlist'));\r
+               html += makeAttrib('align', getSelectValue(formObj, 'align'));\r
+               html += " />";\r
+\r
+               tinyMCEPopup.execCommand("mceInsertContent", false, html);\r
+       }\r
+\r
+       tinyMCE._setEventsEnabled(inst.getBody(), false);\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function cancelAction() {\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function changeAppearance() {\r
+       var formObj = document.forms[0];\r
+       var img = document.getElementById('alignSampleImg');\r
+\r
+       if (img) {\r
+               img.align = formObj.align.value;\r
+               img.border = formObj.border.value;\r
+               img.hspace = formObj.hspace.value;\r
+               img.vspace = formObj.vspace.value;\r
+       }\r
+}\r
+\r
+function changeMouseMove() {\r
+       var formObj = document.forms[0];\r
+\r
+       setSwapImageDisabled(!formObj.onmousemovecheck.checked);\r
+}\r
+\r
+function updateStyle() {\r
+       var formObj = document.forms[0];\r
+       var st = tinyMCE.parseStyle(formObj.style.value);\r
+\r
+       if (tinyMCE.getParam('inline_styles', false)) {\r
+               st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";\r
+               st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";\r
+               st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";\r
+               st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";\r
+               st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";\r
+               st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";\r
+               st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";\r
+       } else {\r
+               st['width'] = st['height'] = st['border-width'] = null;\r
+\r
+               if (st['margin-top'] == st['margin-bottom'])\r
+                       st['margin-top'] = st['margin-bottom'] = null;\r
+\r
+               if (st['margin-left'] == st['margin-right'])\r
+                       st['margin-left'] = st['margin-right'] = null;\r
+       }\r
+\r
+       formObj.style.value = tinyMCE.serializeStyle(st);\r
+}\r
+\r
+function styleUpdated() {\r
+       var formObj = document.forms[0];\r
+       var st = tinyMCE.parseStyle(formObj.style.value);\r
+\r
+       if (st['width'])\r
+               formObj.width.value = st['width'].replace('px', '');\r
+\r
+       if (st['height'])\r
+               formObj.height.value = st['height'].replace('px', '');\r
+\r
+       if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])\r
+               formObj.vspace.value = st['margin-top'].replace('px', '');\r
+\r
+       if (st['margin-left'] && st['margin-left'] == st['margin-right'])\r
+               formObj.hspace.value = st['margin-left'].replace('px', '');\r
+\r
+       if (st['border-width'])\r
+               formObj.border.value = st['border-width'].replace('px', '');\r
+}\r
+\r
+function changeHeight() {\r
+       var formObj = document.forms[0];\r
+\r
+       if (!formObj.constrain.checked || !preloadImg) {\r
+               updateStyle();\r
+               return;\r
+       }\r
+\r
+       if (formObj.width.value == "" || formObj.height.value == "")\r
+               return;\r
+\r
+       var temp = (parseInt(formObj.width.value) / parseInt(preloadImg.width)) * preloadImg.height;\r
+       formObj.height.value = temp.toFixed(0);\r
+       updateStyle();\r
+}\r
+\r
+function changeWidth() {\r
+       var formObj = document.forms[0];\r
+\r
+       if (!formObj.constrain.checked || !preloadImg) {\r
+               updateStyle();\r
+               return;\r
+       }\r
+\r
+       if (formObj.width.value == "" || formObj.height.value == "")\r
+               return;\r
+\r
+       var temp = (parseInt(formObj.height.value) / parseInt(preloadImg.height)) * preloadImg.width;\r
+       formObj.width.value = temp.toFixed(0);\r
+       updateStyle();\r
+}\r
+\r
+function onSelectMainImage(target_form_element, name, value) {\r
+       var formObj = document.forms[0];\r
+\r
+       formObj.alt.value = name;\r
+       formObj.title.value = name;\r
+\r
+       resetImageData();\r
+       showPreviewImage(formObj.elements[target_form_element].value, false);\r
+}\r
+\r
+function showPreviewImage(src, start) {\r
+       var formObj = document.forms[0];\r
+\r
+       selectByValue(document.forms[0], 'imagelistsrc', src);\r
+\r
+       var elm = document.getElementById('prev');\r
+       var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);\r
+\r
+       if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange", true))\r
+               resetImageData();\r
+\r
+       if (src == "")\r
+               elm.innerHTML = "";\r
+       else\r
+               elm.innerHTML = '<img id="previewImg" src="' + src + '" border="0" onload="updateImageData(' + start + ');" onerror="resetImageData();" />'\r
+}\r
+\r
+function updateImageData(start) {\r
+       var formObj = document.forms[0];\r
+\r
+       preloadImg = document.getElementById('previewImg');\r
+\r
+       if (!start && formObj.width.value == "")\r
+               formObj.width.value = preloadImg.width;\r
+\r
+       if (!start && formObj.height.value == "")\r
+               formObj.height.value = preloadImg.height;\r
+\r
+       updateStyle();\r
+}\r
+\r
+function resetImageData() {\r
+       var formObj = document.forms[0];\r
+       formObj.width.value = formObj.height.value = "";        \r
+}\r
+\r
+function getSelectValue(form_obj, field_name) {\r
+       var elm = form_obj.elements[field_name];\r
+\r
+       if (elm == null || elm.options == null)\r
+               return "";\r
+\r
+       return elm.options[elm.selectedIndex].value;\r
+}\r
+\r
+function getImageListHTML(elm_id, target_form_element, onchange_func) {\r
+       if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)\r
+               return "";\r
+\r
+       var html = "";\r
+\r
+       html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
+       html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';\r
+       html += 'this.options[this.selectedIndex].value;';\r
+\r
+       if (typeof(onchange_func) != "undefined")\r
+               html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
+\r
+       html += '"><option value="">---</option>';\r
+\r
+       for (var i=0; i<tinyMCEImageList.length; i++)\r
+               html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';\r
+\r
+       html += '</select>';\r
+\r
+       return html;\r
+\r
+       // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
+}\r
+\r
+// While loading\r
+preinit();\r