Skip to content

Instantly share code, notes, and snippets.

@garcon
Created February 19, 2010 00:42
Show Gist options
  • Save garcon/308278 to your computer and use it in GitHub Desktop.
Save garcon/308278 to your computer and use it in GitHub Desktop.
// http://interval.cz/clanky/pokrocile-zpracovani-udalosti-napric-platformami/
var events = new Object();
events.addListener = function(element,type,fcn)
{
if (!element.addEventListener && !element.attachEvent) return false;
if (element.addEventListener) element.addEventListener(type,fcn,false);
else if (element.attachEvent)
{
element.attachEvent('on' + type,function(event) {
var objEvent = new Object();
objEvent.type = event.type;
objEvent.target = event.srcElement;
objEvent.currentTarget = element;
objEvent.eventPhase = (objEvent.target == objEvent.currentTarget ? 2 : 3);
objEvent.button = (event.button == 2 || event.button == 6 ? 2 : event.button == 4 ? 1 : event.button == 0 ? null : 0);
objEvent.altKey = event.altKey;
objEvent.ctrlKey = event.ctrlKey;
objEvent.shiftKey = event.shiftKey;
objEvent.metaKey = false;
objEvent.clientX = event.clientX;
objEvent.clientY = event.clientY;
objEvent.relatedTarget = (objEvent.type == 'mouseover' ? event.fromElement : objEvent.type == 'mouseout' ? event.toElement : null);
objEvent.stopPropagation = function() { event.cancelBubble = true; };
objEvent.preventDefault = function() { event.returnValue = (objEvent.type == 'mouseover' && (objEvent.target.tagName.toLowerCase() == 'a' || objEvent.target.tagName.toLowerCase() == 'area') ? true : false); };
objEvent.AT_TARGET = 2;
objEvent.BUBBLING_PHASE = 3;
objEvent.keyCode = event.keyCode;
objEvent.charCode = event.keyCode;
objEvent.offsetX = event.offsetX;
objEvent.offsetY = event.offsetY;
objEvent.x = event.x;
objEvent.y = event.y;
fcn(objEvent);
})
}
return true;
};
events.removeListener = function(element,type,fcn)
{
if (!element.removeEventListener && !element.detachEvent) return false;
if (element.removeEventListener) element.removeEventListener(type,fcn,false);
else if (element.detachEvent) element.detachEvent('on' + type,fcn);
return true;
};
events.listenersArray = new Array();
events.addListeners = function()
{
var i, element, repeat = false;
for (i = 0; i < events.listenersArray.length; i++)
{
element = (events.listenersArray[i].element != '' ? eval(events.listenersArray[i].element) : false);
if (element)
{
events.addListeners.able = events.addListener(element,events.listenersArray[i].type,events.listenersArray[i].fcn);
events.listenersArray[i].element = '';
}
else if (events.listenersArray[i].element != '') repeat = true;
}
if (repeat) setTimeout('events.addListeners()',1000);
else events.addListeners.done = true;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment