// Warning plate show time.
var showtime = 3000;
// Request timeout.
var timeout = 6000;
var timer_id;

function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return(setStr);
}

$(document).ready(function() {
    $('#counters').hide();
    
    var op = new Operator({
        headerText:'Наш консультант',
        delayTime:20000,
        headerColor:'#9c72bd',
        headerTextColor:'#ffffff'
    });

    // to print
    $('.print').after('<p class="al_r print_w" style="line-height:32px; text-decoration:underline;cursor: pointer;">Распечатать<img src="/images/printer.png" width="35" height="32" class="fl_r"></p>');

    $('.print_w').bind('click', function() {
        $src = $(this).prev('.print').attr('src');
        if ($src) {
            pw = window.open('', '', 'width=520');
            pw.document.write('<img src="' + $src +'">');
            pw.print();
        }
    });

    // Subscribe
    $(function() {
        subscribe('#subscribe', 'Введите Ваш e-mail');
    });

    // Sets
    $(".name").bind('click', function() {
        $(this).parents('.set').find('.set_items').slideToggle();
        $(this).parents('.set').find('.cart_icon').fadeToggle();
    });
    
    $('.sets_cat_name').bind('click', function() {
        $(this).parent().nextUntil('h2').not('p').slideToggle();
    });
    

    $('.sub_item').hide();
    $('.sub_header').bind('click', function () {
        $(this).next('.sub_item').slideToggle();
    });

    // Closing warning plate.
    $('#close').bind('click', function() {
        $('#warning').slideUp();
    });
    
    // Products packs.
    $(".pack:first").addClass("active_product");
    $("#product_fotos IMG:first").show();
    $(".pack").bind('mouseover', function() {
        $(".pack").removeClass("active_product");
        $(this).addClass("active_product");
       
        var i = $(".pack").index($(this));

        $("#product_fotos IMG").hide();

        $("#product_fotos IMG").eq(i).show();
    })
    
    // Copy warning.
    $("body").bind('copy', function(event) {
        warning('Интернет-магазин "Роскосметика" является владельцем материалов, размещенных на сайте.<br>При использование материалов на других ресурсах сети просьба разместить активную ссылку на первоисточник.');
    })
    
    // Adding product to favorites
    $("a[href*='/room/add_favorites/']").bind('click', function(event) {
        event.preventDefault();
        url = $(this).attr('href');
        $.ajax({
            url: url,
            
            dateType: 'json',
            timeout: timeout,
            beforeSend: function(XmlHttp) {
                XmlHttp.setRequestHeader('ajax', '1');
            },
            success: function (date) {
                result = eval("(" + date + ")");

                warning(result.msg, showtime);
            },
            error: function () {
                con_error();
            }
        }
        );
        return false;
    });
    
    // Adding product or sets to cart
    $("a[href*='/cart/add/'], a[href*='/cart/add_set/']").live('click', function(event) {
        event.preventDefault();
        url = $(this).attr('href');
        $.ajax({
            url: url,
            dateType: 'json',
            timeout: timeout,
            beforeSend: function(XmlHttp) {
                XmlHttp.setRequestHeader('Ajax', '1');
            },
            success: function (date) {
                result = eval("(" + date + ")");
                if (!jQuery.isEmptyObject(result.item)) {
                    UpdateProducts(result.item);
                }
                if (!jQuery.isEmptyObject(result.set)) {
                    UpdateSets(result.set);
                }
                update_cart_page(result);
                update_cart(result);
                warning(decodeURIComponent(result.msg), showtime);
            },
            error: function () {
                con_error();
            }
        });
        return false;
    });

    // Subtracting product from cart.
    $("a[href*='/cart/subtract/'], a[href*='/cart/subtract_set/']").live('click', function(event) {
        event.preventDefault();
        url = $(this).attr('href');
        var quantity = $(this).next('.quantity').text();
        
        if (quantity == 1){
            if (!confirm('Желаете удалить из корзины?')) {
                exit();
            }
        }
        $.ajax({
            url: url,
            dateType: 'json',
            timeout: timeout,
            beforeSend: function(XmlHttp) {
                XmlHttp.setRequestHeader('Ajax', '1');
            },
            success: function (date) {
                result = eval("(" + date + ")");
                if (!jQuery.isEmptyObject(result.item)) {
                    UpdateProducts(result.item);
                }
                if (!jQuery.isEmptyObject(result.set)) {
                    UpdateSets(result.set);
                }
                update_cart(result);
                update_cart_page(result);
                warning(decodeURIComponent(result.msg), showtime);
            },
            error: function () {
                con_error();
            }
        });
        return false;
    });
    
    // Delete product from cart.
    $("a[href*='/cart/del/'], a[href*='/cart/del_set/']").live('click', function(e) {
        e.preventDefault();
        var target = $(this);
        url = $(this).attr('href');
        
        if (confirm('Желаете удалить из корзины?')) {
            $.ajax({
                url: url,
                dateType: 'json',
                timeout: timeout,
                beforeSend: function(XmlHttp) {
                    XmlHttp.setRequestHeader('Ajax', '1');
                },
                success: function (date) {
                    result = eval("(" + date + ")");
                    if (!jQuery.isEmptyObject(result.item)) {
                        UpdateProducts(result.item);
                    }
                    if (!jQuery.isEmptyObject(result.set)) {
                        UpdateSets(result.set);
                    }
                    update_cart(result);
                    update_cart_page(result);
                    warning(decodeURIComponent(result.msg), showtime);
                },
                error: function () {
                    con_error();
                }
            });
        }
        
        return false;
    });
    
    // Clearing cart
    $("a[href*='/cart/clear/']").live('click', function(e) {
        e.preventDefault();
        var target = $(this);
        url = $(this).attr('href');
        
        if (confirm('Желаете очистить корзину?')) {
            $.ajax({
                url: url,
                dateType: 'json',
                timeout: timeout,
                beforeSend: function(XmlHttp) {
                    XmlHttp.setRequestHeader('Ajax', '1');
                },
                success: function (date) {
                    result = eval("(" + date + ")");
                    ClearCart();
                    update_cart(result);
                    update_cart_page(result);
                    warning(decodeURIComponent(result.msg), showtime);
                },
                error: function () {
                    con_error();
                }
            });
        }
        
        return false;
    });
});

function update_cart(cart) {
    $('#cart p').eq(1).text(cart.quantity);
    if (cart.cost) {
        $('#cart p').eq(2).text('на сумму ' + cart.cost + ' руб.');
    }
    else {
        $('#cart p').eq(2).text('');
    }
}
function update_cart_page(cart) {
    $('td:contains("Стоимость заказа:")').next('td').text(cart.cost- 0 + ' руб.');
    $('td:contains("Ваша скидка:")').next('td').text(cart.discount + ' %');
    $('td:contains("Стоимость с учетом скидки:")').next('td').text(cart.discount_cost + ' руб.');
    cart.cost == 0 ? $('#cart_action').fadeOut() : $('#cart_action').fadeIn();
}

function con_error() {
    warning('Ошибка соединения, попробуйте попозже.');
}

function warning(msg, show_time) {
    var t = 400;
    
    if (timer_id) {
        clearTimeout(timer_id);
        delete timer_id;
    }

    //change text
    if ($('#warning').is(":visible")) {
        $('#warning P').fadeOut(t);
        setTimeout(function() {
            $('#warning P').html(msg);
            $('#warning P').fadeIn(t);
        }, t);
    }
    //slideDown plate
    else {
        $('#warning P').html(msg);
        $('#warning').slideDown();
    }
    
    // Hide plate
    if (show_time) {
        timer_id = setTimeout(function(){
            $('#warning').slideUp(t);
        }, show_time);
    }
}


function subscribe(element, text, text_color){
    var sf = $(element);
    text_color = text_color || '#888888';
    text = text || 'Введите Ваш email';

    sf.attr('value', text).css('color', text_color).bind('focus', function(){
        if ($(this).attr('value') == text) {
            $(this).attr('value', '').css('color', 'black');
        }
    }).bind('blur', function(){
        if ($(this).attr('value') == '') {
            $(this).attr('value', text).css('color', text_color);
        }
    }).parent('form').bind('submit', function(){
        return (sf.attr('value') == text ? false : true);
    });
}

function UpdateProducts(item) {
    var i = $('.pi'+item.id);
    
    if(i.size()) {
        if (item.quantity != 0) {
            i.find('.quantity').text(item.quantity);
            i.find('.pr').text((item.quantity * item.price) + ' руб.');
        } else {
            i.detach();
        }       
    }
    else {
        $('#pt').append('<tr class="pi' + item.id + '">\n\
                     <td class="va_t"><a href="/product/' + item.id + '"><img src="/products/s_' + item.id + '.jpg" width="50" height="50" alt=""></a></td>\n\
                     <td class="al_l" style="padding-left: 7px!important">\n\
                        <p><a href="/product/' + item.id + '">' + item.name + '</a></p>\n\
                        <p>' + item.pack + '</p>\n\
                        <p><span class="price">' + item.price + '</span>&nbsp;руб.</p>\n\
                     </td>\n\
                     <td class="al_c va_t">\n\
                        <a href="/cart/subtract/' + item.id + '" title="Удалить единицу товара"  class="kol_minus"></a>\n\
                        <span class="quantity">' + item.quantity + '</span>\n\
                        <a href="/cart/add/' + item.id + '" title="Добавить единицу товара" class="kol_plus"></a><br>\n\
                        <a href="/cart/del/' + item.id + '" class="del_item" title="Удалить товар из корзины">Удалить</a>\n\
                    </td>\n\
                    <td class="al_r va_t pr">' + item.quantity * item.price + '&nbsp;руб.</td> \n\
                  </tr>');
        $('#pt tr:last').hide().fadeIn();
    }
    
    if ($('#pt tr:gt(0)').size()) {
        $('#pt').fadeIn();
    }
    else {
        $('#pt').fadeOut();
    }
}

function UpdateSets(set) {
    var i = $('.s' + set.id);
    if (set.quantity != 0) {
        i.find('.quantity').text(set.quantity);
        i.find('.price').text((set.quantity * set.price));
        for (var key in set.items) {
            var item = set.items[key];
            i.find('.si'+item.id + ' .item_quantity').text(item.quantity * set.quantity);
        }
    }else {
        i.detach();
    }
    
    if ($('#st tr:gt(0)').size()) {
        $('#st').fadeIn();
    }
    else {
        $('#st').fadeOut();
    }
}

function ClearCart() {
    $('.cart_table').hide().find('tr:gt(0)').detach();
}
