﻿Type.registerNamespace('InMotionFeatures');InMotionFeatures.MTDependentListBoxes = function(e) {
InMotionFeatures.MTDependentListBoxes.initializeBase(this, [e]);this.masterListboxID = null;this.masterListbox = null;this.masterListboxChangeHandler = null;this.loadingMessage = null;this.selectedValue = null;this.parameterName = null;this.lastParameterValues = null;this.timeoutID = null;this.servicePath = null;this.serviceMethod = null;}
InMotionFeatures.MTDependentListBoxes.prototype = {
initialize : function()
{
InMotionFeatures.MTDependentListBoxes.callBaseMethod(this, 'initialize');if (this.masterListboxID)
{
this.masterListbox = $get(this.masterListboxID);if (this.masterListbox)
{
this.masterListboxChangeHandler = Function.createDelegate(this, this.onMasterListboxChange);$addHandler(this.masterListbox, "change", this.masterListboxChangeHandler);if (!this.masterListbox.childDropDown)
this.masterListbox.childDropDown = new Array();this.masterListbox.childDropDown.push(this);}
}
},
dispose : function()
{
if (this.masterListboxChangeHandler)
{
if (this.masterListbox)
$removeHandler(this.masterListbox, "change", this.masterListboxChangeHandler);this.masterListboxChangeHandler = null;}
InMotionFeatures.MTDependentListBoxes.callBaseMethod(this, 'dispose');},
onMasterListboxChange : function(evt, inInit)
{
if (!this.get_isInitialized() || !this.masterListboxID || !this.masterListbox || this.masterListbox.selectedIndex == -1) return;this.raiseStart();var prmValue = this.masterListbox.options[this.masterListbox.selectedIndex].value;if (this.lastParameterValues == prmValue) return;this.lastParameterValues = prmValue;var ctrl = this.get_element();if (ctrl.selectedIndex > 0)
this.selectedValue = ctrl.options[ctrl.selectedIndex].value;while (0 < ctrl.options.length)
ctrl.remove(0);if (this.loadingMessage)
ctrl.options[ctrl.options.length] = new Option(this.loadingMessage, "");ctrl.disabled = true;if (this.servicePath && this.serviceMethod)
{
var params = { parameterName : this.parameterName, parameterValue : prmValue};Sys.Net.WebServiceProxy.invoke(this.servicePath, this.serviceMethod, false, params, Function.createDelegate(this, this.onServiceComplete), Function.createDelegate(this, this.raiseFailure));}
this.raiseFinish();},
onServiceComplete : function(result, context, methodName)
{
if (!this.get_isInitialized()) return;var ctrl = this.get_element();while (0 < ctrl.options.length)
ctrl.remove(0);if (result && result.length > 0)
{
var selIndex = -1;for (var i = 0;i < result.length;i++)
{
ctrl.options[ctrl.options.length] = new Option(result[i].name, result[i].value);if (result[i].value == this.selectedValue)
{
ctrl.options[ctrl.options.length - 1].selected = true;selIndex = i;}
else if (result[i].isDefaultValue && selIndex == -1)
{
selIndex = i;}
}
ctrl.disabled = false;if (selIndex == -1)
{
ctrl.options[0].selected = true;this.selectedValue = '';}
else
{
ctrl.options[selIndex].selected = true;this.selectedValue = ctrl.options[selIndex].value;}
if (this.timeoutID)
window.clearTimeout(this.timeoutID);this.timeoutID = window.setTimeout( 
function ()
{
if (document.createEvent) {
var onchangeEvent = document.createEvent('HTMLEvents');onchangeEvent.initEvent('change', true, false);ctrl.dispatchEvent(onchangeEvent);} else if( document.createEventObject ) {
ctrl.fireEvent('onchange');}
}, 300);}
else
{
ctrl.disabled = true;this.selectedValue = '';}
this.raiseSuccess();},
get_masterListboxID : function()
{
return this.masterListboxID;},
set_masterListboxID : function(value)
{
this.masterListboxID = value;},
get_parameterName : function()
{
return this.parameterName;},
set_parameterName : function(value)
{
this.parameterName = value;},
get_loadingMessage : function()
{
return this.loadingMessage;},
set_loadingMessage : function(value)
{
this.loadingMessage = value;},
get_servicePath : function()
{
return this.servicePath;},
set_servicePath : function(value)
{
this.servicePath = value;},
get_serviceMethod : function()
{
return this.serviceMethod;},
set_serviceMethod : function(value)
{
this.serviceMethod = value;},
add_start : function(handler)
{
this.get_events().addHandler("start", handler);},
remove_start : function(handler) {
this.get_events().removeHandler("start", handler);},
raiseStart : function()
{
var eh = this.get_events().getHandler("start");if (eh)
eh(this, Sys.EventArgs.Empty);},
add_success : function(handler)
{
this.get_events().addHandler("success", handler);},
remove_success : function(handler) {
this.get_events().removeHandler("success", handler);},
raiseSuccess : function()
{
var eh = this.get_events().getHandler("success");if (eh)
eh(this, Sys.EventArgs.Empty);},
add_failure : function(handler)
{
this.get_events().addHandler("failure", handler);},
remove_failure : function(handler) {
this.get_events().removeHandler("failure", handler);},
raiseFailure : function()
{
var eh = this.get_events().getHandler("failure");if (eh)
eh(this, Sys.EventArgs.Empty);},
add_finish : function(handler)
{
this.get_events().addHandler("finish", handler);},
remove_finish : function(handler) {
this.get_events().removeHandler("finish", handler);},
raiseFinish : function()
{
var eh = this.get_events().getHandler("finish");if (eh)
eh(this, Sys.EventArgs.Empty);}
}
InMotionFeatures.MTDependentListBoxes.registerClass('InMotionFeatures.MTDependentListBoxes', Sys.UI.Behavior);
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();