var xmlHttp;
var myid =0;
var uRating = 0;

function createXMLHttpRequest() 
{
    if (window.ActiveXObject) 
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) 
    {
        xmlHttp = new XMLHttpRequest();
    }
}
var starImages = new Array("Rating/0star.gif","Rating/1star.gif","Rating/2star.gif","Rating/3star.gif","Rating/4star.gif","Rating/5star.gif");
var nullStarMessage = "Rating/0.gif"
var starMap = new Array("0,0,22,20","23,0,36,20","37,0,50,20","51,0,64,20","65,0,78,20","79,0,101,20");
var starMessages = new Array("Not rated","Poor","Fair","Good","Very good","Excellent","Saved");
var savedRatings = new Array();
var changedRatings = new Array();
var starTwinkler = new Array();
var msgTwinkler = new Array();
var isRatingsBarChanged = false;
var delayTime = 500;
var allImages = new Array();
	
function preloadImages()
{
	for (i=0; i < preloadImages.length ;i++)
	{
	allImages[i] = new Image();
	allImages[i].src = preloadImages.arguments[i];
	}
}
preloadImages(starImages);

function SaveRatingAjax(id, ratingType, ratingValue)
{
	rating = ratingValue;
	var submitURL = ''+'GetAjax.aspx?o=rate'+'&i=' + id	+ '&r=' + ratingValue + '&t=' + ratingType;
	
	myid = id;
	isRatingsBarChanged = true;
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET", submitURL, true);
	xmlHttp.send(null);
}
function handleStateChange() 
{
    if(xmlHttp.readyState == 4) 
    {
        if(xmlHttp.status == 200) 
        {
				uRating=rating;
				
				var aReturn=xmlHttp.responseText.split(",");
        
    		document.images["stars." + myid].src = starImages[rating];
       	document.images["myRating" + myid].src = "Rating/stars" + aReturn[0] + ".gif";
		
				document.getElementById("lblScore" + myid).innerHTML = aReturn[2];
				document.getElementById("lblTotal" + myid).innerHTML = aReturn[3];
				document.getElementById("lblVotes" + myid).innerHTML = aReturn[1];
	    }
        else
        {
        alert("Error in AJAX");
        }
    }
}
function SwapStars(id, rating)
{
	if (rating == undefined)
	{
		rating = 0;
	}
	document.images["stars." + id].src = starImages[rating];
}
function SwapStarMsg(id, rating)
{
	var msgObject = document.getElementById("RateMsg." + id);

	if (rating == undefined)
	{
		if ( changedRatings[id] ) 
		{msgObject.innerHTML = starMessages[6];} 
		else 
		{msgObject.innerHTML = starMessages[0];}
	} 
	else 
	{msgObject.innerHTML = starMessages[rating];}
}
function SaveStars(id, rating, ratingtype)
{
 	if ((rating==1)||(rating==2)||(rating==3)||(rating==4)||(rating==5))
	{
	savedRatings[id] = rating;
	changedRatings[id] = 1;
	SaveRatingAjax(id, ratingtype, rating);
	SwapStarMsg(id, 6);
	}
	else
	{
	alert("Rating Value out of bounds, Values can only be 1/2/3/4/5. Current rating value: " + rating);
	}
}

function StarMouseOver(id, rating)
{
	if (starTwinkler[id] != 0)
	{
	window.clearTimeout(starTwinkler[id]);
	starTwinkler[id] = 0;
	}
	if (msgTwinkler[id] != 0)
	{
	window.clearTimeout(msgTwinkler[id]);
	msgTwinkler[id] = 0;
	}
  SwapStars(id, rating);
  SwapStarMsg(id, rating); 
}
function StarMouseOut(id)
{
	starTwinkler[id] = window.setTimeout("SwapStars("+id+","+uRating+")", delayTime);
	msgTwinkler[id] = window.setTimeout("SwapStarMsg("+id+","+uRating+")", delayTime);
}
function DisplayStarsAjax (id, rating, ratingtype)
{
	var starID = "stars." + id;
	uRating=rating;
	starTwinkler[id] = 0;
	msgTwinkler[id] = 0;
	document.write("<map name='starmap" + id +"'>");
	var i = 0;
	for (i = 1; i < 6; i++) 
	{
	document.write("<area shape=rect " + 
	"coords='" + starMap[i] + "' " +
	"onMouseOver=\"StarMouseOver('" + id + "'," + i + ");\" " +
	"onMouseOut=\"StarMouseOut('" + id + "');\" " +
	"onClick=\"SaveStars('" + id + "'," + i + "," + ratingtype + ");" +
	"\" >");
	}
	
	document.write("</map>");
	document.write("<img alt='Click to set' title='Click to set' src='" + starImages[rating] + "'");
	document.write(" style='cursor: pointer;' border=0 usemap='#starmap" + id);
	document.write("' id='" + starID + "'>");
}
function DisplayMsgAjax (id, rating)
{
	var msgID = "RateMsg." + id;

	if ( rating == undefined ) 
	{document.write("<span id="+msgID+ ">" + starMessages[0] + "</span>");}
	else 
	{document.write("<span id="+msgID+ ">" + starMessages[rating] + "</span>");}
}

