﻿/// <reference path="../../combo.js" />
/// <reference path="Global.js" />
/// <reference path="Profile.js" />
/// <reference path="Search.js" />
/// <reference path="WikiParser.js" />
/// <reference path="Edit.js" />

var Rating =
{
	Init: function()
	{
		if (Rating.SkipInit)
		{
			Rating.SkipInit = false;
			return;
		}
		Rating.Container = $('sermonRating');
		if (Rating.Container == null)
			return;

		Rating.Container.innerHTML = '';
		var avg = parseInt($('initialRating').value, 10);

		$E.addListener(Rating.Container, 'mouseover', function()
		{
			var stats = $('ratingStats');
			$D.removeClass(stats, 'inactive');
			$D.addClass(stats, 'active');

			// Fix IE. Shouldn't need this...
			var img = $('editButton');
			$D.removeClass(img, 'active');
			$D.addClass(img, 'inactive');
		});

		$E.addListener(Rating.Container, 'mouseout', function()
		{
			var stats = $('ratingStats');
			$D.removeClass(stats, 'active');
			$D.addClass(stats, 'inactive');

			// Fix IE. Shouldn't need this...
			var img = $('editButton');
			$D.removeClass(img, 'inactive');
			$D.addClass(img, 'active');
		});

		Rating.Average = avg;

		$D.addClass(Rating.Container, 'rating');

		for (var i = 1; i < 6; i++)
		{
			var star = document.createElement('div');
			star.id = 'star' + i;
			$D.addClass(star, 'star');
			Rating.Container.appendChild(star);
			if ($('isAuthenticated') != null && $('isAuthenticated').value == 'True')
			{
				$E.addListener(star, 'mouseover', Rating.Hover, i);
				$E.addListener(star, 'mouseout', Rating.Reset);
				$E.addListener(star, 'click', Rating.Submit, i);
			}
			else
			{
				Rating.Container.title = "Please sign in to submit a rating.";
			}
		}

		Rating.Reset();
	},

	Hover: function(e, ix)
	{
		for (var i = 1; i < 6 + 1; i++)
		{
			var star = $('star' + i);
			$D.removeClass(star, 'hover');
			$D.removeClass(star, 'on');
			if (i <= ix)
				$D.addClass(star, 'hover');
		}
	},

	Reset: function()
	{
		var starsOn = Math.floor(Rating.Average);

		for (var i = 1; i < 6; i++)
		{
			var star = $('star' + i);

			$D.removeClass(star, 'hover');
			$D.removeClass(star, 'on');

			if (i <= starsOn)
				$D.addClass(star, 'on');
		}
	},

	Submit: function(e, num)
	{
		Rating.Average = num;
		Rating.Reset();

		Rating.SkipInit = true;
		var requestURL = '/rate/' + $('sermonID').value + '/' + num;
		Global.NavigateTo(requestURL, true, true);
	}
};