/* 
  - Requires Jquery 1.2.1
  - Requires styles.css
*/

function AjaxRater(){}
AjaxRater.prototype = {
		/*
			EXAMPLE OF USE:
			jQuery(document).ready(function(){
				var aj = new AjaxRater();
				aj.enableAjaxRating('.recipe_photo .rating a');
			}
		*/
		
    // Properties
    buttonSelectorString : '.rating a',
    
    //for ajax submission
    enableAjaxRating: function(buttonSelectorString) {
			this.buttonSelectorString = buttonSelectorString;
			jQuery(this.buttonSelectorString).click(this.submitRating);
			this.enableSelectedEffects();
    },
    submitRating: function(event) {
			var thisElem = event.target;
			var ratelink = jQuery(thisElem).attr('href');
			var newhtml = $.ajax({'type': 'POST', url: ratelink, async: false}).responseText;
			
			//show selected
			jQuery(thisElem).removeClass('star_selected_before');
			jQuery(thisElem).prevAll().removeClass('star_selected_before');
			jQuery(thisElem).nextAll().removeClass('star_selected_after');	
			
			jQuery(thisElem).addClass('star_on');
			jQuery(thisElem).removeClass('star_off');
			jQuery(thisElem).prevAll().addClass('star_on');
			jQuery(thisElem).prevAll().removeClass('star_off');
			jQuery(thisElem).nextAll().addClass('star_off');
			jQuery(thisElem).nextAll().removeClass('star_on');
			
			//prevent re-click (unbind mouseover)
			//jQuery(this.buttonSelectorString).mouseover(this.showSelectedEffects);
			//jQuery(this.buttonSelectorString).mouseout(this.hideSelectedEffects);
			
			event.preventDefault();
    },
    
    //for highlighting selected rating
    enableSelectedEffects: function(){
			jQuery(this.buttonSelectorString).mouseover(this.showSelectedEffects);
			jQuery(this.buttonSelectorString).mouseout(this.hideSelectedEffects);
		},
    showSelectedEffects: function(event){
			jQuery(event.target).addClass('star_selected_before');
			jQuery(event.target).prevAll().addClass('star_selected_before');
			jQuery(event.target).nextAll().addClass('star_selected_after');
    },
    hideSelectedEffects: function(event){
			jQuery(event.target).removeClass('star_selected_before');
			jQuery(event.target).prevAll().removeClass('star_selected_before');
			jQuery(event.target).nextAll().removeClass('star_selected_after');
    }
};  