/**
 * Funkcjonalnosc pozwalajaca wprowadzic dodatkowe zdarzenia takie jak 'onMoveEnd' slidera. 
 * Obiekt kontrolera przechowuje tablice listenerow, ktore reaguja na wystapienia customowego zdarzenia.
 */
CustomEvent = {};
CustomEvent.Events = {};
CustomEvent.Events.Base = Class.create();
CustomEvent.Events.Base.prototype = {
 initialize : function(){
  this.type = "CustomEvent.Events.Base";
 }
}
CustomEvent.EventController = Class.create();
CustomEvent.EventController.prototype = {
 initialize: function(){
  this.listeners = $A([]);
 },
 /**
  * Dodaje listenera do tablicy
  */
 addEventListener: function(n, f){
  this.listeners.push({name: n, callback: f});
 },
 
 /**
  * Usuwa listenera z tablicy
  */
 removeEventListener: function(n, f){
  this.listeners = this.listeners.without({name: n, callback: f});
 },
 
 /**
  * Informuje odpowiednie listenery o zajsciu zdarzenia i wykonuje metody odpowiedzialne
  * za ich obsluzenie.
  */
 dispatchEvent: function(n, e){
  for(var x=0; x<this.listeners.length; x++){
   if(this.listeners[x].name == n){
    this.listeners[x].callback(e);
   }
  }
 }
}
var EventController = new CustomEvent.EventController();