﻿var YearRadioGroup = null; //new DIRadioGroup('controlConteiner', "", 'Year', null,  GetPriceClick, 'radio_selected', 'radio_unselected');
var ModelRadioGroup = null; //new DIRadioGroup('controlConteiner', "", 'Model', null,  GetPriceClick, 'radio_selected', 'radio_unselected');
var WheelRadioGroup = null;
var PowerRadioGroup = null; //new DIRadioGroup('controlConteiner', "", 'Power', null,  GetPriceClick, 'radio_selected', 'radio_unselected');
var RegionRadioGroup = null;
var BuyRegionRadioGroup = null;
var creditRadioGroup = null;
var isDomestic = false;
var wheelData = 'false:Левый;true:Правый';
var creditData = 'true:Да;false:Нет';
var regionData = 'Москва;Московская обл;Санкт-Петербург;Ленинградская обл';
var buyRegionData = 'Москва;Санкт-Петербург';
var regionListType = 0;
var piterCities = ["Санкт-Петербург", "Ленинградская обл", "Архангельск", "Калининград", "Мурманск", "Новгород", "Вологда", "Сыктывкар", "Великий Новгород"];

securitySystemType = 0;

//Тип полиса
var policyTypeRadioGroup = null;
var policyTypes = '5:КАСКО;0:ОСАГО;10:КАСКО+ОСАГО';
var selected_policy_type = "";

//Показана или нет панель с машинами
var is_brand_list_shown = false;
var is_brand_info_shown = false;

//Используются при анимации
var list_shown = false;
var info_shown = false

//Активна или нет анимация
var animation_is_active = false;

var old_search_car_value = '';
var selected_car_text = '';

//Ид выбранного бренда
var brand_id = -1;

var selected_year = -1;

var selected_model = '';

var selected_right_hand = 'false';

var selected_power = '';

//var car_price = -1;

var selected_credit = '';

var selected_region = '';

var selected_buy_region = '';

var calc_btn_clicked = false;

var needToSelectPUU = false;

//Кликнута ссылка с брендом
//<param name='value'>ID бренда</param>
//<param name='text'>Название бренда</param>
function SelectCarClick(value, text) {
    is_brand_list_shown = false;
    is_brand_info_shown = true;

    /*if (!restore_car_info)
    {
    selected_year = -1;
    selected_model = "";
    selected_power = "";
    car_price = -1;
    }
    else
    {
    restore_car_info = false;	
    }*/

    //В поле поиска вводим название выбранного бренда	
    document.getElementById(car_search_control_id).value = text;
    document.getElementById(car_search_control_id).className = car_search_class;

    if (selected_car_text != text) {
        if (!restore_car_info) {
            selected_year = -1;
            selected_model = '';
            selected_power = '';
            selected_right_hand = 'false';
            //car_price = -1;
            selected_credit = '';
            selected_buy_region = '';
            selected_region = '';
            selected_policy_type = '';
            isDomestic = IsDomesticCar(text);
            ClearSelectedBank();
            HideAllCarInfoTR();
            carModelInfo.clear(true);
        }
        else {
            HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR', 'CarBuyRegionTR', 'CarPolicyTypeTR']);
            $get('CarWheelTR').style.display = isDomestic ? 'none' : '';
            /*if (selected_credit == 'true') {
            $get('BankChooserTR').style.display = '';
            PageMethods.GetBanks(selected_buy_region, OnGetBanksSucceded, OnGetBanksFailed);
            }*/
        }

        //Делаем запрос на получение информации о бренде	    
        PageMethods.GetBrandCarsInfoXML(value, selected_year != -1 ? selected_year : "", selected_model, RenderBrandInfo, ErrorGettingBrandInfo);
        brand_id = value;
        selected_car_text = text;
        //$get(choose_btn_id).className = 'toChoose-disabled';
    }
    else {
        //$get(calculate_div_id).className = CheckCanCalculate() ? null : 'disable';
        SetCalcBtnStatus();
        carModelInfo.visible(true);
        //SetChooseBtnStatus();
    }

    //Кликаем на кнопку для показа информации о бренде
    $get(show_car_info_btn_id).click();

    //Помечаем эту машину в списке брендов
    SelectValuesInList(car_list_control_id, text, false);

    //$get(calculate_div_id).className = CheckPrice() ? null : 'disable';
}

function CheckMultiDriveAble() {
    var isPiterRegion = false;
    if (selected_buy_region != "") {
        var i = 0;
        for (i = 0; i < piterCities.length; i++) {
            if (selected_buy_region == piterCities[i]) {
                isPiterRegion = true;
                break;
            }
        }
    }
    if (priceTrackBar.get_value() < 1500000 && isPiterRegion && !isProgramV3) return false;
    if (creditRadioGroup && creditRadioGroup.getValue() == "true") return false;

    return true;
}

//Устанавливаем стиль кнопки расчитать в завимости от заполнения всех необходимых параметров
function SetCalcBtnStatus() {
    if (!calc_btn_clicked) {
        //Показываем прячем мультидрайв
        showHideMultiDrive(CheckMultiDriveAble());
        $get(calculate_div_id).className = CheckCanCalculate() ? activeCalcBtnClass : inactiveCalcBtnClass;
    }
}


//Устанавливаем стиль кнопки выбрать в завимости от заполнения всех необходимых параметров
function SetChooseBtnStatus() {
    //$get(choose_btn_id).className = CheckCarInfo() ? 'toChoose' : 'toChoose-disabled';
}

//Рендерим контролы для панели с информацией для выбора машины
//<param name='list' type='List<string[]>'>Список массивами содержащие информацию о бренде, в том числе год выпуска, модели и мощность</param>
function RenderBrandInfo(list) {
    if (list.length < 3)
        return;

    //Сбрасываем выбранные значения, это необходимо, чтобы пока все контролы не отрендерятся не считалась цена для них
    if (YearRadioGroup && ModelRadioGroup && PowerRadioGroup) {
        YearRadioGroup._value.value = '';
        ModelRadioGroup._value.value = '';
        PowerRadioGroup._value.value = '';
    }

    //Если контролы не были еще созданы, создаем их, в противном случае ребилдим
    if (list[0].length > 0) {
        if (!YearRadioGroup) {
            YearRadioGroup = new DIRadioGroup(year_conteiner_id, list[0].join(';'), 'Year', null, YearClick, brand_info_radio_selected_css_class, '');
            //selected_year = selected_year > -1 ? selected_year : list[0][0];
            YearRadioGroup.selectByID(selected_year);
        }
        else {
            //YearRadioGroup.rebuild(list[0].join(';'), list[0][0]);
            //selected_year = selected_year > -1 ? selected_year : list[0][0];
            YearRadioGroup.rebuild(list[0].join(';'), selected_year);
        }
    }

    if (list[1].length > 0) {
        if (!ModelRadioGroup) {
            ModelRadioGroup = new DIRadioGroup(model_conteiner_id, list[1].join(';'), 'Model', null, ModelClick, brand_info_radio_selected_css_class, '');
            //selected_model = selected_model != "" ? selected_model : list[1][0];
            //selected_model = list[1][0];
            ModelRadioGroup.select(selected_model);
        }
        else {
            //selected_model = selected_model != "" ? selected_model : list[1][0];
            ModelRadioGroup.rebuild(list[1].join(';'), selected_model);
        }

        if (list[2].length > 0) {
            if (!WheelRadioGroup) {
                WheelRadioGroup = new DIRadioGroup(wheel_conteiner_id, wheelData, 'Wheel', null, WheelClick, brand_info_radio_selected_css_class, '');
                WheelRadioGroup.selectByID(selected_right_hand);
            }
            $get('CarCreditTR').style.display = (selected_right_hand == 'true' && !needToShowCreditForRightHandedCar) || (minKaskoYear > Number(selected_year)) ? 'none' : '';
            //$get('CarWheelTR').style.display = isDomestic ? 'none' : '';
            if (!PowerRadioGroup) {
                PowerRadioGroup = new DIRadioGroup(power_conteiner_id, list[2].join(';'), 'Power', null, PowerClick, brand_info_radio_selected_css_class, '');
                //selected_power = selected_power != "" ? selected_power : list[2][0];
                PowerRadioGroup.select(selected_power);
            }
            else {
                //selected_power = selected_power != "" ? selected_power : list[2][0];
                PowerRadioGroup.rebuild(list[2].join(';'), selected_power);
            }
        }
        else if (PowerRadioGroup) {
            PowerRadioGroup.rebuild("", "");
            ClearPriceSpan();
        }
    }
    else if (ModelRadioGroup) {
        ModelRadioGroup.rebuild("", "");
    }

    if (list[2].length > 0) {
        if (!PowerRadioGroup) {
            PowerRadioGroup = new DIRadioGroup(power_conteiner_id, list[2].join(';'), 'Power', null, PowerClick, brand_info_radio_selected_css_class, '');
            //selected_power = selected_power != "" ? selected_power : list[2][0];
            PowerRadioGroup.select(selected_power);
        }
        else {
            //selected_power = selected_power != "" ? selected_power : list[2][0];
            PowerRadioGroup.rebuild(list[2].join(';'), selected_power);
        }
    }
    else if (PowerRadioGroup) {
        PowerRadioGroup.rebuild("", "");
        ClearPriceSpan();

    }

    if (!creditRadioGroup) {
        creditRadioGroup = new DIRadioGroup('creditTD', creditData, 'IsCredit', null, creditClick, 'selected', null);
        creditRadioGroup.selectByID(selected_credit)
    }
    else {
        creditRadioGroup.rebuild(creditData, selected_credit);
    }

    if (!RegionRadioGroup) {
        RegionRadioGroup = new DIRadioGroup(region_conteiner_id, regionData, 'Region', null, RegionClick, brand_info_radio_selected_css_class, '');
        RegionRadioGroup.select(selected_region);
    }
    else {
        RegionRadioGroup.rebuild(regionData, selected_region);
    }

    if (!BuyRegionRadioGroup) {
        BuyRegionRadioGroup = new DIRadioGroup(buy_region_conteiner_id, buyRegionData, 'BuyRegion', null, BuyRegionClick, brand_info_radio_selected_css_class, '');
        BuyRegionRadioGroup.select(selected_buy_region);
    }
    else {
        BuyRegionRadioGroup.rebuild(buyRegionData, selected_buy_region);
    }
    
    //AND020610
    if (!policyTypeRadioGroup) {
        policyTypeRadioGroup = new DIRadioGroup('PolicyTypeTD', policyTypes, 'PolicyType', null, PolicyTypeClick, brand_info_radio_selected_css_class, '');
        //AND010710 policyTypeRadioGroup.selectByID(selected_policy_type);
        PolicyTypeRadioGroupRebuild();
    }
    else {
        policyTypeRadioGroup.rebuild(policyTypes, selected_policy_type);
    }

    //CalcPrice();
    SetCalcBtnStatus();
}


//Проверяем заполненность регионов
function CheckRegionsSelected() {
    return true /*$get(buyRegionControl.controlId()).options[$get(buyRegionControl.controlId()).selectedIndex].innerHTML != emptyRegion &&
        $get(osagoRegionControl.controlId()).options[$get(osagoRegionControl.controlId()).selectedIndex].innerHTML != emptyRegion;*/
}

function NeedToShowKaskoCrash() {
    var needToShowKaskoCrash = new Date().getFullYear() > selected_year;
    $get('driver_1_kasko_crash_conteiner_static').style.display = needToShowKaskoCrash ? 'block' : 'none';
    $get('driverKaskoCrashTH').style.display = needToShowKaskoCrash ? 'block' : 'none';
    $get('multiDriveKaskoCrashTHTR').style.display = needToShowKaskoCrash ? '' : 'none';
    $get('multiDriveKaskoCrashTR').style.display = needToShowKaskoCrash ? '' : 'none';
}

//Кликнули на году
function YearClick() {
    if (selected_year != YearRadioGroup._value.value) {
        HideAllCarInfoTRsShowSelected(['CarModelTR']);
        selected_year = YearRadioGroup._value.value;
        selected_model = "";
        selected_power = "";
        selected_credit = '';
        selected_buy_region = '';
        selected_region = '';
        selected_policy_type = '';
        ClearSelectedBank();
        NeedToShowKaskoCrash();
        PageMethods.GetBrandCarsInfoXML(brand_id, selected_year, selected_model, RenderBrandInfo, ErrorGettingBrandInfo);
        //CalcPrice();
        ClearPriceSpan();
        carModelInfo.setValues(selected_year, selected_model, selected_power, 0);
        //$get(calculate_div_id).className = 'disable';
        //$get(choose_btn_id).className = 'toChoose-disabled';
    }
}

//Кликнули на моделе
function ModelClick() {
    if (selected_model != ModelRadioGroup._value.value) {
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR']);
        $get('CarWheelTR').style.display = isDomestic ? 'none' : '';
        selected_model = ModelRadioGroup._value.value;
        selected_power = "";
        selected_credit = '';
        selected_buy_region = '';
        selected_region = '';
        selected_policy_type = '';
        ClearSelectedBank();
        PageMethods.GetBrandCarsInfoXML(brand_id, selected_year, selected_model, RenderBrandInfo, ErrorGettingBrandInfo);
        //CalcPrice();
        ClearPriceSpan();
        carModelInfo.setValues(selected_year, selected_model, selected_power, 0);
        //$get(calculate_div_id).className = 'disable';
        //$get(choose_btn_id).className = 'toChoose-disabled';
    }
}

//Кликнули на руль
function WheelClick() {
    if (selected_right_hand != WheelRadioGroup.getValue()) {
        selected_right_hand = WheelRadioGroup.getValue();
        if (selected_right_hand == 'true' && creditRadioGroup && creditRadioGroup.getValue() != 'false' && !needToShowCreditForRightHandedCar) {
            creditRadioGroup.selectByID('false');
        }
        $get('CarCreditTR').style.display = (selected_right_hand == 'true' && !needToShowCreditForRightHandedCar) || (minKaskoYear > Number(selected_year)) ? 'none' : '';
    }
}

//Кликнули на мощности
function PowerClick() {
    if (selected_power != PowerRadioGroup.getValue()) {
        //Если уже был выбран регион покупки полиса, то при выборе мощности показываем его тоже.
        if (selected_right_hand == 'true' || minKaskoYear > Number(selected_year)) {
            HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR']);
        }
        else {
            HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR']);
        }
        selected_power = PowerRadioGroup.getValue();
        selected_credit = selected_right_hand == 'true' || minKaskoYear > Number(selected_year) ? 'false' : '';
        selected_buy_region = '';
        selected_region = '';
        selected_policy_type = '';
        ClearSelectedBank();
        if (creditRadioGroup) {
            creditRadioGroup.rebuild(creditData, selected_credit);
        }
        //creditRadioGroup.rebuild(creditData, "");
        //$get(calculate_div_id).className = 'disable';
        //$get(choose_btn_id).className = 'toChoose-disabled';
        CalcPrice();
        SetCalcBtnStatus();
    }
}

//Кликнули на кредит
function creditClick() {
    if (selected_credit != creditRadioGroup.getValue()) {
        if (WheelRadioGroup.getValue() == 'true' && creditRadioGroup.getValue() == 'true' && !needToShowCreditForRightHandedCar) {
            creditRadioGroup.selectByID('false');
            return;
        }
        selected_credit = creditRadioGroup.getValue();
        //
        //if (showHideMultiDrive) showHideMultiDrive(selected_credit == "false");
        //multiDriveCheckBox.disable(selected_credit == "true", false);
        selected_buy_region = '';
        selected_region = '';
        selected_policy_type = '';
        if (RegionRadioGroup) {
            RegionRadioGroup.rebuild(regionData, selected_region);
        }
        /*var buyRegionControl = $get('buyRegion');
        if (buyRegionControl && buyRegionControl.options[buyRegionControl.selectedIndex].innerHTML != emptyRegion) {
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR', 'CarBuyRegionTR']);
        }
        else {
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR']);
        }*/
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR']);
        ClearSelectedBank();

        SetCalcBtnStatus();
    }
}

function RegionClick() {
    if (selected_region != RegionRadioGroup.getValue()) {
        selected_region = RegionRadioGroup.getValue();
        selected_buy_region = '';
        selected_policy_type = '';
        ClearSelectedBank();
        if (BuyRegionRadioGroup) {
            BuyRegionRadioGroup.rebuild(buyRegionData, selected_buy_region);
        }
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR', 'CarBuyRegionTR']);
        SetCalcBtnStatus();
    }
}

//AND020610
function PolicyTypeClick() {
    if (selected_policy_type != policyTypeRadioGroup.getValue()) {
        selected_policy_type = policyTypeRadioGroup.getValue();
        
        if (selected_credit == 'true') {
            $get('BankChooserTR').style.display = '';
            PageMethods.GetBanks(selected_buy_region, OnGetBanksSucceded, OnGetBanksFailed);
        }
        else {
            DropDownCarPanelsClick();
        }
    }
    
    SetCalcBtnStatus();    
}

function BuyRegionClick() {
    if (selected_buy_region != BuyRegionRadioGroup.getValue()) {
        selected_buy_region = BuyRegionRadioGroup.getValue();
        
        selected_policy_type = '';
    }
    
    if (restore_car_info && selected_credit == 'false') {
        //$get(car_search_control_id).blur();
        //$get(hide_car_panel_btn_id).click();
        //DropDownCarPanelsClick();
        restore_car_info = false;
    }
    else {
        /* AND020610 Убрали так как сначало должен открвывться выбор типа полиса
        if (selected_credit == 'true') {
            $get('BankChooserTR').style.display = '';
            PageMethods.GetBanks(selected_buy_region, OnGetBanksSucceded, OnGetBanksFailed);
        }
        else {
        */
        HideAllCarInfoTRsShowSelected(['CarModelTR', 'CarWheelTR', 'CarPowerTR', 'CarPriceTR', 'CarCreditTR', 'CarRegistrationTR', 'CarBuyRegionTR', 'CarPolicyTypeTR']);

        PolicyTypeRadioGroupRebuild();
        
        //AND020610
        //DropDownCarPanelsClick();
        //SetCalcBtnStatus();
        //}
    }
}

function PolicyTypeRadioGroupRebuild() {
    if (policyTypeRadioGroup) {
        var price = priceTrackBar.get_value();
        var sel_year = YearRadioGroup._value.value;
        if (price > maxKaskoCarPrice
                && sel_year < maxKaskoCarYear
                && isProlongation == 'False')
            policyTypeRadioGroup.rebuild("0:ОСАГО", selected_policy_type);
        else
            policyTypeRadioGroup.rebuild(policyTypes, selected_policy_type);
    }
}

//Расчитываем стоимость
function CalcPrice() {
    if (!YearRadioGroup || !ModelRadioGroup || !PowerRadioGroup) {
        //alert('Ошибка с контролами на форме');
        return;
    }

    if (!YearRadioGroup._value || YearRadioGroup._value.value == '') {
        //alert('Выберите год выпуска автомобиля');
        return;
    }

    if (!ModelRadioGroup._value || ModelRadioGroup._value.value == '') {
        //alert('Выберите модель автомобиля');
        return;
    }

    if (!PowerRadioGroup._value || PowerRadioGroup._value.value == '') {
        //alert('Выберите мощность автомобиля');
        return;
    }

    //Если выбраны все 3 значения, то делаем запрос на сервер для получения стоимости авто
    PageMethods.GetCarPrice(selected_car_text, ModelRadioGroup._value.value, YearRadioGroup._value.value, PowerRadioGroup._value.value, GetPrice, ErrorGettingPrice);
}

//Функция вызывается, когда приходит с сервера ответ о стоимости машины
//<param name='price' type='Price'>Максимальная и минимальная цена для указанных данных</param>
function GetPrice(price) {
    //Забиваем в спаны границы цен или прячем их, если цена равна 0, пишем в поле стоимости среднюю цену
    if (price.MinPrice <= 0 && price.MaxPrice <= 0) {
        ClearPriceSpan();
    }
    else {
        //Если восстанавливаем из сессии выбранные значения
        var priceAmount;
        /*if (car_price > -1)
        {
        priceAmount = car_price;
        car_price = -1;
        }
        else
        {*/
        priceAmount = Math.floor((price.MaxPrice - price.MinPrice) / 2) + price.MinPrice;
        //}
        var utils = new Utils();
        priceTrackBar.setValues(price.MinPrice, price.MaxPrice, priceAmount);
        carModelInfo.setValues(selected_year, selected_model, selected_power, priceTrackBar.get_value());
    }
}

//Очищаем цену
function ClearPriceSpan() {
    priceTrackBar.setValues(0, 1, 0);
}

//Функция вызывается когда появляется ошибка при получении цены
function ErrorGettingPrice() {
    alert('Ошибка получения стоимости автомобиля');
}

//Функция вызывается при появлении ошибки при получении данных о бренде
function ErrorGettingBrandInfo() {
    alert('Возникла ошибка при попытке получить данные о бренде');
}

//При вводе данных в строку поиска автомобиля проверяем совпадения в списке
//<param name='car_list_id'>ID контрола со списком брендов</param>
//<param name='input'>Текстовое поле, куда вводится искомый бренд</param>
function CarSearchTextBoxOnKeyUp(car_list_id, input, event) {
    //Выбираем по введенному тексту бренд в списке
    if ((old_search_car_value != input.value) || (event.keyCode == 13 && !is_brand_info_shown)) {
        var list = document.getElementById(car_list_id);
        if (!list)
            return;
        //Если не было искусственных кликов на бренде и показана информация о бренде
        //То запускаем анимацию сокрытия информации о бренде и показа списка брендов
        if (!SelectValuesInList(car_list_id, input.value, true, event.keyCode == 13) && is_brand_info_shown) {
            $get(show_car_list_btn_id).click();
            $get(calculate_div_id).className = inactiveCalcBtnClass;
        }
    }
}

//Нажали на кнопку в поле поиска брендов
//<param name='input'>Текстовое поле, куда вводится искомый бренд</param>
function CarSearchTextBoxOnKeyDown(input) {
    //Сохраняем значение до нажатой клавиши
    old_search_car_value = input.value;
}

//Проверяем чтобы цена не выходила за рамки и были введены только цифры
//<param name='input'>Текстовое поле, куда вводится стоимость</param>
function CheckPriceOnKeyUp(input) {
    //Получаем объекты спаны с минмальной и максимальной ценой
    var min_price = priceTrackBar.get_min();
    var max_price = priceTrackBar.get_max();

    if (!input || input.value == '')
        return;

    var reg = /\D/;
    var price = parseInt(input.value);

    //Стоимость правильная, если она не содержит иных символов, кроме цифр, а также находится в границах минимальной и максимальной цены, если они заданы
    var success = (min_price && min_price != '' ? price >= parseInt(min_price) : true) &&
				  (max_price && max_price != '' ? price <= parseInt(max_price) : true) &&
				  !reg.test(input.value);

    input.style.color = !success ? 'red' : 'black';
    //$get(calculate_div_id).className = success && CheckRegionsSelected() ? '' : 'disable';
    if (success) {
        priceTrackBar.setValue(price);
    }
}

//Проверяем, что заполнена информация о машине и о водителях
function CheckCanCalculate() {
    var can = false;
    can = selected_buy_region && selected_buy_region != '' &&
							 selected_region && selected_region != '' &&
							 selected_credit && selected_credit != '' &&
							 isBankChosen(selected_credit) &&
							 selected_power && selected_power != '' &&
							 selected_model && selected_model != '' &&
							 selected_year && selected_year != '' &&
							 CheckDriversSelected();
    //Если есть каптча, то проверяем и её
    if (typeof (captcha_text_control_id) == "string") {
        can = can && ValidateCaptchaTextLength();
    }

    return can;
}

function isBankChosen(isCredit) {
    if (isCredit == 'true') {
        return $get('SelectedBank').innerHTML != '';
    }
    return true;
}

//Проверяем правильность заполнения информации о машине, стоимости, регионе
function CheckCarInfo() {
    //var price_input = document.getElementById(price_tb_id);
    var price_input = priceTrackBar.get_begunInput();
    var utils = new Utils();
    var value = utils.replaceSpaces(price_input.value.toString());
    var reg = /\D/;
    return price_input && value != '' && !(reg.test(value)) && price_input.style.color != 'red' && value != "0" &&
	        selected_car_text == $get(car_search_control_id).value && selected_credit != '' /*&& CheckRegionsSelected()*/;
}

//Проверяем выбранны ли водители или мультидрайв
function CheckDriversSelected() {
    return (Renins.DI.DriversController && Renins.DI.DriversController.checkAgeAndExpSelectedForAllDrivers(selected_year != new Date().getFullYear())) ||
	          ($find("multiDriveCheckBox").get_checked() && (selected_year == new Date().getFullYear() || (multiDriveKaskoCrash && multiDriveKaskoCrash.getValue() != '')));
}

//Контрол с поиском бренда потерял фокус.
//<param name='input'>Текстовое поле, куда вводится искомый бренд</param>
function BlurCarSearchTextBox(input) {
    //Если значение контрола пустое, то вводим туда заданный текст и задаем специальный класс
    if (input && input.value == '') {
        input.value = water_mark_text;
        input.className = water_mark_class;
        //carModelInfo.clear();
        carModelInfo.visible(false);
    }
    else {
        carModelInfo.visible(true);
    }
}

//Контрол с поиском бренда получил фокус.
//<param name='car_list_id'>ID контрола со списком брендов</param>
//<param name='input'>Текстовое поле, куда вводится искомый бренд</param>
function FocusCarSearchTextBox(car_list_id, input) {
    //Если текст в нем равен ватермарк тексту, то обнуляем текст и присваемем класс по умолчанию для поля поиска	
    if (input && ((input.value == water_mark_text) || (input.value == ""))) {
        input.value = '';
        input.className = car_search_class;
    }

    //Сохраняем то, что было введено в поле поиска		
    old_search_car_value = input.value;

    //Если не показано ни списка брендов, ни информации о бренде
    if (!is_brand_list_shown && !is_brand_info_shown) {
        //Выбираем значение в списке и если не было искусственного клика на бренде, то показываем список брендов
        if (!SelectValuesInList(car_list_id, input.value, true)) {
            //ShowCarListPanel();
            $get(show_car_list_btn_id).click();
        }
    }

    //Ставим курсор в конец строки
    //Это для Opera и FireFox
    if (input.setSelectionRange) {
        var end = input.value.length;
        input.setSelectionRange(end, end);
    }
    //Это для IE
    else if (input.createTextRange) {
        var r = input.createTextRange();
        r.collapse(false);
        r.select();
    }

    if (typeof (carModelInfo) != 'undefined') {
        carModelInfo.visible(false);
    }
}

//Кликнули на страничке
function BodyClick(event) {
    if (typeof (car_list_panel_id) != 'undefined') {
        //Кликнули на первой страничке
        if (!event) event = window.event;
        var elem = event.target ? event.target : event.srcElement;
        var in_car_panel_click = false;
        //Если кликнули на какой либо контрол, к которому привязана анимация, то выходим из обработчика
        if (elem == document || elem.id == show_car_info_btn_id || elem.id == show_car_list_btn_id || elem.id == hide_car_panel_btn_id || elem.id == car_search_control_id ||
			elem.id == drop_down_btn_id || elem.id == carModelInfo.getContainerId() || IsElemenHasParentWithId(elem, regionListPanel + ';' + buyRegionListPanel + ';' + car_list_control_id + ';' + car_info_panel_id + ';'))
            return;

        //Если не нашли, т.е. кликнули за пределами этих контролов и они показаны и не идет анимация, то жмем на кнопку, которая гасит эти панели
        if (/*!in_car_panel_click && */(is_brand_info_shown || is_brand_list_shown) && !animation_is_active) {
            var btn = $get(hide_car_panel_btn_id);
            if (btn) {
                btn.click();
            }
        }
    }
}

function IsElemenHasParentWithId(elem, ids) {
    while ((!elem.id || elem.id == '' || ids.indexOf(elem.id + ';') == -1) && elem.parentNode) {
        elem = elem.parentNode;
    }
    return ids.indexOf(elem.id + ';') > -1;
}

//Функция отвечает за реакцию на нажатие кнопки в ввиде стрелочки вниз
function DropDownCarPanelsClick() {
    //Если показана панель со списком брендов или с информацией о бренде, то прячем ее
    if (is_brand_info_shown || is_brand_list_shown) {
        //HideCarInfoPanel();
        var btn = $get(hide_car_panel_btn_id)
        if (!btn)
            return false;
        btn.click();
    }
    //В противном случае наоборот ставим фокус в поле поиска машины и соответственно открывается либо список брендов, либо информация о выбранном бренде	
    else {
        var textbox = $get(car_search_control_id);
        if (!textbox)
            return false;
        textbox.focus();
    }

    return false;
}
//==================vvv___CAPTCHA___vvv==========================
//Must be overriden in page (for Captcha)
function CaptchaCheckBoxValidated(resultOfValidation) {
    SetCalcBtnStatus();
}

function CalculateBtnClick(btn) {
    PageMethods.checkCaptcha(
    $get(captcha_text_control_id).value
    , $get(captcha_image_control_id).src
     , getCaptchaComplete
     , callServerError);
    //Прячем кнопку.
    $get(calculate_div_id).className = inactiveCalcBtnClass;
}

// Проходим проверку на captcha
function getCaptchaComplete(result) {
    if (result) {
        CalculateBtnClickValidated()
    }
    else {
        $get(captcha_hidden_id).value = "3";
        $get(captcha_regenerate_control_id).click();
    }
}
//==================^^^___CAPTCHA___^^^==========================
//Обрабатываем нажатие кнопки, не даем многократно нажимать на кнопку расчитать
function CalculateBtnClickValidated() {
    var can_calc = CheckCanCalculate();
    if (!can_calc) {
        if (selected_year != new Date().getFullYear()) {
            alert('Не указана необходимая для расчета информация. Пожалуйста, проверьте правильность заполнения информации о стаже и возрасте водителей, а также количестве обращений по полису КАСКО за прошлый год. Возраст любого из водителей должен быть больше 17 лет.');
        }
        else {
            alert('Не указана необходимая для расчета информация. Пожалуйста, проверьте правильность заполнения информации о стаже и возрасте водителей.');
        }
    }
    else if (can_calc && !calc_btn_clicked) {
        calc_btn_clicked = true;
        $get(calculate_div_id).className = inactiveCalcBtnClass;
        /*calc_btn_clicked = true;
        $get(calculate_div_id).className = inactiveCalcBtnClass;*/
        PageMethods.NeedToSelectPU(selected_buy_region, selected_car_text, selected_model, selected_year, NeedToSelectPUUSuccess, callServerError);

    }
}


//Обрабатываем результат серверного метода определяющего необходимость выбора ПУУ
function NeedToSelectPUUSuccess(result) {
    if (result) {
        PageMethods.GetSecuritySystemInfo('', selected_buy_region, selected_car_text, selected_model, selected_year, renderSSBrands, callServerError);
    }
    else {
        SubmitForm();
    }
}

//Очищаем значения комбобокса и прячем его
function ClearAndHideComboBox(comboBoxId) {
    var modelComboBox = $find(comboBoxId);
    modelComboBox.clearList();
    modelComboBox.setVisible(false);
}

//Субмитим форму
function SubmitForm() {
    var ctrl = $get(need_calculate_control_id);
    if (ctrl) {
        ctrl.value = '1';
        theForm.submit();
    }
}

//Нажал на ок на попапе выбора ПУУ
function OkBtnClickedOnSecuritySystemPopup() {
    SaveSelectedSecuritySystem('cbSecuritySystemBrand', 'cbSecuritySystemModel');
}

//Сохраняем выбранные данные с контролов с ПУУ на странице
function SaveSelectedSecuritySystem(securitySystemBrandControlID, securitySystemModelControlID) {
    var securitySystemCtrl = $get(securitySystemHiddenFieldD);
    if (securitySystemCtrl) {
        var state = '';
        var securitySystemBrand = $find(securitySystemBrandControlID);
        if (securitySystemBrand && securitySystemBrand.get_value() != '') {
            state += securitySystemBrand.getNameValue();
        }
        var securitySystemModel = $find(securitySystemModelControlID);
        if (securitySystemModel && securitySystemModel.get_value() != '') {
            state += securitySystemModel.getNameValue();
        }
        if (state != '') {
            state += 'SecuritySystemType=' + (securitySystemType ? securitySystemType : 0);
        }
        securitySystemCtrl.value = state;
    }
    SubmitForm();
}

//Нажали закрыть попап
function ClosingPopup() {
    calc_btn_clicked = false;
    $get(calculate_div_id).className = activeCalcBtnClass;
}

//Прячем все строки с информацией о машине кроме года
function HideAllCarInfoTR() {
    //$get('CarYearTR').style.display = 'none';
    $get('CarModelTR').style.visibility = 'hidden';
    $get('CarWheelTR').style.visibility = 'hidden';
    $get('CarPowerTR').style.visibility = 'hidden';
    $get('CarPriceTR').style.visibility = 'hidden';
    $get('CarRegistrationTR').style.visibility = 'hidden';
    $get('CarBuyRegionTR').style.visibility = 'hidden';
    $get('CarCreditTR').style.visibility = 'hidden';
    $get('BankChooserTR').style.display = 'none';

    //AND240510
    $get('CarPolicyTypeTR').style.visibility = 'hidden';
}

//ПОказываем те строки с инормацией о машине, ид которых переданны в качестве параметра
function ShowCarInfoTRs(trIds) {
    for (var i = 0; i < trIds.length; i++) {
        $get(trIds[i]).style.visibility = 'visible';
    }
}

//Сначала прячем все строчки с информацией о машине, потом показываем выбранные
function HideAllCarInfoTRsShowSelected(trIds) {
    HideAllCarInfoTR();
    ShowCarInfoTRs(trIds);
}

CarModelInfoControl = function(containerId, brandInputId, year, model, power, price, visible) {
    this._container = $get(containerId);
    this._brandInput = $get(brandInputId);
    this._year = year ? year : 0;
    this._model = model ? model : '';
    this._power = power ? power : '';
    this._price = price ? price : 0;
    this._visible = visible ? visible : false;
    $addHandler(this._container, 'click', Function.createDelegate(this, this._clickHandler));
    this._rebuild();
}

CarModelInfoControl.prototype = {
    _rebuild: function() {
        var info = '';
        var utils = new Utils();
        info += (this._model ? this._model : '');
        info += (this._year && this._year > 0 ? (info != '' ? ' ' : '') + this._year + ' года' : '');
        //info += (this._power && this._power != '' ? (info != '' ? ', ' : '') + this._power + ' л.с.' : '');
        info += (this._price && this._price > 0 ? (info != '' ? ', ' : '') + utils.insertSpaces(this._price.toString()) + ' руб.' : '');
        this._container.innerHTML = info;
        this.visible(this._visible);
        //this._container.style.display = this._visible ? 'block' : 'none';
    },

    _clickHandler: function() {
        this._brandInput.focus();
    },

    setYear: function(year) {
        this._year = year;
        this._rebuild();
    },

    setPower: function(power) {
        this._power = power;
        this._rebuild();
    },

    setPrice: function(price) {
        this._price = price;
        this._rebuild();
    },

    setModel: function(model) {
        this._model = model;
        this._rebuild();
    },

    setValues: function(year, model, power, price) {
        this._year = year;
        this._model = model;
        this._power = power;
        this._price = price;
        this._rebuild();
    },

    visible: function(bVisible) {
        this._visible = bVisible;
        this._container.style.display = this._visible ? 'block' : 'none';
    },

    clear: function(visible) {
        this._year = 0;
        this._model = '';
        this._power = '';
        this._price = 0;
        this._container.innerHTML = '';
        this.visible(visible);
    },

    getContainerId: function() {
        return this._container.id;
    }
}

function showmodelselect5() {
    $get('ListModels-BankChoice').style.display = 'block';
}

function hidemodelselect5(e) {
    document.getElementById('ListModels-BankChoice').style.display = 'none';
    document.body.onclick = new Function('');
    if (e == undefined) e = window.event;
    var label = e.target ? e.target : e.srcElement;
    if (label.tagName.toLowerCase() == 'label') {
        if ($get('SelectedBank').innerHTML != label.innerHTML) {
            $get('SelectedBank').innerHTML = label.innerHTML;
            $get('BankName').value = label.innerHTML.replace(/^\s+|\s+$/g, "");
            $get('SpecialClauses').value = label.parentNode.getElementsByTagName('INPUT')[0].value;
        }
    }
    SetCalcBtnStatus();
    DropDownCarPanelsClick();
    //return false;
}

function OnGetBanksSucceded(result) {
    var list = $get('listBanksDefault');
    if (restore_car_info) {
        restore_car_info = false;
    }
    else {
        ClearSelectedBank();
    }
    list.innerHTML = '';
    for (var i = 0; i < result.length; i++) {
        var li = document.createElement('li');
        li.className = 'bc-li';
        var label = document.createElement('label');
        label.innerHTML = result[i].Name;
        li.appendChild(label);
        label.onclick = hidemodelselect5;
        var input = document.createElement('input');
        input.type = 'hidden';
        input.value = result[i].Conditions;
        li.appendChild(input);
        list.appendChild(li);
    }
    SetCalcBtnStatus();
}

function OnGetBanksFailed(error) {
    ClearSelectedBank();
    $get('listBanksDefault').innerHTML = '';
}

//Очищаем выбранный банк
function ClearSelectedBank() {
    $get('SelectedBank').innerHTML = '';
    $get('BankName').value = '';
    $get('SpecialClauses').value = '';
}

//Проверяем отечественное авто или нет
function IsDomesticCar(brand) {
    for (var i = 0; i < domesticBrands.length; i++) {
        if (domesticBrands[i] == brand)
            return true;
    }
    return false;
}