var ERROR_CAST_VOTE = "Error casting vote";
var MSG_POLL_CAST_OK = "Cast vote OK";
var MSG_POLL_CAST_ERROR = "Cast Vote comes with error";
var MSG_POLL_NO_SELECT = "Please select an answer.";
var URL_IMG_BAR = "/upickdaily/images/bar.gif";
var poll = new Object();
var formId = "";
var chosen = "";
var option ="";
var order = "";
var answers = "";
var counts = [];



function doCastVote(_form){
	doLog("cast results");
	formId = $(_form).attr("name");
	
	chosen = getSelectedItem();
	if(chosen.length==0){
		//UPICKDAILY.utils.message.show("Attention", MSG_POLL_NO_SELECT);
		alert(MSG_POLL_NO_SELECT)
	}else{
		option = chosen.attr("id");
		var url_alias = $("#poll_urlAlias").attr("value"); 
		savePoll();
		if(chosen==null){
			return false;
		}
		//var data = {itemId:formId, urlAlias: url_alias};
		var data = new Object();
		data["urlAlias"] = url_alias;
		data[url_alias] = option;
		try { // Catch browser security exceptions.
			$.ajax({
				type: "GET",
				url: URL_VOTE,
				data: data,
				dataType:"jsonp",
				success:handleCastVote,
				error:handleCastVoteErrors
			});
		} catch(error) {
			handleCastVoteErrors(error);
		}
	}
	
	return false;

}


function handleCastVote(json){
	//alert(poll.answers[0]);
	doLog("cast vote recieved");
	if(json == null){
		handleCastVoteErrors(ERROR_CAST_VOTE);
	}else{
		switch(json.code){
			case "ok":
				counts = json.data[0].counts;
				question = poll.question;
				answers = poll.answers;
				constructPollResults();
				break;
			case "error":
				doLog(MSG_CAST_DATA_ERROR);
				handleCastVoteErrors(MSG_CAST_DATA_ERROR)
				break;
		}
	}
}


function handleCastVoteErrors(error){
	alert(ERROR_CAST_VOTE);
	doLog("handleCastVoteErrors: "+error)
}



function getSelectedItem(){
	return $("#"+formId+" input[type=radio][checked]")
}


function constructPollResults(){
	//get total count
	var totalCount = 0;
	for (i = 0; i < answers.length; i++) {
		if(option==i){
			counts[i] += 1;
		}
		totalCount += counts[i]
	}
	var str = "<ul>";
	for (i = 0; i < answers.length; i++){
		prec = Math.floor((counts[i]/totalCount)*100);
		//fix error because we are flooring the values
		//if(i<answers.length-1){
			//prec++;
		//}
		str +="<li>";
		str+=  "<div class='imgBar'><img src='" + URL_IMG_BAR + "' width='" + prec + "%' height='22' /></div>" 
		str+= "<div>"+answers[i] +" "+ prec + "%" + "</div>" ;
		str +="</li>";
	}
	str+="</ul>";
	//indx = indx++;
	//if (indx< polls.length) {
		//str+= "				<div style='text-align:right;'><input id='btnNextVote' type='submit' value='more polls'/></div>";
	//}
	//else{
		//str+="<div>No more polls</div>";
	//}
	
	$("#"+formId+" .results").empty();
	$("#"+formId+" .results").hide();
	$("#"+formId+" .results").append(str);
	
	//$("#"+formId+" #btnNextVote").click(takeAnother);
	showResultsDiv();
}

function savePoll(){
	var obj = new Object();
	var answers = [];
	obj.question = $("#"+formId+" .poll_question").html();
	var label = $("#"+formId+" label");
	for(var i = 0;i<label.length;i++){
		answers.push($(label[i]).text());
	}
	obj.answers = answers;
	
	poll = obj;
}



function showResultsDiv(){

	$("#"+formId+" .vote").fadeOut("slow", function(){$("#"+formId+" .results").show();})
}

function enableSubmit(){
	toggleButton('btnVote', true);
}