﻿Rating = {
    rateDescriptions: {
        'hide': "Me ne zanima",
        '1': 'Porazno',
        '2': 'Slabo',
        '3': 'Povprečno',
        '4': 'Dobro',
        '5': 'Odlično'
    },
    preload: [
	'/images/rating/not_interested_on.gif',
	'/images/rating/not_interested_off.gif',
	'/images/rating/not_interested_big_on.gif',
	'/images/rating/not_interested_big_off.gif',
	'/images/rating/star_avg.gif',
	'/images/rating/star_no.gif',
	'/images/rating/star_my.gif'
    ],
    insert: function(params) {
	if (!this.preloaded) {
	    this.preloaded = [];
	    for (var i = 0; i<this.preload.length; i++) {
		var dummy = new Image();
		dummy.src = this.preload[i];
		this.preloaded.push(dummy);
	    };
	}
	
        // container
        var obj = document.createElement('div');
        var e = document.getElementsByTagName('*');
        e[e.length-1].parentNode.appendChild(obj);
        obj.className = 'nrating' + (params.clickable ? ' clickable' : '');
        if (params.clickable) {
            obj.onmouseover = obj.onmouseout = this.updateView;
            obj.onclick = this.save;
        }
        obj.rateParams = params;
        
        if (typeof params.notInterested != 'undefined' && params.style != 'big') {
            var ni = document.createElement('span');
            ni.title = this.rateDescriptions['hide'];
            obj.appendChild(ni);
            obj.ni = ni;
        }
        
        // stars
        obj.stars = [];
        for (var i=1; i<=5; i++) {
            var star = document.createElement('span');
            star.rateParams = {myRating: i};
            star.title = this.rateDescriptions[i];
            obj.appendChild(star);
            obj.stars.push(star);
        };
        
        if (typeof params.notInterested != 'undefined' && params.style == 'big') {
            obj.appendChild(document.createElement('br'));
            var ni = document.createElement('span');
            ni.title = this.rateDescriptions['hide'];
            obj.appendChild(ni);
            obj.ni = ni;
        }
        
        (this.updateView.bind(obj))();
    },
    updateView: function(event) {
        event = event || window.event;
        var params = $H(this.rateParams);
        if (event && event.type != 'mouseout') {
            var src = Event.element(event);
            params = params.merge($H(src.rateParams));
        }
        this.newRateParams = params;
        
        if (this.ni) {
            this.ni.className = 'rate_ni_' + (params.style ? params.style + '_' : '') + (params.notInterested ? 'on' : 'off');
            this.ni.rateParams = {notInterested: this.rateParams.notInterested ? 0 : 1};
        }
        
        this.stars.each(function(star, i) {
            star.className = 'rate_star_' + ((i>=Math.round(params.myRating || params.rating)) ? 'off' : (params.myRating ? 'my' : 'on'));
        });
    },
    save: function(event) {
        this.rateParams = this.newRateParams;
        new Ajax.Request('/index.php', {
            method: 'post',
            parameters: 'action=films/vote&'+this.rateParams.toQueryString()
        });
    }
}