﻿
Ext.namespace('Ext.ux');var RawBrowseButtonConfig={superclassAccessor:null,inputFileName:'file',debug:false,FLOAT_EL_WIDTH:60,FLOAT_EL_HEIGHT:18,buttonCt:null,clipEl:null,floatEl:null,inputFileEl:null,originalHandler:null,originalScope:null,initComponent:function(){Ext.ux[this.superclassAccessor].superclass.initComponent.call(this);this.originalHandler=this.handler||null;this.originalScope=this.scope||window;this.handler=null;this.scope=null;},onRender:function(ct,position){if(this.renderImage){this.el=this.buttonCt=this.renderTo;this.renderTo.createChild({tag:'img',src:this.renderImage});}else{Ext.ux[this.superclassAccessor].superclass.onRender.call(this,ct,position);this.buttonCt=this.el.child(this.buttonSelector).parent();}
this.buttonCt.position('relative');var styleCfg={position:'absolute',overflow:'hidden',top:'0px',left:'0px'};this.applyBrowserClipping(styleCfg);this.clipEl=this.buttonCt.createChild({tag:'div',style:styleCfg});this.setClipSize();this.clipEl.on({'mousemove':this.onButtonMouseMove,'mouseover':this.onButtonMouseMove,scope:this});this.floatEl=this.clipEl.createChild({tag:'div',style:{position:'absolute',width:this.FLOAT_EL_WIDTH+'px',height:this.FLOAT_EL_HEIGHT+'px',overflow:'hidden'}});if(this.debug){this.clipEl.applyStyles({'background-color':'green'});this.floatEl.applyStyles({'background-color':'red'});}else{this.clipEl.setOpacity(0.0);}
this.createInputFile();},applyBrowserClipping:function(styleCfg){if(Ext.isIE8){Ext.apply(styleCfg,{left:'-8px',top:'-16px'});}else if(Ext.isIE){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isGecko){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isSafari){Ext.apply(styleCfg,{left:'-4px',top:'-2px'});}},setClipSize:function(){if(this.clipEl){var width=this.buttonCt.getWidth();var height=this.buttonCt.getHeight();if(Ext.isIE8){width=width+16;height=height+22;}else if(Ext.isIE){width=width+5;height=height+5;}else if(Ext.isGecko){width=width+6;height=height+6;}else if(Ext.isSafari){width=width+6;height=height+6;}
this.clipEl.setSize(width,height);}},createInputFile:function(){this.inputFileEl=this.floatEl.createChild({tag:'input',type:'file',size:1,name:this.inputFileName||Ext.id(this.el),style:{position:'absolute',cursor:'pointer',right:'0px',top:'0px'}});this.inputFileEl=this.inputFileEl.child('input')||this.inputFileEl;if(Ext.isIE8){this.inputFileEl.setOpacity(0.0);}
this.inputFileEl.on({'click':this.onInputFileClick,'change':this.onInputFileChange,scope:this});if(this.tooltip){if(typeof this.tooltip=='object'){Ext.QuickTips.register(Ext.apply({target:this.inputFileEl},this.tooltip));}else{this.inputFileEl.dom[this.tooltipType]=this.tooltip;}}},onButtonMouseMove:function(e){var xy=e.getXY();xy[0]-=this.FLOAT_EL_WIDTH/2;xy[1]-=this.FLOAT_EL_HEIGHT/2;this.floatEl.setXY(xy);},onInputFileClick:function(e){e.stopPropagation();},onInputFileChange:function(){if(this.originalHandler){this.originalHandler.call(this.originalScope,this);}},detachInputFile:function(noCreate){var result=this.inputFileEl;if(typeof this.tooltip=='object'){Ext.QuickTips.unregister(this.inputFileEl);}else{this.inputFileEl.dom[this.tooltipType]=null;}
this.inputFileEl.removeAllListeners();this.inputFileEl=null;if(!noCreate){this.createInputFile();}
return result;},getInputFile:function(){return this.inputFileEl;},disable:function(){Ext.ux[this.superclassAccessor].superclass.disable.call(this);this.inputFileEl.dom.disabled=true;},enable:function(){Ext.ux[this.superclassAccessor].superclass.enable.call(this);this.inputFileEl.dom.disabled=false;}};Ext.ux.BrowseButton=Ext.extend(Ext.Button,Ext.apply(Ext.apply({},RawBrowseButtonConfig),{superclassAccessor:'BrowseButton'}));Ext.reg('browsebutton',Ext.ux.BrowseButton);Ext.ux.SplitBrowseButton=Ext.extend(Ext.SplitButton,Ext.apply(Ext.apply({},RawBrowseButtonConfig),{superclassAccessor:'SplitBrowseButton',applyBrowserClipping:function(styleCfg){if(Ext.isIE8){Ext.apply(styleCfg,{left:'0px',top:'0px'});}else if(Ext.isIE){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isGecko){Ext.apply(styleCfg,{left:'-3px',top:'-3px'});}else if(Ext.isSafari){Ext.apply(styleCfg,{left:'-4px',top:'-2px'});}},setClipSize:function(){if(this.clipEl){var width=this.buttonCt.getWidth();var height=this.buttonCt.getHeight();if(Ext.isIE8){}else if(Ext.isIE){width=width-30;height=height+5;}else if(Ext.isGecko){width=width+6;height=height+6;}else if(Ext.isSafari){width=width+6;height=height+6;}
this.clipEl.setSize(width,height);}}}));Ext.reg('splitbrowsebutton',Ext.ux.SplitBrowseButton);