(function($) {
    $.fn.extend({
        ajaxUploadFiles:function(settings) {
			var defaults = {
				action: "/submit/associateFile.html",
				fileList: "files",
				inProgress: "uploading",
				multiple: "false"
			};
			var settings = $.extend(defaults, settings);
			var myData = { 
				parentId: settings.parentId,
				parentType: settings.parentType,
				ident: (settings.catIdent != null) ? settings.catIdent : ''
			};
			var button = $(this);
			if($('#'+settings.fileList+'>li').length > 0 && settings.multiple == 'false') {
				button.hide();
			}
			new AjaxUpload(button,{
				action: settings.action, 
				name: 'myFile',
				data: myData,
				onSubmit : function(file, ext){
					button.addClass(settings.inProgress);
					this.disable();
				},
				onComplete: function(file, response){
					if(response.indexOf('error') > -1) {
						$('<li></li>').appendTo('#'+settings.fileList).text('Error uploading file: ' + file);						
					}
					else {
						var id = response.replace(/<success>(.*)<\/success>/, "$1");
						$('<li></li>').attr('id', id).appendTo('#'+settings.fileList).text(file);
						$('<a></a>').css({'margin-left' : '1em'}).attr('id', 'link'+id).text('[replace]').appendTo('#'+id);
						myData = { id: id };
						new AjaxUpload( $('#link'+id), {
							action: settings.action, 
							name: 'myFile',
							data: myData,
							onSubmit : function(file, ext){
								$('#link'+id).addClass(settings.inProgress);
							},
							onComplete: function(file, response){
								$('#link'+id).removeClass(settings.inProgress);
								if(response.indexOf('error') > -1) {
									$('#link'+id).text('Error uploading file: ' + file);						
								}
								else {
									var link = $('#link'+id);
									var parent = $('#link'+id).parent();
									parent.empty();
									parent.append(file);
									parent.append(link);
								}
							}
						});
					}
					button.removeClass(settings.inProgress);
					if(settings.multiple == 'false'){
						button.hide();
					}
					else {
						this.enable();
					}
				}
			});
		}
    });
})(jQuery);		

(function($) {
    $.fn.extend({
        ajaxEditUploadFiles:function(settings) {
			var defaults = {
				action: "/submit/associateFile.html",
				fileList: "files",
				inProgress: "uploading",
				multiple: "false"
			};
			var settings = $.extend(defaults, settings);
			var myData = { 
				id: settings.id
			};
			new AjaxUpload( $('#link'+settings.id), {
				action: settings.action, 
				name: 'myFile',
				data: myData,
				onSubmit : function(file, ext){
					$('#link'+settings.id).addClass(settings.inProgress);
				},
				onComplete: function(file, response){
					$('#link'+settings.id).removeClass(settings.inProgress);
					if(response.indexOf('error') > -1) {
						$('#link'+settings.id).text('Error uploading file: ' + file);						
					}
					else {
						var link = $('#link'+settings.id);
						var parent = $('#link'+settings.id).parent();
						parent.empty();
						parent.append(file);
						parent.append(link);
					}
				}
			});
		}
    });
})(jQuery);			