﻿var enquete_ajax_ultima = 'ajax/enquete/ultima/';
var enquete_ajax_votar = 'ajax/enquete/votar/';

var enquete_box = '#enquete .conteudo';

var enquete_id = 0;
var enquete_pergunta = '';
var enquete_respostas = new Array(0);
var enquete_resposta_selecionada = 1;
var enquete_votos = new Array(0);
var enquete_votos_total = 0;
var enquete_timeout = 10000;

var enquete_result_cor = new Array(5);

enquete_result_cor[0] = 'cor1';
enquete_result_cor[1] = 'cor2';
enquete_result_cor[2] = 'cor3';
enquete_result_cor[3] = 'cor4';
enquete_result_cor[4] = 'cor5';

enquete_result_cor = enquete_result_cor.sort(randOrd);

var enquete_permissao = false;

function enquete_init() {
	
	enquete_carrega();	
	
}

function enquete_carrega() {
	//$(document).carregador('on');
	$.ajax({
		url: base_url + enquete_ajax_ultima,
		dataType: 'json',
		timeout: enquete_timeout,
		
		success: function (data) {			
			if(data.respostas.length > 0 && data.pergunta != '' && data.status == true) 
			{
				enquete_id = data.id;
				enquete_pergunta = data.pergunta;
				enquete_permissao = data.permissao;				
				
				$.each(data.respostas, function (i,item) {
					enquete_respostas.push(item.texto);
					enquete_votos.push(item.votos);
					enquete_votos_total += item.votos;
					if(item.selecionado == 1) {
						enquete_resposta_selecionada = (i+1);
					}
				});
				
				
				if(enquete_permissao == true) 
				{
					enquete_monta_itens();
				} 
				
				else 
				{
					enquete_resultados();
				}
			} 
		},
		
		error: function () {
			alert('Não foi possivel carregar, tente novamente.');
		}
	});	
}

function randOrd() {
	return (Math.round(Math.random())-0.5);
} 

function enquete_monta_resultados(rs) {
	var tmp = new Array(0);	
	var porc;
	
	//Gerando cores das barras
	var cores = enquete_result_cor;
	if( Math.ceil(enquete_respostas.length/cores.length) > 1 ) {
		for(x=0;x<Math.ceil(enquete_respostas.length/cores.length);x++) {
			cores = cores.concat(cores.sort(randOrd));
		}
	}
	
	//gerando resultados
	tmp.push('<div class="resultados">');
	
	for(x=1;x<=enquete_respostas.length;x++) {
		tmp.push('<div class="item">');
		tmp.push('<label for="enqueteItem');
		tmp.push(x);
		tmp.push('">');
		tmp.push(enquete_respostas[x-1]);		
		tmp.push('</label>');
		
		porc = enquete_calc_porcentagem(enquete_votos[x-1]);
		tmp.push('<span class="barra_bg" title="'+porc+'%"><span title="'+porc+'%" style="width: 1px" rel="'+(parseInt(porc) > 0 ? parseInt((porc*1.35)) : 0)+'" class="barra '+cores[x]+'">'+porc+'</span></span>');
		//tmp.push('<span class="votos"><b>'+enquete_votos[x-1]+'</b> Votos</span>');
		tmp.push('<span class="votos"><b>'+porc+'%</b> </span>');
		tmp.push('<div class="clear"></div>');
		tmp.push('</div>');
	}
	
	tmp.push('<div class="clear"></div>');
	tmp.push('</div>');

	var resultados = tmp;
	
	tmp = new Array(0);
	
	tmp.push('<input name="id" type="hidden" value="');
	tmp.push(enquete_id);
	tmp.push('" />');
	
	tmp.push('<h3 class="pergunta">');
	tmp.push(enquete_pergunta);
	tmp.push('</h3>');
	
	tmp = tmp.concat(resultados);

	if(enquete_permissao == true) {
		tmp.push('<div class="controles">');
		tmp.push('<a href="javascript:void(0)" class="voltar" onclick="enquete_monta_itens()">+ Voltar</a><br /> Total de Votos: <b>'+enquete_votos_total+'</b>');
		tmp.push('</div>');	
	} else {
		tmp.push('<div class="controles">');
		//tmp.push('Total de Votos: <b>'+enquete_votos_total+'</b>');
		tmp.push('</div>');		
	}
	
	//alert(tmp.join(""));
	var box_respostas = $('form .respostas',$(enquete_box));
	if(box_respostas.length>0) {
		
		$('form .controles',$(enquete_box)).fadeOut();
		
		box_respostas.fadeOut(function () {			
			box_respostas.html(resultados.join(""));
			if(enquete_permissao==true && rs != true) {
				//$('form .controles',$(enquete_box)).html('<a href="javascript:void(0)" class="voltar" onclick="enquete_monta_itens()">+ Voltar</a><br /> Total de Votos: <b>'+enquete_votos_total+'</b>').fadeIn();
				$('form .controles',$(enquete_box)).html('<a href="javascript:void(0)" class="voltar" onclick="enquete_monta_itens()">+ Voltar</a>').fadeIn();
			}
			else
			{
				//$('form .controles',$(enquete_box)).html('Total de Votos: <b>'+enquete_votos_total+'</b>').fadeIn();
			}
			box_respostas.fadeIn(function () {
				if(rs == true) {
					setTimeout(function () { alert('Obrigado pela contribuição!\n\nSeu voto foi computado com sucesso.'); }, 1000);
				}
				enquete_anima_barras();
			});			
		});
	} else {
		$('form',$(enquete_box)).hide().html(tmp.join(""));
		enquete_abrir_animacao();
	}

	tmp = null;
	
	return true;
}

function enquete_monta_itens() {
	
	var tmp = new Array(0);
	
	tmp.push('<div class="respostas">');
	for(x=1;x<=enquete_respostas.length;x++) {
		tmp.push('<div class="item">');
		tmp.push('<input type="radio" name="resposta" value="');
		tmp.push(x);
		tmp.push('" id="enqueteItem');
		tmp.push(x);
		if(enquete_resposta_selecionada == x) {
			tmp.push('" checked="true" />\n');
		}
		
		else {
			tmp.push('" />\n');
		}
		tmp.push('<label for="enqueteItem');
		tmp.push(x);
		tmp.push('">');
		tmp.push(enquete_respostas[x-1]);
		tmp.push('</label>');
		tmp.push('<div class="clear"></div>');
		tmp.push('</div>');
	}
	tmp.push('<div class="clear"></div>');
	tmp.push('</div>');
	
	var respostas = tmp;
	
	tmp = new Array(0);
	
	tmp.push('<input name="id" type="hidden" value="');
	tmp.push(enquete_id);
	tmp.push('" />');
	
	tmp.push('<h3 class="pergunta">');
	tmp.push(enquete_pergunta);
	tmp.push('</h3>');			
	
	tmp = tmp.concat(respostas);

	tmp.push('<div class="controles">');
	tmp.push('<a href="javascript:void(0)" class="votar" onclick="enquete_votar()">+ Votar</a> <a href="javascript:void(0)" onclick="enquete_resultados()" class="resultados">Resultados</a>');
	tmp.push('</div>');
	
	
	var box_perguntas = $('form .respostas',$(enquete_box));
	
	if(box_perguntas.length>0) {
		
		$('form .controles',$(enquete_box)).fadeOut();
		
		box_perguntas.fadeOut(function () {	
			box_perguntas.html(respostas.join(""));			
			$('form .controles',$(enquete_box)).html('<a href="javascript:void(0)" class="votar" onclick="enquete_votar()">+ Votar</a> <a href="javascript:void(0)" onclick="enquete_resultados()" class="resultados">Resultados</a>').fadeIn();
			box_perguntas.fadeIn();
		});
	} else {
		$('form',$(enquete_box)).hide().html(tmp.join(""));
		enquete_abrir_animacao();
	}	
	
	tmp = null;
	
	return true;
}

function enquete_resultados(voto) {	
	if(voto == true) {
		enquete_monta_resultados(true);
	} else {
		enquete_monta_resultados();
	}
}

function enquete_votar() {
	//$(document).carregador('on');
	
	var frm = document.frmEnquete;
		
	$('form .controles',$(enquete_box)).fadeIn();
	
	for(x=0;x<frm.resposta.length;x++) 
	{
		if( frm.resposta[x].checked == true ) 
		{ 
			var item = frm.resposta[x].value;
		}
	}

	//alert(base_url + enquete_ajax_votar + frm.id.value + '/' + item);	
	
	if(!item) {
		alert('Selecione uma resposta');
	}		
	
	else {						
		$.ajax({
			url: base_url + enquete_ajax_votar + frm.id.value + '/' + item,
			dataType: 'json',
			timeout: enquete_timeout,
			
			success: function (data) {
				if(data) {
					if(data.status == true) {
						//Adicionando voto
						++enquete_votos[item-1];
						++enquete_votos_total;
												
						//Carregando resultados
						enquete_resultados(true);
						//alert(1);
					}
					
					else
					{
						alert($("<div/>").html(data.msg).text());
						//alert('00');
					}
				}
				
				else
				{
					alert('Não foi possível votar, tente novamente.');
					//alert(0);
				}
				
				//$(document).carregador('off');							
			},
			
			error: function () {
				//$(document).carregador('off');	
			}
		});	
	}
}

function enquete_set_msg(msg,cls) {	
	if(cls === false)
		cls = 'erro';
	else if (cls === true) 
		cls = 'ok';
	else if (cls == null) 
		cls = '';
	
	var box = $('form span.msg',$(enquete_box));
	
	if(box == false) 
	{
		$('form',$(enquete_box)).prepend('<span class="msg"></span>');
		box = $('form span.msg',$(enquete_box));
		box.hide();
		box.html(msg);
		box.fadeIn("normal");
	} else {
		box.html(msg);
	}		
	
	if(cls.length > 0)
		box.addClass(cls);
}

function enquete_unset_msg() {
	var box = $('form span.msg',$(enquete_box));
	
	if(box)
	{
		box.fadeOut("normal",function () { 
			this.remove();
		});
	}
}

function enquete_anima_barras() {
	$('.barra',$(enquete_box)).each(function (i,item) {
		if($(this).attr('rel') > 0) {
			$(this).animate({width: $(this).attr('rel')+'px'},"slow");
		}
	});
}

function enquete_abrir_animacao() {
	$(enquete_box).show(function () {
			$('form',$(enquete_box)).show();
			
			$(enquete_box).css('height','auto');
			$('form',$(enquete_box)).css('height','auto');
			if(enquete_permissao == false) {
				enquete_anima_barras();
			}			
	});	
}

function enquete_calc_porcentagem(votos) {
	if(enquete_votos_total>0) {
		var porc = new Number((votos*100)/enquete_votos_total);
		return porc.toFixed(1);
	}
	
	else
	{
		return 0;
	}
}

$(document).ready(function () {
	enquete_init();
});