// Javascript do portal Acao Verde

google.load("swfobject", "2.1");		

// Galeria do header
var glrHeader;

// Array de galerias de pilares
var glrPilares = new Array();

// Variavel com o item de pilar que esta aberto
var pilarAberto = null;

// Array associativo com as flags indicando se eh para mostrar ou esconder o conteudo correspondente a chave do Array.
var isShow = new Array();

// Array com os players que foram carregados, usados para fazer o carregamento de outros videos nesses players.
var loadedPlayers = new Array();

// Id do video que sera carregado quando o player estiver preparado
var videoIdToLoad = null;

// Objeto DOM da imagem do botao do player do youtube
var player_bt = $('<img/>');
player_bt.attr('src', '/acv/img/player-bt.png');
player_bt.attr('border', '0');
player_bt.addClass('player-bt');
player_bt.mouseover(function() {
	$(this).fadeTo(100, 1.0);
});
player_bt.mouseout(function() {
	$(this).fadeTo(100, 0.5);
});

//Objeto com as informacoes das imagens que sao usadas nos toggles de slide do site
var toggle_images = {
	saiba_mais : {
		src: '/acv/img/saiba-mais.png',
		src_hover: '/acv/img/saiba-mais-hl.png',
		title: 'Saiba Mais'
	},
	mais : {
		src: '/acv/img/mais.png',
		src_hover: '/acv/img/mais-hl.png',
		title: 'Mais'
	},
	mais_posts : {
		src: '/acv/img/mais-posts.png',
		src_hover: '/acv/img/mais-posts-hl.png',
		title: 'Mais Posts'
	},	
	fechar : {
		src: '/acv/img/fechar.png',
		src_hover: '/acv/img/fechar-hl.png',
		title: 'Fechar'
	}
}

/*
 * _ga_category_map : mapa dos nomes das categorias de pilares de acordo com os seus bindings
 * Composicao:
 * binding = category
 */
var _ga_category_map = new Array();

_ga_category_map["residuos"] 	=	"GestaoResiduos";
_ga_category_map["construcoes"] = 	"ConstrucoesVerdes";
_ga_category_map["organicos"] 	= 	"ProdutosOrganicos";
_ga_category_map["co2"] 		=	"ControleCO2";
_ga_category_map["recursos"] 	=	"RecursosNaturais";
_ga_category_map["sacolas"] 	=	"SacolasPlasticas";

// Detecta a versao do Internet Exploder. Se o browser nao for o IE, retorna -1.
function getInternetExplorerVersion() {
    var version = -1;
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]+[\.0-9]*)");
        if (re.exec(ua) != null)
            version = parseFloat(RegExp.$1);
    }
    return version;
}

//Funcoes da API do google
//This function is called when an error is thrown by the player
function onPlayerError(errorCode) {
	alert("Ocorreu um erro do tipo: " + errorCode);
}

//This function is called when the player changes state
// Chamada apenas para o player do header
function onPlayerStateChange(newState) {
	glrHeader.player_state = newState;
}

//This function is automatically called by the player once it loads
function onYouTubePlayerReady(playerId) {
	loadedPlayers[playerId] = document.getElementById(playerId);

	if(videoIdToLoad)
		loadedPlayers[playerId].loadVideoById(videoIdToLoad);
	
	videoIdToLoad = null;
	
	onYouTubePlayerReadyAnalytics(playerId);
	
	if(playerId.match('header'))
		loadedPlayers[playerId].addEventListener("onPlayerStateChange");
	
}

// Loop pela tabela de links para setar o tracking do google analytics
function set_ga_tracking(link_table){
	for(var i = 0; i < link_table.length; i++) {
		var link = link_table[i];
		
		$(link.id).each( function() {
			var l = $(this);
			var o = new Object();
			o.label = link.label;
			o.action = link.action;
			o.category = link.category;
			
			o.label = o.label.replace("%t", l.attr("data-ga-label"));
			try {
				o.category = o.category.replace("%binding", _ga_category_map[l.attr("data-ga-binding")]);
			}
			catch(e){
				o.category = link.category;
			}
			
			//console.log("_gaq.push(['_trackEvent' , '" + escape(o.category) + "', '" + escape(o.action) + "' , '" + escape(o.label) + "' ]);");
			
			//l.attr("onclick", "console.log(['_trackEvent' , '" + escape(o.category) + "', '" + escape(o.action) + "' , '" + escape(o.label) + "' ]);" )
			l.attr("onclick",   "_gaq.push(['_trackEvent' , '" + escape(o.category) + "', '" + escape(o.action) + "' , '" + escape(o.label) + "' ]);" );
			l.data("clickevent", "_gaq.push(['_trackEvent' , '" + escape(o.category) + "', '" + escape(o.action) + "' , '" + escape(o.label) + "' ]);");
			
		});
	}
}


// Funcao Toggle de conteudo
function toggleContent(content, content_id, show_image, menu_id){
	if(isShow[content_id])
		showContent(content, content_id, menu_id);
	else
		hideContent(content, content_id, show_image);
}

// Funcao Mostrar conteudo
function showContent(content, content_id, menu_id){
	button_link = content.parent().find('a.saiba-mais');
	button_img = button_link.find('img');
	
	highlightMenu($('#' + menu_id)[0]);
	
	content.slideDown(800, function(){
		button_img.attr('src', toggle_images.fechar.src);
		button_img.attr('alt', toggle_images.fechar.title);
		button_img.attr('title', toggle_images.fechar.title);
		button_img.attr('src-default', toggle_images.fechar.src);
		button_img.attr('src-hover', toggle_images.fechar.src_hover);
		button_link.attr('href', '#fechado');
		button_link.removeAttr('onclick');
	});
	isShow[content_id] = false;
}

// Funcao Esconder conteudo
function hideContent(content, content_id, show_image){
	button_link = content.parent().find('a.saiba-mais');
	button_img = button_link.find('img');
	
	clearHighlightMenu();

	content.slideUp(800, function(){
		button_img.attr('src', show_image.src);
		button_img.attr('alt', show_image.title);
		button_img.attr('title', show_image.title);
		button_img.attr('src-default', show_image.src);
		button_img.attr('src-hover', show_image.src_hover);
		button_link.attr('href', '#' + content_id);
		button_link.attr('onclick', button_link.data('clickevent'));
	});
	isShow[content_id] = true;
}

// Funcao que mantem o efeito de hover no item de menu especificado
function highlightMenu(item){
	clearHighlightMenu();

	$.data(item, 'selected', true);
	$(item).addClass('selected');
}

// Funcao que limpa o highlight de todos os itens de menu
function clearHighlightMenu(){
	$('#menu-principal a').each(function(){
		if($.data(this, 'selected')){
			$.data(this, 'selected', false);
			$(this).removeClass('selected');
		}
	});
}

// Funcao que retorna o nome do mes de acordo com seu n�mero
function get_month_name(month){
	switch(month){
		case 1:  return 'Jan';
		case 2:  return 'Fev';
		case 3:  return 'Mar';
		case 4:  return 'Abr';
		case 5:  return 'Mai';
		case 6:  return 'Jun';
		case 7:  return 'Jul';
		case 8:  return 'Ago';
		case 9:  return 'Set';
		case 10: return 'Out';
		case 11: return 'Nov';
		case 12: return 'Dez';
	}
}

// Funcao que cria um objeto de galeria para um item de pilar
function setupPilarItemGallery(idx, data)
{
	glrPilares[idx] = new Galeria($('#conteudo-pilar-'+idx+' .carrossel-pilar ul'), 98, 3, data.types);
	// Videos da galeria do header
	
	for(var i = 0; i < data.videos.length; i++)
		glrPilares[idx].add_video( { id : data.videos[i].id, elementId : "player-pilar-" + idx }, data.videos[i].index);
	
	if(glrPilares[idx].size > 3) {
		// Bind dos eventos do carrossel da galeria do pilar
		$('#conteudo-pilar-'+idx+' a.esq').click(function(){
			glrPilares[idx].go_left();
		});

		$('#conteudo-pilar-'+idx+' a.dir').click(function(){
			glrPilares[idx].go_right();
		});
	} 
	else {
		// oculta as setas
		// Bind dos eventos do carrossel da galeria do pilar
		$('#conteudo-pilar-'+idx+' a.esq, #conteudo-pilar-'+idx+' a.dir').addClass("moreHidden");
	}
	
	$('#player-pilar-'+idx).parent().hide();
	$('#img-pilar-'+idx+'-1').hide();
	// TODO rever esse bloco - parece meio "iffy"
	if(data.types[1] == 'img'){
		$('#img-pilar-'+idx+'-1').show();
	}
	else if(data.types[1] == 'vid'){
		$('#player-pilar-'+idx).parent().show();
	}
	
	// Adiciona o botao de player do youtube nos thumbs de video
	$('#conteudo-pilar-'+idx+' .carrossel-pilar a').each( function() {
		item_index = Number($(this).attr('data-index'));
		if(data.types[item_index] == 'vid')
			$(this).append(player_bt.clone(true, true));
	});
	
	// Bind do click dos itens de galeria
	$('#conteudo-pilar-'+idx+' .carrossel-pilar a').live('click', function(){
		var item_index = Number($(this).attr('data-index'));
		$('#img-pilar-'+idx+' img').hide();
		
		if(glrPilares[idx].types[item_index] == 'img'){	
			$('#player-pilar-'+idx).parent().hide();
			loadedPlayers['player-pilar-'+idx] = null;
			$('#img-pilar-'+idx+'-'+item_index).show();
		}
		else if(glrPilares[idx].types[item_index] == 'vid'){
			var video = glrPilares[idx].videos[item_index];
			var player = loadedPlayers[video.elementId];
			
			$('#' + video.elementId).parent().show(function(){
				// Se o player estiver carregado, carrega o video usando loadVideoById
				// Senao, atribui o id do video na variavel videoIdToLoad, que sera usada para carregar o video quando o
				// Player for carregado no onYouTubePlayerReady
				if(player)
					player.loadVideoById(video.id);
				else 
					videoIdToLoad = video.id;
			});
		}
	});
}

// Carrega a galeria de um pilar ou programa de pilar
function loadGaleriaPilar(idx, article_id) {
	// Parametros do objeto swf do player do youtube
    var params = { allowScriptAccess: "always",
				   allowFullScreen: "false",
		   		   wmode: "transparent" };	
	
	if(glrPilares[idx])
	{
		// Carrega os players das galerias de pilares, se tiver algum para aquele pilar
		if(glrPilares[idx].videos.length > 0){
			var atts = { id: "player-pilar-" + idx };
			var video_id = (glrPilares[idx].videos[1] == undefined) ? "ylLzyHk54Z0" : glrPilares[idx].videos[1].id;
			
        	swfobject.embedSWF("http://www.youtube.com/v/" + video_id +
    	               		   "&version=3&rel=0&enablejsapi=1&showinfo=0&iv_load_policy=3&feature=player_embedded&playerapiid=player-pilar-" + idx,
    	               		   "player-pilar-" + idx, $('#' + article_id + ' .galeria .item').width(), $('#' + article_id + ' .galeria .item').height(),
    	               		   "8", null, null, params, atts);
		}
		
		// Define a galeria do pilar como circular
		glrPilares[idx].set_circular();
	}
}

//Ajuste do Menu ao scroll
function adjustMenu(offset, marginTop)
{	
	// testa scrollbar horizontal
	var docWidth = $(document).width();
	var scroll = $(window).width();
	
	// Se o browser for IE 8, diminui a largura da scrollbar vertical da largura do documento
	if(getInternetExplorerVersion() == 8){
		docWidth -= 21;
	}
	
	if( docWidth > scroll)
		$('#menu-principal').removeClass("fixed").css( {"top" : ((offset - marginTop) + "px")});
	else if ($(window).scrollTop() > (offset - marginTop))
		$('#menu-principal').addClass("fixed").css({ "top" : marginTop});
	else
		$('#menu-principal').removeClass("fixed").offset({ "top" : offset});
}

//Reajuste de tamanho de imagens, mantendo a proporcao
function resize_image(image, width, height, isPositioned) {
	var topo;
	var newHeight = (width*image.height())/image.width();
	var isPositioned = (isPositioned == undefined) ? true : isPositioned; 
			
	image.attr('height', newHeight);
	image.attr('width', width);
	
	if(newHeight >= 93)
		topo = -((newHeight - height)/2);
	else
		topo = (height - newHeight)/2;
	
	if(isPositioned)
		image.css({'position':'relative', 'top': topo + 'px' });
}

// Define os links das tags dos artigos selecionados
function setTags(tagsElements, searchLink) {
	tagsElements.each(function(){
		var tagsElement = $(this);
		tagsElement.html(tagsElement.html().replace(/;/g, ","));
		var tags = tagsElement.html().split(",");
		tagsElement.html('Tags: ');
		
		$(tags).each(function(index, value){
			var a = $("<a></a>");
			a.attr('href', searchLink + '&query=' + $.trim(value));
			a.text(value);
			tagsElement.append(a);
			if(index < (tags.length-1))
				tagsElement.html(tagsElement.html() + ' / ');
		});
	});
}

// Constroi a introducao de um conteudo removendo as tags html do conteudo e limitando o numero de caracteres em 120.
function setIntroduction(introElements) {
	introElements.each(function() {
		$(this).html($(this).html().replace(/<(.|\n)*?>/g, ''));
		if($(this).html().length > 120)
			$(this).html("<p>" + $(this).html().substr(0, 120) + "...</p>");
		else
			$(this).html("<p>" + $(this).html() + "</p>");
	});	
}

// Javascript da barra superior GPA
function localizador_header(obj) { 
	var redirect = 'http://www.grupopaodeacucar.com.br/gmaps_gpa/Buscagpa.aspx?q=gpa&strcep=';
	redirect += document.getElementById("headerCep").value.replace("-", "");
	redirect += '&bandeira=gpa';
	obj.target = '_blank';
	obj.href = redirect;
}

function taLimit(taObj, maxL) { 
	if (taObj.value.length==maxL) 
		return false; 
	return true;
}


$(function(){
	// Eventos da barra superior
	/* nossos sites */	
	$(".link_nossosSites").bind("mouseover", function(){ $('.div_nossosSites').fadeIn(400);});
	$(".div_nossosSites").bind("mouseleave", function(){ $('.div_nossosSites').fadeOut(300); });
});

