JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0.1
[ckeditor.git] / plugins / tab / plugin.js
1 /*\r
2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license\r
4 */\r
5 \r
6 (function(){var a={exec:function(c){c.container.focusNext(true);}},b={exec:function(c){c.container.focusPrevious(true);}};CKEDITOR.plugins.add('tab',{requires:['keystrokes'],init:function(c){var d=c.keystrokeHandler.keystrokes;d[9]='tab';d[CKEDITOR.SHIFT+9]='shiftTab';var e=c.config.tabSpaces,f='';while(e--)f+='\xa0';c.addCommand('tab',{exec:function(g){if(!g.fire('tab'))if(f.length>0)g.insertHtml(f);else return g.execCommand('blur');return true;}});c.addCommand('shiftTab',{exec:function(g){if(!g.fire('shiftTab'))return g.execCommand('blurBack');return true;}});c.addCommand('blur',a);c.addCommand('blurBack',b);}});})();CKEDITOR.dom.element.prototype.focusNext=function(a){var j=this;var b=j.$,c=j.getTabIndex(),d,e,f,g,h,i;if(c<=0){h=j.getNextSourceNode(a,CKEDITOR.NODE_ELEMENT);while(h){if(h.isVisible()&&h.getTabIndex()===0){f=h;break;}h=h.getNextSourceNode(false,CKEDITOR.NODE_ELEMENT);}}else{h=j.getDocument().getBody().getFirst();while(h=h.getNextSourceNode(false,CKEDITOR.NODE_ELEMENT)){if(!d)if(!e&&h.equals(j)){e=true;if(a){if(!(h=h.getNextSourceNode(true,CKEDITOR.NODE_ELEMENT)))break;d=1;}}else if(e&&!j.contains(h))d=1;if(!h.isVisible()||(i=h.getTabIndex())<(0))continue;if(d&&i==c){f=h;break;}if(i>c&&(!f||!g||i<g)){f=h;g=i;}else if(!f&&i===0){f=h;g=i;}}}if(f)f.focus();};CKEDITOR.dom.element.prototype.focusPrevious=function(a){var j=this;var b=j.$,c=j.getTabIndex(),d,e,f,g=0,h,i=j.getDocument().getBody().getLast();while(i=i.getPreviousSourceNode(false,CKEDITOR.NODE_ELEMENT)){if(!d)if(!e&&i.equals(j)){e=true;if(a){if(!(i=i.getPreviousSourceNode(true,CKEDITOR.NODE_ELEMENT)))break;d=1;}}else if(e&&!j.contains(i))d=1;if(!i.isVisible()||(h=i.getTabIndex())<(0))continue;if(c<=0){if(d&&h===0){f=i;break;}if(h>g){f=i;g=h;}}else{if(d&&h==c){f=i;break;}if(h<c&&(!f||h>g)){f=i;g=h;}}}if(f)f.focus();};CKEDITOR.config.tabSpaces=0;\r