﻿var ultimaOpcaoClicada;
var btnPostarReply;
var dvComentarios;
var txtReply;
var pnlEstrelas;
var lblNumRatingsOn;
var numeroRatingsOn;
var lblNumeroVotos;
var comentarioAtual;

function clickOpcao(id){
    var opcaoClicada = document.getElementById(id);
    if(ultimaOpcaoClicada && ultimaOpcaoClicada != opcaoClicada){
        ultimaOpcaoClicada.style.display = "none";
    }
    opcaoClicada.style.display = opcaoClicada.style.display == "block" ? "none" : "block";
    ultimaOpcaoClicada = opcaoClicada;
}

function clickCancelarComentario(){
    clickOpcao("addComentario");
    comentarioAtual = null;
}

function clickCancelarReply(){
    document.getElementById("comentForm").style.display = "none";
}

function cancelarEvento(e){
    e.cancelBubble = true;
    if (e.stopPropagation){
        e.stopPropagation();
    }
    e.cancel = true;
    e.returnValue = false;
}

function comentar(idComentarioPai, txtComentario){
    var comando = new Object();
    var comentario = new Object();
    
    comentario.Texto = $(txtComentario).val();    
    comentario.IdComentarioPai = idComentarioPai;
    comando.Tipo = Enums.TipoComando.Comentario;
    comando.Parametro = comentario;
    var json = JSON.stringify(comando);
    CallServerControl(json, null);
}

function retornoCallback(arg, context){
    var statusComando = JSON.parse(arg);
    
    if(statusComando.TipoComando == Enums.TipoComando.Comentario && statusComando.Status){
        dvComentarios = document.getElementById("comentarios");
        var dvComentario = createDivComentario(statusComando.Parametro);
        
        if(comentarioAtual){
            var respostasAoComentarioAtual = comentarioAtual.getElementsByTagName("div");
            var primeiraResposta;
            for(var i = 0; i < respostasAoComentarioAtual.length; i++){
                if(respostasAoComentarioAtual[i].className == "resposta"){
                    primeiraResposta = respostasAoComentarioAtual[i];
                    break;
                }
            }
            if(primeiraResposta){
                comentarioAtual.insertBefore(dvComentario, primeiraResposta);
            }else{
                comentarioAtual.appendChild(dvComentario);
            }
        }else{
            var comentarios = dvComentarios.getElementsByTagName("div");
            var primeiroComentario;
            for(var i = 0; i < comentarios.length; i++){
                if(comentarios[i].className == "entrada"){
                    primeiroComentario = comentarios[i];
                    break;
                }
            }
            if(primeiroComentario){
                dvComentarios.insertBefore(dvComentario, primeiroComentario); 
            }else{
                dvComentarios.appendChild(dvComentario);
            }
        }
        //essa linha obriga o reflow no browser para que a div clear seja renderizada. isso é uma alternativa pra corrigir o bug no ie
        dvComentarios.parentNode.className = dvComentarios.parentNode.className;
        comentarioAtual = null;
    }
}

function erroCallback(err){
    alert('');
}

function Enums(){ }
Enums.TipoComando = {EnvioAmigo : 0, Comentario : 1, Voto : 2};

function createDivComentario(parametro){
    var data = (new Date(Date.parse(Date(parametro.Data))));
    var divEntrada = document.createElement("div");
    var divBackGround = document.createElement("div");
    
    divEntrada.appendChild(divBackGround);
    
    var divUsuario = document.createElement("div");
    divUsuario.className = "usuario";
    divUsuario.innerHTML = usuario.PrimeiroNome;
    divBackGround.appendChild(divUsuario);
    
    var divData = document.createElement("div");
    divData.className = "data";
    var divDataText = ["Enviado em ", data.getDate(), "/", (data.getMonth()+1), "/", data.getFullYear(), 
    " às ", data.getHours(), ":", data.getMinutes(), "."].join("");
    divData.innerHTML = divDataText.toString();
    divBackGround.appendChild(divData);
    
    var pTextoComentario = document.createElement("p");
    pTextoComentario.innerHTML = parametro.Texto;
    divBackGround.appendChild(pTextoComentario);
    
    var divAddResposta = document.createElement("div");
    divAddResposta.className = "addResposta";
    var hlkResponderComentario = document.createElement("a");
    hlkResponderComentario.innerHTML = "responder";
    hlkResponderComentario.style.cursor = "pointer";
    hlkResponderComentario.onclick = function(){
        openComentForm(this.parentNode.parentNode, parametro.Codigo);
    };
    divAddResposta.appendChild(hlkResponderComentario);
    divBackGround.appendChild(divAddResposta);
    
    if(parametro.CodigoPai){
        divEntrada.className = "resposta";
        divBackGround.className = "BgResposta";
        divBackGround.appendChild(createDivClear());
        clickCancelarReply(null);
    }else{
        divEntrada.className = "entrada";
        clickCancelarComentario(null);
        divEntrada.appendChild(createDivClear());
    }
    return divEntrada;
}

function removeEvent(obj,type,fn){
  if(obj.removeEventListener) obj.removeEventListener(type,fn,false);
  else if(obj.detachEvent){
    obj.detachEvent("on"+type,obj[type+fn]);
    obj[type+fn]=null;
    obj["e"+type+fn]=null;
  }
}

function openComentForm(o, idComentarioPai){
    var comentForm = document.getElementById("comentForm");
    comentForm.getElementsByTagName("textarea")[0].value = "";
    var nextNode = getNextSibling(o);
    comentarioAtual = o;
    if(nextNode){
        o.parentNode.insertBefore(comentForm, nextNode);
    }else{
        o.parentNode.appendChild(comentForm);
    }
    comentForm.style.display = "inline-block";  
   
    btnPostarReply.onclick = function(){
        if(usuario == null){
            alert('Você precisa estar logado para comentar!');
            return false;                    
        }
        if($("[id$='txtComentarioReply']").val()=="")
        {
            alert("Digite seu comentário");
            return false;
        }
        $("#comentForm").hide();
        comentar(idComentarioPai, $("[id$='txtComentarioReply']"))
        return false;
    };
}

function getNextSibling(n){
    var x = n.nextSibling;
    if(x){
        while (x.nodeType!=1){
            x = x.nextSibling;
            if(!x){
                return null;
            }
        }
    }
    return x;
}

function selecionaTexto(campo){
    campo.focus();
    campo.select();
}

function createDivClear(){
    var dvClear = document.createElement("div");
    dvClear.className = "clear";
    return dvClear;
}
