/**
 * Current rating.
 */
var ratingSelected = new Array();

/**
 * Maximum rating.
 */
var ratingMax = new Array();

/**
 * Star image location.
 */
var starImage = '';

/**
 * Empty star image location.
 */
var starImageEmpty = '';

/**
 * Initializes the rating element.
 *
 * @param string model
 * @param integer rating
 * @param integer max Maximum rating
 * @param string star Star image
 * @param string empty Empty star image
 */
function ratingInit(model, rating, max, star, empty) {
  ratingSelected[model] = rating;
  ratingMax[model] = max;
  
  starImage = star;
  starImageEmpty = empty;
};

/**
 * Sets the rating element to a certain rating.
 *
 * @param string model
 * @param integer rating
 */
function ratingSet(model, rating) {
  for (i = rating; i >= 1; i--) {
    $(model + '_' + i).src = base_url + starImage;
  }
  
  for (i = ratingMax[model]; i > rating; i--) {
    if ($(model + '_' + i).src.indexOf('empty') < 0) {     
      $(model + '_' + i).src = base_url + starImageEmpty;
    }    
  }
};

/**
 * Resets the rating.
 *
 * @param string model
 */
function ratingReset(model) {
  ratingSet(model, ratingSelected[model], ratingMax[model]);
};

/**
 * Saves the rating and updates the element.
 *
 * @param string model
 * @param integer rating
 */
function ratingSave(model, rating) {
  ratingSelected[model] = rating;
  
  if(base_url == '') {
	base_ajax_url = '/';
  } else {
    base_ajax_url = base_url;
  }

  new Ajax.Updater(model, base_ajax_url + 'rating/ratings/save/' + model.replace('_rating_', '/') + '/' + rating, {
    asynchronous: true,
    evalScripts: true,
    onFailure: function error() {
      //alert('Ajax Error');
    },
    onLoading: function (request) {
      //Element.show('loader');
    },
    onComplete: function (request, json) {
      //Element.hide('loader');
    }
  });
};
