var Rater = new Class({
    initialize: function(options){
        this.id = options.id;
        this.type = options.type;
        this.submit_url = options.submit_url;
        this.rating = options.rating;
        this.num_ratings = options.num_ratings;
        this.feedback_box = options.feedback_box;
        this.object_name = options.object_name;

        this.locked = false;

        if (options.post_ajax)
            this.post_ajax = options.post_ajax;
        else
            this.post_ajax = function(){}
    },

    mouseOver: function(num){
        if (!this.locked){
            if (num == 0)
                this.feedback_box.innerHTML = "Слабо";
            else if (num == 1)
                this.feedback_box.innerHTML = "Уныло";
            else if (num == 2)
                this.feedback_box.innerHTML = "Нормально";
            else if (num == 3)
                this.feedback_box.innerHTML = "Хорошо";
            else if (num == 4)
                this.feedback_box.innerHTML = "Отлично!";

            for (var i = 0; i <= num; i++)
                document.getElementById(this.object_name + "_rating_star_" + i).className = "star star_full";
            for (var i = num + 1; i < 5; i++)
                document.getElementById(this.object_name + "_rating_star_" + i).className = "star star_empty";
        }
    },

    rate: function(num){
        if (!this.locked) {
            this.locked = true;
            var me = this;
            var c_name = "rated";
            var rated = "";
            var response = "";
            if (document.cookie.length > 0) {
                c_start = document.cookie.indexOf(c_name + "=");
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) 
                    c_end = document.cookie.length;
                
                r_sets = unescape(document.cookie.substring(c_start,c_end));
                sets = r_sets.split(",");
                for(var i = 0; i < sets.length; i++) {
                    if(sets[i] == this.id) {
                        me.feedback_box.innerHTML = "Уже голосовал";
                        return "";
                    }
                }

                if(sets[0]=="")
                    sets[0] = this.id
                else
                    sets.push(this.id);
                
                Cookie.dispose("rated");
                Cookie.write("rated", sets, {"path":"/"});
            }

            d = {   "id": this.id, 
                    "value": num + 1
                }
            var req = new Request({
                url: this.submit_url,
                method: "get",
                data: d,
                onComplete: function(response) {
                    me.feedback_box.innerHTML = "Спасибо!";
                    me.post_ajax();
                }
            }).send();
        }
    },

    reset: function(){
        if (!this.locked){
            for(var i = 0; i < 5; i++){
                if (this.rating <= i + 0.1)
                    document.getElementById(this.object_name + "_rating_star_" + i).className = "star star_empty";
                else if (this.rating < i + 0.5)
                    document.getElementById(this.object_name + "_rating_star_" + i).className = "star star_half";
                else
                    document.getElementById(this.object_name + "_rating_star_" + i).className = "star star_full";
            }
            this.feedback_box.innerHTML = this.num_ratings + " оценило";
        }
    }
});