function makeRequest(url,module,option,id) {
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("MSXML2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert("Не вышло  Невозможно создать экземпляр класса XMLHTTP ");
        return false;
    }
    //alert(module);
    switch (module) {
        case "search" :
            http_request.onreadystatechange = function() { searchRequest(http_request); };
            break;
        case "getModel" :
            http_request.onreadystatechange = function() { getModelRequest(http_request); };
            break;
        default :
            http_request.onreadystatechange = function() { alertContents(http_request); };
    }

    http_request.open("GET", url, true);
    http_request.send(null);
}

function alertContents(http_request){
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            alert('Действие возимело силу и успешно удалось.');
        } else {
            alert("Неудалось получить ответ от сервера. Пожалуйста повторите действие.");
        }
    }
}

function getInputs(field, id){
    var inpts = $('searchForm').getElements('input');
    pars = '';
    for(i=0;i<inpts.length;i++){
        if(inpts[i].checked===true){
            pars += inpts[i].name+'='+inpts[i].value+'&';
        }
    }
    return pars;
}

function getSelects(field, id){
    var slcts = $('searchForm').getElements('select');
    pars = '';
    for(i=0;i<slcts.length;i++){
        opts = slcts[i].getChildren();
        for(j=0;j<opts.length;j++){
            if(opts[j].selected===true){
                pars += slcts[i].name+'='+opts[j].value+'&';
                if(slcts[i].name=='car' && opts[j].value!=''){
                    carSel = opts[j].value;
                }
                if(Cookie.read('car')!==null && Cookie.read('car')!=carSel) $('carModel').value = '';
            }
        }
    }
    pars = substr(pars, 0, -1);
    return pars;
}

function search(field, id){
    carSel = $('car').value;
    pars = getInputs(field, id)+getSelects(field, id);
    //alert('/utils/ajax/search.php?'+pars);
    makeRequest('/utils/ajax/search.php?'+pars, 'search');
}

function getModels(field, id){
    carSel = $('car').value;
    pars = getInputs(field, id)+getSelects(field, id);
    if(carSel=='') {
        $('carModel').disabled = true;
        $('carModel').value = '';
    }
    else
    {
        Cookie.write('car', carSel);
        $('carModel').disabled = false;
    }
    //alert('/utils/ajax/search.php?model=yes&'+pars);
    doRequest('/utils/ajax/search.php?model=yes&'+pars);
    makeRequest('/utils/ajax/search.php?'+pars, 'search');
}

function doRequest(url){
    var json_request = new Request.JSON({url: url, onSuccess: getModelRequestValue}).get();
}

function getModelRequestValue(responseJSON, responseText){
    if(responseJSON!==null){
        var list = $('carModel');
        list.empty();
        var op = document.newElement('OPTION', {'value':''});
        op.innerHTML = 'Модель не важна';
        list.appendChild(op)
        for(i=0;i<responseJSON.length;i++){
            var op = document.newElement('OPTION', {'value':responseJSON[i]})
            op.innerHTML = responseJSON[i]
            list.appendChild(op)
        }
    }
}
function getModelRequest(http_request){
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            $('carModel').innerHTML = http_request.responseText;
        } else {
            alert("Неудалось получить ответ от сервера. Пожалуйста повторите действие.");
        }
    }
}

function searchRequest(http_request, option, id){
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            $('searchResults').innerHTML = http_request.responseText;
        } else {
            alert("Неудалось получить ответ от сервера. Пожалуйста повторите действие.");
        }
    }
}

function substr( f_string, f_start, f_length ) {    // Return part of a string
    // 
    // +     original by: Martijn Wieringa
 
    if(f_start < 0) {
        f_start += f_string.length;
    }
 
    if(f_length == undefined) {
        f_length = f_string.length;
    } else if(f_length < 0){
        f_length += f_string.length;
    } else {
        f_length += f_start;
    }
 
    if(f_length < f_start) {
        f_length = f_start;
    }
 
    return f_string.substring(f_start, f_length);
}

function is_array(value) {
    return (value instanceof Array);
}

