<!--

var move = true;    	// 星をスクロールに合わせて移動するか？。する：true しない:false
var meteorRate = 200;	// 流れ星の出やすさ。小さいほど良く出る。
var dl = 50;		// 流れ星の動く早さ。(これが流れ星の間隔にもなる)

// 流れ星の大きさ数の設定
var size = 2;		// １番小さい流れ星の大きさ。単位px
var sizeStep = 2;	// 流れ星の大きくなる幅。単位px
var meteorNo = 5;	// 流れ星の数。
// 上から順に 2 2 5 の場合、流れ星の大きさは小さい順に「2 4 6 8 10」になる。
// 3 3 6 なら「3 6 9 12 15 18」。sizeStepが0なら全て同じ大きさ。

// 流れ星の絵の設定
var useImg = 0;				// 流れ星の絵は文字or画像。 0:文字　1:画像
var meteorImg = "image/tenis.ico";	// 画像のパス　useImg = 1;の場合に設定。


_dom=(document.all?3:(document.getElementById?1:(document.layers?2:0)));

function getWindowSize() {
    if(_dom == 1 || _dom == 2) {
        win_width = self.innerWidth;
        win_height = self.innerHeight;
    }
    if (_dom == 3) {
        win_width = document.body.clientWidth;
        win_height = document.body.clientHeight;
    }
}

function getScrollPosX() {
    if (_dom == 1) return scrollX;
    if (_dom == 2) return pageXOffset;
    if (_dom == 3) return document.body.scrollLeft
}

function getScrollPosY() {
    if (_dom == 1) return scrollY;
    if (_dom == 2) return pageYOffset;
    if (_dom == 3) return document.body.scrollTop;
}

function showLayer(layerName){
    if (_dom == 1) document.getElementById(layerName).style.visibility = "visible";
    if (_dom == 2) document.layers[layerName].visibility = "show";
    if (_dom == 3) document.all(layerName).style.visibility = "visible";
}

function hideLayer(layerName){
    if (_dom == 1) document.getElementById(layerName).style.visibility = "hidden";
    if (_dom == 2) document.layers[layerName].visibility = "hide";
    if (_dom == 3) document.all(layerName).style.visibility = "hidden";
}

function moveLayerTo(layerName, x, y){
    if (_dom == 1) {
        document.getElementById(layerName).style.left = x;
        document.getElementById(layerName).style.top = y;
    }
    if (_dom == 2) {
        document.layers[layerName].left = x;
        document.layers[layerName].top = y;
    }
    if (_dom == 3) {
        document.all(layerName).style.pixelLeft = x;
        document.all(layerName).style.pixelTop = y;
    }
}

var sx = new Array(), sy = new Array(), sclW = 0, sclH = 0;

function initMeteor() {
  if (_dom && meteorFlag == 0) {
    var ran = Math.random()*meteorRate;
    if (ran < 10) {
      getWindowSize();
      if (move) sclW = getScrollPosX(), sclH = getScrollPosY();
      sX =  Math.floor(Math.random()*(win_width-meteorMaxSize-5)) + sclW;
      sY =  Math.floor(Math.random()*(win_height-meteorMaxSize-5)) + sclH;
      eX =  Math.floor(Math.random()*(win_width-meteorMaxSize-5)) + sclW;
      eY =  Math.floor(Math.random()*(win_height-meteorMaxSize-5)) + sclH;
      for (var m=0; m<meteorNo; m++) {
        moveLayerTo("meteor"+m, sX, sY);
        sx[m] = sX; sy[m] = sY;
      }
      moveMeteor();
    }
  }
  setTimeout("initMeteor()", 100);
}

var meteorFlag = 0;
function moveMeteor() {
  var l, xp, yp, stopflag = false;
  for (var m=0; m<meteorNo; m++) {
  if (meteorFlag >= m) {
    l = Math.abs(Math.sqrt(Math.pow((eX - sx[m]),2) + Math.pow((eY - sy[m]),2)));
    if (l > dl) {
      xp = dl / l * (eX - sx[m]) + sx[m];
        if (eX - sx[m] == 0) {
          if (sy[m] < eY) yp = sy[m] + dl;
          else yp = sy[m] - dl;
        } else yp = (sy[m] - eY) / (sx[m] - eX) * xp + sy[m] - (sy[m] - eY) / (sx[m] - eX) * sx[m];
        sx[m] = xp; sy[m] = yp;
        showLayer("meteor"+m);
        moveLayerTo("meteor"+m, sx[m], sy[m]);
      } else {
        hideLayer("meteor"+m);
        if (m == meteorNo-1) stopflag = true;
      }
    }
  }
  if (!stopflag) { meteorFlag += 1; tim = setTimeout("moveMeteor()", 10); }
  else { clearTimeout(tim); meteorFlag = 0; }
}

window.onload = initMeteor;

//-->