Type.registerNamespace("Sys.Extended.UI"),Sys.Extended.UI.AutoCompleteBehavior=function(e){Sys.Extended.UI.AutoCompleteBehavior.initializeBase(this,[e]),this._servicePath=null,this._serviceMethod=null,this._contextKey=null,this._useContextKey=!1,this._minimumPrefixLength=3,this._completionSetCount=10,this._completionInterval=1e3,this._completionListElementID=null,this._completionListElement=null,this._textColor="windowtext",this._textBackground="window",this._popupBehavior=null,this._popupBehaviorHiddenHandler=null,this._onShowJson=null,this._onHideJson=null,this._timer=null,this._cache=null,this._currentPrefix=null,this._selectIndex=-1,this._focusHandler=null,this._blurHandler=null,this._bodyClickHandler=null,this._clickHandler=null,this._completionListBlurHandler=null,this._keyDownHandler=null,this._mouseDownHandler=null,this._mouseUpHandler=null,this._mouseOverHandler=null,this._tickHandler=null,this._enableCaching=!0,this._flyoutHasFocus=!1,this._textBoxHasFocus=!1,this._completionListCssClass=null,this._completionListItemCssClass=null,this._highlightedItemCssClass=null,this._delimiterCharacters=null,this._firstRowSelected=!1,this._showOnlyCurrentWordInCompletionListItem=!1,this._webRequest=null},Sys.Extended.UI.AutoCompleteBehavior.prototype={initialize:function(){Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(this,"initialize"),$common.prepareHiddenElementForATDeviceUpdate(),this._popupBehaviorHiddenHandler=Function.createDelegate(this,this._popupHidden),this._tickHandler=Function.createDelegate(this,this._onTimerTick),this._focusHandler=Function.createDelegate(this,this._onGotFocus),this._blurHandler=Function.createDelegate(this,this._onLostFocus),this._keyDownHandler=Function.createDelegate(this,this._onKeyDown),this._mouseDownHandler=Function.createDelegate(this,this._onListMouseDown),this._mouseUpHandler=Function.createDelegate(this,this._onListMouseUp),this._mouseOverHandler=Function.createDelegate(this,this._onListMouseOver),this._completionListBlurHandler=Function.createDelegate(this,this._onCompletionListBlur),this._bodyClickHandler=Function.createDelegate(this,this._onCompletionListBlur),this._clickHandler=Function.createDelegate(this,this._onInputClick),this._timer=new Sys.Timer,this.initializeTimer(this._timer);var e=this.get_element();this.initializeTextBox(e),null!==this._completionListElementID&&(this._completionListElement=$get(this._completionListElementID)),null==this._completionListElement&&(this._completionListElement=document.createElement("ul"),this._completionListElement.id=this.get_id()+"_completionListElem",Sys.Browser.agent===Sys.Browser.Safari?document.body.appendChild(this._completionListElement):e.parentNode.insertBefore(this._completionListElement,e.nextSibling)),this.initializeCompletionList(this._completionListElement),this._popupBehavior=$create(Sys.Extended.UI.PopupBehavior,{id:this.get_id()+"PopupBehavior",parentElement:e,positioningMode:Sys.Extended.UI.PositioningMode.BottomLeft},null,null,this._completionListElement),this._popupBehavior.add_hidden(this._popupBehaviorHiddenHandler),this._onShowJson&&this._popupBehavior.set_onShow(this._onShowJson),this._onHideJson&&this._popupBehavior.set_onHide(this._onHideJson)},dispose:function(){this._onShowJson=null,this._onHideJson=null,this._popupBehavior&&(this._popupBehaviorHiddenHandler&&this._popupBehavior.remove_hidden(this._popupBehaviorHiddenHandler),this._popupBehavior.dispose(),this._popupBehavior=null),this._timer&&(this._timer.dispose(),this._timer=null);var e=this.get_element();e&&($removeHandler(e,"focus",this._focusHandler),$removeHandler(e,"blur",this._blurHandler),$removeHandler(e,"keydown",this._keyDownHandler),$removeHandler(e,"click",this._clickHandler),$removeHandler(this._completionListElement,"blur",this._completionListBlurHandler),$removeHandler(this._completionListElement,"mousedown",this._mouseDownHandler),$removeHandler(this._completionListElement,"mouseup",this._mouseUpHandler),$removeHandler(this._completionListElement,"mouseover",this._mouseOverHandler)),this._bodyClickHandler&&($removeHandler(document.body,"click",this._bodyClickHandler),this._bodyClickHandler=null),this._popupBehaviorHiddenHandler=null,this._tickHandler=null,this._focusHandler=null,this._blurHandler=null,this._clickHandler=null,this._keyDownHandler=null,this._completionListBlurHandler=null,this._mouseDownHandler=null,this._mouseUpHandler=null,this._mouseOverHandler=null,Sys.Extended.UI.AutoCompleteBehavior.callBaseMethod(this,"dispose")},initializeTimer:function(e){e.set_interval(this._completionInterval),e.add_tick(this._tickHandler)},initializeTextBox:function(e){e.autocomplete="off",$addHandler(e,"focus",this._focusHandler),$addHandler(e,"blur",this._blurHandler),$addHandler(e,"keydown",this._keyDownHandler),$addHandler(e,"click",this._clickHandler)},initializeCompletionList:function(e){if(this._completionListCssClass)Sys.UI.DomElement.addCssClass(e,this._completionListCssClass);else{var t=e.style;t.textAlign="left",t.visibility="hidden",t.cursor="default",t.listStyle="none",t.padding="0px",t.margin="0px! important",Sys.Browser.agent===Sys.Browser.Safari?(t.border="solid 1px gray",t.backgroundColor="white",t.color="black"):(t.border="solid 1px buttonshadow",t.backgroundColor=this._textBackground,t.color=this._textColor)}$addHandler(e,"mousedown",this._mouseDownHandler),$addHandler(e,"mouseup",this._mouseUpHandler),$addHandler(e,"mouseover",this._mouseOverHandler),$addHandler(e,"blur",this._completionListBlurHandler),$addHandler(document.body,"click",this._bodyClickHandler)},_onInputClick:function(e){e||(e=window.event),e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},_currentCompletionWord:function(){var e=this.get_element(),t=e.value,i=t;if(this.get_isMultiWord()){var s=this._getCurrentWordStartIndex(),n=this._getCurrentWordEndIndex(s);i=n<=s?t.substring(s):t.substring(s,n)}return i},_getCursorIndex:function(){return this.get_element().selectionStart},_getCurrentWordStartIndex:function(){for(var e=this.get_element(),t=e.value.substring(0,this._getCursorIndex()),i=0,s=-1,n=0;ns&&(s=o)}return i=s,i>=this._getCursorIndex()&&(i=0),i<0?0:i+1},_getCurrentWordEndIndex:function(e){for(var t=this.get_element(),i=t.value.substring(e),s=0,n=0;n0&&(o0&&(r=s.substring(0,n)),o>n&&(l=s.substring(o)),t=r+e+l}return t},_hideCompletionList:function(){var e=new Sys.CancelEventArgs;this.raise_hiding(e),e.get_cancel()||this.hidePopup()},showPopup:function(){this._popupBehavior.show(),this.raise_shown(Sys.EventArgs.Empty)},hidePopup:function(){this._popupBehavior?this._popupBehavior.hide():this._popupHidden()},_popupHidden:function(){this._completionListElement.innerHTML="",this._selectIndex=-1,this._flyoutHasFocus=!1,this.raise_hidden(Sys.EventArgs.Empty)},_highlightItem:function(e){for(var t=this._completionListElement.childNodes,i=0;i0&&(this._selectIndex--,this._handleScroll(this._completionListElement.childNodes[this._selectIndex],this._selectIndex),this._highlightItem(this._completionListElement.childNodes[this._selectIndex]),e.stopPropagation(),e.preventDefault()):t===Sys.UI.Key.down?this._selectIndex=0&&(i.scrollTop+=s.height*t-(i.clientHeight+i.scrollTop)+s.height),s.height*(n-(t+1))-(i.scrollHeight-i.scrollTop)>=0&&(i.scrollTop-=s.height*(n-(t+1))-(i.scrollHeight-i.scrollTop)+s.height),i.scrollTop%s.height!==0&&(s.height*(t+1)-(i.clientHeight+i.scrollTop)>=0?i.scrollTop-=i.scrollTop%s.height:i.scrollTop+=s.height-i.scrollTop%s.height)},_handleFlyoutFocus:function(){this._textBoxHasFocus||this._flyoutHasFocus||(this._webRequest&&(this._webRequest.get_executor().abort(),this._webRequest=null),this._hideCompletionList())},_onLostFocus:function(){this._textBoxHasFocus=!1,this._timer.set_enabled(!1),window.setTimeout(Function.createDelegate(this,this._handleFlyoutFocus),500)},_onMethodComplete:function(e,t){this._webRequest=null,this._update(t,e,!0)},_onMethodFailed:function(e,t,i){this._webRequest=null},_onTimerTick:function(e,t){if(this._timer.set_enabled(!1),this._servicePath&&this._serviceMethod){var i=this._currentCompletionWord();if(i.trim().length