﻿//A hastily converted (jQuery to utilize Mootools) rating toolbar class
var RatingToolbarClass = function() {
    var o = this, oLinks;
    
    this.init = function() {
        o.oLinks = $$('.gallery .detail-wrapper .ratingToolbar ul li a');
        
        o.oLinks.addEvent('mouseover', function() { o.activate(this); });
        o.oLinks.addEvent('mouseout', function() { o.deactivate(); });
        o.oLinks.addEvent('click', function() { o.oLinks.removeEvents(); o.oLinks.addEvent('click', function() { return false; }); o.rate(this); return false; });
    }
    
    this.activate = function(el) {
        var parent = $$(el).getParent();
        var next = $$(parent).getAllNext();
        var previous = parent.getAllPrevious().combine(parent);
        
        $$(next).set('class','off');
        $$(previous).set('class','hover');
    }
    
    this.deactivate = function() {
        o.oLinks.each(function(lnk) {
            if (lnk.hasClass('on')) { lnk.getParent().set('class',''); }
            else { lnk.getParent().addClass('off'); }
        });
    }
    
    this.rate = function(el) {
        var score = $(el).get('text');
        var req = new Request({
	        url: '/tinscontest/async/async-handler.ashx',
	        method: 'post',
	        data: 'ajaxModule=rateTin&tinId='+o.getQuerystring('Id')+'&score='+score,
	        onFailure: function(){ o.handleResult(-1); },
	        onSuccess: function(response){ o.handleResult(response, score); }
        });
        
        req.send();
    }
    
    this.handleResult = function(iAverageScore, userRating) {
        if(iAverageScore == -1) { //Error
            o.deactivate();
        }
        else {
            o.oLinks.each(function(lnk, i) {
                if(i < userRating) { lnk.addClass('on').getParent().set('class',''); }
                else { lnk.set('class','').getParent().addClass('off'); }
            });
        }

        o.oLinks.addEvent('mouseout', function() { o.init(); });
    }
    
    this.getQuerystring = function(key) {
        key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
        var qs = regex.exec(window.location.href);
        if(qs == null) { return ''; }
        else { return qs[1]; }
    }
}