/*
 * scroll_to_if_necessary.js
 *
 */
function scroll_to_if_necessary(element) {
  element = $(element);
  
  element_height = element.height();
  element_top_position = element.offset().top;
  element_bottom_position = element_height + element_top_position;
  
  viewport_height = $(window).height();
  viewport_top_position = $(window).get(0).pageYOffset;
  viewport_bottom_position = viewport_height + viewport_top_position;
 
  if (element_bottom_position > viewport_bottom_position) {
    $('html,body').animate({scrollTop: element_bottom_position - viewport_height}, 250);
  } else if (element_top_position < viewport_top_position) {
    $('html,body').animate({scrollTop: element_top_position}, 250);
  }
}

jQuery.fn.scroll_to = function() {
  scroll_to_if_necessary(this);
  return this;
};
