// Author: Denys Ivchenko http://aspnetmania.com/Users/User/1010.html

if (navigator.userAgent.toLowerCase().indexOf('gecko') != -1) {
    window.attachEvent = function(eventName, delegate) {
        this.addEventListener(eventName.substring(2), delegate, false);
    }

    window.detachEvent = function(eventName, delegate) {
        this.removeEventListener(eventName.substring(2), delegate, false);
    }

    window.document.attachEvent = function(eventName, delegate) {
        this.addEventListener(eventName.substring(2), delegate, false);
    }
    
    window.document.detachEvent = function(eventName, delegate) {
        this.removeEventListener(eventName.substring(2), delegate, false);
    }

    HTMLElement.prototype.attachEvent = function(eventName, delegate) {
        this.addEventListener(eventName.substring(2), delegate, false);
    }

    HTMLElement.prototype.detachEvent = function(eventName, delegate) {
        this.removeEventListener(eventName.substring(2), delegate, false);
    }

    HTMLElement.prototype.fireEvent = function(eventName, eventInstance) {
        var events = this.ownerDocument.createEvent("events");
        events.initEvent(eventName.substring(2), false, true);
        this.dispatchEvent(ev);
    }
    
    Event.prototype.__defineGetter__("srcElement", function () {
       var node = this.target;
       
       while (node.nodeType != 1) 
			node = node.parentNode;
			
       return node;
    })
}
