home *** CD-ROM | disk | FTP | other *** search
- class com.event.observable
- {
- var length;
- var pop;
- function observable()
- {
- var _loc3_ = this;
- _loc3_.c_arrListeners = new Array();
- Array.prototype.popAt = function(_iNum)
- {
- var _loc3_ = new Array();
- var _loc2_ = this.length;
- if(_iNum < _loc2_)
- {
- var _loc1_ = 0;
- while(_loc1_ < _loc2_)
- {
- if(_loc1_ != _iNum)
- {
- _loc3_.push(this[_loc1_]);
- }
- _loc1_ = _loc1_ + 1;
- }
- _loc1_ = 0;
- while(_loc1_ < _loc2_)
- {
- this[_loc1_] = _loc3_[_loc1_];
- _loc1_ = _loc1_ + 1;
- }
- this.pop();
- }
- };
- }
- function addListener(_objListener)
- {
- var _loc1_ = this;
- var _loc2_ = _objListener;
- _loc1_.removeListener(_loc2_);
- _loc2_._name = new String("ID" + _loc1_.c_iNameCounter++);
- _loc1_.c_arrListeners.push(_loc2_);
- }
- function removeListener(_objListener)
- {
- var _loc2_ = this;
- var _loc3_ = _objListener;
- var _loc1_ = 0;
- while(_loc1_ < _loc2_.c_arrListeners.length)
- {
- if(_loc3_._name == _loc2_.c_arrListeners[_loc1_]._name)
- {
- _loc2_.c_arrListeners.popAt(_loc1_);
- break;
- }
- _loc1_ = _loc1_ + 1;
- }
- }
- function broadcastEvent(_strFunction, _objValue)
- {
- var _loc2_ = this;
- var _loc3_ = _strFunction;
- var _loc1_ = 0;
- while(_loc1_ < _loc2_.c_arrListeners.length)
- {
- _loc2_.c_arrListeners[_loc1_][_loc3_].call(_loc2_.c_arrListeners[_loc1_],_objValue,_loc2_);
- _loc1_ = _loc1_ + 1;
- }
- }
- }
-