$(function(){
	Array.prototype.exists = function(v) {
		for(var i = 0; i < this.length; i++){
			if(this[i] == v) return true;
		}
		return false;
	}

	//carrega subtipos de acordo com o tipo
	$subtipo = $('#a_subtipo');
	$subtipo_div = $('#a_subtipo').parent();
	$subtipo.dropdownchecklist();
	$('#a_tipo').bind('change',function(){
		$this = $(this);
		$this_val = $this.val();
		appender = '';
		if($this_val != ''){
			var total = 0;
			$.each(busca_avancada_json.subtipos,function(k,v){
				if(v.tipo_cd == $this_val){
					total++;
					appender += '<option value="'+v.id+'"'+(busca_avancada_json.subtipo_selected.exists(v.id) ? 'selected="selected"' : '')+'>'+v.name+'<\/option>';
				}
			});
			if( total > 1 ) $subtipo_div.show();
			else $subtipo_div.hide();
		}else{
			$subtipo_div.hide();
		}
		$subtipo.html(appender);

		$subtipo.dropdownchecklist('destroy').trigger('change').dropdownchecklist({
			positionHow: 'absolute',
			emptyText: $this_val ? 'Selecione...' : "(Selecione um tipo)",
			width: $subtipo.width(),
			maxDropHeight: 150,
			icon: {
				toOpen: 'ui-icon-triangle-2-n-s',
				toClose: 'ui-icon-triangle-2-n-s',
				placement: 'right'
			}
		});

		switch($this_val){
			case '3': //apartamento
				if(document.location.pathname.search('tipo:cobertura') > 0){
					$this.val('cobertura').trigger('change');
				}
				break;
		}
	}).trigger('change');

	//carrega bairros de acordo com a cidade
	$bairro = $('#a_bairro');
	$bairro_div = $('#a_bairro').parent();
	$bairro.dropdownchecklist();
	$('#a_cidade').bind('change',function(){
		/* carregando os bairros */
		$this = $(this);
		$this_val = $this.val();
		appender = '';
		if($this_val != ''){
			$.each(busca_avancada_json.bairros,function(k,v){
				if(v.PProduto.Localidade_cd == $this_val){
					appender += '<option value="'+v.PProduto.Bairro_cd+'"'+(busca_avancada_json.bairro_selected.exists(v.PProduto.Bairro_cd) ? 'selected="selected"' : '')+'>'+v.PProduto.Bairro+'<\/option>';
				}
			});
			$bairro_div.show();
		}else{
			$bairro_div.hide();
		}
		$bairro.html(appender);
		$bairro.dropdownchecklist('destroy').trigger('change').dropdownchecklist({
			positionHow: 'absolute',
			emptyText: $this_val ? 'Selecione...' : "(Selecione uma Cidade)",
			width: $bairro.width(),
			maxDropHeight: 150,
			icon: {
				toOpen: 'ui-icon-triangle-2-n-s',
				toClose: 'ui-icon-triangle-2-n-s',
				placement: 'right'
			}
		});

		/* mostrando campos ocultos */
		if($this_val) $('#a_referencia,#a_nro,#a_rua').parent().show();
		else $('#a_referencia,#a_nro,#a_rua').parent().hide();

	}).trigger('change');

	//layout dos valores
	var valores_mask = false;
	if(valores_mask){
		$.addPlugin('maskmoney');
		$('#a_valor_minimo,#a_valor_maximo').maskmoney({
			symbol: 'R$',
			showSymbol: true,
			decimal: ',',
			thousands: '.'
		});

		$('#busca_avancada div.valor_minimo').addClass('min_mod').find('label').text('Valor entre');
		$('#busca_avancada div.valor_maximo').addClass('max_mod').find('label').text('e');
	}else{
		$('#busca_avancada div.valores>div').hide();
		$('#busca_avancada div.valores').append('<div class="input valores_range hide_me">'+
			'<label for="valores_range">Valor<\/label>'+
			'<select id="valores_range">'+
			'<option value="">Selecione...<\/option>'+
			'<\/select>'+
			'<\/div>');

		if( jQuery().uniform ) $('#valores_range').uniform();
		$('#valores_range').live('change',function(){
			var vals = $(this).val().split('-');
			if(vals.length == 2){
				$('#a_valor_minimo').val(vals[0]);
				$('#a_valor_maximo').val(vals[1]);
			}else{
				$('#a_valor_minimo').val('');
				$('#a_valor_maximo').val('');
			}
		});
	}

	function reload_range_valores(range){
		$('#valores_range').html('');
		var appender = '';
		if(range != null){
			appender = '<option value="">Selecione...<\/option>';
			$.each(range,function(k,v){
				if(v == 0){
					appender += '<option value="0-'+range[k+1]+'">Até R$ '+(range[k+1])+'<\/option>';
				}else if((k+1) == range.length){
					appender += '<option value="'+range[k]+'-999.999.999">Acima de R$ '+(range[k])+'<\/option>';
				}else{
					appender += '<option value="'+range[k]+'-'+range[k+1]+'">R$ '+(range[k])+' até '+(range[k+1])+'<\/option>';
				}
			});

			var v = $('#valores_range').html(appender).val(busca_avancada_json.defaultValores);
			if( jQuery().uniform ) $.uniform.update(v);
		}else{
			appender = '<option value="">(Selecione a finalidade)<\/option>';
			var v = $('#valores_range').html(appender).val('');
			if( jQuery().uniform ) $.uniform.update(v);
		}
		$('#busca_avancada div.valores div.valores_range').removeClass('hide_me');
	}

	function reload_range_valores_by_name(name){
		switch(name){
			case 'venda':
				if(!valores_mask){
					reload_range_valores(busca_avancada_json.range_valores_venda);
				}
				break;
			case 'locacao':
				if(!valores_mask){
					reload_range_valores(busca_avancada_json.range_valores_locacao);
				}
				break;
			case 'temporada':
				if(!valores_mask){
					reload_range_valores(busca_avancada_json.range_valores_temporada);
				}
				break;
			default:
				reload_range_valores(null);
				break;
		}
	}


	$('#a_finalidade,#busca_avancada input[name="finalidade"]').bind('change',function(){
		val = null;
		$this = $(this);
		if($this.filter(':radio').length){
			val = $this.filter(':checked').val();
		}else{
			val = $this.val();
		}
		reload_range_valores_by_name(val);
	}).trigger( 'change' );
	$('#busca_avancada input[name="finalidade"]:checked').trigger('change');

	//filtros de opções por tipo de imóvel
	$('#a_tipo').bind('change',function(){
		$this = $(this);
		$val = $this.val();
		switch($val){
			case '3'://apartamento
			case '2'://casa
				$('#a_dormitorios').parents('div.input:first').show();
				$('#a_suites').parents('div.input:first').show();
				$('#a_garagens').parents('div.input:first').show();
				break;
			case '5'://comercial
				$('#a_dormitorios').val('').parents('div.input:first').hide();
				$('#a_suites').val('').parents('div.input:first').hide();
				$('#a_garagens').parents('div.input:first').show();
				break;
			case '9'://garagem
			case '4'://galpão
			case '1'://lote
			case '7'://sítio
			case '8'://terreno
			default:
				$('#a_dormitorios').val('').parents('div.input:first').hide();
				$('#a_suites').val('').parents('div.input:first').hide();
				$('#a_garagens').val('').parents('div.input:first').hide();
				break;
		}
	}).trigger('change');

	//tratamento de dados antes do envio
	$('#busca_avancada form').bind('submit',function(e){
		$('#a_valor_minimo,#a_valor_maximo').each(function(){
			$this = $(this);
			val = $this.val();
			if(val){
				teste = $this.val().replace(/[^0-9]/g,'|');
				teste = teste.split('|');
				last_decimal = teste[teste.length-1];
				teste[teste.length-1] = last_decimal.length == 2 ? '.'+last_decimal : last_decimal+'.00';
				teste = teste.join('');
				$this.val(teste);
			}
		});
	});
});
