/*
  設定
*/
var config = {
    // 上下パディングの合計
    // これを弄る際にはstyle.cssも変更する事
    sidebar_vertical_padding: 0,
    main_vertical_padding: 40
};

/*
  onloadハンドラをインストール
*/
window.onload = function () {
    fix_layout();
};

/*
  #side-barと#mainの高さが画面全体に満たなければ、それらを引き伸ばす。
  また、両者の高さは高い方に合わせる。
*/
function fix_layout() {
    var body = document.getElementsByTagName("body")[0];
    var h1 = document.getElementsByTagName("h1")[0];

    var side_bar = document.getElementById("side-bar");
    var main = document.getElementById("main");

    var min_height = windowSize().height;
    min_height -= findPosY(h1) + h1.offsetHeight;

    var height = Math.max(
	min_height, side_bar.offsetHeight, main.offsetHeight);

    side_bar.style.height = (height - config.sidebar_vertical_padding)+"px";
    main.style.height = (height - config.main_vertical_padding)+"px";
}

function findPosX (elem) {
    var left = 0;
    if (elem.offsetParent) {
	while (elem.offsetParent) {
	    left += elem.offsetLeft;
	    elem = elem.offsetParent;
	}
    }
    else if (elem.x) {
	left = elem.x;
    }
    return left;
}

function findPosY (elem) {
    var top = 0;
    if (elem.offsetParent) {
	while (elem.offsetParent) {
	    top += elem.offsetTop;
	    elem = elem.offsetParent;
	}
    }
    else if (elem.y) {
	top = elem.y;
    }
    return top;
}

function windowSize() {
    // http://www.howtocreate.co.uk/tutorials/index.php?tut=0&part=16
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
	//Non-IE
	myWidth = window.innerWidth;
	myHeight = window.innerHeight;
    } else if( document.documentElement &&
	       ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	//IE 6+ in 'standards compliant mode'
	myWidth = document.documentElement.clientWidth;
	myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	//IE 4 compatible
	myWidth = document.body.clientWidth;
	myHeight = document.body.clientHeight;
    }
    return {width: myWidth, height: myHeight};
}
