
Type.registerNamespace("CZScripts");

CZScripts.ExclusiveEditors = function() {    
    CZScripts.ExclusiveEditors.initializeBase(this);   

    this.EditorList=[];  
    
    // create delegate for event, so we get the right this pointer
    this.delegate = Function.createDelegate(this, this.onUpdated);
}

CZScripts.ExclusiveEditors.prototype = {

   initialize: function() 
    {       
      CZScripts.ExclusiveEditors.callBaseMethod(this, 'initialize');
      this.subscribe();
   },
   
       // Release resources before control is disposed.
   dispose: function() {   
      this.unsubscribe();
      CZScripts.ExclusiveEditors.callBaseMethod(this, 'dispose');
   },

   subscribe: function()
   {
      for (var i=0; i<this.EditorList.length; i++)
      {
         $find(this.EditorList[i]).add_updated(this.delegate);
      }                 
   },
   
   unsubscribe: function()
   {
      for (var i=0; i<this.EditorList.length; i++)
      {
         var ed = $find(this.EditorList[i]);
         if (ed != null)
            ed.remove_updated(this.delegate);
      }                    
   },
    
   get_Editors: function() { return ""; },
   set_Editors: function(value)
   {
     this.EditorList= value.split(";");
   },
    
   onUpdated: function(sender)
   {
      // the code within ends up triggering update events to which we're subscribed 
      // to avoid infinite recursion, we need to temporarily unsubscribe.
      this.unsubscribe();
      for (var i=0; i<this.EditorList.length; i++)
      {
         var ed = $find(this.EditorList[i]);
         if (sender != ed)
         {
            ed.clearInput();
         }
      }
      this.subscribe();
   }
}

CZScripts.ExclusiveEditors.registerClass('CZScripts.ExclusiveEditors', Sys.Component);








