function poll_state_changed(xmlhttp, id)
{
	if (xmlhttp.readyState == 4) {
		if (!xmlhttp.responseText) {
			document.getElementById(id).innerHTML = 'Your vote has not been accepted.';
		} else {
			//document.getElementById(id).textContent = xmlhttp.responseText;
			var answers = xmlhttp.responseXML.getElementsByTagName('answer');
			for (var i=0; i < answers.length; i++) {
				var aid = answers[i].getAttribute('id');
				var percent = answers[i].getAttribute('percent');
				var width = answers[i].getAttribute('width');
				if (document.getElementById('answer_percent_'+aid)) {
					document.getElementById('answer_percent_'+aid).innerHTML = percent;
					document.getElementById('answer_stripe_'+aid).style.width = width;
					document.getElementById('answer_input_'+aid).style.display = 'none';
				}
			}
			document.getElementById(id).innerHTML = 'Your vote has been accepted.';
		}
	}
}

function poll_vote(url, f, id) {
	var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : 
		(window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
	if (!xmlhttp) {
		return false;
	}
	var poll_more = document.getElementById('poll_more');
	if (poll_more) poll_more.style.display = 'none';
	var poll_results = document.getElementById('poll_results');
	if (poll_results) poll_results.className = 'poll_results_center';
	
	document.getElementById(id).innerHTML = 'Sending vote to server...';
	var content = '';
	for (var i = 0; i < f.elements.length; i++) {
		if (f.elements[i].type == 'hidden'
			|| (f.elements[i].type == 'radio' && f.elements[i].checked)
			|| (f.elements[i].type == 'checkbox' && f.elements[i].checked))
		{
			content += (content ? '&' : '') + 
				encodeURIComponent(f.elements[i].name) + '=' +
				encodeURIComponent(f.elements[i].value);
		}
	}
	xmlhttp.open(f.method, url);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.onreadystatechange = function() {
		poll_state_changed(xmlhttp, id);
	};
	xmlhttp.send(content);
	return true;
}
