var Vouching = {

    init: function() {
        $('.js_vouch_btn').click(function(){
            var sUserName = $('.js_vouch_btn').attr('id');
            sUserName = sUserName.replace('js_user_','');
            if ($(this).hasClass('gray')) {
                return false;
            }

            var oClicked = $(this);
            $.ajax({
                url: '/vouch.html',
                type: 'POST',
                dataType: 'json',
                data: {'username': sUserName, 'action': 'like'},
                beforeSend: function() {
                    oClicked.addClass('gray');
                    var sCurrentValue = $('.js_vouch_count_left').html();
                    sCurrentValue = sCurrentValue.replace(',','');
                    var newCount = parseInt(sCurrentValue)+1;
                    $('.js_vouch_count_left').text(numberFormat(newCount));
                },
                success: function(data) {
                    if ('ok' != data.type) {
                        Vouching.displayErrors(data.message);
                    }
                },
                complete: function() {
                    oClicked.removeClass('gray');
                }
            });

            return false;
        });
        
        $('.js_dislike_btn').click(function(){
            var sUserName = $('.js_vouch_btn').attr('id');
            sUserName = sUserName.replace('js_user_','');
            if ($(this).hasClass('gray')) {
                return false;
            }

            var oClicked = $(this);
            $.ajax({
                url: '/vouch.html',
                type: 'POST',
                dataType: 'json',
                data: {'username': sUserName, 'action': 'unlike'},
                beforeSend: function() {
                    oClicked.addClass('gray');
                    var sCurrentValue = $('.js_vouch_count_right').html();
                    var newCount = parseInt(sCurrentValue)+1;
                    $('.js_vouch_count_right').text(numberFormat(newCount));                    
                },
                success: function(data) {
                    if ('ok' != data.type) {
                        Vouching.displayErrors(data.message);
                    }
                },
                complete: function() {
                    oClicked.removeClass('gray');
                }
            });

            return false;
        });
    },

    /**
     * Helps to display errors in dialog box
     */
    displayErrors: function(errors) {
        var sMessage = '';

        if (errors instanceof Array) {
            for(i = 0; i < errors.length-1; ++i) {
                sMessage += errors[i] + '\n';
            }
            sMessage += errors.pop();
        } else {
            sMessage = errors;
        }

        alert(sMessage);
    }

}

$(function(){
    Vouching.init();
});
