
var scrolling; // setInterval変数
var dist = 80; // スクロールする距離
var timer = 5; // setInterval時間設定
var brake = 10; // ブレーキ(目的地に近づいた際に減速する　数が大きいと減速率大)

window.onload = init;


//-----------------------------------------------------
function $(tagId) {
	return document.getElementById(tagId);
}


//-----------------------------------------------------
function init() {
	var aTag = document.getElementsByTagName("a");
	for(var i = 0; i < aTag.length; i++) {
		if(aTag[i].href.indexOf('#') != -1) {
			var path = new Array();
			if(aTag[i].href.split("#")[0] == location.href) {
				path[i] = aTag[i].href.split("#")[1];
				aTag[i].setAttribute("id", "aLink_" + [i]);
				aTag[i].onclick = function() {
									if(scrolling) clearInterval(scrolling);
									var target = this.href.split("#")[1];
									trigger(this.id, target);
									return false;
								}
			}
		}
		if(aTag[i].name) {
			aTag[i].parentNode.setAttribute("id", aTag[i].name);
		}
	}
}


//-----------------------------------------------------
function trigger(cardinal, target) {
	var cardinalPosition = $(cardinal).offsetTop;
	var targetPosition = $(target).offsetTop;
	var motion = "scroll" + "(" + targetPosition + "," + cardinalPosition + ")";
	scrolling = setInterval(motion,timer);
}


//-----------------------------------------------------
function scroll(tp, cp) {
	var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;

	if(tp < cp) {
		if(Math.round(scrollTop - tp) < 100){
			scrollBy(0, Math.round(-dist / brake));
		} else {
			scrollBy(0, -dist);
		}

		if(scrollTop <= tp) {
			clearInterval(scrolling);
			scrollTo(0, tp);
		}
	} else {
		if(Math.round(tp - scrollTop) < 100){
			scrollBy(0, Math.round(dist / brake));
		} else {
			scrollBy(0, dist);
		}

		if(scrollTop >= tp) {
			clearInterval(scrolling);
			scrollTo(0, tp);
		}
	}
}
