(function($){
	
	var baseClass = 'sg-sortable';
	
	$.widget( "sg.sg_sortable", {
		options: {
			placeholderClass: 'sg-placeholder',
			wrapperSelector: '.sg-sortable',
			itemSelector: '.sg-item',
			buttonSelector: '.sg-button-drag',
			sortFunction: function(){},
			startFunction: function(){}
		},
	 
		_create: function() {
			var $widget = this;
			var $wrapper = this.element;
			var $options = this.options;
			
			$wrapper.addClass(baseClass);
			$widget.setupSortable();
		},
		
		setupSortable: function() {
			var $widget = this;
			var $wrapper = this.element;
			var $options = this.options;
			
			var $tag_item = $wrapper.find( $options.itemSelector );
			
			// setup jquery ui.sortable
			$wrapper.sortable({
				items: $options.itemSelector,
				handle: $options.buttonSelector,
				connectWith: $options.wrapperSelector,
				cursor: 'move',
				placeholder: $tag_item.attr('class')+' '+$options.placeholderClass,
				forceHelperSize: true,
				forcePlaceholderSize: true,
				//cursorAt: {top:15, right:15},
				revert: true,
				axis: false
			});
			
			$wrapper.bind('sortupdate', $options.sortFunction);
			$wrapper.bind('sortchange', $options.startFunction);
			$wrapper.bind('sortcreate', $options.startFunction);
			$wrapper.bind('sortstart', $options.startFunction);
		}
	});
}(jQuery));
