Код, кстати, на удивление хорош. Конечно, есть некоторые ошибки, кое-где видны не очень хорошие знания JavaScript, но в общем - код на редкость качественный
Например:
this.setListener = function(type, listener) {
switch (type) {
case 'mouseover':
this.mouseover.set(listener);
break;
case 'mouseout':
this.mouseout.set(listener);
break;
case 'mousemove':
this.mousemove.set(listener);
break;
case 'mousedown':
this.mousedown.set(listener);
break;
case 'mouseup':
this.mouseup.set(listener);
break;
case 'mouseclick':
this.mouseclick.set(listener);
break;
}
}
Вполне можно заменить на:
this.setListener = function(type, listener) {
if ( ['mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'mouseclick'].indexOf(type) === -1 ) return;
this[type].set(listener);
}