(function($) {
    $.fn.growingtextarea = function() {
        this.locked = false;
        this.keyup(function(e) {
            if (!this.locked && (this.scrollHeight > this.clientHeight)) {
                this.locked = true;
                $(this)
                    .css('overflow-y', 'hidden')
                    .animate(
                        {height: (this.scrollHeight + 100 + 'px')},
                        'fast',
                        function() {
                            this.locked = false;
                        }
                    )
                    ;
            }
        }).keyup();
    };
})(jQuery);


$(function() {
    var fpEl = $('.featured-posts');
    if (fpEl.length) {
        var fp = {}
        fp.list = fpEl.find('.featured-posts__list');
        fp.items = fp.list.children();
        fp.itemCount = fp.items.length;
        fp.itemOnPageCount = 4;
        fp.itemWidth = fp.items.eq(0).width();
        fp.itemMargin = parseInt(fp.items.eq(1).css('margin-left'));
        fp.list.width((fp.itemWidth + fp.itemMargin) * fp.items.length - fp.itemMargin);
        fp.arrowLeft = fpEl.find('.featured-posts__arrow_left');
        fp.arrowRight = fpEl.find('.featured-posts__arrow_right');
        fp.slideBy = 4;
        fp.listShift = 0;
        fp.rightBorder = (fp.itemWidth + fp.itemMargin) * (fp.itemOnPageCount - fp.itemCount);
        
        fp.slideLeft = function(e) {
            e.preventDefault();
            var offset = fp.listShift + (fp.itemWidth + fp.itemMargin) * fp.slideBy;
            fp.listShift = offset;
            
            if (offset == 0) fp.arrowLeft.addClass('hidden');
            
            fp.list.animate({'marginLeft': offset + 'px'});
            fp.arrowRight.removeClass('hidden');
            return false;
        }

        fp.slideRight = function(e) {
            e.preventDefault();
            var offset = fp.listShift - (fp.itemWidth + fp.itemMargin) * fp.slideBy;
            fp.listShift = offset;
            
            if (offset == fp.rightBorder) fp.arrowRight.addClass('hidden');
            
            fp.list.animate({'marginLeft': offset + 'px'});
            fp.arrowLeft.removeClass('hidden');
            return false;
        }

        fp.arrowLeft.click(fp.slideLeft);
        fp.arrowRight.click(fp.slideRight);
        if (fp.itemCount > fp.itemOnPageCount) fp.arrowRight.removeClass('hidden');
    }


    var lcEl = $('.local-clubs');
    if (lcEl.length) {
        var lc = {};
        lc.list = lcEl.find('.local-clubs__list');
        lc.items = lc.list.children();
        lc.itemWidth = lc.items.eq(0).width();
        lc.itemMargin = parseInt(lc.items.eq(1).css('marginLeft'));
        lc.list.width((lc.itemWidth + lc.itemMargin) * lc.items.length - lc.itemMargin);
        lc.onPageCount = 6;
        lc.onPageWidth = (lc.itemWidth + lc.itemMargin) * lc.onPageCount;
        lc.listMaxShift = 0;
        lc.slider = lcEl.find('.local-clubs__slider_layout2');
        lc.list.css('height', lc.list.height());
        
        lc.slider.slider({
            slide: function(event, ui) {
                var pos = ui.value / 100;
                var shift = lc.listMaxShift * pos;
                lc.list.css('margin-left', -shift + 'px');
            }
        });

        lcEl.find('#local-clubs-city').change(function(e) {
            lc.list.css('margin-left', 0);
            var count = lc.items.hide().filter('.local-clubs__club_city-' + this.value).show().length;
            lc.items.filter(':visible').eq(0).addClass('local-clubs__club_first').siblings().removeClass('local-clubs__club_first');
            lc.listWidth = count * (lc.itemWidth + lc.itemMargin) - lc.itemMargin;
            lc.listMaxShift = lc.listWidth - lc.onPageWidth + lc.itemMargin;
            lc.list.width(lc.listWidth);
            if (count <= lc.onPageCount) lc.slider.slider('disable');
            else lc.slider.slider('enable');
        }).change();
    }
    
    var acEl = $('.add-comment');
    if (acEl.length) {
        var acContents = acEl.children('.add-comment_layout');
        if (location.hash == '#add-comment') acContents.show();
        acEl.find('.add-comment__title a').click(function(e) {
            e.preventDefault();
            acContents.slideToggle('fast');
        });
        acEl.find('textarea').growingtextarea();
    }
    
    var cEl = $('.clubs');
    if (cEl.length && window.clubCityUrl) {
        cEl.find('.clubs__choose a').click(function(e) {
            e.preventDefault();
            $(this).siblings('select').toggleClass('visible');
        });
        cEl.find('.clubs__head select').change(function() {
            if (this.value == 0) return;
            window.location = clubCityUrl.replace(/\/0\/$/, '/' + this.value + '/');
        });
    }
    
    $('.messages__close').live('click', function(e) {
        e.preventDefault();
        var el = $(this).parent();
        el.animate(
            {'margin-top': (parseInt(el.css('margin-top')) - el.height()) + 'px'},
            function() {
                el.remove();
            }
        );
    });
    
    if ($.datepicker) {
        $.datepicker.setDefaults({
            dateFormat: 'yy-mm-dd',
            firstDay: 1,
            monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
            monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
            dayNames: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
            dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
            nextText: 'Вперед',
            prevText: 'Назад'
        });

        $('.user-settings #id_birthday').datepicker({
            changeMonth: true,
            changeYear: true,
            yearRange: '1950:' + new Date().getFullYear()
        });
    }

    $('.write-post textarea#id_fulltext').growingtextarea();
    $('.add-club textarea#id_full_description').growingtextarea();
    $('.massmail textarea').growingtextarea();
    
    $('#select_image_chk input')
        .click(function() {
            if (this.checked) $('#select_image_field').show();
            else $('#select_image_field').hide();
        })
        .each(function() {
            if (!this.checked) $('#select_image_field').hide();
        })
        ;
});


