--- /dev/null
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;\r
+\r
+ tinymce.create('tinymce.plugins.TabFocusPlugin', {\r
+ init : function(ed, url) {\r
+ function tabCancel(ed, e) {\r
+ if (e.keyCode === 9)\r
+ return Event.cancel(e);\r
+ };\r
+\r
+ function tabHandler(ed, e) {\r
+ var x, i, f, el, v;\r
+\r
+ function find(d) {\r
+ f = DOM.getParent(ed.id, 'form');\r
+ el = f.elements;\r
+\r
+ if (f) {\r
+ each(el, function(e, i) {\r
+ if (e.id == ed.id) {\r
+ x = i;\r
+ return false;\r
+ }\r
+ });\r
+\r
+ if (d > 0) {\r
+ for (i = x + 1; i < el.length; i++) {\r
+ if (el[i].type != 'hidden')\r
+ return el[i];\r
+ }\r
+ } else {\r
+ for (i = x - 1; i >= 0; i--) {\r
+ if (el[i].type != 'hidden')\r
+ return el[i];\r
+ }\r
+ }\r
+ }\r
+\r
+ return null;\r
+ };\r
+\r
+ if (e.keyCode === 9) {\r
+ v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));\r
+\r
+ if (v.length == 1) {\r
+ v[1] = v[0];\r
+ v[0] = ':prev';\r
+ }\r
+\r
+ // Find element to focus\r
+ if (e.shiftKey) {\r
+ if (v[0] == ':prev')\r
+ el = find(-1);\r
+ else\r
+ el = DOM.get(v[0]);\r
+ } else {\r
+ if (v[1] == ':next')\r
+ el = find(1);\r
+ else\r
+ el = DOM.get(v[1]);\r
+ }\r
+\r
+ if (el) {\r
+ if (ed = tinymce.get(el.id || el.name))\r
+ ed.focus();\r
+ else\r
+ window.setTimeout(function() {window.focus();el.focus();}, 10);\r
+\r
+ return Event.cancel(e);\r
+ }\r
+ }\r
+ };\r
+\r
+ ed.onKeyUp.add(tabCancel);\r
+\r
+ if (tinymce.isGecko) {\r
+ ed.onKeyPress.add(tabHandler);\r
+ ed.onKeyDown.add(tabCancel);\r
+ } else\r
+ ed.onKeyDown.add(tabHandler);\r
+\r
+ ed.onInit.add(function() {\r
+ each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {\r
+ Event.add(n, 'focus', function() {ed.focus();});\r
+ });\r
+ });\r
+ },\r
+\r
+ getInfo : function() {\r
+ return {\r
+ longname : 'Tabfocus',\r
+ author : 'Moxiecode Systems AB',\r
+ authorurl : 'http://tinymce.moxiecode.com',\r
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',\r
+ version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+ };\r
+ }\r
+ });\r
+\r
+ // Register plugin\r
+ tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);\r
+})();
\ No newline at end of file