I just came up with something pretty sneaky for a new script I’m working on. If you need to take over all the click event handling from an element, stopping all other scripts from recieving them, how about this hack!

var targetElement = // you figure this out
var tempCopy = new Element(‘div’) // an event container

var controlFreakEventHandler = function () {
    // your special code here
}

var putThingsBack = function() {
    targetElement.removeEvents();
    targetElement.cloneEvents(tempCopy, ‘click’);
}

var setupControlFreak = function() {
    tempCopy.removeEvents();
    tempCopy.cloneEvents(targetElement, ‘click’);
    targetElement.removeEvents();
    targetElement.addEvent(‘click’, controlFreakEventHandler);
}

targetElement.addEvent(‘mouseenter’, function() {
    setupControlFreak();
});

var fireOldClickEvents = function(eventObj) {
    putThingsBack();
    targetElement.fireEvent(‘click’, eventObj);
    setupControlFreak();
}