var demo = {fn: function(){}};

(function($){
	
	demo.draggable = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.draggable()
			.chain();
	}
	
	demo.draggableWithDroppable = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.draggable()
			.chain();
			
		$('#demo-drop').droppable({
			drop:function(droppable, item){
				var data = item.item();
				this.append('<br/>'+data.first+' '+data.last);
			}
		});
	}
	
	demo.sortable = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable()
			.chain();
		
		demo.sortable_get = function()
		{
			var data = $('#demo-persons').items(0).item();
			alert(data.last+', '+data.first);
		}
	}
	
	demo.sortableWithDroppable = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable()
			.chain();
			
		$('#demo-drop').droppable({
			drop:function(droppable, item){
				var data = item.item();
				this.append('<br/>'+data.first+' '+data.last);
			}
		});
	}
	
	demo.multipleSortable = function()
	{
		
		$('#demo-sortable1')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable({accept:'sortable'})
			.chain();
		
		$('#demo-sortable2')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable({accept:'sortable'})
			.chain();
	}
	
	demo.selectable = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.selectable({required:true})
			.chain();
		
		demo.selectable_get = function()
		{
			var data = $('#demo-persons').selectable('selected').item();
			alert(data.first+' '+data.last);
		}
	}
	
	demo.selectableLink = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.selectable({required:true})
			.chain();
		
		$('#demo-linker')
			.item('link', '#demo-persons', 'selected')
			.chain(function(){
				var self = this;
				
				self.find(':input').keyup(function(){
					self.item({
						first: self.find('.first').val(),
						last: self.find('.last').val()
					})
				})
			})
	}
	
	demo.multipleSelectableLink = function()
	{
		$('#demo-persons')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.selectable({required:true, multiple:true})
			.chain();
		
		$('#demo-linker')
			.items('link', '#demo-persons', 'selected')
			.chain(function(){
				var self = this;
				
				self.find(':input').keydown(function(){
					setTimeout(function(){
						self.item({
							first: self.find('.first').val(),
							last: self.find('.last').val()
						})
					}, 0)
				})
			})
	}
	
	demo.allTogether = function()
	{
		
		$('#demo-sortable1')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable({accept:'sortable'})
			.selectable({multiple:true, drag:true})
			.chain();
		
		$('#demo-sortable2')
			.items([
				{first:'Isaac', last:'Newton'},
				{first:'Johannes', last:'Keppler'},
				{first:'Alessandro', last:'Volta'},
				{first:'Blaise', last:'Pascal'}
			])
			.sortable({accept:'sortable'})
			.selectable({multiple:true, drag:true})
			.chain();
	}
	
})(MyJQ);