var ERROR_CAST_QUIZ = "Error casting quiz";
var ERROR_ATTENTION= "Attention";
var ERROR_QUIZ_NO_COMPLETE = "Quiz is not complete. You must answer all questions."
var MSG_POLL_CAST_OK = "Cast vote OK";
var MSG_POLL_CAST_ERROR = "Cast Vote comes with error";
var URL_IMG_BAR = "/upickdaily/images/bar.gif";
var formId = "";
var chosen = "";
var quiz = [];



function doQuizVote(_form){
	
	doLog("cast quiz");
	formId = $(_form).attr("name")
	
	chosen = getSelectedItem();

	if(chosen==null){
		return false;
	}
	if(!isValid()){
		return false
	}else{
	
		var data = new Object();
		var url_alias = $("#quiz_urlAlias").attr("value"); 
		data["urlAlias"] = url_alias;
		chosen.each(
			function(){
				var poll_alias = this.name
				data[poll_alias] = this.id;
				
				}
		);
	
		try { // Catch browser security exceptions.
			$.ajax({
				type: "GET",
				url: URL_VOTE,
				data: data,
				dataType:"jsonp",
				success:handleCastQuiz,
				error:handleCastQuizErrors
			});
		} catch(error) {
			handleCastQuizErrors(error);
		}
	
		return false;
	}

}


function handleCastQuiz(json){
	doLog("cast quiz recieved");
	
	if(json == null){
		handleCastQuizErrors(ERROR_CAST_VOTE);
	}else{
		switch(json.code){
			case "ok":
			var resultDiv = "";
			for (j = 0; j < json.data.length; j++) {
				//order = json.data[j].order;
				question = quiz[j].question;
				answers = quiz[j].answers;
				counts = json.data[j].counts
				resultDiv +=constructQuizResult(question, answers, counts);
			}
			$("#"+formId+" .results").empty();
			$("#"+formId+" .results").hide();
			$("#"+formId+" .results").append(resultDiv);
			showResultsDiv();
				
				break;
			case "error":
				doLog(MSG_CAST_DATA_ERROR);
				handleCastQuizErrors(MSG_CAST_DATA_ERROR)
				break;
		}
	}
}


function handleCastQuizErrors(error){
	alert(ERROR_CAST_QUIZ);
	doLog("handleCastQuizErrors: "+error)
}



function getSelectedItem(){
	return $("#"+formId+" input[type=radio][checked]")
}


function constructQuizResult(question, answers, counts){
	//get total count
	var totalCount = 0;
	for (i = 0; i < answers.length; i++) {
		totalCount += counts[i]
	}
	var str="<h2>"+question+"</h2>";
	str += "<ul>";
	for (i = 0; i < answers.length; i++){

		if(totalCount == 0 || counts[i] == 0) {
			prec = 0;
		} else {
			prec = Math.floor((counts[i]/totalCount)*100);
		}
		//doLog("quizResult: "+i+" | "+counts[i]+" | "+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>";
	
	return str;

}

function isValid(){
	if(chosen.length==quiz.length){
		return true;
	}else{
		UPICKDAILY.utils.message.show(ERROR_ATTENTION, ERROR_QUIZ_NO_COMPLETE);
		//alert("error")
		return false;
	}
}

function takeAnother(){
	constructVoteForm(indx);

}

function showResultsDiv(){
	$("#"+formId+" .vote").fadeOut("slow", function(){$("#"+formId+" .results").show();})
}