(function($){
	var updateUpDown = function(sortable){
		$('div:not(.ui-sortable-helper)', sortable)
			.removeClass('first').removeClass('last')
			.find('.up, .down').removeClass('disabled').end()
			.filter(':first').addClass('first').find('.up').addClass('disabled').end().end()
			.filter(':last').addClass('last').find('.down').addClass('disabled').end().end();
	};
	
	var moveUpDown = function(){
		var link = $(this),
			dl = link.parents('div'),
			prev = dl.prev('div'),
			next = dl.next('div');
	
		if(link.is('.up') && prev.length > 0)
			dl.insertBefore(prev);
	
		if(link.is('.down') && next.length > 0)
			dl.insertAfter(next);
	
		updateUpDown(dl.parent());
	};
	
	var addItem = function(){
		var sortable = $(this).parents('.ui-sortable');
		var options = 'updown';
		var tpl = '
- {name}' + options + '
 - {desc}
 
';
		var html = tpl.replace(/{name}/g, 'Dynamic name :D').replace(/{desc}/g, 'Description');
	
		sortable.append(html).sortable('refresh').find('a.up, a.down').bind('click', moveUpDown);
		updateUpDown(sortable);
	};
	
	//var emptyTrashCan = function(item){
	//	item.remove();
	//};
	
	var sortableChange = function(e, ui){
		if(ui.sender){
			var w = ui.element.width();
			ui.placeholder.width(w);
			ui.helper.css("width",ui.element.children().width());
		}
	};
	
	var sortableUpdate = function(e, ui){
		//if(ui.element[0].id == 'trashcan'){
		//	emptyTrashCan(ui.item);
		//} else {
			updateUpDown(ui.element[0]);
			if(ui.sender)
				updateUpDown(ui.sender[0]);
		//}
	};
	
	// toggle content panel
	var togglePanel = function(e) {
		var targetContent = $('div.panelcontent', this.parentNode.parentNode);
			if (targetContent.css('display') == 'none') {
				targetContent.slideDown(400);
				$(this).html('[-]');
				$(this).css("color","#cccccc");
			} else {
				targetContent.slideUp(400);
				$(this).html('[+]');
				$(this).css("color","#666666");
			}
		return false;
	};
	
	// toggle edit panel
	var editpanel = function(e) {
		var targetEditPanel = $('div.editpanel', this.parentNode.parentNode);
			if (targetEditPanel.css('display') == 'none') {
				targetEditPanel.slideDown(400);
			} else {
				targetEditPanel.slideUp(400);
			}
			$(this).toggleClass("active"); return false;
		return false;
	};
	
	$(document).ready(function(){
				
		// toggle edit panel 
		$('a.button_editpanel').bind('click', editpanel);
		
		// toggle content panel
		$('a.togglepanel').bind('click', togglePanel);
		var els = ['#mainContent', '#sidebar_right'];
		var $els = $(els.toString());
		
		//$('h2', $els.slice(0,-1)).append('add');
		//$('dt', $els).append('updown');
		
		//$('a.add').bind('click', addItem);
		//$('a.up, a.down').bind('click', moveUpDown);
		
		//$els.each(function(){
		//	updateUpDown(this);
		//});
		
		$els.sortable({
			items: '> div',
			handle: 'h1',
			cursor: 'move',
			//revert: true,
			cursorAt: { top: 10, left: 100 },
			//opacity: 0.8,
			containment: 'parent',
			appendTo: 'body',
			placeholder: 'placeholder',
			connectWith: els,
			start: function(e,ui) {
				ui.helper.css("width", ui.item.width());
			},
			change: sortableChange,
			update: sortableUpdate
		});
	});
	
	$(window).bind('load',function(){
		setTimeout(function(){
			$('#overlay').fadeOut(function(){
				$('body').css('overflow', 'auto');
			});
		}, 450);
	});
})(jQuery);