var voted = false;
var pollSessionVar;
function showResults() {
   voted = true;
   getPollInfo();
}
function getPollInfo(pollsTaken) {
	pollSessionVar = pollsTaken;
    // call polls.jsp to download the info
	var request = new Ajax.Request(
		"includes/polls.jsp",
		{ method:'post', 
		  parameters: 'x',
		  onSuccess: processPoll,
		  onFailure: pollError
		}
	);

}

function processPoll(transport) {
	//alert( transport.responseXML? Object.inspect(transport.responseXML) : "no xml" );
	var xmlDoc = transport.responseXML;
	//var jsonObj = eval ('('+ transport.responseText + ')');
	//if (jsonObj.polls && jsonObj.polls.length > 0) {
	if (xmlDoc) {
		var polls = xmlDoc.getElementsByTagName("poll");
		if (!polls || polls.length == 0) return;
		var pollId = polls[0].getAttribute("ID");
		var showForm = ( (pollSessionVar && pollSessionVar.indexOf(pollId) <= 0) && !voted);
		
		var pollQ = document.getElementById("poll-question");
		if (pollQ) pollQ.innerHTML = polls[0].getAttribute('question');
		else alert('what is up?');
		// now iterate the answers
		var qHtml = "";
		var answers = polls[0].getElementsByTagName("answer");
		//alert('got answers array with '+answers.length);
		if (showForm) { // build form
		  //alert('create form here');
		  qHtml += '<form name="pollForm" action="#" method="POST"><input type="hidden" name="pollId" value="'+pollId+'"/>\n';
		} else {
		  //qHtml += '<ul>';
		}
		var totalVotes = 0;
		for (i=0;i< answers.length;i++) {
			totalVotes += answers[i].getAttribute("votes") - 0;
		}
		for (i=0;i< answers.length;i++) {
			var votes = answers[i].getAttribute("votes") - 0;
			if (showForm) 
				qHtml += '<label><input type="radio" name="poll_answer_'+pollId+'" value="'+answers[i].getAttribute("id")+'">'+answers[i].getAttribute("text")+'</label><br/>';
			else
				qHtml +="*&nbsp;"+answers[i].getAttribute("text")+" ("+pctStr(votes,totalVotes)+")<br/>";
		}
		if (showForm) {
			qHtml += '<input type="button" name="submit" value="Submit" onclick="javascript:doAjax(this.form);"/></form>';
		} else { 
			//qHtml += '</ul>';
		}
		var pollDiv = document.getElementById("poll-body");
		if (pollDiv) {
			pollDiv.innerHTML = qHtml;
		} else {
			alert ('problem');
		}
	} else {
		alert('Could not get poll info: '+jsonObj.errorMessage);
	}
}
function pollError(request) {
	alert(request.responseText);
}

function pctStr(part,total) {
	return Math.round((part/total)*100) + '%';
}

/* These methods submit the vote */
function doAjax(theForm) {
	var pollId = theForm["pollId"].value;
	var answerCbs = theForm["poll_answer_"+pollId];
	var answerId;
	for (i=0;i < answerCbs.length;i++) {
 	   var cb = answerCbs[i];
	   if (cb.checked) answerId = cb.value;
	}  

	// call the jsp
	var request = new Ajax.Request(
		"includes/vote2.jsp",
		{ method:'post', 
		  parameters:'pollId='+pollId+'&pollAnswer='+answerId,
		  onSuccess:processVote,
		  onFailure: voteError
		}
	);
}
function processVote(transport) {
	//alert( transport.responseText? Object.inspect(transport.responseText) : "no json" );
	//var jsonObj = transport.responseText.evalJSON();
	var jsonObj = eval ('('+ transport.responseText + ')');
	if (jsonObj.status && jsonObj.status == 'success') {
		/*var pollDiv = document.getElementById("poll");
		if (pollDiv) {
			var answerSpans = pollDiv.getElementsByTagName("span");
			for (i=0;i < answerSpans.length;i++) {
				var spanId = answerSpans[i].id
				var spanHtml = answerSpans[i].innerHTML;
			}
		}*/
		showResults();
	} else {
		alert('Could not submit your vote: '+jsonObj.errorMessage);
	}
}
function voteError(request) {
	alert(request.responseText);
}
