
var myConn = new XHConn();

var starsRight = [22,44,66,88];
var starsRating = new Array;
var starsRated = new Array;
var starsImgBaseUser = "/images/review/stars/yellow-";

var ratings = new Array;
function ratingObj () {
	this.subjectId = 0;
	this.subjectType = 0;
	this.ratingAvg = 0;
	this.ratingUser = 0;
	this.hoverRating = 0;
	this.inPlay = false;
	this.origImg = new Image;
	this.changed = false;
	this.saved = false;
	this.alreadyRated = false;
}

function starsHandleMouseIn (subjectTypeId,subjectId,ratingUser,ratingAvg,e) {
	var rid = addRating(subjectTypeId,subjectId,ratingUser,ratingAvg);
	ratings[rid].origImg.src = document.getElementById("stars_"+rid).src;
	ratings[rid].inPlay = true;
}


function addRating(subjectTypeId,subjectId,ratingUser,ratingAvg) {
	var r = new ratingObj();
	r.subjectId = subjectId;
	r.subjectTypeId = subjectTypeId;
	r.ratingUser = ratingUser;
	r.ratingAvg = ratingAvg;
	if (r.ratingUser){ r.alreadyRated = true; }
	var rid = r.subjectTypeId+"_"+subjectId;
	if (! ratings[rid] ){
		ratings[rid] = r;
	}
	return rid;
}

var starsImgUser = new Array;
starsImgUser[1] = new Image;
starsImgUser[1].src = starsImgBaseUser + "1" + ".gif";
starsImgUser[2] = new Image;
starsImgUser[2].src = starsImgBaseUser + "2" + ".gif";
starsImgUser[3] = new Image;
starsImgUser[3].src = starsImgBaseUser + "3" + ".gif";
starsImgUser[4] = new Image;
starsImgUser[4].src = starsImgBaseUser + "4" + ".gif";
starsImgUser[5] = new Image;
starsImgUser[5].src = starsImgBaseUser + "5" + ".gif";

var starsSavingImg = new Image;
starsSavingImg.src = "/recipes/images/review/stars/saving.gif";

function starsHandleMouseover (subjectTypeId,subjectId,ratingUser,ratingAvg,e) {
	var rid = subjectTypeId+"_"+subjectId;
	if (!ratings[rid]) {
		starsHandleMouseIn (subjectTypeId,subjectId,ratingUser,ratingAvg,e);
	} else {
		if (ratings[rid].inPlay==false) {
			starsHandleMouseIn (subjectTypeId,subjectId,ratingUser,ratingAvg,e);
		}
	}
	var div = document.getElementById("rating_"+rid);
	e = e || window.event;
	var x = getElemMouseX(e,div);
	var r;
	if (x < starsRight[0]){
		r = 1;
	} else if (x < starsRight[1]){
		r = 2;
	} else if (x < starsRight[2]){
		r = 3;
	} else if (x < starsRight[3]){
		r = 4;
	} else {
		r = 5;
	}
	ratings[rid].hoverRating = r;
	var src = "/images/review/stars/yellow-"+r+".gif";
	var img = document.getElementById("stars_"+rid);
	img.src = src;
}

function starsHandleMouseout (subjectTypeId,subjectId) {
	var rid = subjectTypeId+"_"+subjectId;
	var img = document.getElementById("stars_"+rid);
	if (ratings[rid].changed==false){
		img.src = ratings[rid].origImg.src;
	}
	ratings[rid].inPlay = false;
	ratings[rid].changed = false;
}

function starsHandleClick (subjectTypeId,subjectId) {
	var rid = subjectTypeId+"_"+subjectId;
	var r = ratings[rid].hoverRating;
	var auth = getCookie('mdwac');
	if (auth){
		ratings[rid].changed = true;
		ratings[rid].saved = false;
		ratings[rid].ratingUser = r;
		starsSaveRating(subjectTypeId,subjectId,r);
	} else {
		alert('Please sign in to rate and review recipes.');
	}
}

var starsFnUpdateFinish = function (oXML) {
	var lines = oXML.responseText.split("\n");
	//alert(oXML.responseText);
	if (lines[0] > 0) {
		// sucesss
		var subjectTypeId = lines[0];
		var subjectId = lines[1];
		var rating = lines[2];
		var success = lines[3];
		var rid = subjectTypeId+"_"+subjectId;
		var src = "/images/review/stars/yellow-"+rating+".gif";
		var img = document.getElementById("stars_"+rid);
		img.src = src;		
		ratings[rid].saved = true;
		var div = document.getElementById("recipe-rating-info");
		if (ratings[rid].alreadyRated == false) {
		div.innerHTML = "Now that you've rated this recipe, would you like to <a href='/recipes/review.html?id="+subjectId+"'>write a review</a>?<br>";
		}
		window.status = "rated: " + rid + "=" + rating + " ( " + success + " ) ";
	} else {
		// failure
		window.status = oXML.responseText;
	}
}

function starsSaveRating (subjectTypeId,subjectId,rating) {
	var rid = subjectTypeId+"_"+subjectId;
	var img = document.getElementById("stars_"+rid);
	img.src = starsSavingImg.src;
	var auth = getCookie('mdwac');
	myConn.connect("/function/rate.html", "POST", "subject="+subjectId+"&type="+subjectTypeId+"&auth="+auth+"&overall="+rating, starsFnUpdateFinish);
	//window.status = "rating: " + rid + "=" + rating ;
}



