var ie = navigator.appName.indexOf("Internet Explorer", 0) != -1;
var nn = navigator.appName.indexOf("Netscape", 0) != -1;
var mozilla = navigator.appName.indexOf("Gecko", 0) != -1;
var opera = navigator.appName.indexOf("Opera", 0) != -1;



// ----------------------------------------------------------
var altImages = new Array();

/**
 * 指定された配列に含まれるファイルをプリロードします。
 */
function preloadImages(imageArray) {
	var l = altImages.length;
	var i;
	for (i = 0; i < imageArray.length; i++) {
		altImages[l] = new Image();
		altImages[l++].src = imageArray[i];
	}
}

// ----------------------------------------------------------
/**
 * スクロールの滑らかさ。
 * 数値が大きいほど滑らかだが、速度は遅くなる。
 */
var scrollRate = 2;

var scrollOk = false;
if (document.all || document.getElementById || document.layers) {
	scrollOk = true;
}

/**
 * ページトップからの距離を返します。
 */
function getScrollHeight() {
	if (document.all || document.getElementById) {
		return window.document.body.scrollTop;
	} else if (document.layers) {
		return window.pageYOffset;
	}
	return 0;
}

/**
 * 指定されたid要素のページトップからのY座標を返します。
 */
function getYPositionOf(id) {
	if (document.getElementById) {
		return document.getElementById(id).offsetTop;
	}
}

/**
 * 指定されたid要素までスクロールします。
 * スクロールがサポートされていない場合は、anchorに
 * 移動します。
 */
function scrollTo(id, anchor) {
	if (scrollOk) {
		// 現在Y座標
		var y = getScrollHeight();
		
		// 目的Y座標
		var targetY = getYPositionOf(id);
		
		// 現在座標から目的座標までの距離
		var distance = targetY - y;
		
		// 今回のスクロール量
		var move = (distance < 0) ? 
			Math.floor(distance / scrollRate) : Math.ceil(distance / scrollRate);
	
		// スクロール実行
		self.scrollBy(0, move);
		
		// 目標座標に達していなければ再帰呼び出し
		if (distance != 0) {
			scrollTo(id, anchor);
			//timerId = setTimeout( scrollTo(id, anchor), interval );
		}
	} else {
		location.hash = anchor;
	}
}
