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

CKEDITOR.plugins.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler);}});CKEDITOR.UI_RICHCOMBO=3;CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){var c=this;CKEDITOR.tools.extend(c,a,{title:a.label,modes:{wysiwyg:1}});var b=c.panel||{};delete c.panel;c.id=CKEDITOR.tools.getNextNumber();c.document=b&&b.parent&&b.parent.getDocument()||CKEDITOR.document;b.className=(b.className||'')+(' cke_rcombopanel');c._={panelDefinition:b,items:{},state:CKEDITOR.TRISTATE_OFF};},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a);}}},proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join('');},render:function(a,b){var c='cke_'+this.id,d=CKEDITOR.tools.addFunction(function(g){var j=this;var h=j._;if(h.state==CKEDITOR.TRISTATE_DISABLED)return;j.createPanel(a);if(h.on){h.panel.hide();return;}if(!h.committed){h.list.commit();h.committed=1;}var i=j.getValue();if(i)h.list.mark(i);else h.list.unmarkAll();h.panel.showBlock(j.id,new CKEDITOR.dom.element(g),4);},this),e={id:c,combo:this,focus:function(){var g=CKEDITOR.document.getById(c).getChild(1);g.focus();},execute:d};a.on('mode',function(){this.setState(this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);},this);var f=CKEDITOR.tools.addFunction(function(g,h){g=new CKEDITOR.dom.event(g);var i=g.getKeystroke();switch(i){case 13:case 32:case 40:CKEDITOR.tools.callFunction(d,h);break;default:e.onkey(e,i);}g.preventDefault();});b.push('<span class="cke_rcombo">','<span id=',c);if(this.className)b.push(' class="',this.className,' cke_off"');b.push('><span class=cke_label>',this.label,'</span><a hidefocus=true title="',this.title,'" tabindex="-1" href="javascript:void(\'',this.label,"')\"");if(CKEDITOR.env.opera||CKEDITOR.env.gecko&&CKEDITOR.env.mac)b.push(' onkeypress="return false;"');if(CKEDITOR.env.gecko)b.push(' onblur="this.style.cssText = this.style.cssText;"');b.push(' onkeydown="CKEDITOR.tools.callFunction( ',f,', event, this );" onclick="CKEDITOR.tools.callFunction(',d,', this); return false;"><span><span class="cke_accessibility">'+(this.voiceLabel?this.voiceLabel+' ':'')+'</span>'+'<span id="'+c+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton></span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return e;},createPanel:function(a){if(this._.panel)return;var b=this._.panelDefinition,c=b.parent||CKEDITOR.document.getBody(),d=new CKEDITOR.ui.floatPanel(a,c,b),e=d.addListBlock(this.id,this.multiSelect),f=this;
d.onShow=function(){if(f.className)this.element.getFirst().addClass(f.className+'_panel');f.setState(CKEDITOR.TRISTATE_ON);e.focus(!f.multiSelect&&f.getValue());f._.on=1;if(f.onOpen)f.onOpen();};d.onHide=function(){if(f.className)this.element.getFirst().removeClass(f.className+'_panel');f.setState(CKEDITOR.TRISTATE_OFF);f._.on=0;if(f.onClose)f.onClose();};d.onEscape=function(){d.hide();f.document.getById('cke_'+f.id).getFirst().getNext().focus();};e.onClick=function(g,h){f.document.getWindow().focus();if(f.onClick)f.onClick.call(f,g,h);if(h)f.setValue(g,f._.items[g]);else f.setValue('');d.hide();};this._.panel=d;this._.list=e;d.getBlock(this.id).onHide=function(){f._.on=0;f.setState(CKEDITOR.TRISTATE_OFF);};if(this.init)this.init();},setValue:function(a,b){var d=this;d._.value=a;var c=d.document.getById('cke_'+d.id+'_text');if(!a){b=d.label;c.addClass('cke_inline_label');}else c.removeClass('cke_inline_label');c.setHtml(typeof b!='undefined'?b:a);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(a){this._.list.mark(a);},hideItem:function(a){this._.list.hideItem(a);},hideGroup:function(a){this._.list.hideGroup(a);},showAll:function(){this._.list.showAll();},add:function(a,b,c){this._.items[a]=c||a;this._.list.add(a,b,c);},startGroup:function(a){this._.list.startGroup(a);},commit:function(){this._.list.commit();},setState:function(a){var b=this;if(b._.state==a)return;b.document.getById('cke_'+b.id).setState(a);b._.state=a;}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b);};
