var Ratings = {
    "vote-for": "love it!",
    "vote-against": "hate it!",
    "thanks": "thanks!",
    "login": "login to rate",
    loadElements: function() {
        this.status = $("rating").down(".rating-total");
        this.linkUp = $("rating").down("[rev$=for]");
        this.linkDn = $("rating").down("[rev$=against]");
    },
    voteUrls: function(up, down) {
        this.urlUp = up;
        this.urlDown = down;
    }
}

Ratings.Logged = {
    init: function() {
        Ratings.loadElements();
        Ratings.status.currentRating = Ratings.status.innerHTML;
        $$("#rating .rate-link").invoke("observe", "click", this.rate);
    },
    rate: function() {
        [Ratings.linkUp, Ratings.linkDn].invoke("remove");
        Ratings.status.innerHTML = "voting...";
        new Ajax.Request($(this).readAttribute('href'), { onComplete: Ratings.afterVote });
        return false;
    },
    afterVote: function(request) {
        $("rating").replace(request.responseText);
    }
}

Ratings.Unlogged = {
    init: function() {
        this.loadElements();
        
        this.status.currentRating = this.status.innerHTML;
        
        $("rating").observe("mouseover", function() {
            Ratings.status.update(Ratings.login).setStyle({ "text-decoration": "underline", "cursor": "pointer" });
        });
        $("rating").observe("mouseout", function() {
            Ratings.status.update(Ratings.status.currentRating).setStyle({ "text-decoration": "none" });;
        });
        Ratings.status.observe("click", function() {
          window.location.href = "/login?redirect=" + window.location.href;
        });
    }
}
