// Name: Tabs.Tabs.debug.js // Assembly: AjaxControlToolkit // Version: 3.5.60919.0 // FileVersion: 3.5.60919 // (c) 2010 CodePlex Foundation /// /// /// /// (function () { var scriptName = "ExtendedTabs"; function execute() { Type.registerNamespace("Sys.Extended.UI"); Sys.Extended.UI.TabStripPlacement = function () { } Sys.Extended.UI.TabStripPlacement.prototype = { Top: 0, Bottom: 1, TopRight: 2, BottomRight: 3 } Sys.Extended.UI.TabStripPlacement.registerEnum("Sys.Extended.UI.TabStripPlacement", true); Sys.Extended.UI.UseVerticalStripPlacement = function () { } Sys.Extended.UI.OnDemand = function () { } Sys.Extended.UI.OnDemandMode = function () { } Sys.Extended.UI.OnDemandMode.prototype = { None: 0, Always: 1, Once: 2 } Sys.Extended.UI.OnDemandMode.registerEnum("Sys.Extended.UI.OnDemandMode", true); Sys.Extended.UI.TabContainer = function (element) { Sys.Extended.UI.TabContainer.initializeBase(this, [element]); this._cachedActiveTabIndex = -1; this._activeTabIndex = -1; this._scrollBars = Sys.Extended.UI.ScrollBars.None; this._tabs = null; this._header = null; this._body = null; this._loaded = false; this._autoPostBackId = null; this._useVerticalStripPlacement = false; this._onDemand = false; this._pageRequestManager = null; this._tabStripPlacement = Sys.Extended.UI.TabStripPlacement.Top; this._app_onload$delegate = Function.createDelegate(this, this._app_onload); } Sys.Extended.UI.TabContainer.prototype = { add_activeTabChanged: function (handler) { this.get_events().addHandler("activeTabChanged", handler); }, remove_activeTabChanged: function (handler) { this.get_events().removeHandler("activeTabChanged", handler); }, raiseActiveTabChanged: function () { var eh = this.get_events().getHandler("activeTabChanged"); if (eh) { eh(this, Sys.EventArgs.Empty); } if (this._autoPostBackId) { __doPostBack(this._autoPostBackId, "activeTabChanged:" + this.get_activeTabIndex()); } }, get_activeTabIndex: function () { if (this._cachedActiveTabIndex > -1) { return this._cachedActiveTabIndex; } return this._activeTabIndex; }, set_activeTabIndex: function (valuePassed) { var value = valuePassed; if (!this.get_isInitialized()) { this._cachedActiveTabIndex = value; } else { if (value < -1) { throw Error.argumentOutOfRange("value"); } if (value >= this.get_tabs().length) { value = this.get_tabs().length - 1; } if (value != this._activeTabIndex) { if (this._activeTabIndex != -1) { var oldTab = this.get_tabs()[this._activeTabIndex]; /*this._body.style.height = this._body.offsetHeight + "px";*/ oldTab._set_active(false); } var changed = (this._activeTabIndex != value); this._activeTabIndex = value; if (this._activeTabIndex != -1) { this.get_tabs()[this._activeTabIndex]._set_active(true); } /*this._body.style.height = "auto";*/ if (this._loaded && changed) { if (this._onDemand) { var activeTab = this.get_tabs()[this._activeTabIndex]; if (activeTab._onDemandMode != Sys.Extended.UI.OnDemandMode.None) { if ((activeTab._onDemandMode == Sys.Extended.UI.OnDemandMode.Once && activeTab._wasLoadedOnce == false) || activeTab._onDemandMode == Sys.Extended.UI.OnDemandMode.Always) { this._pageRequestManager.beginAsyncPostBack([activeTab._updatePanelID], null, null, false, null); activeTab.set_wasLoadedOnce(true); } } } this.raiseActiveTabChanged(); } this.raisePropertyChanged("activeTabIndex"); } } }, get_tabs: function () { if (this._tabs == null) { this._tabs = []; } return this._tabs; }, get_activeTab: function () { if (this._activeTabIndex > -1) { return this.get_tabs()[this._activeTabIndex]; } return null; }, set_activeTab: function (value) { var i = Array.indexOf(this.get_tabs(), value); if (i == -1) { throw Error.argument("value", Sys.Extended.UI.Resources.Tabs_ActiveTabArgumentOutOfRange); } this.set_activeTabIndex(i); }, get_autoPostBackId: function () { return this._autoPostBackId; }, set_autoPostBackId: function (value) { this._autoPostBackId = value; }, get_scrollBars: function () { return this._scrollBars; }, set_scrollBars: function (value) { if (this._scrollBars != value) { this._scrollBars = value; this._invalidate(); this.raisePropertyChanged("scrollBars"); } }, get_tabStripPlacement: function () { return this._tabStripPlacement; }, set_tabStripPlacement: function (value) { if (this._tabStripPlacement != value) { this._tabStripPlacement = value; this._invalidate(); this.raisePropertyChanged("tabStripPlacement"); } }, get_useVerticalStripPlacement: function () { return this._useVerticalStripPlacement; }, set_useVerticalStripPlacement: function (value) { if (this._useVerticalStripPlacement != value) { this._useVerticalStripPlacement = value; this._invalidate(); this.raisePropertyChanged("useVerticalStripPlacement"); } }, get_onDemand: function () { return this._onDemand; }, set_onDemand: function (value) { if (this._onDemand != value) { this._onDemand = value; this._invalidate(); this.raisePropertyChanged("onDemand"); } }, initialize: function () { Sys.Extended.UI.TabContainer.callBaseMethod(this, "initialize"); var elt = this.get_element(); this._header = $get(this.get_id() + "_header"); this._body = $get(this.get_id() + "_body"); $common.addCssClasses(elt, [ "ajax__tab_container", "ajax__tab_default" ]); this._invalidate(); if (this._onDemand) this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); Sys.Application.add_load(this._app_onload$delegate); }, dispose: function () { $clearHandlers(this.get_element()); Sys.Application.remove_load(this._app_onload$delegate); Sys.Extended.UI.TabContainer.callBaseMethod(this, "dispose"); }, getFirstTab: function (includeDisabled) { var tabs = this.get_tabs(); for (var i = 0; i < tabs.length; i++) { if (includeDisabled || tabs[i].get_enabled()) { return tabs[i]; } } return null; }, getLastTab: function (includeDisabled) { var tabs = this.get_tabs(); for (var i = tabs.length - 1; i >= 0; i--) { if (includeDisabled || tabs[i].get_enabled()) { return tabs[i]; } } return null; }, getNextTab: function (includeDisabled) { var tabs = this.get_tabs(); var active = this.get_activeTabIndex(); for (var i = 1; i < tabs.length; i++) { var tabIndex = (active + i) % tabs.length; var tab = tabs[tabIndex]; if (includeDisabled || tab.get_enabled()) return tab; } return null; }, getPreviousTab: function (includeDisabled) { var tabs = this.get_tabs(); var active = this.get_activeTabIndex(); for (var i = 1; i < tabs.length; i++) { var tabIndex = (tabs.length + (active - i)) % tabs.length; var tab = tabs[tabIndex]; if (includeDisabled || tab.get_enabled()) return tab; } return null; }, getNearestTab: function (includeDisabled) { var prev = this.getPreviousTab(includeDisabled); var next = this.getNextTab(includeDisabled); if (prev && prev.get_tabIndex() < this._activeTabIndex) { return prev; } else if (next && next.get_tabIndex() > this._activeTabIndex) { return next; } return null; }, saveClientState: function () { var tabs = this.get_tabs(); var tabEnabledState = []; var tabWasLoadedOnceState = []; for (var i = 0; i < tabs.length; i++) { Array.add(tabEnabledState, tabs[i].get_enabled()); Array.add(tabWasLoadedOnceState, tabs[i].get_wasLoadedOnce()); } var state = { ActiveTabIndex: this._activeTabIndex, TabEnabledState: tabEnabledState, TabWasLoadedOnceState: tabWasLoadedOnceState }; return Sys.Serialization.JavaScriptSerializer.serialize(state); }, _invalidate: function () { if (this.get_isInitialized()) { $common.removeCssClasses(this._body, [ "ajax__scroll_horiz", "ajax__scroll_vert", "ajax__scroll_both", "ajax__scroll_auto", "ajax__scroll_none" ]); switch (this._scrollBars) { case Sys.Extended.UI.ScrollBars.Horizontal: Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_horiz"); break; case Sys.Extended.UI.ScrollBars.Vertical: Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_vert"); break; case Sys.Extended.UI.ScrollBars.Both: Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_both"); break; case Sys.Extended.UI.ScrollBars.Auto: Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_auto"); break; case Sys.Extended.UI.ScrollBars.None: Sys.UI.DomElement.addCssClass(this._body, "ajax__scroll_none"); break; } if (this._useVerticalStripPlacement) { var headBounds = $common.getBounds(this._header); var bodyBounds = $common.getBounds(this._body); var spannerHeight = (bodyBounds.height - headBounds.height - 1) + "px"; $get(this.get_id() + "_headerSpannerHeight").style.height = spannerHeight; if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7) { if (this._tabStripPlacement == Sys.Extended.UI.TabStripPlacement.Top || this._tabStripPlacement == Sys.Extended.UI.TabStripPlacement.Bottom) { var newBounds = { x: headBounds.x + headBounds.width, y: headBounds.y, width: bodyBounds.width, height: bodyBounds.height }; $common.setBounds(this._body, newBounds); } else { var newBounds = { x: bodyBounds.x + bodyBounds.width, y: headBounds.y, width: headBounds.width, height: headBounds.height }; $common.setBounds(this._header, newBounds); $common.setBounds(this._body, bodyBounds); } } } } }, _app_onload: function (sender, e) { if (this._cachedActiveTabIndex != -1) { this.set_activeTabIndex(this._cachedActiveTabIndex); this._cachedActiveTabIndex = -1; var activeTab = this.get_tabs()[this._activeTabIndex]; if (activeTab) { activeTab.set_wasLoadedOnce(true); activeTab._setFocus(activeTab); } } this._loaded = true; } } Sys.Extended.UI.TabContainer.registerClass("Sys.Extended.UI.TabContainer", Sys.Extended.UI.ControlBase); Sys.registerComponent(Sys.Extended.UI.TabContainer, { name: "tabContainer", parameters: [{ name: "activeTabIndex", type: "Number"}] }); Sys.Extended.UI.TabPanel = function (element) { Sys.Extended.UI.TabPanel.initializeBase(this, [element]); this._active = false; this._tab = null; this._headerOuter = null; this._headerInner = null; this._header = null; this._owner = null; this._ownerID = null; this._enabled = true; this._tabIndex = -1; this._dynamicContextKey = null; this._dynamicServicePath = null; this._dynamicServiceMethod = null; this._dynamicPopulateBehavior = null; this._scrollBars = Sys.Extended.UI.ScrollBars.None; this._onDemandMode = Sys.Extended.UI.OnDemandMode.Always; this._wasLoadedOnce = false; this._updatePanelID = ""; this.isAttachedDisabledEvents = false; this.isAttachedEnabledEvents = false; this._header_onclick$delegate = Function.createDelegate(this, this._header_onclick); this._header_onmouseover$delegate = Function.createDelegate(this, this._header_onmouseover); this._header_onmouseout$delegate = Function.createDelegate(this, this._header_onmouseout); this._header_onmousedown$delegate = Function.createDelegate(this, this._header_onmousedown); this._dynamicPopulate_onpopulated$delegate = Function.createDelegate(this, this._dynamicPopulate_onpopulated); this._oncancel$delegate = Function.createDelegate(this, this._oncancel); this._onkeydown$delegate = Function.createDelegate(this, this._onkeydown); this._disabled_onclick$delegate = Function.createDelegate(this, this._disabled_onclick); } Sys.Extended.UI.TabPanel.prototype = { add_click: function (handler) { this.get_events().addHandler("click", handler); }, remove_click: function (handler) { this.get_events().removeHandler("click", handler); }, raiseClick: function () { var eh = this.get_events().getHandler("click"); if (eh) { eh(this, Sys.EventArgs.Empty); } }, add_populating: function (handler) { this.get_events().addHandler("populating", handler); }, remove_populating: function (handler) { this.get_events().removeHandler("populating", handler); }, raisePopulating: function () { var eh = this.get_events().getHandler("populating"); if (eh) { eh(this, Sys.EventArgs.Empty); } }, add_populated: function (handler) { this.get_events().addHandler("populated", handler); }, remove_populated: function (handler) { this.get_events().removeHandler("populated", handler); }, raisePopulated: function () { var eh = this.get_events().getHandler("populated"); if (eh) { eh(this, Sys.EventArgs.Empty); } }, get_headerText: function () { if (this.get_isInitialized()) { return this._header.innerHTML; } return ""; }, set_headerText: function (value) { if (!this.get_isInitialized()) { throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetBeforeInitialization, 'headerText')); } if (this.get_headerText() != value) { this._header.innerHTML = value; this.raisePropertyChanged("headerText"); } }, get_headerTab: function () { return this._header; }, set_headerTab: function (value) { if (typeof (value) === "string") { value = Sys.get(value); if (!value) { throw new Error.argumentNull("value"); } } if (this._header != value) { if (this.get_isInitialized()) { throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization, 'headerTab')); } this._header = value; this.raisePropertyChanged("value"); } }, get_enabled: function () { return this._enabled; }, set_enabled: function (value) { if (value != this._enabled) { this._enabled = value; if (this.get_isInitialized()) { this._makeEnabled(this._enabled); } this.raisePropertyChanged("enabled"); } }, get_owner: function () { return this._owner; }, set_owner: function (value) { if (value instanceof Sys.ComponentSet) value = value.get(0); if (this._owner != value) { if (this.get_isInitialized()) { throw Error.invalidOperation(String.format(Sys.Extended.UI.Resources.Tabs_PropertySetAfterInitialization, 'owner')); } this._owner = value; this.raisePropertyChanged("owner"); } }, get_ownerID: function () { return this._ownerID; }, set_ownerID: function (value) { this._ownerID = value; }, get_scrollBars: function () { return this._scrollBars; }, set_scrollBars: function (value) { if (this._scrollBars != value) { this._scrollBars = value; this.raisePropertyChanged("scrollBars"); } }, get_onDemandMode: function () { return this._onDemandMode; }, set_onDemandMode: function (value) { if (this._onDemandMode != value) { this._onDemandMode = value; this.raisePropertyChanged("onDemandMode"); } }, get_tabIndex: function () { return this._tabIndex; }, get_dynamicContextKey: function () { return this._dynamicContextKey; }, set_dynamicContextKey: function (value) { if (this._dynamicContextKey != value) { this._dynamicContextKey = value; this.raisePropertyChanged('dynamicContextKey'); } }, get_dynamicServicePath: function () { return this._dynamicServicePath; }, set_dynamicServicePath: function (value) { if (this._dynamicServicePath != value) { this._dynamicServicePath = value; this.raisePropertyChanged('dynamicServicePath'); } }, get_dynamicServiceMethod: function () { return this._dynamicServiceMethod; }, set_dynamicServiceMethod: function (value) { if (this._dynamicServiceMethod != value) { this._dynamicServiceMethod = value; this.raisePropertyChanged('dynamicServiceMethod'); } }, _get_active: function () { return this._active; }, _set_active: function (value) { this._active = value; if (value) this._activate(); else this._deactivate(); }, get_updatePanelID: function () { return this._updatePanelID; }, set_updatePanelID: function (value) { if (this._updatePanelID != value) { this._updatePanelID = value; this.raisePropertyChanged("updatePanelID"); } }, get_wasLoadedOnce: function() { return this._wasLoadedOnce; }, set_wasLoadedOnce: function(value) { if (value != this._wasLoadedOnce) { this._wasLoadedOnce = value; this.raisePropertyChanged("wasLoadedOnce"); } }, initialize: function () { var owner = this.get_owner(); if (!owner) { owner = $find(this.get_ownerID()); if (owner) { owner.initialize(); this.set_owner(owner); } } Sys.Extended.UI.TabPanel.callBaseMethod(this, "initialize"); if (!owner) { throw Error.invalidOperation(Sys.Extended.UI.Resources.Tabs_OwnerExpected); } this._tabIndex = owner.get_tabs().length; Array.add(owner.get_tabs(), this); var tabId = this.get_id() + "_tab"; this._tab = document.getElementById(tabId); var serverRendered = (this._tab != null); if (!serverRendered) { this._headerOuterWrapper = document.createElement('span'); this._headerInnerWrapper = document.createElement('span'); this._tab = document.createElement('span'); this._tab.id = tabId; this._header.parentNode.replaceChild(this._tab, this._header); this._tab.appendChild(this._headerOuterWrapper); this._headerOuterWrapper.appendChild(this._headerInnerWrapper); this._headerInnerWrapper.appendChild(this._header); } $addHandlers(this._header, { mousedown: this._header_onmousedown$delegate, dragstart: this._oncancel$delegate, selectstart: this._oncancel$delegate, select: this._oncancel$delegate }); if (this._enabled) { this._addHandlersOnEnabled(); } else { Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_disabled"); } if (!serverRendered) { Sys.UI.DomElement.addCssClass(this._headerOuterWrapper, "ajax__tab_outer"); Sys.UI.DomElement.addCssClass(this._headerInnerWrapper, "ajax__tab_inner"); Sys.UI.DomElement.addCssClass(this._header, "ajax__tab_tab"); Sys.UI.DomElement.addCssClass(this.get_element(), "ajax__tab_panel"); } }, dispose: function () { if (this._dynamicPopulateBehavior) { this._dynamicPopulateBehavior.dispose(); this._dynamicPopulateBehavior = null; } $common.removeHandlers(this._header, { mousedown: this._header_onmousedown$delegate, dragstart: this._oncancel$delegate, selectstart: this._oncancel$delegate, select: this._oncancel$delegate }); if (this._enabled) { if (this._isAttachedEnabledEvents) { this._removeHandlersOnEnabled(); } } else { if (this._isAttachedDisabledEvents) { $common.removeHandlers(this._header, { click: this._disabled_onclick }); } } Sys.Extended.UI.TabPanel.callBaseMethod(this, "dispose"); }, _addHandlersOnEnabled: function () { $addHandlers(this._header, { click: this._header_onclick$delegate, mouseover: this._header_onmouseover$delegate, mouseout: this._header_onmouseout$delegate, keydown: this._onkeydown$delegate }); }, _removeHandlersOnEnabled: function () { $common.removeHandlers(this._header, { click: this._header_onclick$delegate, mouseover: this._header_onmouseover$delegate, mouseout: this._header_onmouseout$delegate, keydown: this._onkeydown$delegate }); }, populate: function (contextKeyOverride) { if (this._dynamicPopulateBehavior && (this._dynamicPopulateBehavior.get_element() != this.get_element())) { this._dynamicPopulateBehavior.dispose(); this._dynamicPopulateBehavior = null; } if (!this._dynamicPopulateBehavior && this._dynamicServiceMethod) { this._dynamicPopulateBehavior = $create(Sys.Extended.UI.DynamicPopulateBehavior, { "ContextKey": this._dynamicContextKey, "ServicePath": this._dynamicServicePath, "ServiceMethod": this._dynamicServiceMethod }, { "populated": this._dynamicPopulate_onpopulated$delegate }, null, this.get_element()); } if (this._dynamicPopulateBehavior) { this.raisePopulating(); this._dynamicPopulateBehavior.populate(contextKeyOverride ? contextKeyOverride : this._dynamicContextKey); } }, _activate: function () { if (this._enabled) { var elt = this.get_element(); $common.setVisible(elt, true); Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_active"); this.populate(); } else if (this._get_active()) { var next = this._owner.getNearestTab(false); if (!!next) { this._owner.set_activeTab(next); } } this._owner.get_element().style.visibility = 'visible'; }, _deactivate: function () { var elt = this.get_element(); $common.setVisible(elt, false); Sys.UI.DomElement.removeCssClass(this._tab, "ajax__tab_active"); }, _show: function () { this._tab.style.display = ''; }, _hide: function () { this._tab.style.display = 'none'; if (this._get_active()) { var next = this._owner.getNearestTab(false); if (!!next) { this._owner.set_activeTab(next); } } this._deactivate(); }, _makeEnabled: function (enable) { var hyperlinkId = "__tab_" + this.get_element().id; if (enable) { if (this.isAttachedDisabledEvents) { $common.removeHandlers(this._header, { click: this._disabled_onclick }); this._isAttachedDisabledEvents = false; } this._addHandlersOnEnabled(); this._isAttachedEnabledEvents = true; Sys.UI.DomElement.removeCssClass($get(hyperlinkId), "ajax__tab_disabled"); } else { if (this._isAttachedEnabledEvents) { this._removeHandlersOnEnabled(); this._isAttachedEnabledEvents = false; } $addHandlers(this._header, { click: this._disabled_onclick }); this.isAttachedDisabledEvents = true; if (this._get_active()) { var next = this._owner.getNearestTab(false); if (!!next) { this._owner.set_activeTab(next); } } this._deactivate(); Sys.UI.DomElement.addCssClass($get(hyperlinkId), "ajax__tab_disabled"); } }, _setFocus: function (obj) { $get("__tab_" + obj.get_element().id).focus(); }, _header_onclick: function (e) { e.preventDefault(); this.raiseClick(); this.get_owner().set_activeTab(this); this._setFocus(this); }, _header_onmouseover: function (e) { Sys.UI.DomElement.addCssClass(this._tab, "ajax__tab_hover"); }, _header_onmouseout: function (e) { Sys.UI.DomElement.removeCssClass(this._tab, "ajax__tab_hover"); }, _header_onmousedown: function (e) { e.preventDefault(); }, _oncancel: function (e) { e.stopPropagation(); e.preventDefault(); }, _onkeydown: function (e) { var keyCode = ('which' in e) ? e.which : e.keyCode; if ((keyCode == "39" && !this._owner._useVerticalStripPlacement) || (keyCode == "40" && this._owner._useVerticalStripPlacement))//right or down { e.preventDefault(); var next = this._owner.getNextTab(false); if (next) { this._owner.set_activeTab(next); this._setFocus(next); } } else if ((keyCode == "37" && !this._owner._useVerticalStripPlacement) || (keyCode == "38" && this._owner._useVerticalStripPlacement))//left or up { e.preventDefault(); var next = this._owner.getPreviousTab(false); if (next) { this._owner.set_activeTab(next); this._setFocus(next); } } else if (keyCode == "35")//end { e.preventDefault(); var next = this._owner.getLastTab(false); if (next) { this._owner.set_activeTab(next); this._setFocus(next); } } else if (keyCode == "36")//home { e.preventDefault(); var next = this._owner.getFirstTab(false); if (next) { this._owner.set_activeTab(next); this._setFocus(next); } } }, _dynamicPopulate_onpopulated: function (sender, e) { this.raisePopulated(); }, _disabled_onclick: function (e) { e.preventDefault(); } } Sys.Extended.UI.TabPanel.registerClass("Sys.Extended.UI.TabPanel", Sys.UI.Control); Sys.registerComponent(Sys.Extended.UI.TabPanel, { name: "tabPanel", parameters: [{ name: "owner", type: "Sys.Extended.UI.TabContainer" }, { name: "headerTab", type: "String"}] }); } // execute if (window.Sys && Sys.loader) { Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate"], execute); } else { execute(); } })(); if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();