﻿function addEvent(el, ev, fn) {
    if (typeof el != 'object')
        return;
    if (el.attachEvent) {
        if (el['ev0' + ev] != null) {
            if (el['ev1' + ev] != null) {
                if (el['ev2' + ev] != null) {
                    el['ev3' + ev] = fn;
                    el['fn' + ev] = function() { el['ev0' + ev](window.event); el['ev1' + ev](window.event); el['ev2' + ev](window.event); el['ev3' + ev](window.event); }
                } else {
                    el['ev2' + ev] = fn;
                    el['fn' + ev] = function() { el['ev0' + ev](window.event); el['ev1' + ev](window.event); el['ev2' + ev](window.event); }
                }
            } else {
                el['ev1' + ev] = fn;
                el['fn' + ev] = function() { el['ev0' + ev](window.event); el['ev1' + ev](window.event); }
            }
        } else {
            el['ev0' + ev] = fn;
            el['fn' + ev] = function() { el['ev0' + ev](window.event); }
        }
        el.attachEvent('on' + ev, el['fn' + ev])
    } else {
        if (el.addEventListener) {
            if (ev == 'mousewheel') {
                el.addEventListener('DOMMouseScroll', fn, false)
            }
            el.addEventListener(ev, fn, false)
        } else {
            el['on' + ev] = fn;
        }
    }
}

function dummyEventFunction() { return void(null); }

function removeEvent(el, ev, fn) {
    if (typeof el != 'object')
        return;
    if (el.detachEvent) {
        if (el['fn' + ev] == null)
            return;
        var x = 0, i = 0;
        for (i = 0; i < 4; i++) {
            if (el['ev' + i + ev] != null) {
                if (el['ev' + i + ev] == fn) {
                    el['ev' + i + ev] = dummyEventFunction;
                } else {
                    if (el['ev' + i + ev] != dummyEventFunction)
                        x++;
                }
            }
        }
        if (x == 0) {
            el.detachEvent('on' + ev, el['fn' + ev]);
            for (i = 0; i < 4; i++) {
                el['ev' + i + ev] = null;
            }
            el['fn' + ev] = null;
        }
    } else {
        if (el.removeEventListener) {
            if (ev == 'mousewheel') {
                el.removeEventListener('DOMMouseScroll', fn, false);
            }
            el.removeEventListener(ev, fn, false);
        } else {
            el['on' + ev] = null;
        }
    }
}

function stopEvent(ev) {
    if (ev.preventDefault) {
        ev.preventDefault();
        ev.stopPropagation();
    } else {
        ev.returnValue = false;
        ev.cancelBubble = true;
    }
}
