DOCUMENT_ROOT = 'http://'+ document.domain + '/';

delivery_types = {'in_moscow':250, 'out_moscow':380}; //способы доставки
color_error = '#d1eb66';

function hidePopup(){
    $('#popup').fadeOut('fast');
}

function checkEmail(login){
     var checker = new obj_checker();
     if (login && checker.string_is_email(login)){
         $.post(DOCUMENT_ROOT + "registration/", {action: 'checkEmail', email: login}, function(data){
             if (eval(data)) $('#error_email').html('данный email свободен');
             else $('#error_email').html('такой email уже используется.');
         });
     }
}

function forgotEmail(email){
    var checker = new obj_checker();
     
    $("#email").css("border", "1px solid #B3B3B3");
    $('#error_email').html('');
    
    $('#forgot_loader').css({visibility:'visible'});
    
    checked = true;
    
    if (!checker.string_is_email(email)) {
        $('#error_email').html(email ? 'Некорректный Email.' : 'Поле обязательно для заполнения.');
        $("#email").css("border", "2px solid " + color_error);
        checked = false;
    } 
    
    if (checked){
         $('#error_email').html('');
         $.post(DOCUMENT_ROOT + "forgot/", {action: 'forgotEmail', email: email}, function(data){
             $('#forgot_loader').css({'visibility':'hidden'});
             if (eval(data)) $('#error_email').html('Такой email никогда не использовался.');
             else $('#error_email').html('Вам отправлено письмо с новым паролем.');
         });
    } else {
        $('#forgot_loader').css({'visibility':'hidden'});
    }
}

function obj_order(){
     function obj_order(){}

     this.makeOrder = function(id){
         hidePopup();

         $('.added').hide();

         $('#availability_' + id).hide();;
         $('#added_' + id).fadeIn("slow");
         
         window.setTimeout(function() {
                $('#added_' + id).hide();
                $('#availability_' + id).fadeIn("slow");
         },700);

         $.post(DOCUMENT_ROOT + "order_action/", {action: 'add', id_product: id}, function(data){
             if (data) $('#basket_block').html(data);
         });
     }

     this.showFullOrder = function(){
         $.post(DOCUMENT_ROOT + "order_action/", {action: 'show'}, function(data){
             if (data) $('#popup').html(data);
         });
     }
     
     this.update = function(){
         arr = $('.quantity').get();
         for_post = '';
         for(var i in arr) for_post += arr[i].id + ':' + arr[i].value + ';';

         $.post(DOCUMENT_ROOT + "order_action/", {action: 'update', products: for_post}, function(data){
             location.href = location.href;
         });
     }

     this.deleteItem = function(id, id_line){
         //document.getElementById('line' + id_line).style.display = 'none';
         $.post(DOCUMENT_ROOT + "order_action/", {action: 'delete', id_product: id}, function(data){
            location.href = location.href;
            /*data = eval('(' + data + ')');

            full_price = data['price'] ? data['price'] : 0;
            
            $('#general_price').val(full_price);
            $('#general_price_span').html(full_price + ' руб');
            effectBasket('general_price_span');
            getDeliveryPrice();
            effectBlockBasket();

            if (data['basket_info']) $('#basket_block').html(data['basket_info']);*/
         });
     }
}

function close_tip(){ $('.tips').hide();}

function effectBasket(id){
    $('#' + id).hide();
    $('#' + id).fadeIn("slow").css({"background-color": "#ffd354"});
    
    window.setTimeout(function() {
            $('#' + id).css({"background-color": ""});
    },700);
}

function getDeliveryPrice(){
    /* -- обработка доставки -- */
    /* 1 - Самовывоз, 2 - Москва, 3 - Область, 4 - Регионы */
    
    var delivery_price = 0;
    var txtdelivery_field = '';
    
    switch($('input[name=delType]:checked').val()){
        case '1':
            delivery_price = -1;
            $('#delivery_field').html(txtdelivery_field);
            break;
        case '2':
            delivery_price = delivery_types['in_moscow'];
            txtdelivery_field = 'Итого с доставкой: ' + ($('#general_price').val() * 1 + (delivery_price > 0 ? delivery_price : 0)) +  ' руб';
            $('#delivery_field').html(txtdelivery_field);
            break;
        case '3':
            delivery_price = delivery_types['out_moscow'];
            txtdelivery_field = 'Итого с доставкой: ' + ($('#general_price').val() * 1 + (delivery_price > 0 ? delivery_price : 0)) +  ' руб';
            $('#delivery_field').html(txtdelivery_field);
            break;
        case '4':
            txtdelivery_field = 'стоимость доставки вам сообщит наш менеджер, либо вы можете рассчитать ее на сайте <a href="http://emspost.ru/" target="_blank">emspost.ru</a>';
            $('#delivery_field').html(txtdelivery_field);
            break;
        default:
            if (document.getElementById('del2')){
                $('#del2').click();
                getDeliveryPrice();
            }
            break;
    }
    
    if (delivery_price>-1) $('#delivery_field').show();
    else $('#delivery_field').hide();
}

function obj_checker(){
    this.ckecked = '';

    function obj_checker(){
        this.ckecked = false;
    }

    this.string_is_email = function(str) {
        var re = /^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$/i;
        return this.ckecked = re.test(str) ? true : false;
    }

    this.string_is_login = function(str) {
        var re = /^[a-z0-9_]+$/i;
        return this.ckecked = re.test(str) ? true : false;
    }

    this.string_is_name = function(str) {
        var re = /^[a-zA-Zа-яА-Я ]+$/i;
        return this.ckecked = re.test(str) ? true : false;//(this.string_is_name(str) ? true :
    }

    this.string_is_mobile = function(str) {
        var spaceRe = / +/g;
        str = str.replace(spaceRe, "");

        var re = /^(\+7|8)[0-9]{10}$/i;

        this.ckecked = re.test(str) ? true : false;
        return this.ckecked;
    }

    this.string_is_phone_city = function(str) {
        var spaceRe = / +/g;
        str = str.replace(spaceRe, "");

        if (str.length > 7) var re = /^(\+7|8)[0-9]{10,14}$/i;
        else var re = /^[0-9]{7}$/i;

        this.ckecked = re.test(str) ? true : false;
        return this.ckecked;
    }

    this.string_is_date = function(str) {
        var re = /^\d{1,2}\.\d{1,2}\.\d{1,4}$/;
        this.ckecked = re.test(str) ? true : false;
    }
}

function checkInfo(parameters){
    
    parameters = parameters ? eval(parameters) : '';
    
    var first_name = $("#first_name").val();
    var last_name  = $("#last_name").val();
    var email      = $("#email").val();
    var phone      = $("#phone").val();
    var address    = $("#address").val();
    var metro      = $("#metro").val();
    var type_city  = $("#city").val();
    var city_name  = $("#city_name").val();
    var region     = $("#region").val();
    var index      = $("#index").val();
    var password   = $("#password").val();
    var submit_pwd = $("#submit_pwd").val();
    
    
    var checker = new obj_checker();
    
    $("#first_name").css("border", "1px solid #B3B3B3");
    $("#last_name").css("border", "1px solid #B3B3B3");
    $("#email").css("border", "1px solid #B3B3B3");
    $("#phone").css("border", "1px solid #B3B3B3");
    $("#address").css("border", "1px solid #B3B3B3");
    $("#metro").css("border", "1px solid #B3B3B3");
    $("#type_city").css("border", "1px solid #B3B3B3");
    $("#city_name").css("border", "1px solid #B3B3B3");
    $("#region").css("border", "1px solid #B3B3B3");
    $("#index").css("border", "1px solid #B3B3B3");
    
    $("#password").css("border", "1px solid #B3B3B3");
    $("#submit_pwd").css("border", "1px solid #B3B3B3");
    
    checked = true;
    
    if (!checker.string_is_name(first_name)) {
        $('#error_first_name').html(first_name ? 'Некорректное имя' : 'Поле обязательно для заполнения');
        $("#first_name").css("border", "2px solid " + color_error);
        checked = false;
    } else $('#error_first_name').html('');
    
    if (!checker.string_is_name(last_name)) {
        $('#error_last_name').html(last_name ? 'Некорректная фамилия' : 'Поле обязательно для заполнения');
        $("#last_name").css("border", "2px solid " + color_error);
        checked = false;
    } else $('#error_last_name').html('');
    
    if (!(checker.string_is_mobile(phone) || checker.string_is_phone_city(phone))) {
        $('#error_phone').html(phone ? 'Пример +7 915 000 00 00, 89150000000, 84950000000, 00 000 00.' : 'Поле обязательно для заполнения.');
        $("#phone").css("border", "2px solid " + color_error);
        checked = false;
    } else $('#error_phone').html('');
    
    if (!checker.string_is_email(email)) {
        $('#error_email').html(email ? 'Некорректный Email.' : 'Поле обязательно для заполнения.');
        $("#email").css("border", "2px solid " + color_error);
        checked = false;
    } else $('#error_email').html('');
    
    if (password != submit_pwd || (!password && submit_pwd) || (password && !submit_pwd)){
        $('#error_password').html('Пароли не совпадают.');
        $("#password").css("border", "2px solid " + color_error);
        $("#submit_pwd").css("border", "2px solid " + color_error);
        checked = false;
    } else $('#error_password').html('');
    
    if ((!password || !submit_pwd) && (parameters['password'] && parameters['submit_pwd'])){
        $('#error_password').html('Введите пароль и его подтверждение.');
        $("#password").css("border", "2px solid " + color_error);
        $("#submit_pwd").css("border", "2px solid " + color_error);
        checked = false;
    }
    
    if (type_city>-1){
        if (!address) {
            $('#error_address').html('Не заполнен адрес доставки.');
            $("#address").css("border", "2px solid " + color_error);
            checked = false;
        } else $('#error_address').html('');
    }

    switch(type_city){
        case '0': /* Москва */
            if (metro>0) $('#error_metro').html('');
            else {
                $('#error_metro').html('Не выбрана станция метро.');
                $("#metro").css("border", "2px solid " + color_error);
                checked = false;
            }
            
            break;
        case '1': /* Регион */
            if (!city_name) {
                $('#error_city_name').html('Не заполнен город.');
                $("#city_name").css("border", "2px solid " + color_error);
                checked = false;
            } else $('#error_city_name').html('');

            if (!region) {
                $('#error_region').html('Не заполнен регион.');
                $("#region").css("border", "2px solid " + color_error);
                checked = false;
            } else $('#error_region').html('');

            if (!index) {
                $('#error_index').html('Не заполнен индекс.');
                $("#index").css("border", "2px solid " + color_error);
                checked = false;
            } else $('#error_index').html('');
            break;
        case '2': /* Подмосковье */
            if (metro>0) $('#error_metro').html('');
            else {
                $('#error_metro').html('Не выбрана станция метро.');
                $("#metro").css("border", "2px solid " + color_error);
                checked = false;
            }
            
            if (!city_name) {
                $('#error_city_name').html('Не заполнен город.');
                $("#city_name").css("border", "2px solid " + color_error);
                checked = false;
            } else $('#error_city_name').html('');
            break;
         default:
             break;
    }
    
    return checked;
}

function effectBlockBasket(){
    $('#basket_block').fadeOut("slow");

    $('#basket_block').fadeIn("fast").css({"background-color": "#ffd354"});

    window.setTimeout(function() {
            $('#basket_block').fadeIn("fast").css({"background-color": ""});
    },500);
}

$(document).ready(function(){
    $('#addLink').hide();
    obj_order = new obj_order();// объект заказа товаров
    
    // -- при нажатии добавления в корзину --
    $('.order_link').click(function(){
        effectBlockBasket();
        obj_order.makeOrder(this.id);
    });
    // -- при нажатии добавления в корзину --
    
    $('.block_type').click(function(){
        effectBasket('delivery_and_full_price');
        getDeliveryPrice();
        toggleSlide(this.id);
    });

    if (get_user_place) {
        $('#del' + get_user_place).click();
        toggleSlide('block' + get_user_place);
    }
    
    getDeliveryPrice();
    // -- обработка доставки --

    // -- обработчики сабмита --
    $('#sub_basket').click(function(){
        if ($('#general_price').val()>0) {
            $("#sub_basket").attr("href", "javascript:document.forms['basket_form'].submit();"); //$('#basket_form').submit();
        } else $("#sub_basket").attr("href", "javascript:alert('Мы можем к Вам приехать просто так.');");
    });

    $('#back_to_basket').click(function(){
         location.href = DOCUMENT_ROOT + 'basket/';
    });

    $('#to_buy').click(function(){
        //if (checkInfo("({'password':true,'submit_pwd':true})")) $('#info_form').submit();
        if (checkInfo("({'password':true,'submit_pwd':true})") || !document.getElementById('password')) {
            $("#to_buy").attr("href", "javascript:document.forms['info_form'].submit();"); //$('#basket_form').submit();
        }
    });
    
    $('#save_private').click(function(){
            if (checkInfo("({'password':true,'submit_pwd':true})")) $("#save_private").attr("href", "javascript:document.forms['private_form'].submit();"); //if (checkInfo("({'password':true,'submit_pwd':true})")) $('#private_form').submit();
    });
    
    $('#to_reg').click(function(){
        $.post(DOCUMENT_ROOT + "registration/", {action: 'checkEmail', email: $("#email").val()}, function(data){
             if (eval(data)) {
                if (checkInfo()) {
                    $("#to_reg").attr("href", "javascript:document.forms['info_form'].submit();"); //if (checkInfo()) $('#info_form').submit();
                }
             } else {
                 $('#error_email').html($("#email").val() ? 'такой email уже используется.' : 'Поле обязательно для заполнения.');
                 $("#email").css("border", "2px solid " + color_error);
             }
         });
    });
    // -- обработчики сабмита --
    
    // обработчики входа в личный кабинет
    $('#enter').click(function(){
        $('#private_loader').css({visibility:'visible'});
        $('#error_enter').css({visibility:'hidden'});
        
        $.post(DOCUMENT_ROOT + "private/", {action: 'enter', user:$('#regName').val(), password:$('#regPwd').val()}, function(data){
            $('#private_loader').css({'visibility':'hidden'});
            if (data.length > 50) $('#private_room').html(data);
            else $('#error_enter').css({visibility:'visible'});
        });
    });
    
    $('#enter_and_reg').click(function(){
        $('#private_loader_p').css({visibility:'visible'});
        $('#error_enter_p').css({visibility:'hidden'});
        
        $.post(DOCUMENT_ROOT + "private/", {action: 'enter', user:$('#regNameP').val(), password:$('#regPwdP').val()}, function(data){
            $('#private_loader_p').css({'visibility':'hidden'});
            if (data.length > 50) location.href = location.href;
            else $('#error_enter_p').css({visibility:'visible'});
        });
    });
    
    // обработчик вспылвающего окна
    $('#show_short_basket_info, #show_short_basket_info_2').click(function(){
        obj_order.showFullOrder();
        
        $('#popup').css({'visibility':'visible'}).hide().fadeIn("fast").show();
    });

    $('#fast_search').click(function(){
        location.href = DOCUMENT_ROOT + 'search/' + $('#fast_search_value').val();
    });


    $("#fast_search_value").keypress(function (e) {
          if(e.which == 13) {
             $('#fast_search').click();
          }
    });
});