
var gEntryId = null;
var gRatingCount = 0;

function sf_setRatingCount(v) {
	gRatingCount = v;
}

function sf_rate(v) {
	$("#rating_form_value").attr("value",v);
	var f = $("#rating_form" + gEntryId);
	f.ajaxForm();
	var options = { 
		success: function(data) { 
			if (1 == data) {
				$("#rating_entry").html("submitted");
				$("#rating_entry").css("background-image", "");
				$("#rating_entry").unbind("mouseout");
				sf_setMyRating(v);
				setTimeout('sf_refreshRatings("' + gEntryId + '")', 3000);
			}
		}
	}; 
	f.ajaxSubmit(options); 
	$("#rating_entry").fadeTo("slow", 0.5);
}

function sf_updateRatings(data) {
	var results = eval("("+jQuery.trim(data) +")");
	if (results.avg != null && results.total != null) {
		gRatingCount = results.total;
		// node may not exists - 1st rating
		if (!$('#rating_results').length) {
			$("#rating_container").prepend("<div id='rating_results' class='rating'></div>");
		} 
		$("#rating_results").html('<img src="http://ec.snagfilms.com/i/rating/star' + results.avg + '.gif " />');
		$("#rating_entry").hide();
		sf_initRatings();
	}
}

function sf_refreshRatings(id) {
	jQuery.get("/films/rating/getrating/" + id, "", function(d) {sf_updateRatings(d);} )
}

function sf_showMyRating() {
	$("#rating_results").hide();
	$("#rating_entry").hide();
	$("#rating_myrating").show();
	sf_showAverageRating();
}

function sf_showAverageRating() {
	var s = "";
	if (gRatingCount) {
		s += "(" + gRatingCount + " total vote" + ((gRatingCount > 1) ? ("s") : ("")) + ") ";
	}
	s += '<a href="javascript:void(0);" onclick="javascript:sf_showAvgRating();">show average rating</a>';
	$("#rating_msg").html(s);
}

function sf_showRatingEntry() {
	$("#rating_results").hide();
	$("#rating_myrating").hide();
	$("#rating_entry").show();
	sf_showAverageRating();
}

function sf_showAvgRating() {
	$("#rating_entry").hide();
	$("#rating_myrating").hide();
	$("#rating_results").show();
	sf_update();
}

function sf_update() {
	var s = "";
	if (gRatingCount) {
		s += "(" + gRatingCount + " total vote" + ((gRatingCount > 1) ? ("s") : ("")) + ") ";
	}
	if (sf_getMyRating()) {
		s += '<a href="javascript:void(0);" onclick="javascript:sf_showMyRating();">show my rating</a>';
	} else {
		s += '<a href="javascript:void(0);" onclick="javascript:sf_showRatingEntry();">rate this film!</a>';
	}
	$("#rating_msg").html(s);
}

function sf_initMyRating() {
	var myrating = sf_getMyRating();
	if (myrating) {
		$("#rating_myrating_value").html('<img src="http://ec.snagfilms.com/i/rating/star' + myrating + '.gif " />');
	}
}

function sf_setMyRating(rating) {
	var myratings = $.cookie("r");
	if (myratings != null) {
		myratings += "|" + gEntryId + ":" + rating;
	} else {
		myratings = gEntryId + ":" + rating;
	}
	$.cookie("r", myratings, { expires: 30, path: "/" });	
}

function sf_getMyRating() {
	var myratings = $.cookie("r");
	if (myratings) {
		var ratings = myratings.split("|");
		for (var j=0; j < ratings.length; j++) {
			var rating = ratings[j].split(":");
			if (rating.length == 2) {
				var entry_id = jQuery.trim(rating[0]);
				var entry_rating = jQuery.trim(rating[1]);
				if (entry_id == gEntryId) {
					return (entry_rating);
				}
			}
		}
	}
	return (null);
}

function sf_initRatingEntry() {
	$("#rating_entry").css("background-repeat", "no-repeat");
	$("#rating_entry div").each( 
		function(index) { 
			$(this).css("float", "left"); 
			$(this).css("width", "15px"); 
			$(this).css("height", "13px"); 
			$(this).click( function() {sf_rate(index+1);} );
			$(this).bind("mouseover", function() {
				$("#rating_entry").css("background-image", "url(http://ec.snagfilms.com/i/rating/star" + (index+1) + ".gif)");
			} );
		} 
	);
	if (null == sf_getMyRating()) {
		$("#rating_entry").css("background-image", "url(http://ec.snagfilms.com/i/rating/star0.gif)");
		$("#rating_entry").bind("mouseout", function() {
			$("#rating_entry").css("background-image", "url(http://ec.snagfilms.com/i/rating/star0.gif)");
		} );
	}
}

function sf_initRatings() {
	sf_initRatingEntry();
	sf_initMyRating(gEntryId);
	sf_update();
	$("#rating_results").fadeIn("fast");
}

function sf_initFilmRatings(id) {
	gEntryId = id;
	sf_initRatings();
}