function eventManager_get(_1){
var _2=this.eventTypes[_1];
if(_2==null){
_2=new Object();
_2.arr=new Array();
_2.etype=_1;
this.sorted=true;
this.eventTypes[_1]=_2;
}
if(_2.arr.length<=0){
_2.regnext=this.reglist;
this.reglist=_2;
}
return _2;
}
function eventManager_register(_3,_4){
var _5=(arguments.length>2?arguments[2]:0);
var _6=new Object();
_6.id="e"+this.cnt++;
_6.etype=_3;
_6.object=_4;
_6.pri=_5;
_6.func=null;
_6.startid=this.startid;
this.events[_6.id]=_6;
var _7=this.get(_3);
_7.arr.push(_6);
if(_7.arr.length>1){
_7.sorted=false;
}
this.lastobj=_6;
if(this.reglist&&(this.onload==null)){
this.regEvents();
}
return _6.id;
}
function eventManager_add(_8,_9){
var _a=(arguments.length>2?arguments[2]:0);
this.register(_8,null,_a);
var _b=this.lastobj;
_b.func=new Function(_9);
return _b.id;
}
function eventManager_remove(id){
var _d,i,_f;
if(id!=null){
_f=this.events[id];
if(_f!=null){
_f.object=_f.func=null;
_f.nextremove=this.removelist;
this.removelist=_f;
}
}
if(this.fireing<=0){
while((_f=this.removelist)!=null){
this.removelist=_f.next;
_f.next=null;
_d=this.get(_f.etype);
for(i=0;i<_d.arr.length;i++){
if(_d.arr[i]==_f){
_d.arr.splice(i,1);
if(_d.arr.length<=0){
if(this.regdata[_d.etype]){
eval("document."+_d.etype+"=null;");
if(document.layers&&(this.regdata[_d.etype]!="nocap")){
eval("document.releaseEvents( "+this.regdata[_d.etype]+" );");
}
}
}
break;
}
}
delete _f;
}
}
}
function eventManager_removeThis(){
if(this.curobj){
var obj=this.curobj;
obj.object=obj.func=null;
obj.nextremove=this.removelist;
this.removelist=obj;
}
if(this.fireing<=0){
this.remove(null);
}
}
var gEventHistory=new Array();
var gTrigger;
function eventManager_cmpFunc(a,b){
return (b.pri-a.pri);
}
function eventManager_fire(_13){
gEventHistory.push(_13);
if(gEventHistory.length>100){
gTrigger=true;
}
var _14=this.get(_13);
if(_14.arr.length<=0){
return true;
}
if(!_14.sorted){
_14.arr.sort(eventManager_cmpFunc);
_14.sorted=true;
}
this.fireing++;
this.startid++;
var e=(arguments.length>1?arguments[1]:null);
if(!e){
e=window.event;
}
this.cancel=false;
var obj,f,i;
for(i=0;(i<_14.arr.length)&&!this.cancel;i++){
obj=_14.arr[i];
this.curobj=obj;
if(obj.startid!=this.startid){
try{
if(obj.object&&obj.object[_13]){
obj.object[_13](e);
}else{
if(obj.func){
obj.func(e);
}
}
}
catch(err){
reportError(err);
}
}
}
if(this.cancel){
e.cancelBubble=true;
if(e.stopPropagation){
e.stopPropagation();
}
}
this.curobj=null;
this.fireing--;
if(this.removelist&&(this.fireing<=0)){
this.remove(null);
}
return (this.cancel!=true);
}
function eventManager_regEvents(){
var _19,tn;
var i;
for(_19=this.reglist;_19;_19=tn){
tn=_19.regnext;
_19.regnext=null;
if(this.regdata[_19.etype]!=null){
var r="document."+_19.etype+"=new Function ( \"return eventManager.fire('"+_19.etype+"',arguments[0]);\" );";
eval(r);
if(document.layers&&(this.regdata[_19.etype]!="nocap")){
eval("document.captureEvents( "+this.regdata[_19.etype]+" );");
}
}
}
this.reglist=null;
}
function eventManager_onload(){
this.onload=null;
this.regEvents();
}
function eventManager(){
this.cnt=1;
this.list=null;
this.eventTypes=new Object();
this.events=new Object();
this.get=eventManager_get;
this.register=eventManager_register;
this.add=eventManager_add;
this.remove=eventManager_remove;
this.removeThis=eventManager_removeThis;
this.fire=eventManager_fire;
this.fireing=0;
this.startid=1;
this.removelist=null;
this.reglist=null;
this.regEvents=eventManager_regEvents;
this.curobj=null;
this.regdata=new Object();
this.regdata.onmousemove="Event.MOUSEMOVE";
this.regdata.onmouseup="Event.MOUSEUP";
this.regdata.onkeyup="Event.KEYUP";
this.regdata.onkeydown="Event.KEYDOWN";
this.onload=eventManager_onload;
this.register("onload",this,100000);
if(!window.reportError){
window.reportError=function(e){
};
}
}
var eventManager=new eventManager();

