Type.registerNamespace('AjaxControlToolkit');AjaxControlToolkit.AutoSize = function() { throw Error.invalidOperation();} AjaxControlToolkit.AutoSize.prototype = { None : 0, Fill : 1, Limit : 2 } AjaxControlToolkit.AutoSize.registerEnum("AjaxControlToolkit.AutoSize", false);AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs = function(oldIndex, selectedIndex) { AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs.initializeBase(this);this._oldIndex = oldIndex;this._selectedIndex = selectedIndex;} AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs.prototype = { get_oldIndex : function() { return this._oldIndex;}, set_oldIndex : function(value) { this._oldIndex = value;}, get_selectedIndex : function() { return this._selectedIndex;}, set_selectedIndex : function(value) { this._selectedIndex = value;} } AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs.registerClass('AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs', Sys.CancelEventArgs);AjaxControlToolkit.AccordionBehavior = function(element) { AjaxControlToolkit.AccordionBehavior.initializeBase(this, [element]);this._selectedIndex = 0;this._panes = [];this._fadeTransitions = false;this._duration = 0.25;this._framesPerSecond = 30;this._autoSize = AjaxControlToolkit.AutoSize.None;this._requireOpenedPane = true;this._suppressHeaderPostbacks = false;this._headersSize = 0;this._headerClickHandler = null;this._headerCssClass = '';this._headerSelectedCssClass = '';this._contentCssClass = '';this._resizeHandler = null;} AjaxControlToolkit.AccordionBehavior.prototype = { initialize : function() { AjaxControlToolkit.AccordionBehavior.callBaseMethod(this, 'initialize');this._headerClickHandler = Function.createDelegate(this, this._onHeaderClick);var state = this.get_ClientState();if (state !== null && state !== '') { this._changeSelectedIndex(parseInt(state), false, true);} var nodes = this.get_element().childNodes;var index = { };for (index.value = 0;index.value < nodes.length;index.value++) { var header = this._getNextDiv(nodes, index);if (!header) { break;} var content = this._getNextDiv(nodes, index);if (content) { this.addPane(header, content);index.value--;} } if (this._requireOpenedPane && !this.get_Pane() && this._panes.length > 0) { this._changeSelectedIndex(0, false, true);} this._initializeLayout();}, _getNextDiv : function(nodes, index) { var div = null;while (index.value < nodes.length && (div = nodes[index.value++])) { if (div.tagName && (div.tagName.toLowerCase() === 'div')) { break;} } return div;}, addPane : function(header, content) { var pane = { };pane.animation = null;pane.header = header;header._index = this._panes.length;$addHandler(header, "click", this._headerClickHandler);var accordion = this.get_element();var wrapper = document.createElement('div');accordion.insertBefore(wrapper, content);wrapper.appendChild(content);wrapper._original = content;pane.content = wrapper;wrapper.style.border = '';wrapper.style.margin = '';wrapper.style.padding = '';Array.add(this._panes, pane);this._initializePane(header._index);content.style.display = 'block';return pane;}, _getAnimation : function(pane) { var animation = pane.animation;if (!animation) { var length = null;var fade = null;if (!this._fadeTransitions) { animation = length = new AjaxControlToolkit.Animation.LengthAnimation(pane.content, this._duration, this._framesPerSecond, "style", "height", 0, 0, "px");} else { length = new AjaxControlToolkit.Animation.LengthAnimation(null, null, null, "style", "height", 0, 0, "px");fade = new AjaxControlToolkit.Animation.FadeAnimation(null, null, null, AjaxControlToolkit.Animation.FadeEffect.FadeOut, 0, 1, false);animation = new AjaxControlToolkit.Animation.ParallelAnimation(pane.content, this._duration, this._framesPerSecond, [fade, length]);} pane.animation = animation;animation._length = length;animation._fade = fade;animation._pane = pane;animation._opening = true;animation._behavior = this;animation._ended = Function.createDelegate(pane.animation, this._onAnimationFinished);animation.add_ended(pane.animation._ended);animation.initialize();} return animation;}, _onAnimationFinished : function() { this._behavior._endPaneChange(this._pane, this._opening);}, _initializeLayout : function() { for (var i = 0;i < this._panes.length;i++) { var animation = this._panes[i].animation;if (animation && animation.get_isPlaying()) { animation.stop();} } var accordion = this.get_element();this._initialHeight = accordion.offsetHeight;var style = accordion.style;if (this._autoSize === AjaxControlToolkit.AutoSize.None) { this._disposeResizeHandler();var isIE7 = (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version >= 7) if (!isIE7 || (isIE7 && style.height && style.height.length > 0)) { style.height = 'auto';} if (!isIE7 || (isIE7 && style.overflow && style.overflow.length > 0)) { style.overflow = 'auto';} } else { this._addResizeHandler();style.height = accordion.offsetHeight + 'px';style.overflow = 'hidden';} for (var i = 0;i < this._panes.length;i++) { this._initializePane(i);} this._resizeSelectedPane();}, _initializePane : function(index) { var pane = this.get_Pane(index);if (!pane) { return;} var wrapper = pane.content;var original = wrapper._original;var opened = (index === this._selectedIndex);wrapper.style.height = (opened || (this._autoSize === AjaxControlToolkit.AutoSize.Fill)) ? 'auto' : '0px';wrapper.style.overflow = opened ? 'auto' : 'hidden';wrapper.style.display = opened ? 'block' : 'none';original.style.height = 'auto';original.style.maxHeight = '';original.style.overflow = opened ? 'auto' : 'hidden';var opacity = (opened || !this._fadeTransitions) ? 1 : 0;if (this._autoSize === AjaxControlToolkit.AutoSize.Fill) { if ($common.getElementOpacity(original) != opacity) { $common.setElementOpacity(original, opacity);} if ($common.getElementOpacity(wrapper) != 1) { $common.setElementOpacity(wrapper, 1);} } else { if ($common.getElementOpacity(wrapper) != opacity) { $common.setElementOpacity(wrapper, opacity);} if ($common.getElementOpacity(original) != 1) { $common.setElementOpacity(original, 1);} } }, _addResizeHandler : function() { if (!this._resizeHandler) { this._resizeHandler = Function.createDelegate(this, this._resizeSelectedPane);$addHandler(window, "resize", this._resizeHandler);} }, dispose : function() { this._disposeResizeHandler();this._disposeAnimations();for (var i = this._panes.length - 1;i >= 0;i--) { var pane = this._panes[i];if (pane) { if (pane.header) { pane.header._index = null;$removeHandler(pane.header, "click", this._headerClickHandler);pane.header = null;} if (pane.content) { pane.content._original = null;pane.content = null;} this._panes[i] = null;delete this._panes[i];} } this._panes = null;this._headerClickHandler = null;AjaxControlToolkit.AccordionBehavior.callBaseMethod(this, 'dispose');}, _disposeResizeHandler : function() { if (this._resizeHandler) { $removeHandler(window, "resize", this._resizeHandler);this._resizeHandler = null;} }, _disposeAnimations : function() { for (var i = 0;i < this._panes.length;i++) { var animation = this._panes[i].animation;if (animation) { if (animation.get_isPlaying()) { animation.stop();} if (animation._ended) { animation.remove_ended(animation._ended);animation._ended = null;} animation.dispose();animation._length = null;animation._fade = null;animation._pane = null;animation._opening = null;animation._behavior = null;this._panes[i].animation = null;} } }, _resizeSelectedPane : function() { var pane = this.get_Pane();if (!pane) { return;} this._headersSize = this._getHeadersSize().height;var original = pane.content._original;switch (this._autoSize) { case AjaxControlToolkit.AutoSize.None : original.style.height = 'auto';original.style.maxHeight = '';break;case AjaxControlToolkit.AutoSize.Limit : var remaining = this._getRemainingHeight(false);original.style.height = 'auto';original.style.maxHeight = remaining + 'px';break;case AjaxControlToolkit.AutoSize.Fill : var remaining = this._getRemainingHeight(true);original.style.height = remaining + 'px';original.style.maxHeight = '';break;} }, _onHeaderClick : function(evt) { var header = evt.target;var accordion = this.get_element();while (header && (header.parentNode !== accordion)) { header = header.parentNode;} evt.stopPropagation();if (this._suppressHeaderPostbacks) { evt.preventDefault();} var index = header._index;if ((index === this._selectedIndex) && !this._requireOpenedPane) { index = -1;} this._changeSelectedIndex(index, true);}, _changeSelectedIndex : function(index, animate, force) { var lastIndex = this._selectedIndex;var currentPane=this.get_Pane(index);var lastPane=this.get_Pane(lastIndex);if (!force && (currentPane == lastPane)) { return;} var eventArgs = new AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs(lastIndex, index);this.raiseSelectedIndexChanging(eventArgs);if (eventArgs.get_cancel()) { return;} if(lastPane) { lastPane.header.className = this._headerCssClass;} if(currentPane) { currentPane.header.className = (this._headerSelectedCssClass == '') ? this._headerCssClass : this._headerSelectedCssClass;} this._selectedIndex = index;this.set_ClientState(this._selectedIndex);if (animate) { this._changePanes(lastIndex);} this.raiseSelectedIndexChanged(new AjaxControlToolkit.AccordionSelectedIndexChangeEventArgs(lastIndex, index));this.raisePropertyChanged('SelectedIndex');}, _changePanes : function(lastIndex) { if (!this.get_isInitialized()) { return;} var open = null;var close = null;for (var i = 0;i < this._panes.length;i++) { var pane = this._panes[i];var animation = this._getAnimation(pane);if (animation.get_isPlaying()) { animation.stop();} if (i == this._selectedIndex) { animation._opening = true;open = animation;} else if (i == lastIndex) { animation._opening = false;close = animation;} else { continue;} this._startPaneChange(pane, animation._opening);if (this._fadeTransitions) { animation._fade.set_effect(animation._opening ? AjaxControlToolkit.Animation.FadeEffect.FadeIn : AjaxControlToolkit.Animation.FadeEffect.FadeOut );} if (this._autoSize === AjaxControlToolkit.AutoSize.Fill) { animation.set_target(pane.content._original);animation._length.set_startValue($common.getContentSize(pane.content._original).height);animation._length.set_endValue(animation._opening ? this._getRemainingHeight(true) : 0);} else { animation.set_target(pane.content);animation._length.set_startValue(pane.content.offsetHeight);animation._length.set_endValue(animation._opening ? this._getRemainingHeight(false) : 0);} } if (close) { close.play();} if (open) { open.play();} }, _startPaneChange : function(pane, opening) { var wrapper = pane.content;var original = wrapper._original;if (opening) { wrapper.style.display = 'block';} else { wrapper.style.overflow = 'hidden';original.style.overflow = 'hidden';if (this._autoSize === AjaxControlToolkit.AutoSize.Limit) { wrapper.style.height = this._getTotalSize(original).height + 'px';original.style.maxHeight = '';} } }, _endPaneChange : function(pane, opening) { var wrapper = pane.content;var original = wrapper._original;if (opening) { if (this._autoSize === AjaxControlToolkit.AutoSize.Limit) { var remaining = this._getRemainingHeight(true);original.style.maxHeight = remaining + 'px';} original.style.overflow = 'auto';wrapper.style.height = 'auto';wrapper.style.overflow = 'auto';} else { wrapper.style.display = 'none';} }, _getHeadersSize : function() { var total = { width: 0, height: 0 };for (var i = 0;i < this._panes.length;i++) { var size = this._getTotalSize(this._panes[i].header);total.width = Math.max(total.width, size.width);total.height += size.height;} return total;}, _getRemainingHeight : function(includeGutter) { var height = 0;var pane = this.get_Pane();if (this._autoSize === AjaxControlToolkit.AutoSize.None) { if (pane) { height = this._getTotalSize(pane.content._original).height;} } else { height = this._headersSize;if (includeGutter && pane) { height += this._getGutterSize(pane.content._original).height;} var accordion = this.get_element();height = Math.max(accordion.offsetHeight - height, 0);if (pane && (this._autoSize === AjaxControlToolkit.AutoSize.Limit)) { var required = this._getTotalSize(pane.content._original).height;if (required > 0) { height = Math.min(height, required);} } } return height;}, _getTotalSize : function(element) { var size = $common.getSize(element);var box = $common.getMarginBox(element);size.width += box.horizontal;size.height += box.vertical;return size;}, _getGutterSize : function(element) { var gutter = { width: 0, height: 0 };try { var box = $common.getPaddingBox(element);gutter.width += box.horizontal;gutter.height += box.vertical;} catch(ex) { } try { var box = $common.getBorderBox(element);gutter.width += box.horizontal;gutter.height += box.vertical;} catch(ex) { } var box = $common.getMarginBox(element);gutter.width += box.horizontal;gutter.height += box.vertical;return gutter;}, add_selectedIndexChanging : function(handler) { this.get_events().addHandler('selectedIndexChanging', handler);}, remove_selectedIndexChanging : function(handler) { this.get_events().removeHandler('selectedIndexChanging', handler);}, raiseSelectedIndexChanging : function(eventArgs) { var handler = this.get_events().getHandler('selectedIndexChanging');if (handler) { handler(this, eventArgs);} }, add_selectedIndexChanged : function(handler) { this.get_events().addHandler('selectedIndexChanged', handler);}, remove_selectedIndexChanged : function(handler) { this.get_events().removeHandler('selectedIndexChanged', handler);}, raiseSelectedIndexChanged : function(eventArgs) { var handler = this.get_events().getHandler('selectedIndexChanged');if (handler) { handler(this, eventArgs);} }, get_Pane : function(index) { if (index === undefined || index === null) { index = this._selectedIndex;} return (this._panes && index >= 0 && index < this._panes.length) ? this._panes[index] : null;}, get_Count : function() { return this._panes ? this._panes.length : 0;}, get_TransitionDuration : function() { return this._duration * 1000;}, set_TransitionDuration : function(value) { if (this._duration != (value / 1000)) { this._duration = value / 1000;for (var i = 0;i < this._panes.length;i++) { var animation = this._panes[i].animation;if (animation) { animation.set_duration(this._duration);} } this.raisePropertyChanged('TransitionDuration');} }, get_FramesPerSecond : function() { return this._framesPerSecond;}, set_FramesPerSecond : function(value) { if (this._framesPerSecond != value) { this._framesPerSecond = value;for (var i = 0;i < this._panes.length;i++) { var animation = this._panes[i].animation;if (animation) { animation.set_fps(this._framesPerSecond);} } this.raisePropertyChanged('FramesPerSecond');} }, get_FadeTransitions : function() { return this._fadeTransitions;}, set_FadeTransitions : function(value) { if (this._fadeTransitions != value) { this._fadeTransitions = value;this._disposeAnimations();if (!this._fadeTransitions) { for (var i = 0;i < this._panes.length;i++) { if ($common.getElementOpacity(this._panes[i].content) != 1) { $common.setElementOpacity(this._panes[i].content, 1);} if ($common.getElementOpacity(this._panes[i].content._original) != 1) { $common.setElementOpacity(this._panes[i].content._original, 1);} } } this.raisePropertyChanged('FadeTransitions');} }, get_HeaderCssClass: function() { return this._headerCssClass;}, set_HeaderCssClass: function(value) { this._headerCssClass = value;this.raisePropertyChanged('HeaderCssClass');}, get_HeaderSelectedCssClass: function() { return this._headerSelectedCssClass;}, set_HeaderSelectedCssClass: function(value) { this._headerSelectedCssClass = value;this.raisePropertyChanged('HeaderSelectedCssClass');}, get_ContentCssClass: function() { return this._contentCssClass;}, set_ContentCssClass: function(value) { this._contentCssClass = value;this.raisePropertyChanged('ContentCssClass');}, get_AutoSize : function() { return this._autoSize;}, set_AutoSize : function(value) { if (Sys.Browser.agent === Sys.Browser.InternetExplorer && value === AjaxControlToolkit.AutoSize.Limit) { value = AjaxControlToolkit.AutoSize.Fill;} if (this._autoSize != value) { this._autoSize = value;this._initializeLayout();this.raisePropertyChanged('AutoSize');} }, get_SelectedIndex : function() { return this._selectedIndex;}, set_SelectedIndex : function(value) { this._changeSelectedIndex(value, true);}, get_requireOpenedPane : function() { return this._requireOpenedPane;}, set_requireOpenedPane : function(value) { if (this._requireOpenedPane != value) { this._requireOpenedPane = value;this.raisePropertyChanged('requireOpenedPane');} }, get_suppressHeaderPostbacks : function() { return this._suppressHeaderPostbacks;}, set_suppressHeaderPostbacks : function(value) { if (this._suppressHeaderPostbacks != value) { this._suppressHeaderPostbacks = value;this.raisePropertyChanged('suppressHeaderPostbacks');} } } AjaxControlToolkit.AccordionBehavior.registerClass('AjaxControlToolkit.AccordionBehavior', AjaxControlToolkit.BehaviorBase); if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();