Ext.ns("XCore");Ext.ns("XCore.Widgets");XCore.Widgets.ComboBox=function(a){this.preSelected=false;if(a){if(a.transform){var b=Ext.getDom(a.transform);if(typeof(b.selectedIndex)!="undefined"){this.preSelectedIndex=b.selectedIndex}}if(a.onChange){if(typeof(a.onChange)=="function"){this.onChange(a.onChange)}else{if(a.onChange.fn){this.onChange(a.onChange.fn,a.onChange.scope)}}}if(a.store){a.store.on("datachanged",function(){if(this.preSelected==false){this.preSelect();this.preSelected=true}},this)}if(a.textCellCls){this.textCellCls=a.textCellCls}}a=a||{};a.lazyInit=false;XCore.Widgets.ComboBox.superclass.constructor.call(this,a)};Ext.extend(XCore.Widgets.ComboBox,Ext.form.ComboBox,{initComponent:function(){this.minWidth=80;this.fieldClass=this.className;this.invalidClass=this.className+"-invalid";this.focusClass=this.className+"-focus";this.autoCreate={tag:"input",type:"hidden"};if(!this.iconField){this.iconField="icon"}XCore.Widgets.ComboBox.superclass.initComponent.call(this)},renderTable:function(){var c=document.createElement("TABLE");
c.setAttribute("class",this.className);c.setAttribute("width","100%");c.setAttribute("cellSpacing",0);c.setAttribute("cellPadding",0);c.setAttribute("border",0);c.style.width="100%";var b=document.createElement("TBODY");c.appendChild(b);var a=document.createElement("TR");b.appendChild(a);this.valueCell=document.createElement("TD");this.triggerCell=document.createElement("TD");this.valueCell.className=this.className+"-field";this.triggerCell.className=this.className+"-trigger";this.valueCell.appendChild(document.createElement("BR"));this.triggerCell.appendChild(document.createElement("BR"));a.appendChild(this.valueCell);a.appendChild(this.triggerCell);this.wrap.appendChild(c);this.valueCell=Ext.get(this.valueCell);this.triggerCell=Ext.get(this.triggerCell)},getValue:function(){if(this.hiddenField){return this.hiddenField.value}},setValue:function(a){if(this.hiddenField){this.hiddenField.value=a}},onChange:function(a,b){this.onChangeHandler={fn:a,scope:b||window}},onViewOver:function(a,d){if(this.inKeyMode){return
}var c=this.view.findItemFromChild(d);if(c){if(this.highlighted){this.highlighted.removeClass(this.className+"-item-over")}var b=this.view.indexOf(c);this.highlighted=Ext.get(c);this.highlighted.addClass(this.className+"-item-over")}},onResize:function(b,a){Ext.form.TriggerField.superclass.onResize.call(this,b,a);this.wrap.setWidth(this.width)},onRender:function(b,a){Ext.form.TriggerField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:this.className+"-wrap"});this.renderTable();this.valueItem=this.valueCell;this.trigger=this.triggerCell;this.valueItem.on("click",this.onTriggerClick,this,{preventDefault:true});this.initTrigger();if(this.hideTrigger){this.trigger.setDisplayed(false)}if(!this.width){this.width=this.minWidth}if(this.width){this.wrap.setWidth(this.width);this.valueItem.setWidth(this.wrap.getWidth()-this.trigger.getWidth())}this.hiddenField=this.el.dom;if(this.hiddenName){this.hiddenField.setAttribute("name",this.hiddenName)}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")
}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}if(!this.editable){this.editable=true;this.setEditable(false)}this.preSelect()},preSelect:function(){if(this.preSelectedIndex&&this.preSelectedIndex>=0){this.select(this.preSelectedIndex)}else{this.select(0)}},initList:function(){if(!this.list){var c=this.className||"x-combo-list";this.list=new Ext.Layer({shadow:true,shim:false,cls:[c,this.listClass].join(" "),constrain:false});var b=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);var e="100%";var d="100%";if(b!=null&&!isNaN(b)){e=(b-16)-3;d=((b-16)-3)-16}this.list.setWidth(b);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.title){this.header=this.list.createChild({cls:c+"-hd",html:this.title});this.assetHeight+=this.header.getHeight()}this.innerList=this.list.createChild({cls:c+"-inner"});this.innerList.on("mouseover",this.onViewOver,this);this.innerList.on("mousemove",this.onViewMove,this);this.innerList.setWidth(b-this.list.getFrameWidth("lr"));
if(this.pageSize){this.footer=this.list.createChild({cls:c+"-ft"});this.pageTb=new Ext.PagingToolbar({store:this.store,pageSize:this.pageSize,renderTo:this.footer});this.assetHeight+=this.footer.getHeight()}if(!this.tpl){if(this.iconBox){this.tpl="<tpl for=\".\"><table border='0' cellspacing='0' cellpadding='2' width='"+e+"' class='"+this.className+"-item'><tbody><tr>"+"<td width='3'></td>"+'<tpl if="'+this.iconField+" != '/img/site/tp.gif'\">"+"<td width='16' valign='middle' align='center'><img src='{"+this.iconField+"}' width='10' height='10' alt=' ' /></td>"+"<td valign='middle' width='"+d+"'>{"+this.displayField+"}</td>"+"</tpl>"+'<tpl if="'+this.iconField+" == '/img/site/tp.gif'\">"+"<td colspan='2' valign='middle'>{"+this.displayField+"}</td>"+"</tpl>"+"</tr></tbody></table></tpl>"}else{var a="";if(this.textCellCls){a=" class='"+this.textCellCls+"' "}this.tpl="<tpl for=\".\"><table border='0' cellspacing='0' cellpadding='2' width='"+d+"' class='"+this.className+"-item'><tbody><tr>"+"<td width='3'></td>"+"<td "+a+">{"+this.displayField+"}</td>"+"</tr></tbody></table></tpl>"
}}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+c+"-item"});this.view.on("click",this.onViewClick,this);this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.resizer.on("resize",function(g,i,f){this.maxHeight=f-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=i;this.innerList.setWidth(i-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.onEmptyResults()}},onViewClick:function(a){var b=this.view.getSelectedIndexes()[0];
this.select(b,false);this.collapse()},selectByValue:function(b,c){if(b!==undefined&&b!==null){var a=this.findRecord(this.valueField||this.displayField,b);if(a){this.select(this.store.indexOf(a),c);return true}}return false},selectByText:function(b,c){if(b!==undefined&&b!==null){if(this.displayField!=null){var a=this.findRecord(this.displayField,b);if(a){this.select(this.store.indexOf(a),c);return true}}}return false},getText:function(){var a=this.findRecord(this.valueField||this.displayField,this.getValue());if(a&&a.data){return a.data[this.displayField]}},select:function(b,f){XCore.Widgets.ComboBox.superclass.select.call(this,b,f);var g=this.store.getAt(b);var c=null;if(!g){return}if(typeof(g.data)!="undefined"){c=g.data}else{c=g}var h=c[this.valueField||this.displayField];this.setValue(h);if(typeof(this.onChangeHandler)!="undefined"&&typeof(this.onChangeHandler.fn)=="function"){var a={id:this.hiddenField.getAttribute("id"),name:this.hiddenField.getAttribute("name"),index:b,data:c};this.onChangeHandler.fn.call(this.onChangeHandler.scope,a)
}if(this.valueItem.dom){var e=this.valueItem.dom;var d=new Ext.XTemplate(this.tpl);var i=d.applyTemplate(c);e.innerHTML=i}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}this.list.alignTo(this.wrap,this.listAlign);this.list.show();Ext.get(document).on("mousedown",this.collapseIf,this);Ext.get(document).on("mousewheel",this.collapseIf,this);this.fireEvent("expand",this)},restrictHeight:function(){this.innerList.dom.style.height="";var b=this.innerList.dom;var a=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight);this.innerList.setHeight(a<this.maxHeight?"auto":this.maxHeight);this.list.beginUpdate();this.list.setHeight(this.innerList.getHeight()+this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight);this.list.alignTo(this.wrap,this.listAlign);this.list.endUpdate()},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver(this.className+"-trigger-over");this.trigger.addClassOnClick(this.className+"-trigger-click")
}});

