/**
 * Init Ratings
 * 
 * This method takes a 3 parameters:
 * 1) The ratingID we are initializing ratings for.
 * 2) The user rating.
 * 3) The average rating (from all users).
 * 
 * The following HTML id components are expected to exist:
 * 1) #ID#_1
 * 2) #ID#_2
 * 3) #ID#_3
 * 4) #ID#_4
 * 5) #ID#_5
 * 6) rateCount
 * 
 * where '#ID#' is to be replaced by the rating ID, such as "overall", "service", etc.
**/

function initRatings(id, originalUserRating, avgRating)
{
	var oneStar   = $(id + "_1");
	var twoStar   = $(id + "_2");
	var threeStar = $(id + "_3");
	var fourStar  = $(id + "_4");
	var fiveStar  = $(id + "_5");

	oneStar.onmouseover   = function(event) { doMouseOver(1,event); }
	twoStar.onmouseover   = function(event) { doMouseOver(2,event); }
	threeStar.onmouseover = function(event) { doMouseOver(3,event); }
	fourStar.onmouseover  = function(event) { doMouseOver(4,event); }
	fiveStar.onmouseover  = function(event) { doMouseOver(5,event); }

	function doMouseOver(number, event)
	{
		// Create array with all tooltips
		var tipText = new Array("",  "I hate it",  "I don\'t like it",  "It\'s OK",  "I like it",  "I love it");

		// Set images to be correct for the users mouse position
		for(var i=1; i<=5; i++)
		{
			if(i <= number)
				$(id + "_" + i).src = "/images/myFullrate.png";
			else
				$(id + "_" + i).src = "/images/myNorate.png";
		}

		// Create div for the tool tip to be displayed in
		var newDiv = document.createElement("div");
		newDiv.id = id + "_" + number + "ToolTip";
		newDiv.className = "grayBold";
		newDiv.style.backgroundColor = "#FECF00";
		newDiv.style.border = "1px solid #5C6370";
		newDiv.style.padding = "2px 2px 2px 2px";
		newDiv.innerHTML = tipText[number];

		// Activate the tooltip
		domTT_activate($(id + "_" + number), event, 'content', newDiv, 'trail', false, 'delay', 0, 'type','greasy');
	}

	oneStar.onmouseout   = function(event) { doMouseOut(1); }
	twoStar.onmouseout   = function(event) { doMouseOut(2); }
	threeStar.onmouseout = function(event) { doMouseOut(3); }
	fourStar.onmouseout  = function(event) { doMouseOut(4); }
	fiveStar.onmouseout  = function(event) { doMouseOut(5); }

	function doMouseOut(number)
	{
		// Reset images to be correct for the users original rating or the average rating
		for(var i=1; i<=5; i++)
		{
			if(originalUserRating > 0)
			{
				if((i*2) <= originalUserRating)
					$(id + "_" + i).src = "/images/myFullrate.png";
				else
					$(id + "_" + i).src = "/images/myNorate.png";
			}
			else if(avgRating > 0)
			{
				if(avgRating < ((i*2)-1))
					$(id + "_" + i).src = "/images/norate.png";
				else if(avgRating == ((i*2)-1))
					$(id + "_" + i).src = "/images/halfrate.png";
				else
					$(id + "_" + i).src = "/images/fullrate.png";
			}
			else
			{
				$(id + "_" + i).src = "/images/norateInactive.png";
			}
		}

		// Turn off the tooltip
		domTT_deactivate(id + "_" + number);
	}

	oneStar.onclick   = function(event) { sendRequest(2);  }
	twoStar.onclick   = function(event) { sendRequest(4);  }
	threeStar.onclick = function(event) { sendRequest(6);  }
	fourStar.onclick  = function(event) { sendRequest(8);  }
	fiveStar.onclick  = function(event) { sendRequest(10); }

	function sendRequest(rating)
	{
		// Create and fire off AJAX request
		var params = "listingID=" + myListingID;
		params += "&ratingType=" + id;
		params += "&rating=" + rating;
		params += "&userID=" + client.userID;
		params += "&cfToken=" + client.cfToken;
		ajax("POST", "/cfc/listings.cfc?method=rateListingRPC", ajaxFinished, null, params);

		// Reset all images, and close any open tooltips
		for(var i = 1; i <= 5; i++)
		{
			if(rating >= (i*2))
				$(id + "_" + i).src = "/images/myFullrate.png";
			else
				$(id + "_" + i).src = "/images/myNorate.png";

			domTT_deactivate(id + "_" + i);
		}

		// Save rating as new originalUserRating
		originalUserRating = rating;
	}

	function ajaxFinished(ratingStruct)
	{
		// Update rate count
		if(id == 'overall')
		{
			if(ratingStruct.numberofratings == 1)
				$("rateCount").innerHTML = "Based on 1 rating";
			else
				$("rateCount").innerHTML = "Based on "+ ratingStruct.numberofratings +" ratings";
		}

		// Update avg ratings from returned struct
		avgRating = eval("ratingStruct."+id);
	}
}


