$.fn.rating = function(settings) {
	settings = $.extend({
		 cancel:'',
		 currentValue:''
	}, settings);			
	var prevElem = null;
	var valueElem = null;
	 var container = $(this);
	 var CancelElem = null;
	var event = {
		fill: function(el){ // fill to the current mouse position.
			var stars = $(valueElem).siblings('.star');
			var index = stars.index(el) + 1;
			var previndex = stars.index(el);
			$(stars).children('a').css('width', '100%').end()
			$(stars).slice(0,index).addClass('star_on').end();
		},
		drain: function() { // drain all the stars.
			var stars = $(valueElem).siblings('.star');
			$(stars)
				.filter('.star_on').removeClass('star_on').end()
				.filter('.star_hover').removeClass('star_hover').end();
		},
		reset: function(){ // Reset the stars to the default index.
			var stars = $(valueElem).siblings('.star');
			$(stars).slice(0,settings.currentValue).addClass('star_on').end();
		}
	};
	return this.each(function (i)
					{

						if(i == 0)//prepend cancel option at the begining
						{
							valueElem = $('<input type="hidden" name="' + this.name + '" value="" >');
							$(this).before(valueElem);
							var CancelElem = $('<div class="cancel"><a href="#" title="' + settings.cancel + '">' + settings.cancel + '</a></div>');
							prevElem = CancelElem;
							$(this).before(prevElem);	
						}
						nStar = i+1;
						nStar<=settings.currentValue?class_star='star_on':class_star='';
						//insert rating option right after preview element
						preElemTemp  = $('<div class="star '+class_star+'"><a href="#" onclick="return false;" title="' + this.value + '" type_rating="'+$(this).attr('type_rating')+'" identifier="'+$(this).attr('identifier')+'" log="'+$(this).attr('log')+'">' + this.value + '</a></div>');
						$(prevElem).after(preElemTemp);
						$(preElemTemp)
								.mouseover(function(){
											event.drain();
											event.fill(this);
											
									})
									.mouseout(function(){
											event.drain();
											event.reset();
									});			
							$(preElemTemp).click(function(){
									objA = $(this).children('a');
									if($(objA).attr('log') == 1)
									{
										settings.currentValue = $(this).children('a').attr('title');
										$(valueElem).val(settings.currentValue);
										event.drain();
										event.fill(this);
											
										ajax('/_actions/rating.php','rating='+settings.currentValue+'&type='+$(objA).attr('type_rating')+'&identifier='+$(objA).attr('identifier'),$('#rating_box')?'rating_box':'rating');

										if($(objA).attr('type_rating') == 3 || $(objA).attr('type_rating') == 4)
											setTimeout('after_rating()',2000);
											
									}
									else
										ebuga_window("/_login/login_top.php");
							
							});						
								prevElem = preElemTemp;
								preElemTemp = null;
								//remove this checkbox
								$(this).remove();
								if(i + 1 == this.length)
								{    
									event.reset();									
								}
        								
							});
};

