var itemId = 0;
var numVotes = 0;
var aveRating = 0;
var stars = new Array();

function loadVotes(itemid)
{
	//getRatings();

	itemId = itemid;
	var url = 'Ajax-XML-Get-Votes.aspx?itemid=' + itemId + '&hash=' + Math.random() + unCache();
	var xmlhttp = null;
		
	if (window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
	}
	if (xmlhttp != null)
	{
		xmlhttp.onreadystatechange=function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			{
				var result = xmlhttp.responseXML.documentElement.getElementsByTagName('RESULT')[0];
				
			
				
				numVotes = result.getAttribute('numvotes');
				aveRating = result.getAttribute('averating');
				document.getElementById('RateItBox').style.display = 'block';
				document.getElementById('starsLoading').style.display = 'none';
				document.getElementById('belowStars').innerHTML = numVotes + ' user ratings';

				if(result.getAttribute('hasvoted') == 'True')
				{
					document.getElementById('aboveStars').innerHTML = 'Thanks for Rating!';
				}
				else
				{
					document.getElementById('aboveStars').innerHTML = 'Rate:';
				}
				
				if(result.getAttribute('isownidea') == 'True')
					document.getElementById('aboveStars').innerHTML = 'Average Rating:';
					
				if(result.getAttribute('userloggedin') == 0)
					document.getElementById('aboveStars').innerHTML = 'Average Rating:';
				
				document.getElementById('RateItBox').onmouseout = resetStars;
				for(var i = 1; i <= 5; i++)
				{
					stars[i] = document.getElementById('star' + i);
					if(result.getAttribute('hasvoted') != 'True' && result.getAttribute('isownidea') != 'True' && result.getAttribute('userloggedin') != 0)
					{
						stars[i].onmouseover = mouseOverStar;
						stars[i].onclick = starClick;
					}
					stars[i].starNum = i;
				}
				
				resetStars();
			}
			else if(xmlhttp.readyState == 4 && xmlhttp.status != 200)
			{
				document.getElementById('aboveStars').innerHTML = 'AJAX Error';
			}
		}
		xmlhttp.open('GET',url,true);
		xmlhttp.send(null);
	}
	else
	{
		alert('Your browser does not support XMLHTTP.');
	}
}

function mouseOverStar()
{
	for(var i = 1; i <= this.starNum; i++)
	{
		stars[i].className = 'starHover';
	}
	for(var i = this.starNum + 1; i <= 5; i++)
	{
		stars[i].className = 'star';
	}
}

function resetStars()
{
	for(var i = 1; i <= 5; i++)
	{
		if(i > aveRating)
			stars[i].className = 'star';
		else
			stars[i].className = 'starHover';
	}
}


function starClick()
{
	var vote = this.starNum;
	document.getElementById('aboveStars').innerHTML = 'Submitting...';
	
	var url = "Ajax-XML-Submit-Vote.aspx?itemid=" + itemId + "&uservote=" + vote + "&hash=" + Math.random()+ unCache();
	
	var xmlhttp = null; 
	
	if (window.XMLHttpRequest) 
	{ 
		xmlhttp = new XMLHttpRequest(); 
	} 
	else if (window.ActiveXObject) 
	{ 
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	} 
	if (xmlhttp!=null) 
	{ 
		xmlhttp.onreadystatechange=function() 
		{ 
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			{
				var someDOM = xmlhttp.responseXML.documentElement;
				if(someDOM.getElementsByTagName('SUCCESS').length !== 1)
				{
					document.getElementById('aboveStars').innerHTML = 'Error Submitting';
				}
				else
				{
					aveRating = aveRating * numVotes;
					aveRating = aveRating + vote;
					numVotes++;
					aveRating = aveRating / numVotes;
					document.getElementById('belowStars').innerHTML = numVotes + ' ratings';
					document.getElementById('aboveStars').innerHTML = 'Rating Submitted!';
				}
				for(var i = 1; i <= 5; i++)
				{
					stars[i].onmouseover = null;
					stars[i].onclick = null;
				}
				resetStars();
			}
			else if(xmlhttp.readyState == 4 && xmlhttp.status != 200)
			{
				alert('Problem retrieving XML data');
			}
		}
		xmlhttp.open('GET',url,true);
		xmlhttp.send(null);		
	}
}

function unCache()
{
	now = new Date()
	return '&uncache=' + Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());
}

