function getSearchParams()
{
    // Ищем параметры
    var params = new Array();
    var range = {};
    for (var i = 0; i < fields.length; ++i) {
        var value = undefined;
        switch (fields[i].type) {
        case 'inputtextrange':
            if ($('filter-' + fields[i].name)) {
                value = $('filter-' + fields[i].name).value;
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (value == "0" || value == "") {
                value = undefined;
            } else {
                var parts = fields[i].name.split('-');
                if (!range[parts[0]]) {
                    range[parts[0]] = {};
                }
                range[parts[0]][parts[1]] = value;
            }
            break;
        case 'string':
        case 'radios':
        case 'combobox':
        case 'select':
            if ($('filter-' + fields[i].name) ||
                (fields[i].name == 'make' || fields[i].name == 'model') && $('filter-' + fields[i].name + '_new'))
            {
                value = $('filter-' + fields[i].name)
                    ? $('filter-' + fields[i].name).value
                    : $('filter-' + fields[i].name + '_new').value;
                switch (fields[i].name) {
                case 'owners_count':
                    if (!value.match(/^\d+$/)) {
                        if (value !== '') {
                            $('filter-' + fields[i].name).focus();
                            alert('Кол-во владельцев должно быть числом');
                            return;
                        }
                        value = undefined;
                    }
                    break;
                }
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (value == "0" || value == "") {
                value = undefined;
            }
            break;
        case 'comboboxrange':
            if ($('filter-' + fields[i].name)) {
                value = $('filter-' + fields[i].name).value;
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (value == "0" || value == "") {
                value = undefined;
            } else {
                var parts = fields[i].name.split('-');
                if (!range[parts[0]]) {
                    range[parts[0]] = {};
                }
                range[parts[0]][parts[1]] = Number(value);
            }
            break;
        case 'checkbox':
            if ($('filter-' + fields[i].name)) {
                value = $('filter-' + fields[i].name).checked;
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (value) {
                value = 1;
            } else {
                value = undefined;
            }
            break;
        case 'price':
            if ($('filter-' + fields[i].name)) {
                value = $('filter-' + fields[i].name).value;
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (!value.match(/^\d+$/)) {
                if (value !== '') {
                    $('filter-' + fields[i].name).focus();
                    alert('Цена должна быть числом');
                    return;
                }
                value = undefined;
            } else {
                if (!range.price) {
                    range.price = {};
                }
                if (fields[i].name.match(/from/)) {
                    range.price.from = Number(value);
                } else {
                    range.price.to = Number(value);
                }
            }
            break;
        case 'mileage':
        	if(!$('filter-' + fields[i].name)){
        		break;
        	}
            if ($('filter-' + fields[i].name)) {
                value = $('filter-' + fields[i].name).value;
            } else if (fields[i].value !== undefined) {
                value = fields[i].value;
            }
            if (!value.match(/^\d+$/)) {
                if (value !== '') {
                    $('filter-' + fields[i].name).focus();
                    alert('Пробег должен быть числом');
                    return;
                }
                value = undefined;
            } else {
                if (!range.mileage) {
                    range.mileage = {};
                }
                if (fields[i].name.match(/from/)) {
                    range.mileage.from = Number(value);
                } else {
                    range.mileage.to = Number(value);
                }
            }
            break;
        case 'price-currency':
            if (range.price && (range.price.from || range.price.to)) {
                value = $('filter-' + fields[i].name).value;
            }
            break;
        default:
            break;
        }

        if (value !== undefined) {
            params.push(encodeURIComponent(fields[i].name) + '=' + encodeURIComponent(value));
        }
    }

    // Проверяем ranges
    for (var index in range) {
        if (range[index].from && range[index].to && range[index].from > range[index].to) {
            $('filter-' + index + '-from').focus();
            var f = ' ';
            switch(index) {
            case 'price':
                f += 'Цена';
                break;
            case 'mileage':
                f += 'Пробег';
                break;
            case 'year':
                f += 'Год выпуска';
                break;
            default:
                f = '';
            }
            alert('Указан неверный диапазон параметра' + f + '');
            return;
        }
    }

    // Добавляем параметры к строке поиска
    if (params.length > 0) {
        return '?search&' + params.join('&');
    }

    return '';
}

function processSearch()
{
    // Вычисляем URL
    var filterRegion = $('filter-region');
    var domain = filterRegion.options[filterRegion.selectedIndex].attributes.getNamedItem('domain').nodeValue;
    var filterNew = $('filter-new').checked;
    var filterUsed = $('filter-used').checked;
    var url = 'http://' + domain + '/cars/passenger/';

    if (filterNew && !filterUsed) {
        url += 'new/';
    } else if (!filterNew && filterUsed) {
        url += 'used/';
    }

    var params = getSearchParams();
    if (params === undefined) {
        return false;
    }
    url += params;

    document.location.href = url;

    return false;
}

function fillSearchValues()
{
    var deferModelsLoad = false;
    var deferDoorsLoad = false;

    var isUsed;
    if ($('filter-used')) {
        isUsed = $('filter-used').checked;
    } else {
    	isUsed = true;
    }

    for (var i = 0; i < fields.length; ++i) {
        if (fields[i].value !== undefined) {
            var parNode = $('filter-' + fields[i].name)
                ? $('filter-' + fields[i].name).parentNode
                : ($('filter-' + fields[i].name + '_new')
                    ? $('filter-' + fields[i].name + '_new')
                    : null);
            for(;;){
                if(parNode.id!=''){
                    break;
                }
                parNode=parNode.parentNode;
            }
            if(parNode.style.display=='none'){
                showhide(parNode.id.replace('extend-',''),'extend')
            }
            switch (fields[i].type) {
            case 'inputtext':
            case 'string':
            case 'price':
            case 'price-currency':
            case 'combobox':
            case 'comboboxrange':
            case 'select':
                if (fields[i].name != 'model' && fields[i].name != 'doors') {
                    if ($('filter-' + fields[i].name)) {
                        $('filter-' + fields[i].name).value = fields[i].value;
                    } else if ($('filter-' + fields[i].name + '_new')) {
                        $('filter-' + fields[i].name + '_new').value = fields[i].value;
                    }
                }
                if (fields[i].name == 'make') {
                    deferModelsLoad = fields[i].value;
                }
                if (fields[i].name == 'bodytype') {
                    deferDoorsLoad = fields[i].value;
                }
                if (fields[i].name == 'model' && deferModelsLoad !== false) {
                    if ($('filter-model')) {
                    	if (isUsed) {
                            getEnums('make_' + deferModelsLoad, 'filter-model', fields[i].value, 'Выберите модель');
                    	} else {
                    		getEnums('make_new_' + deferModelsLoad, 'filter-model', fields[i].value, 'Выберите модель');
                    	}
                    } else {
                        getEnums('make_new_' + deferModelsLoad, 'filter-model_new', fields[i].value, 'Выберите модель');
                    }
                    deferModelsLoad = false;
                }
                if (fields[i].name == 'doors' && deferDoorsLoad !== false) {
                    getEnums('bodytype_' + deferDoorsLoad, 'filter-doors', fields[i].value, '');
                    deferDoorsLoad = false;
                }
                break;
            case 'checkbox':
                if ($('filter-' + fields[i].name)) {
                    $('filter-' + fields[i].name).checked = true;
                }
                break;
            case 'radios':
                if ($('filter-' + fields[i].name)) {
                    $('filter-' + fields[i].name).value = fields[i].value;
                }
                if ($('filter-' + fields[i].name + '-id-' + fields[i].value)) {
                    $('filter-' + fields[i].name + '-id-' + fields[i].value).checked = true;
                }
                break;
            default:
            }
        }
    }
    if (deferModelsLoad !== false) {
        if ($('filter-model')) {
        	if (isUsed) {
                getEnums('make_' + deferModelsLoad, 'filter-model', '', 'Выберите модель');
        	} else {
                getEnums('make_new_' + deferModelsLoad, 'filter-model', '', 'Выберите модель');
        	}
        } else {
            getEnums('make_new_' + deferModelsLoad, 'filter-model_new', '', 'Выберите модель');
        }
    }
    if (deferDoorsLoad !== false) {
        getEnums('bodytype_' + deferDoorsLoad, 'filter-doors', '', '');
    }
}

function classifiedFilterSubmit()
{
    var select = $('region');
    var domain = select.options[select.selectedIndex].attributes.getNamedItem('domain').nodeValue;

    var params = getSearchParams();
    if (params === undefined) {
        return false;
    }
    document.location.href = "http://" + domain + document.location.pathname + params;
}

function changeType(e, onLoad)
{
	var isUsed = $('filter-used').checked;
	var makeSelect = $('filter-make');
	var makeText = makeSelect.options[makeSelect.selectedIndex].text;
	var modelSelect = $('filter-model');
	var modelText = modelSelect.options[modelSelect.selectedIndex].text;
	var makeOnLoad = function() {
		var makeFound = false;
		for (var i = 0; i < makeSelect.options.length; ++i) {
			if (makeSelect.options[i].text == makeText) {
				makeSelect.selectedIndex = i;
				makeFound = true;
				break;
			}
		}
		if (makeFound) {
			var modelOnLoad = function () {
				for (var i = 0; i < modelSelect.options.length; ++i) {
					if (modelSelect.options[i].text == modelText) {
						modelSelect.selectedIndex = i;
						break;
					}
				}
			}
			if (isUsed) {
                getEnums('make_' + makeSelect.value, 'filter-model', '', 'Выберите модель', modelOnLoad);
			} else {
                getEnums('make_new_' + makeSelect.value, 'filter-model', '', 'Выберите модель', modelOnLoad);
			}
		}
		if (typeof onLoad === "function") {
			onLoad();
		}
	}
	$('filter-model').innerHTML = '<option value="">Выберите модель</option>';

	if (isUsed) {
	    getEnums('make', 'filter-make', '', 'Выберите марку', makeOnLoad);

	    $('filter-make').observe('change', function () {
	    	getEnums('make_' + $('filter-make').value, 'filter-model', '', 'Выберите модель');
	    });
	} else {
		getEnums('make_new', 'filter-make', '', 'Выберите марку', makeOnLoad);

        $('filter-make').observe('change', function () {
            getEnums('make_new_' + $('filter-make').value, 'filter-model', '', 'Выберите модель');
        });
	}
}

function getFiltersString()
{
    var select = $('region');
    var domain = select.options[select.selectedIndex].attributes.getNamedItem('domain').nodeValue;

    var params = getSearchParams();
    if (params === undefined) {
        return false;
    }
   paramstring = 'http://' + domain + document.location.pathname + 'data/tpl-adv_rss/' + params;
   return params;
}
