/**
* Выравнивание элемента по центру окна
*/
jQuery.fn.center = function()
{
    var w = $(window);
    this.css("position","absolute");
    this.css("top",(w.height()/2-this.height())/2+w.scrollTop() + "px");
    this.css("left",(w.width()-this.width())/2+w.scrollLeft() + "px");
    return this;
};

function trim( str, charlist ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'

    charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

//вставляет пробелы через каждые 3 символа с конца
function InsertSpaces(val)
{
    val = val.toString().replace(" ", "");
    var result = "";
    var j = 0;
    for(var i = val.length - 1; i >= 0; i--)
    {
        result = val.substr(i, 1) + result;
        j++;
        if(j == 3)
        {
            result = " " + result;
            j = 0;
        }
    }
    return trim(result);
}

//удаляет пробельные символы из строки
function removeSpaces(val)
{
    return val.toString().replace(/\s+/g, "");
}

/**
* Функция возвращает правильное слово для множественного числа
*
* @param int $num число элементов
* @param string $form1 название элемента, первая форма (день, фотография)
* @param string $form2 название элемента, вторая форма (дня, фотографии)
* @param string $form5 название элемента, пятая форма (дней, фотографий)
*
* @return правильная форма названия элементов в зависимости от числа элементов
*/
function PluralForm($num, $form1, $form2, $form5)
{
    var $n = parseInt($num.slice(-2), 10);
    if ($n >= 5 && $n <=20)
        return $form5;
    else
    {
        $n = parseInt($num.slice(-1), 10);
        if ($n == 0 || ($n>=5 && $n<=9) )
            return $form5;
        else if ($n == 1)
            return $form1;
        else
            return $form2;
    }
}

/**
* Показ модального окна с идентификатором id
*/
function ShowPopupWindow(id, e, not_clean)
{
    $("div.error-comment").css('visibility','hidden');    
    HidePopupWindow(e);
    if(e) e.preventDefault();
    $("#all_back").height($(document).height());
    $(".popup").center();
    if (!not_clean) {
        $("#"+id+" input:not([type=submit],[type=checkbox])").val(""); //очистка полей ввода перед показом
        $("#"+id+" input[type=checkbox]").removeAttr("checked");
    }
    $("#"+id+" .reg_right").html(""); //сброс сообщений об ошибках
    if($.support.opacity)
    {
        $("#all_back").fadeIn("fast");
        $("#"+id).fadeIn("slow");
    }
    else
    {
        $("#all_back").show();
        $("#"+id).show();
    }
    $(".pop_close").css("text-decoration", "underline");
}

/**
* Скрывает все модальные окна
*/
function HidePopupWindow(e)
{
    if(e) e.preventDefault();
    $(".pop_close").css("text-decoration", "none");
    if($.support.opacity)
    {
        $(".popup").fadeOut("fast");
        $("#all_back").fadeOut("fast");
    }
    else
    {
        $(".popup").hide();
        $("#all_back").hide();
    }
}

/**
* Функция для обработки ответа сервера в процессе регистрации
*/
function RegisterCallBack(data)
{
    if(data.result == "ok")
    {
        //закрываем модальное окно, и посылаем пользователя на страничку с сервисным сообщением
        HidePopupWindow(null);
        window.location.href = pathRoot+"/service/success_registration/";
    }
    else
    {
        //показываем сообщение об ошибке
        $("#modal_register .reg_right").html(data.error_text);
        //ссылка "напомнить пароль"
        $(".reg_right a").click(function(e){
            ShowPopupWindow("modal_password", e);
        });
    }
}

/**
* Функция для обработки ответа сервера в процессе напоминания пароля
*/
function RemindCallBack(data)
{
    if(data.result == "ok")
    {
        //закрываем модальное окно, и посылаем пользователя на страничку с сервисным сообщением
        HidePopupWindow(null);
        window.location.href = pathRoot+"/service/success_remind/";
    }
    else
    {
        //показываем сообщение об ошибке
        $("#modal_password .reg_right").html(data.error_text);
        //ссылка "зарегистрироваться"
        $(".reg_right a").click(function(e){
            ShowPopupWindow("modal_register", e);
        });
    }
}

/**
* Функция для обработки ответа сервера в процессе авторизации
* is_modal - производится авторизация через форму на главной (false), или через модальное окно (true)
*/
function AuthoriseCallBack(data, is_modal)
{
    if(data.result == "ok")
    {
        //закрываем модальное окно, и посылаем пользователя на сервисную страничку
        if(is_modal) HidePopupWindow(null);
        if(is_modal)
        {
            window.location.href = pathRoot+"/personal/";
        }
        else
        {
            window.location.href = pathRoot+"/personal/login.php";
        }
    }
    else if(data.result == "not_activated")
    {
        //Показ сообщения о том, что пользователь не активен
        ShowPopupWindow("modal_not_activated", null);
        var login = "";
        if(is_modal)
        {
            login = $("#modal_autorisation input[name='login']").val();
        }
        else
        {
            login = $("#ent_mail").val();
        }
        $("#not_activated_login").attr("value", login);
    }
    else
    {
        //показ сообщеня об ошибке
        var selector;
        if(is_modal)
        {
            $("#modal_autorisation .reg_right").html(data.error_text);
            selector = ".reg_right a";
        }
        else
        {
            ShowSysMessageWindow(data.error_text);
            selector = "#sys_message_form p a";
        }
        //показываем сообщение об ошибке
        $("#modal_autorisation .reg_right").html(data.error_text);
        //ссылка "напомнить пароль" или "зарегистрироваться"
        $(selector).click(function(e){
            var action = $(this).attr("rel");
            if(action == "register")
            {
                ShowPopupWindow("modal_register", e);
            }
            else if(action == "remind")
            {
                ShowPopupWindow("modal_password", e);
            }
        });
    }
}

function ShowSysMessageWindow(message, header)
{
    $("#sys_message_form p").html(message);
    $("#all_back").height($(document).height());
    $(".popup").center();
    if(header != undefined)
    {
        $("#sys_message_form h2").text(header);
    }
    else
    {
        $("#sys_message_form h2").text("Произошла ошибка!");
    }
    $("#all_back").fadeIn("fast");
    $("#modal_message").fadeIn("slow");
    $(".pop_close").css("text-decoration", "underline");
}

//Получает от сервера текст сообщения об ошибке и показывает его в модальном окне
function PopupError(message_id, header)
{
    $.post(
        pathRoot+"/ajax/get_system_message.php",
        {"message": message_id},
        function(data){
            ShowSysMessageWindow(data.message, header);
        },
        "json"
    );
}

/**
* Функция для обработки ответа от сервера в процессе повторной высылки активационного кода
*/
function ActivateCallback(data)
{
    if(data.result == "ok")
    {
        //закрываем модальное окно, и посылаем пользователя на страничку с сервисным сообщением
        HidePopupWindow(null);
        window.location.href = pathRoot+"/service/success_registration/";
    }
    else
    {
        //показываем сообщение об ошибке
        HidePopupWindow(null);
        ShowSysMessageWindow(data.error_text);
    }
}

/**
* Функция для обработки ответа от сервера в процессе получения результатов расчёта по номеру
*/
function GetQuestionnaireCallBack(data)
{
    if(data.result == "ok")
    {
        //закрываем модальное окно, и посылаем пользователя на страничку с сервисным сообщением
        HidePopupWindow(null);
        var code = $("#questionnaire_code").val();
        var path = (data.is_auth == true) ? "personal/history/questionnaire"+code+"/" : "calculate/step3/questionnaire"+code+"/";
        window.location.href = pathRoot+"/"+path;
    }
    else
    {
        //показываем сообщение об ошибке
        $("#modal_calculation .reg_right").html(data.error_text);
    }
}

function PleaseWait()
{
    $("body").css("cursor", "wait");
}

$(document).ready(function(){
    //кнопка "закрыть", кнопка ок в системном сообщении
    $(".pop_close, #sys_message_ok").click(function(e){
        HidePopupWindow(e);
    });

    //ссылка "зарегистрироваться"
    $("#ent_reg, #new_reg").click(function(e){
        ShowPopupWindow("modal_register", e);
    });
    //ссылка "напомнить пароль"
    $("#ent_password").click(function(e){
        ShowPopupWindow("modal_password", e);
    });
    //ссылка "ваш расчёт"
    $("#modal_calc a").click(function(e){
        ShowPopupWindow("modal_calculation", e);
    });
    //ссылка "личный кабинет" для незарегистрированного пользователя
    $("#ent_authorise a[href=#]").click(function(e){
        ShowPopupWindow("modal_autorisation", e);
    });

    //кнопка "зарегистрироваться"
    $("#reg_sub_register").click(function(e){
        e.preventDefault();
        login = $("#modal_register input[name='login']").val();
        password1 = $("#modal_register input[name='password1']").val();
        password2 = $("#modal_register input[name='password2']").val();
        //отправляем данные на сервер
        $.post(
            pathRoot+"/ajax/register.php",
            {"login": login, "password1": password1, "password2": password2},
            function(data){ RegisterCallBack(data); },
            "json"
        );
    });

    //курсор во время AJAX
    $("body").ajaxStart(function(){
        $(this).css("cursor", "wait");
    });
    $("body").ajaxComplete(function(request, settings){
        $(this).css("cursor", "");
    });

    //кнопка напомнить пароль
    $("#reg_sub_password").click(function(e){
        e.preventDefault();
        login = $("#modal_password input[name='login']").val();
        //отправляем данные на сервер
        $.post(
            pathRoot+"/ajax/remind_pwd.php",
            {"login": login},
            function(data){ RemindCallBack(data); },
            "json"
        );
    });

    //кнопка авторизоваться
    $("#reg_sub_autorisation").click(function(e){
        e.preventDefault();
        login = $("#modal_autorisation input[name='login']").val();
        password = $("#modal_autorisation input[name='password']").val();
        //отправляем данные на сервер
        $.post(
            pathRoot+"/ajax/authorise.php",
            {"login": login, "password": password},
            function(data){ AuthoriseCallBack(data, true); },
            "json"
        );
    });

    //кнопка войти, кнопка "авторизироваться и начать расчёт"
    $("#enter input[type='submit']").click(function(e){
        e.preventDefault();
        if($(this).attr("data-disabled") != "true")
        {
            login = $("#ent_mail").val();
            password = $("#ent_pass").val();
            remember = ($("#ent_check").attr("checked") == "") ? "" : "true";
            auth_and_calc = ($("#ent_auth_and_calc").val() == "true") ? "true" : "";
            brand = $("#ent_brand").val();
            model = $("#ent_model").val();
            //отправляем данные на сервер
            $.post(
                pathRoot+"/ajax/authorise.php",
                {
                    "login": login,
                    "password": password,
                    "remember": remember,
                    "auth_and_calc": auth_and_calc,
                    "brand": brand,
                    "model": model
                },
                function(data){ AuthoriseCallBack(data, false); },
                "json"
            );
        }
    });

    //кнопка "выслать код активации"
    $("#not_activated_button").click(function(e){
        e.preventDefault();
        login = $("#not_activated_login").val();
        //отправляем данные на сервер
        $.post(
            pathRoot+"/ajax/send_activation_code.php",
            {"login": login},
            function(data) { ActivateCallback(data); },
            "json"
        );
    });

    //кнопка "Показать расчет"
    $("#submit_get_questionnaire").click(function(e){
        e.preventDefault();
        code = $("#questionnaire_code").val();
        //отправляем данные на сервер
        $.post(
            pathRoot+"/ajax/get_questionnaire_by_code.php",
            {"code": code},
            function(data){ GetQuestionnaireCallBack(data); },
            "json"
        );
    });
});

function ValidateEmail(email)
{
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if(reg.test(email))
    {
        return true;
    }
    else
    {
        return false;
    }
}

function ValidatePhoneNumber(country_code, city_code, phone)
{
    var country_code_reg = /^8|\+7$/; //код или +7 или 8
    var city_code_reg = /^[0-9]{3}$/;
    var phone_reg = /^[0-9]{3}[- ]?[0-9]{2}[- ]?[0-9]{2}$/; //телефон 7 цифр с пробелами или с тире между группами

    if(!country_code_reg.test(country_code) || !city_code_reg.test(city_code) || !phone_reg.test(phone))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function ShowModalCallback(id)
{
    $("p.short_right").hide();
    ShowPopupWindow("modal_collback");
    if (id) {
        $("#id").val(id);
    }
}

function ExpressOrderToMail()
{
    //собираем данные
    var country_code = $("#ex_ord_country_code").val();
    var city_code = $("#ex_ord_city_code").val();
    var phone = $("#ex_ord_phone").val();
    var name = $("#ex_ord_name").val();
    var region_name = $('#s_region span').html();
    var casco = '';
    var osago = '';
    if ($("#ex_casco").attr('checked')) {
        casco = $("#ex_casco").val();
    }
    if ($("#ex_osago").attr('checked')) {
        osago = $("#ex_osago").val();
    }

    var is_error = false;
    $("div.error-comment").css('visibility','hidden');
    
    if (name=='') {
        $("#polis_name_error").css('visibility','visible');
        is_error = true;
    }
    
    if (region_name=='') {
        $("#polis_region_error").css('visibility','visible');
        is_error = true;
    }
    
    if (!ValidatePhoneNumber(country_code, city_code, phone))  {
        $("#polis_phone_error").css('visibility','visible');
        is_error = true;
    }
    

    if(!is_error)
    {
        var phone_number = country_code + ' ' + city_code + ' ' + phone;
        $.post(
            pathRoot+"/ajax/send_express_order_by_mail.php",
            {
                "client_name" : name, 
                "phone_number" : phone_number, 
                "region_name" : region_name, 
                "casco" : casco, 
                "osago" : osago
            }
        );

        //закрываем модальное окно
        HidePopupWindow();

        $("p.short_right").hide();
        ShowPopupWindow("modal_send_express");
    }

    return false;
}

function CreditOrderToMail()
{    
    //собираем данные
    var country_code = $("#cr_ord_country_code").val();
    var city_code = $("#cr_ord_city_code").val();
    var phone = $("#cr_ord_phone").val();
    var name = $("#cr_ord_name").val();
    var city = $("#cr_ord_city").val();
    var crAuto = '';
    var crIpoteka = '';
    var crZalog = '';
    var crLeasing = '';
    var crPotreb = '';
    var crOthers = '';
    
        
    if ($("#cr_auto").attr('checked')) {
        crAuto = $("#cr_auto").val();
    }
    
    if ($("#cr_ipoteka").attr('checked')) {
        crIpoteka = $("#cr_ipoteka").val();
    }
    
    if ($("#cr_zalog").attr('checked')) {
        crZalog = $("#cr_zalog").val();
    }
    
    if ($("#cr_leasing").attr('checked')) {
        crLeasing = $("#cr_leasing").val();
    }
    
    if ($("#cr_potreb").attr('checked')) {
        crPotreb = $("#cr_potreb").val();
    }
    
    if ($("#cr_others").attr('checked')) {
        crOthers = $("#cr_others").val();
    }

    var is_error = false;
    $("div.error-comment").css('visibility','hidden');
       
    
    if (name=='') {
        $("#credit_name_error").css('visibility','visible');
        is_error = true;
    }
    
    if (city=='') {
        $("#credit_city_error").css('visibility','visible');
        is_error = true;
    }
    
    if (!ValidatePhoneNumber(country_code, city_code, phone))  {
        $("#credit_phone_error").css('visibility','visible');
        is_error = true;
    }
    
    if(!is_error) {
        var phone_number = country_code + ' ' + city_code + ' ' + phone;
        $.post(
            pathRoot+"/ajax/send_credit_order_by_mail.php",
            {
                "client_name"   : name,
                "phone_number"  : phone_number,
                "city"          : city,
                "auto"          : crAuto,
                "ipoteka"       : crIpoteka,
                "zalog"         : crZalog,
                "leasing"       : crLeasing,
                "potreb"        : crPotreb,
                "others"        : crOthers
            }
        );

        //закрываем модальное окно
        HidePopupWindow();

        $("p.short_right").hide();
        ShowPopupWindow("modal_send_credit");
    }

    return false;
}


function ActionToMail()
{
    //собираем данные
    var country_code = $("#country_code").val();
    var city_code = $("#city_code").val();
    var phone = $("#phone_number").val();
    var name = $("#name").val();
    var email = $("#email").val();
    var id = $("#id").val();
    var is_error = false;

    if (country_code == '' || city_code == '' || phone == '' || name == '' || email == '' || id == '') {
        $("p.short_right").text("Не все поля заполнены");
        $("p.short_right").show();
        is_error = true;
    }
    else if(!ValidatePhoneNumber(country_code, city_code, phone)) {//валидация телефона
        $("p.short_right").text("Неверный формат номера");
        $("p.short_right").show();
        is_error = true;
    }
    else if(!ValidateEmail(email)) {//валидация почты
        $("p.short_right").text("Неверные формат e-mail");
        $("p.short_right").show();
        is_error = true;
    }
    else {
        $("p.short_right").hide();
    }


    if(!is_error)
    {
        var phone_number = country_code + ' ' + city_code + ' ' + phone;
        $.post(
            pathRoot+"/ajax/send_action.php",
            {"client_name": name,"phone_number": phone_number, "email": email,"id": id}
        );

        //закрываем модальное окно
        HidePopupWindow();

        $("p.short_right").hide();
        ShowPopupWindow("modal_send");
    }

    return false;
}


function ShowInsurancePopup () {
    ShowPopupWindow('modal_collback', false); 
    $('#s_region span').html('');
    // Выпадающий список регионов    
	$(".s_region_list").css("top",$("#s_region").offset().top + 15+"px");
    $(".s_region_list").css("left",$("#s_region").offset().left + 1+"px");   
 
}


$(document).ready(function() {
    $("#ex_ord_country_code").keyup(function(){
        if ($("#ex_ord_country_code").val().length == 1) {
            $("#ex_ord_city_code").focus();
        }
    });
    $("#ex_ord_city_code").keyup(function(){
        if ($("#ex_ord_city_code").val().length == 3) {
            $("#ex_ord_phone").focus();
        }
    });

    $("#country_code").keyup(function(){
        if ($("#country_code").val().length == 1) {
            $("#city_code").focus();
        }
    });
    $("#city_code").keyup(function(){
        if ($("#city_code").val().length == 3) {
            $("#phone_number").focus();
        }
    });

});

