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

CKEDITOR.plugins.add('menu',{beforeInit:function(a){var b=a.config.menu_groups.split(','),c={};for(var d=0;d<b.length;d++)c[b[d]]=d+1;a._.menuGroups=c;a._.menuItems={};},requires:['floatpanel']});CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addMenuGroup:function(a,b){this._.menuGroups[a]=b||100;},addMenuItem:function(a,b){if(this._.menuGroups[b.group])this._.menuItems[a]=new CKEDITOR.menuItem(this,a,b);},addMenuItems:function(a){for(var b in a)this.addMenuItem(b,a[b]);},getMenuItem:function(a){return this._.menuItems[a];}});(function(){CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(b,c){var d=this;d.id='cke_'+CKEDITOR.tools.getNextNumber();d.editor=b;d.items=[];d._.level=c||1;},_:{showSubMenu:function(b){var h=this;var c=h._.subMenu,d=h.items[b],e=d.getItems&&d.getItems();if(!e){h._.panel.hideChild();return;}if(c)c.removeAll();else{c=h._.subMenu=new CKEDITOR.menu(h.editor,h._.level+1);c.parent=h;c.onClick=CKEDITOR.tools.bind(h.onClick,h);}for(var f in e)c.add(h.editor.getMenuItem(f));var g=h._.panel.getBlock(h.id).element.getDocument().getById(h.id+String(b));c.show(g,2);}},proto:{add:function(b){if(!b.order)b.order=this.items.length;this.items.push(b);},removeAll:function(){this.items=[];},show:function(b,c,d,e){var f=this.items,g=this.editor,h=this._.panel,i=this._.element;if(!h){h=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),{css:[CKEDITOR.getUrl(g.skinPath+'editor.css')],level:this._.level-1,className:g.skinClass+' cke_contextmenu'},this._.level);h.onEscape=CKEDITOR.tools.bind(function(){this.onEscape&&this.onEscape();this.hide();},this);h.onHide=CKEDITOR.tools.bind(function(){this.onHide&&this.onHide();},this);var j=h.addBlock(this.id);j.autoSize=true;var k=j.keys;k[40]='next';k[9]='next';k[38]='prev';k[CKEDITOR.SHIFT+9]='prev';k[32]='click';k[39]='click';i=this._.element=j.element;i.addClass(g.skinClass);var l=i.getDocument();l.getBody().setStyle('overflow','hidden');l.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=CKEDITOR.tools.addFunction(function(r){var s=this;clearTimeout(s._.showSubTimeout);s._.showSubTimeout=CKEDITOR.tools.setTimeout(s._.showSubMenu,g.config.menu_subMenuDelay,s,[r]);},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(r){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(r){var t=this;var s=t.items[r];if(s.state==CKEDITOR.TRISTATE_DISABLED){t.hide();return;}if(s.getItems)t._.showSubMenu(r);else t.onClick&&t.onClick(s);
},this);}a(f);var m=['<div class="cke_menu">'],n=f.length,o=n&&f[0].group;for(var p=0;p<n;p++){var q=f[p];if(o!=q.group){m.push('<div class="cke_menuseparator"></div>');o=q.group;}q.render(this,p,m);}m.push('</div>');i.setHtml(m.join(''));if(this.parent)this.parent._.panel.showAsChild(h,this.id,b,c,d,e);else h.showBlock(this.id,b,c,d,e);g.fire('menuShow',[h]);},hide:function(){this._.panel&&this._.panel.hide();}}});function a(b){b.sort(function(c,d){if(c.group<d.group)return-1;else if(c.group>d.group)return 1;return c.order<d.order?-1:c.order>d.order?1:0;});};})();CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){var d=this;CKEDITOR.tools.extend(d,c,{order:0,className:'cke_button_'+b});d.group=a._.menuGroups[d.group];d.editor=a;d.name=b;},proto:{render:function(a,b,c){var i=this;var d=a.id+String(b),e=typeof i.state=='undefined'?CKEDITOR.TRISTATE_OFF:i.state,f=' cke_'+(e==CKEDITOR.TRISTATE_ON?'on':e==CKEDITOR.TRISTATE_DISABLED?'disabled':'off'),g=i.label;if(e==CKEDITOR.TRISTATE_DISABLED)g=i.editor.lang.common.unavailable.replace('%1',g);if(i.className)f+=' '+i.className;c.push('<span class="cke_menuitem"><a id="',d,'" class="',f,'" href="javascript:void(\'',(i.label||'').replace("'",''),'\')" title="',i.label,'" tabindex="-1"_cke_focus=1 hidefocus="true"');if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)c.push(' onkeypress="return false;"');if(CKEDITOR.env.gecko)c.push(' onblur="this.style.cssText = this.style.cssText;"');var h=(i.iconOffset||0)*(-16);c.push(' onmouseover="CKEDITOR.tools.callFunction(',a._.itemOverFn,',',b,');" onmouseout="CKEDITOR.tools.callFunction(',a._.itemOutFn,',',b,');" onclick="CKEDITOR.tools.callFunction(',a._.itemClickFn,',',b,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(i.icon?' style="background-image:url('+CKEDITOR.getUrl(i.icon)+');background-position:0 '+h+'px;"':'')+'></span></span>'+'<span class="cke_label">');if(i.getItems)c.push('<span class="cke_menuarrow"></span>');c.push(g,'</span></a></span>');}}});CKEDITOR.config.menu_subMenuDelay=400;CKEDITOR.config.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea';
