
var rbNIValue = -1;
var rbNoOpValue = -2;
var rbClearValue = -3;

var rbEmptyValue = 0;
var rb_TYPE_PREDICT = 8;
var rbRatedType = 2;
var rbImageTypes = 4;

var rbButtonSpacing = 5;
var rbSpotHeight = 15;
var rbSpotWidth = 16;
var rbSpotSpacing = 3;
var rbTotalWidth = rbNumSpots*rbSpotWidth + (rbNumSpots-1)*rbSpotSpacing;


var ratedItems = "";
var ratedRatings = "";
function trackRating (thisItemID, rating) {
	ratedItems = ratedItems + thisItemID + ",";
	ratedRatings = ratedRatings + rating + ",";
	
}

var rbImages;

function rbImageName(spotType, n) {
	return rbImageRoot + "stars_" + spotType + "_" + n + ".gif";
}

function rbImage(spotType, ratingValue) {
	var n;
	if(ratingValue > 5) {
		n = 50;
	} else if(ratingValue < 0) {
		n = 0;
	} else {
		n = Math.round(ratingValue * 10);
	}
	if(! rbImages[spotType][n]) {
		rbImages[spotType][n] = new Image(rbTotalWidth, rbSpotHeight);
		rbImages[spotType][n].src = rbImageName(spotType, n);
	}
	return rbImages[spotType][n].src;
}

function rbNoOpinionImage(selected) {
	return rbImageRoot + (selected ? "nop_selected.gif" : "nop_low.gif");
}

function IsClearImageAvailable(imgNum) {
	return (rbTypes[imgNum] == rbRatedType) || ((rbSpecialValues[imgNum] != 0) && (rbSpecialValues[imgNum] != rbNoOpValue));
}

function rbClearImage(imgNum, selected) {
	return rbImageRoot + (selected ? "clear_selected.gif" : (IsClearImageAvailable(imgNum) ? "clear_low.gif" : "clear_unavailable.gif"));
}

function rbNotInterestedImage(selected) {
	return rbImageRoot + (selected ? "ni_selected.gif" : "ni_low.gif");
}

function rbCircleSlash(selected) {
	var string = rbImageRoot;
	if(selected) string = string + "ni_slim_bar_high.gif";
	else string = string + "ni_slim_bar_low.gif";
	return string;
}

function rbPreload() {
	if(! rbImages) {
		rbImages = new Array();
		for (var j = 0; j <= rbImageTypes; j++) {
			rbImages[j] = new Array();
		}
		for (var j = rbRatedType; j <= rbRatedType; j++) {
			for (var i = 1; i <= rbNumSpots; i++) {
				rbImages[j][i] = new Image(rbTotalWidth, rbSpotHeight);
				rbImages[j][i].src = rbImageName(j, 10*i);
			}
		}
		ratingBarIsReady = true;
	}
}

var rbAltDisplay = new Array();
rbAltDisplay[rbClearValue] = 'Click to remove your rating from this item';
rbAltDisplay[rbNoOpValue] = 'Click to rate as "No Opinion"';
rbAltDisplay[rbNIValue] = 'Click to rate as "Not Interested"';
rbAltDisplay[1] = 'Click to rate as "Hate It"';
rbAltDisplay[2] = 'Click to rate as "Do Not Like It"';
rbAltDisplay[3] = 'Click to rate as "Just OK"';
rbAltDisplay[4] = 'Click to rate as "Like It"';
rbAltDisplay[5] = 'Click to rate as "Love It"';

var rbCount = 0;
var rbItemIds = new Array();
var rbTypes = new Array();
var rbRatingValues = new Array();
var rbRefresh = new Array();
var rbTimeouts = new Array();
var rbRememberedValues = new Array();
var rbSpecialValues = new Array();
var rbThisOriginalValue = -1;

var ratingBarIsReady = false;

function rbMouseOver(imgNum, xSpot) {
	if(rbTimeouts[imgNum] != 0) {
		window.clearTimeout(rbTimeouts[imgNum]);
		rbTimeouts[imgNum] = 0;
	}
	if(rbThisOriginalValue >= 0 && rbThisOriginalValue != imgNum) {
		rbResetRating(rbThisOriginalValue);
	}
	
	if(rbThisOriginalValue >= 0
			&& rbThisOriginalValue == imgNum
			&& xSpot < 0) {
		rbResetRating(rbThisOriginalValue);
	}
	
	rbThisOriginalValue = imgNum;
	
	if(xSpot > 0) {
		document.images["rb"+imgNum].src = rbImage(rbRatedType, xSpot);
	} else if(xSpot == rbNIValue) {
		document.images["rb"+imgNum].src = rbImage(rbEmptyValue, 0);
	} else if(xSpot == rbNoOpValue) {
		document.images["rb"+imgNum].src = rbImage(rb_TYPE_PREDICT, rbRememberedValues[imgNum]);
	} else if(xSpot == rbClearValue && IsClearImageAvailable(imgNum)) {
		document.images["rb"+imgNum].src = rbImage(rb_TYPE_PREDICT, rbRememberedValues[imgNum]);
		document.images["rbImgClearRating"+imgNum].src = rbClearImage(imgNum, true);
	}

	if(document.images["rbImgNoOpinion"+imgNum]) {
		document.images["rbImgNoOpinion"+imgNum].src = rbNoOpinionImage((xSpot == rbNoOpValue));
	}
	
	if(document.images["rb_ni"+imgNum]) {
		document.images["rb_ni"+imgNum].src = rbNotInterestedImage((xSpot == rbNIValue));
	}
	
	if(document.images["rbImgCircleSlash"+imgNum]) {
		document.images["rbImgCircleSlash"+imgNum].src = rbCircleSlash((xSpot == rbNIValue));
	}
	
	window.status = rbAltDisplay[xSpot];
	
	return false;
	
}

function rbResetRating(imgNum) {

	if(rbSpecialValues[imgNum] == rbNIValue) {
		rbTypes[imgNum] = rbEmptyValue;
	}
	
	document.images["rb"+imgNum].src = rbImage(rbTypes[imgNum], rbRatingValues[imgNum]);
	
	if(document.images["rbImgClearRating"+imgNum]) {
		document.images["rbImgClearRating"+imgNum].src = rbClearImage(imgNum, false);
	}
	
	if(document.images["rbImgNoOpinion"+imgNum]) {
		document.images["rbImgNoOpinion"+imgNum].src = rbNoOpinionImage((rbSpecialValues[imgNum] == rbNoOpValue));
	}
	
	if(document.images["rb_ni"+imgNum]) {
		document.images["rb_ni"+imgNum].src = rbNotInterestedImage((rbSpecialValues[imgNum] == rbNIValue));
	}
	
	if(document.images["rbImgCircleSlash"+imgNum]) {
		document.images["rbImgCircleSlash"+imgNum].src = rbCircleSlash((rbSpecialValues[imgNum] == rbNIValue));
	}
	
	rbTimeouts[imgNum] = 0;
	
	if(rbThisOriginalValue == imgNum) {
		rbThisOriginalValue = -1;
	}
	
	window.status = "";
	
}

function rbMouseOut(xSpot) {

	var imgNum = rbThisOriginalValue;
	
	if(imgNum < 0) {
		return void(0);
	}
	
	if(! rbTimeouts[imgNum]) {
		rbTimeouts[imgNum] = window.setTimeout("rbResetRating("+imgNum+")", 100);
	}
	
	window.status = "";
	
}

function rbClicked(xSpot) {

	var objectID;
	var ratingURL;
	var rateWindow;
	var imgNum = rbThisOriginalValue;
	
	if(! ratingBarIsReady || imgNum < 0) {
		return void(0);
	}
	
	ratingBarIsReady = false;
	objectID = rbItemIds[imgNum];
	
	if(xSpot == rbNIValue) {
		ratingURL = "&thisItemID="+objectID+"&value="+"notInterested";
		rbTypes[imgNum] = rbEmptyValue;
		rbRatingValues[imgNum] = rbRememberedValues[imgNum];
		rbSpecialValues[imgNum] = xSpot;
	} else if(xSpot == rbNoOpValue) {
		ratingURL = "&thisItemID="+objectID+"&value="+"noOpinion";
		rbTypes[imgNum] = rb_TYPE_PREDICT;
		rbRatingValues[imgNum] = rbRememberedValues[imgNum];
		rbSpecialValues[imgNum] = xSpot;
	} else if(xSpot == rbClearValue) {
		if((rbTypes[imgNum] != rbRatedType) && (rbSpecialValues[imgNum] == 0)) {
			ratingBarIsReady = true;
			return void(0);
		}
		ratingURL = "&thisItemID="+objectID+"&value="+"clear";
		rbTypes[imgNum] = rb_TYPE_PREDICT;
		rbRatingValues[imgNum] = rbRememberedValues[imgNum];
		rbSpecialValues[imgNum] = 0;
	} else {
		ratingURL = "&thisItemID="+objectID+"&value="+xSpot;
		rbTypes[imgNum] = rbRatedType;
		rbRatingValues[imgNum] = xSpot;
		rbSpecialValues[imgNum] = 0;
	}
	
	ratingURL = rbSetRatingURL + ratingURL;
	
	window.setTimeout("rbResetRating("+imgNum+")", 10);
	
	var thisratingMessage = "ratingMessage" + objectID + ".innerText = 'Your rating was stored.'";
	eval(thisratingMessage);
	
	rbResetRating(imgNum);
	
	trackRating(objectID, xSpot);
	
	if(rbRefresh[imgNum]) {
		window.location.href = ratingURL;
		ratingBarIsReady = true;
		return void(0);
	}
	
	rateWindow =
		window.open("","tempRatingWindow","resizable=yes,dependent=yes,width=375,height=375,screenX="
					+ window.screenX+",screenY="+window.screenY
					+ ",top="
					+ window.screenX
					+ ",left="
					+ window.screenY);
					
	if(rateWindow && ! rateWindow.closed) {
		//rateWindow.blur();
		rateWindow.location.href = ratingURL;
		//self.focus();
		ratingBarIsReady = true;
		return void(0);
	}
	
	window.location.href = ratingURL;
	ratingBarIsReady = true;
	return void(0);
	
}

function outputRatingBar(objectID, imgNum, isNotInterested, ratingValue, spotType, disableClicks){
	
	var thisSpotType = spotType;
		
	if(isNotInterested) thisSpotType = rbEmptyValue;
	
	with (document) {
	
		if(objectID == 0) {
		
			write("<img src='"
				  + rbImage(thisSpotType, ratingValue)
				  + "' alt='"
				  + ratingValue
				  + "-average rating' border=0>");
			
		} else {
			if(disableClicks){
				write("<img name='rb"
					  + imgNum
					  + "' usemap='#ratingBar"
					  + imgNum
					  + "' src='"
					  + rbImage(thisSpotType, ratingValue)
					  + "' alt='Rating: "
					  + ratingValue
					  + "' border=0>");
			} else {
				write("<map name='ratingBar"
					  + imgNum
					  + "'><area href='javascript:rbClicked(1);' alt='"
					  + rbAlt1Text
					  +"' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",1);' onMouseOut='rbMouseOut(1);' shape='rect' coords='0,0,18,14'><area href='javascript:rbClicked(2);' alt='"
					  + rbAlt2Text
					  +"' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",2);' onMouseOut='rbMouseOut(2);' shape='rect' coords='19,0,37,14'><area href='javascript:rbClicked(3);' alt='"
					  + rbAlt3Text
					  +"' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",3);' onMouseOut='rbMouseOut(3);' shape='rect' coords='38,0,56,14'><area href='javascript:rbClicked(4);' alt='"
					  + rbAlt4Text
					  +"' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",4);' onMouseOut='rbMouseOut(4);' shape='rect' coords='57,0,75,14'><area href='javascript:rbClicked(5);' alt='"
					  + rbAlt5Text
					  +"' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",5);' onMouseOut='rbMouseOut(5);' shape='rect' coords='76,0,94,14'></map><img name='rb"
					  + imgNum
					  + "' usemap='#ratingBar"
					  + imgNum
					  + "' src='"
					  + rbImage(thisSpotType, ratingValue)
					  + "' alt='"
					  + ratingValue
					  + "average rating' border=0>");
			}
			
		}
	}
}

function insertRatingBar(objectID,
							
							spotType,
							ratingValue,
							
							isNotInterested,
							isNoOpinion,
							
							showNotInterestedButton,
							showCircleSlash,
							showClear,
							showNoOpinion,
							
							refreshWhenChanged,
							disableClicks) {
						
	var imgNum = rbCount++;
	
	if(objectID >= 0) {
		rbItemIds[imgNum] = objectID;
		rbTypes[imgNum] = spotType;
		rbRatingValues[imgNum] = ratingValue;
		rbRefresh[imgNum] = refreshWhenChanged;
		rbTimeouts[imgNum] = 0;
		if(isNotInterested) {
			rbSpecialValues[imgNum] = rbNIValue;
		} else if(isNoOpinion) {
			rbSpecialValues[imgNum] = rbNoOpValue;
		} else {
			rbSpecialValues[imgNum] = 0;
		}
		rbRememberedValues[imgNum] = ratingValue;
	}
	
	
	
	if(showNotInterestedButton || showCircleSlash || showClear || showNoOpinion) {
		
		with (document) {
			
			if(showCircleSlash) {
			
				write("<table cellpadding=0 cellspacing=0 border=0><tr><td align='center'><a href='javascript:rbClicked(-1);' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",-1)' onMouseOut='rbMouseOut(-1)'><img src='"
					  + rbCircleSlash(isNotInterested)
					  + "' border=0 alt='"
					  + rbAltNoInterest
					  + "' name='rbImgCircleSlash"
					  + imgNum
					  + "'></a></td><td>");
								
			} else {
			
				write("<table cellpadding=0 cellspacing=0 border=0><tr><td align='center'>");
				
			}
			
			outputRatingBar(objectID, imgNum, isNotInterested, ratingValue, spotType, diableClicks);
			
			write("</td></tr>");
			
			if(showNotInterestedButton) {
			
				write("<tr><td align='center'");
				if(showCircleSlash) write(" colspan=2");
				write(" height="
					  + rbButtonSpacing
					  + "><spacer type='block' height="
					  + rbButtonSpacing
					  + "</td></tr>"
					  + "<tr><td align='center'");
				if(showCircleSlash) write(" colspan=2");
				write("><a href='javascript:rbClicked(-1);' onMouseOver='rbMouseOver("

					  + imgNum
					  + ",-1)' onMouseOut='rbMouseOut(-1)'><img src='"
					  + rbNotInterestedImage(isNotInterested)
					  + "' border=0 alt='"
					  + rbAltNoInterest
					  + "' name='rb_ni"
					  + imgNum
					  + "'></a></td></tr>");
								
			}
			
			if(showClear) {
			
				write("<tr><td align='center' height="
					  + rbButtonSpacing
					  + "><spacer type='block' height="
					  + rbButtonSpacing
					  + "</td></tr>"
					  + "<tr><td align='center'");
				if(showCircleSlash) write(" colspan=2");
				write("><a href='javascript:rbClicked(-3);' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",-3)' onMouseOut='rbMouseOut(-3)'><img src='"
					  + rbClearImage(imgNum, false)
					  + "' border=0 alt='"
					  + rbAltClearRating
					  + "' name='rbImgClearRating"
					  + imgNum
					  + "'></a></td></tr>");
								
			}
			
			if(showNoOpinion) {
			
				write("<tr><td align='center'");
				if(showCircleSlash) write(" colspan=2");
				write(" height="
					  + rbButtonSpacing
					  + "><spacer type='block' height="
					  + rbButtonSpacing
					  + "</td></tr>"
					  + "<tr><td align='center'");
				if(showCircleSlash) write(" colspan=2");
				write("><a href='javascript:rbClicked(-2);' onMouseOver='rbMouseOver("
					  + imgNum
					  + ",-2)' onMouseOut='rbMouseOut(-2)'><img src='"
					  + rbNoOpinionImage(isNoOpinion)
					  + "' border=0 alt='"
					  + rbAltNoOpinion
					  + "' name='rbImgNoOpinion"
					  + imgNum
					  + "'></a></td></tr>");
								
			}
		   
			write("</table>");
		}
		
	} else {
	
		outputRatingBar(objectID, imgNum, isNotInterested, ratingValue, spotType, disableClicks);
		
	}
	
}

rbPreload();