var NUMBER_OF_STARS = 5;

var itemRating = 0;

var serverPath = "http://www.redbullcanmakemusic.com/";
var imagePath = serverPath + "img/";

var ratingStars = new Array(15);

ratingStars[0] = imagePath + "big_rating_off_01.gif";
ratingStars[1] = imagePath + "big_rating_off_02.gif";
ratingStars[2] = imagePath + "big_rating_off_03.gif";
ratingStars[3] = imagePath + "big_rating_off_04.gif";
ratingStars[4] = imagePath + "big_rating_off_05.gif";
ratingStars[5] = imagePath + "big_rating_half_01.gif";
ratingStars[6] = imagePath + "big_rating_half_02.gif";
ratingStars[7] = imagePath + "big_rating_half_03.gif";
ratingStars[8] = imagePath + "big_rating_half_04.gif";
ratingStars[9] = imagePath + "big_rating_half_05.gif";
ratingStars[10] = imagePath + "big_rating_on_01.gif";
ratingStars[11] = imagePath + "big_rating_on_02.gif";
ratingStars[12] = imagePath + "big_rating_on_03.gif";
ratingStars[13] = imagePath + "big_rating_on_04.gif";
ratingStars[14] = imagePath + "big_rating_on_05.gif";

for (i=0; i < ratingStars.length/3; i++) {
	var preload1 = new Image();
	var preload2 = new Image();
	var preload3 = new Image();

	preload1.src = ratingStars[i];
	preload2.src = ratingStars[i+5];
	preload3.src = ratingStars[i+10];
}



function getObj(name)
{
	if (document.getElementById) {
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	} else if (document.all) {
		this.obj = document.all[name];
		this.style = document.all[name].style;
	} else if (document.layers) {
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
//			alert('HTTP error ' + req.status);
			return;
		}
		callback(req);
	}
	if (req.readyState == 4) return;
	req.send(postData);
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}


function setRating(val, click)
{
    val = Math.round(val*2)/2; // make the rating a multiple of 0.5
	itemRating = val;

	for (var i=0; i<NUMBER_OF_STARS; i++) {
		var star = new getObj("rating_" + (i+1)).obj;
		if (i < val) {
			star.src = ratingStars[i+10];	// star is 'on'
		} else if (i == val + 0.5) {
			star.src = ratingStars[i+5];	// star is 'half'
		} else {
			star.src = ratingStars[i];		// star is 'off'
		}

		star.onmouseover = new Function("evt", "ratingHover("+i+");");
		star.onmouseout = new Function("evt", "ratingHover(-1);");
		star.onclick = new Function("evt", "submitRating("+(i+1)+");");
	}

    var text = new getObj("ratingText").obj;

    if (uid > 0) {
        if (click) {
            text.innerHTML = "vote saved!";
        } else {
            text.innerHTML = "rate this track";
        }
    } else {
        //text.innerHTML = "<a href=\""+ serverPath +"users/login.php\">Login</a> to rate!";
        text.innerHTML = "login to rate";

	}
}

function ratingHover(rating)
{
	for (var i=0; i<NUMBER_OF_STARS; i++) {
		var star = new getObj("rating_" + (i+1)).obj;

		if (rating > -1) {
			if (i <= rating) {
				star.src = ratingStars[i+10];	// star is 'on'
			} else {
				star.src = ratingStars[i];		// star is 'off'
			}
		} else {
			if (i < itemRating) {
				star.src = ratingStars[i+10];	// star is 'on'
			} else if (i == itemRating + 0.5) {
				star.src = ratingStars[i+5];	// star is 'half'
			} else {
				star.src = ratingStars[i];		// star is 'off'
			}
		}
	}
}
