<!--
  // pxはどの座標までスクロールするか
  // directionは縦か横どちらに方向にスクロールするか	
  // unifは1/100秒ごとにスクロールする量。ここに'no'と指定すると減速処理がされる
  // prevは内部で使う引数なので呼び出すときには指定しない
function scroller(px, direction, unif, prev) {
    // どのぐらいスクロールしているか
    if (document.all) {
      var Y = document.body.scrollTop;
      var X = document.body.scrollLeft;
    }else{
      var Y = window.pageYOffset;
      var X = window.pageXOffset;
    }
    var s = 0;
    switch (direction) {
      case 'vertical':
        s = Y;
        break;
      case 'horizontal':
        s = X;
        break;
      case 'multiple':
        s = X;
        break;
    }

    var sR = unif;
    if (sR == 'no') {
      sR = 0;
      var f = px - Math.abs(s - px);		// 現在の移動量
      sR = Math.ceil( (px - f) / 5 );
      if (sR < 1) sR = 1;
    } else {
      sR = parseInt(unif);
    }

    if ( (px - s) > 0 ) {
     // 現在座標より正方向にスクロールするとき
      s += sR;
      if (s > px) s = px;
    } else if (px == s) {
      // 現在座標と目的座標が同じになったとき
      return;
    } else if ( (px - s) < 0 ) {
      // 現在座標より逆方向にスクロールするとき
      s -= sR;
      if (s < px) s = px;
    }

    if (prev == s) return;

    var sY = Y;
    var sX = X;
    switch (direction) {
      case 'vertical':
        sY = s;
        break;
      case 'horizontal':
        sX = s;
        break;
      case 'multiple':
        sX = s;
        sY = s;
        break;
    }

    window.scrollTo(sX, sY);
    setTimeout('scroller(' + px + ', "' + direction + '","' + unif + '",' + s + ');', 5);
}

