var WEVote = {};

jQuery(function($) {
WEVote = jQuery.extend({}, {
	
	initButtons: function() {
		$('div.resource div.favorite').click(function() {
			var resource_html_id = $(this).parents('div.resource').attr('id');
			var id = resource_html_id.split('_')[1];

			var is_favorite = true;
			if ($('div#'+resource_html_id+' div.favorite').hasClass('favorite_on')) {
				is_favorite = false;
			}

			WEVote.sendFavorite(id, is_favorite);
		});
	},
	
	sendFavorite: function(id, is_favorite) {
		var resource_html_id = 'resource_'+id;

		// mark as loading
		$('div#'+resource_html_id+' div.favorite').addClass('loading');			

		// send ajax
		$.post('/vote',{id: id, vote_type: 'favorite', 'is_favorite': (is_favorite?1:0)}, function(data, status) {
			WEVote.handleVoteCallback(data);
		}, 'json');

	},
	
	sendRating: function(id, rating) {
		$.post("/rate", {id: id, vote_type:'rating', rating: rating}, function(data, status) {
			// console.log('sendRating data=',data)
			WEVote.handleVoteCallback(data);
		}, 'json');
		
	},
	
	handleVoteCallback: function(data) {
		var resource_html_id = 'resource_'+data.id;

		if(data.success == true) {
			if (data.is_favorite !== null) {
				if (data.is_favorite) {
					$('div#'+resource_html_id+' div.favorite').removeClass('loading').removeClass('favorite_off').addClass('favorite_on');
				} else {
					$('div#'+resource_html_id+' div.favorite').removeClass('loading').removeClass('favorite_on').addClass('favorite_off');
				}
			}
			$('div#'+resource_html_id+' div.score').empty().append(data.favorite_count);
			
			// ratings
			$('div#'+resource_html_id+' .avgRatings .avg').empty().append(data.rating);
			var count_text = data.rating_count+' vote'+(data.rating_count === 1 ? '' : 's');
			$('div#'+resource_html_id+' .avgRatings .count').empty().append(count_text);
			
		}

		if(data.msg.length) {
			$('div#MessageFlash').css({position:'relative'}).empty().append(data.msg).effect("highlight", {}, 3000);
		}
	},

	__end: null
});

});