(function(jQuery) {
    jQuery.fn.fadeIn = function(speed, callback) {
        return this.animate({opacity: 'show'}, speed, function() {
                if ( jQuery.browser.msie )
                {
                        this.style.removeAttribute('filter');
                }
                if ( jQuery.isFunction(callback) )
                {
                        callback.call(this);
                }
        });
    };

    jQuery.fn.fadeOut = function(speed, callback) {
        return this.animate({opacity: 'hide'}, speed, function() {
                if ( jQuery.browser.msie )
                {
                        this.style.removeAttribute('filter');
                }
                if ( jQuery.isFunction(callback) )
                {
                        callback.call(this);
                }
        });
    };

    jQuery.fn.fadeTo = function(speed, to, callback) {
        return this.animate({opacity: to}, speed, function() {
                if ( to == 1 && jQuery.browser.msie )
                {
                        this.style.removeAttribute('filter');
                }
                if ( jQuery.isFunction(callback) )
                {
                        callback.call(this);
                }
        });
    };
})(jQuery);
