Ext.ns("Ext.ux.plugins");Ext.ux.plugins.VirtualKeyboard=Ext.extend(Ext.util.Observable,{events:{},init:function(a){this.addEvents({expand:true,collapse:true});if(a.getXType()!="textfield"&&a.getXType()!="textarea"){return}this.component=a;a.virtualKeyboardPlugin=this;a.enableKeyEvents=true;a.on({destroy:this.destroy,focus:function(b){this.activeTarget=b},keypress:function(c,b){if(b.getKey()==b.ESC){c.collapseKeyboard()}},scope:this});Ext.apply(a,{onRender:a.onRender.createSequence(function(d,b){this.wrap=this.el.wrap({cls:"x-form-field-wrap"});if(this.fieldLabel&&this.keyboardConfig.showIcon){var c=this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true);this.virtualKeyboardIcon=c.createChild({cls:(this.keyboardIconCls||"ux-virtualkeyboard-icon"),style:"width:16px; height:18px; position:absolute; left:0; top:0; display:block; background:transparent no-repeat scroll 0 2px;"});this.alignKeyboardIcon=function(){var e=this.el;this.virtualKeyboardIcon.alignTo(e,"tl-tr",[2,0])};if(this.alignErrorIcon){this.alignErrorIcon=function(){this.errorIcon.alignTo(this.virtualKeyboardIcon,"tl-tr",[2,0])}}this.on("resize",this.alignKeyboardIcon,this);this.virtualKeyboardIcon.on("click",function(f){if(this.disabled){return}this.expandKeyboard();this.el.focus()},this)}}),initKeyboard:function(){var b="x-keyboard-container";this.keyboardContainer=new Ext.Layer({shadow:true,cls:[b,this.virtualKeyboardClass].join(" "),constrain:false});this.keyboardContainer.setWidth(370);var c=this.keyboardConfig||{};c.showCloseButton=true;c.keyboardTarget=this;this.keyboard=new Ext.ux.VirtualKeyboard(c);this.keyboard.render(this.keyboardContainer);this.keyboard.getTBar().add("-",new Ext.Button({text:this.keyboardConfig.closeButtonText||"Close",listeners:{click:this.collapseKeyboard,scope:this},scope:this}))},collapseKeyboardIf:function(b){if(!b.within(this.wrap)&&!b.within(this.keyboardContainer)){this.collapseKeyboard()}},expandKeyboard:function(){if(this.isKeyboardExpanded()){return}if(!this.keyboard){this.initKeyboard()}this.keyboardContainer.alignTo(this.wrap,this.keyboardAlign||"tl-bl?");this.keyboardContainer.show();Ext.getDoc().on("mousewheel",this.collapseKeyboardIf,this);Ext.getDoc().on("mousedown",this.collapseKeyboardIf,this);this.virtualKeyboardPlugin.fireEvent("expand",this)},collapseKeyboard:function(){if(!this.isKeyboardExpanded()){return}this.keyboardContainer.hide();Ext.getDoc().un("mousewheel",this.collapseKeyboardIf,this);Ext.getDoc().un("mousedown",this.collapseKeyboardIf,this);this.virtualKeyboardPlugin.fireEvent("collapse",this)},isKeyboardExpanded:function(){return this.keyboardContainer&&this.keyboardContainer.isVisible()}})},destroy:function(a){if(a){if(a.keyboard){a.keyboard.keyboard.remove();delete a.keyboard}if(a.keyboardContainer){a.keyboardContainer.remove();delete a.keyboardContainer}}},expand:function(){if(this.activeTarget){this.activeTarget.expandKeyboard()}}});
