(function($){
	var methods = {
			init : function(options) {
				var settings = $.extend({
					'test' : 'test'
				}, options);
				return this.each(function(){
					var $this = $(this);
					if($this.prop('tagName') == 'TABLE') {
						$this.find('tbody').sortable({
							containment: 'parent',
							tolerance: 'pointer',
							axis: 'y',
							cursor: 'move',
							start: function(e, ui){
								ui.placeholder.height(ui.item.height());
							},
							helper: function(e, tr) {
								var $originals = tr.children();
								var $helper = tr.clone();
								$helper.children().each(function(index) {
									// Set helper cell sizes to match the original sizes
									$(this).width($originals.eq(index).outerWidth());
								});
								return $helper;
							}					
						});
					}
					else {
						$this.sortable({
							tolerance: 'pointer',
							axis: 'y',
							cursor: 'move',
							start: function(e, ui){
								ui.placeholder.height(ui.item.height());
							},
						});
					}
				});
			}
			
	};
	$.fn.extend({
		sortableOrder : 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.sortableOrder' );
			}    
		}
	});
})(jQuery);


$(document).ready(function(){
	$('.makeSortableOrder').sortableOrder();
});





if(true == false) {

(function($){
	var methods = {
		init : function( options ) {
			var settings = $.extend( {
				'show' : 4,
				'navButtons' : true,
				'prevButton' : false,
				'nextButton' : false,
				'showPosition' : 0,
				'autoToggleNavButtons' : true
			}, options);
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				if(!data) {
					$this.css('position','relative');
					var children = $this.children();
					children.each(function(){
						$(this).css("position","relative");
					});
					$this.html('<div class="scrollContainer" style="position:relative;"><div class="scrollElement" style="position:relative;overflow:hidden;">' + $(this).html() + '</div></div>');
					var scrollContainer = $this.find('.scrollContainer');
					var scrollElement = scrollContainer.find('.scrollElement');
					
					if(settings.prevButton.jquery) {
						settings.prevButton.click(function(e){
							$this.topBasketScroller('scrollPrev',e);
						});
					}
					if(settings.nextButton.jquery) {
						settings.nextButton.click(function(e){
							$this.topBasketScroller('scrollNext',e);
						});
					}
					if(settings.navButtons === true) {
						scrollContainer.prepend('<div class="scrollPrev">prev</div>');
						scrollContainer.append('<div class="scrollNext">next</div>');
						var scrollPrev = scrollContainer.find(".scrollPrev").css("cursor","pointer");
						var scrollNext = scrollContainer.find(".scrollNext").css("cursor","pointer");
						
						scrollPrev.bind('click.topBasketScroller',function(e){
							$this.topBasketScroller('scrollPrev',e);
						});
						scrollNext.bind('click.topBasketScroller',function(e){
							$this.topBasketScroller('scrollNext',e);
						});
					}
					var navButtons = new Object();
					navButtons.next = $().add(settings.nextButton).add(scrollNext);
					navButtons.prev = $().add(settings.prevButton).add(scrollPrev);
					$this.data('topBasketScroller', {
						currentChild : 0,
						scrollElement : scrollElement,
						settings : settings,
						navButtons : navButtons
					});
				}
				if(settings.showPosition == 'max') {
					$this.data('topBasketScroller').currentChild = Math.max(children.length - settings.show, 0);
				}
				else if(!isNaN(settings.showPosition) && settings.showPosition != 0){
					$this.data('topBasketScroller').currentChild = settings.showPosition;
				}
				
				$this.topBasketScroller('onShow');
				$this.topBasketScroller('onShow');
			});
		},
		scrollNext : function(e){
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				var	scrollElement = data.scrollElement;
				var children = scrollElement.children();
				e.stopPropagation();
				if(data.currentChild >= children.length - data.settings.show) {
					return;
				}
				++data.currentChild;
				scrollElement.animate({
					scrollTop: ($(children[data.currentChild]).offset().top - $(children[0]).offset().top) + 'px',
					height: $this.topBasketScroller('getNewHeight') + 'px'
				},$(children[data.currentChild-1]).outerHeight() * 5);
				if(data.currentChild >= children.length - data.settings.show) {
					$(this).removeClass("scrollNextActive").addClass("scrollNext");
				}
				$this.topBasketScroller('updateScrollButtons');
			});
		},
		scrollPrev : function(e){
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				var	scrollElement = data.scrollElement;
				var children = scrollElement.children();
				e.stopPropagation();
				if(data.currentChild == 0) {
					return;
				}
				--data.currentChild;
				scrollElement.animate({
					scrollTop: ($(children[data.currentChild]).offset().top - $(children[0]).offset().top) + 'px',
					height: $this.topBasketScroller('getNewHeight') + 'px'
				},$(children[data.currentChild]).outerHeight() * 5);
				$this.topBasketScroller('updateScrollButtons');
			});
		},
		updateScrollButtons : function() {
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				var	scrollElement = data.scrollElement;
				var children = scrollElement.children();
				if(children.length <= data.settings.show){
					data.navButtons.next.each(function(){
						$(this).removeClass("scrollNextActive").addClass("scrollNext");
						if(data.settings.autoToggleNavButtons === true){
							$(this).hide();
						}
					});
					data.navButtons.prev.each(function(){
						$(this).removeClass("scrollPrevActive").addClass("scrollPrev");
						if(data.settings.autoToggleNavButtons === true){
							$(this).hide();
						}
					});
				}
				if(data.currentChild == 0) {
					data.navButtons.prev.each(function(){
						$(this).removeClass("scrollPrevActive").addClass("scrollPrev");
					});
				}
				else if(children.length > data.settings.show){
					data.navButtons.prev.each(function(){
						$(this).removeClass("scrollPrev").addClass("scrollPrevActive");
						if(data.settings.autoToggleNavButtons === true){
							$(this).show();
						}
						
					});
				}
				if(data.currentChild + data.settings.show >= children.length) {
					data.navButtons.next.each(function(){
						$(this).removeClass("scrollNextActive").addClass("scrollNext");
					});
				}
				else if(data.currentChild + data.settings.show < children.length) {
					data.navButtons.next.each(function(){
						$(this).removeClass("scrollNext").addClass("scrollNextActive");
					});
				}
			});
		},
		onDeleteChild : function() {
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				var	scrollElement = data.scrollElement;
				var children = scrollElement.children();
				if(children.length <= 0 ) {
					return;
				}
				if(data.currentChild + data.settings.show > children.length) {
					data.currentChild = Math.max(0, children.length - data.settings.show);
				}
				if($this.topBasketScroller('isShowingAll')) {
					scrollElement.height('auto').animate({
						scrollTop: ($(children[data.currentChild]).offset().top - $(children[0]).offset().top) + 'px'
					},$(children[data.currentChild]).outerHeight() * 5);
				}
				else{
					scrollElement.animate({
						scrollTop: ($(children[data.currentChild]).offset().top - $(children[0]).offset().top) + 'px',
						height: $this.topBasketScroller('getNewHeight') + 'px'
					},$(children[data.currentChild]).outerHeight() * 5);
				}
				$this.topBasketScroller('updateScrollButtons');
			});
		},
		onShow : function() {
			return this.each(function(){
				var $this = $(this);
				var data = $this.data('topBasketScroller');
				var	scrollElement = data.scrollElement;
				var children = scrollElement.children();
				if(children.length > 0) {
					scrollElement.scrollTop($(children[data.currentChild]).offset().top - $(children[0]).offset().top).height($this.topBasketScroller('isShowingAll') ? 'auto' : $this.topBasketScroller('getNewHeight') + 'px');
				}
				$this.topBasketScroller('updateScrollButtons');
			});
		},
		getNewHeight : function( ) {
			var $this = $(this);
			var data = $this.data('topBasketScroller');
			var children = data.scrollElement.children();
			var setHeight = 0;
			for(var i = data.currentChild; i < data.settings.show + data.currentChild; ++i) {
				setHeight += $(children[i]).outerHeight();
			}
			return setHeight;
		},
		isShowingAll : function( ) {
			var $this = $(this);
			var data = $this.data('topBasketScroller');
			var children = data.scrollElement.children();
			if(children.length <= data.settings.show){
				return true;
			}
			else{
				return false;
			}

		}
	};	
	$.fn.extend({
		topBasketScroller : 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.topBasketScroller' );
			}    
		}
	});
})(jQuery );


}