/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dijit.form.ComboBox"]){dojo._hasResource["dijit.form.ComboBox"]=true;dojo.provide("dijit.form.ComboBox");dojo.require("dijit.form._FormWidget");dojo.require("dijit.form.ValidationTextBox");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.data.util.filter");dojo.require("dojo.regexp");dojo.requireLocalization("dijit.form","ComboBox",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dijit.form.ComboBoxMixin",null,{item:null,pageSize:Infinity,store:null,fetchProperties:{},query:{},autoComplete:true,highlightMatch:"first",searchDelay:100,searchAttr:"name",labelAttr:"",labelType:"text",queryExpr:"${0}*",ignoreCase:true,hasDownArrow:true,templateString:dojo.cache("dijit.form","templates/ComboBox.html","
\n"),baseClass:"dijitComboBox",_getCaretPos:function(_1){var _2=0;if(typeof (_1.selectionStart)=="number"){_2=_1.selectionStart;}else{if(dojo.isIE){var tr=dojo.doc.selection.createRange().duplicate();var _3=_1.createTextRange();tr.move("character",0);_3.move("character",0);try{_3.setEndPoint("EndToEnd",tr);_2=String(_3.text).replace(/\r/g,"").length;}catch(e){}}}return _2;},_setCaretPos:function(_4,_5){_5=parseInt(_5);dijit.selectInputText(_4,_5,_5);},_setDisabledAttr:function(_6){this.inherited(arguments);dijit.setWaiState(this.comboNode,"disabled",_6);},_abortQuery:function(){if(this.searchTimer){clearTimeout(this.searchTimer);this.searchTimer=null;}if(this._fetchHandle){if(this._fetchHandle.abort){this._fetchHandle.abort();}this._fetchHandle=null;}},_onKeyPress:function(_7){var _8=_7.charOrCode;if(_7.altKey||((_7.ctrlKey||_7.metaKey)&&(_8!="x"&&_8!="v"))||_8==dojo.keys.SHIFT){return;}var _9=false;var _a="_startSearchFromInput";var pw=this._popupWidget;var dk=dojo.keys;var _b=null;this._prev_key_backspace=false;this._abortQuery();if(this._isShowingNow){pw.handleKey(_8);_b=pw.getHighlightedOption();}switch(_8){case dk.PAGE_DOWN:case dk.DOWN_ARROW:case dk.PAGE_UP:case dk.UP_ARROW:if(!this._isShowingNow){this._arrowPressed();_9=true;_a="_startSearchAll";}else{this._announceOption(_b);}dojo.stopEvent(_7);break;case dk.ENTER:if(_b){if(_b==pw.nextButton){this._nextSearch(1);dojo.stopEvent(_7);break;}else{if(_b==pw.previousButton){this._nextSearch(-1);dojo.stopEvent(_7);break;}}}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}_7.preventDefault();case dk.TAB:var _c=this.attr("displayedValue");if(pw&&(_c==pw._messages["previousMessage"]||_c==pw._messages["nextMessage"])){break;}if(_b){this._selectOption();}if(this._isShowingNow){this._lastQuery=null;this._hideResultList();}break;case " ":if(_b){dojo.stopEvent(_7);this._selectOption();this._hideResultList();}else{_9=true;}break;case dk.ESCAPE:if(this._isShowingNow){dojo.stopEvent(_7);this._hideResultList();}break;case dk.DELETE:case dk.BACKSPACE:this._prev_key_backspace=true;_9=true;break;default:_9=typeof _8=="string"||_8==229;}if(_9){this.item=undefined;this.searchTimer=setTimeout(dojo.hitch(this,_a),1);}},_autoCompleteText:function(_d){var fn=this.focusNode;dijit.selectInputText(fn,fn.value.length);var _e=this.ignoreCase?"toLowerCase":"substr";if(_d[_e](0).indexOf(this.focusNode.value[_e](0))==0){var _f=this._getCaretPos(fn);if((_f+1)>fn.value.length){fn.value=_d;dijit.selectInputText(fn,_f);}}else{fn.value=_d;dijit.selectInputText(fn);}},_openResultList:function(_10,_11){this._fetchHandle=null;if(this.disabled||this.readOnly||(_11.query[this.searchAttr]!=this._lastQuery)){return;}this._popupWidget.clearResultList();if(!_10.length){this._hideResultList();return;}_11._maxOptions=this._maxOptions;var _12=this._popupWidget.createOptions(_10,_11,dojo.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if(_11.direction){if(1==_11.direction){this._popupWidget.highlightFirstOption();}else{if(-1==_11.direction){this._popupWidget.highlightLastOption();}}this._announceOption(this._popupWidget.getHighlightedOption());}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_11.query[this.searchAttr])){this._announceOption(_12[1]);}}},_showResultList:function(){this._hideResultList();this._arrowPressed();this.displayMessage("");dojo.style(this._popupWidget.domNode,{width:"",height:""});var _13=this.open();var _14=dojo.marginBox(this._popupWidget.domNode);this._popupWidget.domNode.style.overflow=((_13.h==_14.h)&&(_13.w==_14.w))?"hidden":"auto";var _15=_13.w;if(_13.h$2");return ret;},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&").replace(//gm,">").replace(/"/gm,""");return str;},open:function(){this._isShowingNow=true;return dijit.popup.open({popup:this._popupWidget,around:this.domNode,parent:this});},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(_33,_34){return _34.getValue(_33,this.searchAttr).toString();}});dojo.declare("dijit.form._ComboBoxMenu",[dijit._Widget,dijit._Templated],{templateString:"",_messages:null,postMixInProperties:function(){this._messages=dojo.i18n.getLocalization("dijit.form","ComboBox",this.lang);this.inherited(arguments);},_setValueAttr:function(_35){this.value=_35;this.onChange(_35);},onChange:function(_36){},onPage:function(_37){},postCreate:function(){this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];this.inherited(arguments);},onClose:function(){this._blurOptionNode();},_createOption:function(_38,_39){var _3a=_39(_38);var _3b=dojo.doc.createElement("li");dijit.setWaiRole(_3b,"option");if(_3a.html){_3b.innerHTML=_3a.label;}else{_3b.appendChild(dojo.doc.createTextNode(_3a.label));}if(_3b.innerHTML==""){_3b.innerHTML=" ";}_3b.item=_38;return _3b;},createOptions:function(_3c,_3d,_3e){this.previousButton.style.display=(_3d.start==0)?"none":"";dojo.attr(this.previousButton,"id",this.id+"_prev");dojo.forEach(_3c,function(_3f,i){var _40=this._createOption(_3f,_3e);_40.className="dijitReset dijitMenuItem";dojo.attr(_40,"id",this.id+i);this.domNode.insertBefore(_40,this.nextButton);},this);var _41=false;if(_3d._maxOptions&&_3d._maxOptions!=-1){if((_3d.start+_3d.count)<_3d._maxOptions){_41=true;}else{if((_3d.start+_3d.count)>(_3d._maxOptions-1)){if(_3d.count==_3c.length){_41=true;}}}}else{if(_3d.count==_3c.length){_41=true;}}this.nextButton.style.display=_41?"":"none";dojo.attr(this.nextButton,"id",this.id+"_next");return this.domNode.childNodes;},clearResultList:function(){while(this.domNode.childNodes.length>2){this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);}},_onMouseDown:function(evt){dojo.stopEvent(evt);},_onMouseUp:function(evt){if(evt.target===this.domNode){return;}else{if(evt.target==this.previousButton){this.onPage(-1);}else{if(evt.target==this.nextButton){this.onPage(1);}else{var tgt=evt.target;while(!tgt.item){tgt=tgt.parentNode;}this._setValueAttr({target:tgt},true);}}}},_onMouseOver:function(evt){if(evt.target===this.domNode){return;}var tgt=evt.target;if(!(tgt==this.previousButton||tgt==this.nextButton)){while(!tgt.item){tgt=tgt.parentNode;}}this._focusOptionNode(tgt);},_onMouseOut:function(evt){if(evt.target===this.domNode){return;}this._blurOptionNode();},_focusOptionNode:function(_42){if(this._highlighted_option!=_42){this._blurOptionNode();this._highlighted_option=_42;dojo.addClass(this._highlighted_option,"dijitMenuItemSelected");}},_blurOptionNode:function(){if(this._highlighted_option){dojo.removeClass(this._highlighted_option,"dijitMenuItemSelected");this._highlighted_option=null;}},_highlightNextOption:function(){var fc=this.domNode.firstChild;if(!this.getHighlightedOption()){this._focusOptionNode(fc.style.display=="none"?fc.nextSibling:fc);}else{var ns=this._highlighted_option.nextSibling;if(ns&&ns.style.display!="none"){this._focusOptionNode(ns);}}dijit.scrollIntoView(this._highlighted_option);},highlightFirstOption:function(){this._focusOptionNode(this.domNode.firstChild.nextSibling);dijit.scrollIntoView(this._highlighted_option);},highlightLastOption:function(){this._focusOptionNode(this.domNode.lastChild.previousSibling);dijit.scrollIntoView(this._highlighted_option);},_highlightPrevOption:function(){var lc=this.domNode.lastChild;if(!this.getHighlightedOption()){this._focusOptionNode(lc.style.display=="none"?lc.previousSibling:lc);}else{var ps=this._highlighted_option.previousSibling;if(ps&&ps.style.display!="none"){this._focusOptionNode(ps);}}dijit.scrollIntoView(this._highlighted_option);},_page:function(up){var _43=0;var _44=this.domNode.scrollTop;var _45=dojo.style(this.domNode,"height");if(!this.getHighlightedOption()){this._highlightNextOption();}while(_43<_45){if(up){if(!this.getHighlightedOption().previousSibling||this._highlighted_option.previousSibling.style.display=="none"){break;}this._highlightPrevOption();}else{if(!this.getHighlightedOption().nextSibling||this._highlighted_option.nextSibling.style.display=="none"){break;}this._highlightNextOption();}var _46=this.domNode.scrollTop;_43+=(_46-_44)*(up?-1:1);_44=_46;}},pageUp:function(){this._page(true);},pageDown:function(){this._page(false);},getHighlightedOption:function(){var ho=this._highlighted_option;return (ho&&ho.parentNode)?ho:null;},handleKey:function(key){switch(key){case dojo.keys.DOWN_ARROW:this._highlightNextOption();break;case dojo.keys.PAGE_DOWN:this.pageDown();break;case dojo.keys.UP_ARROW:this._highlightPrevOption();break;case dojo.keys.PAGE_UP:this.pageUp();break;}}});dojo.declare("dijit.form.ComboBox",[dijit.form.ValidationTextBox,dijit.form.ComboBoxMixin],{_setValueAttr:function(_47,_48,_49){this.item=null;if(!_47){_47="";}dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,_47,_48,_49);}});dojo.declare("dijit.form._ComboBoxDataStore",null,{constructor:function(_4a){this.root=_4a;dojo.query("> option",_4a).forEach(function(_4b){_4b.innerHTML=dojo.trim(_4b.innerHTML);});},getValue:function(_4c,_4d,_4e){return (_4d=="value")?_4c.value:(_4c.innerText||_4c.textContent||"");},isItemLoaded:function(_4f){return true;},getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},_fetchItems:function(_50,_51,_52){if(!_50.query){_50.query={};}if(!_50.query.name){_50.query.name="";}if(!_50.queryOptions){_50.queryOptions={};}var _53=dojo.data.util.filter.patternToRegExp(_50.query.name,_50.queryOptions.ignoreCase),_54=dojo.query("> option",this.root).filter(function(_55){return (_55.innerText||_55.textContent||"").match(_53);});if(_50.sort){_54.sort(dojo.data.util.sorter.createSortFunction(_50.sort,this));}_51(_54,_50);},close:function(_56){return;},getLabel:function(_57){return _57.innerHTML;},getIdentity:function(_58){return dojo.attr(_58,"value");},fetchItemByIdentity:function(_59){var _5a=dojo.query("option[value='"+_59.identity+"']",this.root)[0];_59.onItem(_5a);},fetchSelectedItem:function(){var _5b=this.root,si=_5b.selectedIndex;return dojo.query("> option:nth-child("+(si!=-1?si+1:1)+")",_5b)[0];}});dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);}