Function.prototype.bind = function(object) {
var __method = this;
return function() {
__method.apply(object, arguments);
};
};
Function.prototype.bindAsEventListener = function(object) {
var __method = this;
return function(event) {
__method.call(object, event || window.event);
};
};Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
;
return destination;
};if (!window.Event) {
var Event = new Object();
};Object
.extend(
Event,
{
observers : false,
element : function(event) {
return event.target || event.srcElement;
},
isLeftClick : function(event) {
return (((event.which) && (event.which == 1)) || ((event.button) && (event.button == 1)));
},
pointerX : function(event) {
return event.pageX
|| (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
},
pointerY : function(event) {
return event.pageY
|| (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop));
},
stop : function(event) {
if (event.preventDefault) {
event.preventDefault();
event.stopPropagation();
} else {
event.returnValue = false;
event.cancelBubble = true;
}
;
},
findElement : function(event, tagName) {
var element = Event.element(event);
while (element.parentNode
&& (!element.tagName || (element.tagName
.toUpperCase() != tagName.toUpperCase())))
element = element.parentNode;
return element;
},
_observeAndCache : function(element, name, observer,
useCapture) {
if (!this.observers)
this.observers = [];
if (element.addEventListener) {
this.observers.push( [ element, name, observer,
useCapture ]);
element
.addEventListener(name, observer,
useCapture);
} else if (element.attachEvent) {
this.observers.push( [ element, name, observer,
useCapture ]);
element.attachEvent('on' + name, observer);
}
;
},
unloadCache : function() {
if (!Event.observers)
return;
for ( var j = 0; j < Event.observers.length; j++) {
Event.stopObserving.apply(this, Event.observers[j]);
Event.observers[j][0] = null;
}
;
Event.observers = false;
},
observe : function(element, name, observer, useCapture) {
var element = G(element);
useCapture = useCapture || false;
if (name == 'keypress'
&& (navigator.appVersion
.match(/Konqueror|Safari|KHTML/) || element.attachEvent))
name = 'keydown';
this._observeAndCache(element, name, observer,
useCapture);
},
stopObserving : function(element, name, observer,
useCapture) {
var element = G(element);
useCapture = useCapture || false;
if (name == 'keypress'
&& (navigator.appVersion
.match(/Konqueror|Safari|KHTML/) || element.detachEvent))
name = 'keydown';
if (element.removeEventListener) {
element.removeEventListener(name, observer,
useCapture);
} else if (element.detachEvent) {
element.detachEvent('on' + name, observer);
}
;
}
});
Event.observe(window, 'unload', Event.unloadCache, false);