function initRequest() 
{
	if (window.XMLHttpRequest) 
	{
		return new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{
		isIE = true;
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function submitVote(userId, pollId, selectedOption)
{
	var url = contextPath+"/poll_update.jsp?userId="+userId+"&pollId="+pollId+"&selectedOption="+selectedOption; 
	var req = initRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) 
		{
			if (req.status == 200) 
			{
				createCookie(pollId, 'voted', 365);
				displayPollResults();
			}
		}
	};

	req.open("GET", url, true);
	req.send(null);
}

function submitPollForm()
{
	var result = readCookie(featureId);

	if(result == null || result == "")
	{
		selectedOption = getPollCheckedValue(document.updatePollForm.selectedOption);
		if (selectedOption != "") 
		{
			submitVote(sessionId, featureId, selectedOption);
		}
		else 
		{
			alert ("Please select your choice and click Vote!");
			return;
		}			
	}
}

function getPollCheckedValue(radioObj) 
{
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) 
	{
		if(radioObj[i].checked) 
		{
			return radioObj[i].value;
		}
	}
	return "";
}

function displayPollResults() 
{
	document.getElementById('pollOptions').style.display = 'none';
	document.getElementById('pollResults').style.display = 'block';
	if(showResults == "Y")
		getPollResults();
	if(document.getElementById('surveyResults') != null )
		document.getElementById('surveyResults').style.display = 'block';								


}

function getPollResults()
{
	var url = contextPath + "/poll_results.jsp?featureId=" + featureId;
	if(resultsPage != null && resultsPage != undefined && resultsPage != 'undefined' && resultsPage == 'true')
		url = contextPath + "/poll_results.jsp?featureId=" + featureId + "&resultsPage=true";
	var req = initRequest();

	req.onreadystatechange = function() {		
		if (req.readyState == 4) 
		{
			if (req.status == 200) 
			{
				var outputData = parsePollResults(req.responseXML.documentElement);
				document.getElementById('resultList').innerHTML = outputData;
			}
		}
	};
	req.open("GET", url, true);
	req.send(null);
}

function parsePollResults(pollResults) {
	var outputData = "";
       	
	var totalVotes = 0;
	var remainderValue = 0;
	if(pollResults.getAttribute("totalVotes") != undefined && pollResults.getAttribute("totalVotes") != 'undefined' &&
		pollResults.getAttribute("totalVotes") != "" && pollResults.getAttribute("totalVotes") != null)
	{
		totalVotes = pollResults.getAttribute("totalVotes");
		outputData += "<div class='pollResutsTitle'>The results so far from " + totalVotes + " votes:</div>";
	}

	for (var k=0; k<document.updatePollForm.selectedOption.length; k++) 
	{
		var found = false;
		var formOption = document.updatePollForm.selectedOption[k].value;
		var formDisplayOption = document.updatePollForm.elements['selectedOptionName'+formOption].value;
		
		for (var i = 0; i<pollResults.childNodes.length; i++) 
		{
			dbOption = pollResults.childNodes[i].getElementsByTagName("option")[0].childNodes[0].data;
			if (formOption == dbOption) 
			{
				//alert(pollResults.childNodes[i].getElementsByTagName("value")[0].childNodes[0].data);
				var value = pollResults.childNodes[i].getElementsByTagName("value")[0].childNodes[0].data;

				/*
				if(remainderValue > 0.5)
				{
					var tempValue = Number(value) + Number(remainderValue);
					tempValue = new Number(tempValue);
					value = tempValue.toFixed(0);
					remainderValue = 0;
				}
				else
				{
					remainderValue += value - Math.floor(value);
					value = Math.floor(value);
				}
				*/

				if (value == null || value == "null") 
				{
					value = "0";
				}
				
				outputData += "<div class='pollQResult'>" + unescape(formDisplayOption);
				if(rightSide == "true")
					outputData += "<div class='pollBar' style='width: " + (value/100 * 100) + "px;' ></div>";
				else
					outputData += "<div class='pollBar' style='width: " + (value/100 * 200) + "px;' ></div>";
				outputData += "<div class='pollResultNumber'>" + (new Number(value)).toFixed(2) + "%</div>";
				outputData += "<div class='clear'></div>";
				outputData += "</div>";

				found = true;
			}
		}
		if (!found) 
		{
			var value = 0;
			outputData += "<div class='pollQResult'>" +unescape(formDisplayOption);
			if(rightSide == "true")
				outputData += "<div class='pollBar' style='width: " +  (value/100 * 100) + "px;' ></div>";
			else
				outputData += "<div class='pollBar' style='width: " +  (value/100 * 200) + "px;' ></div>";
			outputData += "<div class='pollResultNumber'>" + (new Number(value)).toFixed(2) + "%</div>";
			outputData += "<div class='clear'></div>";
			outputData += "</div>";
				
		}
	}
	return outputData;
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
		var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ')
			c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) 
{
	createCookie(name,"",-1);
} 
