/*
  rating stuff
*/

Event.observe(document, 'dom:loaded', function() {
  $$('.rating-form').each(function(rating_form){
    // update to display the correct current rating
    backToRating(rating_form);

    // attach the control events
    Event.observe(rating_form.down('.rating-control'), 'mouseout', function() { backToRating(rating_form); } );
    Event.observe(rating_form.down('.rating-control'), 'mousemove', function(e) { ratingPositionChange(e, rating_form); });
  });
});

function calculate_rating(e) {
  // figures out which star they are on in the midst of a mouse event
  pos = e.pageX-e.target.cumulativeOffset()[0];
  return Math.round((pos/101)*5);
}

function ratingPositionChange(e, rating_form) {
  // figure out the new rating
  var new_rating = calculate_rating(e);
  // update the form
  $(rating_form).down('.new-rating').value = new_rating;
  // update the image
  e.target.src = '/images/icons/ratings/rating-'+new_rating.toString()+'.png';
}

function backToRating(rating_form) {
  var rating_image = rating_form.down('.rating-control');
  var new_rating = rating_form.down('.current-rating').value;
  rating_image.src = '/images/icons/ratings/rating-'+new_rating.toString()+'.png';
}

function rating_onSuccess(t, rating_form) {
  var result = t.responseJSON;

  if (result.success) {
    // update the form with the new value
    rating_form.down('.current-rating').value = result.rating;

    // update display to reflect the new rating
    backToRating(rating_form);
  } else {
    rating_onFailure(t)
  }
}
function rating_onFailure(t) {

}

