Clones an event object. You can optionally pass new initialization values to override the ones from the cloned event object.
function cloneEventObj(eventObj, overrides){
var p, eventInit = {}, clone;
overrides = overrides || {};
for(p in eventObj){
eventInit[p] = eventObj[p];
}
for(p in overrides){
eventInit[p] = overrides[p];
}
clone = new eventObj.constructor(eventObj.type, eventInit);
//make sure any custom properties get copied to the new event object
for(p in eventInit){
try{
clone[p] = eventInit[p];
}
catch(e){}
}
}