var mapa;
var marcadores_mapa = [];
var bounds;
var movimento;
function carregaMapa(){
	
	//verifica se o browser é compatível com o Google Maps
	if (GBrowserIsCompatible()) {
		
		//cria um nova instância do GMap
		mapa = new GMap2(document.getElementById("mapa"));	
		
		//seta o bounds para o zoomToAll
		bounds = new GLatLngBounds();

		//seta a interface padrão do mapa
		mapa.setUIToDefault();
					
		//mostra a miniatura do mapa
		mapa.addControl(new GOverviewMapControl());	
		
		//verifica se possui apenas um marcados
		if ($(marcadores).length==1) {
			var unico = true;
		}
				
		//laço para percorrer os marcadores
		$(marcadores).each(function(i, marcador_json){
			
			//verifica se é o primeiro marcador para centralizar o mapa
			mapa.setCenter(new GLatLng(marcador_json.empreendimento_mapa_latitude, marcador_json.empreendimento_mapa_longitude), parseInt(marcador_json.empreendimento_mapa_zoom));
			
			//chama a função para carregar o novo marcador no mapa
			carregaMarcador(i, marcador_json, unico);
			
		});
		
		//mostra todos os marcadores
		zoomToAll();

	} else {
		alert("Navegador incompatível com uso do Google Maps, por isso o cadastro não funcionará corretamente.");
	}
}

$(window).unload(function(){
	GUnload(); 
});

//função que cria um marcador ao mapa
function carregaMarcador(i, marcador_json, unico) {
	
	//verifica se o browser não é o IE6 ou menor
	if (!$.browser.msie || $.browser.version>=7) {
		
		var caminho_imagem;
		if (marcador_json.empreendimento_categoria_nome.indexOf("Breve")!=-1) {
			caminho_imagem = "breve_lancamento.png";
		} else if (marcador_json.empreendimento_categoria_nome.indexOf("Lançamento")!=-1) {
			caminho_imagem = "lancamento.png";
		} else if (marcador_json.empreendimento_categoria_nome.indexOf("Pronto")!=-1) {
			caminho_imagem = "pronto.png";
		} else {
			caminho_imagem = "entregue.png";
		}		
		
		//cria o novo marcador
		var baseIcone = new GIcon();
			baseIcone.image = "recursos/img/marcadores/"+caminho_imagem;
			baseIcone.shadow = "http://www.google.com/mapfiles/shadow50.png";
			baseIcone.iconSize = new GSize(24, 31);
			baseIcone.shadowSize = new GSize(0, 0);
			baseIcone.iconAnchor = new GPoint(12, 31);
			baseIcone.infoWindowAnchor = new GPoint(24, 22);
			baseIcone.infoShadowAnchor = new GPoint(18, 25);
			
	} else {
		//se for o IE6, cria o marcador sem personalização
		var baseIcone;
	}
	
	//cria o objeto marcador
	var marcador = new GMarker(new GLatLng(marcador_json.empreendimento_mapa_latitude, marcador_json.empreendimento_mapa_longitude), {icon: baseIcone, draggable:false, autoPan:true });
	
	//setando as propriedades
	marcador.cidade = marcador_json.empreendimento_cidade_nome;
	marcador.cidade_id = marcador_json.empreendimento_cidade_id;
	marcador.categoria = marcador_json.empreendimento_categoria_nome;
	marcador.categoria_id = marcador_json.empreendimento_categoria_id;
	marcador.latitude = marcador_json.empreendimento_mapa_latitude;
	marcador.longitude = marcador_json.empreendimento_mapa_longitude;
	
	//extende o bounds
	bounds.extend(new GLatLng(marcador_json.empreendimento_mapa_latitude, marcador_json.empreendimento_mapa_longitude));

	//evento de click do marcador
	GEvent.addListener(marcador, "click", function() {
												   
		if (marcador_json.empreendimento_cep) {
			
			marcador_json.empreendimento_cep = "CEP: "+marcador_json.empreendimento_cep+", ";
				
		}
		
		//criando o conteúdo d infoWindow
		var conteudoInformacoes = $("<div />")
										.addClass("caixa_informacoes");
			if (marcador_json.empreendimento_logomarca)
					$(conteudoInformacoes).append($("<img />").attr({
													"src": "absoluto/recursos/php/crop.php?imagem=../../midia/imagens/empreendimentos/arquivos_"+marcador_json.empreendimento_id+"/"+marcador_json.empreendimento_logomarca+"&modo=resize&size=200x200",
													"alt":marcador_json.empreendimento_nome,
													"width":"200",
													"height":"75"
												}));
			$(conteudoInformacoes)
					.append($("<h1 />").html(marcador_json.empreendimento_nome))
					.append($("<h2 />").html("Categoria: "+marcador_json.empreendimento_categoria_nome))
					.append($("<p />").html("<span class='endereco'>"+marcador_json.empreendimento_endereco+", "+marcador_json.empreendimento_numero+"</span> - "+marcador_json.empreendimento_bairro))
					.append($("<p />").html(marcador_json.empreendimento_cep+"<span class='cidade'>"+marcador_json.empreendimento_cidade_nome+"</span> - "+marcador_json.empreendimento_estado_nome))
					.append($("<h2 />").html("Televendas"))
					.append($("<p />").html("Curitiba - PR: (41) 3091-5200"))
					.append($("<p />").html("Camboriú - SC: (47) 3363-7900"))
					.append($("<hr />"))
					.append($("<div />")
							.css("height", "100px")
							.addClass("direcoes")
							.append($("<div />")
										.append("<h2>Como chegar:</h2>")
										.append($("<a />").attr("href", "javascript:void(0)").attr("onclick", "ate_aqui("+i+",this)").html("Até aqui"))
										.append(" - ")
										.append($("<a />").attr("href", "javascript:void(0)").attr("onclick", "daqui("+i+",this)").html("Daqui"))))
							.append("<br clear='all' />");
												
		//<form action="http://maps.google.com/maps" method="get" target="_blank"><input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br><INPUT value="Veja Instruções" TYPE="SUBMIT"><input type="hidden" name="daddr" value="' + name + '"/>
										
		
		//transforma o objeto conteudoInformacoes em string
		conteudoInformacoes = $("<div />").append($(conteudoInformacoes)).remove().html();
		
		//abre a infoWindow alterando seu HTML
		this.openInfoWindowHtml(conteudoInformacoes);
		
	});
	
	if (unico) {
		GEvent.trigger(marcador, "click");
	}
	
	//define o marcador com o índice i
	marcadores_mapa[i] = marcador;
	
	//adiciona o marcador ao mapa
	mapa.addOverlay(marcador);
}
function ate_aqui(i, botao){
	
	var caixa_antiga = $(botao).parent().parent().parent();
	
	var endereco = $(botao).parent().parent().parent().find(".endereco:first").text();
	
	var cidade = $(botao).parent().parent().parent().find(".cidade:first").text();
	
	$(caixa_antiga).find("div.direcoes").remove();
	
	$(caixa_antiga).addClass("caixa_informacoes").find("br[clear='all']").before($("<div />")
			.css("height", "140px")
			.addClass("direcoes")
			.append("<h2>Como chegar:</h2>")
			.append("<strong>Até aqui</strong> - ")
			.append($("<a />").attr("href", "javascript:void(0)").attr("onclick", "daqui("+i+",this)").html("Daqui"))
			.append($("<form />")
						.attr({
							"action": "http://maps.google.com/maps",
							"method":"get",
							"target":"_blank"
						})
						.append($("<label for='saddr' />").html("Endereço de partida"))
						.append($("<input name='saddr' id='saddr'/>"))
						.append($("<input name='daddr' id='daddr' type='hidden'/>").val(endereco+" - "+cidade))
						.append($("<input />").val("Ir").attr("type", "submit").addClass("botao"))));
		
	marcadores_mapa[i].openInfoWindowHtml($("<div />").append($(caixa_antiga)).remove().html());	
	
}
function daqui(i, botao){
	
	var caixa_antiga = $(botao).parent().parent().parent();
	
	var endereco = $(botao).parent().parent().parent().find(".endereco:first").text();
	
	var cidade = $(botao).parent().parent().parent().find(".cidade:first").text();
	
	$(caixa_antiga).find("div.direcoes").remove();
	
	$(caixa_antiga).addClass("caixa_informacoes").find("br[clear='all']").before($("<div />")
			.css("height", "140px")
			.addClass("direcoes")
			.append("<h2>Como chegar:</h2>")
			.append($("<a />").attr("href", "javascript:void(0)").attr("onclick", "ate_aqui("+i+",this)").html("Até aqui"))
			.append(" - <strong>Daqui</strong>")
			.append($("<form />")
						.attr({
							"action": "http://maps.google.com/maps",
							"method":"get",
							"target":"_blank"
						})
						.append($("<label for='saddr' />").html("Endereço de chegada"))
						.append($("<input name='daddr' id='daddr'/>"))
						.append($("<input name='saddr' id='saddr' type='hidden'/>").val(endereco+" - "+cidade))
						.append($("<input />").val("Ir").attr("type", "submit").addClass("botao"))));
		
	marcadores_mapa[i].openInfoWindowHtml($("<div />").append($(caixa_antiga)).remove().html());
		
}
//zoom para mostrar todos os marcados
function zoomToAll() {
	var novoZoom = (mapa.getBoundsZoomLevel(bounds)<14) ? mapa.getBoundsZoomLevel(bounds) : 14;
	mapa.setCenter(bounds.getCenter(), novoZoom);
}

$(document).ready(function(){
						   
	//função para filtrar os marcadores por cidades
	$("#form-busca.mapa_filtro #filtro-select-cidade, #form-busca.mapa_filtro #filtro-select-categoria").change(function(){		
		filtrarEmpreendimentos($(this));
	});
	$("#form-busca.mapa_filtro #filtro-bt").click(function(){
		$("#form-busca.mapa_filtro #filtro-select-cidade").val("");
		$("#form-busca.mapa_filtro #filtro-select-categoria").val("");		
		filtrarEmpreendimentos($(this));
	});
	
});

//função para filtrar os empreendimentos
function filtrarEmpreendimentos(objeto){
	
	var cidadeEscolhida = $("#form-busca.mapa_filtro #filtro-select-cidade").find("option:selected").text();		
	var cidadeEscolhidaId = $("#form-busca.mapa_filtro #filtro-select-cidade").find("option:selected").val();
	var categoriaEscolhida = $("#form-busca.mapa_filtro #filtro-select-categoria").find("option:selected").text();
	var categoriaEscolhidaId = $("#form-busca.mapa_filtro #filtro-select-categoria").find("option:selected").val();
	
	//define o movimento como false
	movimento = false;
	//limpa o bounds
	bounds = null;
	//seta o bounds para o zoomToAll
	bounds = new GLatLngBounds();
	
	if (cidadeEscolhidaId!="" || categoriaEscolhidaId!="") {			
		$(marcadores_mapa).each(function(i, marcador){
			if ((marcador.cidade==cidadeEscolhida && marcador.categoria==categoriaEscolhida) || (marcador.cidade==cidadeEscolhida && categoriaEscolhidaId=="") || (marcador.categoria==categoriaEscolhida && cidadeEscolhidaId=="")) {				
				//mostra o marcador
				marcadores_mapa[i].show();				
				//define o movimento como true
				movimento = true;				
				//extende o bounds
				bounds.extend(new GLatLng(marcador.latitude, marcador.longitude));
				
			} else {				
				marcadores_mapa[i].hide();
			}
		});			
	} else {
		$(marcadores_mapa).each(function(i, marcador){
			//mostra o marcador
			marcadores_mapa[i].show();				
			//define o movimento como true
			movimento = true;				
			//extende o bounds
			bounds.extend(new GLatLng(marcador.latitude, marcador.longitude));							 
		});	
	}
	
	if ($(objeto).attr("id")=="filtro-select-cidade") {
		
		$("#filtro-select-categoria option:not(:first)").remove();		
		
		$(categorias).each(function(i, categoria){
									
			if (cidadeEscolhidaId) {			
				var criacao = false;				
				$(marcadores_mapa).each(function(i, marcador){						
					if (marcador.categoria_id==categoria.categoria_id  && marcador.cidade_id==cidadeEscolhidaId && criacao===false) {						
						//define o movimento como true
						criacao = true;				
						//extende o bounds
						$("#filtro-select-categoria").append($("<option />").val(categoria.categoria_id).html(categoria.categoria_nome));
					}					
				});	
			} else {
				$("#filtro-select-categoria").append($("<option />").val(categoria.categoria_id).html(categoria.categoria_nome));
			}
			
		});		
	}
	
	//fecha a janela de informações do mapa
  	mapa.closeInfoWindow();
	
	//mostra todos os empreendimentos encontrados
	if (movimento) {
  		zoomToAll();
	}
	
}

/*//função para carrega os mapas das unidades
function carregaMapaUnidades() {
	//verifica se o browser é compatível com o Google Maps
	if (GBrowserIsCompatible()) {
		
		//laço para percorrer os marcadores
		$(unidades).each(function(i, unidade_json){	
								  
				//$("#mapa_"+i).html("teste "+i);
				  
				//cria um nova instância do GMap
				mapaUnidade = new GMap2(document.getElementById("mapa_"+i));	
				
				//verifica se é o primeiro marcador para centralizar o mapa
				mapaUnidade.setCenter(new GLatLng(unidade_json.unidade_mapa_latitude, unidade_json.unidade_mapa_longitude), parseInt(unidade_json.unidade_mapa_zoom));
				
				//chama a função para carregar o novo marcador no mapa
				carregaMarcadorUnidade(i, unidade_json, mapaUnidade);
				
				//seta a interface padrão do mapa
				//mapaUnidade.setUIToDefault();
			
		});

	} else {
		alert("Navegador incompatível com uso do Google Maps, por isso o mapa não funcionará corretamente.");
	}
}
function carregaMarcadorUnidade(i, unidade_json, mapaUnidade){
	

	//cria o objeto marcador
	var marcador = new GMarker(new GLatLng(unidade_json.unidade_mapa_latitude, unidade_json.unidade_mapa_longitude));

	
	//adiciona o marcador ao mapa
	mapaUnidade.addOverlay(marcador);
	
}*/