function maxEventSource()
{if(arguments.length==0){return;}
if(this.callbacks!=null){alert("interne fout in aanroep naar maxEventSource constructor: object is al geinitialiseerd.");}
this.callbacks=new Object();var eventTypes=arguments[0];for(var i=0;i<eventTypes.length;i++){var eventType=eventTypes[i];this.callbacks[eventType]=new Array();}}
maxEventSource.prototype.addEventListener=function(eventType,callback,ignoreErrors)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.addEventListener: event type '"+eventType+"' bestaat niet.");return false;}
if(this.hasEventListener(eventType,callback)){if(!ignoreErrors){if(window.console!=null){console.error("maxEventSource.addEventListener() - callback is al toegevoegd voor '"+eventType+"'");console.trace();}
alert("interne fout in aanroep naar maxEventSource.addEventListener: callback is al toegevoegd voor het event type '"+eventType+"'");}
return false;}
var newIndex=this.callbacks[eventType].length;this.callbacks[eventType][newIndex]=callback;return true;}
maxEventSource.prototype.clearAllEventListeners=function()
{for(eventType in this.callbacks){if(typeof(this.callbacks[eventType])=='function'){continue;}
this.callbacks[eventType]=new Array();}
return true;}
maxEventSource.prototype.clearEventListeners=function(eventType)
{if(this.callback[eventType]==null){alert("interne fout in aanroep naar maxEventSource.clearEventListeners: event type '"+eventType+"' bestaat niet.");return false;}
this.callback[eventType]=new Array();return true;}
maxEventSource.prototype.hasEventType=function(eventType)
{return typeof(this.callbacks[eventType])!='undefined';}
maxEventSource.prototype.hasEventListener=function(eventType,callback)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.hasEventListener: event type '"+eventType+"' bestaat niet.");return false;}
var queue=this.callbacks[eventType];for(var i=queue.length-1;i>=0;i--){if(queue[i]==callback){return true;}}
return false;}
maxEventSource.prototype.hasEventListeners=function(eventType)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.hasEventListeners: event type '"+eventType+"' bestaat niet.");return false;}
return(this.callbacks[eventType].length>=0);}
maxEventSource.prototype.getEventListenerCount=function(eventType)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.getEventListenerCount: event type '"+eventType+"' bestaat niet.");return false;}
return this.callbacks[eventType].length;}
maxEventSource.prototype.fireEvent=function(eventType,eventData)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.fireEvent: event type '"+eventType+"' bestaat niet.");return false;}
var queue=this.callbacks[eventType];if(queue.length==0){return false;}
for(var i=0;i<queue.length;i++){var callback=queue[i];callback(eventData);}
return true;}
maxEventSource.prototype.removeEventListener=function(eventType,callback,ignoreErrors)
{if(this.callbacks[eventType]==null){alert("interne fout in aanroep naar maxEventSource.removeEventListener: event type '"+eventType+"' bestaat niet.");return false;}
var queue=this.callbacks[eventType];for(var i=queue.length-1;i>=0;i--){if(queue[i]==callback){queue.splice(i,1);return true;}}
if(!ignoreErrors){if(window.console!=null){console.error("maxEventSource.removeEventListener() - callback is niet ingesteld voor event type '"+eventType+"'");console.trace();}
alert("interne fout in aanroep naar maxEventSource.removeEventListener: callback is niet ingesteld voor event type '"+eventType+"'");}
return false;}