var i4_Drag_drop = {
	
	create: function(params) {
		// console.log(params);
		this.make_draggable(params);

		Droppables.add(params.id_list_1, {
			onDrop: (function(dragged, dropped, event){
				dragged.hide();
				
				$(params.id_list_1).insert({
					top: new Element(dragged.tagName, {
						id: dragged.readAttribute('id')
					}).update(dragged.innerHTML)
				});
				dragged.remove();
				
				this.make_draggable(params);
			}).bind(this),
			containment: params.id_list_2,
			hoverclass: 'hover'
		});

		Droppables.add(params.id_list_2, {
			onDrop: (function(dragged, dropped, event){
				dragged.hide();
				
				$(params.id_list_2).insert({
					top: new Element(dragged.tagName, {
						id: dragged.readAttribute('id')
					}).update(dragged.innerHTML)
				});
				dragged.remove();
				
				this.make_draggable(params);
			}).bind(this),
			containment: params.id_list_1,
			hoverclass: 'hover'
		});
		
		this.store(params);
	
	}, // i4_Drag_drop.create()
	
	make_draggable: function(params) {
		$$('#'+params.id_list_1+' li').each( (function(item){
			
			new Draggable(item.readAttribute('id'), {
				revert: true,
				onDrag: function(dragged){
					dragged.element.addClassName('dragged');
				},
				onEnd: (function(dragged){
					dragged.element.removeClassName('dragged');
					this.store(params);
				}).bind(this)
			});
			
			item.setStyle({
				'cursor': 'move'
			});
		}).bind(this));
		
		$$('#'+params.id_list_2+' li').each( (function(item){

			new Draggable(item.readAttribute('id'), {
				revert: true,
				onDrag: function(dragged){
					dragged.element.addClassName('dragged');
				},
				onEnd: (function(dragged){
					dragged.element.removeClassName('dragged');
					this.store(params);
				}).bind(this)
			});
			
			item.setStyle({
				'cursor': 'move'
			});
		}).bind(this));
	}, // i4_Drag_drop.make_draggable()
	
	store: function(params) {
		
		// store list 1
		var value = '';
		$$('#'+params.id_list_1+' li').each(function(item){
			value += item.readAttribute('id').split('_').reverse()[0]+',';
		});
		
		
		
		$(params.id_list_1).up().next('input[type=hidden].drag_drop_list_1').setValue(value);
		
		// store list 2
		// @todo...
		
	} // i4_Drag_drop.store()

} // i4_Drag_drop
