			//get ajax object
			var ajax=null;
			try
			{
	  			// Firefox, Opera 8.0+, Safari
  				ajax=new XMLHttpRequest();
			}
			catch (e)
  			{
	  			// Internet Explorer
  				try
    			{
	    			ajax=new ActiveXObject("Msxml2.XMLHTTP");
    			}
  				catch (e2)
    			{
	    			ajax=new ActiveXObject("Microsoft.XMLHTTP");
    			}
  			}
  			
			var pollresults=new Array();
			//TODO: Populate this array, associate it to the form, and split calculation and formatting  			
  			
			function disableButtons(form,disable){
				if (form.submit) {form.submit.disabled=disable;}
				form.results.disabled=disable;
			}					
			
			function setVote(pollnum){
				var form=document.getElementById("poll" + pollnum);
				disableButtons(form,true);				
				//enable radio buttons
				var opts=form.vote.length;
				for(var i=0;i<opts;i++){
					form.vote[i].style.display="inline";
				}
				//enable submit button
				form.submit.style.display="inline";
				disableButtons(form,false);
			}
			
			function parseResults(form){
				var strRes=ajax.responseText;				
				//parse
				var strlength=strRes.length;
				var pos=0;
				var topres=0;
				var idoftop=new Array();
				while (pos<strlength){
					var endpos=strRes.indexOf(",",pos);
					var ourbit=strRes.substring(pos,endpos);
					pos=endpos+1;
					var divider=ourbit.indexOf(":");
					var tmpoid=ourbit.substring(0,divider);
					var percent=ourbit.substring(divider+1);
					disppercent=(Math.round(percent*10))/10;
					var barlabel=document.getElementById("pc" + tmpoid);
					barlabel.innerHTML = disppercent + '%';
					var bar=document.getElementById("res" + tmpoid);

					var containerwidth = bar.parentNode.offsetWidth;
					var availspace = containerwidth - 50;
					var adjpercent = (percent/100)*availspace;
					bar.style.width = adjpercent + 'px';
					
					if(percent > topres){
						topres = percent;
						while (idoftop.length > 0) {
							var oldtop=document.getElementById(idoftop.pop());
							oldtop.className="poll_res";
						}
						bar.className="poll_res poll_res_top";
						idoftop[0]=bar.id;
					} else if (percent == topres) {
						bar.className="poll_res poll_res_top";
						idoftop.push(bar.id);
					}
				}
				disableButtons(form,false);
				document.getElementById(form.id+"status").innerHTML="";
			}			
			
			function getResults(form, get, voted, pollnum){
				disableButtons(form, true);
				if (ajax===null){
					alert("Your browser does not support this poll. Please upgrade to a more modern browser (IE5+/Firefox)");
					return;
					}
				var url="processpoll.php?" + get;
				ajax.open("GET",url,false);
				ajax.send(null);
				if(voted){
					form.submit.style.display="none";
				} else {
					form.submit.value="Vote";
				}
				var opts=form.vote.length;
				for(var i=0;i<opts;i++){
					form.vote[i].style.display="none";
				}
				parseResults(form);
			}			
			
			function pollSubmit(pollnum){
				var form=document.getElementById("poll"+pollnum);
				var choices = form.vote;
				var selection = 0;
				for(var i = 0; i < choices.length; i++) {
					if(choices[i].checked) {
						selection = choices[i].value;
					}
				}	
				if(selection===0) {
					alert("Please select an option");
					document.getElementById("poll"+pollnum+"status").innerHTML="";
					return;
				}
				document.getElementById("poll"+pollnum+"status").innerHTML="Submitting...";
				var get="vote="+selection;
				getResults(form, get, true, pollnum);
				/*setCookie("poll"+pollnum, selection, 100);*/
			}

			function submitButton(button, pollnum){
				if(button.value=="Submit"){
					pollSubmit(pollnum);
					button.value="Vote";
				} else {
					setVote(pollnum);
					button.value="Submit";
				}
			}			
			
			function pollResults(pollnum, voted) {
				var form=document.getElementById("poll"+pollnum);
				document.getElementById("poll"+pollnum+"status").innerHTML="Getting results...";
				var pollid=form.pid.value;
				var get="poll="+pollid;
				getResults(form, get, voted, pollnum);
			}
			

			/*function getCookie(c_name) {
				if (document.cookie.length>0) {
  					var c_start=document.cookie.indexOf(c_name + "=");
  					if (c_start!=-1) { 
    					c_start=c_start + c_name.length+1; 
    					var c_end=document.cookie.indexOf(";",c_start);
    					if (c_end==-1) {c_end=document.cookie.length;}
    					return unescape(document.cookie.substring(c_start,c_end));
    				} 
  				}
				return "";
			}
			
			function checkCookie(pollnum){
				var data=getCookie("poll" + pollnum);
				if (data!=="" && data!==null){
					return true;
				} else {
					return false;
				}				
			}
			
			function setCookie(c_name,value,expiredays) {
				var exdate=new Date();
				exdate.setDate(exdate.getDate()+expiredays);
				document.cookie=c_name+ "=" +escape(value)+
				((expiredays===null) ? "" : ";expires="+exdate.toGMTString());
			}*/
