/**
 *  Scripts ajax para usar com comentários
 *  em geral para enviar comentários, alterar o karma, etc...
 *
 */

var votos = new Array();


/**
 * Adiciona um comentário ao item
 *
 * @param tipo_item tipo do item a ser comentado
 * @param cod_item código do item a ser comentado
 *
 */
function enviar_comentario(tipo_item, cod_item, noReload, callback)
{
	if (comentario_validar()) {
	
	    var titulo   = $("#com_titulo").val();
	    var mensagem = $("#com_descricao").val();
	
	    var nota     = $("#com_nota").val();
	    var preco    = $("#com_preco").val();
	
	    var url  = '/includes/ajax/comentarios/enviar.php'
	    var parametros = 'tipo=' + tipo_item;
	    parametros += '&cod_item='   + cod_item;
	    parametros += '&comentario=' + encodeURIComponent(mensagem);
	    parametros += '&titulo='     + encodeURIComponent(titulo);
	    parametros += '&nota='       + nota;
	    parametros += '&preco='      + preco;

		caixaLoading('Enviar comentário');

	
	    $.ajax({
	            type: "POST",
	            url: url,
	            data: parametros,
	            success: function(result){
	                mensagem = result.split('|');
	                
	                if ( mensagem[1] == 'sucesso')
	                {
	                	var valor_nota = nota;
	                	var valor_preco = preco;
	                	var fbox = new FloatBox('Enviar comentário', "Seu coment&aacute;rio foi enviado com sucesso!");
                                if(!callback) {
                                    if(noReload)
                                        fbox.funcaoOk = 'closefloatbox()';
                                    else
                                        fbox.funcaoOk = 'atualizar_pagina()';
                                } else {
                                    fbox.funcaoOk = callback+'()';
                                }
                                //fbox.botaoOk('atualizar_pagina');
	                	fbox.abrir();
	                }
	                else
	                if ( mensagem[1] == 'erro-login')
	                { 
	                	var fbox = new FloatBox('Enviar comentário', "Voc&egrave; precisa estar logado para comentar!");
	                	fbox.abrir();
	                }
	                else
	                if ( mensagem[1] == 'erro')
	                { 
	                	var fbox = new FloatBox('Enviar comentário', "Houve um erro ao enviar o coment&aacute;rio, tente novamente mais tarde.");
	                	fbox.abrir();
	                }
	            }
	    });
    }
}



/**
 * Trata a resposta recebida do ajax atualizando a porcentagem do karma
 *
 * @param resposta - resposta recebida do ajax separada por |
 * @param cod_item - código do ítem que está sendo avaliado
 * @param tipo_item - tipo do ítem que está sendo avaliado
 */
function atualizarPorcentagem(resposta, cod_item, tipo_item){
    $('#up_'+tipo_item+'_'+cod_item).html(unescape(resposta['karma_up']));
    $('#down_'+tipo_item+'_'+cod_item).html(unescape(resposta['karma_down']));
    $('#linkup_'+tipo_item+'_'+cod_item).attr('class', 'positive');
    $('#linkdown_'+tipo_item+'_'+cod_item).attr('class', 'negative');
  
}


/**
 * Permite ao usuÃ¡rio alterar o karma de um comentário
 *
 * @param tipo_item tipo do comentpario
 * @param cod_item codigo do comentário
 * @param movimento movimento do karma ('up' ou 'down')
 */
function comentario_karma(tipo_item, cod_item, movimento)
{
    if (( movimento == 'up') || (movimento == 'down'))
    {
	    
	    //Faz a requisição
    	if(votos[cod_item] != 1){
	        var url  = '/includes/ajax/comentarios/karma.php';
	        var parametros = 'acao=' + movimento + '&cod='  + cod_item + '&tipo=' + tipo_item;
			
	        $.ajax({
	                type: "GET",
	                url: url,
	                data: parametros,
	                success: function (result){
                        result = eval('(' + result + ')');

                        if ( result['status'] == 'sucesso')
                        {
                            atualizarPorcentagem(result, cod_item, tipo_item);
                        }
                        if(result['status'] == 'erro-login')
                        {
                        	naoLogado();
                        }
                        
	                }
	            },
                "json");
	      	
	        votos[cod_item] = '1';
        }
    }
}

/**
 * Permite ao usuÃ¡rio alterar o karma de um comentário para cima
 *
 * @param tipo_item tipo do comentpario
 * @param cod_item codigo do comentário
 */
function comentario_karma_up(tipo_item, cod_item)
{
    comentario_karma(tipo_item, cod_item, 'up')
}

/**
 * Permite ao usuÃ¡rio alterar o karma de um comentÃ¡rio para baixo
 *
 * @param tipo_item tipo do comentpario
 * @param cod_item codigo do comentário
 */
function comentario_karma_down(tipo_item, cod_item)
{
    comentario_karma(tipo_item, cod_item, 'down')
}

/**
 * Seta a nota do item pelo comentário form dentro do campo hidden
 *
 * @param nota 1-5
 */
function set_nota(nota)
{
    $("#com_nota").val(nota);
    var porcentagem = nota*100/5;
    $("#nota_atual").width(porcentagem + "%");
}

/**
 * Seta o preco do item pelo comentário  dentro do campo hidden
 * @param preco 0-5
 */
function set_preco(preco)
{
    $("#com_preco").val(preco);
    var porcentagem = preco*100/5;
    $("#preco_atual").width(porcentagem + "%");
}


/**
 * Abre uma janela para enviar comentário sobre o item do tipo e codigo informado.
 *
 * @param cod_item código do item
 * @param cod_tipo tipo do item
 * @param sem_preco caso não possua preco, 1
 * @param sem_nota, caso não possua nota, 1
 */
function comentario_window(cod_item, cod_tipo, tem_nota, tem_preco, noReload, callback)
{
	if (getCookie('ejfcodusuario')) {
		caixaLoading('Enviar comentário');
		
		
		if (typeof(valor_nota)!='undefined' && typeof(valor_nota)!='undefined') {
			comentario_abrir_janela(cod_item, cod_tipo, tem_nota, tem_preco, valor_nota, valor_preco, noReload, callback);
		} else {
		$.get('/includes/ajax/comentarios/info.php',
		{'cod_tipo': cod_tipo, 'cod_item': cod_item},
		function (resposta) {
			var resposta = resposta.split('|');
			parent.valor_nota = 0;
			parent.valor_preco = 0; 
			if (resposta[0]=='votou') {
				valor_nota = resposta[1];
				valor_preco = resposta[2];
			} else if (resposta[0]=='nao-votou') {
				valor_nota = 0;
				valor_preco = 0;
			} else if (resposta[0]=='nao-logado') {
				naoLogado();
			}			
			comentario_abrir_janela(cod_item, cod_tipo, tem_nota, tem_preco, valor_nota, valor_preco, noReload, callback);
		});
		}
	} else {
		naoLogado();
	}
}

function comentario_abrir_janela(cod_item, cod_tipo, tem_nota, tem_preco, valor_nota, valor_preco, noReload, callback)
{
	var fc = new FloatBoxComentario();
	if (typeof(tem_nota)=='undefined') tem_nota = true;
	if (typeof(tem_preco)=='undefined') tem_preco = false;
	if (!tem_nota) fc.darNota(false);
	if (tem_preco) fc.darPreco(true);
	fc.setCodItem(cod_item);
	fc.setTipoComentario(cod_tipo);
        if(noReload)
            fc.reload = false;
        if(callback)
            fc.callback = callback;
	fc.abrir();
	if (tem_nota && valor_nota!=0) selecionarVoto(document.getElementById("star_"+valor_nota),valor_nota);
	if (tem_preco && valor_preco!=0) selecionarPreco(document.getElementById("money_"+valor_nota),valor_preco);
}

function comentario_validar() {
	var com_titulo 		= $("#com_titulo").val();
	var com_comentario 	= $("#com_descricao").val();
	var com_nota	 	= $("#com_nota").val();
	var com_preco	 	= $("#com_preco").val();
	
	var com_valido = true;
	var camposErrados = new Array();
	var camposCertos = new Array();
	if (com_nota!='undefined') {
		if (com_nota==0) {
			com_valido = false;
			camposErrados[camposErrados.length] = 'nota';
		} else {
			camposCertos[camposCertos.length] = 'nota';
		}
	}
	if (typeof(com_preco)!='undefined') {
		if (com_preco==0) {
			com_valido = false;
			camposErrados[camposErrados.length] = 'preco';
		} else {
			camposCertos[camposCertos.length] = 'preco';
		}
	}
	if (com_titulo=='') {
		com_valido = false;
		camposErrados[camposErrados.length] = 'titulo';
	} else {
		camposCertos[camposCertos.length] = 'titulo';
	}
	if (com_comentario=='' || com_comentario=='Digite seu comentário aqui') {
		com_valido = false;
		camposErrados[camposErrados.length] = 'comentario';
	} else {
		camposCertos[camposCertos.length] = 'comentario';
	}
	
	if (!com_valido) {
		document.getElementById("msg-alerta").innerHTML = 'Os campos em laranja apresentam erro';
		for (var x=0; x<camposErrados.length; x++) {
			document.getElementById("lb_com_"+camposErrados[x]).style.color = '#f60';
		}
		for (var x=0; x<camposCertos.length; x++) {
			document.getElementById("lb_com_"+camposCertos[x]).style.color = '';
		}
	}
	
	return com_valido;
	
}

function selecionarVoto(estrela, numero_estrela) {
	document.getElementById("current-rating").style.width = estrela.clientWidth+'px';
	document.getElementById("com_nota").value = numero_estrela;
	document.getElementById("user-rating").innerHTML = estrela.innerHTML;
}

function selecionarPreco(dinheiro, numero_dinheiro) {
	if (numero_dinheiro==-1) {
		$("#no-money-rating").addClass('no-money-rating-sel');
		document.getElementById("current-rating-money").style.width = '0px';
		document.getElementById("user-rating-money").innerHTML = 'Gratuito';
	} else {
		$("#no-money-rating").removeClass('no-money-rating-sel');
		document.getElementById("current-rating-money").style.width = dinheiro.clientWidth+'px';
		document.getElementById("user-rating-money").innerHTML = dinheiro.innerHTML;
	}
	document.getElementById("com_preco").value = numero_dinheiro;
	
}

/**
 * Realiza a paginação na aba de comentário
 *
 * @param cod_item
 * @param tipo
 * @param pagina
 */
function paginacao_comentario(cod_item, tipo, pagina)
{
    var url = '/includes/ajax/comentarios/listar.php';
    var parametros  = 'cod_item=' + cod_item;
        parametros += '&pag='     + pagina;
        parametros += '&tipo='    + tipo;


    $("#comentarios_box").html('<h3 style="text-align: center;"><img src="/imagens/layout/ajax-loader.gif" alt="Carregando" /></h3>');

    $.get(url,
          parametros,
          function(result)
          {
             result = eval(result);
             if (result['status'] == 'sucesso')
             {
                $("#comentarios_box").html(result['comentarios']);
             }
          },
          "json");
}

/*
 * Redireciona para uma página de acordo com o tipo passado como parametro
 * @param tipoComentario - A página onde o comentário está inserida
 * @param pg - A página atual da listagem de comntários
 * @param local - local do input que chamou a função - footer ou top (Este campo será utilizado para pegar o link da página até a passagem do parametro filtro)
 *
 **/
function redirect(tipoComentario, pg, local){
	
	switch(tipoComentario){
	
		//Comentários de lugar
		case '1':
			var link = document.getElementById('link_'+local).value;
			var tipoFiltro = document.getElementById('tipo_filtro_'+local).value;
			var pagina = link+tipoFiltro+'/'+pg+'/';
			window.location = pagina;
			break;
		case '2':
			var link = document.getElementById('link_'+local).value;
			var tipoFiltro = document.getElementById('tipo_filtro_'+local).value;
			var pagina = link+tipoFiltro+'/'+pg+'/';
			window.location = pagina;
			break;
	}
	
	
	
}

function comentario_abrir_janela_edit(cod_item, cod_tipo, tem_nota, tem_preco, valor_nota, valor_preco, cod_comentario, titulo, comentario)
{
	var fc = new FloatBoxComentario();
	if (typeof(tem_nota)=='undefined') tem_nota = true;
	if (typeof(tem_preco)=='undefined') tem_preco = false;
	if (!tem_nota) fc.darNota(false);
	if (tem_preco) fc.darPreco(true);
	fc.setCodItem(cod_item);
	fc.setTipoComentario(cod_tipo);
        fc.com_titulo = titulo;
        fc.comentario = comentario;
        fc.cod_comentario = cod_comentario;
        fc.editar = true;
	fc.abrir();
	if (tem_nota && valor_nota!=0) selecionarVoto(document.getElementById("star_"+valor_nota),valor_nota);
	if (tem_preco && valor_preco!=0) selecionarPreco(document.getElementById("money_"+valor_nota),valor_preco);
}

function comentario_editar_window(cod_item, cod_tipo, tem_nota, tem_preco, cod_comentario)
{
	if (getCookie('ejfcodusuario')) {
		caixaLoading('Enviar comentário');

		$.get('/includes/ajax/comentarios/info.php',
                      {'cod_tipo': cod_tipo,
                       'cod_item': cod_item,
                       'editar'  : true,
                       'cod_comentario' : cod_comentario
                      },
		function (resposta) {
			var resposta = resposta.split('|');
			parent.valor_nota = 0;
			parent.valor_preco = 0;
			if (resposta[0]=='votou') {
				var valor_nota = resposta[1];
				var valor_preco = resposta[2];
                                var titulo      = resposta[3];
                                var descricao   = resposta[4];
			} else if (resposta[0]=='nao-votou') {
				var valor_nota = 0;
				var valor_preco = 0;
                                var titulo      = resposta[3];
                                var descricao   = resposta[4];
			} else if (resposta[0]=='nao-logado') {
				naoLogado();
			}
			comentario_abrir_janela_edit(cod_item, cod_tipo, tem_nota, tem_preco, valor_nota, valor_preco, cod_comentario, titulo, descricao);
		});
		
	} else {
		naoLogado();
	}
}


function editar_comentario(tipo_item, cod_item)
{
	if (comentario_validar()) {

	    var titulo   = $("#com_titulo").val();
	    var mensagem = $("#com_descricao").val();
            var cod_comentario = $("#cod_comentario").val();

	    //var nota     = $("#com_nota").val();
	    //var preco    = $("#com_preco").val();

	    var url  = '/includes/ajax/comentarios/editar.php'
	    var parametros = 'tipo=' + tipo_item;
	    parametros += '&cod_item='   + cod_item;
            parametros += '&cod_comentario=' + cod_comentario;
	    parametros += '&comentario=' + encodeURIComponent(mensagem);
	    parametros += '&titulo='     + encodeURIComponent(titulo);
	    //parametros += '&nota='       + nota;
	    //parametros += '&preco='      + preco;

            caixaLoading('Enviar comentário');


            $.post( url,
                    parametros,
                    function(result){
	                var mensagem = eval(result);

	                if ( mensagem['status'] == 'sucesso')
	                {
	                	var fbox = new FloatBox('Enviar comentário', "Seu coment&aacute;rio foi editado com sucesso!");
                                fbox.funcaoOk = 'atualizar_pagina()';
                                //fbox.botaoOk('atualizar_pagina');
	                	fbox.abrir();
	                }
	                else
	                if ( mensagem['status'] == 'erro-login')
	                {
	                	var fbox = new FloatBox('Enviar comentário', "Voc&egrave; precisa estar logado para editar o comentário!");
	                	fbox.abrir();
	                }
	                else
	                {
	                	var fbox = new FloatBox('Enviar comentário', "Houve um erro ao atualizar o coment&aacute;rio, tente novamente mais tarde.");
	                	fbox.abrir();
	                }
	            },
                    "json");
    }
}

function verificar_dono(cod_comentario)
{
    cod_usuario = getCookie('ejfcodusuario');

    if (cod_usuario)
    {
        if (comentario_dono[cod_comentario] == cod_usuario )
            $("#editar_" + cod_comentario).show();
    }
}


