function toggle_forgot_password()
{
  $('forgot_password_box').toggle();
  $('sign_in_box').toggle();
}

function showRating(id, n){
  var offset = 20*n
  $(id).style.backgroundPosition='21px -'+offset+'px'
}

function updateRatingDisplay(triplet_id, rating){
  var ratingDisplays = $$('#triplet-'+triplet_id+ ' .rating div')
  ratingDisplays.each(function(display){
    display.classNames().each(function(name){
      if(name.match(/^rate_/))
        display.removeClassName(name)
    })
    display.addClassName('rate_'+rating)
  })
}

function newRatingHandler(url, triplet_id, score){createRating(url, triplet_id, score)}

function updateRating(url, score){
  new Ajax.Request(
    url, {method:'put',parameters:{'rating[score]':score},
      on200:function(request){
        var rating = request.responseText.evalJSON()
        $('triplet-'+rating.triplet.id+'-rateit_stat').innerHTML = 'score: '+rating.triplet.average_rating.toFixed(2)+' votes: '+rating.triplet.rating_count
        updateRatingDisplay(rating.triplet.id, rating.triplet.average_rating.toFixed(2))
        $$('#rateit-'+rating.triplet.id+' a').each(function(ratingLink){
          ratingLink.onmouseout = function(){showRating('rateit-'+rating.triplet.id, score)}
        })
      },
      onFailure:function(request){alert('Could not save your rating')}
    }
  )
}
function createRating(url, triplet_id, score){
  new Ajax.Request(
    url, {method:'post',parameters:{'rating[score]':score,'rating[triplet_id]':triplet_id},
      on200:function(request){
        var rating = request.responseText.evalJSON()
        $('triplet-'+triplet_id+'-rateit_stat').innerHTML = 'score: '+rating.triplet.average_rating.toFixed(2)+' votes: '+rating.triplet.rating_count
        updateRatingDisplay(triplet_id, rating.triplet.average_rating.toFixed(2))
        $$('#rateit-'+triplet_id+' a').each(function(ratingLink){
          ratingLink.onmouseout = function(){showRating('rateit-'+triplet_id, score)}
        })
        $$('#rateit-'+triplet_id+' a').each(function(rateLink, index){
          Event.stopObserving.apply(Event, Event.observers.detect(function(obs){ return obs.first() == rateLink}))
          rateLink.observe('click', function(event){updateRating(rating.url, index); Event.stop(event)})
        })
      },
      onFailure:function(request){alert('Could not save your rating')}
    }
  )
}