function readCookie (name) {
	var cookieValue = "";
	var search = name + "=";
	
	if (document.cookie.length > 0) { 
		var offset = document.cookie.indexOf(search);
		
		if (offset != -1) { 
			offset += search.length;
			
			var end = document.cookie.indexOf(";", offset);
			if (end == -1) end = document.cookie.length;
			
			cookieValue = unescape(document.cookie.substring(offset, end));
		}
	}
	
	return cookieValue;
}

function writeCookie (name, value, hours) {
	var expire = new Date((new Date()).getTime() + hours * 3600000);
	expire = "expires=" + expire.toGMTString();
	
	document.cookie = name + "=" + escape(value) + "; " + expire + "; path=/;";
}

function getAJAXObject () {
	try {
		var xmlhttp = new XMLHttpRequest();
	} catch (err1) {
		var ieXmlHttpVersions = [
			"Microsoft.XMLHttp",
			"MSXML2.XMLHttp",
			"MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp.4.0",
			"MSXML2.XMLHttp.5.0",
			"MSXML2.XMLHttp.6.0",
			"MSXML2.XMLHttp.7.0"
		];
		
		var i = ieXmlHttpVersions.length;
		
		while (i--) {
			try {
				var xmlhttp = new ActiveXObject(ieXmlHttpVersions[i]);
				break;
			} catch (err2) {
				//alert(ieXmlHttpVersions[i] + " not supported.");
			}
		}
	}

	if (typeof xmlhttp == "undefined") return false;
	return xmlhttp;
}

function sendAndLoad (myvars) {
	var xmlhttp = getAJAXObject();
	if (!xmlhttp) populateContent("Looks like your web browser needs to be updated to view this content. Please consider <a href='http://www.mozilla.com/firefox/'>downloading</a> Firefox, the free browser from Mozilla.");
	
	xmlhttp.open("POST", "/include/resolution_poll/ResolutionPoll.php", true);
	
	xmlhttp.onreadystatechange = function () {
		
		switch (xmlhttp.readyState) {
			case 0:
				//UNINITIALIZED
				break;
			case 1:
			case 2:
				//LOADING
				break;
		   	case 3:
				//INTERACTIVE
				break;
			case 4:
				if (xmlhttp.status == 200) {
					populateContent(xmlhttp.responseText);
				} else {
					populateContent("The server encountered an error. Please try again.");
				}
				break;
		}
	}
	
	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
	xmlhttp.send(myvars);    
}


function populateContent (response) {
	var container = document.getElementById("resolution_poll_container");  
	
	//FADE IN
	var myFx = new Fx.Tween(container, { duration: 700, fps: 30 });
	myFx.set('opacity', 0);
	myFx.start('opacity', 1);
	
	//SET THE CONTENT
	container.innerHTML = response;
	
	var hiddenblock = document.getElementById("resolution_poll_hidden_data");
	var hidden_data = hiddenblock.innerHTML; 
	if (hidden_data == "undefined" || hidden_data == "") return;
	
	//TWEEN BARS
	tweenBars(hidden_data);   
}

function getRadioValueFromFieldName (myfield) {
	var form = document.getElementById("resolution_poll_form");
	
	//LOOP THROUGH ALL FORM ELEMENTS
	var i = form.elements.length;
	
	while (i--) {
		var element = form.elements[i];
		var field = element.name;
		var val = element.value;
		
		if (field != myfield) continue;
		if (element.checked) return val;
	}
	
	return 0;
}

function tweenBars (hidden_data) {
	var arr = hidden_data.split("|");
	
	var i = arr.length;
	
	while (i--) {
		var data = arr[i].split("=");
		
		var myFx = new Fx.Tween(data[0], { duration: 1000, fps: 30 });
		myFx.start('width', data[1]);
	}
}

function clearWriteIn () {
	var write_in_field = document.getElementById("resolution_poll_write_in");
	write_in_field.value = "";
}

function startChecking () {
	clearRadioList();
	resolution_poll_int = setInterval("clearRadioList()", 50);
}

function stopChecking () {
	clearInterval(resolution_poll_int);
}

function clearRadioList () {
	//IF TYPING IN THE WRITE-IN BOX, UNCHECK ANY CHECKED RADIO BUTTONS
	var write_in_field = document.getElementById("resolution_poll_write_in");
	var val = write_in_field.value.trim();
	if (val == "") return;
	
	var form = document.getElementById("resolution_poll_form");
	
	//LOOP THROUGH RADIOS AND CLEAR
	var i = form.elements.length;
	
	while (i--) {
		var element = form.elements[i];
		var field = element.name;
		var val = element.value;
		
		if (field != "uid_name") continue;
		element.checked = false;
	}
}

function submitVote () {
	var radio_val = getRadioValueFromFieldName("uid_name");
	var write_in_field = document.getElementById("resolution_poll_write_in");
	var write_in_val = write_in_field.value.trim();
	var write_in_uid_field = document.getElementById("write_in_uid");
	var write_in_uid_val = write_in_uid_field.value.toInt();
	
	if (radio_val == "" || radio_val == "0") {
		if (write_in_val == "") {
			return;
		}
	}
	
	//SWAP OUT BUTTON WITH LOADING MESSAGE
	var button = document.getElementById("resolution_poll_submit_button");
	button.innerHTML = "<i>Submitting...</i>";
	
	//WRITE A COOKIE TO PREVENT MULTIPLE SUBMISSIONS
	writeCookie("resolution_poll", 1, 1);
	
	if (write_in_val != "") {
		//DOING A WRITE IN
		write_in_val = escape(write_in_val);
		sendAndLoad("write_in_name=" + write_in_val + "&uid_name=" + write_in_uid_val + "&dosubmit=1");	
	} else {
		//SUBMIT CONTENT AND GET RESULTS
		sendAndLoad("uid_name=" + radio_val + "&dosubmit=1");
	}
}

function initResolutionPoll () {
	var cookie = readCookie("resolution_poll");
	
	if (cookie == "") {
		//SHOW THE FORM IF NO COOKIE
		sendAndLoad("");
	} else {
		//SKIP FORM, SHOW THE RESULTS (AS IF YOU'VE SUBMITTED)
		sendAndLoad("uid_name=0&dosubmit=1");
	}
}

var resolution_poll_int = 0;
