$(function () {

    String.prototype.startsWith = function(str) {
        return (this.indexOf(str) === 0);
    };

    $.ajax({
        type: 'POST',
        url: '/subscriptions/get-subscriptions/',
        success: function(response) {
            if (response.status = 'success') {
                for (var field in response.data) {
                    if (typeof(response.data[field]) == 'boolean' && response.data[field]) {
                        elem = $('.' + field);
                        if (elem) {
                            add_to_subscriptions_list(elem);
                        }
                    }
                    if (typeof(response.data[field]) == 'object') {
                        for (var i = 0; i < response.data[field].length; i++) {
                            if (field == 'sb-authors')
                                classname = '.sb-author-';
                            if (field == 'sb-event-regions')
                                classname = '.sb-event-region-';
                            elem = $(classname + response.data[field][i]);
                            if (elem) {
                                add_to_subscriptions_list(elem);
                            }
                        }

                    }
                }
                set_current_subscriptions(response.data);
            }
        }
    });


    $('.subscription-on').click(function() {
        if ($(this).hasClass('active')) {
            remove_from_subscriptions_list($(this));
            subscribe();
        }
        else {
            add_to_subscriptions_list($(this));
            subscribe();
        }
        return false;
    });

    function subscribe() {
        var subscriptions = [];
        $('.b-subscriptions-current-list').children('li').each(function() {
            var sb_class = /\bsb-\S*\b/.exec(this.className)[0];
            subscriptions.push(sb_class);
        });
        $.ajax({
            type: 'POST',
            url: '/subscriptions/subscribe/',
            data: {'subscriptions': $.toJSON(subscriptions)},
            success: function(data) {
                
            }
        });
        return false;
    }


    function add_to_subscriptions_list(elem) {
        elem.addClass('active');
        sb_class = /\bsb-\S*\b/.exec(elem[0].className)[0];
        var elem_text = elem.text();
        if (sb_class.startsWith('sb-event-region-')) {
            elem_text = 'Ярмарки &rarr; ' + elem_text
        }

        if (sb_class.startsWith('sb-author-')) {
            elem_text = 'Новинки автора &rarr; ' + elem_text
        }

        var elem = '<li class="' + sb_class + ' b-subscriptions-current-list-item"><span>' + elem_text + '</span><a href="#" class="b-remove j-sb-remove"></a></li>';
        $('.b-subscriptions-current-list').append(elem).slideDown('small');
    }

    function remove_from_subscriptions_list(elem) {
        elem.removeClass('active');
        sb_class = /\bsb-\S*\b/.exec(elem[0].className)[0];
        $('.b-subscriptions-current-list').children('li').each(function() {
            if ($(this).hasClass(sb_class)) {
                $(this).remove();
                return false;
            }
        });
    }

    $('.j-sb-remove').live('click', function(){
       var sb_class = /\bsb-\S*\b/.exec($(this).parent()[0].className)[0];

        $('.b-subscriptions-current-list').children('li').each(function() {
            if ($(this).hasClass(sb_class)) {
                $(this).remove();
                $('.' + sb_class).each(function(){
                    $(this).removeClass('active')
                });
                return false;
            }
        });

        subscribe();

        return false;
    });

    $('#j-subscriptions-regions').toggle(function() {
        $('.b-subscriptions-regions').slideDown('slow');
    }, function() {
        $('.b-subscriptions-regions').slideUp('slow');
    });

});

