// developed by: Ennio Bozzetti
// date: 10/21/2009
// version: 0.0.1a
// description: Configuration neede for the poll. Uses ColdFusion and AJAX


//Call to the ColdFusion CFC
var pol = new pollInfo();
//Poll ID
var poll = "";

//Function to submit vote
function votePoll(pollID){
	//GET USERS ANSWER
	for (var i = 0; i < document.frmPoll.AnswerID.length; i++){
		if (document.frmPoll.AnswerID[i].checked){
			var answer = document.frmPoll.AnswerID[i].value;
		}
	}
	poll = pollID;
	pol.setCallbackHandler(returnVote);
	pol.setErrorHandler(pErr);
	pol.vote(pollID, answer);
}

//Error function, display error message
function pErr(code, message){
	alert("Please choose an answer first!");
}

//Display results after vote
function returnVote(result){
	//DISPLAY RESULTS
	document.getElementById('pollInput').style.display = 'none';
	document.getElementById('pollSubmit1st').style.display = 'none';
	document.getElementById('thankyouMessage').innerHTML = result;
	document.getElementById('pollResult').style.display = '';
	document.getElementById('pollBack').style.display = '';
	displayPollResult();	
}

function getTotalVotes(){
	pol.setCallbackHandler(returnTotalVotes);
	pol.setErrorHandler(pErr);
	pol.getTotalVotes(poll);
}

function returnTotalVotes(results){
	return results;
}
				
function displayPollResult(){
	pol.setCallbackHandler(returnPollResults);
	pol.setErrorHandler(pErr);
	pol.getPollResults(poll);
}

function returnPollResults(result){
	var listData = eval("(" + result + ")");
	var colMap = new Object();
	var htmlTOdisplay = "";
	var totalVotes = 0;
	
	for (var i =0; i < listData.COLUMNS.length; i++) {
		colMap[listData.COLUMNS[i]] = i;
	}
	for (var i = 0; i < listData.DATA.length; i++) {
		totalVotes = totalVotes + listData.DATA[i][colMap["VOTES"]];
	}
	
	for (var i = 0; i < listData.DATA.length; i++) {
		htmlTOdisplay += '<p>';
		htmlTOdisplay += '<p>';
		htmlTOdisplay += listData.DATA[i][colMap["ANSWER"]]
		htmlTOdisplay += " ";
		var percent = Math.round((listData.DATA[i][colMap["VOTES"]] / totalVotes) * 100);
		htmlTOdisplay += percent;
		htmlTOdisplay += '%</p>';
		htmlTOdisplay += '<p><img align="middle" src="/images/poll-graph.gif" width="' + percent + '%" height="5"></p>';
	}
	document.getElementById('displayResults').innerHTML = htmlTOdisplay;
}

function viewPoll(){
	document.getElementById('pollResult').style.display = 'none';
	document.getElementById('pollBack').style.display = 'none';
	document.getElementById('pollSubmit1st').style.display = '';
	document.getElementById('pollInput').style.display = '';						
}

function viewPollResults(pollID){
	pol.setCallbackHandler(callBackviewPollResults);
	pol.setErrorHandler(pErr);
	pol.getPollResults(pollID);
}

function callBackviewPollResults(results){
	var listData = eval("(" + results + ")");
	var colMap = new Object();
	var htmlTOdisplay = "";
	var totalVotes = 0;

for (var i =0; i < listData.COLUMNS.length; i++) {
		colMap[listData.COLUMNS[i]] = i;
	}
	for (var i = 0; i < listData.DATA.length; i++) {
		totalVotes = totalVotes + listData.DATA[i][colMap["VOTES"]];
	}

	for (var i = 0; i < listData.DATA.length; i++) {
		htmlTOdisplay += '<p>';
		htmlTOdisplay += listData.DATA[i][colMap["ANSWER"]]
		htmlTOdisplay += " ";
		var percent = Math.round((listData.DATA[i][colMap["VOTES"]] / totalVotes) * 100);
		htmlTOdisplay += percent;
		htmlTOdisplay += '%</p>';
		htmlTOdisplay += '<p><img align="middle" src="/images/poll-graph.gif" width="' + percent + '%" height="5"></p>';
	}
	document.getElementById('pollInput').style.display = 'none';
	document.getElementById('pollSubmit1st').style.display = 'none';
	document.getElementById('pollResult').style.display = '';
	document.getElementById('displayResults').innerHTML = htmlTOdisplay;
	document.getElementById('pollBack').style.display = '';	
	document.getElementById('thankyouMessage').innerHTML = '';
}