(function ($) {

    $.fn.loadImage = function (options) {

        var defaults = {

            animationDuration: 1000

        };
        var options = $.extend(defaults, options);

        return this.filter("img").each(function () {

            var $img = $(this);

            if ($img.data("src")) {

                if (!$img.is(".img-loaded") && !$img.is(".img-loading")) {

                    $img.css({
                    
                        visibility: 'hidden',
                        width: 'auto',
                        height: 'auto'

                    });

                    $img.load(function () {

                        $img.unbind("load").css({

                            opacity: 0,
                            visibility: "visible"

                        }).animate({

                            opacity: 1

                        }, {

                            duration: 1200,
                            complete: function () { $(this).css("opacity", ""); }

                        }).addClass("img-loaded").removeClass("img-loading");

                    });

                    $img.addClass("img-loading").attr("src", $img.data("src"));

                }

            }

        });

    };

})(jQuery);
