
jQuery(function($) {
	upsRacingApplyRatingEvents($);	});

function upsRacingApplyRatingEvents($) {
	$(".rating-control a").hover(function(){
		var ratingControl = upsRacingGetThisRatingControl(this);
		if (ratingControl.hasClass("rateable") && !ratingControl.hasClass("rated")) {
			var objectId = upsRacingGetRatingObjectId(ratingControl);
			var thisRating = upsRacingGetRatingNumber(this);
			var ratingControlSelector = "#rating-control-" + objectId;
			$(ratingControlSelector+" a").each(function(){
				rating = upsRacingGetRatingNumber(this);
				if (rating>thisRating) {
					this.className += " unrated";
				} else {
					this.className += " hover";
				}
			});
		}
	},function(){
		var ratingControl = upsRacingGetThisRatingControl(this);
		if (ratingControl.hasClass("rateable") && !ratingControl.hasClass("rated")) {
			var objectId = upsRacingGetRatingObjectId(ratingControl);
			var thisRating = upsRacingGetRatingNumber(this);
			var ratingControlSelector = "#rating-control-" + objectId;
			$(ratingControlSelector+" a").each(function(){
				this.className = this.className.replace(" unrated","");
				this.className = this.className.replace(" hover","");
			});
		}
	});

	$(".rating-control a").click(function(){
		var ratingControl = upsRacingGetThisRatingControl(this);
		if (ratingControl.hasClass("rateable") && !ratingControl.hasClass("rated")) {
			var thisRating = upsRacingGetRatingNumber(this);
			var objectId = upsRacingGetRatingObjectId(ratingControl);
			var ratingControlSelector = "#rating-control-" + objectId;
			var objectType = $(ratingControlSelector + " .object-type").text();
			var userId = 0;
			jQuery.ajax({
				type:'POST',
				url:"http://www.racing.ups.com/wp-content/plugins/upsracing/object-rating.php",
				data: {user:userId,object:objectId,type:objectType,rating:thisRating},
				success: function(data) {
					var url = "http://www.racing.ups.com/wp-content/plugins/upsracing/object-rating.php?user="+userId+"&object="+objectId+"&type="+objectType+"&rating="+thisRating+"&random="+(Math.random()*100000000);
					var json = jQuery.ajax({url:url,async:false}).responseText;
					ratings = eval("("+json+")");
					$(ratingControlSelector + " .average-stars").html(ratings['average_stars']);
					$(ratingControlSelector + " .user-stars").html(ratings['user_stars']);
					$(ratingControlSelector + " a").attr("title","");
					ratingControl.removeClass("rateable");
					ratingControl.addClass("rated");
					upsRacingSetRatingLabel(ratingControl,"Avg. Rating:");
					/*
					var newRatingTip = "Avg. Rating: " + ratings['average_rating'] + "<br/>Your Rating: " + ratings['user_rating'];
					ratingControl.eq(0).simpletip().update(newRatingTip);
					*/
					$(ratingControlSelector + ".current-average").text(ratings['average_rating']);
					//alert(ratings['average_rating']);
					//alert(url + "\n" + json);
				},
				error: function(request,errMsg,exception) {
					alert("An eror occurred during rating: "+errMsg+"\nPlease try again later.");
				}
			});
			upsRacingNotifyOmnitureOnRating(this,s);
		}
	});

	$(".rating-control").hover(function(){
		var ratingControl = $(this);
		var objectId = upsRacingGetRatingObjectId(ratingControl);
		var ratingControlSelector = "#rating-control-" + objectId;
		if (ratingControl.hasClass("rated")) {
			$(ratingControlSelector + " .average-stars").css('display','none');
			$(ratingControlSelector + " .user-stars").css('display','block');
			upsRacingSetRatingLabel(ratingControl,"Your Rating:");
		}
	},function(){
		var ratingControl = $(this);
		var objectId = upsRacingGetRatingObjectId(ratingControl);
		var ratingControlSelector = "#rating-control-" + objectId;
		if (ratingControl.hasClass("rated")) {
			$(ratingControlSelector + " .average-stars").css('display','block');
			$(ratingControlSelector + " .user-stars").css('display','none');
			upsRacingSetRatingLabel(ratingControl,"Avg. Rating:");
		}
	});

}
function upsRacingGetThisRatingControl(anchor) {
	ratingControl = jQuery(anchor).parent().parent();
	return ratingControl;
}

function upsRacingAddRatingTip(ratingControl,averageRating) {
	ratingLabel = (averageRating.length==0 ? "No Ratings Yet" : "Avg. Rating: " + averageRating);
	ratingControl.simpletip({
		content:ratingLabel,
		baseClass:'rating-tip',
		fixed:false,
		onShow: function(){ }
	});
}
function upsRacingSetRatingLabel(ratingControl,text) {
	jQuery("#" + jQuery(ratingControl).attr('id') + " label").text(text);
}

function upsRacingGetRatingNumber(anchor) {
	rating = Number(anchor.title.split(/\s+/)[0]);	// anchor.title might be "3 out of 10"
	return rating;
}

function upsRacingGetRatingObjectId(ratingControl) {
	objectId = Number(ratingControl.attr("id").replace("rating-control-",""));
	return objectId;
}



