function Peli_Game_Play_Rating(config)
{
	this.id = config.id;
	this.stars = parseFloat(config.stars);
	this.url = config.url;
	this.successMsg = config.successMsg;
	this.rated = false;
	
	this.init = function()
	{
		this.resetStars();
	};
	
	
	
	this.clearStars = function()
	{
		for (var i = 1; i <= 5; i++) {
			$('#star_' + i).removeClass('full rating partial-1 partial-2 partial-3 partial-4 partial-5 partial-6 partial-7 partial-8 partial-9');
		}
	};
	
	this.hoverStars = function(stars)
	{
		if (this.rated) {
			return;
		}
		
		this.clearStars();
		
		for (var i = 1; i <= stars; i++) {
			$('#star_' + i).addClass('rating');
		}
		
		for (var i = stars + 1; i <= 5; i++) {
			$('#star_' + i).addClass('empty');
		}
	};
	
	this.resetStars = function()
	{
		var full = Math.floor(this.stars);
		
		if (full == 0) {
			for (var i = 1; i <= 5; i++) {
				$('#star_' + i)
					.addClass('empty')
					.removeClass('rating full');
			}
			
			return;
		}
		
		this.clearStars();
		
		for (var i = 1; i <= full; i++) {
			$('#star_' + i).addClass('full');
		}
		
		for (var i = 5; i > full + 1; i--) {
			$('#star_' + i).addClass('empty');
		}
		
		var partial = Math.round(10 * (this.stars - full), 10);
		if (partial > 0) {
			$('#star_' + (full+1)).addClass('partial-' + partial);
		}
	};
	
	this.rate = function(rating)
	{
		if (this.rated) {
			return;
		}
		
		$.ajax({
			'url': this.url + '/format/json',
			'type': 'post',
			'dataType': 'json',
			'data': {
				'game': this.id,
				'rating': rating
			},
			'success': this.rateCallback.ctxBind(this)
		});
	};
	
	this.rateCallback = function(data, statusText)
	{
		this.rated = true;
		this.stars = parseFloat(data.stars);
		$('#ratingInfo').text(this.successMsg);
		$('#ratingCount').text(data.ratingCount);
		$('#ratingAvg').text(data.stars);
		this.resetStars();
	};
}

