
var http;

function createRequest(){
	if(document.all){
		http = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		http = new XMLHttpRequest();
	}
}

function chooseOption(poll_ref, choice, results){
	http.open('get', "/myadmin/pollman/handleClick.php?poll_ref=" + poll_ref + "&choice=" + choice + "&results=" + results);
	http.onreadystatechange = handleResponse;
	http.send(null);
}

function getXMLRoot(){
	if(document.all){
		var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(http.responseText);			
		
		return xmlDoc.documentElement;
	}else{
		var doc = http.responseXML;
		return doc.documentElement;		
	}
}    
    
function handleResponse(){
	if(http.readyState == 4 && http.status == 200){
		var response = http.responseText;
		var root = getXMLRoot();
		
		var tableId;
		var message;
		
		if(root.hasChildNodes()) {
			var nds=root.childNodes;
			for (var i = 0; i < nds.length; i++){
				if(nds[i].nodeName == 'tableId' && nds[i].hasChildNodes()){
					tableId = nds[i].firstChild.nodeValue;
				}else if(nds[i].nodeName == 'message' && nds[i].hasChildNodes()){
					message = "<i>" + nds[i].firstChild.nodeValue + "</i>";
				}else if(nds[i].nodeName == 'results' && nds[i].hasChildNodes()){
					results = processResults(nds[i]);
				}
			}
		}
		
		var resultDiv = document.getElementById(tableId);
		var MAX = 150;
		
		var total = getVoteTotal(results);
		message += "<br>";
		for(var x = 0; x < results.length; x++){
			message += "<div>" + results[x].label + "</div>";
			message += "<div class=\"resultbar\" style=\"color: #FFFFFF; background-color: #AA" + ((x + 1) * 1111) + 
				"; width: " + (MAX * (results[x].clicks / total)) + "px; height: 13px; border: 1px solid #000000;\" ";
			message += "title=\"" + results[x].clicks + " votes\">" + Math.floor((results[x].clicks / total)*100) + "%</div>";
		}
		
		resultDiv.innerHTML = message;
	}
}

function getVoteTotal(results){
	var total = 0;
	for(var x = 0; x < results.length; x++){
		total += parseInt(results[x].clicks);
	}
	if(total == 0)
		return 1;
	return total;
}

function processResults(node){
	var results = new Array();
	var currentOpt;
	
	var nds=node.childNodes;
	for (var i = 0; i < nds.length; i++){
		if(nds[i].nodeName == 'opt' && nds[i].hasChildNodes()){			
			currentOpt = new Object();
			var optNodes = nds[i].childNodes;
			for (var y = 0; y < optNodes.length; y++){
				if(optNodes[y].nodeName == 'label' && optNodes[y].hasChildNodes()){
					currentOpt.label = optNodes[y].firstChild.nodeValue;					
				}else if(optNodes[y].nodeName == 'clicks' && optNodes[y].hasChildNodes()){
					currentOpt.clicks = optNodes[y].firstChild.nodeValue;
					results[results.length] = currentOpt;
				}
			}
		}
	}
	
	return results;
}

