Ok, here is the first part -
$('html, body').animate({
scrollTop: ($("#three").offset().top + $("#three").height() - $(window).height())
}, 500);
just a little math, and you can easily understand what is going on.
and for the second part -
if(($('#three').offset().top >= $(window).scrollTop()) && ($('#three').offset().top < $(window).scrollTop() + $(window).height())) { ...
}
, , scrollTop() + height() (, ).
fiddle
UPDATE: , , #three, scrollTop() . , -
var eloffbottom = $('#three').offset().top + $('#three').height();
var winoffbottom = $(window).scrollTop() + $(window).height();
if((($('#three').offset().top >= $(window).scrollTop()) && ($('#three').offset().top < winoffbottom)) || ((eloffbottom >= $(window).scrollTop()) && (eloffbottom < winoffbottom))) {
alert('already in view');
}
Fiddle !
, jQuery, . . . - $('#three').visible() - true false.