(function () {

    function postRating(url, data, callback) {
        data['csrf_token'] = $('#csrf-token').val();
        $.ajax({
            url: url,
            type: 'POST',
            data: data,
            dataType: 'json',
            success: function(data, textStatus) {
                if (textStatus == 'success') {
                    callback(data);
                }
            },
            error: function(request, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
    }

    $(document).ready(function() {
        $('#form-star-rating').children('.current-rating').css({width:$('#rate').val()+'%'});

        var stars = $('#form-star-rating').children('.star');
        stars.click(function() {
            var width = (stars.index(this) + 1) / stars.length * 100;
            raterValue = $(this).children('a')[0].href.split('#')[1];
            data = {score:raterValue * 20};
            var url = $('#rate-url').val();
            postRating(url, data, function() {
                $('#count-rated').html(parseInt($('#count-rated').html()) + 1);
                $('#rating-form').hide();
                $('#rating').show();
            });
            $('.star-rating').children('.current-rating').css({width:width+'%'});
            return false;
        });

        $('.type-rate').click(function() {
            var data = {};
            var type = $(this).attr('id') == 'type-humor' ? 'humor' : 'art';
            data[type] = 1;
            var url = $('#rate-url').val();  
            postRating(url, data, function() {
                $('#count-type-' + type).html(parseInt($('#count-type-' + type).html()) + 1);
                $('#type-rating-form').fadeOut(function() {
                    $('#type-rating').fadeIn()
                });
            });
            return false;
        });

        $('.comment-clap').click(function() {
            var elm = $(this);
            var data = {};
            var url = elm.attr('href');
            postRating(url, data, function() {
                var span = $('span', elm.parent());
                span.html(parseInt(span.html()) + 1);
                elm.fadeOut();
            });
            return false;
        });

    });
})();


