
//=============================================================================
// class ScrollAnchor
//=============================================================================

//*************************
// コンストラクタ
//*************************
function ScrollAnchor()
{
}

//*******************************
// オブジェクト取得
//*******************************
ScrollAnchor.getObj = function(name)
{
	if(document.getElementById){
		return document.getElementById(name);
	}else if(document.all){
		return document.all(name);
	}else if(document.layers){
		return document.layers[layName];
	}
	return null;
}

//*******************************
// ページ内アンカーをオートスクロールにする
//*******************************
ScrollAnchor.prototype.setAutoScroll = function(speed, offset)
{
	num = document.links.length;
	offset = offset ? offset : 0;
	
	for(i=0; i<num; ++i){
		linkObj = document.links[i];
		linkPath = linkObj.pathname
//alert(linkObj.hash);
//alert(window.location.hash);
		// links[].pathnameで'/'が付加されない場合
		linkPath = (linkPath.substr(0,1) != '/') ? '/' + linkPath : linkPath;
		if(window.location.pathname == linkPath && linkObj.hash != ""){
			id = linkObj.hash.substr(1);
			linkObj.pos = ScrollAnchor.getObj(id).offsetTop + offset;
			linkObj.speed = speed;
			linkObj.hash = "";
			document.links[i].onclick = function()
			{
				ScrollAnchor.scroll(this.pos, this.speed);
				return false;
			}
		}
	}
}

//*******************************
// 現在のスクロール位置を取得
//*******************************
ScrollAnchor.getPosition = function()
{
	if(document.documentElement){
		y = document.documentElement.scrollTop;
	}else if(document.all){
		y = document.body.scrollTop;
	}else{
		y = window.pageYOffset;
	}
	
	return y;
}

//*******************************
// 指定位置までオートスクロール
//*******************************
ScrollAnchor.scroll = function(pos, speed)
{
	var curPos = ScrollAnchor.getPosition();
	var windowH = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ;
	var pageH = document.body.offsetHeight;
	
	// 位置調整(ページの最後の方の場合)
	if(windowH > pageH - pos){
		pos = pageH - windowH;
	}
	
	// スクロール終了
	if(Math.abs(pos - curPos) <= speed){
		window.scroll(0, pos);
		return;
	}
	
	// スクロール方向
	if(pos > curPos){
		window.scrollBy(0, speed);
	}else if(pos < curPos){
		window.scrollBy(0, -speed);
	}
	func = 'ScrollAnchor.scroll('+pos+','+speed+')';
	setTimeout(func, 10);
}


