(function($) {
    $.fn.makeAsyncUploader = function(options) {
        return this.each(function() {
            var settings = {
                upload_url : "/index2.php/upload/secure/",
                flash_url : "/resources/swf/dist/swfupload/2/swfupload.swf",
                file_size_limit : "200 MB",
                button_width: "65",
                button_height: "29",
                button_text: '<span class="theFont">Hello</span>',
                button_text_style: ".theFont { font-size: 16; }",
                button_text_left_padding: 12,
                button_text_top_padding: 3,
                debug : true,

                file_dialog_start : function(){
                    IMDTUploadHandlers.fileDialogStart();
                },

                file_queued_handler : function(file){
                    IMDTUploadHandlers.fileQueued(file, this);
                },

                file_queue_error_handler : function(file, errorCode, message){
                    IMDTUploadHandlers.fileQueuedError(file, errorCode, message);
                },

                file_dialog_complete_handler : function(selectedFilesCount, queuedFilesCount, fileQueueCount){
                    IMDTUploadHandlers.fileDialogComplete(selectedFilesCount, queuedFilesCount, fileQueueCount, this);
                },

                upload_start_handler : function(file){
                    IMDTUploadHandlers.uploadStart(file);
                },

                upload_progress_handler : function(file, uploadedBytes, totalBytes){
                    IMDTUploadHandlers.uploadProgress(file, uploadedBytes, totalBytes);
                },

                upload_error_handler : function(file, errorCode, message){
                    IMDTUploadHandlers.uploadError(file, errorCode, message);
                },

                upload_success_handler : function(file, serverData, response){
                    IMDTUploadHandlers.uploadSuccess(file, serverData, response, this.customSettings);
                },

                upload_complete_handler : function(file){
                    IMDTUploadHandlers.uploadComplete(file);
                },
                
                queue_complete_handler : function(){
                    IMDTUploadHandlers.queueComplete();
                }
            }

            var _opt = $.extend(settings, options);
            
            this.swfu = new SWFUpload(_opt);

            if($(_opt.custom_settings.imageCollection).size() > 0){
                fillImageContainer(_opt.custom_settings);
            }
        });
    }
})(jQuery);

fillImageContainer = function(options){
    
    var imageCollection = options.imageCollection;
    
    $(imageCollection).each(function(i,curr){
        var imageInstance = $.extend(curr, {widgetId:options.widgetId});
        imageContainerNode(curr);
    });
}
