if(typeof(Sima)=="undefined") Sima={};

Sima.apply=function(func, args, obj){
  if(!func) return;
  if(func.apply) {
    func.apply(obj, args);
  } else {
    var strArgs = '';
    var j;
    for (j=0;j<args.length;j++){
      strArgs+=', args['+j+']';
    }
    strArgs=strArgs.substring(2);
    if(obj) {
      obj.$$tmp$$=func;
      eval('obj.$$tmp$$('+strArgs+');');
      delete obj.$$tmp$$;
    } else {
      eval('func('+strArgs+');');
    }
  }
}

Sima.EventListenerList=function(){this.listeners=new Array();}
pro=Sima.EventListenerList.prototype;
pro.add=function(func, obj){
  this.listeners[this.listeners.length] = {func:func, obj:obj};
};
pro.remove=function(func, obj){};
pro.fire=function(args){
  for(var i=0;i<this.listeners.length;i++) {
    var l = this.listeners[i];
      Sima.apply(l.func, args, l.obj);
  }
};