/* Variaveis globais */
var bounds = new GLatLngBounds();
var map;
var matPontos = new Array();
var markCasa;
var boolProcuraRealizada = false;
var legenda_itens = new Array('ponto', 'pontao', 'rede');
var legenda = new Array();


var icoProj1 = new GIcon(); var icoProj2 = new GIcon(); var icoProj3 = new GIcon();
var icoProj4 = new GIcon(); var icoProj5 = new GIcon(); var icoInter = new GIcon();

icoProj1.image = "imagens/icone-marcador-amarelo.png";
icoProj2.image = "imagens/icone-marcador-vermelho.png";
icoProj3.image = "imagens/icone-marcador-roxo.png";
icoProj4.image = "imagens/icone-marcador-azul.png";
icoProj5.image = "imagens/icone-marcador-lilas.png";
icoInter.image = "imagens/icone-marcador-cinza.png";

icoProj1.shadow = icoProj2.shadow  = icoProj3.shadow = icoProj4.shadow = icoProj5.shadow = icoInter.shadow = "imagens/icone-sombra.png";
icoProj1.iconSize = icoProj2.iconSize  = icoProj3.iconSize = icoProj4.iconSize = icoProj5.iconSize = icoInter.iconSize = new GSize(12, 20);
icoProj1.shadowSize = icoProj2.shadowSize  = icoProj3.shadowSize = icoProj4.shadowSize = icoProj5.shadowSize = icoInter.shadowSize = new GSize(22, 20);
icoProj1.iconAnchor = icoProj2.iconAnchor  = icoProj3.iconAnchor = icoProj4.iconAnchor = icoProj5.iconAnchor = icoInter.iconAnchor = new GPoint(6, 20);
icoProj1.infoWindowAnchor = icoProj2.infoWindowAnchor = icoProj3.infoWindowAnchor = icoProj4.infoWindowAnchor = icoProj5.infoWindowAnchor = icoInter.infoWindowAnchor = new GPoint(5, 1);


/******************************************/

function inciaGoogleMap() {
	if (GBrowserIsCompatible())	{
		map =  new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(-14.782928,-52.382812),4);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		var mini = new GOverviewMapControl();
		map.addControl(mini);
		mini.hide();
		map.addControl(new GScaleControl());
		map.checkResize();

		criaShapesEstados(2);
	} else {
		alert('Infelizmente seu navegador não é compatível com o GoogleMaps.');
	}
}

/******************************************/

function criaPontoCasa() {
	if (lat != null && lon != null) {
		var icoCasa = new GIcon();
		icoCasa.image = "imagens/icone-local.png";
		icoCasa.iconSize = new GSize(20, 20);
		icoCasa.iconAnchor = new GPoint(10, 10);
		icoCasa.infoWindowAnchor = new GPoint(8, 8);

		var MarkerOptions = new Object();

		MarkerOptions.icon = icoCasa;

		markCasa = new GMarker(new GLatLng(lat,lon), MarkerOptions);
		map.addOverlay(markCasa);
	}
}

/******************************************/

function criaPonto(ponto) {
	var MarkerOptions = new Object();
	MarkerOptions.title = ponto.nom;
  /*
  if (typeof(ponto.ico) != 'undefined' && (projSelecionados.length > 1 && projSelecionados.length < 6))
    MarkerOptions.icon = eval(ponto.ico);
  else
    MarkerOptions.icon = icoProj1;
  */

	switch(ponto.ico) {
		case 'ponto': MarkerOptions.icon = icoProj1;
			legenda['ponto'] = legenda['ponto'] + 1;
    	break;
		case 'pontao': MarkerOptions.icon = icoProj2;
			legenda['pontao'] = legenda['pontao'] + 1;
		break;
		case 'rede': MarkerOptions.icon = icoProj3;
			legenda['rede'] = legenda['rede'] + 1;
		break;
	}
	var marker = new GMarker(ponto.coo, MarkerOptions);
	bounds.extend(ponto.coo);

	GEvent.addListener(marker, "click", function(e) {abreBalao(ponto.id)});
	GEvent.addListener(marker, "mouseover", function(e) {});
	GEvent.addListener(marker, "mouseout", function(e) {});

	matPontos[ponto.id] = marker
	map.addOverlay(marker);
}

/******************************************/

function ajustaMapaPontos() {
	map.setZoom(map.getBoundsZoomLevel(bounds));
	map.setCenter(bounds.getCenter());
}

/******************************************/

function limpaMapa() {
	boolProcuraRealizada = true;
	map.clearOverlays();
	criaPontoCasa();
	bounds = new GLatLngBounds();
	removeShapesEstados();
}

/******************************************/

function abreBalao(id) {
	if(id){
	    map.panTo(matPontos[id].getLatLng());
	    matPontos[id].openInfoWindowHtml('<div class="loading">Carregando detalhes...</div>');
	    getDetalhesPonto(id);
    }
}

/******************************************/

function getDetalhesPonto(id) {
	var url = 'includes/AjaxDetalhes.php?id=' + id
	new Ajax(url,
	{
		method: 'get',
		onComplete: exibeDetalhesPonto
	}
	).request();
}

/******************************************/

function exibeDetalhesPonto(jsonResult) {
	jsonData = eval("(" + jsonResult + ")");

	/* Monta a aba principal com as informações sobre o ponto */
	var tabPontoHtml = '<div class="infowindow">';
	tabPontoHtml += '<p class="classficacao">' + jsonData.marker.tipo + '</p><h2 title="' + jsonData.marker.cod + '">' + jsonData.marker.nomereduzido + '</h2>';
	tabPontoHtml += '<p class="projeto">' + jsonData.marker.nome + '</p>';
	tabPontoHtml += '<p class="endereco">';

	if (jsonData.marker.endereco != "")
		tabPontoHtml += jsonData.marker.endereco + '<br>';

	tabPontoHtml += jsonData.marker.municipio + ' - ' + jsonData.marker.uf + '</p>';
	tabPontoHtml += '<p class="tel" title="Telefone">' + jsonData.marker.telefones + '</p>';

	if ((typeof(jsonData.marker.email) == 'string' && jsonData.marker.email != "") || (typeof(jsonData.marker.url) == 'string' && jsonData.marker.url != "")) {
		if (typeof(jsonData.marker.email) == 'string' && jsonData.marker.email != "") {
			var emails = jsonData.marker.email.split(',');
			tabPontoHtml += '<p class="email" title="E-mail">';
			tabPontoHtml += '<a class="net" href="mailto:' + emails[0] + '">' + emails[0] + '</a>';
			tabPontoHtml += '</p>';
			/*
			for ($x = 0; $x < emails.length; $x++ ) {
				if ($x > 0)
					tabPontoHtml += ' - ';

				tabPontoHtml += '<a href="mailto:' + emails[$x] + '">' + emails[$x] + '</a>';
			}
			tabPontoHtml += '</p>';
			*/
		}
		if (typeof(jsonData.marker.url) == 'string' && jsonData.marker.url != "") {
			tabPontoHtml += '<p class="link">' ;
			var urls = jsonData.marker.url.split(',');
			for ($x = 0; $x < urls.length; $x++ ) {
				if ($x > 0)
					tabPontoHtml += ' - ';
				if (urls[$x].substring(0,7) == 'http://')
                    urlCurta = urls[$x].substring(7,urls[$x].length)
                else
                    urlCurta = urls[$x]

                tabPontoHtml += '<a class="net" target="_blank" href="' + urls[$x] + '">' + urlCurta + '</a>';
			}
			tabPontoHtml += '</p>';
		}
	}
	tabPontoHtml += '</p><a href="mailto:' + 'mapasdarede@ipso.org.br' + '?subject=Alteração de informações do ponto ' + jsonData.marker.nomereduzido + '" class="botao editar">alterar dados</a>';
	tabPontoHtml += '</div>';

	/* Monta a aba de descrição */
	var tabDescricaoHtml = '';
	if ((jsonData.marker.resumo != '') || (jsonData.marker.logo != '') || (jsonData.marker.plano != '')) {
		tabDescricaoHtml += '<div class="infowindow">';
		tabDescricaoHtml += '<div id="balao_projetos"></div>';
		tabDescricaoHtml += '<p class="classficacao">' + jsonData.marker.tipo + '</p><h2 title="' + jsonData.marker.cod + '">' + jsonData.marker.nomereduzido + '</h2>';

	if(jsonData.marker.entidade)
	    tabDescricaoHtml += '<strong>Entidade:</strong> '+jsonData.marker.entidade+'<br>'

		if (jsonData.marker.logo1Id != '') {
			tabDescricaoHtml += '<img src="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.logo1Id + '&w=90" class="logo_ponto" title="' + jsonData.marker.logo1Description + '"/>';
		} else if (jsonData.marker.logo2Id != '') {
			tabDescricaoHtml += '<img src="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.logo2Id + '&w=90" class="logo_ponto" title="' + jsonData.marker.logo2Description + '"/>';
		}

		tabDescricaoHtml += '<p class="descricao">' + jsonData.marker.resumo + '</p>';

		//gambi: mostra link para o mapa do pontao caravana cultura viva
		if (jsonData.marker.id == 124) {
			tabDescricaoHtml += '<p class="descricao"><a class="projetos" style="text-decoration: none;" target="_blank" href="http://maps.google.com.br/maps/ms?msa=0&msid=115494384602741054191.00044c07e8311c36fec9a&ie=UTF8&z=5">Ver mapa do itiner&aacute;rio</a></p>';
		}
		if (jsonData.marker.plano != '')
			tabDescricaoHtml += '<a class="botao planotrabalho">plano de trabalho</a>';
		tabDescricaoHtml += '</div>';
	}

	/* Monta a aba do dataIpso */

	if (typeof(jsonData.municipio) == 'object') {
		var tabDataIPSOHtml = '<div class="infowindow">';

		tabDataIPSOHtml += '<div class="dataipso">';

		tabDataIPSOHtml += '<table border="0" cellspacing="1" cellpadding="0" class="cabecalho">';
		tabDataIPSOHtml += '<tr><th class="indice">&Iacute;ndice</td><th class="valor">' + jsonData.municipio.nome +  '</td><th class="valor">' + jsonData.estado.nome + '</td><th class="valor">Brasil</td></tr>';
		tabDataIPSOHtml += '</table>';

		tabDataIPSOHtml += '<div class="overflow">';
		tabDataIPSOHtml += '<table border="0" cellspacing="1" cellpadding="0" class="conteudo">';
		tabDataIPSOHtml += '<tr><td class="indice">Pontos de cultura</td><td class="valor">' + jsonData.municipio.pontos + '</td><td class="valor">' + jsonData.estado.pontos + '</td><td class="valor">' + jsonData.pais.pontos + '</td></tr>';
		tabDataIPSOHtml += '<tr class="c2"><td class="indice">IDH</td><td class="valor">' + jsonData.municipio.idhm + '</td><td class="valor">' + jsonData.estado.idhm + '</td><td class="valor">' + jsonData.pais.idhm + '</td></tr>';
		tabDataIPSOHtml += '<tr><td>Popula&ccedil;&atilde;o</td><td class="valor">' + jsonData.municipio.populacao + '</td><td class="valor">' + jsonData.estado.populacao + '</td><td class="valor">' + jsonData.pais.populacao + '</td></tr>';
		tabDataIPSOHtml += '<tr class="c2"><td>Popula&ccedil;&atilde;o rural </td><td class="valor">' + jsonData.municipio.populacao_rural + '</td><td class="valor">' + jsonData.estado.populacao_rural + '</td><td class="valor">' + jsonData.pais.populacao_rural + '</td></tr>';
		tabDataIPSOHtml += '<tr><td>Popula&ccedil;&atilde;o urbana </td><td class="valor">' + jsonData.municipio.populacao_urbana + '</td><td class="valor">' + jsonData.estado.populacao_urbana + '</td><td class="valor">' + jsonData.pais.populacao_urbana + '</td></tr>';
		tabDataIPSOHtml += '<tr class="c2"><td>&Aacute;rea</td><td class="valor">' + jsonData.municipio.area + '</td><td class="valor">' + jsonData.estado.area + '</td><td class="valor">' + jsonData.pais.area + '</td></tr>';
		tabDataIPSOHtml += '<tr><td>Densidade demogr&aacute;fica </td><td class="valor">' + jsonData.municipio.densidade_demografica + '</td><td class="valor">' + jsonData.estado.densidade_demografica + '</td><td class="valor">' + jsonData.pais.densidade_demografica + '</td></tr>';
		tabDataIPSOHtml += '<tr class="c2"><td>Taxa de alfabetiza&ccedil;&atilde;o </td><td class="valor">' + jsonData.municipio.alfabetizacao + '</td><td class="valor">' + jsonData.estado.alfabetizacao + '</td><td class="valor">' + jsonData.pais.alfabetizacao + '</td></tr>';
		tabDataIPSOHtml += '<tr><td>Renda per capita </td><td class="valor">' + jsonData.municipio.renda_per_capita + '</td><td class="valor">' + jsonData.estado.renda_per_capita + '</td><td class="valor">' + jsonData.pais.renda_per_capita + '</td></tr>';
		tabDataIPSOHtml += '<tr class="c2"><td>Esperan&ccedil;a de vida</td><td class="valor">' + jsonData.municipio.esperanca_de_vida + '</td><td class="valor">' + jsonData.estado.esperanca_de_vida + '</td><td class="valor">' + jsonData.pais.esperanca_de_vida + '</td></tr>';
		tabDataIPSOHtml += '</table>';
		tabDataIPSOHtml += '</div>';
		tabDataIPSOHtml += '<table border="0" cellspacing="0" cellpadding="0" class="borda_inferior"><tr><td><a class="projetos" href="http://www.dataipso.ipso.org.br/tiki-idh.php?municipio=' + jsonData.municipio.codigo + '" target="_blank">Consultar mais indicadores deste munic&iacute;pio no DataIPSO</a></td></tr></table>';
		tabDataIPSOHtml += '</div>';
		tabDataIPSOHtml += '</div>';
	}

	/* Monta a aba do multimidia */

	var tabMultimediaHtml = '';
	if (jsonData.marker.multimedia != 0) {
		tabMultimediaHtml += '<div class="infowindow">';
		tabMultimediaHtml += '<p class="classficacao">' + jsonData.marker.tipo + '</p><h2 title="' + jsonData.marker.cod + '">' + jsonData.marker.nomereduzido + '</h2>';
		if (jsonData.marker.videoUrl != '') {
			tabMultimediaHtml += '<div style="float: left; padding: 4px 12px 0px 0px; margin-right: 6px;">';
			tabMultimediaHtml += '<object height="138" width="151"><param name="movie" value="' + jsonData.marker.videoUrl + '"><param name="wmode" value="transparent"><embed src="' + jsonData.marker.videoUrl + '" type="application/x-shockwave-flash" wmode="transparent" height="138" width="151"></object>';
			tabMultimediaHtml += '</div>';
		}
		tabMultimediaHtml += '<div style="float: left; padding-top:2px; margin-right:-6px; width: 237px;">'
		if (jsonData.marker.imagem1Id != '') {
			tabMultimediaHtml += '<a href="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem1Id + '&w=600" rel="lightbox[mando]" id="image' + jsonData.marker.imagem1Id + '" title="' + jsonData.marker.imagem1Description + '"><img title="' + jsonData.marker.imagem1Description + '" src="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem1Id + '&w=70&h=70&zc=1" ></a>';
			tabMultimediaHtml += '<div class="lightboxDesc image' + jsonData.marker.imagem1Id + '"></div>';
		}
		if (jsonData.marker.imagem2Id != '') {
			tabMultimediaHtml += '<a href="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem2Id + '&w=600" rel="lightbox[mando]" id="image' + jsonData.marker.imagem1Id + '" title="' + jsonData.marker.imagem2Description + '"><img title="' + jsonData.marker.imagem2Description + '" src="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem2Id + '&w=70&h=70&zc=1" ></a>';
			tabMultimediaHtml += '<div class="lightboxDesc image' + jsonData.marker.imagem2Id + '"></div>';
		}
		if (jsonData.marker.imagem3Id != '') {
			tabMultimediaHtml += '<a href="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem3Id + '&w=600" rel="lightbox[mando]" id="image' + jsonData.marker.imagem1Id + '" title="' + jsonData.marker.imagem3Description + '"><img title="' + jsonData.marker.imagem3Description + '" src="includes/phpThumb/phpThumb.php?id=' + jsonData.marker.imagem3Id + '&w=70&h=70&zc=1" ></a>';
			tabMultimediaHtml += '<div class="lightboxDesc image' + jsonData.marker.imagem3Id + '"></div>';
		}
		tabMultimediaHtml += '</div>';
		tabMultimediaHtml += '<div style="float: left; margin-top: 9px; width: 231px;">';
		if (jsonData.marker.audioFile != '') {
			tabMultimediaHtml += '<object height="20" width="200" data="flash/player.swf?mp3=cache/' + jsonData.marker.audioFile + '" type="application/x-shockwave-flash"><param name="movie" value="flash/player.swf?mp3=cache/' + jsonData.marker.audioFile + '" /></object>';
			tabMultimediaHtml += '<p style="margin-top: 3px; margin-left: 4px;">' + jsonData.marker.audioDescription + '</p>';
		}
		if (jsonData.marker.webradioLinks != '')
			tabMultimediaHtml += '<a class="botao wradio" target="_blank" href="' + jsonData.marker.webradioLinks + '">Ou&ccedil;a na webr&aacute;dio</a>';
		tabMultimediaHtml += '</div>';
	}

	var infoTabs = new Array();
	$x = 0;
	infoTabs[$x] = new GInfoWindowTab("Ponto", tabPontoHtml);
	$x++;

	if (tabDescricaoHtml != '') {
		infoTabs[$x] = new GInfoWindowTab("Descrição", tabDescricaoHtml);
		$x++;
	}
	if (tabMultimediaHtml != '') {
		infoTabs[$x] = new GInfoWindowTab("Multimídia", tabMultimediaHtml);
		$x++;
	}
	if (typeof(jsonData.municipio) == 'object'){
		infoTabs[$x] = new GInfoWindowTab("DataIPSO", tabDataIPSOHtml);
		$x++;
	}

    window.location.hash = '#id='+jsonData.marker.cod;

	matPontos[jsonData.marker.id].openInfoWindowTabsHtml(infoTabs);
    GEvent.addListener(matPontos[jsonData.marker.id], "infowindowopen", function(e)
        {
            detalhes_projetos(jsonData.marker.plano)
        });
    Lightbox.init({descriptions: '.lightboxDesc', showControls: true});
}

function detalhes_projetos(str) {
	$$('.planotrabalho').addEvent('click', function() {
    	apaga_elemento('balao_projetos', 100);

    	//var projeto_id = $$(this).getProperty('projeto_id');

    	$('balao_projetos').setHTML("<img id='fecha_balao_projetos' src='http://maps.google.com/intl/en_ALL/mapfiles/iw_close.gif'/>"+str);
    	mostra_elemento('balao_projetos');
    	fecha_balao_projetos();
  	});
}

function fecha_balao_projetos() {
	$('fecha_balao_projetos').addEvent('click', function(){
    	apaga_elemento('balao_projetos');
  	});
}

function balaoProjetosToggle(acao) {
	//AtualizaProjetosPos();
	//var fx = new Fx.Style($$('.balao_projetos'), 'opacity').start(0,1);

  	if ($type(acao) != 'number') {
		if ($('balao_projetos').getStyle('visibility') == 'hidden')
			acao = 1;
		else
			acao = 0;
	}

	if (acao) {
		if ($('balao_projetos').getStyle('visibility') == 'hidden')
			$('balao_projetos')
				.effect('opacity', {duration:400, transition:Fx.Transitions.linear})
				.start(0,1);
	} else {
		if ($('balao_projetos').getStyle('visibility') != 'hidden')
			$('balao_projetos')
				.effect('opacity', {duration:400, transition:Fx.Transitions.linear})
				.start(1,0);
	}
}

function apaga_elemento(id, duracao) {
	if (!duracao) {
		var duracao = 400;
	}
	$(id)
		.effect('opacity', {duration: duracao, transition:Fx.Transitions.linear})
		.start(1,0);
}

function mostra_elemento(id, duracao) {
	if (!duracao) {
		var duracao = 400;
	}
	$(id)
		.effect('opacity', {duration: duracao, transition:Fx.Transitions.linear})
		.start(0,1);
}

function criaLegenda() {
	var html = '';
	html += '<div class="titulo">Legenda</div><ul>';

	if(legenda['ponto'] > 0)
		html += '<li class="ponto bg">Pontos de cultura ('+legenda['ponto']+')</li>';

	if(legenda['pontao'] > 0)
		html += '<li class="pontao bg">Pontões de cultura ('+legenda['pontao']+')</li>';

	if(legenda['rede'] > 0)
		html += '<li class="rede bg">Pontos de redes ('+legenda['rede']+')</li>';

	var idLegenda = new Element('div', {'id':'legendaMapa'})
		.setHTML(html)
		.injectAfter($('map'));

    atualizaPosicaoLegenda();
}
