/**
 * Add to favorites
 */
var Favorites = new Class({

    Implements: Options,

    options: {
        add_btn:		'favorites_add_button',
        btn_container:	'favorites_button_container',
        base_href:		'favorites.php',
        favorites_href:	'#'
    },

    initialize: function(options) {
        this.setOptions(options);
    },

    addObject: function(object_id) {
        var request = new Request.HTML({
            url: this.options.base_href,
            method: 'post',
            data: {
                action: 'add',
                id: object_id
            },
            async: false,
            onSuccess: function() {
                if($(this.options.add_btn)) {
                    $(this.options.add_btn).addEvent('click', function() { });
                    $(this.options.btn_container).innerHTML = "Įtrauktas į <a class=\"default_link\" href=\"" + this.options.favorites_href + "\">mėgiamiausius</a>.";
                }
            }.bind(this)
        }).send();
    },

    removeObject: function(object_id) {
        var request = new Request.HTML({
            url: this.options.base_href,
            method: 'post',
            data: {
                action: 'remove',
                id: object_id
            },
            async: false,
            onSuccess: function() {
                location.reload();
            }
        }).send();
    }

});

var favorites = new Favorites({});


/**
 * Marks rating stars for rating block.
 */
function markStars(id, n) {
    if ($(id)) {
        var i = 0.5;
        $$('#' + id +' a').each(function(item) {
            if (n >= i) {
                item.addClass('active');
            } else {
                item.removeClass('active');
            }
            i = i + 1.0;
        });
    }
}

/**
 * Comments
 */
var ItemComments = new Class({});
ItemComments.loaderBlock = function() {
    var block = new Element('div', {
        'styles': {
            'text-align': 'center',
            'border-bottom': '1px solid #EBEAEA',
            'padding': '7px 0'
        }
    });
    var loader = new Element('img', {
        src: 'images/loading.gif'
    });
    loader.inject(block);
    return block;
}


ItemComments.addComment = function(url, container_id, error_id, form) {

    $(error_id).fade('hide', {
        link: 'chain'
    });
    var div = new Element('div');
    div.inject($(container_id), 'bottom');
    
    var f = $(form);
    if (f) {
        var list = f.getElements('textarea, input');
        var data = list.get('value').associate(list.get('name'));
        var inputItemsNames = ['name', 'comment', 'comments_submit'];
        var inputItems = new Array();
        list.each(function(item) {
            var name = item.get('name');
            if (inputItemsNames.contains(name)) {
                inputItems.include(item);
                item.set('disabled', 'disabled');
            }
        });
        data['action'] = 'add_comment';

        var request = new Request.JSON({
            url: url,
            method: 'post',
            data: data,
            async: false,
            onSuccess: function(responseJSON, responseText) {
                if (responseJSON.isError == 0) {

                    inputItems.each(function(item) {
                        item.set('value', '');
                    });
                    div.innerHTML = responseJSON.data.html;
                    if ($('rates_total')) {
                        $('rates_total').innerHTML = responseJSON.data.count;
                    }
                    if ($('rates_average')) {
                        $('rates_average').innerHTML = responseJSON.data.rating;
                    }
                    markStars('rates_stars', responseJSON.data.average);
                    scrollToObject(div);
                    highlight(div);
                }
                else {
                    riseError(error_id, responseJSON.errorMessage);
                }
                inputItems.each(function(item) {
                    item.set('disabled', '');
                });
            }
        }).send();
    }
};


ItemComments.showAllComments = function(url, container_id, total, link) {
		link = $(link);
    var div = new Element('div');
    var loader = ItemComments.loaderBlock();
    loader.inject(div);
    div.inject($(container_id), 'top');
    link.dispose();

    var request = new Request.JSON({
        url: url,
        method: 'post',
        data: {
            action: 'list_comments',
            total: total
        },
        async: false,
        onSuccess: function(responseJSON, responseText) {
            if (responseJSON.isError == 0) {
                div.innerHTML = responseJSON.data;
                scrollToObject(div);
                highlight(div);
            }
        }
    }).send();
};
