var Ratings = 
{
	init: function ()
	{
		var ratings = document.getElementsByTagName('div');
		for (var x=0; x < ratings.length; x++)
		{
			if (ClassHandler.hasClass (ratings[x], 'ratings'))
			{
				var li = ratings[x].getElementsByTagName('li');
				for (var y=0; y < li.length; y++)
				{
					li[y].onmouseover = Ratings.onMouseOver;
					li[y].onmouseout = Ratings.onMouseOut;
				}
			}
		}
		return true;
	},

	Rate: function (file_id, rating)
	{
		load_ajax (BASE_URL + 'ajax.php?do=rate&file_id=' + file_id + '&rating=' + rating, 'Ratings.Returned');
	},

	Returned: function (array)
	{
		// ##### CHECK FOR ERROR #####
		if (ajax_returned_error (array))
		{
			return false;
		}
		
		// ###### DISPLAY MESSAGE #####
		Dialog.Message (array['message'][0]);
	},

	onMouseOver: function ()
	{
		// ##### USED FOR UNACTIVE STATES #####
		var unactive = false;
	
		var lis = this.parentNode.getElementsByTagName('li');
		for (var li = 0; li < lis.length; li++)
		{			
			// ##### WHICH STATE #####
			if (unactive == true)
			{
				// ##### ADD ACTIVE STATE #####
				ClassHandler.addClass (lis[li], 'unactive');
				ClassHandler.removeClass (lis[li], 'active');
			}
			else
			{
				// ##### ADD ACTIVE STATE #####
				ClassHandler.addClass (lis[li], 'active');
				ClassHandler.removeClass (lis[li], 'unactive');
			}
			
			// ##### TEST FOR UNACTIVE #####
			if (lis[li] == this)
			{
				var unactive = true;
			}
		}
	},

	onMouseOut: function ()
	{
		var lis = this.parentNode.getElementsByTagName('li');
		for (var li = 0; li < lis.length; li++)
		{
			// ##### REMOVE STATES #####
			ClassHandler.removeClass (lis[li], 'unactive');
			ClassHandler.removeClass (lis[li], 'active');
			
			// ##### ADD ACTIVE BACK IF IT WAS RATED #####
			if (ClassHandler.hasClass (lis[li], 'rated') && !ClassHandler.hasClass (lis[li], 'active'))
			{
				ClassHandler.addClass (lis[li], 'active');
			}
			
		}
	}
}

Core.start (Ratings);