function aspxSchedulerResNavCmd(name, cmdId, params) {
 var resourceNavigator = aspxGetControlCollection().Get(name);
 if (_aspxIsExists(resourceNavigator))
  resourceNavigator.ExecuteCallbackCommand(cmdId, params);
}
function aspxSchedulerResNavDecorateCombo(name) {
 var resourceNavigator = aspxGetControlCollection().Get(name);
 if (_aspxIsExists(resourceNavigator))
  resourceNavigator.DecorateCombo();
}
ASPxClientSchedulerResourceNavigator = _aspxCreateClass(ASPxClientSchedulerRelatedControlBase, {
 constructor: function(name) {
  this.constructor.prototype.constructor.call(this, name);
  this.visibleResCount = 0; 
  this.savedIndex = -1; 
 },
 Initialize: function() { 
  this.DecorateCombo();  
 },
 RegisterScriptsRestartHandler: function() {
  var func = new Function("aspxSchedulerResNavDecorateCombo('" + this.name + "');");
  _aspxAddScriptsRestartHandler(this.name, func);
 },
 ProcessCallbackResult: function(id, html, params) {
  ASPxRelatedControlManager.ProcessCallbackResultDefault(id, html, "");
  this.visibleResCount = params;
 },
 GetCombo: function() {
  return aspxGetControlCollection().Get(this.name + "_cmb");
 },
 DecorateCombo: function() {
  if(this.visibleResCount < 2)
   return;
  var combo = this.GetCombo();
  if(_aspxIsExists(combo)) {
   var bag = [ ];
   var item;
   var startIndex = combo.GetSelectedIndex();  
   if(startIndex < 0)
    startIndex = this.savedIndex;
   else
    this.savedIndex = startIndex;
   for(var i = 0; i < this.visibleResCount; i++) {
    item = combo.GetItem(startIndex + i);
    if(_aspxIsExists(item))
     bag.push(item.text);
   }
   if (combo.GetInputElement() != null)
    ASPxClientTextEdit.prototype.SetValue.call(combo, bag.join(", "));
  }
 },
 ExecuteCallbackCommand: function(cmdId, params) {
  var schedulerControl = aspxGetControlCollection().Get(this.schedulerControlId);
  if (_aspxIsExists(schedulerControl))
   schedulerControl.RaiseCallback(cmdId + "|" + params);
 }
});

