Antes de nada: lamento lo de tu ardilla.
No uso esa librería, de manera que no sé cómo maneja los eventos. Pero te digo que la manera de asignarlos con DOM es esta:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<script>
function addEvent(obj, evType, fn, useCapture){
if (obj.addEventListener){
obj.addEventListener(evType, fn, useCapture);
} else if (obj.attachEvent){
obj.attachEvent("on"+evType, fn);
} else {
obj['on'+evType]=fn;
}
}
function decirHola(){
alert('hola!');
}
window.onload=function(){
addEvent(document.getElementById('pp'), 'click', decirHola, false);
}
</script>
</head>
<body>
<div id="pp">click</div>
</body>
</html>
La función addEvent comprueba si es posible asignar el evento con addEventListener para navegadores serios, si no intenta asignarlo con attachEvent (para Explorer), y si no puede asignarlo de ninguna de las dos maneras, asigna el evento de la manera tradicional.
Lo que supongo que hace tu librería, además de aplicar los eventos de esa misma manera, es guardar en un array los eventos asignados a cada objeto, para luego, usando el evento onunload de window, eliminar esa asignación para prevenir fugas de memoria en Explorer. Pero dependiendo de tu aplicación, es muy probable que esa precaución no sea necesaaria.