var NUMBER_STARS = 5;
var UID = user_id;
if (UID < 1) {
	var UID = 0;
}

var rip = new Class({
	initialize: function(els, action, params) {
		if ($type(els) == 'array') {
			els.each(function(el){
				this.prepStars(el);
			}.bind(this));
		} else if ($type(els) == 'element') {
			this.prepStars(els);
		} else {
			return;
		}

		this.action = action;
		this.params = params;
	},
	prepStars: function(el) {
		var obj = this;
		var classes = el.getProperty('class').split(" ");
		for (i=classes.length-1;i>=0;i--) {
			if (classes[i].contains('id:')) {
				var id = classes[i].split(":")[1];
			}
		}

		var rating = el.getText(); el.empty();
		if (rating > NUMBER_STARS || rating < 0) {
			return;
		}

		for (var i = 0; i < NUMBER_STARS; i++) {
			var star = new Element('img', {'id': 'rating_' + id + '_' + i});

			if (rating >= 1) {
				star.setProperties({
					'src': '/media/rating_on.gif',
					'class': 'on'
				});
				rating--;
			} else if (rating == 0.5) {
				star.setProperties({
					'src': '/media/rating_half.gif',
					'class': 'half'
				});
				rating = 0;
			} else {
				star.setProperties({
					'src': '/media/rating_off.gif',
					'class': 'off'
				});
			}

			if (UID > 0) {
				star.setProperties({'style': 'cursor:pointer', 'alt': 'click on vote'});
				star.addEvent('mouseover', function(){
					var tmp = this.getProperty('id').substr(7);
					var id = tmp.substr(0, tmp.indexOf('_'));
					var rate = tmp.substr(tmp.indexOf('_')+1);
					for (var j = 0; j <= rate; j++)	{
						$('rating_'+id+'_'+j).setProperty('src', '/media/rating_over.gif');
					}
				});
				star.addEvent('mouseout', function(){
					var tmp = this.getProperty('id').substr(7);
					var id = tmp.substr(0, tmp.indexOf('_'));
					var rate = tmp.substr(tmp.indexOf('_')+1);
					for (var j = 0; j <= rate; j++) {
						var el = $('rating_'+id+'_'+j);
						el.setProperty('src', '/media/rating_'+el.getProperty('class')+'.gif');
					}
				});
				star.addEvent('click', function(){
					var tmp = this.getProperty('id').substr(7);
					var id = tmp.substr(0, tmp.indexOf('_'));
					var rate = tmp.substr(tmp.indexOf('_')+1);
					var pb = Object.toQueryString($extend(obj.params, {'id': id, 'rate': rate}));

					var url = obj.action;
					var myAjax = new Ajax(url, {method:'post', data:pb, evalScripts:true}).request();
				});
			}

			star.injectInside(el);
		}
	}
});
