Check for negative values..
function adjustLayout(){
var subheight=($(window).height() - $('.main').outerHeight())/2;
$('.main').css({
position:'absolute',
left: ($(window).width() - $('.main').outerWidth())/2,
top: (subheight>=0)?subheight:0,
bottom: (subheight>=0)?subheight:0,
});
}
And handle overflow:
<div class="main" style="margin: 10px; padding: 10px; max-width: 800px; text-align: center;overflow:auto;">