
jQuery.fn.rating = function(url, options, titles) {
	if(url == null) return;
	var settings = {
        url       : url,
        maxvalue  : 5,
        curvalue  : 0 
    };
    if(options) {
       jQuery.extend(settings, options);
    };
	var container = jQuery(this);
	jQuery.extend(container, {
		averageRating: settings.curvalue,
		url: settings.url
	});
	for(var i= 0; i < settings.maxvalue ; i++){
		var div = '<div class="star"><a href="javascript:void(0);" title="'+titles[i]+'">&nbsp;</a></div>';
		container.append(div);
	}
	var stars = jQuery(container).children('.star');
	if (settings.canvote == 'true'){
		stars
			.mouseover(function(){
				event.drain();
				event.fill(this);
			})
			.mouseout(function(){
				event.drain();
				event.reset();
			})
			.focus(function(){
				event.drain();
				event.fill(this)
			})
			.blur(function(){
				event.drain();
				event.reset();
			})
			.click(function(){ 
				stars.unbind();
				var count_c = $('#vote_count');
				if (count_c.length != 0){
					count = parseInt($(count_c).html());
					$(count_c).html(1+count);
				}
				settings.curvalue = stars.index(this) + 1;	
	            jQuery.post(container.url, {
	                "rating": settings.curvalue
	            });
				event.fixed();
			});
	}
		
	var event = {
		fill: function(el){
			var index = stars.index(el) + 1;
			stars
				.children('a').css('width', '100%').end()
				.lt(index).addClass('hover').end();
			$("#text_rate").html(titles[index-1]);
		},
		drain: function() {
			stars
				.filter('.on').removeClass('on').end()
				.filter('.hover').removeClass('hover').end();
			$("#text_rate").html('&#160;');
		},
		reset: function(){
			stars.lt(settings.curvalue).addClass('on').end();
		},
		fixed: function(){
			stars.gt(settings.curvalue-1).addClass('disabled').end();
			stars.lt(settings.curvalue).addClass('disabled_on').end();
		}
	}        
	event.reset();
	if (settings.canvote=='false') event.fixed();
	return(this);
}