	/**
 * MPI Rating Plugin 
 * 
 * @author dan.rades
 * @lastmod 26.02.2008
 * 
 * 
 */

(function($) {                                         
	$.fn.mpiRating = function(o) {   
	    o = $.extend(o || $.fn.mpiRating.defaults)
		return this.each(function() {
			var _self = $(this);	
			_self.starsContainer = $('div', _self);	
			_self.disableRating = _self.starsContainer.hasClass('rating_disabled');
			if (!_self.disableRating) {
				_self.stars = $('a', _self);
				
				_self.starsContainer.bind('mouseenter', function() {
					_self.stars.addClass('rating_white');
				});
				
				_self.starsContainer.bind('mouseleave', function() {
					_self.stars.removeClass('rating_white');
				});			
				
				_self.stars.each(function(i) {
					$(this).bind('mouseenter', function() {
						$.fn.mpiRating.mouseenter(_self, i);
					});
					
					$(this).bind('mouseleave', function() {
						$.fn.mpiRating.mouseout(_self, i);
					});	
					
					$(this).bind('click', function() {
						$.fn.mpiRating.rate(_self, i);
					});								
				});	
			}																			
		});	
		
	};
		
	$.fn.mpiRating.rate = function(o, ratingValue) {
		var url    = $('input[name="rate_url"]', o).val();
		var itemId = $('input[name="item_id"]', o).val();
		var userId = $('input[name="user_id"]', o).val();
		var data = {
			'user_id' : userId,
			'item_id' : itemId,
			'rating_value'  : ratingValue
		}
		
		$(o.stars).removeClass('rating_on');
		$(o.stars).removeClass('rating_default');
		
		for (p = 0; p <= ratingValue; p++) {
			$(o.stars[p]).addClass('rating_default');
		}
		
		o.disableRating = true;
		o.stars.unbind('click');
		
		o.starsContainer.addClass('rating_disabled');
		o.stars.removeClass('rating_white');		
		
		o.starsContainer.unbind('mouseenter');
		o.starsContainer.unbind('mouseleave');				
		
		$.post(url, data);

	};
	
	$.fn.mpiRating.mouseenter = function(o, i) {
		if (!o.disableRating) {
			var p = 0;
			for (p = 0; p <= i; p++) {
				$(o.stars[p]).addClass('rating_on');
			}
		}		
	};
	
	$.fn.mpiRating.mouseout = function(o, i) {
		if (!o.disableRating) {
			var p = 0;
			for (p = 0; p <= i; p++) {
				$(o.stars[p]).removeClass('rating_on');
			}
		}		
	};

	$.fn.mpiRating.defaults = {};
})(jQuery);