
var ratings = { };

/* core variables */
var delimStrA = "_starA_";
var delimStrI = "_starI_";

/* functions */

function getRating(id) {
	if (ratings[id])
		return ratings[id];
	return 0;
}

// this function is used to write the star group out to the DOM using an inline JS call
function writeStars(container,id,num,enable,includeCancel) {
	if (!container || ! id || ! num) { return; }
	if (typeof container == "string") {
		container = document.getElementById(container);
	}
	var start = 1;
	if (includeCancel) { start = 0; }
	for (i=start;i<=num;i++) {
		var a = document.createElement("a");
		a.id = id + delimStrA + i;
		a.setAttribute("href", "javascript:void(0)");
		if (i==0) {
			a.setAttribute("title", "Cancel rating");
		} else {
			a.setAttribute("title", i+" star" + ((i > 1) ? "s" : ""));
		}
		if(enable != 0){
		addEvent(a, "click", function() {var delimIndex = this.id.indexOf(delimStrA); var id = this.id.substring(0, delimIndex); var index = this.id.substring(delimIndex + delimStrA.length); starProcess(id,index); return false;});
		addEvent(a, "mouseover", function() {var delimIndex = this.id.indexOf(delimStrA); var id = this.id.substring(0, delimIndex); var index = this.id.substring(delimIndex + delimStrA.length); starHover(id,index);});
		addEvent(a, "mouseout", function() {var delimIndex = this.id.indexOf(delimStrA); var id = this.id.substring(0, delimIndex); var index = this.id.substring(delimIndex + delimStrA.length); starReset(id,index);});
		}
		var img = document.createElement("img");
		img.id = id + delimStrI + i;
		img.alt = i+" star" + ((i > 1) ? "s" : "");
		if (i==0) {
			img.src = starCancel;
			img.className = "starx";
		} else {
			img.src = (i <= getRating(id)) ? starOn : starOff;
			img.className = "star";
		}
		img.width = "13";
		img.height = "13";
		//img.style = "vertical-align: middle";
		a.appendChild(img);container.appendChild(a);
	}
}



function starProcess(id,index) {
	starHandleClick(id,index);
}

function starHover(id,index) {
	for (i=index;i>0;i--) {
		var img = document.getElementById(id + delimStrI + i);
		img.src = starOver;
	}
}

function starReset(id,index) {
	for (i=1;i<=index;i++) {
		var img = document.getElementById(id + delimStrI + i);
		if (i <= getRating(id)) {
			img.src = starOn;
		} else {
			img.src = starOff;
		}
	}
}

function starSetRating(id,index) {
	if (! id || ! index) { return; }
	ratings[id] = parseInt(index);
	var i = 1;
	var img = document.getElementById(id + delimStrI + i);
	while (img) {
		if (i <= ratings[id]) {
			img.src = starOn;
		} else {
			img.src = starOff;
		}
		img = document.getElementById(id + delimStrI + ++i);
	}
}
