DOCUMENT_ROOT = 'http://'+ document.domain + '/';

delivery_types = {'in_moscow':200}; //способы доставки , 'out_moscow':380
color_error = '#d1eb66';

function setFilterBrand(param){
    lh  = ($('#price_from').val() > 0 ? '?from=' + $('#price_from').val() : '');
    lh += ($('#price_to').val() > 0 ? (lh ? '&' : '?') + 'to=' + $('#price_to').val() : '');
    lh += ((lh ? '&' : '?') + 'brand=' + param);

    lh  = DOCUMENT_ROOT + 'search/' + $('#query_text').val() + ($('#query_text').val() ? '/' : '') + lh;

    if ($('#query_text').val() || $('#price_from').val() || $('#price_to').val()) location.href = lh;
    else location.href = DOCUMENT_ROOT + 'search/';
}

function setFilterPrice(param){
    lh  = ($('#price_from').val() > 0 ? '?from=' + $('#price_from').val() : '');
    lh += ($('#price_to').val() > 0 ? (lh ? '&' : '?') + 'to=' + $('#price_to').val() : '');
    lh += ((lh ? '&' : '?') + 'price=' + param);

    lh  = DOCUMENT_ROOT + 'search/' + $('#query_text').val() + ($('#query_text').val() ? '/' : '') + lh;

    if ($('#query_text').val() || $('#price_from').val() || $('#price_to').val()) location.href = lh;
    else location.href = DOCUMENT_ROOT + 'search/';
}

function obj_compare(){
     function obj_compare(){}

     this.addCompare = function(id){
         $.post(DOCUMENT_ROOT + "compare/", {action: 'add', id_product: id}, function(data){
             $('#compare_catalog').show();
         });
     }

     this.deleteCompare = function(id){
         $.post(DOCUMENT_ROOT + "compare/", {action: 'delete', id_product: id}, function(data){
             location.href = location.href;
         });
     }
}

function obj_order(){
     function obj_order(){}

     this.makeOrder = function(id){
         $.post(DOCUMENT_ROOT + "order_action/", {action: 'add', id_product: id}, function(data){
             if (data) $('#basketBlock').html(data);
         });
     }

     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){
             if (data) {
                 $('#hiddenInfo').html(data);
                 $('#general_price_span').html($('#generalSum').val() + ' руб.');
                 getDeliveryPrice();
             }
         });
     }
}

function showPreview(element) {
    if (document.getElementById('preview'+element)) document.getElementById('preview'+element).style.display = 'block';
}

function hidePreview(element) {
    if (document.getElementById('preview'+element)) document.getElementById('preview'+element).style.display = 'none';
}

function toggleSlide(idBlock) {
    for (var f=1;f<=7;f++) {
        f=f+'';

        if (node = document.getElementById('block'+f) ) {
            if ('block'+f == idBlock ) {
                node.className = 'colored';
                if (del = document.getElementById('del'+f)) del.checked = true;
            } else {
                node.className = '';
            }
        }
    }
}

function getDeliveryPrice(){
    /* -- обработка доставки -- */
    /* 1,6,7 - Самовывоз, 2 - Москва, 3 - Область, 4 - Регионы */

    var delivery_price = 0;
    var txtdelivery_field = '';

    switch($('input[name=delType]:checked').val()){
        default://'1' || '6' || '7'
            delivery_price = -1;
            $('#delivery_field').html(txtdelivery_field);
            break;
        case '2':
            delivery_price = delivery_types['in_moscow'];
            txtdelivery_field = 'Итого с доставкой: <span>' + ($('#generalSum').val() * 1 + (delivery_price > 0 ? delivery_price : 0)) +  ' руб.</span>';
            $('#delivery_field').html(txtdelivery_field);
            break;
        case '3':
            //delivery_price = delivery_types['out_moscow'];
            //txtdelivery_field = 'Итого с доставкой: ' + ($('#generalSum').val() * 1 + (delivery_price > 0 ? delivery_price : 0)) +  ' руб';
            txtdelivery_field = 'стоимость доставки оговаривается с менеджером.';
            $('#delivery_field').html(txtdelivery_field);
            break;
            break;
        /*case '4':
            txtdelivery_field = 'стоимость доставки вам сообщит наш менеджер, либо вы можете рассчитать ее на сайте <a href="http://emspost.ru/" target="_blank">emspost.ru</a>';
            $('#delivery_field').html(txtdelivery_field);
            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 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");
    
    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 (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;
}

$(document).ready(function() {
    $('#menu li:last').addClass('last');
	$('.catalogue li p:last').css('display','none');
    $('.top5 li:eq(5), .top5 li:eq(11)').addClass('last');
    $('.items th:first').css('width','575px');
	$('.descBlock2 table:last td').css('border','none');
	$('.picRight, .picLeft').unwrap();
    
    obj_order = new obj_order();// объект заказа товаров
    obj_compare = new obj_compare();

    /* -- при нажатии добавления в корзину -- */
    $('.order_link').click(function(){
        obj_order.makeOrder(this.id);
    });
    /* -- при нажатии добавления в корзину -- */

    /* -- при нажатии добавления к сравнению -- */
    $('.compare_link').click(function(){
        obj_compare.addCompare(this.id);
        //$('#' + this.id).hide();
		$('#' + this.id).css('visibility','hidden');
    });
    /* -- при нажатии добавления к сравнению -- */

    /* -- при нажатии добавления из сравнения -- */
    $('.compare_link_delete').click(function(){
        obj_compare.deleteCompare(this.id);
    });
    /* -- при нажатии добавления из сравнения -- */
    
    $('.block_type').click(function(){
        toggleSlide(this.id);
        getDeliveryPrice();
    });

    /* -- обработчики сабмита -- */
    $('#sub_basket').click(function(){
        if ($('#generalSum').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()) {
            $("#to_buy").attr("href", "javascript:document.forms['info_form'].submit();");
        }
    });
    
    /* -- обработчики сабмита -- */
    
    $('#fast_search').click(function(){
        lh  = DOCUMENT_ROOT + 'search/' + $('#query_text').val() + ($('#query_text').val() ? '/' : '');
        lh += ($('#price_from').val()>0 || $('#price_to').val()>0 ? '?' : '');
        lh += $('#price_from').val() > 0 ? 'from=' + $('#price_from').val() : '';
        lh += $('#price_to').val()   > 0 && $('#price_from').val() > 0 ? '&' : '';
        lh += $('#price_to').val()   > 0 ? 'to=' + $('#price_to').val() : '';

        if ($('#query_text').val() || $('#price_from').val() || $('#price_to').val()) location.href = lh;
        else location.href = DOCUMENT_ROOT + 'search/';
    });

    $("#query_text, #price_from, #price_to").keypress(function (e) {
          if(e.which == 13) {
             $('#fast_search').click();
          }
    });

    $('#block2').click(); /* нужно в случае отсутствия ЛК и регистрации */

    /* \/ добавление отзывов */
    $('#addLink').click(function(){
        $('#fade, #divfixed').toggleClass('visible');
    });

    $('#close_popup2').click(function(){
        $('#fade, #divfixed').removeClass('visible');
    });

    $('#fade, #divfixed').removeClass('visible');

    $('#addButton').click(function(){
         var checker = new obj_checker();
         if (!checker.string_is_name($('#rw_name').val())){
            alert('Имя не указано или имеет недопустимые символы.');
         } else {
             if (checker.string_is_email($('#rw_email').val())){
                 $('#fade, #divfixed').toggleClass('visible');
                 $.post(DOCUMENT_ROOT,  { action:'add_review', name: $('#rw_name').val(), email:  $('#rw_email').val(), text: $('#rw_text').val(), id_product: $('#id_product').val()}, function(data){
                     alert('Спасибо за отзыв. Ваш отзыв поставлен в очередь на модерацию.');
                 });
             } else alert('Email не указан или имеет недопустимые символы.');
         }
    });

    /* /\ добавление отзывов */
});
