// JavaScript Document

function pageScrollEle(eleID) {
	var end_obj_posi = getElementPosition(eleID);
	pageScroll(end_obj_posi.x,end_obj_posi.y);
}

function pageScroll(scrollOffsetX,scrollOffsetY) {
	if(typeof(timerID) != "undefined") clearTimeout(timerID);
	var end_obj_posi = new Object();
	end_obj_posi.x = scrollOffsetX;
	end_obj_posi.y = scrollOffsetY;
	var WindowSize = getWindowSize();
	var ContentsSize = getContentsSize();
	var Location = getLocation();
	offsetY = end_obj_posi.y - Location.y;
	offsetY = ((end_obj_posi.y + WindowSize.height) <=  ContentsSize.height) ? end_obj_posi.y - Location.y : ContentsSize.height - (Location.y + WindowSize.height);
	
	Location.y += (Math.floor(offsetY / 10) != 0) ? Math.floor(offsetY / 10) : offsetY / Math.abs(offsetY);
	if (Math.abs(offsetY) != 0) {
		window.scrollTo(Location.x, Location.y);
		timerID = window.setTimeout("pageScroll("+scrollOffsetX+","+scrollOffsetY+")", 20);
	} else {
		window.scrollTo(Location.x, end_obj_posi.y);
	}
}

function getElementPosition(eleID) {
	//alert(eleID);
	var obj = document.getElementById(eleID);
	var posi_x = obj.offsetLeft;
	var posi_y = obj.offsetTop;
	
	//親要素を取得して位置情報を修正する
	while(obj.offsetParent) {
		obj = obj.offsetParent;
		posi_x += obj.offsetLeft;
		posi_y += obj.offsetTop;
	}
	return {x:posi_x,y:posi_y}
}

function getWindowSize() {
	if(window.innerWidth && window.innerHeight){
		winSizeWidth = window.innerWidth;
		winSizeHeight = window.innerHeight;
	} else if (document.documentElement && (document.compatMode=="CSS1Compat")) {
		winSizeWidth = document.documentElement.offsetWidth;
		winSizeHeight = document.documentElement.offsetHeight;
	} else if (document.body) {
		winSizeWidth = document.body.clientWidth;
		winSizeHeight = document.body.clientHeight;
	}
	
	return {width:winSizeWidth, height:winSizeHeight};
}

function getContentsSize() {
	
	var divObj = document.getElementById('container');
	return {width:divObj.offsetWidth,height:divObj.offsetHeight};
}

function getLocation () {
	var posi_x = 0;
	var posi_y = 0;
	posi_x = document.body.scrollLeft || document.documentElement.scrollLeft || 0;
    posi_y = document.body.scrollTop || document.documentElement.scrollTop || 0;
	return {x:posi_x, y:posi_y};
	
}

function setSmootScrollEvent () {
	for (var i = 0; i < document.links.length; i++) {
		if (document.links[i].hash.match(/#/)) {
			document.links[i].onclick = function () {
				var id_name = this.hash.substring(1);
				smooth = getElementPosition(id_name);
				pageScroll(0,smooth.y);
				return false;
			};
		}
	}
}


