/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/


window[(typeof (djConfig)!="undefined"&&djConfig.scopeMap&&djConfig.scopeMap[0][1])||"dojo"]._xdResourceLoaded({depends:[["provide","dijit.form.ComboBox"],["require","dijit.form.ValidationTextBox"],["requireLocalization","dijit.form","ComboBox",null,"ar,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sv,tr,zh,zh-tw","ar,ROOT,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sv,tr,zh,zh-tw"]],defineResource:function(_1,_2,_3){if(!_1._hasResource["dijit.form.ComboBox"]){_1._hasResource["dijit.form.ComboBox"]=true;_1.provide("dijit.form.ComboBox");_1.require("dijit.form.ValidationTextBox");_1.declare("dijit.form.ComboBoxMixin",null,{item:null,pageSize:Infinity,store:null,query:{},autoComplete:true,searchDelay:100,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,hasDownArrow:true,templateString:"<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" dojoAttachPoint=\"comboNode\" waiRole=\"combobox\" tabIndex=\"-1\"\n\t><div style=\"overflow:hidden;\"\n\t\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton'\n\t\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown,onmouseup:_onMouse,onmouseenter:_onMouse,onmouseleave:_onMouse\"\n\t\t\t><div class=\"dijitArrowButtonInner\">&thinsp;</div\n\t\t\t><div class=\"dijitArrowButtonChar\">&#9660;</div\n\t\t></div\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\n\t\t><div class=\"dijitReset dijitValidationIconText\">&Chi;</div\n\t\t><div class=\"dijitReset dijitInputField\"\n\t\t\t><input type=\"text\" autocomplete=\"off\" name=\"${name}\" class='dijitReset'\n\t\t\tdojoAttachEvent=\"onkeypress:_onKeyPress, onfocus:_update, compositionend,onkeyup\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t\t/></div\n\t></div\n></div>\n",baseClass:"dijitComboBox",_getCaretPos:function(_4){var _5=0;if(typeof (_4.selectionStart)=="number"){_5=_4.selectionStart;}else{if(_1.isIE){var tr=_1.doc.selection.createRange().duplicate();var _7=_4.createTextRange();tr.move("character",0);_7.move("character",0);try{_7.setEndPoint("EndToEnd",tr);_5=String(_7.text).replace(/\r/g,"").length;}catch(e){}}}return _5;},_setCaretPos:function(_8,_9){_9=parseInt(_9);_2.selectInputText(_8,_9,_9);},_setAttribute:function(_a,_b){if(_a=="disabled"){_2.setWaiState(this.comboNode,"disabled",_b);}},_onKeyPress:function(_c){if(_c.altKey||(_c.ctrlKey&&_c.charCode!=118)){return;}var _d=false;var pw=this._popupWidget;var dk=_1.keys;if(this._isShowingNow){pw.handleKey(_c);}switch(_c.keyCode){case dk.PAGE_DOWN:case dk.DOWN_ARROW:if(!this._isShowingNow||this._prev_key_esc){this._arrowPressed();_d=true;}else{this._announceOption(pw.getHighlightedOption());}_1.stopEvent(_c);this._prev_key_backspace=false;this._prev_key_esc=false;break;case dk.PAGE_UP:case dk.UP_ARROW:if(this._isShowingNow){this._announceOption(pw.getHighlightedOption());}_1.stopEvent(_c);this._prev_key_backspace=false;this._prev_key_esc=false;break;case dk.ENTER:var _10;if(this._isShowingNow&&(_10=pw.getHighlightedOption())){if(_10==pw.nextButton){this._nextSearch(1);_1.stopEvent(_c);break;}else{if(_10==pw.previousButton){this._nextSearch(-1);_1.stopEvent(_c);break;}}}else{this.setDisplayedValue(this.getDisplayedValue());}_c.preventDefault();case dk.TAB:var _11=this.getDisplayedValue();if(pw&&(_11==pw._messages["previousMessage"]||_11==pw._messages["nextMessage"])){break;}if(this._isShowingNow){this._prev_key_backspace=false;this._prev_key_esc=false;if(pw.getHighlightedOption()){pw.setValue({target:pw.getHighlightedOption()},true);}this._hideResultList();}break;case dk.SPACE:this._prev_key_backspace=false;this._prev_key_esc=false;if(this._isShowingNow&&pw.getHighlightedOption()){_1.stopEvent(_c);this._selectOption();this._hideResultList();}else{_d=true;}break;case dk.ESCAPE:this._prev_key_backspace=false;this._prev_key_esc=true;if(this._isShowingNow){_1.stopEvent(_c);this._hideResultList();}this.inherited(arguments);break;case dk.DELETE:case dk.BACKSPACE:this._prev_key_esc=false;this._prev_key_backspace=true;_d=true;break;case dk.RIGHT_ARROW:case dk.LEFT_ARROW:this._prev_key_backspace=false;this._prev_key_esc=false;break;default:this._prev_key_backspace=false;this._prev_key_esc=false;if(_1.isIE||_c.charCode!=0){_d=true;}}if(this.searchTimer){clearTimeout(this.searchTimer);}if(_d){setTimeout(_1.hitch(this,"_startSearchFromInput"),1);}},_autoCompleteText:function(_12){var fn=this.focusNode;_2.selectInputText(fn,fn.value.length);var _14=this.ignoreCase?"toLowerCase":"substr";if(_12[_14](0).indexOf(this.focusNode.value[_14](0))==0){var _15=this._getCaretPos(fn);if((_15+1)>fn.value.length){fn.value=_12;_2.selectInputText(fn,_15);}}else{fn.value=_12;_2.selectInputText(fn);}},_openResultList:function(_16,_17){if(this.disabled||this.readOnly||(_17.query[this.searchAttr]!=this._lastQuery)){return;}this._popupWidget.clearResultList();if(!_16.length){this._hideResultList();return;}var _18=new String(this.store.getValue(_16[0],this.searchAttr));if(_18&&this.autoComplete&&!this._prev_key_backspace&&(_17.query[this.searchAttr]!="*")){this._autoCompleteText(_18);}this._popupWidget.createOptions(_16,_17,_1.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if(_17.direction){if(1==_17.direction){this._popupWidget.highlightFirstOption();}else{if(-1==_17.direction){this._popupWidget.highlightLastOption();}}this._announceOption(this._popupWidget.getHighlightedOption());}},_showResultList:function(){this._hideResultList();var _19=this._popupWidget.getItems(),_1a=Math.min(_19.length,this.maxListLength);this._arrowPressed();this.displayMessage("");with(this._popupWidget.domNode.style){width="";height="";}var _1b=this.open();var _1c=_1.marginBox(this._popupWidget.domNode);this._popupWidget.domNode.style.overflow=((_1b.h==_1c.h)&&(_1b.w==_1c.w))?"hidden":"auto";var _1d=_1b.w;if(_1b.h<this._popupWidget.domNode.scrollHeight){_1d+=16;}_1.marginBox(this._popupWidget.domNode,{h:_1b.h,w:Math.max(_1d,this.domNode.offsetWidth)});_2.setWaiState(this.comboNode,"expanded","true");},_hideResultList:function(){if(this._isShowingNow){_2.popup.close(this._popupWidget);this._arrowIdle();this._isShowingNow=false;_2.setWaiState(this.comboNode,"expanded","false");_2.removeWaiState(this.focusNode,"activedescendant");}},_setBlurValue:function(){var _1e=this.getDisplayedValue();var pw=this._popupWidget;if(pw&&(_1e==pw._messages["previousMessage"]||_1e==pw._messages["nextMessage"])){this.setValue(this._lastValueReported,true);}else{this.setDisplayedValue(_1e);}},_onBlur:function(){this._hideResultList();this._arrowIdle();this.inherited(arguments);},_announceOption:function(_20){if(_20==null){return;}var _21;if(_20==this._popupWidget.nextButton||_20==this._popupWidget.previousButton){_21=_20.innerHTML;}else{_21=this.store.getValue(_20.item,this.searchAttr);}this.focusNode.value=this.focusNode.value.substring(0,this._getCaretPos(this.focusNode));_2.setWaiState(this.focusNode,"activedescendant",_1.attr(_20,"id"));this._autoCompleteText(_21);},_selectOption:function(evt){var tgt=null;if(!evt){evt={target:this._popupWidget.getHighlightedOption()};}if(!evt.target){this.setDisplayedValue(this.getDisplayedValue());return;}else{tgt=evt.target;}if(!evt.noHide){this._hideResultList();this._setCaretPos(this.focusNode,this.store.getValue(tgt.item,this.searchAttr).length);}this._doSelect(tgt);},_doSelect:function(tgt){this.item=tgt.item;this.setValue(this.store.getValue(tgt.item,this.searchAttr),true);},_onArrowMouseDown:function(evt){if(this.disabled||this.readOnly){return;}_1.stopEvent(evt);this.focus();if(this._isShowingNow){this._hideResultList();}else{this._startSearch("");}},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_getQueryString:function(_26){return _1.string.substitute(this.queryExpr,[_26]);},_startSearch:function(key){if(!this._popupWidget){var _28=this.id+"_popup";this._popupWidget=new _2.form._ComboBoxMenu({onChange:_1.hitch(this,this._selectOption),id:_28});_2.removeWaiState(this.focusNode,"activedescendant");_2.setWaiState(this.textbox,"owns",_28);}this.item=null;var _29=_1.clone(this.query);this._lastQuery=_29[this.searchAttr]=this._getQueryString(key);this.searchTimer=setTimeout(_1.hitch(this,function(_2a,_2b){var _2c=this.store.fetch({queryOptions:{ignoreCase:this.ignoreCase,deep:true},query:_2a,onComplete:_1.hitch(this,"_openResultList"),onError:function(_2d){console.error("dijit.form.ComboBox: "+_2d);_1.hitch(_2b,"_hideResultList")();},start:0,count:this.pageSize});var _2e=function(_2f,_30){_2f.start+=_2f.count*_30;_2f.direction=_30;this.store.fetch(_2f);};this._nextSearch=this._popupWidget.onPage=_1.hitch(this,_2e,_2c);},_29,this),this.searchDelay);},_getValueField:function(){return this.searchAttr;},_arrowPressed:function(){if(!this.disabled&&!this.readOnly&&this.hasDownArrow){_1.addClass(this.downArrowNode,"dijitArrowButtonActive");}},_arrowIdle:function(){if(!this.disabled&&!this.readOnly&&this.hasDownArrow){_1.removeClass(this.downArrowNode,"dojoArrowButtonPushed");}},compositionend:function(evt){this.onkeypress({charCode:-1});},constructor:function(){this.query={};},postMixInProperties:function(){if(!this.hasDownArrow){this.baseClass="dijitTextBox";}if(!this.store){var _32=this.srcNodeRef;this.store=new _2.form._ComboBoxDataStore(_32);if(!this.value||((typeof _32.selectedIndex=="number")&&_32.selectedIndex.toString()===this.value)){var _33=this.store.fetchSelectedItem();if(_33){this.value=this.store.getValue(_33,this._getValueField());}}}},_postCreate:function(){var _34=_1.query("label[for=\""+this.id+"\"]");if(_34.length){_34[0].id=(this.id+"_label");var cn=this.comboNode;_2.setWaiState(cn,"labelledby",_34[0].id);_2.setWaiState(cn,"disabled",this.disabled);}},uninitialize:function(){if(this._popupWidget){this._hideResultList();this._popupWidget.destroy();}},_getMenuLabelFromItem:function(_36){return {html:false,label:this.store.getValue(_36,this.searchAttr)};},open:function(){this._isShowingNow=true;return _2.popup.open({popup:this._popupWidget,around:this.domNode,parent:this});},reset:function(){this.item=null;this.inherited(arguments);}});_1.declare("dijit.form._ComboBoxMenu",[_2._Widget,_2._Templated],{templateString:"<ul class='dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' tabIndex='-1' style='overflow:\"auto\";'>"+"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton'></li>"+"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton'></li>"+"</ul>",_messages:null,postMixInProperties:function(){this._messages=_1.i18n.getLocalization("dijit.form","ComboBox",this.lang);this.inherited("postMixInProperties",arguments);},setValue:function(_37){this.value=_37;this.onChange(_37);},onChange:function(_38){},onPage:function(_39){},postCreate:function(){this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];this.inherited("postCreate",arguments);},onClose:function(){this._blurOptionNode();},_createOption:function(_3a,_3b){var _3c=_3b(_3a);var _3d=_1.doc.createElement("li");_2.setWaiRole(_3d,"option");if(_3c.html){_3d.innerHTML=_3c.label;}else{_3d.appendChild(_1.doc.createTextNode(_3c.label));}if(_3d.innerHTML==""){_3d.innerHTML="&nbsp;";}_3d.item=_3a;return _3d;},createOptions:function(_3e,_3f,_40){this.previousButton.style.display=(_3f.start==0)?"none":"";_1.attr(this.previousButton,"id",this.id+"_prev");_1.forEach(_3e,function(_41,i){var _43=this._createOption(_41,_40);_43.className="dijitMenuItem";_1.attr(_43,"id",this.id+i);this.domNode.insertBefore(_43,this.nextButton);},this);this.nextButton.style.display=(_3f.count==_3e.length)?"":"none";_1.attr(this.nextButton,"id",this.id+"_next");},clearResultList:function(){while(this.domNode.childNodes.length>2){this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);}},getItems:function(){return this.domNode.childNodes;},getListLength:function(){return this.domNode.childNodes.length-2;},_onMouseDown:function(evt){_1.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.setValue({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(_4a){if(this._highlighted_option!=_4a){this._blurOptionNode();this._highlighted_option=_4a;_1.addClass(this._highlighted_option,"dijitMenuItemHover");}},_blurOptionNode:function(){if(this._highlighted_option){_1.removeClass(this._highlighted_option,"dijitMenuItemHover");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);}}_2.scrollIntoView(this._highlighted_option);},highlightFirstOption:function(){this._focusOptionNode(this.domNode.firstChild.nextSibling);_2.scrollIntoView(this._highlighted_option);},highlightLastOption:function(){this._focusOptionNode(this.domNode.lastChild.previousSibling);_2.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);}}_2.scrollIntoView(this._highlighted_option);},_page:function(up){var _50=0;var _51=this.domNode.scrollTop;var _52=_1.style(this.domNode,"height");if(!this.getHighlightedOption()){this._highlightNextOption();}while(_50<_52){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 _53=this.domNode.scrollTop;_50+=(_53-_51)*(up?-1:1);_51=_53;}},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(evt){switch(evt.keyCode){case _1.keys.DOWN_ARROW:this._highlightNextOption();break;case _1.keys.PAGE_DOWN:this.pageDown();break;case _1.keys.UP_ARROW:this._highlightPrevOption();break;case _1.keys.PAGE_UP:this.pageUp();break;}}});_1.declare("dijit.form.ComboBox",[_2.form.ValidationTextBox,_2.form.ComboBoxMixin],{postMixInProperties:function(){_2.form.ComboBoxMixin.prototype.postMixInProperties.apply(this,arguments);_2.form.ValidationTextBox.prototype.postMixInProperties.apply(this,arguments);},postCreate:function(){_2.form.ComboBoxMixin.prototype._postCreate.apply(this,arguments);_2.form.ValidationTextBox.prototype.postCreate.apply(this,arguments);},setAttribute:function(_56,_57){_2.form.ValidationTextBox.prototype.setAttribute.apply(this,arguments);_2.form.ComboBoxMixin.prototype._setAttribute.apply(this,arguments);}});_1.declare("dijit.form._ComboBoxDataStore",null,{constructor:function(_58){this.root=_58;},getValue:function(_59,_5a,_5b){return (_5a=="value")?_59.value:(_59.innerText||_59.textContent||"");},isItemLoaded:function(_5c){return true;},fetch:function(_5d){var _5e="^"+_5d.query.name.replace(/([\\\|\(\)\[\{\^\$\+\?\.\<\>])/g,"\\$1").replace("*",".*")+"$",_5f=new RegExp(_5e,_5d.queryOptions.ignoreCase?"i":""),_60=_1.query("> option",this.root).filter(function(_61){return (_61.innerText||_61.textContent||"").match(_5f);});var _62=_5d.start||0,end=("count" in _5d&&_5d.count!=Infinity)?(_62+_5d.count):_60.length;_5d.onComplete(_60.slice(_62,end),_5d);return _5d;},close:function(_64){return;},getLabel:function(_65){return _65.innerHTML;},getIdentity:function(_66){return _1.attr(_66,"value");},fetchItemByIdentity:function(_67){var _68=_1.query("option[value='"+_67.identity+"']",this.root)[0];_67.onItem(_68);},fetchSelectedItem:function(){var _69=this.root,si=_69.selectedIndex;return _1.query("> option:nth-child("+(si!=-1?si+1:1)+")",_69)[0];}});}}});
