﻿var EventHandler=Class.create();EventHandler.prototype={gi:[],wa:function(listener){if(typeof(listener)=="function"){this.gi.push(listener);}else{throw Exceptions.INVALID_ARGUMENT;}},initialize:function(){this.gi=[];},fire:function(){if(this.gi.length>0){for(var i=0;i<this.gi.length;i++){if(false){setTimeout((function(index,args){try{if(args.length==0){this.gi[index]();}else{this.gi[index].apply(this,args);}}catch(e){}}).bind(this,i,arguments),1);}else{try{this.gi[i].apply(this,arguments);}catch(e){}}}return true;}else return false;}};var EventHandlerManager=Class.create();EventHandlerManager.prototype={eB:[],kt:[],initialize:function(){this.eB=[];this.kt=[];},addEventType:function(cC){if(this.eB.indexOf(cC)== -1){this.eB.push(cC);var oJ=new EventHandler();this.kt.push(oJ);return oJ;}else{throw Exceptions.EVENT_EXISTS;}},fireEvent:function(cC){if(typeof this.eB!="undefined"&&this.eB!=null){var hU=this.eB.indexOf(cC);if(hU!= -1){var qo=[];for(var i=1;i<arguments.length;i++){qo.push(arguments[i]);}this.kt[hU](qo);}else{throw Exceptions.UNKNOWN_EVENT(cC);}}},addEventListener:function(cC,xM){if(typeof this.eB!="undefined"&&this.eB!=null){var hU=this.eB.indexOf(cC);if(hU!= -1){this.kt[hU].wa(xM);}else{throw Exceptions.UNKNOWN_EVENT(cC);}}}};var Exceptions={UNKNOWN_EVENT:function(name){return{message:"Unknown event: "+name};},UNKNOWN_STATE:{message:"Uknown state."},STATE_EXISTS:{message:"State already exists."},EVENT_EXISTS:{message:"Event already registered."},INVALID_ARGUMENT:{message:"Invalid argument."},TOO_MANY_ARGUMENTS:{message:"EventHandler.fire only supports 10 arguments."}};