function getWinXOffset()  { return window.pageXOffset; }
function getWinYOffset()  { return window.pageYOffset; }
function getWindowWidth (){ return window.innerWidth; }
function getWindowHeight(){ return window.innerHeight; }
function getDivFromName(nm){
  var s='';
  for(var i=1; i<arguments.length; i++) s+='document.layers.'+arguments[i]+'.';
  return eval(s+'document.layers.'+nm);
}
function createLayer(left,top,width,height,parentLayer){
  var div;
  if(parentLayer) div = new Layer(width,parentLayer);
  else            div = new Layer(width);
  if(height>0) div.resizeTo(width,height);
  div.moveTo(left,top);
  return div;
}
function initDivPos(div){}
function getDivLeft(div){ return div.left; }
function getDivTop(div) { return div.top;  }
function moveDivTo(div,left,top){ div.moveTo(left,top); }
function moveDivBy(div,left,top){ div.moveBy(left,top); }
function initDivSize(div){}
function getDivWidth (div){ return div.clip.width;  }
function getDivHeight(div){ return div.clip.height; }
function setDivVisibility(div,visible){
  div.visibility = (visible)?'inherit':'hide';
}
function writeDivHTML(div,op,cl){
  var s='';
  if(op) div.document.open('text/html','replace');
  for(var i=3; i<arguments.length; i++) s+=arguments[i];
  div.document.writeln(s);
  if(cl) div.document.close();
}
_ie5=(navigator.appVersion.indexOf('MSIE 5')>=0);
function getWinXOffset()  { return document.body.scrollLeft; }
function getWinYOffset()  { return document.body.scrollTop;  }
function getWindowWidth (){ return document.body.clientWidth;  }
function getWindowHeight(){ return document.body.clientHeight; }
function getDivFromName(nm){ return document.all(nm); }
_createLayerNo = 0;
function createLayer(left,top,width,height,parentLayer){
  var bd, divName = '_js_layer_'+_createLayerNo;
  _createLayerNo++;
  var ha=(height>0)?(';height:'+height):'';
  if(arguments.length>4 && parentLayer)
       bd = parentLayer;
  else bd = document.body;
  bd.insertAdjacentHTML('BeforeEnd',
    '<div id="'+divName+
    '" style="position:absolute;left:'+left+';top:'+top+
    ';width:'+width+ha+';visibility:hidden;"></div>');
  return document.all(divName);
}
function initDivPos(div){ div.style.pixelLeft = div.offsetLeft; div.style.pixelTop = div.offsetTop; }
function getDivLeft(div){ return _ie5?div.offsetLeft:div.style.pixelLeft; }
function getDivTop(div) { return _ie5?div.offsetTop :div.style.pixelTop;  }
function moveDivTo(div,left,top){ div.style.pixelLeft = left; div.style.pixelTop  = top; }
function moveDivBy(div,left,top){
  if(_ie5){
    div.style.pixelLeft = div.offsetLeft+left+0.5; div.style.pixelTop  = div.offsetTop +top +0.5;
  } else {
    div.style.pixelLeft += left+0.5; div.style.pixelTop  += top +0.5;
  }
}
function initDivSize(div){
  div.style.pixelWidth  = div.offsetWidth;
  div.style.pixelHeight = div.offsetHeight;
}
function getDivWidth (div){ return _ie5?div.offsetWidth :div.style.pixelWidth; }
function getDivHeight(div){ return _ie5?div.offsetHeight:div.style.pixelHeight; }
function setDivVisibility(div,visible){
  div.style.visibility=(visible)?'inherit':'hidden';
}
function writeDivHTML(div,op,cl){
  var s='';
  for(var i=3; i<arguments.length; i++) s+=arguments[i];
  if(op) div.innerHTML = '';
  div.insertAdjacentHTML('BeforeEnd',s);
}
function Creeper(div,angle,minspeed,maxspeed){
  this.div     =div;
  this.width   =getDivWidth (div);
  this.height  =getDivHeight(div);
  this.minspeed=minspeed;
  this.maxspeed=maxspeed;
  this.angle   =angle;

  var rad = (angle%360)*Math.PI/180;
  var speed = (maxspeed-minspeed)*Math.random()+minspeed;
  this.speedx =  speed*Math.cos(rad);
  this.speedy = -speed*Math.sin(rad);
}
ww = 0; wh = 0;
creepers = new Array();
cId = null;
pnl = null; pnlOffsetX = 0; pnlOffsetY = 0;
pnlx = 0; pnly = 0; pnlw = 0; pnlh = 0;
wx1 = 0; wx2 = 0; wy1 = 0; wy2 = 0;
interval = 50;
function creepManager(){
  wx1=getWinXOffset(); wx2=wx1+ww;
  wy1=getWinYOffset(); wy2=wy1+wh;
  if(pnlx<=wx1 || (pnlx+pnlw)>=wx2 || pnly<=wy1 || (pnly+pnlh)>=wy2){
    pnlx=wx1+pnlOffsetX; pnly=wy1+pnlOffsetY;
    moveDivTo(pnl,pnlx,pnly);
  }
  for(var i=0; i<creepers.length; i++){
    var creeper=creepers[i];
    var div=creeper.div;
    moveDivBy(div,creeper.speedx,creeper.speedy);
    var x=getDivLeft(div),y=getDivTop(div);
    var calc=false;
    if(x<=wx1){
      if(y<=wy1){
        if(creeper.angle<=270){
          creeper.angle=90*Math.random()+270; calc=true;
        }
      } else if((y+creeper.height)>=wy2){
        if(creeper.angle>=90){
          creeper.angle=90*Math.random(); calc=true;
        }
      } else {
        if(creeper.angle>=90 && creeper.angle<=270){
          creeper.angle=180*Math.random()+270; calc=true;
        }
      }
    } else if((x+creeper.width)>=wx2){
      if(y<=wy1){
        if(creeper.angle<=180 || creeper.angle>=270){
          creeper.angle=90*Math.random()+180; calc=true;
        }
      } else if((y+creeper.height)>=wy2){
        if(creeper.angle<=90 || creeper.angle>=180){
          creeper.angle=90*Math.random()+90; calc=true;
        }
      } else {
        if(creeper.angle<=90 || creeper.angle>=270){
          creeper.angle=180*Math.random()+90; calc=true;
        }
      }
    } else {
      if(y<=wy1){
        if(creeper.angle<=180){
          creeper.angle=180*Math.random()+180; calc=true;
        }
      } else if((y+creeper.height)>=wy2){
        if(creeper.angle>=180){
          creeper.angle=180*Math.random(); calc=true;
        }
      }
    }
    if(calc){
      creeper.angle%=360;
      var rad = (creeper.angle%360)*Math.PI/180;
      var speed = (creeper.maxspeed-creeper.minspeed)*Math.random()+creeper.minspeed;
      creeper.speedx =  speed*Math.cos(rad);
      creeper.speedy = -speed*Math.sin(rad);
    }
  }
  cId=setTimeout('creepManager()',interval);
}
function createCreeper(x,y,sz,col,min,max,chr){
  var div=createLayer(x,y,sz+3,sz+3);
  writeDivHTML(div,true,true,'<font class="bl'+sz+'" color="'+col+'">'+chr+'</font>');
  return new Creeper(div,360*Math.random(),min,max);;
}
function init(){
  ww = getWindowWidth(); wh =getWindowHeight();
  wx1=getWinXOffset(); wx2=wx1+ww;
  wy1=getWinYOffset(); wy2=wy1+wh;  var x=ww/2, y=wh/2;
  creepers[creepers.length]=createCreeper(x-30,y-30,0,'' ,5, 5,'<IMG LOWSRC="img/ani1.gif">');
  creepers[creepers.length]=createCreeper(x-25,y-20,10,'' ,5, 3,'<IMG LOWSRC="img/ani2.gif">');
  creepers[creepers.length]=createCreeper(x-25,y-20,20,'' ,5, 3,'<IMG LOWSRC="img/ani2.gif">');

      pnl=getDivFromName('ctrl');
  initDivPos(pnl); initDivSize(pnl);
  pnlw = getDivWidth(pnl); pnlh = getDivHeight(pnl);
  pnlOffsetX=(ww-pnlw)/2; pnlOffsetY=getDivTop(pnl);
  pnlx = pnlOffsetX; pnly = pnlOffsetY;
  moveDivTo(pnl,pnlOffsetX,pnlOffsetY);
  setDivVisibility(pnl,true);
  for(var i=0; i<creepers.length; i++) setDivVisibility(creepers[i].div,true);
  cId=setTimeout('creepManager()',interval);
}
function cancel(){
  if(cId){ clearTimeout(cId); cId=null; }
}
