/**
 * Criando objeto RatingUtil
 **/
var RatingUtil = new Object();

var DesabilitaFuncoes = false;

/**
 * Grava o log de impressao e envio por email.
 * @param cod Codigo do grupo
 */
RatingUtil.saveLog = function( cod, url, titulo ) {
	//Obtem a url da pagina (completo)
    if (!url || url.length == 0) var url = "" + document.location;
	//Obtem o titulo da pagina (completo)
    if (!titulo || titulo.length == 0) var titulo = "" + document.title;
	//Retira os parametros de impressao/envio de e-mail/degustacao
    var urlSplit = url.split( "?enviaEmail=true" );
    urlSplit = urlSplit[0].split( "#" );
    urlSplit = urlSplit[0].split( "URL_RETORNO=" );
    url = urlSplit[urlSplit.length - 1];
	url = url.replace("&printable=true","");
	url = url.replace("?printable=true","");
	//Retira o sub-titulo "Portal Exame"
    /*var tituloSplit = titulo.split( "- Portal EXAME" );
    titulo = tituloSplit[0];
    if ( titulo != "" ) {
        last = titulo.lastIndexOf( "-" ) > 0 ? titulo.lastIndexOf( "-" ) : titulo.length;
        titulo = titulo.substring( 0, last );
    }*/
	var tituloSplit = titulo.split("-");
	if (tituloSplit.length > 2) {
		titulo = "";
		for(x=tituloSplit.length; x>=0; x--) {
			if (x < (tituloSplit.length-2)) {
				if (titulo.length == 0) {
					titulo = tituloSplit[x];
				} else {
					titulo = tituloSplit[x]+"-"+titulo;
				}
			}
		}
	}
	//Insere no banco de dados via AJAX
    RatingsAjaxController.insertRating( {codGroup:cod,contentUrl:url,contentTitle:titulo} );
}

/**
 * Imprime os dados dos "mais impressa" no elemento pelo id deste.
 * @param id Id do elemento HTML
 **/
RatingUtil.obtemMaisImpressa = function (id)  {
    RatingsAjaxController.getMostPrinted ( function( html ) {
        if (html != "" && html != null) {
            document.getElementById(id).innerHTML = html;
        } else {
            document.getElementById(id).innerHTML = "<h2>No momento, n&atilde;o h&aacute; nenhuma mat&eacute;ria classificada como a mais impressa</h2>";
        }
    });
}

/**
 * Imprime os dados dos "mais visitados" no elemento pelo id deste.
 * @param id Id do elemento HTML
 **/
RatingUtil.obtemMaisVisitados = function (id)  {
    RatingsAjaxController.getMostVisited ( function( html ) {
        if (html != "" && html != null) {
            document.getElementById(id).innerHTML = html;
        } else {
            document.getElementById(id).innerHTML = "<h2>No momento, n&atilde;o h&aacute; nenhuma mat&eacute;ria classificada como a mais visitada</h2>";
        }
    });
}

/**
 * Imprime os dados dos "mais enviados" no elemento pelo id deste.
 * @param id Id do elemento HTML
 **/
RatingUtil.obtemMaisEnviados = function (id)  {
    RatingsAjaxController.getMostSent ( function( html ) {
        if (html != "" && html != null) {
            document.getElementById(id).innerHTML = html;
        } else {
            document.getElementById(id).innerHTML = "<h2>No momento, n&atilde;o h&aacute; nenhuma mat&eacute;ria classificada como a mais enviada</h2>";
        }
    });
}

/**
 * Imprime os dados dos "mais votados" no elemento pelo id deste.
 * @param id Id do elemento HTML
 **/
RatingUtil.obtemMaisVotados = function (id)  {
    RatingsAjaxController.getMostRating ( function( html ) {
        if (html != "" && html != null) {
            document.getElementById(id).innerHTML = html;
        } else {
            document.getElementById(id).innerHTML = "<h2>No momento, n&atilde;o h&aacute; nenhuma mat&eacute;ria classificada como + Votada</h2>";
        }
    });
}

/**
 * Insere rating com votacao e
 * Verifica a media de notas e exibe as estrelas correspondentes
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 * @param nota - nota escolhida de uma materia
 */
RatingUtil.atribuirNotaSetarMedia = function( nota ) {
    if ( DesabilitaFuncoes == false ) {
        var cod = 4;
        var url = "" + document.location;
        //var title = "" + document.title;
        var title = getContentMetaTagByName( "title" );
        var arrData = getContentMetaTagByName( "date" ).substring( 0, 10 ).split( "/" );
        var dataPublicacao = new Date( arrData[1] + "/" + arrData[0] + "/" + arrData[2] );

        if ( title != "" ) {
            last = title.lastIndexOf( "-" ) > 0 ? title.lastIndexOf( "-" ) : title.length;
            title = title.substring( 0, last );
        }

        RatingsAjaxController.insertRatingAndPutInCache( {codGroup:cod,contentUrl:url,contentTitle:title,totalVotes:nota,contentPublishDate:dataPublicacao}, function(){
            RatingsAjaxController.getAverage({codGroup:cod,contentUrl:url,contentTitle:title}, function(media) {
                if ( media != null ) {
                    RatingUtil.mostrarNota(media);
                }
            } //fechando "function(media)"
            ); //fechando "getAverage(...)"
        } //fechando "function()"
        ); //fechando "insertRatingAndPutInCache(...)"
    } //fim DesabilitaFuncoes
}

/**
 * Verifica a media de notas e exibe as estrelas correspondentes ( usado no onload)
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 */
RatingUtil.setarMedia = function() {
    var url = "" + document.location;
    var title = "" + document.title;
    var cod = 4;
    if (title != "") {
        last = title.lastIndexOf("-") > 0 ? title.lastIndexOf("-") : title.length;
        title = title.substring(0, last);
    }

    RatingsAjaxController.getAverage({codGroup:cod,contentUrl:url,contentTitle:title}, function(media){
       if (media != null){
           RatingUtil.mostrarNota(media);
        }
    }//fechando "function(media)"
    ); //fechando "getAverage(...)"
}

/**
 * Mostra nota na tela
 * @media Media das notas
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 */
RatingUtil.mostrarNota = function (media) {
       if (media.notes==5) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrela";
            document.getElementById("estrela4").className="estrela";
            document.getElementById("estrela5").className="estrela";
       }
       else if (media.notes>=4.5) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrela";
            document.getElementById("estrela4").className="estrela";
            document.getElementById("estrela5").className="estrelameia";
       }
       else if (media.notes>=4) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrela";
            document.getElementById("estrela4").className="estrela";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=3.5) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrela";
            document.getElementById("estrela4").className="estrelameia";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=3) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrela";
            document.getElementById("estrela4").className="estrelavazia";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=2.5) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrelameia";
            document.getElementById("estrela4").className="estrelavazia";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=2) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrela";
            document.getElementById("estrela3").className="estrelavazia";
            document.getElementById("estrela4").className="estrelavazia";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=1.5) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrelameia";
            document.getElementById("estrela3").className="estrelavazia";
            document.getElementById("estrela4").className="estrelavazia";
            document.getElementById("estrela5").className="estrelavazia";
       }
       else if (media.notes>=1) {
            document.getElementById("estrela1").className="estrela";
            document.getElementById("estrela2").className="estrelavazia";
            document.getElementById("estrela3").className="estrelavazia";
            document.getElementById("estrela4").className="estrelavazia";
            document.getElementById("estrela5").className="estrelavazia";
       }
}

/**
* Criando ou atualizando o cookie de votacao.
* @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
*/
RatingUtil.cookieVotacao = function(nota) {
   if ( DesabilitaFuncoes == false ) {

   // Numero de dias para o cookie expirar
   var time = 1250;

       var cookieVotadas = readCookie( "materiasVotadas" );

       // Pegando o nomeRender da materia para coloca-la no cookie.
       var url = window.location.href;
       var varSplit = url.split('/');
       var nomeRender = varSplit[varSplit.length-1];
       varSplit = nomeRender.split('.');
       nomeRender = varSplit[0];

       var materiaJavotada = false;
       // Se o cookie ja existir, atualiza-lo, senao cria-lo.
       if ( cookieVotadas != null ) {
            var splitMaterias = cookieVotadas.split(',');

            // Se a materia ja foi votada, notificar usuario.
            for ( var i=0; i<splitMaterias.length; i++ ) {
                if ( splitMaterias[i] == nomeRender ) {
                    materiaJavotada = true;
                }
            }

            // Se a materia ainda nao foi votada, inserir ela e sua nota.
            if ( materiaJavotada == false ) {
                createCookie( "materiasVotadas", cookieVotadas+','+nomeRender+','+nota, time );
            }
       } else {
         createCookie( "materiasVotadas", nomeRender + ',' + nota, time );
       }
    }
    // Desabilitando a funcionalidade de votar.
    DesabilitaFuncoes = true;
    document.getElementById( "avaliacao" ).getElementsByTagName( "h2" )[0].innerHTML = "Voc&ecirc; j&aacute; votou nesta mat&eacute;ria.";
    document.getElementById( "avaliacao" ).getElementsByTagName( "h3" )[0].innerHTML = "&nbsp;";
}

/**
 * Criando ou atualizando o cookie de votacao.
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 */
RatingUtil.cookieVotacaoOnLoad = function() {
    var cookieVotadas = readCookie( "materiasVotadas" );

    // Monta as estrelas do rating
    RatingUtil.montaAvaliacao();

    // Pegando o nomeRender da materia para coloca-la no cookie.
    var url = window.location.href;
    var varSplit = url.split('/');
    var nomeRender = varSplit[varSplit.length-1];
    varSplit = nomeRender.split('.');
    nomeRender = varSplit[0];

    if ( cookieVotadas != null ) {
        var splitMaterias = cookieVotadas.split(',');

        // Se a materia ja foi votada, notificar usuario, desabilitar a votacao e setar a nota que ele havia dado.
        for ( var i=0; i<splitMaterias.length; i++ ) {
            if ( splitMaterias[i] == nomeRender ) {
                // Exibir mensagem ao usuario, dizendo que ele ja votou.
                document.getElementById( "avaliacao" ).getElementsByTagName( "h2" )[0].innerHTML = "Voc&ecirc; j&aacute; votou nesta mat&eacute;ria.";
                document.getElementById( "avaliacao" ).getElementsByTagName( "h3" )[0].innerHTML = "&nbsp;";
                // Pegando a nota, que vai estar depois do nomeRender no cookie.
                var nota = splitMaterias[i+1];

                // Setando as estrelas com a nota dada.
                for ( var j=1; j<=5; j++ ) {
                    if ( j <= nota ) {
                        document.getElementById( 'voto' + j ).style.backgroundImage = 'url(/css/imagem/home_estrelaCheia.gif)';

                    }
                }

                // Desabilitando a funcionalidade de votar.
                DesabilitaFuncoes = true;
            }
        }
    }
}

/**
 * Monta as estrelas do rating.
 */
RatingUtil.montaAvaliacao = function() {
    var avaliacao = document.getElementById( "avaliacao" );
    var ulElement = avaliacao.getElementsByTagName( "ul" )[0];
    var liElement = avaliacao.getElementsByTagName( "li" );
    var arrStages = new Array( "Fraca", "Regular", "Boa", "&Oacute;tima", "Excelente" );
    var buffer    = "";
    var counter   = 1;

    for ( var i=0; i<liElement.length; i++ ) {
        buffer += "<li id='voto" + counter + "' class='estrelavazia' onMouseOver='RatingUtil.aparecerEstrela(" + counter + ");' onMouseOut='RatingUtil.aparecerEstrela(0);' onClick='RatingUtil.atribuirNotaSetarMedia(" + counter + ");RatingUtil.cookieVotacao(" + counter + ");'>";
        buffer += "<a href='javascript:void(0);' alt='" + arrStages[i] + "' title='" + arrStages[i] + "'>&nbsp;&nbsp;&nbsp;</a>";
        buffer += "</li>";
        counter++;
    }

    ulElement.innerHTML = buffer;
}

/**
 * Ao passar o mouse sobre uma estrela, esta e suas antecessoras devem acender.
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 */
RatingUtil.aparecerEstrela = function(id) {
    if ( DesabilitaFuncoes == false ) {
        for ( i=1; i<=5; i++ ) {
            if ( i <= id ) {
                document.getElementById('voto'+i).style.backgroundImage='url(/css/imagem/home_estrelaCheia.gif)';
            } else {
                document.getElementById('voto'+i).style.backgroundImage='url(/css/imagem/home_estrelaVazia.gif)';
            }
        }
    }
}

/**
 * Colocar o titulo da materia em cima das estrelas de votacao.
 * @author <a href="mailto:fbgonini@cit.com.br">Fabio Bergamo Gonini</a>
 */
RatingUtil.colocaTituloMateria = function() {
    var titulo = document.title;
    /*var varSplit = titulo.split( "- Portal EXAME" );
    titulo = varSplit[0];*/
	var tituloSplit = titulo.split("-");
	if (tituloSplit.length > 2) {
		titulo = "";
		for(x=tituloSplit.length; x>=0; x--) {
			if (x < (tituloSplit.length-2)) {
				if (titulo.length == 0) {
					titulo = tituloSplit[x];
				} else {
					titulo = tituloSplit[x]+"-"+titulo;
				}
			}
		}
	}

    document.getElementById( "avaliacao" ).getElementsByTagName( "h3" )[0].innerHTML = titulo;
}

