// Use stylish select
var $useStylish = true;

// Stylish char limit
var $stylishLimit = 25;

// Search form element (id or class)
var $searchForm = '#Frm_Pesquisa';

// Save last search?
var $saveLastSearch = false;

// Reset the next fields, even if it have the same value
var $nextFieldsReset = false;

// Correct label for fields
var $label = [];
$label['Cidade'] = 'Cidade';
$label['Zona'] = 'Zona';
$label['Region'] = 'Região';
$label['Bairro'] = 'Bairro';
$label['Tipo'] = 'Tipo do Imóvel';
$label['Finalidade'] = 'Imóvel para';
$label['Dormitorios'] = 'Dormitórios';
$label['Suites'] = 'Suítes';
$label['ValorMinimo'] = 'Valor Mínimo';
$label['ValorMaximo'] = 'Valor Máximo';
$label['Estado'] = 'Estado';
$label['Cliente'] = 'Campo do Cliente';

/* if you coment a variable or put a empty text, the variable will be ignored */
var $allText = []
$allText['Cidade'] = 'Todas';
$allText['Zona'] = 'Todas';
$allText['Region'] = 'Todas';
$allText['Bairro'] = 'Todos';
$allText['Tipo'] = 'Todos';
$allText['Finalidade'] = 'Todas';
$allText['Dormitorios'] = 'Todos';
$allText['Suites'] = 'Todas';
$allText['ValorMinimo'] = 'Indiferente';
$allText['ValorMaximo'] = 'Indiferente';
$allText['Estado'] = 'Todos';
$allText['Cliente'] = 'Todos';

// Array fields
var $arrayFields = [];
    $arrayFields['Dormitorios'] = true;
    $arrayFields['Imovel'] = true;

var $searchSplit = '::=>';

function reloadSearchFields($index) {

	var $filters = '';

	$('input:checkbox, select,hidden', $searchForm).each(function() {
		$filter = $(this).attr('id');
		if(typeof($arrayFields[$filter.split('_')[0]]) != 'undefined') {
			$filter = 'search[' + $filter + '][]=';    
		} else {
			$filter = 'search[' + $filter + ']=';
		}

		if($(this).data('searchIndex') > $index) {
			$filters += $filter + 'null&';
		} else {
			$filters += $filter + encodeURIComponent($(this).val()) + '&';
		}
	});

	if($filters.length > 0 && $index < $('select', $searchForm).length) {
			
		$('select', $searchForm).attr('disabled', 'disabled');
		
		if($useStylish) {
			$('select', $searchForm).resetSS();
		}

		$.ajax({
			url: $websiteUrl + 'search/api.php?' + $filters.substr(0, ($filters.length - 1)),
			dataType: 'json',
			success: function(data) {
			   
				for(var i in data) {
					if( i == "Total"){
						$("#total_parcial").html(data[i][i]);
					
					}else{
						var $obj = $('#' + i);
						var selected = $obj.val()
						
						if($obj.data('searchIndex') > $index) {    
							var content = '<option value="null">' + $label[i] + '</option>';
                                                        
                                                        if(typeof($allText[i]) != 'undefined' && $allText[i] != '' ){
                                                            content += '<option value="null">' + $allText[i] + '</option>';
                                                        }

							for(var j in data[i]) {
                                                                selectedPropriety = "";
                                                                /* Hold the value if it is the same */
                                                                if(!$nextFieldsReset && (selected == j)){
                                                                    selectedPropriety = 'selected="selected"';
                                                                }
								content += '<option value="' + j + '" ' + selectedPropriety + '>' + data[i][j] +  '</option>';
							}        
							
							$obj.html(content);
						}
						
						if(selected == 'null') {
							$obj.children('option:first').attr('selected', 'selected');
						}
					}

				}           
				
				$('select', $searchForm).attr('disabled', '');
				
				if($useStylish) {
					$('select', $searchForm).resetSS();
				}
				
			}
			
		});

	}    
}

$(function() {
	
	if($useStylish) { 
		$('select', $searchForm).sSelect({subString: $stylishLimit});
	}
	
	if($saveLastSearch) {
		
		var $searchId = $.searchCookie('searchId');

		$($searchForm).submit(function() {

			var $content = '';

			$('select', $searchForm).each(function() {
				var $obj = $(this);
				$content += '[' + $obj.attr('id') + ':' + $obj.val() + ']' + $obj.html() + $searchSplit;
			});

			$content += '[total_parcial:' + $("#total_parcial").html() + ']' + $("#total_parcial").html() + $searchSplit;

			$.ajax({
				url: $websiteUrl + 'search/tmp.php',
				data: 'act=2&c=' + $content + '&id=' + $searchId,
				dataType: 'json',
                                type: 'POST',
				async: false,
				success: function(data) {
                                    if(data.id != 'undefined' && data.id != '') {
                                        $.searchCookie('searchId', data.id, {path: '/'});
                                        selectedPropriety = 'selected="selected"';
                                    }
                                }
			});
		});
		
		if(typeof($searchId) == 'undefined' || $searchId == '') {
			reloadSearchFields(0);	
			return;
		}
		 
			var $fieldCount = 0;
			$.ajax({
				url: $websiteUrl + 'search/tmp.php',
				data: 'act=1&c=true&id=' + $searchId,
				async: false,
				complete: function(jqXHR, textStatus) {
					
					if(textStatus != 'success') {
						reloadSearchFields(0);
						return;
					} 
					
					data = jqXHR.responseText;

					if(data.search($searchSplit) != -1) {

						data = data.split($searchSplit);

						for(var i in data) {
							
							if( i == "Total"){
								$("#total_parcial").html(data[i][i]);
							}
							
							if(data[i] != '' && data[i].search(']') != -1) {
								var $data = data[i].split(']');
								
								var $idAndValue = $data[0].substr(1, $data[0].length).split(':');
								$('#' + $idAndValue[0]).html($data[1]).val($idAndValue[1]);
								$fieldCount++;
							}	 
						}

						if($useStylish) {
							$('select', $searchForm).resetSS();
						}
					
					}
					
				},
				type: 'POST'
			});
			
			if(($fieldCount > 0 && $fieldCount < $('select', $searchForm).length) || $fieldCount == 0) {
				reloadSearchFields(0);
				$.searchCookie('searchId', null); 	
			}
		
	} else {
		reloadSearchFields(0);  	
	}
	
});

