adicionando arquivos de media (incluindo o editor tiny mce (LGPL)
[cascardo/eventmanager.git] / media / tiny_mce / plugins / layer / editor_plugin_src.js
diff --git a/media/tiny_mce/plugins/layer/editor_plugin_src.js b/media/tiny_mce/plugins/layer/editor_plugin_src.js
new file mode 100755 (executable)
index 0000000..28feff2
--- /dev/null
@@ -0,0 +1,248 @@
+/**\r
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+/* Import plugin specific language pack */\r
+tinyMCE.importPluginLanguagePack('layer');\r
+\r
+var TinyMCE_LayerPlugin = {\r
+       getInfo : function() {\r
+               return {\r
+                       longname : 'Layer',\r
+                       author : 'Moxiecode Systems AB',\r
+                       authorurl : 'http://tinymce.moxiecode.com',\r
+                       infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',\r
+                       version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion\r
+               };\r
+       },\r
+\r
+       initInstance : function(inst) {\r
+               if (tinyMCE.isMSIE && !tinyMCE.isOpera)\r
+                       inst.getDoc().execCommand('2D-Position');\r
+       },\r
+\r
+       handleEvent : function(e) {\r
+               var inst = tinyMCE.selectedInstance;\r
+               var w = inst.getWin(), le = inst._lastStyleElm, e;\r
+\r
+               if (tinyMCE.isGecko) {\r
+                       e = this._getParentLayer(inst.getFocusElement());\r
+\r
+                       if (e) {\r
+                               if (!inst._lastStyleElm) {\r
+                                       e.style.overflow = 'auto';\r
+                                       inst._lastStyleElm = e;\r
+                               }\r
+                       } else if (le) {\r
+                               le = inst._lastStyleElm;\r
+                               le.style.width = le.scrollWidth + 'px';\r
+                               le.style.height = le.scrollHeight + 'px';\r
+                               le.style.overflow = '';\r
+                               inst._lastStyleElm = null;\r
+                       }\r
+               }\r
+\r
+               return true;\r
+       },\r
+\r
+       handleVisualAid : function(el, deep, state, inst) {\r
+               var nl = inst.getDoc().getElementsByTagName("div"), i;\r
+\r
+               for (i=0; i<nl.length; i++) {\r
+                       if (new RegExp('absolute|relative|static', 'gi').test(nl[i].style.position)) {\r
+                               if (state)\r
+                                       tinyMCE.addCSSClass(nl[i], 'mceVisualAid');\r
+                               else\r
+                                       tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');                                  \r
+                       }\r
+               }\r
+       },\r
+\r
+       getControlHTML : function(cn) {\r
+               switch (cn) {\r
+                       case "moveforward":\r
+                               return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc', '{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);\r
+\r
+                       case "movebackward":\r
+                               return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc', '{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);\r
+\r
+                       case "absolute":\r
+                               return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc', '{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);\r
+\r
+                       case "insertlayer":\r
+                               return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc', '{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);\r
+               }\r
+\r
+               return "";\r
+       },\r
+\r
+       execCommand : function(editor_id, element, command, user_interface, value) {\r
+               // Handle commands\r
+               switch (command) {\r
+                       case "mceInsertLayer":\r
+                               this._insertLayer();\r
+                               return true;\r
+\r
+                       case "mceMoveForward":\r
+                               this._move(1);\r
+                               return true;\r
+\r
+                       case "mceMoveBackward":\r
+                               this._move(-1);\r
+                               return true;\r
+\r
+                       case "mceMakeAbsolute":\r
+                               this._toggleAbsolute();\r
+                               return true;\r
+               }\r
+\r
+               // Pass to next handler in chain\r
+               return false;\r
+       },\r
+\r
+       handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {\r
+               var inst = tinyMCE.getInstanceById(editor_id);\r
+               var le = this._getParentLayer(inst.getFocusElement());\r
+               var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');\r
+\r
+               tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');\r
+               tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');\r
+               tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');\r
+\r
+               if (p)\r
+                       tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');\r
+\r
+               if (le && le.style.position.toLowerCase() == "absolute") {\r
+                       tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');\r
+                       tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');\r
+                       tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');\r
+               }\r
+       },\r
+\r
+       // Private plugin specific methods\r
+\r
+       _move : function(d) {\r
+               var inst = tinyMCE.selectedInstance, i, z = new Array();\r
+               var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;\r
+               var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {\r
+                       return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);\r
+               });\r
+\r
+               // Find z-indexes\r
+               for (i=0; i<nl.length; i++) {\r
+                       z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;\r
+\r
+                       if (ci < 0 && nl[i] == le)\r
+                               ci = i;\r
+               }\r
+\r
+               if (d < 0) {\r
+                       // Move back\r
+\r
+                       // Try find a lower one\r
+                       for (i=0; i<z.length; i++) {\r
+                               if (z[i] < z[ci]) {\r
+                                       fi = i;\r
+                                       break;\r
+                               }\r
+                       }\r
+\r
+                       if (fi > -1) {\r
+                               nl[ci].style.zIndex = z[fi];\r
+                               nl[fi].style.zIndex = z[ci];\r
+                       } else {\r
+                               if (z[ci] > 0)\r
+                                       nl[ci].style.zIndex = z[ci] - 1;\r
+                       }\r
+               } else {\r
+                       // Move forward\r
+\r
+                       // Try find a higher one\r
+                       for (i=0; i<z.length; i++) {\r
+                               if (z[i] > z[ci]) {\r
+                                       fi = i;\r
+                                       break;\r
+                               }\r
+                       }\r
+\r
+                       if (fi > -1) {\r
+                               nl[ci].style.zIndex = z[fi];\r
+                               nl[fi].style.zIndex = z[ci];\r
+                       } else\r
+                               nl[ci].style.zIndex = z[ci] + 1;\r
+               }\r
+\r
+               inst.repaint();\r
+       },\r
+\r
+       _getParentLayer : function(n) {\r
+               return tinyMCE.getParentNode(n, function(n) {\r
+                       return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);\r
+               });\r
+       },\r
+\r
+       _insertLayer : function() {\r
+               var inst = tinyMCE.selectedInstance;\r
+               var e = tinyMCE.getParentElement(inst.getFocusElement());\r
+               var p = tinyMCE.getAbsPosition(e);\r
+               var d = inst.getDoc();\r
+               var ne = d.createElement('div');\r
+               var h = inst.selection.getSelectedHTML();\r
+\r
+               // Move div\r
+               ne.style.position = 'absolute';\r
+               ne.style.left = p.absLeft + 'px';\r
+               ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px';\r
+               ne.style.width = '100px';\r
+               ne.style.height = '100px';\r
+               ne.className = 'mceVisualAid';\r
+\r
+               if (!h)\r
+                       h = tinyMCE.getLang('lang_layer_content');\r
+\r
+               ne.innerHTML = h;\r
+\r
+               // Add it\r
+               d.body.appendChild(ne);\r
+       },\r
+\r
+       _toggleAbsolute : function() {\r
+               var inst = tinyMCE.selectedInstance;\r
+               var le = this._getParentLayer(inst.getFocusElement());\r
+\r
+               if (le == null)\r
+                       le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');\r
+\r
+               if (le) {\r
+                       if (le.style.position.toLowerCase() == "absolute") {\r
+                               le.style.position = "";\r
+                               le.style.left = "";\r
+                               le.style.top = "";\r
+                       } else {\r
+                               le.style.position = "absolute";\r
+\r
+                               if (le.style.left == "")\r
+                                       le.style.left = 20 + 'px';\r
+\r
+                               if (le.style.top == "")\r
+                                       le.style.top = 20 + 'px';\r
+\r
+                               if (le.style.width == "")\r
+                                       le.style.width = le.width ? (le.width + 'px') : '100px';\r
+\r
+                               if (le.style.height == "")\r
+                                       le.style.height = le.height ? (le.height + 'px') : '100px';\r
+\r
+                               tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);\r
+                       }\r
+\r
+                       inst.repaint();\r
+                       tinyMCE.triggerNodeChange();\r
+               }\r
+       }\r
+};\r
+\r
+tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin);\r