var autoPriceUAH;
var inactivePackage;
var autoChip;
var ticketId;

// Коды тарифов
var typeEconom;
var typeClassic;
var typeZero;

/**
 *  Инициализируем переменные
 */
function init()
{
    autoPriceUAH = 0;
    autoChip = 0;
    ticketId = 0;                   // Идентификатор запроса
    inactivePackage = -1;           // Код неактивного пакета
    
    // ----------------------
    // Коды тарифов
    typeEconom = 0;                      
    typeClassic = 1;
    typeZero = 2;
}

init();

/**
 *  Получаем значение процентов от цены
 */
function getPriceByPercent(percent, price)
{
    price = price || autoPriceUAH;
    value = Math.round(price * percent / 100);
    return value;
}

/**
 *  Расчитываем итоговую сумму с учетом тарифа
 */
function getTotalPrice() 
{
    $.ajaxSetup(
        {
            dataType: 'json',
            error: ajaxFinish
        }
    );
    
    $('#ticketid').val(++ticketId);
    frm_data = $('form[name=calculator]').formSerialize();
    
    ajaxStart();
    $.post(
        '/ajax/kasko-calc.json',
        frm_data,
        function (data) {
            if (ticketId == data["ticket"]) {
                // Получили ответ на отправленный запрос
                autoType = data["vtype"];
                autoChip = data["chip"];
                if ( autoPriceUAH != 0 ) {
                    $("#econom-total span.uah").text(data["econom-price"]);
                    $("#classic-total span.uah").text(data["classic-price"]);
                    $("#zero-total span.uah").text(data["zero-price"]);
                }
                else {
                    $('span.percent, span.uah', 'li.result_price').text('?');
                }
                
                $("span.invisible").removeClass("invisible").addClass("visible");
                calculate2();
            }
            ajaxFinish();
        }
    );
}


/**
 *  Расчитываем размер франшизы (2 шаг)
 */
function calculate2() {
    // Определяем франшизу для пакета "Эконом"
    $("#econom-wofault, #econom-wfault, #econom-other").each(function(){
        $("span.percent", this).text(2.0);
        $("span.uah", this).text(getPriceByPercent(2));
    });
    // Определяем франшизу для пакета "Классик"
    $("#classic-wofault, #classic-wfault, #classic-other").each(function(){
        $("span.percent", this).text(0.5);
        $("span.uah", this).text(getPriceByPercent(0.5));
    });
    // Определяем франшизу для пакета "Нулевая франшиза"
    $("#zero-wofault, #zero-wfault, #zero-other").each(function(){
        $("span.percent", this).text(0);
        $("span.uah", this).text(0);
    });
    
    if ($("input#c_param1[name=param1]:checkbox").attr("checked"))
    {   // выбран пункт "Я получил права меньше, чем 2 года назад", нужно установить франшизу по риску «при аварии по вине» 1.5%, если изначально процент меньше 1.5
        $("#cat-wfault div.checkbox").each(function(){
            cur_percent = parseFloat($("span.percent", this).text());
            cur_percent = cur_percent > 1.5 ? cur_percent : 1.5;
            $("span.percent", this).text(cur_percent)
            
            $("span.uah", this).text(getPriceByPercent(cur_percent));
        });
    }

    if (autoChip == 1)
    {   // Если имеем дело с легковым автомобилем не дороже 50 000 USD,
        // устанавливаем франшизу по риску «Угон» 3%
        $("#cat-hijacking div.checkbox").each(function(){
            $("span.percent", this).text('3');
            $("span.uah", this).text(getPriceByPercent(3));
        });
    }
    else
    {   // Устанавливаем франшизу по риску «Угон» 5%
        $("#cat-hijacking div.checkbox").each(function(){
            $("span.percent", this).text('5');
            $("span.uah", this).text(getPriceByPercent(5));
        });
    }
    
    if ( autoType == 2 || autoType == 1)
    {
        // Делаем тариф "Нулевая франшиза" доступным
        resetPackage(typeZero);
        // Открываем доступ к элементу формы
        $("#zero-title input#c_package3:radio").attr("disabled", "");
    }
    else
    {
        // Блокируем тариф "Нулевая франшиза"
        // Делаем тариф неактивным
        setNotActivePackage(typeZero);
        // Блокируем доступ к элементу формы
        if ($("#zero-title input:checked").attr("id") == "c_package3")
        { // Данный тариф является выбранным
            $("#zero-title input#c_package3:radio").attr("checked", "");
        }
        $("#zero-title input#c_package3:radio").attr("disabled", "disabled");
    }
}

/**
 *  Расчитываем цену страховки (1 шаг)
 */
function calculate()
{
    //autoPriceUAH = $("#auto-price").val();
    //getTotalPrice();
}



/**
 *  Отмечаем активными все поля тарифного пакета с кодом packageType
 */
function setActivePackage(packageType)
{
    resetPackage(-1);
    prefix = getPackagePrefix(packageType);
    $("#"+prefix+"-title label, #"+prefix+"-hijacking, #"+prefix+"-wofault, #"+prefix+"-wfault, #"+prefix+"-other, #"+prefix+"-total").addClass("dark");
    
}

/**
 *  Отмечаем неактивными все поля тарифного пакета с кодом packageType
 */
function setNotActivePackage(packageType)
{
    prefix = getPackagePrefix(packageType);    
    $("#"+prefix+"-title label, #"+prefix+"-hijacking, #"+prefix+"-wofault, #"+prefix+"-wfault, #"+prefix+"-other, #"+prefix+"-total")
        .removeClass("dark light middle")
        .addClass("light");
    inactivePackage = packageType;
}

/**
 *  Отменяем выделение тарифа, если указан его код. Если в качестве апраметра -1 - сбрасываем в начальное состояние внешний вид всех пакетов
 */
 function resetPackage(packageType)
 {
    if (packageType == -1)
    {
        $("li.franchise_size_cat .checkbox, li.choose_package label, li.result_price .checkbox")
            .removeClass("light middle dark")
            .addClass("middle");  
        if (inactivePackage != -1)
        {
            setNotActivePackage(inactivePackage);
        }
    }
    else
    {
        prefix = getPackagePrefix(packageType);
        $("#"+prefix+"-title label, #"+prefix+"-hijacking, #"+prefix+"-wofault, #"+prefix+"-wfault, #"+prefix+"-other, #"+prefix+"-total")
            .removeClass("dark light middle");
        if (inactivePackage == packageType) inactivePackage = -1;
    }
 }
 
/**
*  Получаем префикс для идентификации элемента по коду пакета
*/
function getPackagePrefix(packageType)
{
    packageType = parseInt(packageType);
    switch (packageType)
    {
        case 0:
            prefix = "econom";
            break;
        case 1:
            prefix = "classic";
            break;
        case 2:
            prefix = "zero";
            break;
        default:
            prefix = "";
    }
    return prefix;
}

/**
*  Проверяем корректность введенных данных перед отправкой заявки
*/
function checkForErrors(frm)
{
    clearErrors();
    isError = false; 
    
    if ( !$(':input#auto-price', frm).val().match(/^\d+$/) ) {
        addError($(':input#auto-price', frm), 'Это поле необходимо заполнить. Допустимыми значениями являются цифры');
        isError = true;
    }
    
    if ( $(':input[name=city]', frm).val().match(/^\s*$/) ) {
        addError($(':input[name=city]', frm), 'Это поле необходимо заполнить');
        isError = true;
    }
    
    /*var checked = false;
    $(':input[name=package]', frm).each(function(){
        if ( $(this).attr("checked") ) {
            checked = true;
        }
    });
    
    if (!checked) {
        addError($(':input[name=package]', frm), 'Необходимо выбрать пакет');
        isError = true;
    }*/
    
    if ( $(':input[name=fio]', frm).val().match(/^\s*$/) ) {
        addError($(':input[name=fio]', frm), 'Это поле необходимо заполнить');
        isError = true;
    }

    if ( $(':input[name=phone]', frm).val().match(/^\s*$/)  || $(':input[name=phone]', frm).val() == 'Код и номер' ) {
        addError($(':input[name=phone]', frm), 'Это поле необходимо заполнить');
        isError = true;
    }
    
    $(':input[name=email]', frm).each(function () {
        if (this.value.match(/[^\s]/) && !this.value.match(/^[a-z0-9_\-\.]+@([a-z0-9_\-]+\.)+[a-z]{2,5}$/i) ) {
            addError($(this), 'Недопустимый формат e-mail');
            isError = true;
        }
    });
    
    if ( !isError ) {
        $.ajaxSetup(
            {
                dataType: 'json',
                error: sendMessageError
            }
        );
        
        frm_data = $(frm).formSerialize();
        
        ajaxStart();

        $.post(
            'ajax/send-request.json',
            frm_data,
            function (data) {
                if (data['error']) {
                // При возникновении ошибки выдаем сообщение и остаемся на странице оформления заявки
                    alert(data['error']);
                    ajaxFinish();
                }
                else {
                // Уходим на страницу "Заявка отправлена"
                    location.href = "/request_sent.html";
                }
            }
        );
    }
    return false;
}

function sendMessageError() {
    ajaxFinish();
}

/**
*  Удаляем найденные ошибки
*/
function clearErrors() {
    $('div.error_message').remove();
    $('input.error').removeClass('error');
}

/**
*  Добавляем текст ошибки соответствующему полю
*/
function addError( field, msg ) {
    field.addClass('error');

    if ( msg != undefined ) {
        var li = field.parents('li');
        if ( !$('div.error_message', li).length ) {
            $(li).append('<div class="error_message">' + msg + '</div>');
        }
    }
}


/**
*  Перключаемся между страницами
*/
function toggleDetails(activeElem) {
    if ($("#content_details").css("display") == "none") {
    // Подробные детали скрыты, нужно показать
        // Log to Google Analytics
        pageTracker._trackPageview('/details');
        if ($(activeElem).attr("id") == "detailes-toggle") {
        // Кликнули на "Подробнее"
            $(activeElem).html("&larr; Назад");
            $(".information").show();
        }
        $("#content_primary").hide();   // Прячем форму с заявкой
        $("#content_details").show();   // Показываем страницу "Подробнее"
    }
    else {
    // Нужно показать основной контент
        if ($(activeElem).attr("id") == "detailes-toggle") {
        // Кликнули на "Назад"
            $("#content_primary").show();
            $(activeElem).html("Подробнее");
            if ($("div.logo a").html()) {
            // не главная страница
                $(".information").hide();
            }
        }
        
        if ($(activeElem).attr("id") == "back-to-request") {
        // Кликнули на "Вернуться к оформлению ..."
            if ($("div.logo a").html()) {
            // не главная страница
                location.href = "/";
            }
            else {
            // главная страница
                $("#detailes-toggle").html("Подробнее");
                $("#content_primary").show();
            }
        }
        $("#content_details").hide();
    }
}

function ajaxFinish() {
    document.body.style.cursor = 'default';
}

function ajaxStart() {
    document.body.style.cursor = 'wait';
}

// ----------------------------------------------------------------------------------------------------------------

$(
    function () {
        $("li.vehicle_type input[name=vtype]:first").attr("checked", "checked");
        $("#auto-price").keyup(function(){
            if ($(this).val() == '') {
                $('span.percent, span.uah').text('???');
                $('span.percent, span.uah', 'li.result_price').text('?');
                $("span.visible").removeClass("visible").addClass("invisible");
            }
            else {
                if ( !$(this).val().match(/^\d+$/) ) {
                    addError($(this), 'Допустимыми значениями являются цифры');
                }
                else 
                {
                    $('div.error_message', $(this).parent('li')).remove();
                    $(this).removeClass('error');
                    calculate();
                }
            }
            
        });
        
        $('.toggle_details').click(function(){toggleDetails($(this));});
        
        $('#send_more').click(function() {
            $('#content_message').hide();
            $('.information').show();
            
            $('#content_primary form input:text').val('');
            $('span.visible').removeClass('visible').addClass('invisible');
            $('span.percent, span.uah').text('???');
            $('span.percent, span.uah', 'li.result_price').text('?');
            
            $('#content_primary form input[name=phone]:text').addClass('empty').val('Код и номер');
            
            $('#content_primary').show();
        });
        
        $("li.additional_params input:checkbox").click(function(){
            calculate();
        });
        
        $("li.term select#work-term").change(function(){
            calculate();
        });
        
        $("li.vehicle_type input[name=vtype]").click(function(){
            calculate();
        });
        
        $("li.choose_package input[name=package]").click(function(){
            if ($(this).attr("checked"))
            {   // Выделяем активный тарифный пакет
                setActivePackage($(this).val());
            }
        });
        
        // Отправляем заявку
        $("#calculator").submit(function(){
            return checkForErrors(this);
        });
        
        // Работаем с фокусом на поле телефона
        $('form[name=calculator] input[name=phone]').focus(
            function () {
                if ( this.value == 'Код и номер' ) {
                    $(this).removeClass('empty');
                    this.value = '';
                }
            }
        ).blur(
            function () {
                if ( this.value == '' ) {
                    $(this).addClass('empty');
                    this.value = 'Код и номер';
                }
            }
        );
    }
);


