(function($) {
	var methods = {
    init : function( options ) {
			return $(this).each(function() {

			var $container = $(this);
			$(".sortable", $container).sortable({
				placeholder: "placeholder roundedContent"
			});
			var form = {
				noredirect: 'true',
				form_object: $container.data("bov3-object-name"),
				sort_field: $container.data("bov3-sort-field")
			};
			var form_field_index  = 0;
			$container.delegate("a.save_arbo", "click", function() {
				var form_field_index = 0;
				$container.find('.sortable').each(function() {
					form_field_index = form_field_index + 1;
					var form_field_name = form.form_object + "_" + String(form_field_index);
					form[form_field_name] = [];
					$(this).children('li').each(function() {
						form[form_field_name].push($(this).data('bov3-object-id'));
					});
				});
				$.ajax({
					url: boState.getContextPath() + "/bov3/datasort/actions/sort.jspz",
					type: 'POST',
					data: form,
					traditional: true,
					success: function(data, status) {
						var prefix = form.form_object + '_';
						for( var n in data ) {
							if( n.indexOf(prefix) == 0 ) {
								var id = n.substring(prefix.length);
								var $status = $("div[data-bov3-object-name='" + form.form_object + "'] li[data-bov3-object-id='" + id + "'] .status:first");
								var infos = data[n];
								switch(infos.status) {
									case 'changed':
										$status.html(' ( Mis à jour )').css('color', 'green');
										break;
									case 'unchanged':
										$status.html('');
										break;
									case 'error':
										$status.html(' ( ' + infos.error + ' )').css('color', 'red');
										break;
								}
							}
						}
					},
					error: function(xhr, status, error) {
						boError.setTitle(error).show();
					}
				});
				return false;
			});
		});
		}
  };

	$.fn.bov3Sortable = function( method ) {
		if ( methods[method] ) {
			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} else if ( typeof method === 'object' || ! method ) {
			return methods.init.apply( this, arguments );
		} else {
			$.error( 'Method ' +  method + ' does not exist on jQuery.bov3Sortable' );
		}
	};


})(jQuery);

