// JavaScript Document
/* <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> */


/* HTMLでの使用方法
-------------------------------------------------- 
//アンカーの位置に飛ばす場合
<a name="a5" id="a5"></a>
<a href="#a5" onClick="jumpToAnchor('a5'); return false;">LINK OBJ</a>
//ページのトップに飛ばす場合
<a href="#top" onClick="jumpToPageTop(); return false;">このページのトップへ</a>
*/


/* scroller
-------------------------------------------------- */
function getInnerSize() {
	var obj = new Object();
	if (document.all || (document.getElementById && IE)) {
		obj.width = document.body.clientWidth;
		obj.height = document.body.clientHeight;
	} else if (document.layers || document.getElementById) {
		obj.width = window.innerWidth;
		obj.height = window.innerHeight;
	}
	return obj;
}

function getScrollLeft() {
	if ((navigator.appName.indexOf("Microsoft Internet Explorer", 0) != -1)) {
		return document.body.scrollLeft;
	} else if (window.pageXOffset) {
		return window.pageXOffset;
	} else {
		return 0;
	}
}

function getScrollTop() {
	if ((navigator.appName.indexOf("Microsoft Internet Explorer", 0) != -1)) {
		return document.body.scrollTop;
	} else if (window.pageYOffset) {
		return window.pageYOffset;
	} else {
		return 0;
	}
}

var pageScrollTimer;
function pageScroll(toX,toY,frms,cuX,cuY) {
	if (pageScrollTimer) clearTimeout(pageScrollTimer);
	if (!toX || toX < 0) toX = 0;
	if (!toY || toY < 0) toY = 0;
	if (!cuX) cuX = 0 + getScrollLeft();
	if (!cuY) cuY = 0 + getScrollTop();
	if (!frms) frms = 6;

	if (toY > cuY && toY > (getAnchorPosObj('end').y) - getInnerSize().height) toY = (getAnchorPosObj('end').y - getInnerSize().height) + 1;
	cuX += (toX - getScrollLeft()) / frms; if (cuX < 0) cuX = 0;
	cuY += (toY - getScrollTop()) / frms;  if (cuY < 0) cuY = 0;
	var posX = Math.floor(cuX);
	var posY = Math.floor(cuY);
	window.scrollTo(posX, posY);

	if (posX != toX || posY != toY) {
		pageScrollTimer = setTimeout("pageScroll("+toX+","+toY+","+frms+","+cuX+","+cuY+")",16);
	}
}

function jumpToPageTop() {
	if (!Opera && !iCab) {
		pageScroll(0,0,5);
	} else {
		if (Opera) {
			location.href = "#top";
		} else {
			location.hash = "top";
		}
	}
}

function setObj(id) {
	if (document.all) {
		return document.all(id);
	} else if (document.getElementById) {
		return document.getElementById(id);
	} else if (document.layers) {
		return document.layers[id];
	}
	return false;
}

function getAnchorPosObj(elementname) {
	var obj = setObj(elementname);
	var objnew = new Object();
	var objtmp;

	if (document.getElementById) {
		objtmp = obj;
		objnew.x = objtmp.offsetLeft;
		objnew.y = objtmp.offsetTop;
		while ((objtmp = objtmp.offsetParent) != null) {
			objnew.x += objtmp.offsetLeft;
			objnew.y += objtmp.offsetTop;
		}
	} else if (document.all) {
		objtmp = obj;
		objnew.x = objtmp.offsetLeft;
		objnew.y = objtmp.offsetTop;
		while ((objtmp = objtmp.offsetParent) != null) {
			objnew.x += objtmp.offsetLeft;
			objnew.y += objtmp.offsetTop;
		}
	} else if (document.layers) {
		objnew.x = document.anchors[elementname].x;
		objnew.y = document.anchors[elementname].y;
	} else {
		objnew.x = 0;
		objnew.y = 0;
	}
	return objnew;
}

function getHash(strPath) {
	return strPath.substring(strPath.lastIndexOf("#") + 1);
}

function getContFontSize() {
	var intSize = 0;
	if (Moz || Opera) {
		intSize = 16;
	}
	return intSize;
}

function jumpToAnchor(elementname) {
	if ((!getAnchorPosObj(getHash(elementname)).x - getContFontSize() <= 0 || getAnchorPosObj(getHash(elementname)).y - getContFontSize() <= 0) && !Opera && !iCab){
		pageScroll(0, getAnchorPosObj(getHash(elementname)).y - getContFontSize(), 5);
	} else {
		if (Opera) {
			location.href = "#" + elementname;
		} else {
			location.hash = elementname;
		}
	}
}

