// User registeration form
function registerForm(form) {
	var username = form.username;
	var email = form.email;
	var password = form.password;
	var confirm = form.confirm;
	
	// Username field empty
	if(trim(username.value) == "") {
		$(username).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your username.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Email field empty
	} else if(trim(email.value) == "") {
		$(email).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your email.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Password field empty
	} else if(trim(password.value) == "") {
		$(password).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your password.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Confirm field empty
	} else if(trim(confirm.value) == "") {
		$(confirm).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please confirm your password.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Password and confirm values do not match
	} else if (trim(password.value) != trim(confirm.value)) {
		$(password).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
			$(confirm).css('background', '#FFFFFF');
		});
		$(confirm).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
			$(password).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Password and confirm values do not match.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Success!
	} else {
		$.post('/account/registerPost',
			{username: username.value, email: email.value, password: password.value, confirm: confirm.value},
			function(data) {
				if (data == '') {
					document.location = '/account/settings';
					
				} else {
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html(data).removeClass('success').addClass('error').fadeIn('slow');
					});
				}
			});
	}
	
	return false;
}

// Forgot password form
function forgotForm(form) {
	var email = form.email;
	
	// Email field empty
	if(trim(email.value) == "") {
		$(email).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your email.').addClass('error').fadeIn('slow');
		});
		return false;
	
	// Success!
	} else {
		$.post('/account/forgotPost',
			{email: email.value},
			function(data) {
				if (data == '') {
					$('#' + form.id + ' :input').val('');
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html('A newly generated password has been sent to your email.').removeClass('error').addClass('success').fadeIn('slow');
					});
				} else {
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html(data).removeClass('success').addClass('error').fadeIn('slow');
					});
				}
			});
	}
	
	return false;
}

// Update profile form
function updateProfileForm(form) {
	var hometown = form.hometown.value;
	var fav_artist = form.fav_artist.value;
	var fav_album = form.fav_album.value;
	var occupation = form.occupation.value;
	var website = form.website.value;
	var lastfm_username = form.lastfm_username.value;
	
	$.post('/account/updateProfilePost',
		{hometown: hometown, fav_artist: fav_artist, fav_album: fav_album, occupation: occupation, website: website, lastfm_username: lastfm_username});
		$('#' + form.id).find('.form_msg').html('Profile updated!.').addClass('success').fadeIn('slow');

		return false;
}

// Update password form
function updatePasswordForm(form) {
	var oldpassword = form.oldpassword;
	var newpassword = form.newpassword;
	var confirm = form.confirm;
	
	// Old password field empty
	if(trim(oldpassword.value) == "") {
		$(oldpassword).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your old password.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
	
	// New password field empty
	} else if(trim(newpassword.value) == "") {
		$(newpassword).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your new password.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Confirm password field empty
	} else if(trim(confirm.value) == "") {
		$(confirm).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please confirm your password.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Confirm password field empty
	} else if(trim(newpassword.value) != trim(confirm.value)) {
		$(newpassword).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$(confirm).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Password and confirm values do not match.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
	
	// Success!
	} else {
		$.post('/account/updatePasswordPost',
			{oldpassword: oldpassword.value, newpassword: newpassword.value},
			function(data) {
				if (data == '') {
					$('#' + form.id + ' :input[type=password]').val('');
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html('Password updated!').removeClass('error').addClass('success').fadeIn('slow');
					});
				} else {
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html(data).removeClass('success').addClass('error').fadeIn('slow');
					});
				}
			});
	}
	
	return false;
}

// Update notification form
function updateNotificationsForm(form) {
	var vote_notice = (form.vote_notice.checked ? 1 : 0);
	var comment_notice = (form.comment_notice.checked ? 1 : 0);
	var reply_notice = (form.reply_notice.checked ? 1 : 0);
	var thread_notice = (form.thread_notice.checked ? 1 : 0);
	var post_reply_notice = (form.post_reply_notice.checked ? 1 : 0);
	
	$.post('/account/updateNotificationsPost',
		{vote_notice: vote_notice, comment_notice: comment_notice, reply_notice: reply_notice, thread_notice: thread_notice, post_reply_notice: post_reply_notice});
	$('#' + form.id).find('.form_msg').html('Notification settings updated!.').addClass('success').fadeIn('slow');
	
	return false;
}

// Update user's profile icon form
function updateUserIconForm(form) {
	var icon = $('#'+ form.id + ' :input:radio[@name=icon]:checked').val();
	
	$.post('/account/updateUserProfileIconPost',
		{icon: icon});
	$('#' + form.id).find('.form_msg').html('User icon updated!.').addClass('success').fadeIn('slow');
	
	return false;
}

// Update user's rhyme history by updating page numbers
function loadRhymeHistoryPages(userid) {
	$('#history_navigation').find('.navi_item').removeClass('curr_navi');
	$('.rhyme_history').addClass('curr_navi');
	
	$.post('/account/loadHistoryPages/',
		{userid: userid, func: 'RhymeHistory', perpage: 10},
		function(data) {
			$('#history_pagination').html(data);
			loadRhymeHistoryContent(userid, 1);
		});
}

// Update user's content history by updating rhyme history content
function loadRhymeHistoryContent(userid, page) {
	$('#history_content').empty();
	$('.loading').fadeIn('slow', function() {
		$.post('/account/loadRhymeHistoryContent/',
			{userid: userid, page: page},
			function(data) {
				$('.loading').fadeOut('fast', function() {
					$('#history_content').html(data);
				});
			});
	});
}

// Update user's comment history by updating page numbers
function loadCommentHistoryPages(userid) {
	$('#history_navigation').find('.navi_item').removeClass('curr_navi');
	$('.comment_history').addClass('curr_navi');
	
	$.post('/account/loadHistoryPages/',
		{userid: userid, func: 'CommentHistory', perpage: 25},
		function(data) {
			$('#history_pagination').html(data);
			loadCommentHistoryContent(userid, 1);
		});
}

// Update user's content history by updating comment history content
function loadCommentHistoryContent(userid, page) {
	$('#history_content').empty();
	$('.loading').fadeIn('slow', function() {
		$.post('/account/loadCommentHistoryContent/',
			{userid: userid, page: page},
			function(data) {
				$('.loading').fadeOut('fast', function() {
					$('#history_content').html(data);
				});
			});
	});
}

// Update user's favorite rhymes by updating page numbers
function loadFavoriteRhymesPages(userid) {
	$('#history_navigation').find('.navi_item').removeClass('curr_navi');
	$('.favorite_rhymes').addClass('curr_navi');
	
	
	$.post('/account/loadHistoryPages/',
		{userid: userid, func: 'FavoriteRhymes', perpage: 10},
		function(data) {
			$('#history_pagination').html(data);
			loadFavoriteRhymesContent(userid, 1);
		});
}

// Update user's content history by updating favorite rhymes content
function loadFavoriteRhymesContent(userid, page) {
	$('#history_content').empty();
	$('.loading').fadeIn('slow', function() {
		$.post('/account/loadFavoriteRhymesContent/',
			{userid: userid, page: page},
			function(data) {
				$('.loading').fadeOut('fast', function() {
					$('#history_content').html(data);
				});
			});
	});
}

// Add new spit form
function addSpitForm(form) {
	var spit = form.spit.value;
	var char_remaining = 80 - form.spit.value.length;
	
	// No spit or spit is too long
	if(trim(spit) == "" || char_remaining < 0) {
		return false;
		
	// Success!
	} else {
		$('#' + form.id).find('button').hide();
		$.post('/content/spitPost',
			{spit: spit},
			function(data) {
				$('#' + form.id + ' :input').val('');
				$('#recent_spits').prepend('<div class="recent_spit">' + spit + '</div>');
				$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
					$(this).html('You just hocked a nasty loogie!').addClass('success').fadeIn('slow',
					function() {
						setTimeout('5000');
						$('#' + form.id).find('button').val('Spit!').show();
					});
				});	
			});
	}
	
	return false;
}

// Remove a spit
function spitRemove(spitid) {
	var answer = confirm('Are you sure you want to remove this spit?');
	
	if (answer) {
		$.post('/account/removeSpitPost',
		{spitid: spitid},
		function(data){
			$('#spit-' + spitid).fadeOut('slow');
		});
	}
	
	return false;
}

$(document).ready(function() {	
	
	/* Artist search field Autocomplete */
	$('#fav_artist').autocomplete('/content/artistSearch', {
		delay: 10,
		autoFill: true,
		selectFirst: true,
		loadingClass: 'ac_loading',
		maxItemsToShow: 10
	});
	
	/* Album search field Autocomplete */
	$('#fav_album').autocomplete('/content/albumSearch', {
		delay: 10,
		autoFill: true,
		selectFirst: true,
		loadingClass: 'ac_loading',
		maxItemsToShow: 10
	});
	
	/* Upload picture form */
	if ($('#picture_uploaded').size() > 0) {
		new AjaxUpload('#picture_uploaded', {
			action: '/account/uploadPicturePost/',
			name: 'picture_uploaded',
			onComplete: function(file, response) {
				if (response != '') {
					$('#form_upload_picture').find('.form_msg').html(response).addClass('error').fadeIn('slow');
				} else {
					$('#form_upload_picture').find('.form_msg').html('Profile picture uploaded!').addClass('success').fadeIn('slow');
				}
			}
		});
	}
	
	/* Upload icon form */
	if ($('#icon_uploaded').size() > 0) {
		new AjaxUpload('#icon_uploaded', {
			action: '/account/uploadIconPost/',
			name: 'icon_uploaded',
			onComplete: function(file, response) {
				if (response != '') {
					$('#form_upload_user_icon').find('.form_msg').html(response).addClass('error').fadeIn('slow');
				} else {
					$('#form_upload_user_icon').find('.form_msg').html('Icon uploaded!').addClass('success').fadeIn('slow');
				}
			}
		});
	}
});

