/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

CKEDITOR.plugins.add('contextmenu',{requires:['menu'],beforeInit:function(a) {a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.addCommand('contextMenu',{exec:function() {a.contextMenu.show();}});}});CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({$:function(a) {this.id='cke_'+CKEDITOR.tools.getNextNumber();this.editor=a;this._.listeners=[];this._.functionId=CKEDITOR.tools.addFunction(function(b) {this._.panel.hide();a.focus();a.execCommand(b);},this);},_:{onMenu:function(a,b,c,d) {var e=this._.menu,f=this.editor;if (e) {e.hide();e.removeAll();} else {e=this._.menu=new CKEDITOR.menu(f);e.onClick=CKEDITOR.tools.bind(function(o) {var p=true;e.hide();if (CKEDITOR.env.ie)e.onEscape();if (o.onClick)o.onClick();else if (o.command)f.execCommand(o.command);p=false;},this);e.onEscape=function() {f.focus();if (CKEDITOR.env.ie)f.getSelection().unlock(true);};}var g=this._.listeners,h=[],i=this.editor.getSelection(),j=i&&i.getStartElement();if (CKEDITOR.env.ie)i.lock();e.onHide=CKEDITOR.tools.bind(function() {e.onHide=null;if (CKEDITOR.env.ie)f.getSelection().unlock();this.onHide&&this.onHide();},this);for (var k=0;k<g.length;k++) {var l=g[k](j,i);if (l)for (var m in l) {var n=this.editor.getMenuItem(m);if (n) {n.state=l[m];e.add(n);}}}e.show(a,b||(f.lang.dir=='rtl'?2:1),c,d);}},proto:{addTarget:function(a) {a.on('contextmenu',function(b) {var c=b.data;c.preventDefault();var d=c.getTarget().getDocument().getDocumentElement(),e=c.$.clientX,f=c.$.clientY;CKEDITOR.tools.setTimeout(function() {this._.onMenu(d,null,e,f);},0,this);},this);},addListener:function(a) {this._.listeners.push(a);},show:function(a,b,c,d) {this.editor.focus();this._.onMenu(a||CKEDITOR.document.getDocumentElement(),b,c||0,d||0);}}});
