var EventListener={listeners:[],bSafari:/safari/i.test(navigator.userAgent),addEvents:function(B,D,E,C){for(var A=0;
A<B.length;
A++){this.addEvent(B[A],D,E,C)
}},addEvent:function(D,C,F,B){var A=this.delegate(F,B||D);
try{D.addEventListener(C,A,false)
}catch(G){D.attachEvent("on"+C,A)
}var E={element:D,type:C,handler:A};
this.listeners.push(E);
return E
},removeEvents:function(D,C){var B=D?this.getEvents(D,C):this.listeners;
for(var A=0;
A<B.length;
A++){this.removeEvent(B[A])
}},removeEvent:function(B){try{B.element.removeEventListener(B.type,B.handler,false)
}catch(C){B.element.detachEvent("on"+B.type,B.handler)
}for(var A=0;
A<this.listeners.length;
A++){if(this.listeners[A]==B){this.listeners.splice(A,1);
break
}}},getTarget:function(C,D){var B=C.target||C.srcElement;
if(D){var A=new RegExp("^"+D+"$","i");
while(B&&!A.test(B.nodeName)){B=B.parentNode
}return B
}else{return(B.nodeType>1)?B.parentNode:B
}},getEvents:function(D,C){var A=[];
for(var E,B=0;
(E=this.listeners[B++]);
){if(E.element==D&&(!C||C==E.type)){A.push(E)
}}return A
},cancelEvent:function(A){this.preventDefault(A);
this.stopPropagation(A);
return false
},preventDefault:function(C){try{C.preventDefault()
}catch(A){C.returnValue=false
}if(this.bSafari){var B=this.getTarget(C);
if(/^a$/i.test(B.nodeName)){B.onclick=function(){return false
}
}}return false
},stopPropagation:function(B){try{B.stopPropagation()
}catch(A){B.cancelBubble=true
}return false
},delegate:function(B,A){return function(){B.apply(A,arguments)
}
}};