(function($) {
    
    $.fn.uploadForm = function() {
        return this.each(function() {
            var form = $(this);
            form.find(".upload-field-file").each(function() {
                var tr = $(this);
                var td = tr.find("td").eq(0);
                var input = td.find("input");
                var submit = tr.find("input[type=submit]");
                var isClicked = false;
                submit.click(function() {
                    // Prevent multiple clicking.
                    if (isClicked) {
                        return false;
                    }
                    isClicked = true;
                    // Create the ajax loader.
                    var loader = $("<span/>").css({
                        width: 128,
                        height: 15,
                        background: "url(/media/assets/img/ajax-bar.gif) 0 0 no-repeat",
                        display: "block",
                        position: "relative"
                    }).hide();
                    // Animate in the ajax loader.
                    td.width(td.width());  // Lock the width.
                    td.append(loader);
                    input.fadeOut("fast", function() {
                        loader.fadeIn(function() {
                            form.submit();
                        });
                    });
                    // Update the submit button.
                    submit.val("Uploading…").css({
                        backgroundImage: "url(/media/assets/img/narrow-grey-button-background.png)",
                        color: "#333",
                        cursor: "default"
                    });
                    // Prevent uploading comments.
                    $("#comments-submit").css({
                        backgroundImage: "url(/media/assets/img/narrow-grey-button-background.png)",
                        color: "#333",
                        cursor: "default"
                    }).click(function() {
                        return false;
                    });
                    $("#upload-form-next").css({
                        backgroundImage: "url(/media/assets/img/a-grey-button-background.png)",
                        color: "#333",
                        cursor: "default"
                    }).click(function() {
                        return false;
                    });
                    // Prevent default action.
                    return false;
                });
            });
        });
    }
    
}(jQuery));
