	//--------------
	// Manipulations with blocks
	//--------------
	// sorting blocks in profile
	function blocks_startSorting()
	{
		$('#startSorting, #showContainment').hide();
		$('#saveSorting, #cancelSorting, #hideContainment').show();
		$('#profile_info td.sortgroup table.header').css('cursor', 'move');
		$('#sortings input, #sortings textarea, #sortings select, #sortings button').attr('disabled', 'true');
		$('#sortings a').removeAttr('onclick').bind('click', function(){
			myalert(get_title('sortingMode'), get_body('sortingMode'), function(){});
			return false; 
		});
		$(window).keyup(function(event){
			if (event.keyCode == 27)// On Escape
				$('#cancelSorting').click();
		});
		$('#profile_info .sortgroup').Sortable(
			{
				accept: 'sorting',
				helperclass: 'sortHelper',
				handle: 'table.header',
				tolerance: 'pointer',
				opacity: 0.6,
				onStart: function()	{$.iAutoscroller.start(this, document.body);},
				onStop: function()	{$.iAutoscroller.stop();}
			}
		);
	}
	
	// save sorted blockes.
	function blocks_saveSorting(myurl, number_cols)
	{
		for (var i=0; i<number_cols; ++i)
			myurl += '&'+($.SortSerialize('column'+(i+1)).hash);
		$('#sortings').load(myurl);
		blocks_resetSorting();
	}
	
	// cancel saving sorting blocks.
	function blocks_cancelSorting(myurl)
	{
		$('#sortings').load(myurl);
		blocks_resetSorting();
	}
	
	//
	function blocks_resetSorting()
	{			
		$(window).unbind('keyup');// Remove Key Handler Escape
		$('#controlPanel [id$="Sorting"], #controlPanel [id$="Containment"]').hide();
		$('#controlPanel #startSorting').show();
	}
	
	//
	function blocks_del_block(el)
	{
		var contentId = el.id.replace(/_delete_btn/i, '');
		ajaxHref(el, contentId, 'ajax=');
	}
	
	//
	function blocks_show_hide_content(el)
	{
		$('#sortings .sorting .containment').slideToggle(100, function()
		{
			$('[id$="Containment"]').hide();
			//showContainment & hideContainment
			$('#'+($(this).css('display') == 'none' ? 'show' : 'hide')+'Containment').show();
		});
	}
	
	function add_block_compose(profile, types)
	{
		var type = $('#block_type').val();
		$('#add_block_'+type).show();
		$('#add_blocks_choose').load(BASE_MEDIA_URL+'gallery', '', function() {add_block_change();});
		var func_name = profile+'PrivacyMenu';
		for (var i=0; i<types.length; ++i)
		{
			eval("$('#block_privacy_"+types[i]+"')."+func_name+"();");
		}
	}
	function add_block_change()
	{
		$('#add_blocks_choose .modal_wnd h3').remove();
		$('#add_blocks_choose .modal_wnd .content input:last-child').remove();
		$.repositionDialog();
	}
	//
	function add_block_change_type(type)
	{
		$('#add_blocks form.add_block').hide();
		$('#add_block_'+type).show();
		if (type == 'text' || type == 'rich_text')
		{
			$('.add_block_popup').width(500);
			$('.add_block_popup #add_blocks_choose').parent().width(0);
		} else
		{
			$('.add_block_popup').width('80%');
			$('.add_block_popup #add_blocks_choose').parent().width(400);
		}
		if (type != 'text' && type != 'rich_text')
			$('#add_blocks_choose').load(BASE_MEDIA_URL+(type == 'video' ? 'video' : 'gallery'), '', function(){add_block_change();});
		else
			$('#add_blocks_choose').html('');
		$.repositionDialog();
	}
	
	//
	function add_block_set_content_id(media_id, params)
	{
		if (!media_id)
			return true;
		var type_el = $('#block_type');
		if (type_el.val() == 'photo')
			type = 'image';
		else
			type = type_el.val();
		$('#choose_'+type+'_media').html('<img src="'+params.base_url+'/mini/'+(params.video_preview ? params.video_preview : params.filename)+'" />');
		$('#content_id_'+type).val(media_id);
		$.repositionDialog();
		return false;
	}
	
	//
	function add_block_check_type_content(form)
	{
		var type = '';
		if (form.block_name.value == 'photo')
			type = 'image';
		else
			type = form.block_name.value;
		if ($('#content_id_'+type).val() == '0')
		{
			$('#choose_'+type+'_media').html($('#errSelMedia').parent().html());
			$.repositionDialog();
			return false;
		}
		return true;
	}
	function add_block_submit_form()
	{
		var type = $('#block_type').val();
		$('#add_block_'+type)[0].onsubmit();
	}
	//
	function friends_delete_friend(el, add)
	{
		var url = el.href+'&'+add;
		$('#friend-list').load(url);
		if ($('#friend-list').length == 0)
			location.reload();//TODO
	}
	//
	function members_delete_member(el, add)
	{
		var href = $(el).attr("href");
		var url = href+'&'+add;
		$('#member-list').load(url);
		if ($('#member-list').length == 0)
			location.reload();
	}
	
	//	Make read letter in messages application
	function make_read(el)
	{
		el = $(el);
		$.get(el.attr('href')+'&ajax='); 
		el.parent().fadeOut(function(){$(this).remove()});
		el.parent().parent().parent().next().find('.msg').removeClass('bold');
		return false;
	}
	
	function del_msgs()
	{
		if($('.checks:checked').length > 0)
		{
			$('#action_msg').val('delete');
			myconfirm(get_title('delMsgs'), get_body('delMsgs'), function() {$('#msgForm').get(0).onsubmit();});
		}
		return false;
	}
	function msgs_check_all()
	{
		$('.checks').attr('checked','checked');
		return false;
	}
	function msgs_uncheck_all()
	{
		$('.checks').removeAttr('checked');
		return false;
	}
	function act_completed()
	{
		$('#act_completed').show(1000);
		$('#act_completed').fadeOut(4000);
	}


	// Render change privacy drop down menu
	(function($) { 
		var opt = "";
		
		// Common function for privacy menu
		$.fn.privacyMenu = function( options )
		{
			opt = options;
			var items = options.items;
			var id_count = this.length;
			for (var i=0; i<id_count; ++i)
			{
				var input_id = $(this[i]).attr("input_id");
				initPrivacyMenuByElement(this[i], $("#"+input_id), items);
			}
		};
		
		// Helper for user privacy
		$.fn.userPrivacyMenu = function() {
			var options = {
				menuSelectedClass: "priv_open",
				itemSelectedClass: "priv_selected",
				items: [
					{value: "0", classname: "priv_all", title: "Доступно всем"},
					{value: "1", classname: "priv_friend", title: "Доступно друзьям" },
					{value: "2", classname: "priv_private", title: "Доступно только мне" }
				]
			};
			this.privacyMenu( options );
		};
		
		// Helper for club privacy in collector for blocks
		$.fn.clubPrivacyMenu = function() {
			var options = {
				menuSelectedClass: "priv_open",
				itemSelectedClass: "priv_selected",
				items: [
					{value: "0", classname: "priv_all", title: "Доступно всем"},
					{value: "1", classname: "priv_friend", title: "Доступно одноклубникам" },
					{value: "2", classname: "priv_private", title: "Доступно администрации" }
				]
			};
			this.privacyMenu( options );
		};

		// Helper for event privacy in collector for blocks
		$.fn.eventPrivacyMenu = function() {
			var options = {
				menuSelectedClass: "priv_open",
				itemSelectedClass: "priv_selected",
				items: [
					{value: "0", classname: "priv_all", title: "Доступно всем"},
					{value: "1", classname: "priv_friend", title: "Доступно участникам" },
					{value: "2", classname: "priv_private", title: "Доступно администрации" }
				]
			};
			this.privacyMenu( options );
		};

		// create dynamic html
		var initPrivacyMenuByElement = function(el, inp_el, items) {
			el = $(el);
			var items_html = "";
			var items_count = items.length;
			var current_image = '<img class="priv_all" src="/i/blank.gif">';
			var selected_value = inp_el.val();
			
			for (var i=0; i<items_count; ++i)
			{
				var it = items[i];
				var is_selected = (selected_value == it["value"]);
				var img = '<img class="'+it["classname"]+ '" title="' + it["title"] + '" src="/i/blank.gif"></li>';
				var li_class = (is_selected ? opt.itemSelectedClass : "");
				if (is_selected)
					current_image = img;
				
				items_html += '<li pval="'+it["value"]+'" class="' + li_class + '">' + img + '</li>';
			}
			
			el.html('<span class="privacy_drop_menu_parent"><a class="'+ opt.menuSelectedClass +'" href="#" onclick="return false;">'+current_image+'</a>' +
				'<ul class="privacy_drop_menu">' + items_html + '</ul></span>'
			);
			
			// Show/hide menu event
			var open_el = el.find(".priv_open:first");
			var drop_menu = el.find(".privacy_drop_menu");
			open_el.click( function() {
				drop_menu.toggle();
				return false;
			});
			
			// On change privacy
			el.find("li").click( function () {
					var target = $(this);
					selectItem(target);
					inp_el.val(target.attr("pval"));
					open_el.html(target.html() );
					drop_menu.hide();
			});
			
		}

		// helper - hightlight li element
		var selectItem = function(target) {
			target.parent().find("li").removeClass(opt.itemSelectedClass);
			target.addClass(opt.itemSelectedClass);
		}
	})(jQuery);	

	// Helper for editor
	function editorChoiceMedia(media_type, texarea_id, add_url)
	{
		if (media_type == "photo")
			choicePhotoDialog("editor_add_result_" + texarea_id, add_url);
		else		
			choiceVideoDialog("editor_add_result_" + texarea_id, add_url);
	}

	// Choice photo modal window
	function choicePhotoDialog(callback_func, add_url)
	{
		var base_url = "/profile.php?popup=true&ajax=&mode=gallery&callback=" + callback_func + add_url;
		if ($('#in_modal').length)
		{
			$('#add_blocks_choose').load(base_url+'&content_only=', '', function(){add_block_change();});
			$('.add_block_popup').width('80%');
			$('.add_block_popup #add_blocks_choose').parent().width(400);
			return;
		}
		$("").createDialog({
	   		addr: base_url,
   			progress: false,
   			bg: '#000000',
   			opacity: 0.5
		});
	}
	
	// Choice video modal window
	function choiceVideoDialog(callback_func, add_url)
	{
		var base_url = "/profile.php?popup=true&ajax=&mode=video&callback=" + callback_func + add_url;
		if ($('#in_modal').length)
		{
			$('#add_blocks_choose').load(base_url+'&content_only=', '', function(){add_block_change();});
			$('.add_block_popup').width('80%');
			$('.add_block_popup #add_blocks_choose').parent().width(400);
			return;
		}
		$("").createDialog({
	   		addr: base_url,
   			progress: false,
   			bg: '#000000',
   			opacity: 0.5
		});
	}
	
	// add markup
	function textarea_insert(el_id, block) 
	{	
		el = $(el_id);
		el.focus();
		if (document.selection) {
			var newSelection = document.selection.createRange();
			newSelection.text = block;
		} 
		else {
			el.val( el.val() + block );
		}
	}
	
	function blog_bbcode_preview(put_to_id, tarea)
	{
		var text = $("#"+tarea).val();
		var mode = 'advanced';
		$.post("bbcode_preview.php", {str: text, mode: mode},
			function(data) {
				$("#"+put_to_id).html(data+"&nbsp;");
				$("#"+put_to_id).show();
			}
		)
	}
	function members_unjoin(add_url)
	{
		if (!add_url)
			return false;
		var url = '/profile.php?'+add_url+'&mode=members&act=unjoin&ajax=';
		$.get(url);
		document.location.reload(true);
	}
	
	function profile_init_background(base, background)
	{
		if (background && background.length > 0)
		$(document).ready(function(){
			$('#main-content').css('background-image', 'url('+base+background+')');
		});
	}