/**
 * @author BYK
 */

groups.namespace('people');

groups.people.editProfile = function()
{
	groups.modalBox.show(
		'editAll',
		{
			afterShow: function()
			{
				$LAB.script('datePicker.js');
				new ProtoTabs(
					'groups_editProfile',
					{
						contentInfo:
						{
							'tab_profile-content': {contentId: 'editProfile', replacements: x_peopleGetOwnProfileInfo},
							'tab_favorites-content': {contentId: 'editFavorites', replacements: x_peopleGetOwnFavourites},
							'tab_tags-content': {contentId: 'editTags', replacements: x_peopleGetOwnTags}
						}
					}
				);
			}
		}
	);
};

groups.people.editProfilePost = function(form)
{
	var namesurname = document.getElementById('namesurname').value = document.getElementById('namesurname').value.strip();
	
	if (!validateCompleteForm(form, 'error')) 
		return false;
	
	var args = [groups._info.membershipId, namesurname, document.getElementById('birthday').value, document.getElementById('myspace').value, document.getElementById('nationality').value, document.getElementById('sexe').value, (document.getElementById('dontshowmybirthyear').checked) ? 1 : 0];
	groups.ajaxCall('registerProfileX', args, 'Updating profile information...', groups.people._saveCallback);
};

groups.people.editTagsPost = function(form)
{
	if (!validateCompleteForm(form, 'error'))	
		return false;
	groups.ajaxCall('registerTagsX', [groups._info.membershipId, document.getElementById('yourtags').value], 'Updating tags...', groups.people._saveCallback);
};

groups.people.editFavouritesPost = function()
{
	var args = [groups._info.membershipId, document.getElementById('favsongs').value, document.getElementById('favsingers').value, document.getElementById('favmovies').value, document.getElementById('favactors').value, document.getElementById('favbooks').value, document.getElementById('favauthors').value, document.getElementById('favsportsmen').value, document.getElementById('favartists').value, document.getElementById('favcities').value];
	groups.ajaxCall('registerFavourites', args, 'Updating favourites...', groups.people._saveCallback);
};

groups.people._saveCallback = function(result)
{
	if (result == '1')
		groups.notifier.show('success', 'Information saved successfully. (You need to <a style="text-decoration:underline" href="javascript:void(document.location.reload(true))">refresh the page</a> to see the changes.)');
	else 
		groups.notifier.show('error', 'Oops, an error occured. Mind trying again?');
};

groups.people.removeFriend = function(membername)
{
	groups.ajaxCall('removeFromWatchlist', [membername], 'Removing friend...', groups.people._friendshipCallback)
};

groups.people._friendshipCallback = function(result)
{
	if (result == '0') 
	{
		groups.notifier.show('error', 'Oops, an error occured. Mind trying again?');
		return;
	}
	groups.notifier.hide();
	
	//dropout the friend icon or link
	if (result[0]) 
	{
		var friendshipItem = $('link_friendlist') || $('friend_request_' + result[1]);
		if (friendshipItem)
		{
			var table = friendshipItem.parentNode.parentNode;
			if (table.rows && table.rows.length == 2)
				friendshipItem = $('top_block_no_friend_request_div') || table;
			Effect.DropOut(friendshipItem, {afterfinish: (function(){friendshipItem.parentNode.removeChild(friendshipItem)}).delay(.5)});
		}
		groups.modalBox.hide();
	}
};

groups.people.rejectFriendRequest = function(membername)
{
	groups.ajaxCall('rejectFriendRequest', [membername], 'Ignoring friendship request...', groups.people._friendshipCallback);
};

groups.people.changeProfilePicutre = function()
{
	var replacements = 
	{
		groupName: groups._info.groupName
	}
	groups.modalBox.show('changeProfilePicture', 
	{
		replacements: replacements
	});
};

groups.people.uploadProfilePicture = function(form)
{
	groups.notifier.show('loader', 'Uploading image...');
	$LAB.script('prototype/cropper.js').wait(function(){form.submit()});
};

groups.people._uploadPhotoCallback = function(result)
{
	if (result.success) 
	{
		result.viewPath = '/wysiwyg_files/tmp/' + result.path;
		result.crop = 
		{
			top: 0,
			left: 0,
			width: result.width,
			height: result.height
		};
		groups.people._profilePictureInfo = result;
		groups.notifier.hide();
		groups.modalBox.show('cropProfilePicture', 
		{
			replacements: result,
			afterShow: function()
			{
				new Cropper.Img('avatar_to_crop', 
				{
					onEndCrop: groups.people.cropProfilePictureSetDimensions,
					displayOnInit: true,
					minHeight: 80,
					minWidth: 80,
					onloadCoords: 
					{
						x1: 10,
						y1: 10,
						x2: result.width - 10,
						y2: result.height - 10
					}
				});
			}
		});
	}
	else 
		groups.notifier.show('error', arguments.callee._errors[result.type]);
};

groups.people._uploadPhotoCallback._errors = ['The type of the image you have uploaded is invalid. Please use a different file.', 'The image you have uploaded is too big for us to resize. Please use a smaller image.', 'Oops, an error occured. Mind trying again?'];

groups.people.cropProfilePicture = function()
{
	groups.ajaxCall('cropCustomPicture', [groups.people._profilePictureInfo.path, groups.people._profilePictureInfo.crop.left, groups.people._profilePictureInfo.crop.top, groups.people._profilePictureInfo.crop.width, groups.people._profilePictureInfo.crop.height], 'Cropping image...', groups.people._cropProfilePictureCallback);
};

groups.people.cropProfilePictureSetDimensions = function(coords, dimensions)
{
	groups.people._profilePictureInfo.crop.left = coords.x1;
	groups.people._profilePictureInfo.crop.top = coords.y1;
	groups.people._profilePictureInfo.crop.width = dimensions.width;
	groups.people._profilePictureInfo.crop.height = dimensions.height;
};

groups.people._cropProfilePictureCallback = function(result)
{
	if (result == '1')
	{
		groups._info.avatarRevision = Date.parse(new Date());
		document.getElementById('profile_pic').src = groups._info.avatarURLFormat.format(groups._info);
		groups.notifier.hide();
		groups.modalBox.hide();
	}
	else 
		groups.notifier.show('error', 'Oops, an error occured. Mind trying again?');
};

groups.people.editProfileQuestions = function()
{
	groups.modalBox.showLoading();
	x_getOwnProfileQuestionsForm(groups.people.editProfileQuestions._contentLoaded);
};

groups.people.editProfileQuestions._contentLoaded = function(response)
{
	var replacements = 
	{
		questionsForm: response
	};
	groups.modalBox.show('editProfileQuestions', 
	{
		replacements: replacements
	});
};

groups.people.editProfileQuestionsPost = function()
{
	groups.ajaxCall('submitProfileAnswers', [Form.serialize('profile_questions_form')], 'Updating profile questions\' answers...');
};

groups.people.showAllFriends = function()
{
	$('view_85418732').hide();
	$('hidden_85418732').show();
};

groups.people.showAllFans = function()
{
	$('view_85418733').hide();
	$('hidden_85418733').show();
};

groups.people.removePoke = function(who)
{
	groups.ajaxCall('removePoke', [who], 'Removing poke...', groups.people._pokeCallback);
};

groups.people._pokeCallback = function(result)
{
	if (!result[0]) 
	{
		groups.notifier.show('error', result[1]);
		return;
	}
	groups.notifier.hide();
	var pokeField = $('poke_' + result[1]);
	if (pokeField)
		Effect.DropOut(pokeField);
};

groups.people.removeMemberAvatar = function(username)
{
	if (confirm(groups.i18n("Are you sure?"))) 
		groups.ajaxCall('removeMemberAvatar', [username], 'Removing member\'s avatar...', groups.people._removeMemberAvatarCallback);
};

groups.people._removeMemberAvatarCallback = function(result)
{
	groups.notifier.hide();
	if (!result)
		groups.notifier.show('error', 'Oops, an error occured. Mind trying again?');
	else
		document.getElementById('profile_pic').src = groups._info.defaultAvatar;
};

groups.people.freezeProfile = function(member, unfreeze)
{
	groups.ajaxCall('freezeProfile', [member, unfreeze], (unfreeze ? 'Unfreezing' : 'Freezing') + ' profile...', groups.people._freezeProfileCallback);
};

groups.people._freezeProfileCallback = function(result)
{
	if (!result)
		groups.notifier.show('error', 'Oops, an error occured. Mind trying again?');
	else
	{
		groups.notifier.hide();
		$('unfreeze_link')[(result[1] == '1') ? 'hide' : 'show']();
		$('freeze_link')[(result[1] == '1') ? 'show' : 'hide']();
	}
};
