Sys.Timer = function() { Sys.Timer.initializeBase(this); this._interval = 1000; this._enabled = false; this._timer = null; }; Sys.Timer.prototype = { get_interval: function() { return this._interval; }, set_interval: function(value) { if (this._interval !== value) { this._interval = value; this.raisePropertyChanged("interval"); if (!this.get_isUpdating() && (this._timer !== null)) { this._stopTimer(); this._startTimer(); } } }, get_enabled: function() { return this._enabled; }, set_enabled: function(value) { if (value !== this.get_enabled()) { this._enabled = value; this.raisePropertyChanged("enabled"); if (!this.get_isUpdating()) { if (value) { this._startTimer(); } else { this._stopTimer(); } } } }, add_tick: function(handler) { this.get_events().addHandler("tick", handler); }, remove_tick: function(handler) { this.get_events().removeHandler("tick", handler); }, dispose: function() { this.set_enabled(false); this._stopTimer(); Sys.Timer.callBaseMethod(this, "dispose"); }, updated: function() { Sys.Timer.callBaseMethod(this, "updated"); if (this._enabled) { this._stopTimer(); this._startTimer(); } }, _timerCallback: function() { var handler = this.get_events().getHandler("tick"); if (handler) { handler(this, Sys.EventArgs.Empty); } }, _startTimer: function() { this._timer = window.setInterval(Function.createDelegate(this, this._timerCallback), this._interval); }, _stopTimer: function() { window.clearInterval(this._timer); this._timer = null; } }; Sys.Timer.descriptor = { properties: [{ name: "interval", type: Number }, { name: "enabled", type: Boolean}], events: [{ name: "tick"}] }; Sys.Timer.registerClass("Sys.Timer", Sys.Component); Type.registerNamespace("AjaxControlToolkit"); AjaxControlToolkit.BoxSide = function() { }; AjaxControlToolkit.BoxSide.prototype = { Top: 0, Right: 1, Bottom: 2, Left: 3 }; AjaxControlToolkit.BoxSide.registerEnum("AjaxControlToolkit.BoxSide", false); AjaxControlToolkit._CommonToolkitScripts = function() { }; AjaxControlToolkit._CommonToolkitScripts.prototype = { _borderStyleNames: ["borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle"], _borderWidthNames: ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"], _paddingWidthNames: ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"], _marginWidthNames: ["marginTop", "marginRight", "marginBottom", "marginLeft"], getCurrentStyle: function(element, attribute, defaultValue) { var currentValue = null; if (element) { if (element.currentStyle) { currentValue = element.currentStyle[attribute]; } else { if (document.defaultView && document.defaultView.getComputedStyle) { var style = document.defaultView.getComputedStyle(element, null); if (style) { currentValue = style[attribute]; } } } if (!currentValue && element.style.getPropertyValue) { currentValue = element.style.getPropertyValue(attribute); } else { if (!currentValue && element.style.getAttribute) { currentValue = element.style.getAttribute(attribute); } } } if ((!currentValue || currentValue == "" || typeof (currentValue) === "undefined")) { if (typeof (defaultValue) != "undefined") { currentValue = defaultValue; } else { currentValue = null; } } return currentValue; }, getInheritedBackgroundColor: function(element) { if (!element) { return "#FFFFFF"; } var background = this.getCurrentStyle(element, "backgroundColor"); try { while (!background || background == "" || background == "transparent" || background == "rgba(0, 0, 0, 0)") { element = element.parentNode; if (!element) { background = "#FFFFFF"; } else { background = this.getCurrentStyle(element, "backgroundColor"); } } } catch (ex) { background = "#FFFFFF"; } return background; }, getLocation: function(element) { if (element === document.documentElement) { return new Sys.UI.Point(0, 0); } if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7) { if (element.window === element || element.nodeType === 9 || !element.getClientRects || !element.getBoundingClientRect) { return new Sys.UI.Point(0, 0); } var screenRects = element.getClientRects(); if (!screenRects || !screenRects.length) { return new Sys.UI.Point(0, 0); } var first = screenRects[0]; var dLeft = 0; var dTop = 0; var inFrame = false; try { inFrame = element.ownerDocument.parentWindow.frameElement; } catch (ex) { inFrame = true; } if (inFrame) { var clientRect = element.getBoundingClientRect(); if (!clientRect) { return new Sys.UI.Point(0, 0); } var minLeft = first.left; var minTop = first.top; for (var i = 1; i < screenRects.length; i++) { var r = screenRects[i]; if (r.left < minLeft) { minLeft = r.left; } if (r.top < minTop) { minTop = r.top; } } dLeft = minLeft - clientRect.left; dTop = minTop - clientRect.top; } var ownerDocument = element.document.documentElement; return new Sys.UI.Point(first.left - 2 - dLeft + ownerDocument.scrollLeft, first.top - 2 - dTop + ownerDocument.scrollTop); } return Sys.UI.DomElement.getLocation(element); }, setLocation: function(element, point) { Sys.UI.DomElement.setLocation(element, point.x, point.y); }, getContentSize: function(element) { if (!element) { throw Error.argumentNull("element"); } var size = this.getSize(element); var borderBox = this.getBorderBox(element); var paddingBox = this.getPaddingBox(element); return { width: size.width - borderBox.horizontal - paddingBox.horizontal, height: size.height - borderBox.vertical - paddingBox.vertical }; }, getSize: function(element) { if (!element) { throw Error.argumentNull("element"); } return { width: element.offsetWidth, height: element.offsetHeight }; }, setContentSize: function(element, size) { if (!element) { throw Error.argumentNull("element"); } if (!size) { throw Error.argumentNull("size"); } if (this.getCurrentStyle(element, "MozBoxSizing") == "border-box" || this.getCurrentStyle(element, "BoxSizing") == "border-box") { var borderBox = this.getBorderBox(element); var paddingBox = this.getPaddingBox(element); size = { width: size.width + borderBox.horizontal + paddingBox.horizontal, height: size.height + borderBox.vertical + paddingBox.vertical }; } element.style.width = size.width.toString() + "px"; element.style.height = size.height.toString() + "px"; }, setSize: function(element, size) { if (!element) { throw Error.argumentNull("element"); } if (!size) { throw Error.argumentNull("size"); } var borderBox = this.getBorderBox(element); var paddingBox = this.getPaddingBox(element); var contentSize = { width: size.width - borderBox.horizontal - paddingBox.horizontal, height: size.height - borderBox.vertical - paddingBox.vertical }; this.setContentSize(element, contentSize); }, getBounds: function(element) { var offset = $common.getLocation(element); return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0); }, setBounds: function(element, bounds) { if (!element) { throw Error.argumentNull("element"); } if (!bounds) { throw Error.argumentNull("bounds"); } this.setSize(element, bounds); $common.setLocation(element, bounds); }, getClientBounds: function() { var clientWidth; var clientHeight; switch (Sys.Browser.agent) { case Sys.Browser.InternetExplorer: clientWidth = document.documentElement.clientWidth; clientHeight = document.documentElement.clientHeight; break; case Sys.Browser.Safari: clientWidth = window.innerWidth; clientHeight = window.innerHeight; break; case Sys.Browser.Opera: clientWidth = Math.min(window.innerWidth, document.body.clientWidth); clientHeight = Math.min(window.innerHeight, document.body.clientHeight); break; default: clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth); clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight); break; } return new Sys.UI.Bounds(0, 0, clientWidth, clientHeight); }, getMarginBox: function(element) { if (!element) { throw Error.argumentNull("element"); } var box = { top: this.getMargin(element, AjaxControlToolkit.BoxSide.Top), right: this.getMargin(element, AjaxControlToolkit.BoxSide.Right), bottom: this.getMargin(element, AjaxControlToolkit.BoxSide.Bottom), left: this.getMargin(element, AjaxControlToolkit.BoxSide.Left) }; box.horizontal = box.left + box.right; box.vertical = box.top + box.bottom; return box; }, getBorderBox: function(element) { if (!element) { throw Error.argumentNull("element"); } var box = { top: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Top), right: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Right), bottom: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Bottom), left: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Left) }; box.horizontal = box.left + box.right; box.vertical = box.top + box.bottom; return box; }, getPaddingBox: function(element) { if (!element) { throw Error.argumentNull("element"); } var box = { top: this.getPadding(element, AjaxControlToolkit.BoxSide.Top), right: this.getPadding(element, AjaxControlToolkit.BoxSide.Right), bottom: this.getPadding(element, AjaxControlToolkit.BoxSide.Bottom), left: this.getPadding(element, AjaxControlToolkit.BoxSide.Left) }; box.horizontal = box.left + box.right; box.vertical = box.top + box.bottom; return box; }, isBorderVisible: function(element, boxSide) { if (!element) { throw Error.argumentNull("element"); } if (boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) { throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, "AjaxControlToolkit.BoxSide")); } var styleName = this._borderStyleNames[boxSide]; var styleValue = this.getCurrentStyle(element, styleName); return styleValue != "none"; }, getMargin: function(element, boxSide) { if (!element) { throw Error.argumentNull("element"); } if (boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) { throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, "AjaxControlToolkit.BoxSide")); } var styleName = this._marginWidthNames[boxSide]; var styleValue = this.getCurrentStyle(element, styleName); try { return this.parsePadding(styleValue); } catch (ex) { return 0; } }, getBorderWidth: function(element, boxSide) { if (!element) { throw Error.argumentNull("element"); } if (boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) { throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, "AjaxControlToolkit.BoxSide")); } if (!this.isBorderVisible(element, boxSide)) { return 0; } var styleName = this._borderWidthNames[boxSide]; var styleValue = this.getCurrentStyle(element, styleName); return this.parseBorderWidth(styleValue); }, getPadding: function(element, boxSide) { if (!element) { throw Error.argumentNull("element"); } if (boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) { throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, "AjaxControlToolkit.BoxSide")); } var styleName = this._paddingWidthNames[boxSide]; var styleValue = this.getCurrentStyle(element, styleName); return this.parsePadding(styleValue); }, parseBorderWidth: function(borderWidth) { if (!this._borderThicknesses) { var borderThicknesses = {}; var div0 = document.createElement("div"); div0.style.visibility = "hidden"; div0.style.position = "absolute"; div0.style.fontSize = "1px"; document.body.appendChild(div0); var div1 = document.createElement("div"); div1.style.height = "0px"; div1.style.overflow = "hidden"; div0.appendChild(div1); var base = div0.offsetHeight; div1.style.borderTop = "solid black"; div1.style.borderTopWidth = "thin"; borderThicknesses["thin"] = div0.offsetHeight - base; div1.style.borderTopWidth = "medium"; borderThicknesses["medium"] = div0.offsetHeight - base; div1.style.borderTopWidth = "thick"; borderThicknesses["thick"] = div0.offsetHeight - base; div0.removeChild(div1); document.body.removeChild(div0); this._borderThicknesses = borderThicknesses; } if (borderWidth) { switch (borderWidth) { case "thin": case "medium": case "thick": return this._borderThicknesses[borderWidth]; case "inherit": return 0; } var unit = this.parseUnit(borderWidth); Sys.Debug.assert(unit.type == "px", String.format(AjaxControlToolkit.Resources.Common_InvalidBorderWidthUnit, unit.type)); return unit.size; } return 0; }, parsePadding: function(padding) { if (padding) { if (padding == "inherit") { return 0; } var unit = this.parseUnit(padding); Sys.Debug.assert(unit.type == "px", String.format(AjaxControlToolkit.Resources.Common_InvalidPaddingUnit, unit.type)); return unit.size; } return 0; }, parseUnit: function(value) { if (!value) { throw Error.argumentNull("value"); } value = value.trim().toLowerCase(); var l = value.length; var s = -1; for (var i = 0; i < l; i++) { var ch = value.substr(i, 1); if ((ch < "0" || ch > "9") && ch != "-" && ch != "." && ch != ",") { break; } s = i; } if (s == -1) { throw Error.create(AjaxControlToolkit.Resources.Common_UnitHasNoDigits); } var type; var size; if (s < (l - 1)) { type = value.substring(s + 1).trim(); } else { type = "px"; } size = parseFloat(value.substr(0, s + 1)); if (type == "px") { size = Math.floor(size); } return { size: size, type: type }; }, getElementOpacity: function(element) { if (!element) { throw Error.argumentNull("element"); } var hasOpacity = false; var opacity; if (element.filters) { var filters = element.filters; if (filters.length !== 0) { var alphaFilter = filters["DXImageTransform.Microsoft.Alpha"]; if (alphaFilter) { opacity = alphaFilter.opacity / 100; hasOpacity = true; } } } else { opacity = this.getCurrentStyle(element, "opacity", 1); hasOpacity = true; } if (hasOpacity === false) { return 1; } return parseFloat(opacity); }, setElementOpacity: function(element, value) { if (!element) { throw Error.argumentNull("element"); } if (element.filters) { var filters = element.filters; var createFilter = true; if (filters.length !== 0) { var alphaFilter = filters["DXImageTransform.Microsoft.Alpha"]; if (alphaFilter) { createFilter = false; alphaFilter.opacity = value * 100; } } if (createFilter) { element.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + (value * 100) + ")"; } } else { element.style.opacity = value; } }, getVisible: function(element) { return (element && ("none" != $common.getCurrentStyle(element, "display")) && ("hidden" != $common.getCurrentStyle(element, "visibility"))); }, setVisible: function(element, value) { if (element && value != $common.getVisible(element)) { if (value) { if (element.style.removeAttribute) { element.style.removeAttribute("display"); } else { element.style.removeProperty("display"); } } else { element.style.display = "none"; } element.style.visibility = value ? "visible" : "hidden"; } }, resolveFunction: function(value) { if (value) { if (value instanceof Function) { return value; } else { if (String.isInstanceOfType(value) && value.length > 0) { var func; if ((func = window[value]) instanceof Function) { return func; } else { if ((func = eval(value)) instanceof Function) { return func; } } } } } return null; }, addCssClasses: function(element, classNames) { for (var i = 0; i < classNames.length; i++) { Sys.UI.DomElement.addCssClass(element, classNames[i]); } }, removeCssClasses: function(element, classNames) { for (var i = 0; i < classNames.length; i++) { Sys.UI.DomElement.removeCssClass(element, classNames[i]); } }, setStyle: function(element, style) { $common.applyProperties(element.style, style); }, removeHandlers: function(element, events) { for (var name in events) { $removeHandler(element, name, events[name]); } }, overlaps: function(r1, r2) { return r1.x < (r2.x + r2.width) && r2.x < (r1.x + r1.width) && r1.y < (r2.y + r2.height) && r2.y < (r1.y + r1.height); }, containsPoint: function(rect, x, y) { return x >= rect.x && x < (rect.x + rect.width) && y >= rect.y && y < (rect.y + rect.height); }, isKeyDigit: function(keyCode) { return (48 <= keyCode && keyCode <= 57); }, isKeyNavigation: function(keyCode) { return (Sys.UI.Key.left <= keyCode && keyCode <= Sys.UI.Key.down); }, padLeft: function(text, size, ch, truncate) { return $common._pad(text, size || 2, ch || " ", "l", truncate || false); }, padRight: function(text, size, ch, truncate) { return $common._pad(text, size || 2, ch || " ", "r", truncate || false); }, _pad: function(text, size, ch, side, truncate) { text = text.toString(); var length = text.length; var builder = new Sys.StringBuilder(); if (side == "r") { builder.append(text); } while (length < size) { builder.append(ch); length++; } if (side == "l") { builder.append(text); } var result = builder.toString(); if (truncate && result.length > size) { if (side == "l") { result = result.substr(result.length - size, size); } else { result = result.substr(0, size); } } return result; }, __DOMEvents: { focusin: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focusin", true, false, window, 1); } }, focusout: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focusout", true, false, window, 1); } }, activate: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("activate", true, true, window, 1); } }, focus: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("focus", false, false, window, 1); } }, blur: { eventGroup: "UIEvents", init: function(e, p) { e.initUIEvent("blur", false, false, window, 1); } }, click: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("click", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, dblclick: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("click", true, true, window, 2, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, mousedown: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousedown", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, mouseup: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mouseup", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, mouseover: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mouseover", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, mousemove: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, mouseout: { eventGroup: "MouseEvents", init: function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } }, load: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("load", false, false); } }, unload: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("unload", false, false); } }, select: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("select", true, false); } }, change: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("change", true, false); } }, submit: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("submit", true, true); } }, reset: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("reset", true, false); } }, resize: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("resize", true, false); } }, scroll: { eventGroup: "HTMLEvents", init: function(e, p) { e.initEvent("scroll", true, false); } } }, tryFireRawEvent: function(element, rawEvent) { try { if (element.fireEvent) { element.fireEvent("on" + rawEvent.type, rawEvent); return true; } else { if (element.dispatchEvent) { element.dispatchEvent(rawEvent); return true; } } } catch (e) { } return false; }, tryFireEvent: function(element, eventName, properties) { try { if (document.createEventObject) { var e = document.createEventObject(); $common.applyProperties(e, properties || {}); element.fireEvent("on" + eventName, e); return true; } else { if (document.createEvent) { var def = $common.__DOMEvents[eventName]; if (def) { var e = document.createEvent(def.eventGroup); def.init(e, properties || {}); element.dispatchEvent(e); return true; } } } } catch (e) { } return false; }, wrapElement: function(innerElement, newOuterElement, newInnerParentElement) { var parent = innerElement.parentNode; parent.replaceChild(newOuterElement, innerElement); (newInnerParentElement || newOuterElement).appendChild(innerElement); }, unwrapElement: function(innerElement, oldOuterElement) { var parent = oldOuterElement.parentNode; if (parent != null) { $common.removeElement(innerElement); parent.replaceChild(innerElement, oldOuterElement); } }, removeElement: function(element) { var parent = element.parentNode; if (parent != null) { parent.removeChild(element); } }, applyProperties: function(target, properties) { for (var p in properties) { var pv = properties[p]; if (pv != null && Object.getType(pv) === Object) { var tv = target[p]; $common.applyProperties(tv, pv); } else { target[p] = pv; } } }, createElementFromTemplate: function(template, appendToParent, nameTable) { if (typeof (template.nameTable) != "undefined") { var newNameTable = template.nameTable; if (String.isInstanceOfType(newNameTable)) { newNameTable = nameTable[newNameTable]; } if (newNameTable != null) { nameTable = newNameTable; } } var elementName = null; if (typeof (template.name) !== "undefined") { elementName = template.name; } var elt = document.createElement(template.nodeName); if (typeof (template.name) !== "undefined" && nameTable) { nameTable[template.name] = elt; } if (typeof (template.parent) !== "undefined" && appendToParent == null) { var newParent = template.parent; if (String.isInstanceOfType(newParent)) { newParent = nameTable[newParent]; } if (newParent != null) { appendToParent = newParent; } } if (typeof (template.properties) !== "undefined" && template.properties != null) { $common.applyProperties(elt, template.properties); } if (typeof (template.cssClasses) !== "undefined" && template.cssClasses != null) { $common.addCssClasses(elt, template.cssClasses); } if (typeof (template.events) !== "undefined" && template.events != null) { $addHandlers(elt, template.events); } if (typeof (template.visible) !== "undefined" && template.visible != null) { this.setVisible(elt, template.visible); } if (appendToParent) { appendToParent.appendChild(elt); } if (typeof (template.opacity) !== "undefined" && template.opacity != null) { $common.setElementOpacity(elt, template.opacity); } if (typeof (template.children) !== "undefined" && template.children != null) { for (var i = 0; i < template.children.length; i++) { var subtemplate = template.children[i]; $common.createElementFromTemplate(subtemplate, elt, nameTable); } } var contentPresenter = elt; if (typeof (template.contentPresenter) !== "undefined" && template.contentPresenter != null) { contentPresenter = nameTable[contentPresenter]; } if (typeof (template.content) !== "undefined" && template.content != null) { var content = template.content; if (String.isInstanceOfType(content)) { content = nameTable[content]; } if (content.parentNode) { $common.wrapElement(content, elt, contentPresenter); } else { contentPresenter.appendChild(content); } } return elt; }, prepareHiddenElementForATDeviceUpdate: function() { var objHidden = document.getElementById("hiddenInputToUpdateATBuffer_CommonToolkitScripts"); if (!objHidden) { var objHidden = document.createElement("input"); objHidden.setAttribute("type", "hidden"); objHidden.setAttribute("value", "1"); objHidden.setAttribute("id", "hiddenInputToUpdateATBuffer_CommonToolkitScripts"); objHidden.setAttribute("name", "hiddenInputToUpdateATBuffer_CommonToolkitScripts"); if (document.forms[0]) { document.forms[0].appendChild(objHidden); } } }, updateFormToRefreshATDeviceBuffer: function() { var objHidden = document.getElementById("hiddenInputToUpdateATBuffer_CommonToolkitScripts"); if (objHidden) { if (objHidden.getAttribute("value") == "1") { objHidden.setAttribute("value", "0"); } else { objHidden.setAttribute("value", "1"); } } } }; var CommonToolkitScripts = AjaxControlToolkit.CommonToolkitScripts = new AjaxControlToolkit._CommonToolkitScripts(); var $common = CommonToolkitScripts; Sys.UI.DomElement.getVisible = $common.getVisible; Sys.UI.DomElement.setVisible = $common.setVisible; Sys.UI.Control.overlaps = $common.overlaps; AjaxControlToolkit._DomUtility = function() { }; AjaxControlToolkit._DomUtility.prototype = { isDescendant: function(ancestor, descendant) { for (var n = descendant.parentNode; n != null; n = n.parentNode) { if (n == ancestor) { return true; } } return false; }, isDescendantOrSelf: function(ancestor, descendant) { if (ancestor === descendant) { return true; } return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant); }, isAncestor: function(descendant, ancestor) { return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant); }, isAncestorOrSelf: function(descendant, ancestor) { if (descendant === ancestor) { return true; } return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant); }, isSibling: function(self, sibling) { var parent = self.parentNode; for (var i = 0; i < parent.childNodes.length; i++) { if (parent.childNodes[i] == sibling) { return true; } } return false; } }; AjaxControlToolkit._DomUtility.registerClass("AjaxControlToolkit._DomUtility"); AjaxControlToolkit.DomUtility = new AjaxControlToolkit._DomUtility(); AjaxControlToolkit.TextBoxWrapper = function(element) { AjaxControlToolkit.TextBoxWrapper.initializeBase(this, [element]); this._current = element.value; this._watermark = null; this._isWatermarked = false; }; AjaxControlToolkit.TextBoxWrapper.prototype = { dispose: function() { this.get_element().AjaxControlToolkitTextBoxWrapper = null; AjaxControlToolkit.TextBoxWrapper.callBaseMethod(this, "dispose"); }, get_Current: function() { this._current = this.get_element().value; return this._current; }, set_Current: function(value) { this._current = value; this._updateElement(); }, get_Value: function() { if (this.get_IsWatermarked()) { return ""; } else { return this.get_Current(); } }, set_Value: function(text) { this.set_Current(text); if (!text || (0 == text.length)) { if (null != this._watermark) { this.set_IsWatermarked(true); } } else { this.set_IsWatermarked(false); } }, get_Watermark: function() { return this._watermark; }, set_Watermark: function(value) { this._watermark = value; this._updateElement(); }, get_IsWatermarked: function() { return this._isWatermarked; }, set_IsWatermarked: function(isWatermarked) { if (this._isWatermarked != isWatermarked) { this._isWatermarked = isWatermarked; this._updateElement(); this._raiseWatermarkChanged(); } }, _updateElement: function() { var element = this.get_element(); if (this._isWatermarked) { if (element.value != this._watermark) { element.value = this._watermark; } } else { if (element.value != this._current) { element.value = this._current; } } }, add_WatermarkChanged: function(handler) { this.get_events().addHandler("WatermarkChanged", handler); }, remove_WatermarkChanged: function(handler) { this.get_events().removeHandler("WatermarkChanged", handler); }, _raiseWatermarkChanged: function() { var onWatermarkChangedHandler = this.get_events().getHandler("WatermarkChanged"); if (onWatermarkChangedHandler) { onWatermarkChangedHandler(this, Sys.EventArgs.Empty); } } }; AjaxControlToolkit.TextBoxWrapper.get_Wrapper = function(element) { if (null == element.AjaxControlToolkitTextBoxWrapper) { element.AjaxControlToolkitTextBoxWrapper = new AjaxControlToolkit.TextBoxWrapper(element); } return element.AjaxControlToolkitTextBoxWrapper; }; AjaxControlToolkit.TextBoxWrapper.registerClass("AjaxControlToolkit.TextBoxWrapper", Sys.UI.Behavior); AjaxControlToolkit.TextBoxWrapper.validatorGetValue = function(id) { var control = $get(id); if (control && control.AjaxControlToolkitTextBoxWrapper) { return control.AjaxControlToolkitTextBoxWrapper.get_Value(); } return AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue(id); }; if (typeof (ValidatorGetValue) == "function") { AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue = ValidatorGetValue; ValidatorGetValue = AjaxControlToolkit.TextBoxWrapper.validatorGetValue; } if (Sys.CultureInfo.prototype._getAbbrMonthIndex) { try { Sys.CultureInfo.prototype._getAbbrMonthIndex(""); } catch (ex) { Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) { if (!this._upperAbbrMonths) { this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); } return Array.indexOf(this._upperAbbrMonths, this._toUpper(value)); }; Sys.CultureInfo.CurrentCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex; Sys.CultureInfo.InvariantCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex; } } AjaxControlToolkit.Resources = { "PasswordStrength_InvalidWeightingRatios": "Strength Weighting ratios must have 4 elements", "Animation_ChildrenNotAllowed": 'AjaxControlToolkit.Animation.createAnimation cannot add child animations to type "{0}" that does not derive from AjaxControlToolkit.Animation.ParentAnimation', "PasswordStrength_RemainingSymbols": "{0} symbol characters", "ExtenderBase_CannotSetClientStateField": "clientStateField can only be set before initialization", "RTE_PreviewHTML": "Preview HTML", "RTE_JustifyCenter": "Justify Center", "PasswordStrength_RemainingUpperCase": "{0} more upper case characters", "Animation_TargetNotFound": 'AjaxControlToolkit.Animation.Animation.set_animationTarget requires the ID of a Sys.UI.DomElement or Sys.UI.Control. No element or control could be found corresponding to "{0}"', "RTE_FontColor": "Font Color", "RTE_LabelColor": "Label Color", "Common_InvalidBorderWidthUnit": 'A unit type of "{0}"\u0027 is invalid for parseBorderWidth', "RTE_Heading": "Heading", "Tabs_PropertySetBeforeInitialization": "{0} cannot be changed before initialization", "RTE_OrderedList": "Ordered List", "ReorderList_DropWatcherBehavior_NoChild": 'Could not find child of list with id "{0}"', "CascadingDropDown_MethodTimeout": "[Method timeout]", "RTE_Columns": "Columns", "RTE_InsertImage": "Insert Image", "RTE_InsertTable": "Insert Table", "RTE_Values": "Values", "RTE_OK": "OK", "ExtenderBase_PageNotRegisteredForCallbacks": "This Page has not been registered for callbacks", "Animation_NoDynamicPropertyFound": 'AjaxControlToolkit.Animation.createAnimation found no property corresponding to "{0}" or "{1}"', "Animation_InvalidBaseType": "AjaxControlToolkit.Animation.registerAnimation can only register types that inherit from AjaxControlToolkit.Animation.Animation", "RTE_UnorderedList": "Unordered List", "ResizableControlBehavior_InvalidHandler": "{0} handler not a function, function name, or function text", "Animation_InvalidColor": 'Color must be a 7-character hex representation (e.g. #246ACF), not "{0}"', "RTE_CellColor": "Cell Color", "PasswordStrength_RemainingMixedCase": "Mixed case characters", "RTE_Italic": "Italic", "CascadingDropDown_NoParentElement": 'Failed to find parent element "{0}"', "ValidatorCallout_DefaultErrorMessage": "This control is invalid", "RTE_Indent": "Indent", "ReorderList_DropWatcherBehavior_CallbackError": "Reorder failed, see details below.\\r\\n\\r\\n{0}", "PopupControl_NoDefaultProperty": 'No default property supported for control "{0}" of type "{1}"', "RTE_Normal": "Normal", "PopupExtender_NoParentElement": 'Couldn\u0027t find parent element "{0}"', "RTE_ViewValues": "View Values", "RTE_Legend": "Legend", "RTE_Labels": "Labels", "RTE_CellSpacing": "Cell Spacing", "PasswordStrength_RemainingNumbers": "{0} more numbers", "RTE_Border": "Border", "RTE_Create": "Create", "RTE_BackgroundColor": "Background Color", "RTE_Cancel": "Cancel", "RTE_JustifyFull": "Justify Full", "RTE_JustifyLeft": "Justify Left", "RTE_Cut": "Cut", "ResizableControlBehavior_CannotChangeProperty": "Changes to {0} not supported", "RTE_ViewSource": "View Source", "Common_InvalidPaddingUnit": 'A unit type of "{0}" is invalid for parsePadding', "RTE_Paste": "Paste", "ExtenderBase_ControlNotRegisteredForCallbacks": "This Control has not been registered for callbacks", "Calendar_Today": "Today: {0}", "Common_DateTime_InvalidFormat": "Invalid format", "ListSearch_DefaultPrompt": "Type to search", "CollapsiblePanel_NoControlID": 'Failed to find element "{0}"', "RTE_ViewEditor": "View Editor", "RTE_BarColor": "Bar Color", "PasswordStrength_DefaultStrengthDescriptions": "NonExistent;Very Weak;Weak;Poor;Almost OK;Barely Acceptable;Average;Good;Strong;Excellent;Unbreakable!", "RTE_Inserttexthere": "Insert text here", "Animation_UknownAnimationName": 'AjaxControlToolkit.Animation.createAnimation could not find an Animation corresponding to the name "{0}"', "ExtenderBase_InvalidClientStateType": "saveClientState must return a value of type String", "Rating_CallbackError": "An unhandled exception has occurred:\\r\\n{0}", "Tabs_OwnerExpected": "owner must be set before initialize", "DynamicPopulate_WebServiceTimeout": "Web service call timed out", "PasswordStrength_RemainingLowerCase": "{0} more lower case characters", "Animation_MissingAnimationName": "AjaxControlToolkit.Animation.createAnimation requires an object with an AnimationName property", "RTE_JustifyRight": "Justify Right", "Tabs_ActiveTabArgumentOutOfRange": "Argument is not a member of the tabs collection", "RTE_CellPadding": "Cell Padding", "RTE_ClearFormatting": "Clear Formatting", "AlwaysVisible_ElementRequired": "AjaxControlToolkit.AlwaysVisibleControlBehavior must have an element", "Slider_NoSizeProvided": "Please set valid values for the height and width attributes in the slider\u0027s CSS classes", "DynamicPopulate_WebServiceError": "Web Service call failed: {0}", "PasswordStrength_StrengthPrompt": "Strength: ", "PasswordStrength_RemainingCharacters": "{0} more characters", "PasswordStrength_Satisfied": "Nothing more required", "RTE_Hyperlink": "Hyperlink", "Animation_NoPropertyFound": 'AjaxControlToolkit.Animation.createAnimation found no property corresponding to "{0}"', "PasswordStrength_InvalidStrengthDescriptionStyles": "Text Strength description style classes must match the number of text descriptions.", "PasswordStrength_GetHelpRequirements": "Get help on password requirements", "PasswordStrength_InvalidStrengthDescriptions": "Invalid number of text strength descriptions specified", "RTE_Underline": "Underline", "Tabs_PropertySetAfterInitialization": "{0} cannot be changed after initialization", "RTE_Rows": "Rows", "RTE_Redo": "Redo", "RTE_Size": "Size", "RTE_Undo": "Undo", "RTE_Bold": "Bold", "RTE_Copy": "Copy", "RTE_Font": "Font", "CascadingDropDown_MethodError": "[Method error {0}]", "RTE_BorderColor": "Border Color", "RTE_Paragraph": "Paragraph", "RTE_InsertHorizontalRule": "Insert Horizontal Rule", "Common_UnitHasNoDigits": "No digits", "RTE_Outdent": "Outdent", "Common_DateTime_InvalidTimeSpan": '"{0}" is not a valid TimeSpan format', "Animation_CannotNestSequence": "AjaxControlToolkit.Animation.SequenceAnimation cannot be nested inside AjaxControlToolkit.Animation.ParallelAnimation", "Shared_BrowserSecurityPreventsPaste": "Your browser security settings don\u0027t permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead." }; Type.registerNamespace("AjaxControlToolkit.Animation"); var $AA = AjaxControlToolkit.Animation; $AA.registerAnimation = function(name, type) { if (type && ((type === $AA.Animation) || (type.inheritsFrom && type.inheritsFrom($AA.Animation)))) { if (!$AA.__animations) { $AA.__animations = {}; } $AA.__animations[name.toLowerCase()] = type; type.play = function() { var animation = new type(); type.apply(animation, arguments); animation.initialize(); var handler = Function.createDelegate(animation, function() { animation.remove_ended(handler); handler = null; animation.dispose(); }); animation.add_ended(handler); animation.play(); }; } else { throw Error.argumentType("type", type, $AA.Animation, AjaxControlToolkit.Resources.Animation_InvalidBaseType); } }; $AA.buildAnimation = function(json, defaultTarget) { if (!json || json === "") { return null; } var obj; json = "(" + json + ")"; if (!Sys.Debug.isDebug) { try { obj = Sys.Serialization.JavaScriptSerializer.deserialize(json); } catch (ex) { } } else { obj = Sys.Serialization.JavaScriptSerializer.deserialize(json); } return $AA.createAnimation(obj, defaultTarget); }; $AA.createAnimation = function(obj, defaultTarget) { if (!obj || !obj.AnimationName) { throw Error.argument("obj", AjaxControlToolkit.Resources.Animation_MissingAnimationName); } var type = $AA.__animations[obj.AnimationName.toLowerCase()]; if (!type) { throw Error.argument("type", String.format(AjaxControlToolkit.Resources.Animation_UknownAnimationName, obj.AnimationName)); } var animation = new type(); if (defaultTarget) { animation.set_target(defaultTarget); } if (obj.AnimationChildren && obj.AnimationChildren.length) { if ($AA.ParentAnimation.isInstanceOfType(animation)) { for (var i = 0; i < obj.AnimationChildren.length; i++) { var child = $AA.createAnimation(obj.AnimationChildren[i]); if (child) { animation.add(child); } } } else { throw Error.argument("obj", String.format(AjaxControlToolkit.Resources.Animation_ChildrenNotAllowed, type.getName())); } } var properties = type.__animationProperties; if (!properties) { type.__animationProperties = {}; type.resolveInheritance(); for (var name in type.prototype) { if (name.startsWith("set_")) { type.__animationProperties[name.substr(4).toLowerCase()] = name; } } delete type.__animationProperties["id"]; properties = type.__animationProperties; } for (var property in obj) { var prop = property.toLowerCase(); if (prop == "animationname" || prop == "animationchildren") { continue; } var value = obj[property]; var setter = properties[prop]; if (setter && String.isInstanceOfType(setter) && animation[setter]) { if (!Sys.Debug.isDebug) { try { animation[setter](value); } catch (ex) { } } else { animation[setter](value); } } else { if (prop.endsWith("script")) { setter = properties[prop.substr(0, property.length - 6)]; if (setter && String.isInstanceOfType(setter) && animation[setter]) { animation.DynamicProperties[setter] = value; } else { if (Sys.Debug.isDebug) { throw Error.argument("obj", String.format(AjaxControlToolkit.Resources.Animation_NoDynamicPropertyFound, property, property.substr(0, property.length - 5))); } } } else { if (Sys.Debug.isDebug) { throw Error.argument("obj", String.format(AjaxControlToolkit.Resources.Animation_NoPropertyFound, property)); } } } } return animation; }; $AA.Animation = function(target, duration, fps) { $AA.Animation.initializeBase(this); this._duration = 1; this._fps = 25; this._target = null; this._tickHandler = null; this._timer = null; this._percentComplete = 0; this._percentDelta = null; this._owner = null; this._parentAnimation = null; this.DynamicProperties = {}; if (target) { this.set_target(target); } if (duration) { this.set_duration(duration); } if (fps) { this.set_fps(fps); } }; $AA.Animation.prototype = { dispose: function() { if (this._timer) { this._timer.dispose(); this._timer = null; } this._tickHandler = null; this._target = null; $AA.Animation.callBaseMethod(this, "dispose"); }, play: function() { if (!this._owner) { var resume = true; if (!this._timer) { resume = false; if (!this._tickHandler) { this._tickHandler = Function.createDelegate(this, this._onTimerTick); } this._timer = new Sys.Timer(); this._timer.add_tick(this._tickHandler); this.onStart(); this._timer.set_interval(1000 / this._fps); this._percentDelta = 100 / (this._duration * this._fps); this._updatePercentComplete(0, true); } this._timer.set_enabled(true); this.raisePropertyChanged("isPlaying"); if (!resume) { this.raisePropertyChanged("isActive"); } } }, pause: function() { if (!this._owner) { if (this._timer) { this._timer.set_enabled(false); this.raisePropertyChanged("isPlaying"); } } }, stop: function(finish) { if (!this._owner) { var t = this._timer; this._timer = null; if (t) { t.dispose(); if (this._percentComplete !== 100) { this._percentComplete = 100; this.raisePropertyChanged("percentComplete"); if (finish || finish === undefined) { this.onStep(100); } } this.onEnd(); this.raisePropertyChanged("isPlaying"); this.raisePropertyChanged("isActive"); } } }, onStart: function() { this.raiseStarted(); for (var property in this.DynamicProperties) { try { this[property](eval(this.DynamicProperties[property])); } catch (ex) { if (Sys.Debug.isDebug) { throw ex; } } } }, onStep: function(percentage) { this.setValue(this.getAnimatedValue(percentage)); }, onEnd: function() { this.raiseEnded(); }, getAnimatedValue: function(percentage) { throw Error.notImplemented(); }, setValue: function(value) { throw Error.notImplemented(); }, interpolate: function(start, end, percentage) { return start + (end - start) * (percentage / 100); }, _onTimerTick: function() { this._updatePercentComplete(this._percentComplete + this._percentDelta, true); }, _updatePercentComplete: function(percentComplete, animate) { if (percentComplete > 100) { percentComplete = 100; } this._percentComplete = percentComplete; this.raisePropertyChanged("percentComplete"); if (animate) { this.onStep(percentComplete); } if (percentComplete === 100) { this.stop(false); } }, setOwner: function(owner) { this._owner = owner; }, raiseStarted: function() { var handlers = this.get_events().getHandler("started"); if (handlers) { handlers(this, Sys.EventArgs.Empty); } }, add_started: function(handler) { this.get_events().addHandler("started", handler); }, remove_started: function(handler) { this.get_events().removeHandler("started", handler); }, raiseEnded: function() { var handlers = this.get_events().getHandler("ended"); if (handlers) { handlers(this, Sys.EventArgs.Empty); } }, add_ended: function(handler) { this.get_events().addHandler("ended", handler); }, remove_ended: function(handler) { this.get_events().removeHandler("ended", handler); }, get_target: function() { if (!this._target && this._parentAnimation) { return this._parentAnimation.get_target(); } return this._target; }, set_target: function(value) { if (this._target != value) { this._target = value; this.raisePropertyChanged("target"); } }, set_animationTarget: function(id) { var target = null; var element = $get(id); if (element) { target = element; } else { var ctrl = $find(id); if (ctrl) { element = ctrl.get_element(); if (element) { target = element; } } } if (target) { this.set_target(target); } else { throw Error.argument("id", String.format(AjaxControlToolkit.Resources.Animation_TargetNotFound, id)); } }, get_duration: function() { return this._duration; }, set_duration: function(value) { value = this._getFloat(value); if (this._duration != value) { this._duration = value; this.raisePropertyChanged("duration"); } }, get_fps: function() { return this._fps; }, set_fps: function(value) { value = this._getInteger(value); if (this.fps != value) { this._fps = value; this.raisePropertyChanged("fps"); } }, get_isActive: function() { return (this._timer !== null); }, get_isPlaying: function() { return (this._timer !== null) && this._timer.get_enabled(); }, get_percentComplete: function() { return this._percentComplete; }, _getBoolean: function(value) { if (String.isInstanceOfType(value)) { return Boolean.parse(value); } return value; }, _getInteger: function(value) { if (String.isInstanceOfType(value)) { return parseInt(value); } return value; }, _getFloat: function(value) { if (String.isInstanceOfType(value)) { return parseFloat(value); } return value; }, _getEnum: function(value, type) { if (String.isInstanceOfType(value) && type && type.parse) { return type.parse(value); } return value; } }; $AA.Animation.registerClass("AjaxControlToolkit.Animation.Animation", Sys.Component); $AA.registerAnimation("animation", $AA.Animation); $AA.ParentAnimation = function(target, duration, fps, animations) { $AA.ParentAnimation.initializeBase(this, [target, duration, fps]); this._animations = []; if (animations && animations.length) { for (var i = 0; i < animations.length; i++) { this.add(animations[i]); } } }; $AA.ParentAnimation.prototype = { initialize: function() { $AA.ParentAnimation.callBaseMethod(this, "initialize"); if (this._animations) { for (var i = 0; i < this._animations.length; i++) { var animation = this._animations[i]; if (animation && !animation.get_isInitialized) { animation.initialize(); } } } }, dispose: function() { this.clear(); this._animations = null; $AA.ParentAnimation.callBaseMethod(this, "dispose"); }, get_animations: function() { return this._animations; }, add: function(animation) { if (this._animations) { if (animation) { animation._parentAnimation = this; } Array.add(this._animations, animation); this.raisePropertyChanged("animations"); } }, remove: function(animation) { if (this._animations) { if (animation) { animation.dispose(); } Array.remove(this._animations, animation); this.raisePropertyChanged("animations"); } }, removeAt: function(index) { if (this._animations) { var animation = this._animations[index]; if (animation) { animation.dispose(); } Array.removeAt(this._animations, index); this.raisePropertyChanged("animations"); } }, clear: function() { if (this._animations) { for (var i = this._animations.length - 1; i >= 0; i--) { this._animations[i].dispose(); this._animations[i] = null; } Array.clear(this._animations); this._animations = []; this.raisePropertyChanged("animations"); } } }; $AA.ParentAnimation.registerClass("AjaxControlToolkit.Animation.ParentAnimation", $AA.Animation); $AA.registerAnimation("parent", $AA.ParentAnimation); $AA.ParallelAnimation = function(target, duration, fps, animations) { $AA.ParallelAnimation.initializeBase(this, [target, duration, fps, animations]); }; $AA.ParallelAnimation.prototype = { add: function(animation) { $AA.ParallelAnimation.callBaseMethod(this, "add", [animation]); animation.setOwner(this); }, onStart: function() { $AA.ParallelAnimation.callBaseMethod(this, "onStart"); var animations = this.get_animations(); for (var i = 0; i < animations.length; i++) { animations[i].onStart(); } }, onStep: function(percentage) { var animations = this.get_animations(); for (var i = 0; i < animations.length; i++) { animations[i].onStep(percentage); } }, onEnd: function() { var animations = this.get_animations(); for (var i = 0; i < animations.length; i++) { animations[i].onEnd(); } $AA.ParallelAnimation.callBaseMethod(this, "onEnd"); } }; $AA.ParallelAnimation.registerClass("AjaxControlToolkit.Animation.ParallelAnimation", $AA.ParentAnimation); $AA.registerAnimation("parallel", $AA.ParallelAnimation); $AA.SequenceAnimation = function(target, duration, fps, animations, iterations) { $AA.SequenceAnimation.initializeBase(this, [target, duration, fps, animations]); this._handler = null; this._paused = false; this._playing = false; this._index = 0; this._remainingIterations = 0; this._iterations = (iterations !== undefined) ? iterations : 1; }; $AA.SequenceAnimation.prototype = { dispose: function() { this._handler = null; $AA.SequenceAnimation.callBaseMethod(this, "dispose"); }, stop: function() { if (this._playing) { var animations = this.get_animations(); if (this._index < animations.length) { animations[this._index].remove_ended(this._handler); for (var i = this._index; i < animations.length; i++) { animations[i].stop(); } } this._playing = false; this._paused = false; this.raisePropertyChanged("isPlaying"); this.onEnd(); } }, pause: function() { if (this.get_isPlaying()) { var current = this.get_animations()[this._index]; if (current != null) { current.pause(); } this._paused = true; this.raisePropertyChanged("isPlaying"); } }, play: function() { var animations = this.get_animations(); if (!this._playing) { this._playing = true; if (this._paused) { this._paused = false; var current = animations[this._index]; if (current != null) { current.play(); this.raisePropertyChanged("isPlaying"); } } else { this.onStart(); this._index = 0; var first = animations[this._index]; if (first) { first.add_ended(this._handler); first.play(); this.raisePropertyChanged("isPlaying"); } else { this.stop(); } } } }, onStart: function() { $AA.SequenceAnimation.callBaseMethod(this, "onStart"); this._remainingIterations = this._iterations - 1; if (!this._handler) { this._handler = Function.createDelegate(this, this._onEndAnimation); } }, _onEndAnimation: function() { var animations = this.get_animations(); var current = animations[this._index++]; if (current) { current.remove_ended(this._handler); } if (this._index < animations.length) { var next = animations[this._index]; next.add_ended(this._handler); next.play(); } else { if (this._remainingIterations >= 1 || this._iterations <= 0) { this._remainingIterations--; this._index = 0; var first = animations[0]; first.add_ended(this._handler); first.play(); } else { this.stop(); } } }, onStep: function(percentage) { throw Error.invalidOperation(AjaxControlToolkit.Resources.Animation_CannotNestSequence); }, onEnd: function() { this._remainingIterations = 0; $AA.SequenceAnimation.callBaseMethod(this, "onEnd"); }, get_isActive: function() { return true; }, get_isPlaying: function() { return this._playing && !this._paused; }, get_iterations: function() { return this._iterations; }, set_iterations: function(value) { value = this._getInteger(value); if (this._iterations != value) { this._iterations = value; this.raisePropertyChanged("iterations"); } }, get_isInfinite: function() { return this._iterations <= 0; } }; $AA.SequenceAnimation.registerClass("AjaxControlToolkit.Animation.SequenceAnimation", $AA.ParentAnimation); $AA.registerAnimation("sequence", $AA.SequenceAnimation); $AA.SelectionAnimation = function(target, duration, fps, animations) { $AA.SelectionAnimation.initializeBase(this, [target, duration, fps, animations]); this._selectedIndex = -1; this._selected = null; }; $AA.SelectionAnimation.prototype = { getSelectedIndex: function() { throw Error.notImplemented(); }, onStart: function() { $AA.SelectionAnimation.callBaseMethod(this, "onStart"); var animations = this.get_animations(); this._selectedIndex = this.getSelectedIndex(); if (this._selectedIndex >= 0 && this._selectedIndex < animations.length) { this._selected = animations[this._selectedIndex]; if (this._selected) { this._selected.setOwner(this); this._selected.onStart(); } } }, onStep: function(percentage) { if (this._selected) { this._selected.onStep(percentage); } }, onEnd: function() { if (this._selected) { this._selected.onEnd(); this._selected.setOwner(null); } this._selected = null; this._selectedIndex = null; $AA.SelectionAnimation.callBaseMethod(this, "onEnd"); } }; $AA.SelectionAnimation.registerClass("AjaxControlToolkit.Animation.SelectionAnimation", $AA.ParentAnimation); $AA.registerAnimation("selection", $AA.SelectionAnimation); $AA.ConditionAnimation = function(target, duration, fps, animations, conditionScript) { $AA.ConditionAnimation.initializeBase(this, [target, duration, fps, animations]); this._conditionScript = conditionScript; }; $AA.ConditionAnimation.prototype = { getSelectedIndex: function() { var selected = -1; if (this._conditionScript && this._conditionScript.length > 0) { try { selected = eval(this._conditionScript) ? 0 : 1; } catch (ex) { } } return selected; }, get_conditionScript: function() { return this._conditionScript; }, set_conditionScript: function(value) { if (this._conditionScript != value) { this._conditionScript = value; this.raisePropertyChanged("conditionScript"); } } }; $AA.ConditionAnimation.registerClass("AjaxControlToolkit.Animation.ConditionAnimation", $AA.SelectionAnimation); $AA.registerAnimation("condition", $AA.ConditionAnimation); $AA.CaseAnimation = function(target, duration, fps, animations, selectScript) { $AA.CaseAnimation.initializeBase(this, [target, duration, fps, animations]); this._selectScript = selectScript; }; $AA.CaseAnimation.prototype = { getSelectedIndex: function() { var selected = -1; if (this._selectScript && this._selectScript.length > 0) { try { var result = eval(this._selectScript); if (result !== undefined) { selected = result; } } catch (ex) { } } return selected; }, get_selectScript: function() { return this._selectScript; }, set_selectScript: function(value) { if (this._selectScript != value) { this._selectScript = value; this.raisePropertyChanged("selectScript"); } } }; $AA.CaseAnimation.registerClass("AjaxControlToolkit.Animation.CaseAnimation", $AA.SelectionAnimation); $AA.registerAnimation("case", $AA.CaseAnimation); $AA.FadeEffect = function() { throw Error.invalidOperation(); }; $AA.FadeEffect.prototype = { FadeIn: 0, FadeOut: 1 }; $AA.FadeEffect.registerEnum("AjaxControlToolkit.Animation.FadeEffect", false); $AA.FadeAnimation = function(target, duration, fps, effect, minimumOpacity, maximumOpacity, forceLayoutInIE) { $AA.FadeAnimation.initializeBase(this, [target, duration, fps]); this._effect = (effect !== undefined) ? effect : $AA.FadeEffect.FadeIn; this._max = (maximumOpacity !== undefined) ? maximumOpacity : 1; this._min = (minimumOpacity !== undefined) ? minimumOpacity : 0; this._start = this._min; this._end = this._max; this._layoutCreated = false; this._forceLayoutInIE = (forceLayoutInIE === undefined || forceLayoutInIE === null) ? true : forceLayoutInIE; this._currentTarget = null; this._resetOpacities(); }; $AA.FadeAnimation.prototype = { _resetOpacities: function() { if (this._effect == $AA.FadeEffect.FadeIn) { this._start = this._min; this._end = this._max; } else { this._start = this._max; this._end = this._min; } }, _createLayout: function() { var element = this._currentTarget; if (element) { var originalWidth = $common.getCurrentStyle(element, "width"); var originalHeight = $common.getCurrentStyle(element, "height"); var originalBackColor = $common.getCurrentStyle(element, "backgroundColor"); if ((!originalWidth || originalWidth == "" || originalWidth == "auto") && (!originalHeight || originalHeight == "" || originalHeight == "auto")) { element.style.width = element.offsetWidth + "px"; } if (!originalBackColor || originalBackColor == "" || originalBackColor == "transparent" || originalBackColor == "rgba(0, 0, 0, 0)") { element.style.backgroundColor = $common.getInheritedBackgroundColor(element); } this._layoutCreated = true; } }, onStart: function() { $AA.FadeAnimation.callBaseMethod(this, "onStart"); this._currentTarget = this.get_target(); this.setValue(this._start); if (this._forceLayoutInIE && !this._layoutCreated && Sys.Browser.agent == Sys.Browser.InternetExplorer) { this._createLayout(); } }, getAnimatedValue: function(percentage) { return this.interpolate(this._start, this._end, percentage); }, setValue: function(value) { if (this._currentTarget) { $common.setElementOpacity(this._currentTarget, value); } }, get_effect: function() { return this._effect; }, set_effect: function(value) { value = this._getEnum(value, $AA.FadeEffect); if (this._effect != value) { this._effect = value; this._resetOpacities(); this.raisePropertyChanged("effect"); } }, get_minimumOpacity: function() { return this._min; }, set_minimumOpacity: function(value) { value = this._getFloat(value); if (this._min != value) { this._min = value; this._resetOpacities(); this.raisePropertyChanged("minimumOpacity"); } }, get_maximumOpacity: function() { return this._max; }, set_maximumOpacity: function(value) { value = this._getFloat(value); if (this._max != value) { this._max = value; this._resetOpacities(); this.raisePropertyChanged("maximumOpacity"); } }, get_forceLayoutInIE: function() { return this._forceLayoutInIE; }, set_forceLayoutInIE: function(value) { value = this._getBoolean(value); if (this._forceLayoutInIE != value) { this._forceLayoutInIE = value; this.raisePropertyChanged("forceLayoutInIE"); } }, set_startValue: function(value) { value = this._getFloat(value); this._start = value; } }; $AA.FadeAnimation.registerClass("AjaxControlToolkit.Animation.FadeAnimation", $AA.Animation); $AA.registerAnimation("fade", $AA.FadeAnimation); $AA.FadeInAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) { $AA.FadeInAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeIn, minimumOpacity, maximumOpacity, forceLayoutInIE]); }; $AA.FadeInAnimation.prototype = { onStart: function() { $AA.FadeInAnimation.callBaseMethod(this, "onStart"); if (this._currentTarget) { this.set_startValue($common.getElementOpacity(this._currentTarget)); } } }; $AA.FadeInAnimation.registerClass("AjaxControlToolkit.Animation.FadeInAnimation", $AA.FadeAnimation); $AA.registerAnimation("fadeIn", $AA.FadeInAnimation); $AA.FadeOutAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) { $AA.FadeOutAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeOut, minimumOpacity, maximumOpacity, forceLayoutInIE]); }; $AA.FadeOutAnimation.prototype = { onStart: function() { $AA.FadeOutAnimation.callBaseMethod(this, "onStart"); if (this._currentTarget) { this.set_startValue($common.getElementOpacity(this._currentTarget)); } } }; $AA.FadeOutAnimation.registerClass("AjaxControlToolkit.Animation.FadeOutAnimation", $AA.FadeAnimation); $AA.registerAnimation("fadeOut", $AA.FadeOutAnimation); $AA.PulseAnimation = function(target, duration, fps, iterations, minimumOpacity, maximumOpacity, forceLayoutInIE) { $AA.PulseAnimation.initializeBase(this, [target, duration, fps, null, ((iterations !== undefined) ? iterations : 3)]); this._out = new $AA.FadeOutAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE); this.add(this._out); this._in = new $AA.FadeInAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE); this.add(this._in); }; $AA.PulseAnimation.prototype = { get_minimumOpacity: function() { return this._out.get_minimumOpacity(); }, set_minimumOpacity: function(value) { value = this._getFloat(value); this._out.set_minimumOpacity(value); this._in.set_minimumOpacity(value); this.raisePropertyChanged("minimumOpacity"); }, get_maximumOpacity: function() { return this._out.get_maximumOpacity(); }, set_maximumOpacity: function(value) { value = this._getFloat(value); this._out.set_maximumOpacity(value); this._in.set_maximumOpacity(value); this.raisePropertyChanged("maximumOpacity"); }, get_forceLayoutInIE: function() { return this._out.get_forceLayoutInIE(); }, set_forceLayoutInIE: function(value) { value = this._getBoolean(value); this._out.set_forceLayoutInIE(value); this._in.set_forceLayoutInIE(value); this.raisePropertyChanged("forceLayoutInIE"); }, set_duration: function(value) { value = this._getFloat(value); $AA.PulseAnimation.callBaseMethod(this, "set_duration", [value]); this._in.set_duration(value); this._out.set_duration(value); }, set_fps: function(value) { value = this._getInteger(value); $AA.PulseAnimation.callBaseMethod(this, "set_fps", [value]); this._in.set_fps(value); this._out.set_fps(value); } }; $AA.PulseAnimation.registerClass("AjaxControlToolkit.Animation.PulseAnimation", $AA.SequenceAnimation); $AA.registerAnimation("pulse", $AA.PulseAnimation); $AA.PropertyAnimation = function(target, duration, fps, property, propertyKey) { $AA.PropertyAnimation.initializeBase(this, [target, duration, fps]); this._property = property; this._propertyKey = propertyKey; this._currentTarget = null; }; $AA.PropertyAnimation.prototype = { onStart: function() { $AA.PropertyAnimation.callBaseMethod(this, "onStart"); this._currentTarget = this.get_target(); }, setValue: function(value) { var element = this._currentTarget; if (element && this._property && this._property.length > 0) { if (this._propertyKey && this._propertyKey.length > 0 && element[this._property]) { element[this._property][this._propertyKey] = value; } else { element[this._property] = value; } } }, getValue: function() { var element = this.get_target(); if (element && this._property && this._property.length > 0) { var property = element[this._property]; if (property) { if (this._propertyKey && this._propertyKey.length > 0) { return property[this._propertyKey]; } return property; } } return null; }, get_property: function() { return this._property; }, set_property: function(value) { if (this._property != value) { this._property = value; this.raisePropertyChanged("property"); } }, get_propertyKey: function() { return this._propertyKey; }, set_propertyKey: function(value) { if (this._propertyKey != value) { this._propertyKey = value; this.raisePropertyChanged("propertyKey"); } } }; $AA.PropertyAnimation.registerClass("AjaxControlToolkit.Animation.PropertyAnimation", $AA.Animation); $AA.registerAnimation("property", $AA.PropertyAnimation); $AA.DiscreteAnimation = function(target, duration, fps, property, propertyKey, values) { $AA.DiscreteAnimation.initializeBase(this, [target, duration, fps, property, propertyKey]); this._values = (values && values.length) ? values : []; }; $AA.DiscreteAnimation.prototype = { getAnimatedValue: function(percentage) { var index = Math.floor(this.interpolate(0, this._values.length - 1, percentage)); return this._values[index]; }, get_values: function() { return this._values; }, set_values: function(value) { if (this._values != value) { this._values = value; this.raisePropertyChanged("values"); } } }; $AA.DiscreteAnimation.registerClass("AjaxControlToolkit.Animation.DiscreteAnimation", $AA.PropertyAnimation); $AA.registerAnimation("discrete", $AA.DiscreteAnimation); $AA.InterpolatedAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) { $AA.InterpolatedAnimation.initializeBase(this, [target, duration, fps, ((property !== undefined) ? property : "style"), propertyKey]); this._startValue = startValue; this._endValue = endValue; }; $AA.InterpolatedAnimation.prototype = { get_startValue: function() { return this._startValue; }, set_startValue: function(value) { value = this._getFloat(value); if (this._startValue != value) { this._startValue = value; this.raisePropertyChanged("startValue"); } }, get_endValue: function() { return this._endValue; }, set_endValue: function(value) { value = this._getFloat(value); if (this._endValue != value) { this._endValue = value; this.raisePropertyChanged("endValue"); } } }; $AA.InterpolatedAnimation.registerClass("AjaxControlToolkit.Animation.InterpolatedAnimation", $AA.PropertyAnimation); $AA.registerAnimation("interpolated", $AA.InterpolatedAnimation); $AA.ColorAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) { $AA.ColorAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]); this._start = null; this._end = null; this._interpolateRed = false; this._interpolateGreen = false; this._interpolateBlue = false; }; $AA.ColorAnimation.prototype = { onStart: function() { $AA.ColorAnimation.callBaseMethod(this, "onStart"); this._start = $AA.ColorAnimation.getRGB(this.get_startValue()); this._end = $AA.ColorAnimation.getRGB(this.get_endValue()); this._interpolateRed = (this._start.Red != this._end.Red); this._interpolateGreen = (this._start.Green != this._end.Green); this._interpolateBlue = (this._start.Blue != this._end.Blue); }, getAnimatedValue: function(percentage) { var r = this._start.Red; var g = this._start.Green; var b = this._start.Blue; if (this._interpolateRed) { r = Math.round(this.interpolate(r, this._end.Red, percentage)); } if (this._interpolateGreen) { g = Math.round(this.interpolate(g, this._end.Green, percentage)); } if (this._interpolateBlue) { b = Math.round(this.interpolate(b, this._end.Blue, percentage)); } return $AA.ColorAnimation.toColor(r, g, b); }, set_startValue: function(value) { if (this._startValue != value) { this._startValue = value; this.raisePropertyChanged("startValue"); } }, set_endValue: function(value) { if (this._endValue != value) { this._endValue = value; this.raisePropertyChanged("endValue"); } } }; $AA.ColorAnimation.getRGB = function(color) { if (!color || color.length != 7) { throw String.format(AjaxControlToolkit.Resources.Animation_InvalidColor, color); } return { "Red": parseInt(color.substr(1, 2), 16), "Green": parseInt(color.substr(3, 2), 16), "Blue": parseInt(color.substr(5, 2), 16) }; }; $AA.ColorAnimation.toColor = function(red, green, blue) { var r = red.toString(16); var g = green.toString(16); var b = blue.toString(16); if (r.length == 1) { r = "0" + r; } if (g.length == 1) { g = "0" + g; } if (b.length == 1) { b = "0" + b; } return "#" + r + g + b; }; $AA.ColorAnimation.registerClass("AjaxControlToolkit.Animation.ColorAnimation", $AA.InterpolatedAnimation); $AA.registerAnimation("color", $AA.ColorAnimation); $AA.LengthAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue, unit) { $AA.LengthAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]); this._unit = (unit != null) ? unit : "px"; }; $AA.LengthAnimation.prototype = { getAnimatedValue: function(percentage) { var value = this.interpolate(this.get_startValue(), this.get_endValue(), percentage); return Math.round(value) + this._unit; }, get_unit: function() { return this._unit; }, set_unit: function(value) { if (this._unit != value) { this._unit = value; this.raisePropertyChanged("unit"); } } }; $AA.LengthAnimation.registerClass("AjaxControlToolkit.Animation.LengthAnimation", $AA.InterpolatedAnimation); $AA.registerAnimation("length", $AA.LengthAnimation); $AA.MoveAnimation = function(target, duration, fps, horizontal, vertical, relative, unit) { $AA.MoveAnimation.initializeBase(this, [target, duration, fps, null]); this._horizontal = horizontal ? horizontal : 0; this._vertical = vertical ? vertical : 0; this._relative = (relative === undefined) ? true : relative; this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, "style", "left", null, null, unit); this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, "style", "top", null, null, unit); this.add(this._verticalAnimation); this.add(this._horizontalAnimation); }; $AA.MoveAnimation.prototype = { onStart: function() { $AA.MoveAnimation.callBaseMethod(this, "onStart"); var element = this.get_target(); this._horizontalAnimation.set_startValue(element.offsetLeft); this._horizontalAnimation.set_endValue(this._relative ? element.offsetLeft + this._horizontal : this._horizontal); this._verticalAnimation.set_startValue(element.offsetTop); this._verticalAnimation.set_endValue(this._relative ? element.offsetTop + this._vertical : this._vertical); }, get_horizontal: function() { return this._horizontal; }, set_horizontal: function(value) { value = this._getFloat(value); if (this._horizontal != value) { this._horizontal = value; this.raisePropertyChanged("horizontal"); } }, get_vertical: function() { return this._vertical; }, set_vertical: function(value) { value = this._getFloat(value); if (this._vertical != value) { this._vertical = value; this.raisePropertyChanged("vertical"); } }, get_relative: function() { return this._relative; }, set_relative: function(value) { value = this._getBoolean(value); if (this._relative != value) { this._relative = value; this.raisePropertyChanged("relative"); } }, get_unit: function() { this._horizontalAnimation.get_unit(); }, set_unit: function(value) { var unit = this._horizontalAnimation.get_unit(); if (unit != value) { this._horizontalAnimation.set_unit(value); this._verticalAnimation.set_unit(value); this.raisePropertyChanged("unit"); } } }; $AA.MoveAnimation.registerClass("AjaxControlToolkit.Animation.MoveAnimation", $AA.ParallelAnimation); $AA.registerAnimation("move", $AA.MoveAnimation); $AA.ResizeAnimation = function(target, duration, fps, width, height, unit) { $AA.ResizeAnimation.initializeBase(this, [target, duration, fps, null]); this._width = width; this._height = height; this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, "style", "width", null, null, unit); this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, "style", "height", null, null, unit); this.add(this._horizontalAnimation); this.add(this._verticalAnimation); }; $AA.ResizeAnimation.prototype = { onStart: function() { $AA.ResizeAnimation.callBaseMethod(this, "onStart"); var element = this.get_target(); this._horizontalAnimation.set_startValue(element.offsetWidth); this._verticalAnimation.set_startValue(element.offsetHeight); this._horizontalAnimation.set_endValue((this._width !== null && this._width !== undefined) ? this._width : element.offsetWidth); this._verticalAnimation.set_endValue((this._height !== null && this._height !== undefined) ? this._height : element.offsetHeight); }, get_width: function() { return this._width; }, set_width: function(value) { value = this._getFloat(value); if (this._width != value) { this._width = value; this.raisePropertyChanged("width"); } }, get_height: function() { return this._height; }, set_height: function(value) { value = this._getFloat(value); if (this._height != value) { this._height = value; this.raisePropertyChanged("height"); } }, get_unit: function() { this._horizontalAnimation.get_unit(); }, set_unit: function(value) { var unit = this._horizontalAnimation.get_unit(); if (unit != value) { this._horizontalAnimation.set_unit(value); this._verticalAnimation.set_unit(value); this.raisePropertyChanged("unit"); } } }; $AA.ResizeAnimation.registerClass("AjaxControlToolkit.Animation.ResizeAnimation", $AA.ParallelAnimation); $AA.registerAnimation("resize", $AA.ResizeAnimation); $AA.ScaleAnimation = function(target, duration, fps, scaleFactor, unit, center, scaleFont, fontUnit) { $AA.ScaleAnimation.initializeBase(this, [target, duration, fps]); this._scaleFactor = (scaleFactor !== undefined) ? scaleFactor : 1; this._unit = (unit !== undefined) ? unit : "px"; this._center = center; this._scaleFont = scaleFont; this._fontUnit = (fontUnit !== undefined) ? fontUnit : "pt"; this._element = null; this._initialHeight = null; this._initialWidth = null; this._initialTop = null; this._initialLeft = null; this._initialFontSize = null; }; $AA.ScaleAnimation.prototype = { getAnimatedValue: function(percentage) { return this.interpolate(1, this._scaleFactor, percentage); }, onStart: function() { $AA.ScaleAnimation.callBaseMethod(this, "onStart"); this._element = this.get_target(); if (this._element) { this._initialHeight = this._element.offsetHeight; this._initialWidth = this._element.offsetWidth; if (this._center) { this._initialTop = this._element.offsetTop; this._initialLeft = this._element.offsetLeft; } if (this._scaleFont) { this._initialFontSize = parseFloat($common.getCurrentStyle(this._element, "fontSize")); } } }, setValue: function(scale) { if (this._element) { var width = Math.round(this._initialWidth * scale); var height = Math.round(this._initialHeight * scale); this._element.style.width = width + this._unit; this._element.style.height = height + this._unit; if (this._center) { this._element.style.top = (this._initialTop + Math.round((this._initialHeight - height) / 2)) + this._unit; this._element.style.left = (this._initialLeft + Math.round((this._initialWidth - width) / 2)) + this._unit; } if (this._scaleFont) { var size = this._initialFontSize * scale; if (this._fontUnit == "px" || this._fontUnit == "pt") { size = Math.round(size); } this._element.style.fontSize = size + this._fontUnit; } } }, onEnd: function() { this._element = null; this._initialHeight = null; this._initialWidth = null; this._initialTop = null; this._initialLeft = null; this._initialFontSize = null; $AA.ScaleAnimation.callBaseMethod(this, "onEnd"); }, get_scaleFactor: function() { return this._scaleFactor; }, set_scaleFactor: function(value) { value = this._getFloat(value); if (this._scaleFactor != value) { this._scaleFactor = value; this.raisePropertyChanged("scaleFactor"); } }, get_unit: function() { return this._unit; }, set_unit: function(value) { if (this._unit != value) { this._unit = value; this.raisePropertyChanged("unit"); } }, get_center: function() { return this._center; }, set_center: function(value) { value = this._getBoolean(value); if (this._center != value) { this._center = value; this.raisePropertyChanged("center"); } }, get_scaleFont: function() { return this._scaleFont; }, set_scaleFont: function(value) { value = this._getBoolean(value); if (this._scaleFont != value) { this._scaleFont = value; this.raisePropertyChanged("scaleFont"); } }, get_fontUnit: function() { return this._fontUnit; }, set_fontUnit: function(value) { if (this._fontUnit != value) { this._fontUnit = value; this.raisePropertyChanged("fontUnit"); } } }; $AA.ScaleAnimation.registerClass("AjaxControlToolkit.Animation.ScaleAnimation", $AA.Animation); $AA.registerAnimation("scale", $AA.ScaleAnimation); $AA.Action = function(target, duration, fps) { $AA.Action.initializeBase(this, [target, duration, fps]); if (duration === undefined) { this.set_duration(0); } }; $AA.Action.prototype = { onEnd: function() { this.doAction(); $AA.Action.callBaseMethod(this, "onEnd"); }, doAction: function() { throw Error.notImplemented(); }, getAnimatedValue: function() { }, setValue: function() { } }; $AA.Action.registerClass("AjaxControlToolkit.Animation.Action", $AA.Animation); $AA.registerAnimation("action", $AA.Action); $AA.EnableAction = function(target, duration, fps, enabled) { $AA.EnableAction.initializeBase(this, [target, duration, fps]); this._enabled = (enabled !== undefined) ? enabled : true; }; $AA.EnableAction.prototype = { doAction: function() { var element = this.get_target(); if (element) { element.disabled = !this._enabled; } }, get_enabled: function() { return this._enabled; }, set_enabled: function(value) { value = this._getBoolean(value); if (this._enabled != value) { this._enabled = value; this.raisePropertyChanged("enabled"); } } }; $AA.EnableAction.registerClass("AjaxControlToolkit.Animation.EnableAction", $AA.Action); $AA.registerAnimation("enableAction", $AA.EnableAction); $AA.HideAction = function(target, duration, fps, visible) { $AA.HideAction.initializeBase(this, [target, duration, fps]); this._visible = visible; }; $AA.HideAction.prototype = { doAction: function() { var element = this.get_target(); if (element) { $common.setVisible(element, this._visible); } }, get_visible: function() { return this._visible; }, set_visible: function(value) { if (this._visible != value) { this._visible = value; this.raisePropertyChanged("visible"); } } }; $AA.HideAction.registerClass("AjaxControlToolkit.Animation.HideAction", $AA.Action); $AA.registerAnimation("hideAction", $AA.HideAction); $AA.StyleAction = function(target, duration, fps, attribute, value) { $AA.StyleAction.initializeBase(this, [target, duration, fps]); this._attribute = attribute; this._value = value; }; $AA.StyleAction.prototype = { doAction: function() { var element = this.get_target(); if (element) { element.style[this._attribute] = this._value; } }, get_attribute: function() { return this._attribute; }, set_attribute: function(value) { if (this._attribute != value) { this._attribute = value; this.raisePropertyChanged("attribute"); } }, get_value: function() { return this._value; }, set_value: function(value) { if (this._value != value) { this._value = value; this.raisePropertyChanged("value"); } } }; $AA.StyleAction.registerClass("AjaxControlToolkit.Animation.StyleAction", $AA.Action); $AA.registerAnimation("styleAction", $AA.StyleAction); $AA.OpacityAction = function(target, duration, fps, opacity) { $AA.OpacityAction.initializeBase(this, [target, duration, fps]); this._opacity = opacity; }; $AA.OpacityAction.prototype = { doAction: function() { var element = this.get_target(); if (element) { $common.setElementOpacity(element, this._opacity); } }, get_opacity: function() { return this._opacity; }, set_opacity: function(value) { value = this._getFloat(value); if (this._opacity != value) { this._opacity = value; this.raisePropertyChanged("opacity"); } } }; $AA.OpacityAction.registerClass("AjaxControlToolkit.Animation.OpacityAction", $AA.Action); $AA.registerAnimation("opacityAction", $AA.OpacityAction); $AA.ScriptAction = function(target, duration, fps, script) { $AA.ScriptAction.initializeBase(this, [target, duration, fps]); this._script = script; }; $AA.ScriptAction.prototype = { doAction: function() { try { eval(this._script); } catch (ex) { } }, get_script: function() { return this._script; }, set_script: function(value) { if (this._script != value) { this._script = value; this.raisePropertyChanged("script"); } } }; $AA.ScriptAction.registerClass("AjaxControlToolkit.Animation.ScriptAction", $AA.Action); $AA.registerAnimation("scriptAction", $AA.ScriptAction); Type.registerNamespace("AjaxControlToolkit"); AjaxControlToolkit.BehaviorBase = function(element) { AjaxControlToolkit.BehaviorBase.initializeBase(this, [element]); this._clientStateFieldID = null; this._pageRequestManager = null; this._partialUpdateBeginRequestHandler = null; this._partialUpdateEndRequestHandler = null; }; AjaxControlToolkit.BehaviorBase.prototype = { initialize: function() { AjaxControlToolkit.BehaviorBase.callBaseMethod(this, "initialize"); }, dispose: function() { AjaxControlToolkit.BehaviorBase.callBaseMethod(this, "dispose"); if (this._pageRequestManager) { if (this._partialUpdateBeginRequestHandler) { this._pageRequestManager.remove_beginRequest(this._partialUpdateBeginRequestHandler); this._partialUpdateBeginRequestHandler = null; } if (this._partialUpdateEndRequestHandler) { this._pageRequestManager.remove_endRequest(this._partialUpdateEndRequestHandler); this._partialUpdateEndRequestHandler = null; } this._pageRequestManager = null; } }, get_ClientStateFieldID: function() { return this._clientStateFieldID; }, set_ClientStateFieldID: function(value) { if (this._clientStateFieldID != value) { this._clientStateFieldID = value; this.raisePropertyChanged("ClientStateFieldID"); } }, get_ClientState: function() { if (this._clientStateFieldID) { var input = document.getElementById(this._clientStateFieldID); if (input) { return input.value; } } return null; }, set_ClientState: function(value) { if (this._clientStateFieldID) { var input = document.getElementById(this._clientStateFieldID); if (input) { input.value = value; } } }, registerPartialUpdateEvents: function() { if (Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) { this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); if (this._pageRequestManager) { this._partialUpdateBeginRequestHandler = Function.createDelegate(this, this._partialUpdateBeginRequest); this._pageRequestManager.add_beginRequest(this._partialUpdateBeginRequestHandler); this._partialUpdateEndRequestHandler = Function.createDelegate(this, this._partialUpdateEndRequest); this._pageRequestManager.add_endRequest(this._partialUpdateEndRequestHandler); } } }, _partialUpdateBeginRequest: function(sender, beginRequestEventArgs) { }, _partialUpdateEndRequest: function(sender, endRequestEventArgs) { } }; AjaxControlToolkit.BehaviorBase.registerClass("AjaxControlToolkit.BehaviorBase", Sys.UI.Behavior); AjaxControlToolkit.DynamicPopulateBehaviorBase = function(element) { AjaxControlToolkit.DynamicPopulateBehaviorBase.initializeBase(this, [element]); this._DynamicControlID = null; this._DynamicContextKey = null; this._DynamicServicePath = null; this._DynamicServiceMethod = null; this._cacheDynamicResults = false; this._dynamicPopulateBehavior = null; this._populatingHandler = null; this._populatedHandler = null; }; AjaxControlToolkit.DynamicPopulateBehaviorBase.prototype = { initialize: function() { AjaxControlToolkit.DynamicPopulateBehaviorBase.callBaseMethod(this, "initialize"); this._populatingHandler = Function.createDelegate(this, this._onPopulating); this._populatedHandler = Function.createDelegate(this, this._onPopulated); }, dispose: function() { if (this._populatedHandler) { if (this._dynamicPopulateBehavior) { this._dynamicPopulateBehavior.remove_populated(this._populatedHandler); } this._populatedHandler = null; } if (this._populatingHandler) { if (this._dynamicPopulateBehavior) { this._dynamicPopulateBehavior.remove_populating(this._populatingHandler); } this._populatingHandler = null; } if (this._dynamicPopulateBehavior) { this._dynamicPopulateBehavior.dispose(); this._dynamicPopulateBehavior = null; } AjaxControlToolkit.DynamicPopulateBehaviorBase.callBaseMethod(this, "dispose"); }, populate: function(contextKeyOverride) { if (this._dynamicPopulateBehavior && (this._dynamicPopulateBehavior.get_element() != $get(this._DynamicControlID))) { this._dynamicPopulateBehavior.dispose(); this._dynamicPopulateBehavior = null; } if (!this._dynamicPopulateBehavior && this._DynamicControlID && this._DynamicServiceMethod) { this._dynamicPopulateBehavior = $create(AjaxControlToolkit.DynamicPopulateBehavior, { "id": this.get_id() + "_DynamicPopulateBehavior", "ContextKey": this._DynamicContextKey, "ServicePath": this._DynamicServicePath, "ServiceMethod": this._DynamicServiceMethod, "cacheDynamicResults": this._cacheDynamicResults }, null, null, $get(this._DynamicControlID)); this._dynamicPopulateBehavior.add_populating(this._populatingHandler); this._dynamicPopulateBehavior.add_populated(this._populatedHandler); } if (this._dynamicPopulateBehavior) { this._dynamicPopulateBehavior.populate(contextKeyOverride ? contextKeyOverride : this._DynamicContextKey); } }, _onPopulating: function(sender, eventArgs) { this.raisePopulating(eventArgs); }, _onPopulated: function(sender, eventArgs) { this.raisePopulated(eventArgs); }, get_dynamicControlID: function() { return this._DynamicControlID; }, get_DynamicControlID: this.get_dynamicControlID, set_dynamicControlID: function(value) { if (this._DynamicControlID != value) { this._DynamicControlID = value; this.raisePropertyChanged("dynamicControlID"); this.raisePropertyChanged("DynamicControlID"); } }, set_DynamicControlID: this.set_dynamicControlID, get_dynamicContextKey: function() { return this._DynamicContextKey; }, get_DynamicContextKey: this.get_dynamicContextKey, set_dynamicContextKey: function(value) { if (this._DynamicContextKey != value) { this._DynamicContextKey = value; this.raisePropertyChanged("dynamicContextKey"); this.raisePropertyChanged("DynamicContextKey"); } }, set_DynamicContextKey: this.set_dynamicContextKey, get_dynamicServicePath: function() { return this._DynamicServicePath; }, get_DynamicServicePath: this.get_dynamicServicePath, set_dynamicServicePath: function(value) { if (this._DynamicServicePath != value) { this._DynamicServicePath = value; this.raisePropertyChanged("dynamicServicePath"); this.raisePropertyChanged("DynamicServicePath"); } }, set_DynamicServicePath: this.set_dynamicServicePath, get_dynamicServiceMethod: function() { return this._DynamicServiceMethod; }, get_DynamicServiceMethod: this.get_dynamicServiceMethod, set_dynamicServiceMethod: function(value) { if (this._DynamicServiceMethod != value) { this._DynamicServiceMethod = value; this.raisePropertyChanged("dynamicServiceMethod"); this.raisePropertyChanged("DynamicServiceMethod"); } }, set_DynamicServiceMethod: this.set_dynamicServiceMethod, get_cacheDynamicResults: function() { return this._cacheDynamicResults; }, set_cacheDynamicResults: function(value) { if (this._cacheDynamicResults != value) { this._cacheDynamicResults = value; this.raisePropertyChanged("cacheDynamicResults"); } }, add_populated: function(handler) { this.get_events().addHandler("populated", handler); }, remove_populated: function(handler) { this.get_events().removeHandler("populated", handler); }, raisePopulated: function(arg) { var handler = this.get_events().getHandler("populated"); if (handler) { handler(this, arg); } }, add_populating: function(handler) { this.get_events().addHandler("populating", handler); }, remove_populating: function(handler) { this.get_events().removeHandler("populating", handler); }, raisePopulating: function(eventArgs) { var handler = this.get_events().getHandler("populating"); if (handler) { handler(this, eventArgs); } } }; AjaxControlToolkit.DynamicPopulateBehaviorBase.registerClass("AjaxControlToolkit.DynamicPopulateBehaviorBase", AjaxControlToolkit.BehaviorBase); AjaxControlToolkit.ControlBase = function(element) { AjaxControlToolkit.ControlBase.initializeBase(this, [element]); this._clientStateField = null; this._callbackTarget = null; this._onsubmit$delegate = Function.createDelegate(this, this._onsubmit); this._oncomplete$delegate = Function.createDelegate(this, this._oncomplete); this._onerror$delegate = Function.createDelegate(this, this._onerror); }; AjaxControlToolkit.ControlBase.prototype = { initialize: function() { AjaxControlToolkit.ControlBase.callBaseMethod(this, "initialize"); if (this._clientStateField) { this.loadClientState(this._clientStateField.value); } if (typeof (Sys.WebForms) !== "undefined" && typeof (Sys.WebForms.PageRequestManager) !== "undefined") { Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate); } else { $addHandler(document.forms[0], "submit", this._onsubmit$delegate); } }, dispose: function() { if (typeof (Sys.WebForms) !== "undefined" && typeof (Sys.WebForms.PageRequestManager) !== "undefined") { Array.remove(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate); } else { $removeHandler(document.forms[0], "submit", this._onsubmit$delegate); } AjaxControlToolkit.ControlBase.callBaseMethod(this, "dispose"); }, findElement: function(id) { return $get(this.get_id() + "_" + id.split(":").join("_")); }, get_clientStateField: function() { return this._clientStateField; }, set_clientStateField: function(value) { if (this.get_isInitialized()) { throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_CannotSetClientStateField); } if (this._clientStateField != value) { this._clientStateField = value; this.raisePropertyChanged("clientStateField"); } }, loadClientState: function(value) { }, saveClientState: function() { return null; }, _invoke: function(name, args, cb) { if (!this._callbackTarget) { throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_ControlNotRegisteredForCallbacks); } if (typeof (WebForm_DoCallback) === "undefined") { throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_PageNotRegisteredForCallbacks); } var ar = []; for (var i = 0; i < args.length; i++) { ar[i] = args[i]; } var clientState = this.saveClientState(); if (clientState != null && !String.isInstanceOfType(clientState)) { throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_InvalidClientStateType); } var payload = Sys.Serialization.JavaScriptSerializer.serialize({ name: name, args: ar, state: this.saveClientState() }); WebForm_DoCallback(this._callbackTarget, payload, this._oncomplete$delegate, cb, this._onerror$delegate, true); }, _oncomplete: function(result, context) { result = Sys.Serialization.JavaScriptSerializer.deserialize(result); if (result.error) { throw Error.create(result.error); } this.loadClientState(result.state); context(result.result); }, _onerror: function(message, context) { throw Error.create(message); }, _onsubmit: function() { if (this._clientStateField) { this._clientStateField.value = this.saveClientState(); } return true; } }; AjaxControlToolkit.ControlBase.registerClass("AjaxControlToolkit.ControlBase", Sys.UI.Control); 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 = -1; 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);
