function getXMLHTTPRequest() {
	try {
		req = new XMLHttpRequest();
	}
	catch (err1) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (err2) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (err3) {
				req = false;
			}
		}
	}
return req;
}

var http = getXMLHTTPRequest();

function setSentenceRating(sentence_id, rating) {
	var myurl= "/ajax/setsentencerating.php";
	myRand = parseInt(Math.random()*999999999999999);
	var modurl = myurl+"?sentence_id="+parseInt(sentence_id)+"&rating="+parseInt(rating)+"&rand="+myRand;

	// Hide whatever's there...
	for (i = 0; i <= 5; i++)
	{
		document.getElementById('userstars'+sentence_id+'.'+i).style.display = 'none';
		document.getElementById('averagestars'+sentence_id+'.'+i).style.display = 'none';
	}
	// ...and show the progress bars while we update
	document.getElementById('userstars'+sentence_id+'.progress').style.display = 'inline';
	document.getElementById('averagestars'+sentence_id+'.progress').style.display = 'inline';


	http.open("GET", modurl, true);
	// set up the callback function
	http.onreadystatechange = rating_done;
	http.send(null);
};

function useHttpResponse() {
	if (http.readyState == 4) {
		if (http.status == 200) {
			var timeValue = http.responseXML.getElementsByTagName("timenow")[0];
			document.getElementById('showtime').innerHTML = timeValue.childNodes[0].nodeValue;
		}
	} else {
		document.getElementById('showtime').innerHTML = '<img src="hand.jpg">'+parseInt(http.readyState);
	}
}

function rating_done() {
	if (http.readyState == 4) {
		if (http.status == 200) {
			var sentence, new_rating, new_average;
			sentence = http.responseXML.getElementsByTagName("sentence")[0];
			var sentence_id  = sentence.getAttribute("id");
			new_rating = http.responseXML.getElementsByTagName("rating")[0].childNodes[0].nodeValue;
			new_average = http.responseXML.getElementsByTagName("average")[0].childNodes[0].nodeValue;
			number_of_ratings = http.responseXML.getElementsByTagName("numberofratings")[0].childNodes[0].nodeValue;

			// Hide the progress bars...
			document.getElementById('userstars'+sentence_id+'.progress').style.display = 'none';
			document.getElementById('averagestars'+sentence_id+'.progress').style.display = 'none';
						

			// ...and reveal the correct bar of stars.
			for (i = 0; i <= 5; i++)
			{
				document.getElementById('userstars'+sentence_id+'.'+i).style.display = (i == new_rating ? 'inline' : 'none');
				document.getElementById('averagestars'+sentence_id+'.'+i).style.display = (i == Math.round(new_average) ? 'inline' : 'none');

			}
			// Update the rating text from "Click to rate" to "Your rating":
			document.getElementById('yourratingtext'+sentence_id).innerHTML = "<b>Your rating:&nbsp;<b>";
			// Finally, update our total number of ratings and the average, in text.
			document.getElementById('numberofratings'+sentence_id).innerHTML = (number_of_ratings == 1 ? " <b>1</b> person has " : "<b>" + parseInt(number_of_ratings) + "</b> people have ");
			document.getElementById('averagerating'+sentence_id).innerHTML = "Average rating: <b>" + new_average + "</b>";
		}
	} else {
		// Nowt for now
	}
}

