$(document).ready(function(){

    // ------- Диалог -------
    $("#popup_desc_div").dialog({
    title: "Описание товара",
    autoOpen: false,
    width: 800,
    height: 700,
    resizable: true,
    draggable: true,
    position: "center",
    buttons: {
          'Закрыть': function() { $('input').show(); $("select").show(); $(this).dialog('close'); }
    }
    });
    // ------- Диалог -------

    $(findOptions.srcInput).keydown(function(e) {
        // track last key pressed
        lastKeyPressCode = e.keyCode;
        switch(e.keyCode) {
            case 38: // up
                //e.preventDefault();
                //moveSelect(-1);
                break;
            case 40: // down
                //e.preventDefault();
                //moveSelect(1);
                break;
            case 9:  // tab
            case 13: // return
                //if( selectCurrent() ){
                    // make sure to blur off the current field
                    //$input.get(0).blur();
                    //e.preventDefault();
                //}
                break;
            default:
                //active = -1;
                //inputChangeProcessing();
                /* Disable auto re-search
                if (timeout) clearTimeout(timeout);
                timeout = setTimeout(function(){
                                        var currentOptions = getCurrentOptions();
                                        onInputChange(currentOptions);
                                     }, findOptions.delay);
                //onChange();
                //*/
                break;
        }
    });


/*
    $(modelFindOptions.srcInput).keydown(function(e) {
        // track last key pressed
        lastKeyPressCode = e.keyCode;
        switch(e.keyCode) {
            case 38: // up
                //e.preventDefault();
                //moveSelect(-1);
                break;
            case 40: // down
                //e.preventDefault();
                //moveSelect(1);
                break;
            case 9:  // tab
            case 13: // return
                //if( selectCurrent() ){
                    // make sure to blur off the current field
                    //$input.get(0).blur();
                    //e.preventDefault();
                //}
                break;
            default:
                //active = -1;
                if (timeout) clearTimeout(timeout);
                timeout = setTimeout(function(){onInputChange(modelFindOptions);}, modelFindOptions.delay);
                //onChange();
                break;
        }
    });

    $(subasFindOptions.srcInput).keydown(function(e) {
        // track last key pressed
        lastKeyPressCode = e.keyCode;
        switch(e.keyCode) {
            case 38: // up
                //e.preventDefault();
                //moveSelect(-1);
                break;
            case 40: // down
                //e.preventDefault();
                //moveSelect(1);
                break;
            case 9:  // tab
            case 13: // return
                //if( selectCurrent() ){
                    // make sure to blur off the current field
                    //$input.get(0).blur();
                    //e.preventDefault();
                //}
                break;
            default:
                //active = -1;
                if (timeout) clearTimeout(timeout);
                timeout = setTimeout(function(){onInputChange(subasFindOptions);}, subasFindOptions.delay);
                //onChange();
                break;
        }
    });
*/

    //clear spares order cookie on load
    clearSpareCookies();

    if(typeof $.cookie("fio") == "string") {
        //alert(str);
        $("#firstname").val($.cookie("fio"));
    }
    if(typeof $.cookie("email") == "string") {
        $("#email").val($.cookie("email")+"");
    }
    if(typeof $.cookie("tel") == "string") {
        $("#phone").val($.cookie("tel")+"");
    }


});

    var aSrv = document.location.href.split('/');
    var serverName = aSrv[2];
    //alert(aSrv[2]);

	var timeout = null;
	var prev = "";
    var lastKeyPressCode;

    var findOptions;
    var modelFindOptions;
    var subasFindOptions;

    var modelDesc = new Array ();
    var modelId = new Array ();
    var modelRelTableNames = new Array ();
    var modelPartNumbers = new Array ();

    var subasDesc = new Array ();
    var subasId = new Array ();
    var subasRelTableNames = new Array ();

    var sparesDesc = new Array ();
    var sparesId = new Array ();
    var sparesRelTableNames = new Array ();
    var sparesPartNumbers = new Array ();


    var modelsLock = 0;
    var subasLock = 0;
    var sparesLock = 0;

    findOptions = {
        delay: 500,
        minChars: 4,
        extraParams: {where:"spares", model_input:"", subas_input:"", spare_input:"", model_select:"", subas_select:"", spare_select:"", producer:""},
        srcInput: "#spare_find",
        destDiv: "#spare_select",
        destSelect: "#spare_name",
        loadingClass: "ac_loading",
        url: "get_select_data.php"
    };

    modelFindOptions = {
        delay: 500,
        minChars: 4,
        extraParams: {where:"models", model_input:"", subas_input:"", spare_input:"", model_select:"", subas_select:"", spare_select:"", spare_partno:"", producer:""},
        srcInput: "#spare_find",
        destDiv: "#model_select",
        destSelect: "#model_name",
        loadingClass: "ac_loading",
        url: "get_select_data.php"
    };

    subasFindOptions = {
        delay: 500,
        minChars: 4,
        extraParams: {where:"subas", model_input:"", subas_input:"", spare_input:"", model_select:"", subas_select:"", spare_select:"", spare_partno:"", producer:""},
        srcInput: "#spare_find",
        destDiv: "#subas_select",
        destSelect: "#subas_name",
        loadingClass: "ac_loading",
        url: "get_select_data.php"
    };

//var urlHistory = "";
function onFindBtnClick(){
    // check for 1 char min in input
    var currentOptions = getCurrentOptions();
    var v = $(currentOptions.srcInput).val();
    if(v.length > 0){
        // clear selectes options
        $("#model_name").val("");
        $("#subas_name").val("");
        $("#spare_name").val("");

        //alert($("#spare_name").val());

        //
        startFindDisableSelect(currentOptions.destSelect);
        if (requestSelectData(currentOptions)) {
            onSelectChange(currentOptions.destSelect);
            //alert(urlHistory);
        }
    } else {
        alert("Введите строку для поиска!");
        $(currentOptions.srcInput).focus();
    }
}

function getCurrentOptions(){
    var currentOptions;
    switch ($("#where").val()) {
        case "models":
            currentOptions = modelFindOptions;
            break;
        case "subas":
            currentOptions = subasFindOptions;
            break;
        //case "spares":
        //    currentOptions = findOptions;
        //    break;
        default:
            currentOptions = findOptions;
            break;
    }
    return currentOptions;
}


function onInputChange(opt) {
    var v = $(opt.srcInput).val();
    //if (v == prev) return;
    //prev = v;
    if (v.length >= opt.minChars) {
        //$(opt.srcInput).addClass(opt.loadingClass);

        // hack - set value of select to ''
        //$(opt.destSelect).val('');
        startFindDisableSelect(opt.destSelect);

        if (requestSelectData(opt)) {
            onSelectChange(opt.destSelect);
            //alert(urlHistory);
        }
    } else {
        //$(opt.srcInput).removeClass(opt.loadingClass);
    }
};

function requestSelectData(opt) {
    //var q = $(opt.srcInput).val();

    //if (!options.matchCase) q = q.toLowerCase();
    //alert ("request" + opt.srcInput);

    if( (typeof opt.url == "string") && (opt.url.length > 0) ){
        //
        //subselectFieldInput: "#spare_find",
        //subselectFieldSelect: "#spare_name"
        //extraParams: {where:"models", subselect_name:"", subselect_type:"="},

        // заполняем дополнительные параметры запроса
        opt.extraParams.model_input = "";
        opt.extraParams.subas_input = "";
        opt.extraParams.spare_input = "";

        // определяем к которой категории относится инпут и заполняем
        switch ($("#where").val()) {
            case "models":
                opt.extraParams.model_input = encodeSpecialChars($("#spare_find").val());
                break;
            case "subas":
                opt.extraParams.subas_input = encodeSpecialChars($("#spare_find").val());
                break;
            case "spares":
                opt.extraParams.spare_input = encodeSpecialChars($("#spare_find").val());
                break;
            default:
                currentOptions = findOptions;
                break;
        }

        opt.extraParams.model_select = encodeSpecialChars($("#model_name").val());
        opt.extraParams.subas_select = encodeSpecialChars($("#subas_name").val());
        opt.extraParams.spare_select = encodeSpecialChars($("#spare_name").val());

        // Spare part number
        var sparePartNo = "";
        if(opt.extraParams.spare_select != ""){
            var sel = document.getElementById('spare_name');
            if (sel) {
                sparePartNo = sparesPartNumbers[sel.selectedIndex - 1];
            }
        }
        //alert(sparePartNo);
        opt.extraParams.spare_partno = encodeSpecialChars(sparePartNo);

        // Model part number
        var modelPartNo = "";
        if(opt.extraParams.model_select != ""){
            var sel = document.getElementById('model_name');
            if (sel) {
                modelPartNo = modelPartNumbers[sel.selectedIndex - 1];
            }
        }
        //alert(sparePartNo);
        opt.extraParams.model_partno = encodeSpecialChars(modelPartNo);


//alert(opt.extraParams.model_select);

        //opt.extraParams.producer = $("#sarch_by_producer").val();
        // составление списка выбранных производителей
        opt.extraParams.producer = "";
        var aSelect = $('#sarch_by_producer').val() || [];
        var i;
        if (aSelect[0] != '') {
            opt.extraParams.producer = aSelect.join(',');
        }

/*
        if ($(opt.subselectFieldSelect).val() != '') {
            opt.extraParams.subselect_type = "equal";
            opt.extraParams.subselect_name = $(opt.subselectFieldSelect).val();
        } else {
            opt.extraParams.subselect_type = "like";
            opt.extraParams.subselect_name = $(opt.subselectFieldInput).val();
        }
*/
//alert(makeRequestUrl(opt));
        $.get(makeRequestUrl(opt), function(data) {
            if (data) {
                var aData = data.split("<!data_part!>");
                //alert (aData[3]);

                // change select
                if(opt.destDiv != "") {
                  $(opt.destDiv).html(aData[2]);
                }

                // fill desc and id arrays
                switch (opt.extraParams.where){
                    case "models":
                        // fill descriptions array
                        modelDesc = aData[0].split("<!separator!>");
                        // fill good id array
                        modelId = aData[1].split(";");
                        // fill good name for relation table array
                        modelRelTableNames = aData[3].split(";");

                        modelPartNumbers = aData[4].split(";");
                        // add link to lock/unlock if not exists
                        //if($("#model_lock").html() == '') {
                        //    lockSelection("model_name", "unlock");
                        //}
                        break;
                    case "subas":
                        // fill descriptions array
                        subasDesc = aData[0].split("<!separator!>");
                        // fill good id array
                        subasId = aData[1].split(";");
                        // fill good name for relation table array
                        subasRelTableNames = aData[3].split(";");
                        // add link to lock/unlock if not exists
                        //if($("#subas_lock").html() == '') {
                        //    lockSelection("subas_name", "unlock");
                        //}
                        break;
                    case "spares":
                        // fill descriptions array
                        sparesDesc = aData[0].split("<!separator!>");
                        // fill good id array
                        sparesId = aData[1].split(";");
                        // fill good name for relation table array
                        sparesRelTableNames = aData[3].split(";");

                        sparesPartNumbers = aData[4].split(";");
                        // add link to lock/unlock if not exists
                        //if($("#spare_lock").html() == '') {
                        //    lockSelection("spare_name", "unlock");
                        //}
                        break;
                    default:
                        break;
                }

            }
            $(opt.srcInput).removeClass(opt.loadingClass);
        });
    } else {
        $(opt.srcInput).removeClass(opt.loadingClass);
    }
    return 1;
}

function makeRequestUrl(opt) {
    var url = opt.url + "?";
    for (var i in opt.extraParams) {
        url += "&" + i + "=" + encodeURI(opt.extraParams[i]);
    }
    //alert(url);
    //urlHistory = urlHistory + "\n" + url;
    return url;
};



var types = Array ("spare", "service", "machine", "testdrive");
var typesRus = Array ("Запчасть", "Сервис", "Техника", "Тест-драйв");

var spareMaxRowId = 0;
var spareRowOffset = 4;

function addSpareRow(spareName, spareCnt, spareId, spareDesc, spareType) {
    var rowId, oRow, oCelll;

    //check
    if(spareName == "") {
        alert("Добавление невозможно, так как не выбран товар.");
        return false;
    }
    if(spareCnt < 1) {
        alert("Добавление невозможно, так как количество товара меньше 1.");
        return false;
    }
    //alert("add rom");
    var table = document.getElementById('buy_spares_table');
    if(table) {
        //tb = table.getElementsByTagName('TBODY')[0];

        //alert("table found");


        spareMaxRowId++;
        rowId = spareMaxRowId;

        var row = "<tr id='spares"+rowId+"' clearid='" + rowId + "' spname='" + spareName + "' spcount='" + spareCnt + "' spid='" + spareId + "' sptype='" + spareType + "'>";
        row += "<td>"+spareName+"</td><td>"+spareDesc+"</td><td>"+spareCnt+"</td><td>Есть</td><td align=center>";
        row += "<a id='delField_" + rowId + "' href=\"javascript:void('" + rowId + "')\" onClick=\"onDeleteSpare(" + rowId + ");return false;\">Удалить</a>";
        row += "</td></tr>\n";
        //alert(row);
        $("#buy_spares_table").append(row);
    }
}

function getRowIndex(rowId){
    if (rowId != '') {
        for(i = spareRowOffset; i < buy_spares_table.rows.length; i++){
            if(rowId == buy_spares_table.rows[i].getAttribute("clearid")){
                return i;
            }
        }
    }
}

function deleteSpareRow(rowId){
    var rowIdName = '#spares' + rowId;
    if (rowId != '') {
        $(rowIdName).replaceWith("");
    }
}

function clearSpareCookies() {
    $.cookie("buy_spares_list", null);
}

function updateSparesList() {
    var newList = '';
    var spareName;
    var spareCnt;
    var spareId;
    var spareType;
    var i;
    //alert("oldList = " + $.cookie("buy_spares_list"));

    for(i = spareRowOffset; i < buy_spares_table.rows.length; i++){
        spareName = buy_spares_table.rows[i].getAttribute("spname");
        spareCnt = buy_spares_table.rows[i].getAttribute("spcount");
        spareId = buy_spares_table.rows[i].getAttribute("spid");
        spareType = buy_spares_table.rows[i].getAttribute("sptype");
        if(newList != '') {
            newList += "`";
        }
        newList += spareId + "|" + spareName + "|" + spareCnt + "|" + spareType;
    }

    //alert("newList = " + newList);
    clearSpareCookies();
    $.cookie("buy_spares_list", newList);
}

function updateContacts(contName, val) {
    if(contName == "fio" || contName == "email" || contName == "tel") {
        $.cookie(contName, val);
    }
    //alert("newContacts: " + $.cookie("fio") + $.cookie("email") + $.cookie("tel"));
}

function onAddSubmit(form, type) {
    var goodName = '';
    var goodCnt = 0;
    var goodId = 0;
    var goodDesc = '';
    var goodType = '';

    var formAvailable = true;
    if(!form) {
        formAvailable = false;
    }
    switch (type) {
        case 'model':
            goodName = $("#model_name").val();
            goodCnt = $("#model_cnt").val();
            goodId = modelId[$("#model_name").get(0).selectedIndex - 1];
            goodDesc = modelDesc[$("#model_name").get(0).selectedIndex - 1];
            goodType = 'machine';
            break;
        case 'subas':
            goodName = $("#subas_name").val();
            goodCnt = $("#subas_cnt").val();
            goodId = subasId[$("#subas_name").get(0).selectedIndex - 1];
            goodDesc = subasDesc[$("#subas_name").get(0).selectedIndex - 1];
            goodType = 'spare';
            break;
        case 'spare':
            goodName = $("#spare_name").val();
            goodCnt = $("#spare_cnt").val();
            goodId = sparesId[$("#spare_name").get(0).selectedIndex - 1];
            goodDesc = sparesDesc[$("#spare_name").get(0).selectedIndex - 1];
            goodType = 'spare';
            break;
        default:
            return false;
            break;
    }
		
    // validate
    if(!formAvailable) {
        alert("Ошибка: не удалось добавить товар в корзину. Ваш браузер не поддерживает необходимые функции. Попробуйте использовать другой браузер.");
        return false;
    }

    //alert(spareName + " - " + spareCnt);
    // add to table
    addSpareRow(goodName, goodCnt, goodId, goodDesc, goodType);

    // update cookies by table
    updateSparesList();

    return false;
}

function onDeleteSpare(rowId) {

    // delete from table
    deleteSpareRow(rowId);	

    // update cookies by table
    updateSparesList();

    return false;
}

function getInfoValue(orderList) {
    var infoValue = "";
    var aList;
    var aSpare;
    var tmpType;
    if(typeof orderList == "string") {

        aList = orderList.split("`");
        if(aList.length) {
            for(var i=0; i < aList.length; i++) {
                //if(infoValue.length) {
                    infoValue += "\n";
                //}
                aSpare = aList[i].split("|");
                tmpType = typesRus[types.indexOf(aSpare[3])];
                if(tmpType == "") {
                    tmpType = aSpare[3];
                }
                infoValue += "id:" + aSpare[0] + ", название: " + aSpare[1] + ", количество: " + aSpare[2] + ", тип: " + tmpType;
            }
        }
    }
    return infoValue;
}

function onBuySparesSubmit(form) {

    // fill info field by spares list + order list from catalogue and pricelist
    var tmpList = $.cookie("buy_spares_list");
    var infoValue = getInfoValue(tmpList);

    form.info.value = infoValue;
    form.orderlist.value = tmpList;
    alert("info: " + form.info.value);

    // checks form
    if (form.info.value == '') {
        alert("Не выбраны запчасти для покупки");
        return false;
    }
    if (form.firstname.value == '') {
        form.firstname.focus();
        alert("Введите ваше имя");
        return false;
    }
    if (form.email.value == '') {
        form.email.focus();
        alert("Введите правильный адрес электронной почты");
        return false;
    } else if(isEmail(form.email.value) == false) {
        form.email.focus();
        alert("Некорректный адрес электонной почты!");
        return false;
    }

    if (form.phone.value == '') {
        form.phone.focus();
        alert("Введите телефон");
        return false;
    }
    if (!isPhone(form.phone.value)) {
        form.phone.focus();
        alert("Введите, пожалуйста, настоящий телефон. Телефонный номер должен содержать только цифры, допускаются пробелы, скобки, '+', '-'");
        return false;
    }

    clearSpareCookies();

    // save return url to form
    $("#return_page_url").val(window.location);

    return true;
}

function isPhone(string) {
    if(string.search(/^[0-9+() -]+$/) != -1) {
        return true;
    }else{
        return false;
    }
}

function onBuySparesClick() {
    var form = document.getElementById('contact');
    if(form == null) {
        form = document.all['contact'];
    }
    if(form) {
        if(onBuySparesSubmit(form)) {
            //alert("form ok");
            form.submit();
        }
    } else {
        alert("Ошибка скрипта - не найдена форма");
    }
    return false;
}

function onAddClick(type) {
    var form = document.getElementById('add_spares');
    if(form == null) {
        form = document.all['add_spares'];
    }
    if(form) {
        return onAddSubmit(form, type);
    } else {
        alert("Ошибка скрипта - не найдена форма");
    }
    return false;
}

function onClearSparesClick() {
    //alert(spareMaxRowId);
    var rowIdName;
    if(spareMaxRowId > 0) {
        for(var i = 1; i <= spareMaxRowId; i++) {
            rowIdName = '#spares' + i;
            $(rowIdName).replaceWith("");
        }
    }
    spareMaxRowId = 0;
    clearSpareCookies();
    return false;
}

function onSelectChange(destSelectName) {
    if (destSelectName == "#spare_name") {
        onSpareNameSelect("");
    }
    if (destSelectName == "#model_name") {
        onModelNameSelect("");
    }
    if (destSelectName == "#subas_name") {
        onSubasNameSelect("");
    }
}

function onSpareNameChange() {
    var sel = document.getElementById('spare_name');
    var desc = '';
    if (sel) {
        if (sel.disabled) {
            $('#spare_desc').html('');
        } else {
            if(sel.selectedIndex == 0) {
                $('#spare_desc').html('');
            } else {
                desc = getDescShortText(sparesDesc[sel.selectedIndex - 1], sparesId[sel.selectedIndex - 1]);
                //if($.cookie("is_logged_in") == "1") {
                    desc += "<br><a href = 'http://"+serverName+"/tech_relations_table.php?spare_part_no=" + sparesRelTableNames[sel.selectedIndex - 1] + "' target='tech_rel_wnd'>Таблица соответствия агрегатов</a>";
                //}
                $('#spare_desc').html(desc);
            }
        }
    }
}

function onSpareNameSelect(src) {
    onSpareNameChange();

    // очистка поля ввода
    if(src == "select"){
        $("#spare_find").val("");
    }

    // переполучение/выключение списка моделей
    if (modelsLock == 0) {
        startFindDisableSelect(modelFindOptions.destSelect);
        //$(modelFindOptions.destSelect).attr("disabled","disabled");
        //$('#model_desc').html('');
        requestSelectData(modelFindOptions);
        onModelNameChange();
    }
    // переполучение/выключение списка узлов
    if (subasLock == 0) {
        startFindDisableSelect(subasFindOptions.destSelect);
        //$(subasFindOptions.destSelect).attr("disabled","disabled");
        //$('#subas_desc').html('');
        requestSelectData(subasFindOptions);
        onSubasNameChange();
    }
}

function onModelNameChange() {
    var sel = document.getElementById('model_name');
    var desc = '';
    if (sel) {
        if (sel.disabled) {
            $('#model_desc').html('');
        } else {
            if(sel.selectedIndex == 0) {
                $('#model_desc').html('');
            } else {
                desc = getDescShortText(modelDesc[sel.selectedIndex - 1], modelId[sel.selectedIndex - 1]);
                //if($.cookie("is_logged_in") == "1") {
                    desc += "<br><a href = 'http://"+serverName+"/tech_relations_table.php?model_name=" + modelRelTableNames[sel.selectedIndex - 1] + "' target='tech_rel_wnd'>Таблица соответствия агрегатов</a>";
                //}
                $('#model_desc').html(desc);
            }
        }
    }
}

function onModelNameSelect(src) {
    onModelNameChange();

    // очистка поля ввода
    if(src == "select"){
        $("#spare_find").val("");
    }

    // переполучение/выключение списка узлов
    if (subasLock == 0) {
        startFindDisableSelect(subasFindOptions.destSelect);
        //$(subasFindOptions.destSelect).attr("disabled","disabled");
        //$('#subas_desc').html('');
        requestSelectData(subasFindOptions);
        onSubasNameChange();
    }
    // переполучение/выключение списка запчастей
    if (sparesLock == 0) {
        startFindDisableSelect(findOptions.destSelect);
        //$(findOptions.destSelect).attr("disabled","disabled");
        //$('#spare_desc').html('');
        requestSelectData(findOptions);
        onSpareNameChange();
    }
}

function onSubasNameChange() {
    var sel = document.getElementById('subas_name');
    var desc = '';
    if (sel) {
        if (sel.disabled) {
            $('#subas_desc').html('');
        } else {
            if(sel.selectedIndex == 0) {
                $('#subas_desc').html('');
            } else {
                desc = getDescShortText(subasDesc[sel.selectedIndex - 1], subasId[sel.selectedIndex - 1]);
                //if($.cookie("is_logged_in") == "1") {
                    desc += "<br><a href = 'http://"+serverName+"/tech_relations_table.php?subassembly_name=" + subasRelTableNames[sel.selectedIndex - 1] + "' target='tech_rel_wnd'>Таблица соответствия агрегатов</a>";
                //}
                $('#subas_desc').html(desc);
            }
        }
    }
}

function onSubasNameSelect(src) {
    onSubasNameChange();

    // очистка поля ввода
    if(src == "select"){
        $("#spare_find").val("");
    }

    // переполучение/выключение списка моделей
    if (modelsLock == 0) {
        startFindDisableSelect(modelFindOptions.destSelect);
        //$(modelFindOptions.destSelect).attr("disabled","disabled");
        //$('#model_desc').html('');
        requestSelectData(modelFindOptions);
        onModelNameChange();
    }
    // переполучение/выключение списка запчастей
    if (sparesLock == 0) {
        startFindDisableSelect(findOptions.destSelect);
        //$(findOptions.destSelect).attr("disabled","disabled");
        //$('#spare_desc').html('');
        requestSelectData(findOptions);
        onSpareNameChange();
    }
}

function startFindDisableSelect(selectName) {
    var cleanName =  selectName.substr(1);
    //alert(cleanName);
    $(selectName).replaceWith("<select name='" + cleanName + "' id='" + cleanName + "' disabled><option value=''>Подождите, идёт поиск</option></select>");

    // clear desc
    if (selectName == "#spare_name") {
        $('#spare_desc').html('');
    }
    if (selectName == "#subas_name") {
        $('#subas_desc').html('');
    }
    if (selectName == "#model_name") {
        $('#model_desc').html('');
    }

}

function lockSelection(selectId, command) {
    var newLnk = '';
    var lnkSelectName = '';
    var lnkCommand = '';
    var lnkDestDiv = '';
    var lockVal;

    if (command == 'lock') {
        lockVal = 1;
        lnkCommand = 'unlock';
    }
    if (command == 'unlock') {
        lockVal = 0;
        lnkCommand = 'lock';
    }

    if (selectId == 'model_name') {
        modelsLock = lockVal;
        lnkSelectName = 'model_name';
        lnkDestDiv = '#model_lock';
    }

    if (selectId == 'subas_name') {
        subasLock = lockVal;
        lnkSelectName = 'subas_name';
        lnkDestDiv = '#subas_lock';
    }

    if (selectId == 'spare_name') {
        sparesLock = lockVal;
        lnkSelectName = 'spare_name';
        lnkDestDiv = '#spare_lock';
    }

    if (lnkSelectName != '' && lnkCommand != '') {
        if (lnkCommand == 'lock') {
            lnkText = 'Закрепить выбор';
            $("#"+lnkSelectName).attr("disabled","");
        } else {
            lnkText = 'Снять закрепление выбора';
            $("#"+lnkSelectName).attr("disabled","disabled");
        }
        newLnk = "<a href=\"javascript:lockSelection('" + lnkSelectName +"', '" + lnkCommand + "')\">" + lnkText + "</a>";
    }
    if (newLnk != '' && lnkDestDiv != '') {
        $(lnkDestDiv).html(newLnk);
    }
}

function getDescShortText(srcText, id) {
    //if(srcText.length > 64) {
    if(srcText.length == 0) {
        srcText += 'Описание отсутствует';
    }
    if(srcText.length > 150) {
/*
        srcText = srcText.slice(0, 60);
        srcText +=" ...";
//*/
        srcText = "";
        srcText += " <a href='javascript:onDescClick(" + id + ")' style='color: #808080;'>Посмотреть описание</a>";
    } else {
        //srcText = "<pre>" + srcText + "</pre>";
    }

    // replace \n -> <br>
    //srcText.replace("\n", "<br>");

    return srcText;
}

function onDescClick(id) {
    //var htmlDesc = getDescFullText(index);
    //var url = findOptions.url + "?q=" + servicesId[index] + "&where=link";
    //var lnk;

    var bodyCursor = $("body").css("cursor");
    $("body").css("cursor", "wait");

    $.get(findOptions.url, {q: id, where: "desc"}, function(data) {
        //alert(data);

        $("body").css("cursor", bodyCursor);
        $('#popup_desc_div').html(data);
        //$("#det_link").attr('href', data);
        $("select").hide();
        $('input').hide();
        $("#popup_desc_div").show();
        //$("#service_name").css('z-index', '10');
        //$("#popup_desc_div").css('z-index', '1000');
        $("#popup_desc_div").dialog("open");
    });

}

function onWhereTypeChanged(where) {
    if ($("#where").val() != where) {
        $("#spare_find").val("");
    }
    $("#where").val(where);
}

function onProducerChanged(){
    //var newProducer = $("#sarch_by_producer").val();
    //alert($("#sarch_by_producer").val());
    var currentOptions = getCurrentOptions();
    onInputChange(currentOptions);
}

function encodeSpecialChars(str){
//"   #[2] %   &[2]  '  *   ,[2] :[2] ;[2]  <   >   ?[2] [   ^   `   {   |   }  <пробел>
//%22 %23  %25 %26  %27 %2a %2c  %3a  %3b   %3c %3e %3f  %5b %5e %60 %7b %7c %7d   +[3]
// пока нужно только # &
    str = str.replace("#", "%23");
    str = str.replace("&", "%26");

    return str;
}
