function myutead_init()
{
	var columns = $$('.column');
	var selected_module = null;
	var selected_module_pointer_offset = new Array();
	var reserved_module = null;
	
	document.observe('mousemove', function(event) {
		if(selected_module != null)
		{
			selected_module.setStyle({
				left: (event.pointerX() - selected_module_pointer_offset[0])+'px',
				top: (event.pointerY() - selected_module_pointer_offset[1])+'px'
			});
			var contained_column = columns.find(function(column) {
				var offset = column.cumulativeOffset();
				return event.pointerX() > offset[0] && event.pointerX() < offset[0] + column.getWidth();
			});
			if(!Object.isUndefined(contained_column))
			{
				var modules = contained_column.childElements();
				
				var first_module = modules.first();
				var last_module = modules.last();
				var more = true;
				
				if(!Object.isUndefined(first_module))
				{
					var first_module_offset = first_module.cumulativeOffset();
					var last_module_offset = last_module.cumulativeOffset();
					if(event.pointerY() < first_module_offset[1])
					{
						contained_column.insert({
							'top': selected_module.up()
						});
						more = false;
					}
					else if(event.pointerY() > last_module_offset[1])
					{
						contained_column.insert({
							'bottom': selected_module.up()
						});
						more = false;
					}
				}
				else
				{
					contained_column.insert({
						'top': selected_module.up()
					});
					more = false;
				}
				
				if(more)
				{
					var displaced_module = modules.find(function(module) {
						var offset = module.cumulativeOffset();
						return event.pointerY() > offset[1] && event.pointerY() < offset[1] + module.getHeight();
					});
					if(!Object.isUndefined(displaced_module))
					{
						var offset = displaced_module.cumulativeOffset();
						if(event.pointerY() < offset[1] + displaced_module.getHeight()/2)
						{
							displaced_module.insert({
								'before': selected_module.up()
							});
						}
						else
						{
							displaced_module.insert({
								'after': selected_module.up()
							});
						}
					}
				}
			}
		}
	});
	
	document.observe('mouseup', function() {
		if(selected_module != null)
		{
			selected_module.removeClassName('selected_module');
			selected_module.setStyle({
				position: '',
				opacity: 1.0,
				width: '',
				height: '',
				left: '',
				top: ''
			});
			selected_module = null;
		}
		if(reserved_module != null)
		{
			reserved_module.up().removeChild(reserved_module);
			reserved_module = null;
		}
	});
	
	document.observe('mousedown', function(event) {
		var ele = Event.element(event);
		if(ele.hasClassName('title_wrapper'))
		{
			ele = ele.up('.myutead_module');
			/* reserve_module stuff */
			var reserve_module = new Element('div', { 'class': 'myutead_reserved_module' });
			reserve_module.setStyle({
				position: 'relative',
				width: ele.getWidth() -4 +'px', //border is 2px on left and right
				height: ele.getHeight() -4 +'px' //border is 2px on top and bottom
			});
			reserve_module.setStyle({
				width: ele.getWidth(),
				height: ele.getHeight()
			});
			reserve_module.appendChild(document.createTextNode('\u200b'));
			reserved_module = reserve_module;
			ele.up().insert(reserved_module);
			
			/* selected_module stuff */
			selected_module = ele;
			var initial_offset = selected_module.cumulativeOffset();
			selected_module_pointer_offset[0] = event.pointerX() - initial_offset[0];
			selected_module_pointer_offset[1] = event.pointerY() - initial_offset[1];
			selected_module.addClassName('selected_module');
			selected_module.setStyle({
				position: 'absolute',
				opacity: 0.8,
				width: ele.getWidth() -2 +'px', //border is 1px on left and right
				height: ele.getHeight() -2 +'px', //border is 1px on top and bottom
				left: (event.pointerX() - selected_module_pointer_offset[0])+'px',
				top: (event.pointerY() - selected_module_pointer_offset[1])+'px'
			});
			Event.stop(event);
		}
		else if(ele.hasClassName('collapse_icon'))
		{
			var siblings = ele.up('.title_wrapper').siblings().invoke('hide');
			ele.removeClassName('collapse_icon').addClassName('expand_icon');
			Event.stop(event);
		}
		else if(ele.hasClassName('expand_icon'))
		{
			var siblings = ele.up('.title_wrapper').siblings().invoke('show');
			ele.removeClassName('expand_icon').addClassName('collapse_icon');
			Event.stop(event);
		}
		else if(ele.hasClassName('close_icon'))
		{
			ele.up('.myutead_module_wrapper').remove();
			Event.stop(event);
		}
	});
}