package {
public class EventManager{
private static var interestsList:Object = new Object();
public static function registerInterests(component:*, interests:Array):void{
for(var i:int = 0; i < interests.length; i ++){
if(EventManager.interestsList[interests[i]] is Array){
EventManager.interestsList[interests[i]].push(component);
}
else{EventManager.interestsList[interests[i]] = new Array(component);}
}
}
public static function unregisterInterests(component:*, interests:Array):void{
for(var i:int = 0; i < interests.length; i ++){
if(EventManager.interestsList[interests[i]] is Array){
var interestIndex:int = EventManager.interestsList[interests[i]].indexOf(component);
if(interestIndex != -1){
EventManager.interestsList[interests[i]].splice(interestIndex, 1);
}
}
}
}
public static function fireEvent(event:String, args:Object = null):void{
if(EventManager.interestsList[event] is Array){
for(var i:int = 0; i < EventManager.interestsList[event].length; i ++){
if(EventManager.interestsList[event][i] != null && EventManager.interestsList[event][i].catchEvent != null){
EventManager.interestsList[event][i].catchEvent(event, args);
}
else{
trace("WARNING!: catchEvent Function not found on " + EventManager.interestsList[event][i]);
}
}
}
}
}
}