// fullbiz.js
// Descrição: Arquivo que concentra todas as funcionalidades js básicas do site
// Versão inicial:	2011.02.10.L
// Versão atual:	2011.04.29.L

$(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();
			$(this).find("a:first").addClass("active");
		},function(){
			$(this).find("ul").hide();
			$(this).find("a:first").removeClass("active");
		});
	}
	
	//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',
				timeout:10000,
				pause:	true,
				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(cidade);
		$("#busca #cidade").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");
			}
		});
		$("body, .divbairros .bairros a.x").click(function(){ $("#busca #divbairros .bairros").fadeOut("fast",function(){ $("#busca #divbairros select").show(); if ($(this).hasClass("x")) return false; }); });
		$("#busca #divbairros").click(function(event){ if (!$(event.target).hasClass("x")) event.stopPropagation(); conta_bairros_selecionados(); });
		$("#busca #divbairros .x").click(function(){ $("#busca #divbairros .bairros").fadeOut("fast"); return false; });
	}
	//busca: troca de finalidade. troca automaticamente
	if ($("#busca .finalidade-busca").length>0 && ( ($("#busca select[name=de1]").length>0 && $("#busca select[name=de2]").length>0)) || ($("#busca select[name=valor_venda]").length>0 && $("#busca select[name=valor_locacao]").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 = 'imoveis.php?'+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);
		});
	}
	
	//faz com que o clique em qualquer local de um elemento abra um link dentro dele, seguindo a seguinte ordem: .foto a img, primeiro <a> dentro do elemento
	$(".fullclick").click(function(){
		var lnk = "";
		if ($(this).find(".foto a img").length>0) lnk = $(this).find(".foto:first a img").parents("a").attr("href");
		if (lnk=="" && $(this).find("a").length>0) lnk = $(this).find("a:first").attr("href");
		if (lnk!="") window.location = lnk;
	});
	
	
	//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);
		}
	}
	
	//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
	$("form.validaform").live('submit',function(){
		r = true;
		ereg = /(^[A-Za-z0-9_.-]+@([A-Za-z0-9_.-]+\.)+[A-Za-z]{2,4}$)/;
		embranco = "";
		tot = 0;
		$(this).find(".valida").each(function(){
			campo = $(this);
			if (campo.parent().find("label").length>0) {
				var vlabel = campo.parent().find("label").html().split(":");
				var nome_campo = vlabel[0];
			} else var nome_campo = campo.attr("name");
			if (campo.val()=="") {
				embranco = embranco + '\n-' + nome_campo;
				r = false;
				tot++;
			} else {
				if (campo.hasClass("valida-email")) {
					if(!ereg.test(campo.val())) {
						embranco = embranco + '\n-' + nome_campo + ' (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);
		} else {
			if ($(this).find('input[name=captcha_array]').length>0) {
				var cap = $(this).find('input[name=captcha]').val(); cap = cap.toLowerCase();
				var n = $(this).find('input[name=captcha_num]').val(); n = parseInt(n)+3;
				var v = $(this).find('input[name=captcha_array]').val();
				v = v.split(",");
				if (v[n]!=cap) { r = false; alert('Validação anti-spam inválida.'); }
			}
		}
		
		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').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;
		});
	}
	
	//comparacao
	if ($("#comparacao").length>0) {
		$("#comparacao td:nth-child(4n)").css("border-right","0");
	}
	if ($("a.comparar").length>0) {
		$("a.comparar").click(function(){
			var selecionados = "";
			var is = 0;
			$("input.comparar[type=checkbox]:checked").each(function(){
				selecionados += $(this).val()+",";
				is++;
			});
			if (is<2) {
				alert('Você deve selecionar de 2 a 4 imóveis para comparar.');
			} else {
				if (is<=4) {
					ok = true;
				} else {
					ok = confirm("Você selecionou "+is+" imóveis para comparação, mas apenas os 4 primeiros serão exibidos. Prosseguir?");
				}
				lnk = "compare.php?codigos="+selecionados;
				if (ok) window.location = lnk;
			}
			return false;
		});
	}

	
});


// FUNÇÕES -------------------------------------------

//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 = '';
	if (!single) {
		var str_link = 'fbz/processos.php?p=bairros&cidade='+escape(cidade)+'&selecionados='+selecionados;
	} else {
		var str_link = 'fbz/processos.php?p=bairros&cidade='+escape(cidade)+'&option=true';
	}
	$(local).load(str_link,function(){
		if (local==local_busca) {
			letras_bairros();
			conta_bairros_selecionados(local);
		}
	});
}

//conta quantos bairros estão selecionados e marca eles com a classe 'active', se ese parametro for true;
function conta_bairros_selecionados(local,active) {
	var local_busca = '#busca #divbairros .bairros';
	if (local===undefined) local = local_busca;
	if (active===undefined) active = true;
	if (active) $(local+" label.check").removeClass("active");
	if (active) $(local+" label.check input:checked").parents("label").addClass("active");
	if ($(local).parents("#divbairros").find("select").length>0) {
		var tot_bairros = $(local+" label input:checked").length;
		var txt_select = "Bairros";
		if (tot_bairros>0) txt_select = "Bairros selecionados: "+tot_bairros;
		$("#busca #divbairros select option:selected").html(txt_select);
	}
}

//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"><span></span></p>');
		letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		letras_usadas = "";
		$("#busca #divbairros .bairros label.check").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.letras span").after('<a class="x" href="#">X</a>');
		$("#busca #divbairros .bairros p.letras span").html(letras_links);
		$("#busca #divbairros .bairros p.letras span 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 select[name=de1], #busca select[name=ate1], #busca select[name=valor_venda]").hide();
		$("#busca select[name=de2], #busca select[name=ate2], #busca select[name=valor_locacao]").show();
	} else {
		$("#busca select[name=de2], #busca select[name=ate2], #busca select[name=valor_locacao]").hide();
		$("#busca select[name=de1], #busca select[name=ate1], #busca select[name=valor_venda]").show();
	}
}


