ASPxClientPagerIDSuffix = { PageSizeBox: "PSB", PageSizePopup: "PSP" }; ASPxClientPager = _aspxCreateClass(ASPxClientControl, { constructor: function(name) { this.constructor.prototype.constructor.call(this, name); this.droppedDown = false; this.pageSizeItems = []; this.pageSizeSelectedItem = null; this.pageSizeChangedHandler = new ASPxClientEvent(); this.pageSizeChangeHandled = false; }, Initialize: function() { ASPxClientControl.prototype.Initialize.call(this); aspxGetPagersCollection().Push(this); }, GetPageSizeBoxID: function() { return this.name + "_" + ASPxClientPagerIDSuffix.PageSizeBox; }, GetPageSizePopupMenuID: function() { return this.name + "_" + ASPxClientPagerIDSuffix.PageSizePopup; }, GetPageSizeBoxElement: function() { return _aspxGetElementById(this.GetPageSizeBoxID()); }, GetPageSizeInputElement: function() { return _aspxGetChildByTagName(this.GetPageSizeBoxElement(), "INPUT", 0); }, GetPageSizePopupMenu: function() { return aspxGetControlCollection().Get(this.GetPageSizePopupMenuID()); }, TogglePageSizeDropDown: function() { if(!this.droppedDown) this.ShowPageSizeDropDown(); else this.HidePageSizeDropDown(); }, ShowPageSizeDropDown: function() { this.GetPageSizePopupMenu().Show(); this.droppedDown = true; }, HidePageSizeDropDown: function() { this.GetPageSizePopupMenu().Hide(); this.droppedDown = false; }, ChangePageSizeInput: function(isNext) { var input = this.GetPageSizeInputElement(); var index = this.GetPageSizeIndexByText(input.value); var count = this.pageSizeItems.length; if(isNext) index = (index < count - 1) ? (index + 1) : 0; else index = (index > 0) ? (index - 1) : (count - 1); input.value = this.pageSizeItems[index].text; }, ChangePageSizeValue: function(value) { this.GetPageSizeInputElement().value = this.GetPageSizeTextByValue(value); }, IsPageSizeValueChanged: function() { var newValue = this.GetPageSizeValueByText(this.GetPageSizeInputElement().value); return newValue != this.pageSizeSelectedItem.value; }, OnDocumentOnClick: function(evt) { var srcElement = _aspxGetEventSource(evt); if(srcElement != this.GetPageSizeBoxElement() && _aspxGetParentById(srcElement, this.GetPageSizeBoxID()) == null) { this.droppedDown = false; } }, OnPageSizeClick: function(evt) { var self = this; window.setTimeout(function(){ self.TogglePageSizeDropDown(); }, 0); _aspxSetFocus(this.GetPageSizeInputElement()); }, OnPageSizePopupItemClick: function(value) { this.ChangePageSizeValue(value); if(this.IsPageSizeValueChanged()) this.OnPageSizeValueChanged(); }, OnPageSizeBlur: function(evt) { if(this.IsPageSizeValueChanged()) this.OnPageSizeValueChanged(); }, OnPageSizeKeyDown: function(evt) { var keyCode = _aspxGetKeyCode(evt); if(keyCode == ASPxKey.Down || keyCode == ASPxKey.Up) { if(evt.altKey) this.TogglePageSizeDropDown(); else this.ChangePageSizeInput(keyCode == ASPxKey.Down); if(this.droppedDown) { var popupMenu = this.GetPageSizePopupMenu(); var value = this.GetPageSizeValueByText(this.GetPageSizeInputElement().value); var item = popupMenu.GetItemByName(value); popupMenu.SetSelectedItem(item); } } else if(keyCode == ASPxKey.Enter) { if(this.IsPageSizeValueChanged()) this.OnPageSizeValueChanged(); else this.HidePageSizeDropDown(); return _aspxPreventEventAndBubble(evt); } else if(keyCode == ASPxKey.Tab) { this.HidePageSizeDropDown(); } else if(keyCode == ASPxKey.Esc) { this.HidePageSizeDropDown(); this.GetPageSizeInputElement().value = this.pageSizeSelectedItem.text; } return true; }, OnPageSizeValueChanged: function() { if(this.pageSizeChangeHandled) return; var value = this.GetPageSizeValueByText(this.GetPageSizeInputElement().value); if (!this.pageSizeChangedHandler.IsEmpty()) { this.pageSizeChangeHandled = true; var popupMenu = this.GetPageSizePopupMenu(); var menuItem = popupMenu.GetItemByName(value); var menuItemElement = popupMenu.GetItemElement(menuItem.index); var command = ASPxClientPagerIDSuffix.PageSizePopup + value; var args = new ASPxClientPagerPageSizeChangedEventArgs(menuItemElement, command); this.pageSizeChangedHandler.FireEvent(this, args); } }, GetPageSizeIndexByText: function(text) { var count = this.pageSizeItems.length; for(var i = 0; i < count; i++) { if(text == this.pageSizeItems[i].text) return i; } return -1; }, GetPageSizeTextByValue: function(value) { var count = this.pageSizeItems.length; for(var i = 0; i < count; i++) { if(value == this.pageSizeItems[i].value) return this.pageSizeItems[i].text; } return value.toString(); }, GetPageSizeValueByText: function(text) { var count = this.pageSizeItems.length; for(var i = 0; i < count; i++) { if(text == this.pageSizeItems[i].text) return this.pageSizeItems[i].value; } return this.pageSizeSelectedItem.value; } }); ASPxClientPagerPageSizeChangedEventArgs = _aspxCreateClass(ASPxClientEventArgs, { constructor: function(element, value) { this.constructor.prototype.constructor.call(this); this.element = element; this.value = value; } }); var __aspxPagersCollection = null; function aspxGetPagersCollection() { if(__aspxPagersCollection == null) __aspxPagersCollection = new ASPxClientPagersCollection(); return __aspxPagersCollection; } _aspxAttachEventToDocument("click", aspxPagerDocumentOnClick); function aspxPagerDocumentOnClick(evt){ return aspxGetPagersCollection().OnDocumentOnClick(evt); } ASPxClientPagersCollection = _aspxCreateClass(null, { constructor: function() { this.pagers = {}; }, Push: function(pager) { this.pagers[pager.name] = pager; }, Get: function(name) { return this.pagers[name]; }, OnDocumentOnClick: function(evt) { for(var name in this.pagers) this.Get(name).OnDocumentOnClick(evt); } }); function _aspxPGNavCore(element) { if(element != null) { if(element.tagName != "A") { var linkElement = _aspxGetChildByTagName(element, "A", 0); if(linkElement != null) _aspxNavigateByLink(linkElement); } } } function _aspxPGNav(evt) { var element = _aspxGetEventSource(evt); _aspxPGNavCore(element); if(!__aspxNetscapeFamily) evt.cancelBubble = true; } function aspxPOnPageSizeChanged(s, e) { s.SendPostBack(e.value); } function aspxPOnSeoPageSizeChanged(s, e) { _aspxPGNavCore(e.element); } function aspxPOnPageSizeBlur(name, evt) { var pager = aspxGetControlCollection().Get(name); if(pager != null) pager.OnPageSizeBlur(evt); return true; } function aspxPOnPageSizeKeyDown(name, evt) { var pager = aspxGetControlCollection().Get(name); if(pager != null) return pager.OnPageSizeKeyDown(evt); return true; } function aspxPOnPageSizeClick(name, evt) { var pager = aspxGetControlCollection().Get(name); if(pager != null) pager.OnPageSizeClick(evt); } function aspxPOnPageSizePopupItemClick(name, item) { var pager = aspxGetControlCollection().Get(name); if(pager != null) { pager.OnPageSizePopupItemClick(item.name); } }