

//変数宣言
var frms = 5;
var goalY;
var nowY;
var windowHeight;
var pageBottom;
var anchorNum;
var anchorId;

var scrollingTimer;

var preTR = null;

/*TR背景色変更*/
function changeTDBG(tdID, color){
	if (document.getElementById){
		document.getElementById(tdID + '_tr').bgColor = "#" + color;
		//document.all.item(tdID + '_tr').style.cursor = "hand";
	}
}

function backTDBG(tdID, color){
	if (document.getElementById){
		document.getElementById(tdID + '_tr').bgColor = "#" + color;
		//document.all.item(tdID).style.cursor = "default";
	}
}


//現在のY座標取得関数
function getV() {
	if (window.pageYOffset >= 0) {
		return window.pageYOffset;
	} else if (getIeBody().scrollTop >= 0) {
		//ieの場合という前提
		return getIeBody().scrollTop;
		//return document.body.scrollTop;
	} else {
		return 0;
	}
}

//アンカーのY座標取得関数
function getAnchorTop(anchorID) {
	var y = 0;
		if (document.getElementById) {
		var obj = document.getElementById(anchorID);
		while (obj != null) {
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else 	if (document.anchors[anchorID].y) {
		y = document.anchors[anchorId].y;
	}
	return y;
}

//ウィンドウサイズ、目標アンカーのY座標取得関数
function getVinfo() {
	if (window.pageYOffset >= 0) {
		windowHeight = window.innerHeight;
	} else if (getIeBody().scrollTop >= 0) {
		windowHeight = getIeBody().clientHeight;
	}

/*
 if (document.getElementById) {
		goalY = document.getElementById(anchorId).offsetTop;
	} else	if (document.anchors[anchorId].y) {
		goalY = document.anchors[anchorId].y;
	} else	if (document.anchors[anchorId].offsetTop) {
		goalY = document.anchors[anchorId].offsetTop;
	}
*/
	goalY = getAnchorTop(anchorId);

	if (goalY < 0) {
		goalY = 0;
	} else if ((pageBottom - goalY) < windowHeight) {
		goalY = pageBottom - windowHeight - 20;
	}
}

//ページ移動関数
function scrolling() {
	clearTimeout (scrollingTimer);
	nowY += (goalY - getV()) / frms;
	var posY = Math.floor(nowY);
	window.scrollTo(0, posY);
	if(posY != goalY ){
		scrollingTimer = setTimeout("scrolling(" + goalY + "," + frms + ")", 20);
		if (goalY - posY < 3) {
			clearTimeout (scrollingTimer);
			window.scrollTo(0, goalY);
		}
	} else{
		//alert("posY=" + posY);
		clearTimeout (scrollingTimer);
		//alert("end");
		
	}
}

//アンカーへ移動開始宣言関数
function toAnchor(arg) {
	preTR = arg;
	if ( ((window.pageYOffset >= 0)||(getIeBody().scrollTop >= 0)) && ((document.getElementById)||(document.anchors[arg].y)||(document.anchors[arg].offsetTop)) ) {		
		anchorId = arg;
		nowY = getV();
		getVinfo();
		scrolling();
	} else {
		location.hash = arg;
	}
	//alert("goalY=" + goalY);
}


function scrollInit() {
	var anchorNum = document.anchors.length;
	if (document.anchors[anchorNum - 1].offsetTop) {
		var pageBottomName = document.anchors[anchorNum - 1].name;
		pageBottom = getAnchorTop(pageBottomName);
	} else 	if (document.anchors[anchorNum - 1].y) {
		pageBottom = document.anchors[anchorNum - 1].y;
	}
//alert(pageBottom);

/*
	var anchorNum = document.anchors.length;
	var pageBottomName = document.anchors[anchorNum - 1].name;
	pageBottom = getAnchorTop(pageBottomName);
	alert(pageBottom);
*/


	/*
	if (document.anchors[anchorNum - 1].offsetTop) {
		//pageBottomName = document.anchors[anchorNum - 1].name;
		//pageBottom = document.getElementById(pageBottomName).offsetTop;
		pageBottomName = document.anchors[anchorNum - 1].name;
		pageBottom = document.getElementById(pageBottomName).style.top;
	} else 	if (document.anchors[anchorNum - 1].y) {
		pageBottom = document.anchors[anchorNum - 1].y;
	}
	*/
	//alert(parseInt(document.getElementById("eeend").sytle.top));

/*
	var y = 0;
	var obj = document.getElementById("end2");
	while (obj != null) {
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	alert(y);
*/
}

//レンダリングモードにより
//情報取得対象オブジェクトの取得を変える
function getIeBody() {
	//document.compatMode=='BackCompat' : 後方互換
	//document.compatMode=='BackCompat' : 標準
	return (document.compatMode=='BackCompat') ? document.body : document.documentElement;
}




