Type.registerNamespace('AjaxControlToolkit');AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs = function(oldValue, newValue) { AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs.initializeBase(this);this._oldValue = oldValue;this._newValue = newValue;} AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs.prototype = { get_oldValue : function() { return this._oldValue;}, get_newValue : function() { return this._newValue;} } AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs.registerClass('AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs', Sys.EventArgs);AjaxControlToolkit.CascadingDropDownBehavior = function(e) { AjaxControlToolkit.CascadingDropDownBehavior.initializeBase(this, [e]);this._parentControlID = null;this._category = null;this._promptText = null;this._loadingText = null;this._promptValue = null;this._emptyValue = null;this._emptyText = null;this._servicePath = null;this._serviceMethod = null;this._contextKey = null;this._useContextKey = false;this._parentElement = null;this._changeHandler = null;this._parentChangeHandler = null;this._lastParentValues = null;this._selectedValue = null;} AjaxControlToolkit.CascadingDropDownBehavior.prototype = { initialize : function() { AjaxControlToolkit.CascadingDropDownBehavior.callBaseMethod(this, 'initialize');$common.prepareHiddenElementForATDeviceUpdate();var e = this.get_element();this._clearItems();e.CascadingDropDownCategory = this._category;this._changeHandler = Function.createDelegate(this, this._onChange);$addHandler(e, "change",this._changeHandler);if (this._parentControlID) { this._parentElement = $get(this._parentControlID);Sys.Debug.assert(this._parentElement != null, String.format(AjaxControlToolkit.Resources.CascadingDropDown_NoParentElement, this._parentControlID));if (this._parentElement) { e.CascadingDropDownParentControlID = this._parentControlID;this._parentChangeHandler = Function.createDelegate(this, this._onParentChange);$addHandler(this._parentElement, "change", this._parentChangeHandler);if (!this._parentElement.childDropDown) { this._parentElement.childDropDown = new Array();} this._parentElement.childDropDown.push(this);} } this._onParentChange(null, true);}, dispose : function() { var e = this.get_element();if (this._changeHandler) { $removeHandler(e, "change", this._changeHandler);this._changeHandler = null;} if (this._parentChangeHandler) { if (this._parentElement) { $removeHandler(this._parentElement, "change", this._parentChangeHandler);} this._parentChangeHandler = null;} AjaxControlToolkit.CascadingDropDownBehavior.callBaseMethod(this, 'dispose');}, _clearItems : function() { var e = this.get_element();while (0 < e.options.length) { e.remove(0);} }, _isPopulated : function() { var items = this.get_element().options.length;if (this._promptText) { return items > 1;} else { return items > 0;} }, _setOptions : function(list, inInit, gettingList) { if (!this.get_isInitialized()) { return;} var e = this.get_element();this._clearItems();var headerText;var headerValue = "";if (gettingList && this._loadingText) { headerText = this._loadingText;} else if (!gettingList && list && (0 == list.length) && (null != this._emptyText)) { headerText = this._emptyText;if (this._emptyValue) { headerValue = this._emptyValue;} } else if (this._promptText) { headerText = this._promptText;if (this._promptValue) { headerValue = this._promptValue;} } if (headerText) { var optionElement = new Option(headerText, headerValue);e.options[e.options.length] = optionElement;} var selectedValueOption = null;var defaultIndex = -1;if (list) { for (i = 0 ;i < list.length ;i++) { var listItemName = list[i].name;var listItemValue = list[i].value;if (list[i].isDefaultValue) { defaultIndex = i;if (this._promptText) { defaultIndex++;} } var optionElement = new Option(listItemName, listItemValue);if (listItemValue == this._selectedValue) { selectedValueOption = optionElement;} e.options[e.options.length] = optionElement;} if (selectedValueOption) { selectedValueOption.selected = true;} } if (selectedValueOption) { this.set_SelectedValue(e.options[e.selectedIndex].value, e.options[e.selectedIndex].text);} else if (!selectedValueOption && defaultIndex != -1) { e.options[defaultIndex].selected = true;this.set_SelectedValue(e.options[defaultIndex].value, e.options[defaultIndex].text);} else if (!inInit && !selectedValueOption && !gettingList && !this._promptText && (e.options.length > 0)) { this.set_SelectedValue(e.options[0].value, e.options[0].text);} else if (!inInit && !selectedValueOption && !gettingList) { this.set_SelectedValue('', '');} if (e.childDropDown && !gettingList) { for(i = 0;i < e.childDropDown.length;i++) { e.childDropDown[i]._onParentChange();} } else { if (list && (Sys.Browser.agent !== Sys.Browser.Safari) && (Sys.Browser.agent !== Sys.Browser.Opera)) { if (document.createEvent) { var onchangeEvent = document.createEvent('HTMLEvents');onchangeEvent.initEvent('change', true, false);this.get_element().dispatchEvent(onchangeEvent);} else if( document.createEventObject ) { this.get_element().fireEvent('onchange');} } } if (this._loadingText || this._promptText || this._emptyText) { e.disabled = !list || (0 == list.length);} this.raisePopulated(Sys.EventArgs.Empty);}, _onChange : function() { if (!this._isPopulated()) { return;} var e = this.get_element();if ((-1 != e.selectedIndex) && !(this._promptText && (0 == e.selectedIndex))) { this.set_SelectedValue(e.options[e.selectedIndex].value, e.options[e.selectedIndex].text);} else { this.set_SelectedValue('', '');} }, _onParentChange : function(evt, inInit) { var e = this.get_element();var knownCategoryValues = '';var parentControlID = this._parentControlID;while (parentControlID) { var parentElement = $get(parentControlID);if (parentElement && (-1 != parentElement.selectedIndex)){ var selectedValue = parentElement.options[parentElement.selectedIndex].value;if (selectedValue && selectedValue != "") { knownCategoryValues = parentElement.CascadingDropDownCategory + ':' + selectedValue + ';' + knownCategoryValues;parentControlID = parentElement.CascadingDropDownParentControlID;continue;} } break;} if (knownCategoryValues != '' && this._lastParentValues == knownCategoryValues) { return;} this._lastParentValues = knownCategoryValues;if (knownCategoryValues == '' && this._parentControlID) { this._setOptions(null, inInit);return;} this._setOptions(null, inInit, true);if (this._servicePath && this._serviceMethod) { var eventArgs = new Sys.CancelEventArgs();this.raisePopulating(eventArgs);if (eventArgs.get_cancel()) { return;} var params = { knownCategoryValues:knownCategoryValues, category:this._category };if (this._useContextKey) { params.contextKey = this._contextKey;} Sys.Net.WebServiceProxy.invoke(this._servicePath, this._serviceMethod, false, params, Function.createDelegate(this, this._onMethodComplete), Function.createDelegate(this, this._onMethodError));$common.updateFormToRefreshATDeviceBuffer();} }, _onMethodComplete : function(result, userContext, methodName) { this._setOptions(result);}, _onMethodError : function(webServiceError, userContext, methodName) { if (webServiceError.get_timedOut()) { this._setOptions( [ this._makeNameValueObject(AjaxControlToolkit.Resources.CascadingDropDown_MethodTimeout) ] );} else { this._setOptions( [ this._makeNameValueObject(String.format(AjaxControlToolkit.Resources.CascadingDropDown_MethodError, webServiceError.get_statusCode())) ] );} }, _makeNameValueObject : function(message) { return { 'name': message, 'value': message };}, get_ParentControlID : function() { return this._parentControlID;}, set_ParentControlID : function(value) { if (this._parentControlID != value) { this._parentControlID = value;this.raisePropertyChanged('ParentControlID');} }, get_Category : function() { return this._category;}, set_Category : function(value) { if (this._category != value) { this._category = value;this.raisePropertyChanged('Category');} }, get_PromptText : function() { return this._promptText;}, set_PromptText : function(value) { if (this._promptText != value) { this._promptText = value;this.raisePropertyChanged('PromptText');} }, get_PromptValue : function() { return this._promptValue;}, set_PromptValue : function(value) { if (this._promptValue != value) { this._promptValue = value;this.raisePropertyChanged('PromptValue');} }, get_EmptyText : function() { return this._emptyText;}, set_EmptyText : function(value) { if (this._emptyText != value) { this._emptyText = value;this.raisePropertyChanged('EmptyText');} }, get_EmptyValue : function() { return this._emptyValue;}, set_EmptyValue : function(value) { if (this._emptyValue != value) { this._emptyValue = value;this.raisePropertyChanged('EmptyValue');} }, get_LoadingText : function() { return this._loadingText;}, set_LoadingText : function(value) { if (this._loadingText != value) { this._loadingText = value;this.raisePropertyChanged('LoadingText');} }, get_SelectedValue : function() { return this._selectedValue;}, set_SelectedValue : function(value, text) { if (this._selectedValue != value) { if (!text) { var i = value.indexOf(':::');if (-1 != i) { text = value.slice(i + 3);value = value.slice(0, i);} } var oldValue = this._selectedValue;this._selectedValue = value;this.raisePropertyChanged('SelectedValue');this.raiseSelectionChanged(new AjaxControlToolkit.CascadingDropDownSelectionChangedEventArgs(oldValue, value));} AjaxControlToolkit.CascadingDropDownBehavior.callBaseMethod(this, 'set_ClientState', [ this._selectedValue+':::'+text ]);}, get_ServicePath : function() { return this._servicePath;}, set_ServicePath : function(value) { if (this._servicePath != value) { this._servicePath = value;this.raisePropertyChanged('ServicePath');} }, get_ServiceMethod : function() { return this._serviceMethod;}, set_ServiceMethod : function(value) { if (this._serviceMethod != value) { this._serviceMethod = value;this.raisePropertyChanged('ServiceMethod');} }, get_contextKey : function() { return this._contextKey;}, set_contextKey : function(value) { if (this._contextKey != value) { this._contextKey = value;this.set_useContextKey(true);this.raisePropertyChanged('contextKey');} }, get_useContextKey : function() { return this._useContextKey;}, set_useContextKey : function(value) { if (this._useContextKey != value) { this._useContextKey = value;this.raisePropertyChanged('useContextKey');} }, add_selectionChanged : function(handler) { this.get_events().addHandler('selectionChanged', handler);}, remove_selectionChanged : function(handler) { this.get_events().removeHandler('selectionChanged', handler);}, raiseSelectionChanged : function(eventArgs) { var handler = this.get_events().getHandler('selectionChanged');if (handler) { handler(this, eventArgs);} }, 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);} }, add_populated : function(handler) { this.get_events().addHandler('populated', handler);}, remove_populated : function(handler) { this.get_events().removeHandler('populated', handler);}, raisePopulated : function(eventArgs) { var handler = this.get_events().getHandler('populated');if (handler) { handler(this, eventArgs);} } } AjaxControlToolkit.CascadingDropDownBehavior.registerClass('AjaxControlToolkit.CascadingDropDownBehavior', AjaxControlToolkit.BehaviorBase);