// The California Endowment - 2008 Annual Report Interactive Poll

var request;
var params = new Array();
var queryString;
var xmldoc;

var current_question = 1;
var questions_amount;
var voted_for;
var answers = new Array();

function setQueryString()
{
	var param_string = "";
	if(params.length > 0)
	{
		for(i=0;i<params.length;i++)
		{
			param_string += "&" + params[i].var_name + "=" + params[i].var_value;
		}
	}
	queryString = "action=getResults" + param_string;
}

function sendData(xmlphp)
{
	setQueryString();
	var rn = Math.random();
	var url = xmlphp + "?rn=" + rn;
	httpRequest("POST",url,true);
}

function initReq(reqType,url,isAsynch)
{
	request.onreadystatechange=handleResponse;
	request.open(reqType,url,isAsynch);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	request.send(queryString);
}

function httpRequest(reqType,url,asynch)
{
	// Mozilla Browsers

	if(window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if(!request)
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	if(request)
	{
		initReq(reqType,url,asynch);
	} else
	{
		alert("Your browser does not support this applications features!");
	}
}

function handleResponse()
{
	if(request.readyState == 4)
	{
		if(request.status == 200)
		{
			xmldoc = request.responseXML;
			displayResult();
		} else
		{
			alert("A problem occurred communicating with the server.");
		}
	}
}

function sendVote(the_question,the_vote)
{
	params[0] = new param_template("question",the_question);
	params[1] = new param_template("vote",the_vote);
	sendData("ar_poll_xml.php");
}

function param_template(var_name,var_value)
{
	this.var_name = var_name;
	this.var_value = var_value;
}

function displayResult()
{
	for(i=0;i<4;i++)
	{
		var dnum = i + 1;
		document.getElementById("decision"+dnum).checked = false;
	}
	questions_amount = xmldoc.getElementsByTagName('total_questions').item(0).firstChild.data;
	current_question = xmldoc.getElementsByTagName('selected_question').item(0).firstChild.data;
	document.getElementById("questions_display").innerHTML = questions_amount;
	document.getElementById("question_display").innerHTML = current_question;
	document.getElementById("theQuestion").innerHTML = xmldoc.getElementsByTagName('question_txt').item(0).firstChild.data;
	voted_for = xmldoc.getElementsByTagName('question_voted').item(0).firstChild.data;
	for(i=0;i<4;i++)
	{
		var answer_num = xmldoc.getElementsByTagName('answer').item(i).firstChild.data;
		if(answer_num == voted_for)
		{
			radialSelect(answer_num);
		}
		document.getElementById("answer"+answer_num).innerHTML = xmldoc.getElementsByTagName('answer_txt').item(i).firstChild.data;
		if(voted_for > 0)
		{
			var answer_percent = xmldoc.getElementsByTagName('answer_percentage').item(i).firstChild.data;
			if(answer_percent > 0)
			{
				document.getElementById("perc_bar"+answer_num).src = "img/perc_bar.gif";
				document.getElementById("perc_bar"+answer_num).width = answer_percent;
			} else
			{
				document.getElementById("perc_bar"+answer_num).src = "img/spacer.gif";
				document.getElementById("perc_bar"+answer_num).width = 1;
			}
			document.getElementById("perc"+answer_num).innerHTML = answer_percent + "%";
		} else
		{
			document.getElementById("perc_bar"+answer_num).src = "img/spacer.gif";
			document.getElementById("perc_bar"+answer_num).width = 1;
			document.getElementById("perc"+answer_num).innerHTML = "<!-- Empty -->";
		}
	}
}

function radialSelect(anum)
{
	document.getElementById("decision"+anum).checked = true;
}

function voteAnswer(decided)
{
	sendVote(current_question,decided);
}

function rotateQuestion()
{
	var incre = current_question;
	incre++;
	if(questions_amount > 0)
	{
		if(questions_amount < incre)
		{
			incre = 1;
		}
		if(questions_amount == incre)
		{
			document.getElementById("rotate_label").innerHTML = "Back to First Question";
		} else
		{
			document.getElementById("rotate_label").innerHTML = "Next Question";
		}
	}
	sendVote(incre,0);
}
