//Este arquivo vai concentrar todas as funcionalidades js básicas do site

$(document).ready(function(){
	
	//faz o wrapper dos elementos de layout exteriores
	$("#container.wrapped").wrapAll('<div id="container_wrapper" />');
	$("#footer.wrapped").wrapAll('<div id="footer_wrapper" />');
	$("#footer.wrapped").css("width",$("#container").css("width")).css("margin","0 auto");
	$("#container.wrapped, #footer.wrapped").removeClass("wrapped");
	
	//adiciona .first e .last no menu
	$("#header #menu>li:first").addClass("first");
	$("#header #menu>li:last").addClass("last");
	
	//submenus
	if ($("#header #menu li ul").length>0) {
		$("#header #menu li ul").each(function(){ $(this).parents("li").addClass("submenu"); });
		$("#header #menu .submenu").hover(function(){
			$(this).find("ul").show();
		},function(){
			$(this).find("ul").hide();
		});
	}
	
	//faz a animação quando tiver #animacao .slides.cycle
	if ($("#animacao .slides.cycle").length>0) {
		$("#animacao .slides .slide").css("height",$("#animacao .slides.cycle").css("height")).css("width",$("#animacao .slides.cycle").css("width"));
		$("#animacao .slides.cycle")
			.after('<div id="anav"></div>')
			.cycle({
				fx:		'scrollHorz',
				pager:	'#anav',
				speed:	1000,
				timeout: 10000,
				pauseOnPagerHover: true				
			});
		$("#animacao .slides.cycle .slide").each(function(){
			if ($(this).find("a.link").length>0) {
				$(this).css("cursor","pointer");
				$(this).click(function(){ window.location = $(this).find("a.link").attr("href"); });
			}
		});
	}
	
	//busca: bairros abertos em uma div
	if ($("#busca #divbairros").length>0) {
		//if ($("#busca #divbairros .bairros").is(":visible")) $("#busca #divbairros .bairros").hide();
		var cidade = $("#busca #cidade").val();
		carrega_bairros();
		$("#busca #cidade, #busca #cidade2").change(function(){ carrega_bairros($(this).val()); });
		$("#busca #divbairros select").click(function(){
			if ($(this).find("option:first").html()!="Aguarde...") {
				$(this).hide();
				$("#busca #divbairros .bairros").fadeIn("fast");
			}
		});
		//$(document).click(function(){ $("#busca #divbairros .bairros").fadeOut("fast",function(){ $("#busca #divbairros select").show(); }); });
		//$("#busca #divbairros").click(function(event){ event.stopPropagation(); });
	}
	
	//busca: troca de finalidade. troca automaticamente
	if ($("#busca .finalidade-busca").length>0 && $("#busca select[name=de1]").length>0 && $("#busca select[name=de2]").length>0) {
		troca_finalidade();
		$("#busca .finalidade-busca").change(function(){
			troca_finalidade();
		});
	}
	
	
	//busca: select com um bairro só
	if ($("#busca .select-bairro").length>0) {
		$("#busca #cidade").change(function(){ carrega_bairros($(this).val(),'#busca .select-bairro',true); });
	}
	
	//bairros no alerta de imóveis
	if ($("#bairros-alerta").length>0) {
		var msg_padrao = $("#bairros-alerta").html();
		$("#cidade-alerta").change(function(){
			$("#bairros-alerta").html("Carregando...");
			var cidade = $(this).val();
			if (cidade=="") $("#bairros-alerta").html(msg_padrao); else carrega_bairros(cidade,"#bairros-alerta");
		});
	}
	
	//labelify
	if ($("input.labelify").length>0) {
		$("input.labelify").labelify();
	}
	
	//newsletter
	if ($("div#newsletter").length>0) {
		$("div#newsletter form").submit(function(){
			ereg = /(^[A-Za-z0-9_.-]+@([A-Za-z0-9_.-]+\.)+[A-Za-z]{2,4}$)/;
			var email = $(this).find("#newsletter-email").val();
			var nome = "";
			if (!ereg.test($(this).find("#newsletter-email").val())) {
				alert("Informe um e-mail válido.");
			} else {
				var ok = true;
				nome = $(this).find("#newsletter-nome").val();
				if ($(this).find("#newsletter-nome").length>0) {
					if ($(this).find("#newsletter-nome").val()=="") {
						ok = false;
						alert('Informe o seu nome.');
					}
				}
				if (ok) {
					var lnk = $(this).attr("action");
					$.get(lnk, {email:email, nome:nome, p:'newsletter'},function(data){
						alert(data);
					});
				}
			}
			return false;
		});
	}

	//favoritos
	if ($("a.fav").length>0||$(".numfav").length>0) {
		$(".numfav").load('fbz/processos.php?fav=count');
		$("a.fav").click(function(event){
			var codigo = $(this).attr("rel");
			var fav = $(this);
			if ($(this).hasClass("favon")) {
				$.get("fbz/processos.php?fav=remove&codigo="+codigo,
					function(data){ fav.removeClass("favon").html("Adicionar aos favoritos"); $(".numfav").load('fbz/processos.php?fav=count'); }
				);
			} else {
				 $.get("fbz/processos.php?fav=add&codigo="+codigo,				
					function(data){ fav.addClass("favon").html("Remover dos favoritos"); $(".numfav").load('fbz/processos.php?fav=count'); }
				);
			}
			event.stopPropagation();
			return false;
		});
	}
	
	//select de ordenação
	if ($("#ordenacao-select").length>0) {
		$("#ordenacao-select").change(function(){
			if ($(this).val()!="") {
				var querystring = $("#ordenacao-querystring").val();
				window.location = '?'+querystring+'&ordem='+$(this).val();
			}
		});
	}
	
	//fotos do imovel quando tem a classe slider
	//esta função vai pegar a listagem simples de fotos e montar todo html necessario para o slider, calculando o tamanho automaticamente. lindo...
	if ($("div.detalhes-fotos .slider").length>0) {
		$("div.detalhes-fotos .slider").each(function(){
			//monta o html
			$(this).removeClass("slider");
			$(this).wrapAll('<div class="wrapper slider" />');
			var wrapper = $(this).parents(".wrapper");
			wrapper.find(".fotos").before('<a href="#" class="btn btnLeft prevPage">P</a>').after('<a href="#" class="btn btnRight nextPage">N</a>');
			//calcula os tamanhos dos objetos
			var h = wrapper.height();
			var w = wrapper.width();
			wrapper.find(".btn").height(h);
			wrapper.find(".fotos, .foto, .fotos .foto img").height(h);
			var btnw = wrapper.find(".btn:first").width()*2;
			if (wrapper.find(".btn:first").css("position")=="absolute") btnw = 0;
			var scrollw = w-btnw-4;
			wrapper.find(".fotos").width(scrollw);
			var fotow = ((scrollw/5)-2);
			wrapper.find(".foto, .foto img").width(fotow);
			//ve se é necessário rodar o cycle
			if (wrapper.find(".fotos .foto").length>5) {
				//prepara os sets dos slides (cycle)
				var lis = wrapper.find(".fotos .foto");
				for (var i = 0; i < lis.length; i+=5) { lis.slice(i, i+5).wrapAll('<div class="set"></div>'); }
				wrapper.find(".set").width(scrollw).height(h);
				//inicia o cycle
				wrapper.find(".fotos").cycle({
					fx:		'scrollHorz',
					prev:	$(this).parents(".wrapper").find(".btnLeft"),
					next:	$(this).parents(".wrapper").find(".btnRight"),
					timeout:0
				});
			} else {
				//se nao precisa usar o cycle, invalida as setas
				wrapper.find(".btn").click(function(){ return false; });
			}
		});
	}
	
	//fotos do imovel quando tem a classe normal
	if ($("div.detalhes-fotos .normal").length>0) {
		$("div.detalhes-fotos .normal").each(function(){
			var w = $(this).width();
			var fotow = ((w/6)-2);
			var fotoh = (3*fotow)/4;
			$(this).find(".foto, .foto img").width(fotow).height(fotoh);
		});
	}
	
	//chama o lightbox nas fotos do imovel
	if ($("div.detalhes-fotos .foto").length>0) {
		$("div.detalhes-fotos").each(function(){
			$(this).find(".fotos .foto a").lightBox();
		});
		$("a.open-first-lightbox").click(function(){
			$("div.detalhes-fotos:first .fotos a:first").click();
			return false;
		});
	}
	
	//formulario da pagina de detalhes. corrigir tamanhos e validação
	if ($("#detalhes-form").length>0) {
		//ajuste dos tamanhos
		if ($("#detalhes-form").hasClass("auto-size")) {
			var df = $("#detalhes-form");
			var w = df.width()-2;
			var w4 = (w/4)-9;
			df.find("fieldset").width(w4);
			var wfield = w4-6;
			df.find("fieldset .text").width(wfield);
			w = w-8;
			df.find("fieldset.big").width(w);
			df.find("fieldset.big textarea").width(w-4);
		}
		//validação
		$("#detalhes-form form").submit(function(){
			var ok = true;
			var ereg = /(^[A-Za-z0-9_.-]+@([A-Za-z0-9_]+\.)+[A-Za-z]{2,4}$)/; 
			var f = $(this);
			var err = "";
			if (f.find("input[name=nome]").val()=="") err = err+"Informe o seu nome\n";
			if (!ereg.test(f.find("input[name=email]").val())) err = err+"Informe um e-mail válido\n";
			if (f.find("input[name=telefone]").val()=="") err = err+"Informe o seu e-telefone\n";
			if (f.find("textarea[name=texto]").val()=="") err = err+"Digite a sua mensagem\n";
			if (f.find("input[name=captcha]").val()=="") err = err+"Digite o código Anti-Spam\n";
			if (err!="") { alert(err); ok = false; }
			return ok;
		});
	}
	
	//ajusta largura do mapa
	if ($("#detalhes-localizacao #map").length>0) {
		var w = $("#detalhes-localizacao").width()-10;
		$("#detalhes-localizacao #map").width(w);
	}
	
	//carrega mapas
	if ($("div.load-gmap").length>0) {
		$("div.load-gmap").each(function(){
			var coords = $(this).find("input.gmaps-coord").val();
			var tipo = $(this).find("input.gmaps-tipo").val();
			var cor = $(this).find("input.gmaps-cor").val();
			var mapid = $(this).attr("id");
			$(this).html("Carregando mapa...");
			setTimeout("mapa_imovel("+coords+",'"+tipo+"','"+cor+"',true,true,'"+mapid+"')",1800);
		});
	}
	
	//clique no botão imprimir
	$("a.open-print").click(function(){
		var lnk = $(this).attr("href");
		window.open(lnk,'print','width=700,height=600,scrollbars=yes');
		return false;
	});
	
	//ligamos para você
	if ($("a.open-ligamos").length>0) {
		$("body").append('<div id="frame-ligamos">');
		var url_retorno = $("#url-retorno").val();
		$("#frame-ligamos").load("inc/php/ligamos.php",function(){
			$(this).find("input[name=url_retorno]").val(url_retorno);
			$("#ligamos").dialog({
				autoOpen: false,
				bgiframe: true,
				minHeight: 140,
				modal: true,
				width: 330,
				resizable: false
			});
		});
		$("a.open-ligamos").click(function(){
			$("#ligamos").dialog('open');
			return false;
		});
	}
	
	//indicar este imovel
	if ($("a.open-indicar").length>0) {
		$("body").append('<div id="frame-indicar">');
		var codigo = $("#codigo-imovel").val();
		var url_retorno = $("#url-retorno").val();
		$("#frame-indicar").load("inc/php/indicar.php",function(){
			$(this).find("input[name=codigo]").val(codigo);
			$(this).find("input[name=url_retorno]").val(url_retorno);
			$("#indicar").dialog({
				autoOpen: false,
				bgiframe: true,
				minHeight: 140,
				modal: true,
				width: 330,
				resizable: false
			});
		});
		$("a.open-indicar").click(function(){
			if ($(this).attr("rel")!="") {
				codigo = $(this).attr("rel");
				$("#indicar input[name=codigo]").val(codigo);
			}
			$("#indicar").dialog('open');
			return false;
		});
	}
	
	//formularios
	if ($("div.formulario").length>0) {
		$("div.formulario.auto-size").each(function(){
			var f = $(this);
			//separa os blocos pequenos em linhas
			var lis = f.find(".linha.pequena");
			for (var i = 0; i < lis.length; i+=3) { lis.slice(i, i+3).wrapAll('<div class="base" />'); }
			var w = $(this).width();
			var blocow = (w/3)-10;
			var inputw = blocow-6;
			f.find(".linha.pequena").width(blocow);
			f.find(".linha.pequena .text").width(inputw);
			f.find(".linha.grande").width(w-10);
			f.find(".linha.grande .text").width(w-14);
		});
	}
	
	//valida fotm
	if ($("form.validaform").length>0) {
		$("form.validaform").submit(function(){
			r = true;
			ereg = /(^[A-Za-z0-9_.-]+@([A-Za-z0-9_.-]+\.)+[A-Za-z]{2,4}$)/;
			embranco = "";
			tot = 0;
			$(this).find(".linha").each(function(){
				lab = $(this).find("label").html();
				if (lab==null) lab = "";
				if (lab!="") {
					if (lab.indexOf(":")>0) {
						vlab = lab.split(":");
						if (vlab[1]=="*" || vlab[1]==" *" || vlab[1]==" * ") {
							campo = $(this).find(".text");
							if (campo.val()=="") {
								embranco = embranco + '\n-' + vlab[0];
								r = false;
								tot++;
							} else {
								if (lab.indexOf("mail:")>0 || lab.indexOf("email")>0 || lab.indexOf("E-mail:")>0) {
									if(!ereg.test(campo.val())) {
										embranco = embranco + '\n-' + vlab[0] + ' (deve ser um email válido)';
										r = false;
										tot++;
									}
								}
							}
						}
					}
				}
			});
			if (!r) {
				if (tot==1) s = ""; else s = "s";
				msg = 'Por favor, preencha o'+s+' seguinte'+s+' campo'+s+':\n' + embranco;
				alert(msg);
			}
			return r;
		});
	}
	
	//"voltar" nos Hs
	$("h1.voltar, h2.voltar").each(function(){
		var h = $(this).html();
		$(this).html('<span>'+h+'</span><a href="#" onclick="history.go(-1);return false;" class="voltar">&laquo; Voltar</a>');
	});
	
	//"topo" nos Hs
	$("h3.topo").each(function(){
		var h = $(this).html();
		$(this).html('<span>'+h+'</span><a href="#" class="topo">Topo ^</a>');
	});
	
	//rolagem até o topo
	$('h3 a.topo').live('click',function(){
		$('html, body').animate({scrollTop:0}, 1000);
		return false;
	});
	
	//tooltips
	if ($(".tooltip").length>0) {
		$(".tooltip").tooltip({ 
			track: true, 
			delay: 0, 
			showURL: false, 
			showBody: " - ", 
			fade: 250 
		});
	}
	
	//twitter
	if ($("#tweets").length>0 && $("#twitter-usuario").length>0) {
		var usuario = $("#twitter-usuario").val();
		var nome = $("#twitter-nome").val();
		var num = $("#twitter-num").val();
		$("#tweets").getTwitter({
			userName: usuario,
			numTweets: num,
			loaderText: "Aguarde, carregando...",
			slideIn: false,
			showHeading: false,
			showProfileLink: false,
			showTimestamp: false,
			beforeEachTweet: nome
		});
	}
	
	//troca de lingua
	if ($("a.btn-translate").length>0) {
		$("a.btn-translate").click(function(){
			if ($(this).hasClass("pt")) {
				if ($("#url-retorno").length>0) url_retorno = $("#url-retorno").val(); else url_retorno = "./";
				$.get("fbz/processos.php", {lingua:'',p:'lingua'},function(data){ window.location = url_retorno; });
			} else {
				var lingua = $(this).find("input.lingua").val();
				var elements = $(this).find("input.elements").val();
				var imgs = $(this).find("input.imgs").val();
				if (!$("body").hasClass("traduzido-"+lingua)) { //verifica se ja nao está nesse lingua
					//remove todas as classes de tradução diferentes dessa no body
					$("a.btn-translate").each(function(){ $("body").removeClass("traduzido"); $("body").removeClass("traduzido-"+$(this).find("input.lingua").val()); })
					//coloca classe no body para identificar
					$("body").addClass("traduzido traduzido-"+lingua);
					//traduz
					$(elements).translate(lingua);
					//imagens
					if (imgs!="") {
						$(imgs).each(function(){
							var sr = $(this).attr("src");
							var nsr = sr;
							nsr = nsr.replace(".jpg", "_"+lingua+".jpg"); nsr = nsr.replace(".JPG", "_"+lingua+".JPG");
							nsr = nsr.replace(".gif", "_"+lingua+".gif"); nsr = nsr.replace(".GIF", "_"+lingua+".GIF");
							nsr = nsr.replace(".png", "_"+lingua+".png"); nsr = nsr.replace(".PNG", "_"+lingua+".PNG");
							$(this).attr("src",nsr);
						});
					}
					//grava uma sessão com a lingua selecionada
					$.get("fbz/processos.php", {lingua:lingua,p:'lingua'},function(data){ $("a.btn-translate").removeClass("active"); $("a.btn-translate."+lingua).addClass("active");  });
				}
			}
			return false;
		});
	}
	
	//aol
	if ($("a.open-aol").length>0) {
		 $("a.open-aol").click(function(){
			window.open('aol/chat/chat1.php','aol_atendimento_online','height=473,width=377');
			return false;
		});
	}
	
});


// FUNÇÕES -------------------------------------------

//carrega o mapa do imóvel
function mapa_imovel(l1,l2,tipo,cor,icone,controles,mapid) {
	if ( tipo === undefined ) tipo = 'ponto';
	if ( cor === undefined ) cor = '#DA251D';
	if ( icone === undefined ) icone = '';
	if ( controles === undefined ) controles = true;
	if ( mapid === undefined ) mapid = "map";
	if ($("#"+mapid).length>0) {
		if (GBrowserIsCompatible()) {
			var map = new GMap2(document.getElementById(mapid));
			map.setCenter(new GLatLng(l1,l2), 15);
			var latlng = new GLatLng(l1,l2);
			if (controles) {
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());
			}
			if (tipo=='circulo') {
				var marcador = GPolygon.Circle(latlng, 500,cor,2,1,"#000",0.2)
				map.addOverlay(marcador);
			} else {
				if (icone!='') {
					var icone = new GIcon(G_DEFAULT_ICON);
					icone.image = "img/design/gmaps_icon.png";
					icone.iconSize = new GSize(28, 31);
					markerOptions = { icon:icone };
					map.addOverlay(new GMarker(latlng, markerOptions));
				} else {
					map.addOverlay(new GMarker(latlng));
				}
			}
		}
	}
}

//carrega os bairros
function carrega_bairros(cidade,local,single) {
	var local_busca = '#busca #divbairros .bairros';
	if (cidade===undefined) cidade = '';
	if (local===undefined) local = local_busca;
	if (single===undefined) single = false;
	if (local==local_busca) $("#busca #divbairros select option:selected").html("Aguarde...");
	if (local==local_busca) var selecionados = $("#busca #divbairros #bairros-selecionados").val(); else var selecionados = '';
	var finalidade = $("#busca .finalidade-busca:checked").val();
	if (!single) {
		var str_link = 'fbz/processos.php?p=bairros&finalidade='+finalidade+'&cidade='+escape(cidade)+'&selecionados='+selecionados;
	} else {
		var str_link = 'fbz/processos.php?p=bairros&finalidade='+finalidade+'&cidade='+escape(cidade)+'&option=true';
	}
	$(local).load(str_link,function(){
		if (local==local_busca) {
			letras_bairros();
			$("#busca #divbairros select option:selected").html("Bairros");
		}
	});
}

//faz o menu de letras na div dos bairros
function letras_bairros() {
	if($.browser.msie && $.browser.version=="6.0") {
		$("#busca #divbairros .bairros p").hide();
	} else {
		$("#busca #divbairros .bairros").prepend('<p class="letras"></p>');
		letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		letras_usadas = "";
		$("#busca #divbairros .bairros label").each(function(){
			str = $(this).html();
			v = str.split("> ");
			nome_bairro = v[1];
			letras_usadas += nome_bairro.substr(0,1);
		});
		letras_links = '<a href="#" class="todos">Todos</a>&nbsp;';
		for (i=0;i<=letras.length-1;i++) {
			tem = letras_usadas.indexOf(letras.substr(i,1));
			if (tem>=0) {
				letras_links += '<a href="#" class="letra">'+letras.substr(i,1)+'</a>';
			} else {
				letras_links += letras.substr(i,1);
			}
		}
		$("#busca #divbairros .bairros p").html(letras_links);
		$("#busca #divbairros .bairros p a.letra").click(function(){
			letra = $(this).html();
			$("#busca #divbairros .bairros label").each(function(){
				str = $(this).html();
				v = str.split("> ");
				nome_bairro = v[1];
				bletra = nome_bairro.substr(0,1);
				if (bletra==letra) $(this).show(); else $(this).hide();
			});
			return false;
		});
		$("#busca #divbairros .bairros p a.todos").click(function(){
			$("#busca #divbairros .bairros label").show();
			return false;
		});
	}
}

//faz a troca dos campos de valores quando muda entre venda/locacao
//detecta automaticamente se é radio ou select
function troca_finalidade() {
	var obj = $("#busca .finalidade-busca:first");
	if (obj.is("input[type=radio]")) {
		var f = $("#busca .finalidade-busca:checked").val();
	} else {
		var f = obj.val();
	}
	if (f=='locacao') {
		$("#busca form").attr("action","imoveis2.php");
		$("#busca select[name=de1], #busca select[name=ate1], #busca select[name=valor_venda], #busca #cidade, #busca #tipo").hide();
		$("#busca select[name=de2], #busca select[name=ate2], #busca select[name=valor_locacao], #busca #cidade2, #busca #tipo2").show();
		carrega_bairros($("#busca #cidade2").val());
	} else {
		$("#busca form").attr("action","imoveis.php");
		$("#busca select[name=de2], #busca select[name=ate2], #busca select[name=valor_locacao], #busca #cidade2, #busca #tipo2").hide();
		$("#busca select[name=de1], #busca select[name=ate1], #busca select[name=valor_venda], #busca #cidade, #busca #tipo").show();
		carrega_bairros($("#busca #cidade").val());
	}
}


