/**
 * @author Fabito
 */
// Consoleless beware!
var console = window.console || {};
console.log = console.log || function(t) { };
    
// Criando o namespace para a Caixa Seguros
var CS = window.CS || {};
CS.util = {};
    
CS.Glossario = function() {
    		// Shortcuts make for easy typing
    		var $D = YAHOO.util.Dom,
    			$E = YAHOO.util.Event,
    			$ = $D.get;
			var grupoTermosSelecionado = null;
			
			//mostra os termos que comeÃ§am com a letra clicada pelo usuÃ¡rio
			var mostraTermos = function(e) {
				var target = $E.getTarget(e, true);
				console.log(target.tagName);
				if (target.tagName != 'A'){
					target = target.parentNode;
				}
				console.log(target);
				var grupoTermos = $('termos_' + target.id.substring(4));
				console.log(grupoTermos);
				if (!$D.hasClass(grupoTermos, "selecionado")) {
					if (grupoTermosSelecionado) {
						$D.removeClass(grupoTermosSelecionado, "selecionado");
					}
					$D.addClass(grupoTermos, "selecionado");
					grupoTermosSelecionado = grupoTermos;
				} else {
					console.log("Tem classe selecionado " + target.id);
				}
				CS.Estilo.ajustaAlturaConteudo();
				$E.stopEvent(e);
			}
						
     return {
			init : function() {
				//adiciona funÃ§Ã£o mostraTermos no evento onclick de todos os "a" dos navegadores
				$E.on(Ext.DomQuery.select('.barraNavegacao a'), 'click', mostraTermos);
			}
     }
}();

CS.Glossario.tooltip = function() {
    		// Shortcuts make for easy typing
    		var $D = YAHOO.util.Dom,
    			$E = YAHOO.util.Event,
    			$ = $D.get;
			var grupoTermosSelecionado = null;
			var marginX = 50; //distancia do mouse em x
			var marginY = -50; //distancia do mouse em y
			var id = "minhaTooltip";
						
     return {
			init : function() {
				
				produtochannel = CS.canais.length - 2;
				
				if ((CS.canais[produtochannel].nome == 'Produtos') ||
					(CS.canais[produtochannel].nome == 'produtos')) {
				
					//obtenho todos os div dentro de conteudoPrincipal
					var eDiv = Ext.DomQuery.select('#conteudoPrincipal div');
					//console.log("Nro de elementos de  #conteudoPrincipal div= " + eDiv.length);
					
					//obtenho todos os textblocks dentro dos div dentro de conteudoPrincipal,
					//equivalente a cssQuery('#conteudoPrincipal .textblock p');				
					var eTextBlock = Ext.DomQuery.select(".textblock p", eDiv);
					
					for (nroTextBlock = 0; nroTextBlock < eTextBlock.length; nroTextBlock++) {
						var texto = CS.Glossario.tooltip.trata(eTextBlock[nroTextBlock].innerHTML);
						eTextBlock[nroTextBlock].innerHTML = texto;
					}	
					
					//obtenho todos div listadeinformacao e dentro deles os p dentro dos divs descricaoinformacao
					var eListaInformacao = Ext.DomQuery.select(".listadeinformacao .descricaoinformacao p", eDiv);			
					for (nroListaInformacao = 0; nroListaInformacao < eListaInformacao.length; nroListaInformacao++) {
						var texto = CS.Glossario.tooltip.trata(eListaInformacao[nroListaInformacao].innerHTML);
						eListaInformacao[nroListaInformacao].innerHTML = texto;
					}
				
				}
								
			},
			//metodo 1, todas as variaveis terminam com indice 1
			trata : function (texto1) {
				
				var result1 = texto1;

				for (nroTermo1 = 0; nroTermo1 < CS.Glossario.termos.length; nroTermo1++) {
					var termo1 = CS.Glossario.termos[nroTermo1].termo;
					var descricao1 = CS.Glossario.termos[nroTermo1].descricao;

					var lsVariacoes1 = CS.Glossario.tooltip.montaListaTermosVariacoes (termo1, CS.Glossario.termos[nroTermo1].variacoes);
					
					for (qtdVariacao1 = 0; qtdVariacao1 < lsVariacoes1.length; qtdVariacao1++) {
						var expressaoBuscada1 = lsVariacoes1[qtdVariacao1];
						var textoAnterior1 = "";
						var posicaoInicial1 = 0;
						var posicaoInicialPalavra1 = 0;	
						var posicao1 = result1.indexOf(expressaoBuscada1, posicaoInicial1);
						if (posicao1 >= 0 ) {
							while (posicao1 >= 0) {
								//obtem a palavra desde o começo dela, pois o termo pode estar no meio de uma palavra
								//Ex. palavra do texto: pre-venda, termo: venda
								posicaoInicialPalavra1 = CS.Glossario.tooltip.obterPosicaoInicialPalavra(result1, posicao1);
								var posicaoFinalPalavra1 = CS.Glossario.tooltip.obterPosicaoFinalDaPalavra(result1, posicaoInicialPalavra1, posicao1, expressaoBuscada1);
								var palavra1 = result1.substring(posicaoInicialPalavra1, posicaoFinalPalavra1);
								
								//se palavra entre < e > então significa que é trecho HTML, logo deve ser descartada
								var posicaoAbreHTML1 = result1.lastIndexOf("<", posicaoInicialPalavra1);
								var posicaoFechaHTML1 = result1.indexOf(">", posicaoAbreHTML1);
								
								if ((posicaoAbreHTML1 > -1) &&
									(posicaoAbreHTML1 < posicaoInicialPalavra1) &&
									(posicaoInicialPalavra1 < posicaoFechaHTML1)) {
										//a palavra foi encontrada dentro de um trecho HTML, descarta a palavra
										//Continuando a busca da palavra no restante do texto
										posicao1 = result1.indexOf(expressaoBuscada1, posicao1 + 1);
								} else {
										if (palavra1 == expressaoBuscada1
												|| palavra1 == expressaoBuscada1 + " "
												|| palavra1 == expressaoBuscada1 + ","
												|| palavra1 == expressaoBuscada1 + "."
												|| palavra1 == expressaoBuscada1 + ";"
												|| palavra1 == expressaoBuscada1 + "\""
												|| palavra1 == expressaoBuscada1 + "\n"
												|| palavra1 == "\"" + expressaoBuscada1
												|| palavra1 == "\"" + expressaoBuscada1 + " "												
												|| palavra1 == expressaoBuscada1 + "'"
												|| palavra1 == "'" + expressaoBuscada1 
												|| palavra1 == "'" + expressaoBuscada1 + " " 												
												|| palavra1 == expressaoBuscada1 + "!"
												|| palavra1 == expressaoBuscada1 + "?"
												|| palavra1 == expressaoBuscada1 + "("
												|| palavra1 == expressaoBuscada1 + ")") {
											var idRand1 = Math.floor(Math.random()*1001);
											textoAnterior1 = result1.substring(0, posicao1);
											textoAnterior1 += "<span id=\"" + idRand1 + "\" class=\"exibe_descricao\" ";
											textoAnterior1 += "onclick=\"javascript:CS.Glossario.tooltip.showTip('" + idRand1 + "','" + termo1 + "','" + descricao1 + "');\">";
											textoAnterior1 += "<a href=\"#this\">" + expressaoBuscada1 + "</a></span>";
											posicaoInicial1 = textoAnterior1.length;
											textoAnterior1 += result1.substring(posicao1 + expressaoBuscada1.length, result1.length);
											result1 = textoAnterior1;
											posicao1 = result1.indexOf(expressaoBuscada1, posicaoInicial1);
										} else {
											//vai até o final da palavra
											if (result1.indexOf(" ", posicaoFinalPalavra1) >= 0) {
												//tem um espaço após a palavra
												posicaoInicial1 = result1.indexOf(" ", posicaoFinalPalavra1);
												posicao1 = result1.indexOf(expressaoBuscada1, posicaoInicial1);
											} else {
												//não tem espaço, logo terminou o texto.
												posicao1 = -1;
											}
											
										}								
								}
							} //fim while (posicao >= 0) {
						}//fim if (posicao >= 0 ) {
										
					}
				}
				return result1;
			},
			
			//metodo 2, todas as variaveis terminam com indice 2
			montaListaTermosVariacoes : function (termo2, variacoes2) {
				var lista2 = new Array();
				lista2[0] = termo2;
				var varia2 = variacoes2.split(";");
				for (nroVariacao2 = 0; nroVariacao2 < varia2.length; nroVariacao2++) {
					if (varia2[nroVariacao2] != "") {
						lista2[nroVariacao2+1] = varia2[nroVariacao2];
					}
				}

				return lista2;
			},
			
			//metodo 3, todas as variaveis terminam com indice 3
			obterPosicaoInicialPalavra : function (texto3, p3) {
				var resultobterPosicaoInicialPalavra3 = 0;
				var posicaoEspacoAnteriorAPalavra3 = texto3.lastIndexOf(" ", p3);
		
				if (posicaoEspacoAnteriorAPalavra3 < 0) {
					//palavra inicia a frase
					resultobterPosicaoInicialPalavra3 = 0;
				} else {
					resultobterPosicaoInicialPalavra3 = posicaoEspacoAnteriorAPalavra3 + 1;
				}
				return resultobterPosicaoInicialPalavra3;
			},
			
			//metodo 4, todas as variaveis terminam com indice 4
			obterPosicaoFinalDaPalavra : function (texto4, posicaoInicialPalavra4, match4, expressaoBuscada4) {
				
				var posicaoFinalPalavra4 = 0;
				
				if (expressaoBuscada4.indexOf(" ") < 0) {
					//termo do glossário não composto
					if (posicaoInicialPalavra4 == match4) {
						posicaoFinalPalavra4 = posicaoInicialPalavra4 + expressaoBuscada4.length + 1;
					} else {
						posicaoFinalPalavra4 = match4 + expressaoBuscada4.length + 1;
					} 
				} else {
					//termo do glossário é composto
					if (posicaoInicialPalavra4 == match4) {
						posicaoFinalPalavra4 = posicaoInicialPalavra4 + expressaoBuscada4.length + 1;
					} else {
						posicaoFinalPalavra4 = posicaoInicialPalavra4 + (match4 - posicaoInicialPalavra4) + expressaoBuscada4.length + 1;
					}
				}
				
				return posicaoFinalPalavra4;
				
			},
			
			//metodo 7, todas as variaveis terminam com indice 7
			showTip : function (id7, text7, name7) {

				var texto7 = "<div id='tooltip'>" +
									"<div id='tooltipFechar'>"+
										"<a href='#this' onClick='CS.Glossario.tooltip.hideTip();'>"+
											"<img src='/Corporativo/imagem/fechar_tooltip.jpg'>" +
										"</a>"+
									"</div>"+
									"<h1>"+
										text7+
									"</h1>"+
									"<div id='tooltipScroll'>"+
										name7+
									"</div>" +
								"</div>";
				var t7 = document.getElementById(id);
				t7.innerHTML = texto7;

				var x7 = $D.getX(id7);
				var y7 = $D.getY(id7);

				t7.style.left = marginX + x7 +"px";
				t7.style.top = marginY + y7 +"px";
				t7.style.display = "block";
			},
			
			//metodo 8, todas as variaveis terminam com indice 8
			hideTip : function () {
				document.getElementById(id).style.display = "none";
			}

     }
}();


