/** 
 *  MovingObjects Script LIBRARY by Virtual_Max (http://come.to/vmax)
 *  This script can be used and modified absolutely free
 *  untill this statement presents unchanged in all copies
 *  and derivatives.
 **/


function getById(id,o){
    if(document.getElementById) return document.getElementById(id);
    if(document.all)            return document.all[id]
    if(o==null) o=window.document;

    if(o.layers[id]){
      return o.layers[id]
    }

    if(o.images[id]){
      return o.images[id]
    }

    for(var i=0; i<o.layers.length; i++){
       var oo=getById(id,o.layers[i].document); 
       if(oo!=null) return oo;
    }
    return null;
}

function Dimension(x,y,w,h) {
  this.w=w; this.h=h; this.x=x; this.y=y;
}

function getDivSizes(id){
 var o = getById(id);
 if(o==null) return null;
 var x,y,w,h;
 if(document.layers) {
     x=o.left;
     y=o.top;
     if(o.height==null) o.height=o.clip.height;
     if(o.width==null)  o.width=o.clip.width;
     h=o.height;
     w=o.width;
  }
  else if(document.all){
     x=o.offsetLeft;
     y=o.offsetTop;
     w=o.scrollWidth;
     h=o.scrollHeight;
 }
 else{
     x=o.offsetLeft;
     y=o.offsetTop;
     w=o.offsetWidth;
     h=o.offsetHeight;
 }
 return new Dimension(x,y,w,h);
}


function getViewPort(){
  var x=0,y=0,w=640,h=480;
  if(document.all) {
     var o=window.document.body;
     x=o.scrollLeft;
     w=o.offsetWidth;
     y=o.scrollTop;
     h=o.offsetHeight;
  } 
  else {
     x=window.pageXOffset;
     w=window.innerWidth;
     y=window.pageYOffset;
     h=window.innerHeight;
  }

  return new Dimension(x,y,w,h);
}

function getPageSize(){
  var w=640,h=480;
  if(document.all) {
     var o=window.document.body;
     w=o.scrollWidth;
     h=o.scrollHeight;
  } 
  else {
     w=document.width;
     h=document.height;
  }
  return new Dimension(0,0,w,h);
}


function showDiv(id,vis) {
  var o = getById(id);
  if( o==null ) return;
  if(!document.layers) o=o.style;
    o.visibility = vis ? "visible" : "hidden";
}



function moveDiv(id,x,y){
  var o = getById(id);
  if( o==null ) return;
  if(document.layers){
     o.moveTo(x,y);     
  }
  else {
    o=o.style;
    if(document.all) {
       o.pixelLeft=x;
       o.pixelTop=y;
    }
    else {
       o.left=x;
       o.top=y;     
    }
  }
}


	
//=====================================





allChips = new Array();

function makeChip(named,w,h,imagen,href,target,move)
 {this.named=named;
  this.w=w;
  this.h=h;
  this.xx=0;
  this.yy=0;
  this.zz=0
  this.vx=0;
  this.vy=0;
  this.vz=0;
  this.zzmax=10;
  this.timer=null;
  this.im     = new Image();
  this.im.src =imagen;
  this.imagen =imagen;
  this.complete=false;
  //if(href==null) href='Javascript:void(0);';
  this.href=href;
  if(target==null) target="_self";
  this.target=target;
  this.move=move;
  this.lastw=-1;
  this.lasth=-1;
  this.move3D=false;
  var s;
  s='<style type="text/css">';
  s+='#'+named+'{position:absolute; width:'+w+'; height:'+h+'; top:'+this.yy+'; left:'+this.xx+'; visibility:hidden; }';
  s+='</style>';
  document.writeln(s);
  s='<div ID="'+named+'">';
  if(this.href!=null) s+='<A HREF="'+this.href+'" TARGET="'+this.target+'">'
  s+='<IMG SRC="'+this.imagen+'" border=0 SUPPRESS>'
  if(this.href!=null) s+='</A>';
  s+='</div>';
  document.writeln(s);
 }



function rescaleChip(chipn)
  {chip=allChips[chipn];
   var w=Math.floor(chip.zz);
   if(w==chip.lastw) return;
   chip.lastw=w;
   if(document.layers)
    {var s='';
     if(chip.href!=null)  s+='<A HREF="'+chip.href+'" TARGET="'+chip.target+'">';
     s+='<IMG border=0 width='+w+' height='+chip.im.height*w/chip.im.width+' SUPPRESS>';
     if(chip.href!=null)  s+='</A>';
     d=document[chip.named].document;
     d.open();
     d.writeln(s);
     d.close();
     d.images[0].src=chip.im.src;
    }
   else 
    {var s='';
     if(chip.href!=null) s+='<A HREF="'+chip.href+'" TARGET="'+chip.target+'">';
     s+='<IMG SRC="'+chip.imagen+'" border=0 width='+w+'>';
     if(chip.href!=null) s+='</A>';
     d=getById(chip.named);
     d.innerHTML = s;
    }
  }


// -- random move parameters --

var pageX=0;
var pageY=0;
var pageW=600;
var pageH=400;


var vmin=2;
var vmax=5;
var vr=2;


function chipStarMove(chipn)
{
  chip = allChips[chipn];
  if(!chip.complete)
      {//if(chip.im.complete)
        {chip.complete=true;
         chip.xx = pageX+pageW/2; 
         chip.yy = pageY+pageH/2; 
         chip.vx=vr*(Math.random()-0.5)*2;
         chip.vy=vr*(Math.random()-0.5)*2;
         chip.w=chip.im.width;
         chip.h=chip.im.height;
         chip.zz=1;
         chip.zzmax=chip.w*(1-0.5*Math.random());
        }
      }
   if(chip.move3D) {
     rescaleChip(chipn);
   }

   chip.xx=chip.xx+chip.vx;
   chip.yy=chip.yy+chip.vy;
   chip.vx*=(1.05);
   chip.vy*=(1.05);

   var dx = chip.xx-(pageX+pageW/2);
   var dy = chip.yy-(pageY+pageH/2);
   var r=Math.sqrt(dx*dx+dy*dy);
   var r0=Math.sqrt(pageW*pageW+pageH*pageH)/4;
   chip.zz=chip.zzmax*r/r0+1;

   if((chip.xx<=pageX-chip.w)||
      (chip.xx>=pageX+pageW) ||
      (chip.yy<=pageY-chip.h)||
      (chip.yy>=pageY+pageH)
     )
   { showDiv(allChips[chipn].named,false);
     chip.complete=false
   }
   showDiv(allChips[chipn].named,true);  
}



function chipRandomMove(chipn)
{  
   chip = allChips[chipn];
 
   chip.vx+=vr*(Math.random()-0.5);
   chip.vy+=vr*(Math.random()-0.5);
   chip.vz+=vr*(Math.random()-0.5);
   if(chip.vx>(vmax+vmin))  chip.vx=(vmax+vmin)*2-chip.vx;
   if(chip.vx<(-vmax-vmin)) chip.vx=(-vmax-vmin)*2-chip.vx;
   if(chip.vy>(vmax+vmin))  chip.vy=(vmax+vmin)*2-chip.vy;
   if(chip.vy<(-vmax-vmin)) chip.vy=(-vmax-vmin)*2-chip.vy;
   if(chip.vz>(vmax+vmin))  chip.vz=(vmax+vmin)*2-chip.vz;
   if(chip.vz<(-vmax-vmin)) chip.vz=(-vmax-vmin)*2-chip.vz;

   chip.xx=chip.xx+chip.vx;
   chip.yy=chip.yy+chip.vy;
   chip.zz=chip.zz+chip.vz/4;

   if(!chip.complete)
      {//if(chip.im.complete)
        {chip.complete=true;
         chip.xx = Math.random()* pageW; 
         chip.yy = Math.random()* pageH; 
         chip.zzmax=chip.im.width;
         chip.zz=chip.zzmax;
         showDiv(allChips[chipn].named,true);
        }
      }

   if(chip.xx<=pageX)
     {chip.xx=pageX;
      chip.vx=vmin+vmax*Math.random();
     }
   if(chip.xx>=pageX+pageW-chip.w)
     {chip.xx=pageX+pageW-chip.w;
      chip.vx=-vmin-vmax*Math.random();
     }
   if(chip.yy>=pageY+pageH-chip.h)
     {chip.yy=pageY+pageH-chip.h;
      chip.vy=-vmin-vmax*Math.random();
     }
   if(chip.yy<=pageY)
     {chip.yy=pageY;
      chip.vy=vmin+vmax*Math.random();
     }


   if(chip.zz>=chip.zzmax)
     {chip.zz=chip.zzmax;
      chip.vz=-vmin-vmax*Math.random();
     }
   if(chip.zz<=1)
     {chip.zz=1;
      chip.vz=vmin+vmax*Math.random();
     }
}

var allChipsTimer=null;

function fixNNbug()
 {stopThemAll();
  window.location=location+"";
 }

var oldonload=null;

function runThemAll()
{if(document.layers)
   {window.onresize=fixNNbug;}
    setTimeout("runThemAll2()",300);
}


function runThemAll2()
{
 var d = getViewPort();
 pageX = d.x;
 pageY = d.y;
 pageW = d.w;
 pageH = d.h;
 if(pageH>0)
  {for(var i=0;i<allChips.length;i++)
        {
         allChips[i].move(i);
         moveDiv(allChips[i].named,allChips[i].xx,allChips[i].yy);
        }
  }
 setTimeout("runThemAll2()",100);
}

function stopThemAll()
{if(allChipsTimer!=null)
    {clearTimeout(allChipsTimer);}
}


function createRandomChips()
{if(document.layers || document.all || document.getElementById)
 {
  var thelength = createRandomChips.arguments.length;
  for (var i = 1; i < thelength; i+=2)   
    {var im = createRandomChips.arguments[i];
     var lnk= createRandomChips.arguments[i+1];
     n=allChips.length;
     allChips[n] = new makeChip('rnd'+i,20,20,im,lnk,'_self',chipRandomMove);
     allChips[n].move3D=false;
    } 
 }
}

function createStarChips()
{
 if(document.layers || document.all || document.getElementById)
 {var thelength = createStarChips.arguments.length;
  for (var i = 1; i < thelength; i+=2)   
    {var im = createStarChips.arguments[i];
     var lnk= createStarChips.arguments[i+1];
     n=allChips.length;
     allChips[n] = new makeChip('star'+i,20,20,im,lnk,'_self',chipStarMove);
     allChips[n].move3D=true;
    } 
 }
}


