home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 September / Chip_1999-09_cd.bin / internet / JSLib / applets / 0117 / StarsRound.js < prev   
Text File  |  1999-04-24  |  3KB  |  115 lines

  1. var pf;
  2. if (ie) pf = star0.style;
  3. else pf = document.layers["star0"];
  4. var W,H;
  5. var sL=0, sT=0;
  6. var divW = 47 + 2, divH = 46 + 3; //divW = parseInt(pf.width) + 2; divH; = parseInt(pf.height) + 3;
  7. var X=-1, Y=-1;
  8. var f;
  9. function buffer(n) {
  10.    for (var i = 1; i <= n; i++) {
  11.      this[i] = -100;
  12.    }
  13.    return this; }
  14. var bufa;
  15. var bufp = 0;
  16. var bufc = 3;
  17. var bufd = -1;
  18. var bufmax = 50;  //bufc*pocet hvezd musi < velikost buff
  19. var bufX = new buffer(bufmax);
  20. var bufY = new buffer(bufmax);
  21. var sx, sy;
  22. var ra;
  23. var r;
  24. var t;
  25. var sp = 4;
  26. var rap = sp/r;
  27. var maxr = 200;
  28. var PI2 = Math.PI*2;
  29. var rnd;
  30.  
  31.  
  32. function isin() {
  33.   return ( (X>=0) && (X<=W-divW) && (Y>=0) && (Y<=H-divH) );
  34.   }
  35.  
  36.  
  37. function circleBox() {
  38.   sL = parseInt(ie ? document.body.scrollLeft : pageXOffset);
  39.   sT = parseInt(ie ? document.body.scrollTop : pageYOffset);
  40.   if (!ie) {
  41.     W=innerWidth;
  42.     H=innerHeight;
  43.   }
  44.     X = sx + r*Math.cos(ra);
  45.     Y = sy + r*Math.sin(ra);
  46.     if (!isin()) {
  47.     rap = -rap;
  48.     ra += 2*rap;
  49.         X = sx + r*Math.cos(ra);
  50.         Y = sy + r*Math.sin(ra);
  51.     }
  52.     if (!isin()) resize();
  53.     t -= Math.abs(rap);
  54.     if (t<0) {
  55.     rnd = maxr/2 - (Math.random()*maxr);
  56.     if ((rnd>-10) && (rnd<10)) rnd = 10;
  57.     sx = X - Math.cos(ra)*rnd;
  58.     sy = Y - Math.sin(ra)*rnd;
  59.     r = Math.abs(rnd);
  60.     if (rnd<0) {
  61.         if (ra < Math.PI) ra+=Math.PI;
  62.         else ra-=Math.PI;
  63.         if (rap<0) rap = sp/r; else rap = -sp/r;
  64.         //rap = Math.random()*10 + 10;
  65.     } else if (rap<0) rap = -sp/r; else rap = sp/r;
  66.     rap = rap*(Math.random()*3+2)
  67.     t=Math.random()*(Math.PI/2);
  68.     }
  69.     ra += rap;
  70.     while (ra>PI2) ra -= PI2;
  71.     while (ra<PI2) ra += PI2;
  72.     pf.left = (X + sL); //+3*Math.random());
  73.     pf.top = (Y + sT); //+3*Math.random());
  74.     bufX[bufp] = (X + sL);
  75.     bufY[bufp] = (Y + sT);
  76.     bufp++;
  77.     if (bufp>bufmax) bufp = 0;
  78.     for (f=1; f<5; f++) {
  79.       bufa = bufp - 1 - (bufc*f);
  80.       if (bufa<0) bufa += bufmax + 1;
  81.       if ( (bufX[bufa]>sL+W-divW) || (bufY[bufa]>sT+H-divH) )
  82.         for (g=0; g<bufc; g++) {
  83.           bufX[bufa-g<0?bufa-g+bufmax+1:bufa-g]=-100;
  84.           bufY[bufa-g<0?bufa-g+bufmax+1:bufa-g]=-100;
  85.         }
  86.       if (ie) {
  87.         eval('star'+f+'.style.left=bufX[bufa] + (f*5)');
  88.         eval('star'+f+'.style.top=bufY[bufa] + (f*5)');
  89.       } else {
  90.         eval('window.document.layers["star'+f+'"].left=bufX[bufa] + (f*5)');
  91.         eval('window.document.layers["star'+f+'"].top=bufY[bufa] + (f*5)');
  92.       }
  93.     }
  94.     setTimeout((ie ? 'circleBox();' : circleBox),20);
  95. }
  96. function resize() {
  97.   W = ie ? document.body.clientWidth : innerWidth;
  98.   H = ie ? document.body.clientHeight : innerHeight;
  99.     if (!isin()) {
  100.       sx=W/2; sy=H/2;
  101.       r=Math.random()*(W<H?sx:sy);
  102.       if (r<10) r=10;
  103.       ra=Math.random()*PI2;
  104.       rap = sp/r;
  105.       rap = rap*(Math.random()*3+2)
  106.       t=Math.random()*PI2;
  107.    }
  108. }
  109. function start() {
  110.   if (ie) window.onresize = resize;
  111.   resize();
  112.   circleBox();
  113. }
  114.  
  115.