var votingStarted = false;

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

$(document).ready(function() {
	$("#vote ul li").each(function(i, item) {
		var input = $(item).find("input"); var label = $(item).find("label");
		$("<a />").attr({ "href": "#" }).bind("click", checkVote).html(label.html()).addClass("styled").addClass(input.attr("type")).appendTo($(item));
		$("<input type='hidden' />").attr({ "name": "answer", "disabled": "disabled" }).val(input.val()).appendTo($(item));
		input.remove(); label.remove();
	});
	$("#vote textarea").hide();
	$("#vote #buttons a").css({ "display": "inline" });
});

function checkVote() {
	var li    = $(this).parent();
	var input = li.find("input");

	if ($(this).hasClass("checkbox")) {
		$(this).removeClass("checkbox");
		$(this).addClass("checkbox-checked");
		input.removeAttr("disabled");
		if (input.val() == "other") { $("#vote textarea").show(); } 
	}
	else if ($(this).hasClass("checkbox-checked")) {
		$(this).removeClass("checkbox-checked");
		$(this).addClass("checkbox");
		input.attr({ "disabled": "disabled" });
		if (input.val() == "other") { $("#vote textarea").hide(); } 
	}
	else if ($(this).hasClass("radio")) {
		$("#vote a.radio-checked").removeClass("radio-checked").addClass("radio");
		$(this).removeClass("radio");
		$(this).addClass("radio-checked");
		$("#vote ul li input").attr({ "disabled": "disabled" });
		input.removeAttr("disabled");
		input.val() == "other" ? $("#vote textarea").show() : $("#vote textarea").hide();
	}
	else if ($(this).hasClass("radio-checked")) {
	}

	return false;
}

function submitVote() {
	if (votingStarted) return false;
	
	var query = "";
	$("#vote ul input").each(function(i, item) {
		if (!$(item).attr("disabled")) query += "&answer=" + $(item).val();
	});
	if ($("#vote textarea").length > 0 && !$("#vote textarea").is(":hidden")) query += "&alt_answer=" + myEscape($("#vote textarea").val());
	if (query == "" || query == "&answer=other&alt_answer=") return false;
	
	votingStarted = true;
	$("#vote").addClass("ajax");

	query = "?vote=" + $("#vote input[name=question]").val() + query;
	$.getJSON("/json" + voteAction + query, processVote);

	return false;
}

function processVote(data) {
	if (data.error) {
		alert(data.error);
		votingStarted = false;
	}
	
	$("#vote form").remove();
	if (data.message) $("#vote").append($("<p />").html(data.message));
	
	if (data.answers) {
		var div = $("<div />").attr({ "id": "results" }).appendTo($("#vote"));
		$.each(data.answers, function(i, item) {
			var span = $("<span />").html(item.percentage + "% (" + item.cnt + ")").appendTo(div);
			if (item.is_max) span.addClass("red");
			div.html(div.html() + item.answer);
			var line = $("<div />").attr({ "class": "line" }).css({ "width": item.view_percentage + "%" }).appendTo(div);
			if (item.is_max) line.addClass("red");
		});
	}
	if (data.cookie) {
		var cookie = ""; cookie = readCookie("votes");
		if (cookie != "" && cookie != null) cookie += "&"; else cookie = "";
		cookie += data.cookie;
		createCookie("votes", cookie, 365);
	}

	$("#vote").removeClass("ajax");
}

function voteResults(id) {
	$("#vote").addClass("ajax");
	$.getJSON("/json" + voteAction + "?results=" + id, processVote);
	return false;
}