var Bytex64 = {};

Bytex64.FX = {
    updateInterval: 50,

    run: function(fx, secs) {
        secs = secs * 1000;

        var interval;
        var start = (new Date()).getTime();

        fx(0.0);

        interval = setInterval(function() {
            var d = (new Date()).getTime() - start;
            if (d > secs) {
                clearInterval(interval);
                fx(1.0);
            } else {
                fx(d/secs);
            }
        }, Bytex64.FX.updateInterval);
    }
    
    ,

    create: function(fx, secs) {
        return function() {
            Bytex64.FX.run(fx, secs);
        }
    }

    ,

    fadeIn: function(elem) {
        return function(p) {
            if (p == 0.0)
                elem.style.display = 'block';
            elem.style.opacity = p;
        }
    }

    ,

    fadeOut: function(elem) {
        return function(p) {
            elem.style.opacity = 1.0 - p;
            if (p == 1.0)
                elem.style.display = 'none';
        }
    }
}

Bytex64.DOM = {
    addEventListener: function(elem, etype, func) {
        if (elem.addEventListener) {
            elem.addEventListener(etype, func, false);
        } else if (elem.attachEvent) {
            elem.attachEvent("on" + etype, func);
        }
    }

    ,

    removeEventListener: function(elem, etype, func) {
        if (elem.removeEventListener) {
            elem.removeEventListener(etype, func, false);
        } else if (elem.detachEvent) {
            elem.detachEvent("on" + etype, func);
        }
    }

    ,

    preventDefault: function(event) {
        if (event.preventDefault) {
            event.preventDefault();
        } else if (event.returnValue) {
            event.returnValue = false;
        }
    }
}

/* vim: set ts=4 sts=4 sw=4 expandtab: */
