var _root = '/';
var _ajaxUrl = _root + 'assets/php/ajax.php';
var _currentPage = 1;
var _currentSort = 'alpha';
var _previousPage = false;
var _nextPage = false;
var _browseActorId = -1;
var _browseDirectorId = -1;
var _browseGenreId = -1;
var _browseCategoryId = -1;
var _movieRecommendedCastMemberId = -1;
var _newCategoryId = -1;

var _FacebookApiKey = '7e5cb6e04ddc17914866f81ec5e6b5f5';
var _FacebookXdReceiver = _root + 'includes/facebook-platform/xd_receiver.htm';

$(document).ready(function() {

	if ($('#login #email').length > 0) LoginPage_Initialize();
	if ($('#movie').length > 0) MoviePage_Initialize();
	if ($('#person').length > 0) PersonPage_Initialize();
	if ($('#category').length > 0) CategoryPage_Initialize();
	if ($('#browse').length > 0) BrowsePage_Initialize();
	if ($('#new_search').length > 0) SearchPage_Initialize();
	if ($('#register').length > 0) RegisterPage_Initialize();
	if ($('#invites>#emails').length > 0) InvitePage_Initialize();
	
	$('#search_text').keypress(function(e) {
		if (e.keyCode == 13 && $(this).val() == '') return false;
	});
	$('#search input').click(function() {
		if ($('#search_text').val() == '') return false;
	});
	
});

function Facebook_Initialize(ApiKey, XdReceiver) {
	FB.init(ApiKey, XdReceiver, { 'reloadIfSessionStateChanged': true });
}

function LoginPage_Initialize() {
	
	$('#login #email').focus();
	
	$('#login #email').keypress(function(e) {

		if (e.keyCode == 13) {
			$('#btnLogin').trigger('click');
			return false;
		}
		
	});
	
	$('#login #password').keypress(function(e) {

		if (e.keyCode == 13) {
			$('#btnLogin').trigger('click');
			return false;
		}
		
	});
	
};
function MoviePage_Initialize() {
	
	MoviePage_Categories_Initialize();
	MoviePage_Cast_Initialize();




	$('#movie>#info>#add_to_collection>a').click(function() {
		
		switch ($(this).html()) {
			
			case 'Add to my collection':
				MoviePage_AddToCollection();
				break;

			case 'Remove from my collection':
				MoviePage_RemoveFromCollection();
				break;
				
		}
		
		return false;
	});
	
	$('#flag_as_porn>a').click(function() {
		MoviePage_FlagAsPorn();
		return false;
	});

	$('#movie>#categories>#add input').focus(function() {
		
		if ($(this).hasClass('empty'))
			$(this).removeClass('empty').val('');
		
	});
	$('#movie>#categories>#add input').blur(function() {
		
		if ($.trim($(this).val()) == '')
			$(this).addClass('empty').val('- Add a new movie category -');
		
	});
	$('#movie>#categories>#add input').keydown(function(e) {
		if (e.keyCode != 13) _newCategoryId = -1;
	});
	$('#movie>#categories>#add input').keypress(function(e) {
		if (e.which == 13) return MoviePage_AddCategory();
	});




	$('#movie>#cast>#missing_cast input').keydown(function(e) {
		if (e.keyCode != 13) _movieRecommendedCastMemberId = -1;
	});
	$('#movie>#cast>#missing_cast input').focus(function() {
		
		if ($(this).hasClass('empty'))
			$(this).removeClass('empty').val('');
		
	});
	$('#movie>#cast>#missing_cast input').blur(function() {
		
		if ($.trim($(this).val()) == '')
			$(this).addClass('empty').val('- Recommend a new cast member -');
		
	});
	$('#movie>#cast>#missing_cast input').keypress(function(e) {
		if (e.which == 13) return MoviePage_RecommendCastMember();
	});

	
	
	
};
function PersonPage_Initialize() {
	PersonPage_Movies_Initialize();
};
function CategoryPage_Initialize() {
	CategoryPage_Movies_Initialize();
};
function BrowsePage_Initialize() {

	var page = 1;

	var href = window.location.href;
	if (href.indexOf('/page/') != -1) {
		var hrefSplit = href.split('/');
		page = hrefSplit[hrefSplit.length - 1];
	}

	_currentSort = $('#browse>#results>#sort>select').val();
	BrowsePage_Browse(page, _currentSort);

	$('#browse>#filters>#clear_filters').click(function() {

		$.getJSON(
			_ajaxUrl + '?action=clearfilters',
			function(json) {
				if (json.success) {
					BrowsePage_Browse(1, _currentSort);
				}
				else {
					alert(json.message);
				}
			}
		);
		
		return false;
	});
	
	$('#browse>#filters>div>ul>li input').focus(function() {
		
		if ($(this).hasClass('empty') && $(this).val().substring(0, 12))
			$(this).removeClass('empty').val('');
		
	});
	$('#browse>#filters>div>ul>li input').blur(function() {
		
		if ($.trim($(this).val()) == '')
			$(this).addClass('empty').val('- Add a new ' + $(this).parent().parent().parent().parent()[0].id + ' -');
		
	});
	$('#browse>#results>ul.page_nav>li.previous_page>a').click(BrowsePage_PreviousPage);
	$('#browse>#results>ul.page_nav>li.next_page>a').click(BrowsePage_NextPage);
	$('#browse>#results>#sort>select').change(BrowsePage_SortChanged);
		
	$('#browse>#filters>div>ul>li input').keydown(function() {
		_browseActorId = -1;
		_browseDirectorId = -1;
		_browseGenreId = -1;
		_browseCategoryId = -1;
	});
	$('#browse>#filters>div>ul>li input').keypress(function(e) {
		if (e.keyCode == 13) {

			var filterTypeId;
			var filterValueId;
			switch ($(this).parent().parent().parent().parent()[0].id) {
				
				case 'actor':
					filterTypeId = 1;
					filterValueId = _browseActorId;
					break;
				
				case 'director':
					filterTypeId = 2;
					filterValueId = _browseDirectorId;
					break;
				
				case 'genre':
					filterTypeId = 3;
					filterValueId = _browseGenreId;
					break;
				
				case 'category':
					filterTypeId = 4;
					filterValueId = _browseCategoryId;
					break;
				
			};
			
			if (filterValueId != -1) BrowsePage_AddFilter($(this), filterTypeId, filterValueId);
			
			return false;
		}
	});

}
function SearchPage_Initialize() {
	
	$('#new_search #txtSearch').focus();
	
	$('#new_search #txtSearch').keypress(function(e) {

		if (e.keyCode == 13) {
			$('#btnSearch').trigger('click');
			return false;
		}
		
	});

};
function RegisterPage_Initialize() {

	$('#username').focus();

}
function InvitePage_Initialize() {
	
	setTimeout('$(\'#invites>#emails>ol>li>ul>li>input:first\').val(\'\').removeClass(\'empty\').focus()', 1);
	
	InvitePage_BindEvents();
	
}
function InvitePage_BindEvents() {

	$('#invites>#emails>ol>li>ul>li>input').unbind('keypress');
	$('#invites>#emails>ol>li>ul>li>input').keypress(function(e) {
		
		switch (e.keyCode) {
			
			case 13: // Enter
				InvitePage_AddInvite($(this));
				return false;
				break;
			
		}
		
	});
	
	$('#invites>#emails>ol>li>ul>li>input').unbind('focus');
	$('#invites>#emails>ol>li>ul>li>input').focus(function() {
		
		if ($(this).parent().hasClass('empty')) {
			$(this).parent().removeClass('empty');
			$(this).val('').select();
		}
		
	})

	$('#invites>#emails>ol>li>ul>li>input').unbind('blur');
	$('#invites>#emails>ol>li>ul>li>input').blur(function() {
		
		if ($(this).val() == '') {
			$(this).parent().addClass('empty');
			$(this).val('-Email-');
		}
		
	});
	
	$('#invites>#emails>ol>li>ul>li.resend>a').unbind('click');
	$('#invites>#emails>ol>li>ul>li.resend>a').click(function() {
		InvitePage_Resend($(this));
		return false;
	});

}




function MoviePage_Categories_Initialize() {

	$('#categories>ul>li>div.ratings>div.my_rating>ul>li>a').unbind('mouseover');
	$('#categories>ul>li>div.ratings>div.my_rating>ul>li>a').mouseover(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];
		var rating = idSegments[3];
		
		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);return false;

		$('#movies>#categories>ul>li>div.ratings>div>ul>li').removeClass('selected');
		$('#category_' + categoryId + ' .my_rating>ul>li').removeClass('selected');
		for (var i = 1; i <= rating; i++) {
			$('#my_' + movieId + '_' + categoryId + '_' + i).addClass('selected');
		}

	});

	$('#categories>ul>li>div.ratings>div.my_rating>ul>li>a').unbind('click');
	$('#categories>ul>li>div.ratings>div.my_rating>ul>li>a').click(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];
		var rating = idSegments[3];
		
		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);return false;

		MoviePage_RateMovieCategory(movieId, categoryId, rating);

		return false;
	});

	$('#categories>ul>li>div.ratings>div.my_rating>ul').unbind('mouseout');
	$('#categories>ul>li>div.ratings>div.my_rating>ul').mouseout(function() {

		var id = $(this).find('li:first').attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];
		
		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId);return false;

		var classes = $(this).attr('class').split(' ');
		
		var rating = -1;
		for (var i = 0; i < classes.length; i++) {
			if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
				rating = classes[i].split('_')[1];
			}
		}

		MoviePage_UpdateMyCategoryRating(movieId, categoryId, rating);

	});
	
	$('#movie>#categories>ul>li>.report>a').click(function() {
		
		if ($(this).attr('class') == 'cancel')
			MoviePage_CancelReportMovieCategory($(this));
		else
			MoviePage_ReportMovieCategory($(this));
			
		return false;
	});

};
function MoviePage_RateMovieCategory(MovieId, CategoryId, Rating) {
	
	var oldRating = MoviePage_GetMyCategoryRating(MovieId, CategoryId);
	MoviePage_UpdateMyCategoryRating(MovieId, CategoryId, Rating);

	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'ratemoviecategory',
			movieid: MovieId,
			categoryid: CategoryId,
			rating: Rating
		},
		success: function(data) {
			if (data.success) {
				MoviePage_UpdateAverageCategoryRating(MovieId, CategoryId, data.votes, data.average);
			}
			else {
				MoviePage_UpdateMyCategoryRating(MovieId, CategoryId, oldRating);
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
	return false;

};
function MoviePage_GetMyCategoryRating(MovieId, CategoryId) {
	
	var classes = $('#category_' + CategoryId + '>div.ratings>div.my_rating>ul').attr('class').split(' ');
	for (var i = 0; i < classes.length; i++) {
		if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
			return classes[i].split('_')[1]
		}
	}
	
	return -1;
};
function MoviePage_UpdateMyCategoryRating(MovieId, CategoryId, Rating) {
	
	var obj = $('#category_' + CategoryId + '>div.ratings>div.my_rating>ul');
	obj.removeClass('rating_1').removeClass('rating_2').removeClass('rating_3').removeClass('rating_4').removeClass('rating_5').addClass('rating_' + Rating);

	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#my_' + MovieId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function MoviePage_UpdateAverageCategoryRating(MovieId, CategoryId, Votes, Rating) {
	
	var obj = $('#average_' + MovieId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + parseInt(Rating));
	
	obj.attr('title', Votes + ' votes');
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#average_' + MovieId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function MoviePage_ReportMovieCategory(obj) {
	if (!confirm('Are you sure you want to flag this category as inappropriate or inaccurate?')) return false;

	var movieId = $('#movie>#categories>ul>li>.ratings>.my_rating>ul>li')[0].id.split('_')[1];
	var categoryId = obj.parent().parent()[0].id.split('_')[1];
	
	//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId);return false;
	
	ShowMovieCategoryReportPopup(movieId, categoryId);
	
};
function MoviePage_CancelReportMovieCategory(obj) {

	var movieId = $('#movie>#categories>ul>li>.ratings>.my_rating>ul>li')[0].id.split('_')[1];
	var categoryId = obj.parent().parent()[0].id.split('_')[1];
	
	//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId);return false;
	
	$.getJSON(
		_ajaxUrl + '?action=cancelreportmoviecategory&movieid=' + movieId + '&categoryid=' + categoryId,
		function(json) {
			if (json.success) {
				$('#categories>ul>#category_' + categoryId + '>.report').html('<a href="' + _root + 'movies/' + movieId + '/categories/' + categoryId + '/report">Report</a>');
				MoviePage_Categories_Initialize();
			}
			else {
				alert(data.message);
			}
		}
	);
	
};
function ShowMovieCategoryReportPopup(MovieId, CategoryId) {
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'reportmoviecategory',
			movieid: MovieId,
			categoryid: CategoryId
		},
		success: function(data) {
			if (data.success) {
				$('#categories>ul>#category_' + CategoryId + '>.report').html('You have reported this category<a href="' + _root + 'movies/' + MovieId + '/categories/' + CategoryId + '/report/cancel" title="Cancel report" class="cancel">Cancel report</a>');
				MoviePage_Categories_Initialize();
			}
			else {
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
};




function MoviePage_Cast_Initialize() {

	$('#cast>ul>li>div.ratings>div.my_rating>ul>li>a').unbind('mouseover');
	$('#cast>ul>li>div.ratings>div.my_rating>ul>li>a').mouseover(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var rating = idSegments[4];
		
		//alert('MovieID: ' + movieId + '\r\nPersonID: ' + personId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);

		$('#person_' + personId + ' .my_rating>ul>li').removeClass('selected');
		for (var i = 1; i <= rating; i++) {
			$('#my_' + movieId + '_' + personId + '_' + categoryId + '_' + i).addClass('selected');
		}

	});

	$('#cast>ul>li>div.ratings>div.my_rating>ul>li>a').unbind('click');
	$('#cast>ul>li>div.ratings>div.my_rating>ul>li>a').click(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var rating = idSegments[4];

		return MoviePage_RateCastCategory(movieId, personId, categoryId, rating);

		return false;
	});

	$('#cast>ul>li>div.ratings>div.my_rating>ul').unbind('mouseout');
	$('#cast>ul>li>div.ratings>div.my_rating>ul').mouseout(function() {

		var id = $(this).find('li:first').attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var classes = $(this).attr('class').split(' ');
		var rating = -1;
		for (var i = 0; i < classes.length; i++) {
			if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
				rating = classes[i].split('_')[1];
			}
		}

		MoviePage_UpdateMyCastCategoryRating(movieId, personId, categoryId, rating);

	});
	
};
function MoviePage_RateCastCategory(MovieId, PersonId, CategoryId, Rating) {

	var oldRating = MoviePage_GetMyCastCategoryRating(MovieId, PersonId, CategoryId);
	MoviePage_UpdateMyCastCategoryRating(MovieId, PersonId, CategoryId, Rating);
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'ratecastcategory',
			movieid: MovieId,
			personid: PersonId,
			categoryid: CategoryId,
			rating: Rating
		},
		success: function(data) {
			if (data.success) {
				MoviePage_UpdateAverageCastCategoryRating(MovieId, PersonId, CategoryId, data.votes, data.average);
			}
			else {
				MoviePage_UpdateMyCastCategoryRating(MovieId, PersonId, CategoryId, oldRating);
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
	return false;
	
};
function MoviePage_GetMyCastCategoryRating(MovieId, PersonId, CategoryId) {

	var classes = $('#my_' + MovieId + '_' + PersonId + '_' + CategoryId).attr('class').split(' ');
	for (var i = 0; i < classes.length; i++) {
		if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
			return classes[i].split('_')[1];
		}
	}
	
	return -1;
};
function MoviePage_UpdateMyCastCategoryRating(MovieId, PersonId, CategoryId, Rating) {

	var obj = $('#my_' + MovieId + '_' + PersonId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + Rating);
	
	//alert('MovieID: ' + MovieId + '\r\nPersonID: ' + PersonId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#my_' + MovieId + '_' + PersonId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function MoviePage_UpdateAverageCastCategoryRating(MovieId, PersonId, CategoryId, Votes, Rating) {

	//alert('MovieID: ' + MovieId + '\r\nPersonID: ' + PersonId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);

	var obj = $('#average_' + MovieId + '_' + PersonId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + parseInt(Rating));
	
	obj.attr('title', Votes + ' votes');
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#average_' + MovieId + '_' + PersonId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function MoviePage_RecommendCastMember() {
	if (_movieRecommendedCastMemberId == -1) return false;

	var movieId = $('#categories .my_rating>ul>li').attr('id').split('_')[1];

	$('#movie>#cast>#missing_cast>#thanks>span').hide();

	$.getJSON(
		_ajaxUrl + '?action=recommendcastmember&movieid=' + movieId + '&personid=' + _movieRecommendedCastMemberId,
		function(json) {

			$('#movie>#cast>#missing_cast input').val('');

			if (json.success) {
				$('#movie>#cast>#missing_cast>#thanks>span').html('Thank you for your recommendation').fadeIn('fast').delay(1000).fadeOut(1000);
			}
			else {
				$('#movie>#cast>#missing_cast>#thanks>span').addClass('error').html(json.message).fadeIn('fast').delay(1000).fadeOut(1000, function() {
					$(this).removeClass('error');
				});
			}
		}
	);
				
	return false;
};
function MoviePage_AddToCollection() {

	var movieId = $('#movie>#categories .my_rating>ul>li')[0].id.split('_')[1];
	var obj = $('#movie>#info>#add_to_collection>a');
	obj.fadeOut('fast', function() {

		$.getJSON(
			_ajaxUrl + '?action=addtocollection&movieid=' + movieId,
			function(json) {

				if (json.success) {
					obj.attr('title', 'Remove from my collection').attr('href', _root + 'profile/collection/remove/' + movieId).html('Remove from my collection').fadeIn();
				}
				else
					alert(json.message);
			}
		);

	});

};
function MoviePage_RemoveFromCollection() {

	var movieId = $('#movie>#categories .my_rating>ul>li')[0].id.split('_')[1];
	var obj = $('#movie>#info>#add_to_collection>a');
	obj.fadeOut('fast', function () {

		$.getJSON(
			_ajaxUrl + '?action=removefromcollection&movieid=' + movieId,
			function(json) {

				if (json.success) {
					obj.attr('title', 'Add to my collection').attr('href', _root + 'profile/collection/add/' + movieId).html('Add to my collection').fadeIn();
				}
				else
					alert(json.message);
			}
		);

	});
	
};
function MoviePage_FlagAsPorn() {
	
	if (!confirm('Are you sure you want to flag this movie as pornography?')) return;

	var movieId = $('#movie>#categories .my_rating>ul>li')[0].id.split('_')[1];
	var obj = $('#movie>#info>#flag_as_porn>a');
	obj.fadeOut('fast', function () {

		$.getJSON(
			_ajaxUrl + '?action=flagasporn&movieid=' + movieId,
			function(json) {

				if (json.success) {
					obj.parent().html('This movie has been flagged as pornography');
					obj.fadeIn();
				}
				else {
					alert(json.message);
					obj.fadeIn();
				}
			}
		);

	});

};
function MoviePage_UpdateSimilarMovies() {

	var movieId = $('#categories .my_rating>li').attr('id').split('_')[1];
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'getsimilarmovieids',
			movieid: movieId
		},
		success: function(data) {
			if (data.success) {

				var i = 0;
				for (i = 0; i < data.movies.length; i++) {
					UpdateMovie(data.movies[i].movieID);
				}
			}
			else {
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
	return false;
	
};
function UpdateMovie(MovieId) {
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'updatemovie',
			movieid: MovieId
		},
		success: function(data) {
			if (data.success) {
				return true;
			}
			else {
				alert(data.message);
				return false;
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
			return false;
		}
	});
	
};
function MoviePage_AddCategory() {
	
	var movieId = $('#movie>#categories .my_rating>ul>li')[0].id.split('_')[1];
	var category = $.trim($('#movie>#categories>#add input').val());
	$('#movie>#categories>#add input').val('');
	
	//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + _newCategoryId + '\r\nCategory: ' + category);return false;
	
	if (category.length == 0) return false;
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'addmoviecategory',
			movieid: movieId,
			categoryid: _newCategoryId,
			category: category
		},
		success: function(data) {
			if (data.success) {
				$('#movie>#categories>ul>li:last').after(MoviePage_BuildMovieCategory(movieId, data.categoryID, data.category));
				
				$('#movie>#categories>#add input').val(''); //.addClass('empty').val('- Add a new movie category -');
		
				MoviePage_Categories_Initialize();
				return true;
			}
			else {
				alert(data.message);
				$('#movie>#categories>#add input').val('');
				return false;
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
			return false;
		}
	});
	
	return false;
};
function MoviePage_BuildMovieCategory(MovieID, CategoryID, Category) {

	var li = '<li id="category_' + CategoryID + '"> <!-- "Start ' + Category + '" -->';
	li = li + '<h3><a href="/twynkle/categories/' + CategoryID + '" title="' + Category + '">' + Category + '</a></h3>';
	li = li + '<div class="report"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/report">Report</a></div>';
	li = li + '<div class="ratings">';
	li = li + '<div class="my_rating">';
	li = li + '<h4>My Rating</h4>';
	li = li + '<ul>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_1" class="star"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/1" title="1 star">1 star</a></li>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_2" class="star"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/2" title="2 stars">2 stars</a></li>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_3" class="star"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/3" title="3 stars">3 stars</a></li>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_4" class="star"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/4" title="4 stars">4 stars</a></li>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_5" class="star"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/5" title="5 stars">5 stars</a></li>';
	li = li + '<li id="my_' + MovieID + '_' + CategoryID + '_0" class="clear"><a href="/twynkle/movies/' + MovieID + '/categories/' + CategoryID + '/0" title="Clear rating">Clear rating</a></li>';
	li = li + '</ul>';
	li = li + '</div> <!-- "my_rating" -->';
	li = li + '<div class="average_rating">';
	li = li + '<h4>Overall</h4>';
	li = li + '<ul id="average_' + MovieID + '_' + CategoryID + '" title="0 votes">';
	li = li + '<li id="average_' + MovieID + '_' + CategoryID + '_1" class="star">1 star</li>';
	li = li + '<li id="average_' + MovieID + '_' + CategoryID + '_2" class="star">2 stars</li>';
	li = li + '<li id="average_' + MovieID + '_' + CategoryID + '_3" class="star">3 stars</li>';
	li = li + '<li id="average_' + MovieID + '_' + CategoryID + '_4" class="star">4 stars</li>';
	li = li + '<li id="average_' + MovieID + '_' + CategoryID + '_5" class="star">5 stars</li>';
	li = li + '</ul>';
	li = li + '</div> <!-- "average_rating" -->';
	li = li + '</div> <!-- "ratings" -->';
	li = li + '</li> <!-- "End ' + Category + '" -->';

	return li;

};




function PersonPage_Movies_Initialize() {

	$('#person .my_rating>ul>li>a').unbind('mouseover');
	$('#person .my_rating>ul>li>a').mouseover(function() {

		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var rating = idSegments[4];
		
		//alert('MovieID: ' + movieId + '\r\nPersonID: ' + personId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);

		$('#my_' + movieId + '_' + personId + '_' + categoryId + '>li').removeClass('selected');
		for (var i = 1; i <= rating; i++) {
			$('#my_' + movieId + '_' + personId + '_' + categoryId + '_' + i).addClass('selected');
		}

	});

	$('#person .my_rating>ul>li>a').unbind('click');
	$('#person .my_rating>ul>li>a').click(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var rating = idSegments[4];

		return PersonPage_RateMovieCategory(movieId, personId, categoryId, rating);

		return false;
	});

	$('#person .my_rating').unbind('mouseout');
	$('#person .my_rating').mouseout(function() {

		var id = $(this).find('li:first').attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var personId = idSegments[2];
		var categoryId = idSegments[3];
		var classes = $('#my_' + movieId + '_' + personId + '_' + categoryId).attr('class').split(' ');
		
		var rating = -1;
		for (var i = 0; i < classes.length; i++) {
			if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
				rating = classes[i].split('_')[1];
			}
		}

		PersonPage_UpdateMyMovieCategoryRating(movieId, personId, categoryId, rating);

	});
	
};
function PersonPage_RateMovieCategory(MovieId, PersonId, CategoryId, Rating) {
	
	var oldRating = PersonPage_GetMyMovieCategoryRating(MovieId, PersonId, CategoryId);
	MoviePage_UpdateMyCastCategoryRating(MovieId, PersonId, CategoryId, Rating);
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'ratecastcategory',
			movieid: MovieId,
			personid: PersonId,
			categoryid: CategoryId,
			rating: Rating
		},
		success: function(data) {
			if (data.success) {
				PersonPage_UpdateAverageMovieCategoryRating(MovieId, PersonId, CategoryId, data.votes, data.average);
			}
			else {
				PersonPage_UpdateMyMovieCategoryRating(MovieId, PersonId, CategoryId, oldRating);
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
	return false;
	
}
function PersonPage_UpdateMyMovieCategoryRating(MovieId, PersonId, CategoryId, Rating) {

	var obj = $('#my_' + MovieId + '_' + PersonId + '_' + CategoryId);
	obj.removeClass('rating_1').removeClass('rating_2').removeClass('rating_3').removeClass('rating_4').removeClass('rating_5').addClass('rating_' + Rating);
	
	//alert('MovieID: ' + MovieId + '\r\nPersonID: ' + PersonId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#my_' + MovieId + '_' + PersonId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function PersonPage_UpdateAverageMovieCategoryRating(MovieId, PersonId, CategoryId, Votes, Rating) {

	//alert('MovieID: ' + MovieId + '\r\nPersonID: ' + PersonId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);

	var obj = $('#average_' + MovieId + '_' + PersonId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + parseInt(Rating));
	
	obj.attr('title', Votes + ' votes');
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#average_' + MovieId + '_' + PersonId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function PersonPage_GetMyMovieCategoryRating(MovieId, PersonId, CategoryId) {
	
	var classes = $('#my_' + MovieId + '_' + PersonId + '_' + CategoryId).attr('class').split(' ');
	
	var rating = -1;
	for (var i = 0; i < classes.length; i++) {
		if (classes[i].indexOf('_') != -1) {
			if (classes[i].split('_')[0] == 'rating') {
				rating = classes[i].split('_')[1];
				break;
			}
		}
	}

	return rating;
};




function CategoryPage_Movies_Initialize() {

	$('#category .my_rating>ul>li>a').unbind('mouseover');
	$('#category .my_rating>ul>li>a').mouseover(function() {

		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];
		var rating = idSegments[3];
		
		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);

		$('#my_' + movieId + '_' + categoryId + '>li').removeClass('selected');
		for (var i = 1; i <= rating; i++) {
			$('#my_' + movieId + '_' + categoryId + '_' + i).addClass('selected');
		}

	});

	$('#category .my_rating>ul>li>a').unbind('click');
	$('#category .my_rating>ul>li>a').click(function() {
		
		var id = $(this).parent().attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];
		var rating = idSegments[3];

		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId + '\r\nRating: ' + rating);

		CategoryPage_RateMovieCategory(movieId, categoryId, rating);

		return false;
	});

	$('#category .my_rating').unbind('mouseout');
	$('#category .my_rating').mouseout(function() {

		var id = $(this).find('li:first').attr('id');
		var idSegments = id.split('_');
		var movieId = idSegments[1];
		var categoryId = idSegments[2];

		//alert('MovieID: ' + movieId + '\r\nCategoryID: ' + categoryId);

		var classes = $('#my_' + movieId + '_' + categoryId).attr('class').split(' ');
		
		var rating = -1;
		for (var i = 0; i < classes.length; i++) {
			if (classes[i].length > 7 && classes[i].substring(0, 7) == 'rating_') {
				rating = classes[i].split('_')[1];
			}
		}

		CategoryPage_UpdateMyMovieCategoryRating(movieId, categoryId, rating);

	});

};
function CategoryPage_RateMovieCategory(MovieId, CategoryId, Rating) {
	
	var oldRating = CategoryPage_GetMyMovieCategoryRating(MovieId, CategoryId);
	CategoryPage_UpdateMyCastCategoryRating(MovieId, CategoryId, Rating);
	
	$.ajax({
		type: 'POST',
		url: _ajaxUrl,
		dataType: 'json',
		data: {
			action: 'ratemoviecategory',
			movieid: MovieId,
			categoryid: CategoryId,
			rating: Rating
		},
		success: function(data) {
			if (data.success) {
				CategoryPage_UpdateAverageMovieCategoryRating(MovieId, CategoryId, data.votes, data.average);
			}
			else {
				CategoryPage_UpdateMyMovieCategoryRating(MovieId, CategoryId, oldRating);
				alert(data.message);
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(textStatus + ': ' + XMLHttpRequest.responseText);
		}
	});
	
	return false;
	
}
function CategoryPage_UpdateMyMovieCategoryRating(MovieId, CategoryId, Rating) {

	var obj = $('#my_' + MovieId + '_' + CategoryId);
	obj.removeClass('rating_1').removeClass('rating_2').removeClass('rating_3').removeClass('rating_4').removeClass('rating_5').addClass('rating_' + Rating);
	
	//alert('MovieID: ' + MovieId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#my_' + MovieId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function CategoryPage_UpdateAverageMovieCategoryRating(MovieId, CategoryId, Votes, Rating) {

	//alert('MovieID: ' + MovieId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);

	var obj = $('#average_' + MovieId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + parseInt(Rating));

	if (Votes == 1) {
		obj.attr('title', Votes + ' votes');
		obj.parent().parent().parent().find('>.votes').html(Votes + ' votes');
	}
	else {
		obj.attr('title', Votes + ' vote');
		obj.parent().parent().parent().find('>.votes').html(Votes + ' vote');
	}
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#average_' + MovieId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};
function CategoryPage_GetMyMovieCategoryRating(MovieId, CategoryId) {
	
	var classes = $('#my_' + MovieId + '_' + CategoryId).attr('class').split(' ');
	
	var rating = -1;
	for (var i = 0; i < classes.length; i++) {
		if (classes[i].indexOf('_') != -1) {
			if (classes[i].split('_')[0] == 'rating') {
				rating = classes[i].split('_')[1];
				break;
			}
		}
	}

	return rating;
};
function CategoryPage_UpdateMyCastCategoryRating(MovieId, CategoryId, Rating) {

	var obj = $('#my_' + MovieId + '_' + CategoryId);
	obj.removeClass('rating_1');
	obj.removeClass('rating_2');
	obj.removeClass('rating_3');
	obj.removeClass('rating_4');
	obj.removeClass('rating_5');
	obj.addClass('rating_' + Rating);
	
	//alert('MovieID: ' + MovieId + '\r\nCategoryID: ' + CategoryId + '\r\nRating: ' + Rating);
	
	obj.find('li').removeClass('selected');
	for (var i = 1; i <= Rating; i++) {
		$('#my_' + MovieId + '_' + CategoryId + '_' + i).addClass('selected');
	}

};




function BrowsePage_Browse(page, sort) {
		
	if (page == null) page = 1;
	_currentPage = parseInt(page);
		
	switch (sort) {
		
		case 'alpha':
		case 'popularity':
		case 'year':
			_currentSort = sort;
			break;
		
		default:
			_currentSort = 'alpha';
			break;
		
	};

	$('#browse>#results>#sort>select').val(sort);
	
	$('#browse>#results>#movies>ul').html('<li class="loading"></li>');
	
	$.getJSON(
		_ajaxUrl + '?action=browse&page=' + page + '&sort=' + sort,
		function(json) {
			
			var li;

			$('#browse>#filters>div>ul>li').not('li.add').remove();

			for (var i = 0; i < json.filters.length; i++) {
				
				switch (json.filters[i].filterTypeID) {
					
					case 1: // Actor
						
						li = '<li id="filter_' + json.filters[i].ID + '">';
						li = li + '<div><a href="' + _root + 'people/' + json.filters[i].filterValueID + '" title="' + json.filters[i].filterValue + '">' + json.filters[i].filterValue + '</a></div>';
						li = li + '<div class="remove"><a href="' + _root + 'movies/filters/' + json.filters[i].ID + '/remove" title="Remove filter">Remove filter</a></div>';
						li = li + '</li>';
						
						$('#browse>#filters>div#actor>ul>li:last').before(li);
						
						break;
					
					case 2: // Director

						li = '<li id="filter_' + json.filters[i].ID + '">';
						li = li + '<div>';
						//li = li + '<a href="' + _root + 'people/' + json.filters[i].filterValueID + '" title="' + json.filters[i].filterValue + '">' + json.filters[i].filterValue + '</a>';
						li = li + json.filters[i].filterValue;
						li = li + '</div>';
						li = li + '<div class="remove"><a href="' + _root + 'movies/filters/' + json.filters[i].ID + '/remove" title="Remove filter">Remove filter</a></div>';
						li = li + '</li>';
						
						$('#browse>#filters>div#director>ul>li:last').before(li);
						
						break;
					
					case 3: // Genre

						li = '<li id="filter_' + json.filters[i].ID + '">';
						li = li + '<div>';
						//li = li + '<a href="' + _root + 'genres/' + json.filters[i].filterValueID + '" title="' + json.filters[i].filterValue + '">' + json.filters[i].filterValue + '</a>';
						li = li + json.filters[i].filterValue;
						li = li + '</div>';
						li = li + '<div class="remove"><a href="' + _root + 'movies/filters/' + json.filters[i].ID + '/remove" title="Remove filter">Remove filter</a></div>';
						li = li + '</li>';
						
						$('#browse>#filters>div#genre>ul>li:last').before(li);
						
						break;
					
					case 4: // Category

						li = '<li id="filter_' + json.filters[i].ID + '">';
						li = li + '<div>';
						li = li + '<a href="' + _root + 'categories/' + json.filters[i].filterValueID + '" title="' + json.filters[i].filterValue + '">' + json.filters[i].filterValue + '</a>';
						//li = li + json.filters[i].filterValue;
						li = li + '</div>';
						li = li + '<div class="remove"><a href="' + _root + 'movies/filters/' + json.filters[i].ID + '/remove" title="Remove filter">Remove filter</a></div>';
						li = li + '<ul';
						if (json.filters[i].categoryRatingMinimum > 0) li = li + ' class="rating_' + json.filters[i].categoryRatingMinimum + '"';
						li = li + '>';
						li = li + '<li class="at_least">At least</li>';
						for (var j = 1; j <= 5; j++) {
							var plural = '';
							if (j > 1) plural = 's';
							li = li + '<li class="star_' + j;
							if (j <= json.filters[i].categoryRatingMinimum) li = li + ' selected';
							li = li + '"><a href="' + _root + 'movies/filters/categories/' + json.filters[i].filterValueID + '/rating/' + j + '" title="' + j + ' star' + plural + '">' + j + ' star' + plural + '</a></li>';
						}
						li = li + '</ul>';
						li = li + '</li>';
						
						$('#browse>#filters>div#category>ul>li:last').before(li);
						
						break;
					
				};
				
			}

			$('#browse>#filters>div#category>ul>li>ul>li>a').unbind('mouseover');
			$('#browse>#filters>div#category>ul>li>ul>li>a').mouseover(function() {
				
				var obj = $(this);
				var rating = obj.parent().parent().attr('class');
				if (rating != '') rating = rating.split('_')[1];
				
				var mouseoverRating = -1;
				var classes = obj.parent().attr('class').split(' ');
				for (var i = 0; i < classes.length; i++) {
					if (classes[i].indexOf('_') != -1 && classes[i].split('_')[0] == 'star') {
						mouseoverRating = classes[i].split('_')[1];
						break;
					}
				}
				
				obj.parent().parent().find('li').removeClass('selected');
				for (i = 1; i <= mouseoverRating; i++) {
					obj.parent().parent().find('.star_' + i).addClass('selected');
				}
				
			});

			$('#browse>#filters>div#category>ul>li>ul').unbind('mouseout');
			$('#browse>#filters>div#category>ul>li>ul').mouseout(function() {

				var obj = $(this);
				var rating = -1;
				var classes = obj.attr('class').split(' ');
				for (var i = 0; i < classes.length; i++) {
					if (classes[i].indexOf('_') != 0 && classes[i].split('_')[0] == 'rating') {
						rating = classes[i].split('_')[1];
						break;
					}
				}

				obj.find('li').removeClass('selected');
				for (i = 1; i <= rating; i++) {
					obj.find('.star_' + i).addClass('selected');
				}
				
			});

			$('#browse>#filters>div#category>ul>li>ul>li>a').unbind('click');
			$('#browse>#filters>div#category>ul>li>ul>li>a').click(function() {
				
				var obj = $(this);
				
				var filterId = -1;
				filterId = obj.parent().parent().parent()[0].id.split('_')[1];
				
				var rating = -1;
				var classes = obj.parent().attr('class').split(' ');
				for (var i = 0; i < classes.length; i++) {
					if (classes[i].indexOf('_') != 0 && classes[i].split('_')[0] == 'star') {
						rating = classes[i].split('_')[1];
						break;
					}
				}

				obj.parent().parent().removeClass('rating_1');
				obj.parent().parent().removeClass('rating_2');
				obj.parent().parent().removeClass('rating_3');
				obj.parent().parent().removeClass('rating_4');
				obj.parent().parent().removeClass('rating_5');
				obj.parent().parent().addClass('rating_' + rating);
				
				$.getJSON(
					_ajaxUrl + '?action=updatefiltercategoryrating&filterid=' + filterId + '&rating=' + rating,
					function(json) {

						if (json.success) {
							BrowsePage_Browse(1, _currentSort);	
						}
						else
							alert(json.message);
					}
				);

				return false;
			});
			
			$('#browse>#filters>div>ul>li>div.remove>a').unbind('click');
			$('#browse>#filters>div>ul>li>div.remove>a').click(function() {
				BrowsePage_RemoveFilter($(this).parent().parent()[0].id.split('_')[1]);
				return false;
			});
			
			$('#browse>#results>#movies>ul').html('');
			if (json.movies.length == 0) {

				li = '<li id="no_movies">No movies found that match your filter criteria.</li>';
				$('#browse>#results>#movies>ul').append(li);
			
			}
			else {
			
				for (var i = 0; i < json.movies.length; i++) {
					
					li = '<li>';
					li = li + '<h3><a href="' + _root + 'movies/' + json.movies[i].id + '" title="' + json.movies[i].title + '">' + json.movies[i].title + ' (' + json.movies[i].releaseYear + ')</a></h3>';
					li = li + '<a href="' + _root + 'movies/' + json.movies[i].id + '" title="' + json.movies[i].title + '"><img src="' + json.movies[i].coverUrl + '" title="' + json.movies[i].title + '" /></a>';
					li = li + '</li>';
					
					$('#browse>#results>#movies>ul').append(li);

				}
			
			}
			
			_previousPage = json.previousPage;
			_nextPage = json.nextPage;
			
			previousPage = $('#browse>#results>ul.page_nav>li.previous_page>a');
			previousPage.parent().removeClass('disabled');
			if (json.previousPage)
				previousPage.attr('href', _root + 'browse/page/' + (_currentPage - 1));
			else {
				$('#browse>#results>ul.page_nav>li.previous_page>a').attr('href', _root + 'browse/page/' + (_currentPage));
				previousPage.parent().addClass('disabled');
			}
				
			nextPage = $('#browse>#results>ul.page_nav>li.next_page>a');
			nextPage.parent().removeClass('disabled');
			if (json.nextPage)
				nextPage.attr('href', _root + 'browse/browsePage/' + (page + 1));
			else {
				$('#browse>#results>ul.page_nav>li.next_page>a').attr('href', _root + 'browse/page/' + (_currentPage));
				nextPage.parent().addClass('disabled');
			}

		}
	);

};
function BrowsePage_AddFilter(sender, FilterTypeId, FilterValueId) {
	
	$.getJSON(
		_ajaxUrl + '?action=addfilter&filtertypeid=' + FilterTypeId + '&filtervalueid=' + FilterValueId,
		function(json) {

			if (json.success) {
				
				switch (FilterTypeId) {
					
					case 1: // Actor
						$('#browse>#filters>div#actor>ul>li input').val('- Add a new actor -').addClass('empty');
						break;
					
					case 2: // Director
						$('#browse>#filters>div#director>ul>li input').val('- Add a new director -').addClass('empty');
						break;
					
					case 3: // Genre
						$('#browse>#filters>div#genre>ul>li input').val('- Add a new genre -').addClass('empty');
						break;
					
					case 4: // Category
						$('#browse>#filters>div#category>ul>li input').val('- Add a new category -').addClass('empty');
						break;
					
				};
				
				BrowsePage_Browse(1, _currentSort);	
				$('#search_text').focus();
				
			}
			else {
				
				sender.parent().parent().parent().find('li:last').after('<li class="error" style="display: none;">' + json.message + '</li>');
				
				sender.parent().parent().parent().find('li.error').slideDown('fast').delay(2000).slideUp('fast', function() {

					$(this).remove();

					switch (FilterTypeId) {
						
						case 1: // Actor
							$('#browse>#filters>div#actor>ul>li input').val('');
							break;
						
						case 2: // Director
							$('#browse>#filters>div#director>ul>li input').val('');
							break;
						
						case 3: // Genre
							$('#browse>#filters>div#genre>ul>li input').val('');
							break;
						
						case 4: // Category
							$('#browse>#filters>div#category>ul>li input').val('');
							break;
						
					};
				
				});
				
			}
		}
	);
	
	return false;
};
function BrowsePage_RemoveFilter(FilterId) {
	
	$.getJSON(
		_ajaxUrl + '?action=removefilter&filterid=' + FilterId,
		function(json) {
			$('#filter_' + FilterId).slideUp('fast', function() {
				$(this).remove();
				BrowsePage_Browse(1, _currentSort);
			});
		}
	);
	
};
function BrowsePage_PreviousPage() {
	if (!_previousPage) return false;

	BrowsePage_Browse(_currentPage - 1, _currentSort);
	
	return false;
};
function BrowsePage_NextPage() {
	if (!_nextPage) return false;

	BrowsePage_Browse(_currentPage + 1, _currentSort);
	
	return false;
};
function BrowsePage_SortChanged() {
	BrowsePage_Browse(1, $(this).val());
};




function InvitePage_AddInvite(obj) {
	
	var email = obj.val();
	var li = obj.parent().parent().parent().parent().find('input:first').parent().parent().parent();
	var liText = '';
	
	var url = _ajaxUrl + '?action=addinvite&email=' + email;
	$.getJSON(
		url,
		function(json) {
			if (json.success) {
				
				liText = '<ul>\r\n';
				liText = liText + '<li class="email"><a href="mailto:' + email + '" title="Send an email to ' + email + '">' + email + '</a></li>\r\n';
				liText = liText + '<li class="user"></li>\r\n';
				liText = liText + '<li class="status">Pending</li>\r\n';
				liText = liText + '<li class="last_sent">Last sent on ' + json.lastSent + '</li>\r\n';
				liText = liText + '<li class="resend"><a href="' + _root + 'profile/invites/' + json.inviteID + '/resend" title="Resend request">Resend</a>\r\n<span><img src="' + _root + 'assets/images/accept.png" alt="Sent" /></span></li>\r\n';
				liText = liText + '</ul>\r\n';
				
				li.html(liText);
				$('#invites>#emails>ul>li>ul>li>input:first').focus();
				
				var remaining = $('#invites>p').html().match(/[\d\.]+/g)[0];
				remaining = remaining - 1;
				if (remaining == 1)
					$('#invites>p').html('You have 1 invite remaining');
				else
					$('#invites>p').html('You have ' + remaining + ' invites remaining');
				
				li.attr('id', 'invite_' + json.inviteID);

				obj.parent().addClass('empty');
				obj.val('-Email-');
					
				$('#invites>#emails>ol>li>ul>li>input:first').focus();

				InvitePage_BindEvents();
				
			}
			else {
				
				obj.after('<div>' + json.message + '</div>');
				var div = obj.parent().find('div');
				
				obj.fadeOut('fast', function() {
					div.fadeIn('fast').delay(1000).fadeOut('fast', function() {
						div.remove();
						obj.fadeIn('fast', function() {
							obj.select();
						});
					});
				});
			}
		}
	);
	
};
function InvitePage_Resend(obj) {
	//if (!confirm('Are you sure you wish to resend your invitation?')) return;
	
	var inviteId = obj.parent().parent().parent().attr('id').split('_')[1];

	var url = _ajaxUrl + '?action=resendinvite&inviteid=' + inviteId;
	$.getJSON(
		url,
		function(json) {
			if (json.success) {
				obj.parent().find('img').fadeIn(500).fadeOut(5000);
			}
			else {
				alert(json.message);
			}
		}
	);
	
};