///////////////////////////////////////////////////
// お遊び No.3.1 Produced by「CLUB とむやん君」
// URL http://www2s.biglobe.ne.jp/~club_tom/
// 上の2行は著作権表示ですので消さないで下さい
///////////////////////////////////////////////////

///////////////////////////////////////////////////
// 画像の開始位置＆移動間隔＆移動スピード＆
// 移動するまでの停止範囲＆止まった時のマウスからの位置＆
// クリックすると画像の動きを止めるかどうかを書いて下さい。
var dxOa3=1000,dyOa3=100;    // 開始位置(dxOa3：x座標、dyOa3：y座標)
var hOa3=5;                // 移動間隔
var mouseSpeedOa3=100;       // 移動スピード(単位：1/1000秒)
var h2Oa3=100;              // 停止範囲(hOa3より小さくしないで下さい。)
var spDxOa3=150,spDyOa3=0;  // 止まった時のマウスからの位置
                            // (spDxOa3：x座標、spDyOa3：y座標)
var moveStopOa3=true;       // 画像の停止の有無です。
                            // (true：有り、false：無し)
///////////////////////////////////////////////////

var mxOa3=dxOa3,myOa3=dyOa3,moveFlagOa3=true,moveStopFlagOa3=false;

// イベントキャプチャーを設定する部分です。
if (document.all || document.getElementById || document.layers) {
 if (document.layers) document.captureEvents(Event.MOUSEMOVE);
 document.onmousemove=mouseMoveEvOa3;
 if (moveStopOa3) {
  if (document.layers) document.captureEvents(Event.CLICK);
  document.onclick=mouseMoveStopOa3;
 }
}

// イベントキャプチャーのマウス位置関数の部分です。
function mouseMoveEvOa3(e) {
 mxOa3=getPoOa3(e,true);
 myOa3=getPoOa3(e,false);
}

// イベントキャプチャーのStop関数の部分です。
function mouseMoveStopOa3() {
 moveStopFlagOa3=!moveStopFlagOa3;
}

// マウスカーソルの座標を取得する部分です。
function getPoOa3(e,flag) {
 if (document.all) {
  if (flag) return document.body.scrollLeft+event.clientX;
  else return document.body.scrollTop+event.clientY;
 }
 else if (document.getElementById || document.layers) {
  if (flag) return e.pageX;
  else return e.pageY;
 }
}

// 指定した場所に画像を移動させる部分です。
function setPoOa3(name,x,y) {
 if (document.all) {
  document.all(name).style.posLeft=x+spDxOa3;
  document.all(name).style.posTop=y+spDyOa3;
 }
 else if (document.getElementById) {
  document.getElementById(name).style.left=x+spDxOa3;
  document.getElementById(name).style.top=y+spDyOa3;
 }
 else if (document.layers) document.layers[name].moveTo(x+spDxOa3,y+spDyOa3);
}

// 移動距離からxy座標を算出する部分です。
function getXYOa3(x1,y1,x2,y2,l,dl,flag) {
 var x,y;
 x=dl/l*(x2-x1)+x1;
 if (flag==true) return x;
 if (flag==false) {
  if (x1-x2==0) {
   if (y1<y2) return y1+dl;
   else return y1-dl;
  } else return (y1-y2)/(x1-x2)*x+y1-(y1-y2)/(x1-x2)*x1;
 }
}

// メイン関数の部分です。
function mouseMoveOa3() {
 if (document.all || document.getElementById || document.layers) {
  if (!moveStopFlagOa3) {
   var xx,l;
   l=Math.abs(Math.sqrt(Math.pow((mxOa3-dxOa3),2)+Math.pow((myOa3-dyOa3),2)));
   if (l<hOa3 && moveFlagOa3) {
    dxOa3=mxOa3;
    dyOa3=myOa3;
    setPoOa3("imOa3",dxOa3,dyOa3);
    moveFlagOa3=false;
   } else {
    if (l>h2Oa3 || l<=h2Oa3 && moveFlagOa3) {
     xx=getXYOa3(dxOa3,dyOa3,mxOa3,myOa3,l,hOa3,true);
     dyOa3=getXYOa3(dxOa3,dyOa3,mxOa3,myOa3,l,hOa3,false);
     dxOa3=xx;
     setPoOa3("imOa3",dxOa3,dyOa3);
     moveFlagOa3=true;
    }
   }
  }
  setTimeout("mouseMoveOa3()",mouseSpeedOa3);
 }
}
