/**
* OBJETO JSON: Armazenará os Argumentos passados na URL de solicitação da página
* Por Default o proxy está configurado como PHP
* Possiveis opções para o MOTOR de PROXY:
*  php	: Para servidores que executam PHP
*  asp	: Para servidores que executam ASP
*  aspx	: Para servidores que executam Dot.Net
*/
var ARGS = {TIPOPROXY:'php'};
/**
* Instala Evento para inicializar a carga dos SELECT's após a página ser lida
*/
$(document).ready(function() { 
	getArgumentos(window.location.search.substring(1));
	// Inicia a carga dos combos
	carregaContrato(ARGS.ctr);		// procure a função carregaContrato Abaixo 
	// Instala os tooltips
	$('#pesquisar').bind('click',function() {
		pesquisar();
		});
});
/**
* Varre os Argumentos enviados pela URL e cria um Objeto JSON 
*/
function getArgumentos(args) {
	var myArgs = new Array();
	if (!args) return myArgs; // return empty object
	var Pairs = args.split(/[;&]/);
	for ( var i = 0; i < Pairs.length; i++ ) {
		var KeyVal = Pairs[i].split('=');
		if ( ! KeyVal || KeyVal.length != 2 ) continue;
		var key = unescape( KeyVal[0] );
		var val = unescape( KeyVal[1] );
		val = val.replace(/\+/g, ' ');
		ARGS[key] = val;
	}
}
/**
* Carrega SELECT de Contratos [Venda, Locação, Empreendimento]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corretror/proxy/index.php?url=contratos.csp&ctr=[1|2|3]  
	OBS: | significa OU (OR), ou seja, uma destas opções [1|2|3] significa: 1 OU 2 OU 3
*
* Parâmetros
* ctrPadrao		: TEXTO
*					propriedade key do XML de contratos, indicando qual deverão estar selecionada no SELECT
*/
function carregaContrato(ctrPadrao) {
	var myCtr = (typeof ctrPadrao == "undefined") ? getValorPadrao('ctr') : ctrPadrao;	// Obtem o argumento ctr para passar para o xml
	// Desanexa os evento change para não haver evento na carga
	$('#ctr,#tipo,#cidade,#regiao,#faixavalor,#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','#f0f0f0');
	// Carrega o Select
	// funcao para carga do select carregaCombo
	// funcao para depois que carregar o select carregaTipoImovel.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('contratos.csp', {ctr:myCtr}, 'ctr', 'contrato', carregaCombo, function() {
			$('#ctr').attr('disabled',false).css('background-color','');
			carregaTipoImovel( $('#ctr').val() );
			if($('#ctr').children(":last").text() == 'Empreendimento'){
				$('#ctr').children(":last").remove();
				}
		});
	// Reanexa os eventos change para poder recarregar os selects abaixo ao trocar o conteudo do select
	$('#ctr').bind('change',function() {
			carregaTipoImovel( $('#ctr').val() );
		});
}
/**
* Carrega SELECT de Tipo de Imóvel [Apartamento, Casa Térra, Sobrado...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=tipoimovel.csp&ctr=[1|2|3]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para carregar os Tipos de Imóveis, ou seja, "Apartamentos para Venda", "Casas para Locação"
*					Se não existirem Apartamentos para o contrato (ctr=x) que foi passado para a URL como argumento não será incluído no XML
*/
function carregaTipoImovel(myCtr) {
	// Determina qual o tipo de imóvel será o DEFAULT
	var myTipo =  ( (typeof ARGS == "undefined") || (typeof ARGS.tipo == "undefined") ) ? 'AAP' : ARGS.tipo;
	$('#tipo').unbind('change');
	$('#tipo,#cidade,#regiao,#faixavalor,#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray'); //quando esta carregando
	// Carrega o Select
	// funcao para carga do select carregaCombo pois o xml resultante tem a mesma extrutura padrao
	// funcao para depois que carregar o select carregaCidade.
	// *** Veja que isto gera uma corrente que um combo aop terminar sua carga carrega o seguinte
	ajax('tipoimovel.csp', {ctr:myCtr,tipo:myTipo}, 'tipo', 'tipoimovel', carregaCombo, function() {
			$('#tipo').attr('disabled',false).css('background-color','');
			carregaCidade( $('#ctr').val(), $('#tipo').val() );
		});
	$('#tipo').bind('change',function() {
			carregaCidade( $('#ctr').val(), $('#tipo').val() );
		});
}
/**
* Carrega SELECT de Garagens [a partir de de 0, a partir de de 1, a partir de de 2...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=camposp.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]&regiao=[1|2|..|3|T]&dormitorios=[0|1|..|n]&garagens=[0|1|..|n]&suites=[0|1|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
* myRegiao	: TEXTO
*					Propriedade key do xml regiao.csp
* myFaixaValor	: TEXTO
*					Propriedade key do xml faixavalor.csp
*					Se não existirem Imóveis para o contrato (ctr=x), para o Tipo de imóvel, Cidade, Região e faixa de valor especificadas que foram passados para a URL como argumento não será incluído no XML
*/
function carregaCamposp(myCtr, myTipo, myCidade, myRegiao, myFaixavalor, myDormitorios, mySuites, myGaragens) {
	//Determina qual a cidade será atribuída ao select como padrão
	var myCampo =  ( (typeof ARGS == "undefined") || (typeof ARGS.Campo == "undefined") ) ? 'T' : ARGS.campo;
	// propriedades não padrão do OPTION atribuida pelo sistema
	// estas dias propriedas auxiliam ao subsistema de filtro a trazer para o cliente somente as opções em que existirem Imóveis
	var myValorMinimo = $('#faixavalor :selected').attr('valorminimo'); 
	var myValorMaximo = $('#faixavalor :selected').attr('valormaximo');
	// Obtém a lista de OPTIONS do SELECT
	var myOpcs = $('#campo :selected'); 
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.valorminimo=myValorMinimo;
	myArgs.valormaximo=myValorMaximo;
	myArgs.dormitorios=$('#dormitorios :selected').val();
	myArgs.suites=$('#suites :selected').val();
	myArgs.garagens=myGaragens;
	myArgs.todas=1;	// se enviada como TODAS retorna "Sem Restrição"
	// Varre o select e marca TODOS os OPTIONS selecionados para serem passados com paramentros
	for (var i = 0; i < myOpcs.length; i++) {
		myArgs[myOpcs[i].value]=1;
	}
	// Carrega o Select
	// funcao para carga do select carregaComboOpcionais pois o xml resultante tem a uma extrutura XML diferente das anteriores
	ajax('camposp.csp', myArgs, 'campo', 'campo', carregaComboOpcionais, function() {
			$('#campo').attr('disabled',false).css('background-color','');
		});
}
/**
* Carrega SELECT de Garagens [a partir de de 0, a partir de de 1, a partir de de 2...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=garagens.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]&regiao=[1|2|..|3|T]&dormitorios=[0|1|..|n]&garagens=[0|1|..|n]&suites=[0|1|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
* myRegiao	: TEXTO
*					Propriedade key do xml regiao.csp
* myFaixaValor	: TEXTO
*					Propriedade key do xml faixavalor.csp
*					Se não existirem Imóveis para o contrato (ctr=x), para o Tipo de imóvel, Cidade, Região e faixa de valor especificadas que foram passados para a URL como argumento não será incluído no XML
*/
function carregaGaragens(myCtr, myTipo, myCidade, myRegiao, myFaixavalor, myDormitorios, mySuites) {
	//Determina qual a cidade será atribuída ao select como padrão
	var myGaragens = getValorPadrao('garagens');
	// propriedades não padrão do OPTION atribuida pelo sistema
	// estas dias propriedas auxiliam ao subsistema de filtro a trazer para o cliente somente as opções em que existirem Imóveis
	var myValorMinimo = $('#faixavalor :selected').attr('valorminimo'); 
	var myValorMaximo = $('#faixavalor :selected').attr('valormaximo');
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.valorminimo=myValorMinimo;
	myArgs.valormaximo=myValorMaximo;
	myArgs.dormitorios=$('#dormitorios :selected').val();
	myArgs.suites=$('#suites :selected').val();
	myArgs.garagens=myGaragens;
	$('#garagens').unbind('change');
	$('#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaComboLabel pois o xml resultante tem a uma extrutura XML diferente das anteriores
	// Além de trazer a lista de números de garagens também carrega o Rótulo do Campo garagens configurado no Tipo de Imóvel
	// funcao para depois que carregar o select carregaGaragens.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('garagens.csp', myArgs, 'garagens', 'garagem', carregaComboLabel, function() {
				$('#garagens').attr('disabled',false).css('background-color','');			
				carregaCamposp( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val(), $('#suites').val(), $('#garagens').val() );
			});
	$('#garagens').bind('change',function() {
			carregaCamposp( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val(), $('#suites').val(), $('#garagens').val() );
		});
}
/**
* Carrega SELECT de Suítes [a partir de de 0, a partir de de 1, a partir de de 2...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=suites.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]&regiao=[1|2|..|3|T]&dormitorios=[0|1|..|n]&garagens=[0|1|..|n]&suites=[0|1|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
* myRegiao	: TEXTO
*					Propriedade key do xml regiao.csp
* myFaixaValor	: TEXTO
*					Propriedade key do xml faixavalor.csp
*					Se não existirem Imóveis para o contrato (ctr=x), para o Tipo de imóvel, Cidade, Região e faixa de valor especificadas que foram passados para a URL como argumento não será incluído no XML
*/
function carregaSuites(myCtr, myTipo, myCidade, myRegiao, myFaixavalor, myDormitorios) {
	//Determina qual a cidade será atribuída ao select como padrão
	var mySuites = getValorPadrao('suites');
	// propriedades não padrão do OPTION atribuida pelo sistema
	// estas dias propriedas auxiliam ao subsistema de filtro a trazer para o cliente somente as opções em que existirem Imóveis
	var myValorMinimo = $('#faixavalor :selected').attr('valorminimo'); 
	var myValorMaximo = $('#faixavalor :selected').attr('valormaximo');
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.valorminimo=myValorMinimo;
	myArgs.valormaximo=myValorMaximo;
	myArgs.dormitorios=$('#dormitorios :selected').val();
	myArgs.suites=mySuites;
	myArgs.garagens=$('#garagens :selected').val();
	$('#suites').unbind('change');
	$('#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaComboLabel pois o xml resultante tem a uma extrutura XML diferente das anteriores
	// Além de trazer a lista de números de suítes também carrega o Rótulo do Campo suítes configurado no Tipo de Imóvel
	// funcao para depois que carregar o select carregaGaragens.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('suites.csp', myArgs, 'suites', 'suite', carregaComboLabel, function() {
				$('#suites').attr('disabled',false).css('background-color','');
				carregaGaragens( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val(), $('#suites').val() );
			});
	$('#suites').bind('change',function() {
			carregaGaragens( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val(), $('#suites').val() );
		});
}
/**
* Carrega SELECT de Dormitorios [a partir de de 0, a partir de de 1, a partir de de 2...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=dormitorios.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]&regiao=[1|2|..|3|T]&dormitorios=[0|1|..|n]&garagens=[0|1|..|n]&suites=[0|1|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
* myRegiao	: TEXTO
*					Propriedade key do xml regiao.csp
* myFaixaValor	: TEXTO
*					Propriedade key do xml faixavalor.csp
*					Se não existirem Imóveis para o contrato (ctr=x), para o Tipo de imóvel, Cidade, Região e faixa de valor especificadas que foram passados para a URL como argumento não será incluído no XML
*/
function carregaDormitorios(myCtr, myTipo,myCidade, myRegiao, myFaixavalor) {
	//Determina qual a cidade será atribuída ao select como padrão
	var myDormitorios = getValorPadrao('dormitorio');
	// propriedades não padrão do OPTION atribuida pelo sistema
	// estas dias propriedas auxiliam ao subsistema de filtro a trazer para o cliente somente as opções em que existirem Imóveis
	var myValorMinimo = $('#faixavalor :selected').attr('valorminimo'); 
	var myValorMaximo = $('#faixavalor :selected').attr('valormaximo');
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.valorminimo=myValorMinimo;
	myArgs.valormaximo=myValorMaximo;
	myArgs.dormitorios=myDormitorios;
	myArgs.suites=$('#suites :selected').val();
	myArgs.garagens=$('#garagens :selected').val();
	$('#dormitorio').unbind('change');
	$('#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaComboLabel pois o xml resultante tem a uma extrutura XML diferente das anteriores
	// Além de trazer a lista de número de dormitórios também carrega o Rótulo do Campo dormitório configurado no Tipo de Imóvel
	// funcao para depois que carregar o select carregaSuites.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('dormitorios.csp', myArgs, 'dormitorio', 'dormitorio', carregaComboLabel, function() {
				$('#dormitorio').attr('disabled',false).css('background-color','');
				carregaSuites( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val() );
			});
	$('#dormitorios').bind('change',function() {
			carregaSuites( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val(), $('#dormitorios').val() );
		});
}
/**
* Carrega SELECT de Faixas de Valores [de 0 até 250.000, 250.000,01 até 450.000,000...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=faixavalor.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]&regiao=[1|2|..|3|T]&dormitorios=[0|1|..|n]&garagens=[0|1|..|n]&suites=[0|1|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
* myRegiao	: TEXTO
*					Propriedade key do xml regiao.csp
*					Se não existirem Imóveis para o contrato (ctr=x), para o Tipo de imóvel, Cidade e Região que foram passados para a URL como argumento não será incluído no XML
*/
function carregaFaixavalor(myCtr, myTipo, myCidade, myRegiao) {
	// Faixa de Valor que será definida como default no select
	var myFaixavalor =  ( (typeof ARGS == "undefined") || (typeof ARGS.Faixavalor == "undefined") ) ? '' : ARGS.faixavalor;
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.faixaValor=myFaixavalor;
	myArgs.dormitorios=$('#dormitorios :selected').val();	// filtra também faixa de valor por número de dormitórios especificados
	myArgs.suites=$('#suites :selected').val();				// filtra também faixa de valor por número de suítes especificados
	myArgs.garagens=$('#garagens :selected').val();			// filtra também faixa de valor por número de garagens especificados
	$('#faixavalor').unbind('change');
	$('#faixavalor,#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaComboFaixaValor pois o xml resultante tem a uma extrutura XML diferente das anteriores
	// funcao para depois que carregar o select carregaDormitorios.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('faixavalor.csp', myArgs, 'faixavalor', 'faixavalor', carregaComboFaixaValor, function() {
			$('#faixavalor').attr('disabled',false).css('background-color','');
				if($('#faixavalor').children(":last").text() == 'Valor Indiferente'){
					$('#faixavalor').attr('disabled',true).children(":last").text("Sem resultados");
					$('#dormitorio').children(":last").text("Sem resultados");
					$('#suites').children(":last").text("Sem resultados");
					$('#garagens').children(":last").text("Sem resultados");
					$('#campo').children(":last").text("Sem resultados");
					$('#pesquisar').fadeOut(2000);
					$('#divPesquisa').html("<div class='sem-resultado'><h2>Não há nenhum resultado com esta combinação. Tente novamente.</h2></div>");		
				}else{
					$('#pesquisar').fadeIn(2000);
					
					carregaDormitorios( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val() );
					}
					});
				
					$('#faixavalor').bind('change',function() {
						carregaDormitorios( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val(), $('#faixavalor').val() );
					});
}
/**
* Carrega SELECT de Regiões [Centro, Bairro Jardim, Paraízo...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=regiao.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]&cidade=[1|2|..|n]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
* myCidade	: TEXTO
*					Propriedade key do xml cidade.csp
*					Se não existirem Regiões para o contrato (ctr=x) e para o Tipo de imóvel e Cidade que foram passados para a URL como argumento não será incluído no XML
*/
function carregaRegiao(myCtr, myTipo,myCidade) {
	//Determina qual a cidade será atribuída ao select como padrão
	var myRegiao =  ( (typeof ARGS == "undefined") || (typeof ARGS.regiao == "undefined") ) ? 'T' : ARGS.regiao;
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=myCtr;
	myArgs.tipo=myTipo;
	myArgs.cidade=myCidade;
	myArgs.regiao=myRegiao.toString();
	myArgs.todas=1;	// Se propriedade todas enviada como 1 o XML incluirá o ítem: Todas as Regiões
	$('#regiao').unbind('change');
	$('#regiao,#faixavalor,#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaCombo pois o xml resultante tem a mesma extrutura padrao
	// funcao para depois que carregar o select carregaFaixavalor.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('regiao.csp', myArgs, 'regiao', 'regiao', carregaCombo, function() {
			$('#regiao').attr('disabled',false).css('background-color','');
			carregaFaixavalor( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val() );
		});
	$('#regiao').bind('change',function() {
			carregaFaixavalor( $('#ctr').val(), $('#tipo').val(), $('#cidade').val(), $('#regiao').val() );
		});
}
/**
* Carrega SELECT de Cidades [São Bernardo do Campo, Santo André, São Paulo...]
* para tanto utilize-se do seguinte URL para obter os DADOS:
*  	http://www.seusite.com.br/corweb/proxy/index.php?url=cidade.csp&ctr=[1|2|3]&tipo=[AAP|CSA|..|FAZ]
*
* Parâmetros
* myCtr		: TEXTO
*					Contrato para Carrega os Tipo de Imóveis ou Seja ("Apartamentos em Venda")
* myTipo	: TEXTO
*					Propriedade key do xml tipoimovel.csp
*					Se não existirem Cidades para o contrato (ctr=x) e para o Tipo de imóvel que foram passados para a URL como argumento não será incluído no XML
*/
function carregaCidade(myCtr, myTipo) {
	//Determina qual a cidade será atribuída ao select como padrão
	var myCidade =  ( (typeof ARGS == "undefined") || (typeof ARGS.cidade == "undefined") ) ? '1' : ARGS.cidade;
	$('#cidade').unbind('change');
	$('#cidade,#regiao,#faixavalor,#dormitorio,#suites,#garagens,#campo').attr('disabled',true).css('background-color','lightgray');
	// Carrega o Select
	// funcao para carga do select carregaCombo pois o xml resultante tem a mesma extrutura padrao
	// funcao para depois que carregar o select carregaRegiao.
	// *** Veja que isto gera uma corrente que um combo ao terminar sua carga carrega o seguinte
	ajax('cidade.csp', {ctr:myCtr,tipo:myTipo,cidade:myCidade}, 'cidade', 'cidade', carregaCombo, function() {
			$('#cidade').attr('disabled',false).css('background-color','');
			carregaRegiao( $('#ctr').val(), $('#tipo').val(), $('#cidade').val() );
		});
	$('#cidade').bind('change',function() {
			carregaRegiao( $('#ctr').val(), $('#tipo').val(), $('#cidade').val() );
		});
}
/**
* Função AJAX - Utiliza a plataforma AJAX do JQUERY para solicitar XML's remotos
* Parametros    : TIPO/DESCRICAO
* url           : URL
					URL da Página csp que você quer os dados. Ex.
*                 	http://www.seusite.com.br/corweb/proxy/index.php?url=contratos.csp
* parametros    : OBJETO JSON
					Paramentros a serem passados para a página CSP (URL acima) em formato JSON. (Ver manual fornecido "manual.txt") Ex:
*                 	{ctr:1,cidade:1,regiao:T,valorminimo:150000,valormaximo:300000}
* controle      : TEXTO
					propriedade id do controle tipo select. Ex:
*                 	'ctr'
* noXml         : TEXTO
					nome da TAG xml que será selecionada como collection exemplo: 
*                 	<contratos><contrato><key>1</key><nome>Venda</nome><padrao>1</padrao></contrato><contrato><key>2</key><nome>Locação</nome></contrato><contrato><key>3</key><nome>Empreendimento</nome></contrato></contratos>
*			      	a tag 'contrato'
* callBackCarga : FUNCAO
					Função que será chamada para tratar o XML
* callBack      : FUNCAO
					Função que será chamada após tratar o XML
*/
function ajax(url, parametros, controle, noXml, callBackCarga, callBack) {
	parametros.url=url;
	$.ajax({
		url: "proxy/index."+ARGS.TIPOPROXY,
		type: 'POST',
		contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
		async: true,
		dataType: "xml",
		data: parametros,
		success: function(request) {
			if (typeof callBackCarga == "function") {
				callBackCarga(controle, noXml, request);
			}
			if (typeof callBack == "function") {
				callBack();
			}
		},
		error: function(request,statusText,errorThrown) {
			alert(statusText + ' - ' + errorThrown);
		}
	});			
}
//DOR GAR DOP
function getValorPadrao(controle) {
	var resp = $('#' + controle).val();
	if ((typeof resp == "undefined") || (resp == '')) {
		resp = ( (typeof ARGS == "undefined") || (typeof ARGS[controle] == "undefined") ) ? '0' : ARGS[controle];
	}
	return resp;
}
/**
* Função callBackCarga para Carregar Combos baseando-se em XML.
* O XML em questão tem a extrutura baseada nos seguintes nós:
*<nome-objeto-raiz>			No Raiz do XML que descreve o Tipo de Objetos listados (Collection)
* <nome-objeto>				Nome do Objeto Principal
*  <key>1</key>				Propriedade key - chave promária
*  <nome>Descrição do objeto</nome>	Propriedade nome - Descrição do objeto
*  <padrao>1</padrao>			Propriedade padrao opcional - indica se é o bjeto default
* </nome-objeto>
*</nome-objeto-raiz>
* Parametros:
* controle  : TEXTO
*				propriedade id do controle tipo select. Ex:
*           	'ctr'
* noXml     : TEXTO
*				nome da TAG xml que será selecionada como collection exemplo: 
*              	<contratos><contrato><key>1</key><nome>Venda</nome><padrao>1</padrao></contrato><contrato><key>2</key><nome>Locação</nome></contrato><contrato><key>3</key><nome>Empreendimento</nome></contrato></contratos>
*			   	a tag 'contrato'
* xml       : URL
*			  Será a página CSP a ser chamada no servidor do cliente. No exemplo acima 'http://www.seusite.com.br/corweb/proxy/index.php?url=contratos.csp'
*/
function carregaCombo(controle, noXml, xml) {
	// seleciona o objeto select
	var combo = $('#' + controle);
	// limpa o combo
	$('option', combo).remove();
	// Obtem a lista de OPTIONS do select
	var opcoes = combo.attr('options');
	/* Varre o XML e carrega o combo
	* Cria uma Array baseada no comando de leitura XML xml.getElementsByTagName(noXml)
	* usa a função do JQUERY.each() para varrer esta matriz
	*/
	$(xml).find(noXml).each( function() {
		var nome = $(this).find('nome').text();
		var key = $(this).find('key').text();
		var padrao = $(this).find('padrao').text();
		var indice = opcoes.length;
		// Cria um novo OPTION (Veja w3school para sintaxe abaixo)
		var option = new Option( nome, key, null, (padrao && padrao == '1') ? true : false);
		// adiciona novo OPTION a matriz 
		opcoes[indice]=option;
	});
}
/**
* Função callBackCarga para Carregar Combos baseando-se em XML.
* O XML em questão tem a extrutura baseada nos seguintes nós:
*  <faixavalor>
*   <key>11</key>
*   <nome>de 0 até 70.000</nome>
*   <valorminimo>0</valorminimo>
*   <valormaximo>70000.00</valormaximo>
*  </faixavalor>
* As propriedades valorminimo e valormaximo devem ser adicionadas ao objeto OPTION para poder ser selecionada posteriormente pois são necessárias
* para algumas páginas CSP
*
* Parametros:
* controle  : TEXTO
*				propriedade id do controle tipo select. Ex:
*           	'ctr'
* noXml     : TEXTO
*				nome da TAG xml que será selecionada como collection exemplo: 
*              	<contratos><contrato><key>1</key><nome>Venda</nome><padrao>1</padrao></contrato><contrato><key>2</key><nome>Locação</nome></contrato><contrato><key>3</key><nome>Empreendimento</nome></contrato></contratos>
*			   	a tag 'contrato'
* xml       : URL
*			  Será a página CSP a ser chamada no servidor do cliente. No exemplo acima 'http://www.seusite.com.br/corweb/proxy/index.php?url=contratos.csp'
*/
function carregaComboFaixaValor(controle, noXml, xml) {
	// seleciona o objecto select
	var combo = $('#' + controle);
	// limpa o combo
	$('option', combo).remove();
	//atribui a array de options ao select
	var opcoes = combo.attr('options');
	//Varre o XML e carrega o combo
	$(xml).find(noXml).each( function() {
		var nome = $(this).find('nome').text();
		var key = $(this).find('key').text();
		var padrao = $(this).find('padrao').text();
		var valorminimo = $(this).find('valorminimo').text();
		var valormaximo = $(this).find('valormaximo').text();
		var indice = opcoes.length;
		//a linha abaixo define como valor padrão a primeira faixa de valor atribuida. Foi removida essa funcionalidade e deixado como padrao o valor Indiferente
		//var option = new Option( nome, key, null, (padrao && padrao == '1') ? true : false);
		var option = new Option( nome, key, null);
	
		//Adiciona novos atributos (nao padroes do objeto OPTION malorminimo e valormaximo Necessários para a Pesquisa de Imóvel
		option.setAttribute('valorminimo', valorminimo);
		option.setAttribute('valormaximo', valormaximo);
		opcoes[indice]=option;
	});
}
/**
* Função callBackCarga para Carregar Combos baseando-se em XML.
* O XML em questão tem a extrutura baseada nos seguintes nós:
* <campo>
*  <key>AGU</key>
*  <descricao>Aquec. Central</descricao>
*  <sigla>A.C</sigla>
*  <valor>0</valor>
* </campo>
*
* Parametros:
* controle  : TEXTO
*				propriedade id do controle tipo select. Ex:
*           	'ctr'
* noXml     : TEXTO
*				nome da TAG xml que será selecionada como collection exemplo: 
*              	<contratos><contrato><key>1</key><nome>Venda</nome><padrao>1</padrao></contrato><contrato><key>2</key><nome>Locação</nome></contrato><contrato><key>3</key><nome>Empreendimento</nome></contrato></contratos>
*			   	a tag 'contrato'
* xml       : URL
*			  Será a página CSP a ser chamada no servidor do cliente. No exemplo acima 'http://www.seusite.com.br/corweb/proxy/index.php?url=contratos.csp'
*/
function carregaComboOpcionais(controle, noXml, xml) {
	var combo = $('#' + controle);
	$('option', combo).remove();
	var opcoes = combo.attr('options');
	$(xml).find(noXml).each( function() {
		var descricao = $(this).find('descricao').text();
		var key = $(this).find('key').text();
		var sigla = $(this).find('sigla').text();
		var valor = $(this).find('valor').text();	// propriedade que indica se o OPTION está selecionado
		var indice = opcoes.length;
		var option = new Option( descricao, key, null, valor == '1' ? true : false);
		option.setAttribute('sigla', sigla);
		opcoes[indice]=option;
	});
}
/**
* Função callBackCarga para Carregar Combos baseando-se em XML.
* O XML em questão tem a extrutura baseada nos seguintes nós:
* <dormitorios>
*  <campo>
*   <descricao>Dormitorios</descricao>
*   <sigla>DOR</sigla>
*  </campo>
*  <dormitorio>
*   <key>0</key>
*   <nome>a partir de 0</nome>
*   <padrao>1</padrao>
*  </dormitorio>
* </dormitorios>
*
* Parametros:
* controle  : TEXTO
*				propriedade id do controle tipo select. Ex:
*           	'ctr'
* noXml     : TEXTO
*				nome da TAG xml que será selecionada como collection exemplo: 
*              	<contratos><contrato><key>1</key><nome>Venda</nome><padrao>1</padrao></contrato><contrato><key>2</key><nome>Locação</nome></contrato><contrato><key>3</key><nome>Empreendimento</nome></contrato></contratos>
*			   	a tag 'contrato'
* xml       : URL
*			  Será a página CSP a ser chamada no servidor do cliente. No exemplo acima 'http://www.seusite.com.br/corweb/proxy/index.php?url=contratos.csp'
*/
function carregaComboLabel(controle, noXml, xml) {
	// Carrega o SELECT
	carregaCombo(controle, noXml, xml);
	// Obtém o Rótulo do campo
	var nomeLabel = 'lbl' + controle.substring(0,1).toUpperCase() + controle.substring(1);
	var campo = $(xml).find('campo').find('descricao').text();
	$('#' + nomeLabel).text(campo);
}
function pesquisar(myPagina) {
	var myOpcs = $('#campo :selected'); 
	// Objeto JSON que reúne os argumentos passados para o URL
	var myArgs={};
	myArgs.ctr=$('#ctr').val();
	myArgs.tipo=$('#tipo').val();
	myArgs.cidade=$('#cidade').val();
	myArgs.regiao=$('#regiao').val().toString();
	myArgs.valorminimo=$('#faixavalor :selected').attr('valorminimo');
	myArgs.valormaximo=$('#faixavalor :selected').attr('valormaximo');
	myArgs.dormitorios=$('#dormitorio :selected').val();
	myArgs.suites=$('#suites :selected').val();
	myArgs.garagens=$('#garagens :selected').val();
	myArgs.url='pesquisar.csp';
	
	/*cria o loading caso demore*/
	$("#report-pane").ajaxStart(function() {
	    var width = $(this).width();
	    var height = $(this).height();
	 
	    $("#report-loading").css({
	        top: ((height / 2) - 25),
	        left: ((width / 2) - 50)
	    }).fadeIn(200);    // fast fade in of 200 mili-seconds
	}).ajaxStop(function() {
	    $("#report-loading", this).fadeOut(1000);    // slow fade out of 1 second
	});	
	/*fim do cria o loading caso demore*/
	
	if (typeof myPagina != "undefined") {
		myArgs.pagina=myPagina;
	}
	// Varre o select e marca TODOS os OPTIONS selecionados para serem passados com paramentros
	for (var i = 0; i < myOpcs.length; i++) {
		myArgs[myOpcs[i].value]=1;
	}
	$.ajax({
		url: "proxy/index."+ARGS.TIPOPROXY,
		type: 'POST',
		contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
		async: true,
		dataType: "xml",
		data: myArgs,
		success: function(request) {
			var totalResultado=0;
			$(request).find('pesquisa').each( function() {
				totalResultado=parseInt($(this).find('total').text());
			});
			if (totalResultado > 0) {
				criaTabela(request);
			}else{
				$('#divPesquisa').html("<div class='sem-resultado'><h2>Não há nenhum resultado com esta combinação. Tente novamente.</h2></div>");
				}
		},
		error: function(request,statusText,errorThrown) {
			alert(statusText + ' - ' + errorThrown);
		}
	});			
}
function criaTabela(xml) {
	var table = document.createElement('table');
	$(table).attr('id','tabelaPesquisa');
	var caption = document.createElement('caption');
	$(caption).append(document.createTextNode('Resultado da busca:'));
	$(table).append(caption);
	$(xml).find('imoveis campos:first').each( function() {
		criaHeaderTable($(this),table);
	});
	$(xml).find('imoveis pesquisa:first').each( function() {
		criaFooterTable($(this),table);
	});
	var tbody = document.createElement('tbody');
	$(table).append(tbody);
	$(xml).find('imoveis imovel').each( function() {
		criaRowTable($(this),tbody,$(xml).find('imoveis pesquisa:first servidor').text());
	});
	$('#divPesquisa').empty().append(table);
	$('#resultadoGeral').hide();
}
/*
<imovel>
	<referencia>10541</referencia>
	<cidade>Sao Bernardo do Campo</cidade>
	<regiao>Centro</regiao>
	<tipoimovel>Apartamento</tipoimovel>
	<bairro>Centro</bairro>
	<valor>450000</valor>
	<condominio><valor>960</valor></condominio>
	<dormitorio><campo><descricao>Dormitorios</descricao><valor>4</valor></campo></dormitorio>
	<suite><campo><descricao>Suites</descricao><valor>3</valor></campo></suite>
	<garagem><campo><descricao>Garagens</descricao><valor>3</valor></campo></garagem>
	<campos>
		<campo><descricao>Sl. Jogos</descricao><valor>1</valor></campo>
		<campo><descricao>Sauna</descricao><valor>1</valor></campo>
		<campo><descricao>Sl. Festas</descricao><valor>1</valor></campo>
		<campo><descricao>Play Ground</descricao><valor>1</valor></campo>
		<campo><descricao>Piscina</descricao><valor>1</valor></campo>
	</campos>
	<anuncio>
		APTO CENTRO SBC     R$ 450.000,00 
		4ds, 3stes c/AE assoalho ipê, sl 2amb, copa, coz planej, 
		dep.emp, área serv c/AE, 3vagas gar, acab.ótimo, original, 
		165m², aceita imóvel, FGTS, financiamento, confira!!   Ref. 10541
	</anuncio>
	<fotos>
		<foto><valor>F15695.JPG</valor><descricao>Foto 1</descricao></foto>
	</fotos>	
</imovel>
*/
function criaRowTable(xml,tbody,servidor) {
	var tr = document.createElement('tr');
	var valor = 0;
	var valorF = '';
	$(tbody).append(tr);
	var ref = xml.find('referencia').text();
	var foto = xml.find('fotos foto:first valor').text();
	var tdRef = document.createElement('td');
	var tdFoto = document.createElement('td');
	var divRef = document.createElement('div');
	//$(tdRef).attr('id','divReFlavio')
	//$(divRef).attr('id','divRef' + ref)
	$("<a />").attr("href", "dados-imovel.php?ref="+ref).attr("title", "Veja o imóvel em detalhes").appendTo($(tdRef)).text(ref);
	//$("<a />").attr("href", "dados-imovel.php?ref="+ref).appendTo($(tdRef)).text(ref);
/*	
	$(divRef).tooltip({ 
		delay: 0, 
		showURL: false, 
		bodyHandler: function() { 
			var div = document.createElement('div');
			$(div).css('width','420px');
			$(div).css('height','200px');
			var divImg = document.createElement('div');
			$(divImg).css('text-align','center');
			$(divImg).css('width','200px');
			$(divImg).css('height','200px');
			$(divImg).css('float','left');
			var img = document.createElement('img');
			$(img).attr('src',servidor + '/corweb/thumb.php?largura=200&altura=200&foto=' + foto);
			$(divImg).append(img);
			$(div).append(divImg);
			var divTxt = document.createElement('div');
			$(divTxt).css('padding','5px');
			$(divTxt).css('float','right');
			$(divTxt).css('width','200px');
			$(divTxt).css('height','200px');
			$(divTxt).css('text-align','justify');
			$(divTxt).css('text-justify','newspaper');
			$(divTxt).append(document.createTextNode(xml.find('anuncio').text()));
			$(div).append(divTxt);
			return div;
		} 
	});
	$(divRef).append(document.createTextNode(ref));
	$(tdRef).append(divRef);
	*/
	
	$(tr).append( tdRef );
	$(tr).append( criaTd(xml.find('cidade').text()) );
	//$(tr).append( criaTd(xml.find('regiao').text()) );
	$(tr).append( criaTd(xml.find('bairro').text()) );
	$(tr).append( criaTd(xml.find('tipoimovel').text()) );
	$(tr).append( criaTd(xml.find('dormitorio campo valor').text()) );
	$(tr).append( criaTd(xml.find('suite campo valor').text()) );
	$(tr).append( criaTd(xml.find('garagem campo valor').text()) );
	
	valor = parseFloat(xml.find('valor:first').text());
	valorF = valor > 0 ? $().numberFormat( valor, { decimalsLimit:0 } ) : '';
	$(tr).append( criaTd( valor) ); 
	
	var valorCondominio =  parseFloat(xml.find('condominio valor').text());
	

	
 	$(tr).append("<td id='valorCond'>"+valorCondominio+"</td>");
	
	
	//$(tr).append( criaTd( xml.find('iptu valor').text()) );
	$(tr).append( tdFoto );
	if(foto){
		$("<a />").attr("href", "dados-imovel.php?ref="+ref).attr("title", "Veja o imóvel em detalhes").appendTo($(tdFoto)).text('Ver fotos');
	}else{
		($(tdFoto)).text('');
		}
	
	}
function criaTd(texto, align) {
	var td = document.createElement('td');
	if (typeof align != "undefined")
		td.align = align;
	$(td).append(document.createTextNode(texto == '' ? ' ' : texto));
	return td;
}
/*
<campos>
	<referencia>Ref.</referencia>
	<cidade>Cidade</cidade>
	<regiao>Região</regiao>
	<bairro>Bairro</bairro>
	<tipoimovel>Tipo</tipoimovel>
	<dormitorio>Dormitorios</dormitorio>
	<suite>Suites</suite>
	<garagem>Garagens</garagem>
	<valor>Valor</valor>
	<condominio>Condo.</condominio>
	<iptu>IPTU</iptu>
	<foto>Fotos</foto>
</campos>			
*/
function criaHeaderTable(xml,table) {
	var thead = document.createElement('thead');
	$(table).append(thead);
	var tr = document.createElement('tr');
	$(thead).append(tr);
	/*
	Ref.	Cidade	Região	Bairro	Tipo	Dormitorios	Suites	Vagas	Valor	Condo.	Fotos
	
	*/
	$(tr).append(criaTh(xml.find('referencia').text()));//Cria cabeçalho da tabela
	$(tr).append(criaTh(xml.find('cidade').text()));
	//$(tr).append(criaTh(xml.find('regiao').text()));
	$(tr).append(criaTh(xml.find('bairro').text()));
	$(tr).append(criaTh(xml.find('tipoimovel').text()));
	$(tr).append(criaTh('Domitórios'));
	//$(tr).append(criaTh(xml.find('suite').text()));
	$(tr).append(criaTh('Suítes'));
	$(tr).append(criaTh('Vagas'));
	$(tr).append(criaTh(xml.find('valor').text()));
	$(tr).append(criaTh('Condomínio'));
	//$(tr).append(criaTh(xml.find('iptu').text()));
	$(tr).append(criaTh(xml.find('foto').text()));
}
function criaTh(texto) {
	var th = document.createElement('th');
	$(th).append(document.createTextNode(texto == '' ? ' ' : texto));
	return th;
}

function criaFooterTable(xml,table) {
	var tfoot = document.createElement('tfoot');
	$(table).append(tfoot);
	criaPaginacao(xml,tfoot);
	//var tr = document.createElement('tr');
	//$(tfoot).append(tr);
	//var td = document.createElement('td');
}

function criaPaginacao(xml,tFoot) {
		//$(tr).append(td);
	
	var paginaAtual = parseInt(xml.find('pagina:first').text());
	var ultimaPagina = parseInt(xml.find('navegacao fim valor').text());
	var primeiraNavegacao = parseInt(xml.find('navegacao pagina:first valor').text());
	var ultimaNavegacao = parseInt(xml.find('navegacao pagina:last valor').text());
	// Cria Inner Table
	
	//vamos tentar remover a paginacao de dentro de uma tabela css rules
	var meusResultados = document.createElement('div');
	$(meusResultados).attr('id','divMeusResultados');
	$(meusResultados).html('<h2>Total de imóveis encontrados: ' + xml.find('total').text());

	// Anexa Inner Table a Tabela 
	var tr = document.createElement('tr');
	$(tFoot).append(tr);
	var td = document.createElement('td');
	$(td).attr('colspan',12);
	$(tr).append(td);
	
	$(td).append(meusResultados);

	if ( primeiraNavegacao > 0) {
		var a = document.createElement('a');
		$(a).attr('href',"javascript:void(0);");
		$(a).attr('class','botaoNavegacao');
		$(a).bind('click', function() {
			pesquisar(0);
		});
		$(a).append(document.createTextNode('Primeira página'));
		$(meusResultados).append(a);
	}
	xml.find('navegacao pagina valor').each( function() {
		var page = parseInt($(this).text());
		if ( page == paginaAtual ) {
			var span = document.createElement('span');			
			$(span).append(document.createTextNode(page + 1));	
			$(span).attr('class','botaoNavegacaoAtual');
			$(meusResultados).append(span);
		} else {
			var a = document.createElement('a');
			$(a).attr('href',"javascript:void(0);");
			$(a).attr('class','botaoNavegacao');
			$(a).bind('click', function() {
				pesquisar(page);
			});
			$(a).append(document.createTextNode(page + 1));
			$(meusResultados).append(a);
		}
	});
	if ( ultimaNavegacao < ultimaPagina) {
		var td = document.createElement('td');
		var a = document.createElement('a');
		$(a).attr('href',"javascript:void(0);");
		$(a).attr('class','botaoNavegacao');
		$(a).bind('click', function() {
			pesquisar(ultimaPagina);
		});
		$(a).append(document.createTextNode('Última página'));
		$(meusResultados).append(a);
	}
}
