$( document ).ready( function() { 
	$('#id_tags').val('');
	
	// pagination links should call the function and not reload the page
	$('.pagination a').click(page_click);
	
	/* Callback function for when the address bar gets updated with 
	 * the jquery.address plugin 
	 */
	$.address.change(function(event) {  
		var page = $.address.parameter('page'); 
		var tags = $.address.parameter('genres'); 
		
		if (!page) page=1; 
		if (!tags) tags=''; 
		update_films(tags, page); 
	}); 
}); 

var page_click = function(){  
	page = $(this).attr('page'); 
	update_address({'page':page}); 
	return false; 
}

function vote(user_id, film_id, film_slug) {
	if(user_id=="None")
	{
		alert("You need to be logged in to Rave. You are being redirected to login page!");
		location.href="/users/login/";
		return false;
		
	}
	$.post(url_toggle_vote_ajax, {user_id:user_id, film_id:film_id}, 
	function(data){
		if (data.success) { 
			update_raves(film_id, data.film_votes, data.vote_added); 
		} else {
			if (data.error) alert(data.error); 
			else alert ('Oops! An error has occurred!');
		}
		}, "json");
}

function update_raves(film_id, votes, vote_added) { 
	rave_count = "#r_" + film_id + "_rave_count"; 
	raves = "#r_" + film_id + "_raves"; 
	rave_button = "#r_" + film_id + "_rave_button"; 
			
	if (votes == 0) 
		$(rave_count).html("0"); 
	else 
		$(rave_count).html(votes);
	
	if (votes == 1) 
		$(raves).html("Rave"); 
	else 
		$(raves).html("Raves");
	
	$(raves).html("Rave".pluralize)
	
	if (vote_added) 
		$(rave_button).val("Unrave"); 
	else  
		$(rave_button).val("Rave it"); 
}


function toggle_genre(genre){ 
	old_val = $("#id_tags").val();
	tag_array = old_val.split(',');
	
	tag_index = -1;  
	for(i=0; i < tag_array.length; i++){
		if(tag_array[i] == genre) { 
			tag_index = i;  
			break; 
		}	
	}
	
	genre_id = '#genre_' + genre.replace(/ /g, "-").toLowerCase()
	if (tag_index == -1) { // tag didn't exist, so add it
		tag_array.splice(tag_array.length,0,genre);
		$(genre_id).attr("class", "genre_selected"); 
	} 
	else {  // tag existed, remove it 
		tag_array.splice(tag_index,1);
		$(genre_id).attr("class", "genre_unselected"); 
	}

	// get rid of empty entires in the tag array
	var tag_array_filtered =  filterOut('', tag_array);
	var tags = tag_array_filtered.join(); 
  

	update_address( { 'page':'1', 'genres':tags} ); 
	$("#id_tags").val(tag_array);
} 

function update_films(tags, page){ 
	if(!page) { page = 1; }
	$.post(url_update_films, {tags:tags, page:page}, 
	function(data){
		if (data.success) { 
			$('#film_results' ).html(data.html);
			
			// fix pagination links  	
			$('.pagination a').click(page_click );
			
			ajaxpages_bindscroll();
		} else {
			if (data.error) alert(data.error); 
			else alert ('Oops! An error has occurred!');
		}
	}, "json");
	
	// Highlighting genres based on URL
	if (tags != '') {
		tag_array = tags.split(',');
		for ( var i = 0; i < tag_array.length ; i++ ) {
			genre_id = '#genre_' + tag_array[i].replace(/ /g, "-").toLowerCase();
			$(genre_id).attr("class", "genre_selected");
		}
	}
		
}

function clear_genres() { 
	old_val = $("#id_tags").val();
	tag_array = old_val.split(',');
	
	// unselect all the genres 
	for(i=0; i < tag_array.length; i++){
		genre = tag_array[i]; 
		genre_id = '#genre_' + genre.replace(/ /g, "-").toLowerCase(); 
		$(genre_id).attr("class", "genre_unselected"); 
	}
	
	// clear tags field 
	$("#id_tags").val("");
	
	// show all films 
	update_address({'page':'', 'genres':''}); 
} 

function sort_films(sort) { 
	tags = $("#id_tags").val();
	$.post(url_update_session_sort, {'sort':sort}, 
	function(data){
		if (data.success) { 
			update_address({'sort':sort}); 
			if (sort == 'raves') { 
			 $('#sort_films a span').html("Sort by Date");
			 $("#sort_films a").attr("href", "javascript:sort_films('date')")
			} 
			if (sort == 'date') { 
			 $('#sort_films a span').html("Sort by Raves");
			 $("#sort_films a").attr("href", "javascript:sort_films('raves')")
			}
		} else {
			if (data.error) alert(data.error); 
			else alert ('Oops! An error has occurred!');
		}
		}, "json");
}

$( document ).ajaxStart( function() {  
	$( '#spinner' ).show(); 
});
$( document ).ajaxStop( function() {  
	$( '#spinner' ).hide();  
});

function filterOut ( filterContent, source ) {
	var sourceFiltered = [];
	var filteredIndex = 0;
	for ( var i = 0; i < source.length ; i ++ ) {
		if ( source[i] != filterContent ) {
			sourceFiltered[filteredIndex++] = source[i];
		}
	}
	return sourceFiltered;
}
