var path = "../themes/asics20/media/routes/";
var UT_RATING_IMG = path + 'star.gif';
var UT_RATING_IMG_HOVER = path + 'star_hover.gif';
var UT_RATING_IMG_HALF = path + 'star_half.gif';
var UT_RATING_IMG_BG = path + 'star_bg.gif';
var UT_RATING_IMG_REMOVED = path + 'star_removed.gif';

function UTRating(ratingElementId, maxStars, objectName, formName, ratingMessageId, componentSuffix)
{
 this.ratingElementId = ratingElementId;
 this.maxStars = maxStars;
 this.objectName = objectName;
 this.formName = formName;
 this.ratingMessageId = ratingMessageId
 this.componentSuffix = componentSuffix

 this.starTimer = null;
 this.starCount = 0;

 // pre-fetch image
 (new Image()).src = UT_RATING_IMG;
 (new Image()).src = UT_RATING_IMG_HALF;

 function showStars(starNum, skipMessageUpdate) {
 this.clearStarTimer();
 this.greyStars();
 this.colorStars(starNum);
 if(!skipMessageUpdate)
 this.setMessage(starNum);
 }

 function setMessage(starNum) {
 messages = new Array("Rate route", "Poor", "Not interesting", "Nice", "Nice route", "Perfect route");
 document.getElementById(this.ratingMessageId).innerHTML = messages[starNum];
 }

 function colorStars(starNum) {
 	for (var i=0; i < starNum; i++)
 		document.getElementById('star' + (i+1)).src = UT_RATING_IMG;
 }

 function greyStars() {
 for (var i=0; i < this.maxStars; i++) {
				 if (i <= this.starCount)
				 document.getElementById('star'  + (i+1)).src = UT_RATING_IMG_BG; // UT_RATING_IMG_REMOVED;
				 else
				 document.getElementById('star'  + (i+1)).src = UT_RATING_IMG_BG;
	}
 }

 function setStars(starNum) {
 this.starCount = starNum;
 this.drawStars(starNum);
 document.forms[this.formName]['rating'].value = this.starCount;
 var ratingElementId = this.ratingElementId;
 doAjaxCallRating();
 }


 function drawStars(starNum, skipMessageUpdate) {
 	this.starCount=starNum;
 	this.showStars(starNum, skipMessageUpdate);
 }

 function clearStars() {
 	this.starTimer = setTimeout(this.objectName + ".resetStars()", 300);
 }

 function resetStars() {
 this.clearStarTimer();
 if (this.starCount)
 		this.drawStars(this.starCount);
 else
 	this.greyStars();
 	this.setMessage(0);
 }

 function clearStarTimer() {
				 if (this.starTimer) {
						clearTimeout(this.starTimer);
						this.starTimer = null;
				 }
 }

 this.clearStars = clearStars;
 this.clearStarTimer = clearStarTimer;
 this.greyStars = greyStars;
 this.colorStars = colorStars;
 this.resetStars = resetStars;
 this.setStars = setStars;
 this.drawStars = drawStars;
 this.showStars = showStars;
 this.setMessage = setMessage;

}
