home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 Secrets / Secrets1.iso / Internet / HTMLU / JavaPerk / _SETUP.1 / AnimatePLUS25.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-08-27  |  16.2 KB  |  948 lines

  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Event;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.MediaTracker;
  9. import java.awt.image.CropImageFilter;
  10. import java.awt.image.FilteredImageSource;
  11. import java.net.URL;
  12. import java.util.StringTokenizer;
  13.  
  14. public class AnimatePLUS25 extends Applet implements Runnable {
  15.    int framecount;
  16.    // $FF: renamed from: fi int
  17.    int field_0;
  18.    int width;
  19.    int height;
  20.    int cycles;
  21.    int[] bordersizes;
  22.    int[] transitionrates;
  23.    int[] transitionsteps;
  24.    int[] pauses;
  25.    int[] xpositions;
  26.    int[] ypositions;
  27.    String framedir;
  28.    String dummypipes;
  29.    String sounddir;
  30.    String[] soundactivations;
  31.    String onetag;
  32.    String[] targets;
  33.    String[] transitions;
  34.    String[] translist;
  35.    URL urldef;
  36.    URL[] urls;
  37.    Image bufferI;
  38.    Image frameimage;
  39.    Image background;
  40.    Image foreground;
  41.    Image[] frames;
  42.    AudioClip[] sounds;
  43.    boolean tag = false;
  44.    Graphics bufferG;
  45.    Thread woohoo;
  46.    Color[] bgcolors;
  47.    Color[] bordercolors;
  48.    // $FF: renamed from: mt java.awt.MediaTracker
  49.    MediaTracker field_1;
  50.    String transitionlist;
  51.  
  52.    public void init() {
  53.    }
  54.  
  55.    public void run() {
  56.       this.field_1 = new MediaTracker(this);
  57.       this.width = ((Component)this).size().width;
  58.       this.height = ((Component)this).size().height;
  59.       this.field_0 = this.framecount = 0;
  60.       this.bufferI = ((Component)this).createImage(this.width, this.height);
  61.       this.bufferG = this.bufferI.getGraphics();
  62.       String var1 = ((Applet)this).getParameter("COPYRIGHT");
  63.       if (var1 == null || !var1.equals("AnimatePLUS applet, Copyright 1996 Sun Microsystems, Inc., all rights reserved.")) {
  64.          this.stop();
  65.       }
  66.  
  67.       var1 = ((Applet)this).getParameter("DOCUMENTATION");
  68.       if (var1 == null || !var1.equals("Documentation found at: http://www.xm.com/cafe/")) {
  69.          this.stop();
  70.       }
  71.  
  72.       var1 = ((Applet)this).getParameter("ONETAG");
  73.       if (var1 != null) {
  74.          this.tag = true;
  75.          this.onetag = var1 + "*";
  76.       } else {
  77.          this.tag = false;
  78.       }
  79.  
  80.       var1 = this.tag ? this.extractParam("BACKGROUND") : ((Applet)this).getParameter("BACKGROUND");
  81.  
  82.       try {
  83.          this.background = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var1));
  84.       } catch (Exception var26) {
  85.       }
  86.  
  87.       if (this.background != null) {
  88.          this.field_1.addImage(this.background, -3);
  89.       }
  90.  
  91.       var1 = this.tag ? this.extractParam("CYCLES") : ((Applet)this).getParameter("CYCLES");
  92.       this.cycles = var1 != null ? Integer.parseInt(var1) : 0;
  93.       var1 = this.tag ? this.extractParam("FOREGROUND") : ((Applet)this).getParameter("FOREGROUND");
  94.  
  95.       try {
  96.          this.foreground = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var1));
  97.       } catch (Exception var25) {
  98.       }
  99.  
  100.       if (this.foreground != null) {
  101.          this.field_1.addImage(this.foreground, -2);
  102.       }
  103.  
  104.       var1 = this.tag ? this.extractParam("FRAMEDIR") : ((Applet)this).getParameter("FRAMEDIR");
  105.       this.framedir = var1 != null ? var1 : "";
  106.       var1 = this.tag ? this.extractParam("TRANSITIONLIST") : ((Applet)this).getParameter("TRANSITIONLIST");
  107.       this.transitionlist = var1 != null ? var1 : "slidein(r)|slideout(r)|shutter|scroll(r)";
  108.       StringTokenizer var2 = new StringTokenizer(this.transitionlist, "|");
  109.       int var3 = var2.countTokens();
  110.       this.translist = new String[var3];
  111.  
  112.       for(int var4 = 0; var4 < var3; ++var4) {
  113.          this.translist[var4] = var2.nextToken().trim();
  114.       }
  115.  
  116.       var1 = this.tag ? this.extractParam("FRAMEIMAGE") : ((Applet)this).getParameter("FRAMEIMAGE");
  117.  
  118.       try {
  119.          this.frameimage = var1 != null ? ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var1)) : null;
  120.       } catch (Exception var24) {
  121.       }
  122.  
  123.       if (this.frameimage != null) {
  124.          this.field_1.addImage(this.frameimage, -1);
  125.       }
  126.  
  127.       var1 = this.tag ? this.extractParam("SOUNDDIR") : ((Applet)this).getParameter("SOUNDDIR");
  128.       this.sounddir = var1 != null ? var1 : "";
  129.       if (this.frameimage != null) {
  130.          if (!this.field_1.checkID(-1)) {
  131.             try {
  132.                this.field_1.waitForID(-1);
  133.             } catch (InterruptedException var23) {
  134.             }
  135.          }
  136.  
  137.          var1 = this.tag ? this.extractParam("FRAMECUTS") : ((Applet)this).getParameter("FRAMECUTS");
  138.          StringTokenizer var5 = new StringTokenizer(var1, "|");
  139.          this.framecount = var5.countTokens();
  140.          this.setArrays();
  141.  
  142.          for(int var6 = 0; var6 < this.framecount; ++var6) {
  143.             String var7 = var5.nextToken().trim();
  144.             StringTokenizer var8 = new StringTokenizer(var7, ",");
  145.             int var9 = Integer.parseInt(var8.nextToken().trim());
  146.             int var10 = Integer.parseInt(var8.nextToken().trim());
  147.             int var11 = Integer.parseInt(var8.nextToken().trim());
  148.             int var12 = Integer.parseInt(var8.nextToken().trim());
  149.             System.out.println("FRAME #" + var6 + ": x=" + var9 + ", y=" + var10 + ", w=" + var11 + ", h=" + var12);
  150.             this.frames[var6] = ((Component)this).createImage(new FilteredImageSource(this.frameimage.getSource(), new CropImageFilter(var9, var10, var11, var12)));
  151.             this.field_1.addImage(this.frames[var6], var6);
  152.          }
  153.       } else {
  154.          var1 = this.tag ? this.extractParam("FRAMES") : ((Applet)this).getParameter("FRAMES");
  155.          StringTokenizer var62 = new StringTokenizer(var1, "|");
  156.          this.framecount = var62.countTokens();
  157.          this.setArrays();
  158.  
  159.          for(int var64 = 0; var64 < this.framecount; ++var64) {
  160.             try {
  161.                this.frames[var64] = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), this.framedir + var62.nextToken()));
  162.             } catch (Exception var22) {
  163.             }
  164.  
  165.             this.field_1.addImage(this.frames[var64], var64);
  166.          }
  167.       }
  168.  
  169.       this.dummypipes = "";
  170.  
  171.       for(int var63 = 0; var63 < this.framecount; ++var63) {
  172.          this.dummypipes = this.dummypipes + "|";
  173.       }
  174.  
  175.       var1 = this.tag ? this.extractParam("BGCOLORS") : ((Applet)this).getParameter("BGCOLORS");
  176.       if (var1 == null) {
  177.          for(int var65 = 0; var65 < this.framecount; ++var65) {
  178.             this.bgcolors[var65] = Color.lightGray;
  179.          }
  180.       } else {
  181.          var1 = var1 + this.dummypipes;
  182.  
  183.          for(int var66 = 0; var66 < this.framecount; ++var66) {
  184.             if (var66 == 0) {
  185.                this.bgcolors[var66] = !this.prePipe(var1).equals("") ? new Color(this.rValue(this.prePipe(var1)), this.gValue(this.prePipe(var1)), this.bValue(this.prePipe(var1))) : Color.lightGray;
  186.             } else {
  187.                this.bgcolors[var66] = !this.prePipe(var1).equals("") ? new Color(this.rValue(this.prePipe(var1)), this.gValue(this.prePipe(var1)), this.bValue(this.prePipe(var1))) : this.bgcolors[var66 - 1];
  188.             }
  189.  
  190.             var1 = this.postPipe(var1);
  191.          }
  192.       }
  193.  
  194.       var1 = this.tag ? this.extractParam("BORDERCOLORS") : ((Applet)this).getParameter("BORDERCOLORS");
  195.       if (var1 == null) {
  196.          for(int var67 = 0; var67 < this.framecount; ++var67) {
  197.             this.bordercolors[var67] = Color.black;
  198.          }
  199.       } else {
  200.          var1 = var1 + this.dummypipes;
  201.  
  202.          for(int var68 = 0; var68 < this.framecount; ++var68) {
  203.             if (var68 == 0) {
  204.                this.bordercolors[var68] = !this.prePipe(var1).equals("") ? new Color(this.rValue(this.prePipe(var1)), this.gValue(this.prePipe(var1)), this.bValue(this.prePipe(var1))) : Color.black;
  205.             } else {
  206.                this.bordercolors[var68] = !this.prePipe(var1).equals("") ? new Color(this.rValue(this.prePipe(var1)), this.gValue(this.prePipe(var1)), this.bValue(this.prePipe(var1))) : this.bordercolors[var68 - 1];
  207.             }
  208.  
  209.             var1 = this.postPipe(var1);
  210.          }
  211.       }
  212.  
  213.       var1 = this.tag ? this.extractParam("BORDERSIZES") : ((Applet)this).getParameter("BORDERSIZES");
  214.       if (var1 == null) {
  215.          for(int var69 = 0; var69 < this.framecount; ++var69) {
  216.             this.bordersizes[var69] = 0;
  217.          }
  218.       } else {
  219.          var1 = var1 + this.dummypipes;
  220.  
  221.          for(int var70 = 0; var70 < this.framecount; ++var70) {
  222.             if (var70 == 0) {
  223.                this.bordersizes[var70] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : 0;
  224.             } else {
  225.                this.bordersizes[var70] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : this.bordersizes[var70 - 1];
  226.             }
  227.  
  228.             var1 = this.postPipe(var1);
  229.          }
  230.       }
  231.  
  232.       var1 = this.tag ? this.extractParam("PAUSES") : ((Applet)this).getParameter("PAUSES");
  233.       if (var1 == null) {
  234.          for(int var71 = 0; var71 < this.framecount; ++var71) {
  235.             this.pauses[var71] = 100;
  236.          }
  237.       } else {
  238.          var1 = var1 + this.dummypipes;
  239.  
  240.          for(int var72 = 0; var72 < this.framecount; ++var72) {
  241.             if (!this.prePipe(var1).equals("")) {
  242.                this.pauses[var72] = Integer.parseInt(this.prePipe(var1));
  243.             } else {
  244.                this.pauses[var72] = var72 == 0 ? 100 : this.pauses[var72 - 1];
  245.             }
  246.  
  247.             var1 = this.postPipe(var1);
  248.          }
  249.       }
  250.  
  251.       var1 = this.tag ? this.extractParam("POSITIONS") : ((Applet)this).getParameter("POSITIONS");
  252.       if (var1 == null) {
  253.          for(int var73 = 0; var73 < this.framecount; ++var73) {
  254.             this.xpositions[var73] = this.ypositions[var73] = 0;
  255.          }
  256.       } else {
  257.          var1 = var1 + this.dummypipes;
  258.  
  259.          for(int var74 = 0; var74 < this.framecount; ++var74) {
  260.             String var90 = !this.prePipe(var1).equals("") ? this.prePipe(var1) : "x,x";
  261.             String var92 = this.preComma(var90);
  262.             String var94 = this.postComma(var90);
  263.             if (var92.equals("x")) {
  264.                this.xpositions[var74] = var74 == 0 ? 0 : this.xpositions[var74 - 1];
  265.             } else if (var92.startsWith("-")) {
  266.                this.xpositions[var74] = var74 == 0 ? -Integer.parseInt(var92.substring(1)) : this.xpositions[var74 - 1] - Integer.parseInt(var92.substring(1));
  267.             } else if (var92.startsWith("+")) {
  268.                this.xpositions[var74] = var74 == 0 ? Integer.parseInt(var92.substring(1)) : this.xpositions[var74 - 1] + Integer.parseInt(var92.substring(1));
  269.             } else {
  270.                this.xpositions[var74] = Integer.parseInt(var92);
  271.             }
  272.  
  273.             if (var94.equals("x")) {
  274.                this.ypositions[var74] = var74 == 0 ? 0 : this.ypositions[var74 - 1];
  275.             } else if (var94.startsWith("-")) {
  276.                this.ypositions[var74] = var74 == 0 ? -Integer.parseInt(var94.substring(1)) : this.ypositions[var74 - 1] - Integer.parseInt(var94.substring(1));
  277.             } else if (var94.startsWith("+")) {
  278.                this.ypositions[var74] = var74 == 0 ? Integer.parseInt(var94.substring(1)) : this.ypositions[var74 - 1] + Integer.parseInt(var94.substring(1));
  279.             } else {
  280.                this.ypositions[var74] = Integer.parseInt(var94);
  281.             }
  282.  
  283.             var1 = this.postPipe(var1);
  284.          }
  285.       }
  286.  
  287.       var1 = this.tag ? this.extractParam("SOUNDS") : ((Applet)this).getParameter("SOUNDS");
  288.       if (var1 == null) {
  289.          for(int var75 = 0; var75 < this.framecount; ++var75) {
  290.             this.sounds[var75] = null;
  291.          }
  292.       } else {
  293.          var1 = var1 + this.dummypipes;
  294.  
  295.          for(int var76 = 0; var76 < this.framecount; ++var76) {
  296.             try {
  297.                if (!this.prePipe(var1).equals("")) {
  298.                   this.sounds[var76] = this.prePipe(var1).equals("null") ? null : ((Applet)this).getAudioClip(new URL(((Applet)this).getDocumentBase(), this.sounddir + this.prePipe(var1)));
  299.                } else {
  300.                   this.sounds[var76] = var76 == 0 ? null : this.sounds[var76 - 1];
  301.                }
  302.             } catch (Exception var21) {
  303.             }
  304.  
  305.             var1 = this.postPipe(var1);
  306.          }
  307.       }
  308.  
  309.       var1 = this.tag ? this.extractParam("SOUNDACTIVATIONS") : ((Applet)this).getParameter("SOUNDACTIVATIONS");
  310.       if (var1 == null) {
  311.          for(int var77 = 0; var77 < this.framecount; ++var77) {
  312.             this.soundactivations[var77] = "enter";
  313.          }
  314.       } else {
  315.          var1 = var1 + this.dummypipes.toLowerCase();
  316.  
  317.          for(int var78 = 0; var78 < this.framecount; ++var78) {
  318.             if (var78 == 0) {
  319.                this.soundactivations[var78] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : "enter";
  320.             } else {
  321.                this.soundactivations[var78] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : this.soundactivations[var78 - 1];
  322.             }
  323.  
  324.             var1 = this.postPipe(var1);
  325.          }
  326.       }
  327.  
  328.       var1 = this.tag ? this.extractParam("TARGETS") : ((Applet)this).getParameter("TARGETS");
  329.       if (var1 == null) {
  330.          for(int var79 = 0; var79 < this.framecount; ++var79) {
  331.             this.targets[var79] = null;
  332.          }
  333.       } else {
  334.          var1 = var1 + this.dummypipes;
  335.  
  336.          for(int var80 = 0; var80 < this.framecount; ++var80) {
  337.             if (var80 == 0) {
  338.                this.targets[var80] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : null;
  339.             } else {
  340.                this.targets[var80] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : this.targets[var80 - 1];
  341.             }
  342.  
  343.             var1 = this.postPipe(var1);
  344.          }
  345.       }
  346.  
  347.       var1 = this.tag ? this.extractParam("TRANSITIONS") : ((Applet)this).getParameter("TRANSITIONS");
  348.       if (var1 == null) {
  349.          for(int var81 = 0; var81 < this.framecount; ++var81) {
  350.             this.transitions[var81] = "overwrite";
  351.          }
  352.       } else {
  353.          var1 = var1 + this.dummypipes.toLowerCase();
  354.  
  355.          for(int var82 = 0; var82 < this.framecount; ++var82) {
  356.             if (var82 == 0) {
  357.                this.transitions[var82] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : "overwrite";
  358.             } else {
  359.                this.transitions[var82] = !this.prePipe(var1).equals("") ? this.prePipe(var1) : this.transitions[var82 - 1];
  360.             }
  361.  
  362.             var1 = this.postPipe(var1);
  363.          }
  364.       }
  365.  
  366.       var1 = this.tag ? this.extractParam("TRANSITIONRATES") : ((Applet)this).getParameter("TRANSITIONRATES");
  367.       if (var1 == null) {
  368.          for(int var83 = 0; var83 < this.framecount; ++var83) {
  369.             this.transitionrates[var83] = 100;
  370.          }
  371.       } else {
  372.          var1 = var1 + this.dummypipes;
  373.  
  374.          for(int var84 = 0; var84 < this.framecount; ++var84) {
  375.             if (var84 == 0) {
  376.                this.transitionrates[var84] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : 0;
  377.             } else {
  378.                this.transitionrates[var84] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : this.transitionrates[var84 - 1];
  379.             }
  380.  
  381.             var1 = this.postPipe(var1);
  382.          }
  383.       }
  384.  
  385.       var1 = this.tag ? this.extractParam("TRANSITIONSTEPS") : ((Applet)this).getParameter("TRANSITIONSTEPS");
  386.       if (var1 == null) {
  387.          for(int var85 = 0; var85 < this.framecount; ++var85) {
  388.             this.transitionsteps[var85] = 10;
  389.          }
  390.       } else {
  391.          var1 = var1 + this.dummypipes;
  392.  
  393.          for(int var86 = 0; var86 < this.framecount; ++var86) {
  394.             if (var86 == 0) {
  395.                this.transitionsteps[var86] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : 0;
  396.             } else {
  397.                this.transitionsteps[var86] = !this.prePipe(var1).equals("") ? Integer.parseInt(this.prePipe(var1)) : this.transitionsteps[var86 - 1];
  398.             }
  399.  
  400.             var1 = this.postPipe(var1);
  401.          }
  402.       }
  403.  
  404.       try {
  405.          this.urldef = new URL("http://www.xm.com/cafe/AnimatePLUS/");
  406.       } catch (Exception var20) {
  407.       }
  408.  
  409.       var1 = this.tag ? this.extractParam("URLS") : ((Applet)this).getParameter("URLS");
  410.       if (var1 == null) {
  411.          for(int var87 = 0; var87 < this.framecount; ++var87) {
  412.             this.urls[var87] = this.urldef;
  413.          }
  414.       } else {
  415.          var1 = var1 + this.dummypipes;
  416.  
  417.          for(int var88 = 0; var88 < this.framecount; ++var88) {
  418.             try {
  419.                if (!this.prePipe(var1).equals("")) {
  420.                   this.urls[var88] = this.prePipe(var1).equals("null") ? null : new URL(((Applet)this).getDocumentBase(), this.prePipe(var1));
  421.                } else {
  422.                   this.urls[var88] = var88 == 0 ? this.urldef : this.urls[var88 - 1];
  423.                }
  424.             } catch (Exception var19) {
  425.             }
  426.  
  427.             var1 = this.postPipe(var1);
  428.          }
  429.       }
  430.  
  431.       byte var89;
  432.       if (this.cycles == 0) {
  433.          var89 = 0;
  434.          this.cycles = 1;
  435.       } else {
  436.          var89 = 1;
  437.       }
  438.  
  439.       for(int var91 = 0; var91 < this.cycles * this.framecount; var91 += var89) {
  440.          if (!this.field_1.checkID(this.field_0)) {
  441.             try {
  442.                this.field_1.waitForID(this.field_0);
  443.             } catch (InterruptedException var14) {
  444.             }
  445.          }
  446.  
  447.          if (this.soundactivations[this.field_0].equals("auto") && this.sounds[this.field_0] != null) {
  448.             this.sounds[this.field_0].play();
  449.          }
  450.  
  451.          String var93 = this.transitions[this.field_0].equals("random") ? this.translist[(int)(Math.random() * (double)this.translist.length)] : this.transitions[this.field_0];
  452.          if (var93.equals("overwrite")) {
  453.             this.paintBackground(this.bufferG);
  454.             this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  455.             this.paintForeground(this.bufferG);
  456.             ((Component)this).repaint();
  457.          } else if (!var93.equals("shutter")) {
  458.             if (var93.startsWith("shrink")) {
  459.                String var96 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  460.                if (var96.startsWith("r")) {
  461.                   var96 = String.valueOf((int)(Math.random() * (double)9.0F + (double)1.0F));
  462.                }
  463.  
  464.                if (var96.equals("1")) {
  465.                   this.shrink((double)0.0F, (double)0.0F);
  466.                } else if (var96.equals("2")) {
  467.                   this.shrink((double)0.5F, (double)0.0F);
  468.                } else if (var96.equals("3")) {
  469.                   this.shrink((double)1.0F, (double)0.0F);
  470.                } else if (var96.equals("4")) {
  471.                   this.shrink((double)1.0F, (double)0.5F);
  472.                } else if (var96.equals("5")) {
  473.                   this.shrink((double)1.0F, (double)1.0F);
  474.                } else if (var96.equals("6")) {
  475.                   this.shrink((double)0.5F, (double)1.0F);
  476.                } else if (var96.equals("7")) {
  477.                   this.shrink((double)0.0F, (double)1.0F);
  478.                } else if (var96.equals("8")) {
  479.                   this.shrink((double)0.0F, (double)0.5F);
  480.                } else {
  481.                   this.shrink((double)0.5F, (double)0.5F);
  482.                }
  483.             } else if (var93.startsWith("expand")) {
  484.                String var97 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  485.                if (var97.startsWith("r")) {
  486.                   var97 = String.valueOf((int)(Math.random() * (double)9.0F + (double)1.0F));
  487.                }
  488.  
  489.                if (var97.equals("1")) {
  490.                   this.expand((double)0.0F, (double)0.0F);
  491.                } else if (var97.equals("2")) {
  492.                   this.expand((double)0.5F, (double)0.0F);
  493.                } else if (var97.equals("3")) {
  494.                   this.expand((double)1.0F, (double)0.0F);
  495.                } else if (var97.equals("4")) {
  496.                   this.expand((double)1.0F, (double)0.5F);
  497.                } else if (var97.equals("5")) {
  498.                   this.expand((double)1.0F, (double)1.0F);
  499.                } else if (var97.equals("6")) {
  500.                   this.expand((double)0.5F, (double)1.0F);
  501.                } else if (var97.equals("7")) {
  502.                   this.expand((double)0.0F, (double)1.0F);
  503.                } else if (var97.equals("8")) {
  504.                   this.expand((double)0.0F, (double)0.5F);
  505.                } else {
  506.                   this.expand((double)0.5F, (double)0.5F);
  507.                }
  508.             } else if (var93.startsWith("slidein")) {
  509.                String var98 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  510.                if (var98.startsWith("r")) {
  511.                   var98 = String.valueOf((int)(Math.random() * (double)8.0F + (double)1.0F));
  512.                }
  513.  
  514.                if (var98.equals("1")) {
  515.                   this.slideIn(-this.width, -this.height, 1, 1);
  516.                } else if (var98.equals("2")) {
  517.                   this.slideIn(0, -this.height, 0, 1);
  518.                } else if (var98.equals("3")) {
  519.                   this.slideIn(this.width, -this.height, -1, 1);
  520.                } else if (var98.equals("4")) {
  521.                   this.slideIn(this.width, 0, -1, 0);
  522.                } else if (var98.equals("5")) {
  523.                   this.slideIn(this.width, this.height, -1, -1);
  524.                } else if (var98.equals("6")) {
  525.                   this.slideIn(0, this.height, 0, -1);
  526.                } else if (var98.equals("7")) {
  527.                   this.slideIn(-this.width, this.height, 1, -1);
  528.                } else {
  529.                   this.slideIn(-this.width, 0, 1, 0);
  530.                }
  531.             } else if (var93.startsWith("slideout")) {
  532.                String var99 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  533.                if (var99.startsWith("r")) {
  534.                   var99 = String.valueOf((int)(Math.random() * (double)8.0F + (double)1.0F));
  535.                }
  536.  
  537.                if (var99.equals("1")) {
  538.                   this.slideOut(-1, -1);
  539.                } else if (var99.equals("2")) {
  540.                   this.slideOut(0, -1);
  541.                } else if (var99.equals("3")) {
  542.                   this.slideOut(1, -1);
  543.                } else if (var99.equals("4")) {
  544.                   this.slideOut(1, 0);
  545.                } else if (var99.equals("5")) {
  546.                   this.slideOut(1, 1);
  547.                } else if (var99.equals("6")) {
  548.                   this.slideOut(0, 1);
  549.                } else if (var99.equals("7")) {
  550.                   this.slideOut(-1, 1);
  551.                } else {
  552.                   this.slideOut(-1, 0);
  553.                }
  554.             } else if (var93.startsWith("scroll")) {
  555.                String var100 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  556.                if (var100.startsWith("r")) {
  557.                   var100 = String.valueOf((int)(Math.random() * (double)4.0F + (double)1.0F) * 2);
  558.                }
  559.  
  560.                if (var100.equals("2")) {
  561.                   this.scroll(0, 1);
  562.                } else if (var100.equals("4")) {
  563.                   this.scroll(-1, 0);
  564.                } else if (var100.equals("6")) {
  565.                   this.scroll(0, -1);
  566.                } else {
  567.                   this.scroll(1, 0);
  568.                }
  569.             } else if (var93.startsWith("squish")) {
  570.                String var101 = var93.substring(var93.indexOf("(") + 1, var93.lastIndexOf(")"));
  571.                if (var101.startsWith("r")) {
  572.                   var101 = String.valueOf((int)(Math.random() * (double)2.0F + (double)1.0F));
  573.                }
  574.  
  575.                if (var101.equals("2")) {
  576.                   this.squish(0, 1);
  577.                } else {
  578.                   this.squish(0, -1);
  579.                }
  580.             }
  581.          } else {
  582.             int var95 = (this.field_0 - 1 + this.framecount) % this.framecount;
  583.             this.paintBackground(this.bufferG);
  584.             this.bufferG.drawImage(this.frames[var95], this.xpositions[var95], this.ypositions[var95], this);
  585.  
  586.             for(int var102 = 0; var102 < this.transitionsteps[this.field_0]; ++var102) {
  587.                if (this.foreground != null) {
  588.                   this.bufferG.drawImage(this.foreground, 0, 0, this);
  589.                }
  590.  
  591.                this.bufferG.setColor(this.bordercolors[this.field_0]);
  592.                int var103 = Math.min(this.width, this.height) / 2 * (var102 + 1) / this.transitionsteps[this.field_0];
  593.  
  594.                for(int var105 = 0; var105 < var103; ++var105) {
  595.                   this.bufferG.drawRect(var105, var105, this.width - 2 * var105 - 1, this.height - 2 * var105 - 1);
  596.                }
  597.  
  598.                try {
  599.                   Thread.sleep((long)this.transitionrates[this.field_0]);
  600.                } catch (Exception var18) {
  601.                }
  602.  
  603.                ((Component)this).repaint();
  604.             }
  605.  
  606.             for(int var104 = 0; var104 < this.transitionsteps[this.field_0]; ++var104) {
  607.                this.paintBackground(this.bufferG);
  608.                this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  609.                if (this.foreground != null) {
  610.                   this.bufferG.drawImage(this.foreground, 0, 0, this);
  611.                }
  612.  
  613.                this.bufferG.setColor(this.bordercolors[this.field_0]);
  614.                int var106 = Math.min(this.width, this.height) / 2 * (this.transitionsteps[this.field_0] - var104) / this.transitionsteps[this.field_0];
  615.  
  616.                for(int var13 = 0; var13 < var106; ++var13) {
  617.                   this.bufferG.drawRect(var13, var13, this.width - 2 * var13 - 1, this.height - 2 * var13 - 1);
  618.                }
  619.  
  620.                try {
  621.                   Thread.sleep((long)this.transitionrates[this.field_0]);
  622.                } catch (Exception var17) {
  623.                }
  624.  
  625.                ((Component)this).repaint();
  626.             }
  627.  
  628.             this.paintBackground(this.bufferG);
  629.             this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  630.             this.paintForeground(this.bufferG);
  631.  
  632.             try {
  633.                Thread.sleep((long)this.transitionrates[this.field_0]);
  634.             } catch (Exception var16) {
  635.             }
  636.  
  637.             ((Component)this).repaint();
  638.          }
  639.  
  640.          this.paintBackground(this.bufferG);
  641.          this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  642.          this.paintForeground(this.bufferG);
  643.          ((Component)this).repaint();
  644.          if (this.pauses[this.field_0] > 0) {
  645.             try {
  646.                Thread.sleep((long)this.pauses[this.field_0]);
  647.             } catch (Exception var15) {
  648.             }
  649.          } else {
  650.             this.woohoo.suspend();
  651.          }
  652.  
  653.          this.field_0 = (this.field_0 + 1) % this.framecount;
  654.       }
  655.  
  656.    }
  657.  
  658.    public void shrink(double var1, double var3) {
  659.       for(int var5 = 0; var5 < this.transitionsteps[this.field_0]; ++var5) {
  660.          int var6 = (this.field_0 - 1 + this.framecount) % this.framecount;
  661.          int var7 = this.width * (this.transitionsteps[this.field_0] - var5) / this.transitionsteps[this.field_0];
  662.          int var8 = this.height * (this.transitionsteps[this.field_0] - var5) / this.transitionsteps[this.field_0];
  663.          int var9 = (int)((double)this.xpositions[var6] + var1 * (double)(this.width - var7));
  664.          int var10 = (int)((double)this.ypositions[var6] + var3 * (double)(this.height - var8));
  665.          this.paintBackground(this.bufferG);
  666.          this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  667.          this.bufferG.drawImage(this.frames[var6], var9, var10, var7, var8, this);
  668.          this.paintForeground(this.bufferG);
  669.  
  670.          try {
  671.             Thread.sleep((long)this.transitionrates[this.field_0]);
  672.          } catch (Exception var11) {
  673.          }
  674.  
  675.          ((Component)this).repaint();
  676.       }
  677.  
  678.    }
  679.  
  680.    public void expand(double var1, double var3) {
  681.       for(int var5 = 0; var5 < this.transitionsteps[this.field_0]; ++var5) {
  682.          int var6 = (this.field_0 - 1 + this.framecount) % this.framecount;
  683.          int var7 = this.width * (var5 + 1) / this.transitionsteps[this.field_0];
  684.          int var8 = this.height * (var5 + 1) / this.transitionsteps[this.field_0];
  685.          int var9 = (int)((double)this.xpositions[this.field_0] + var1 * (double)(this.width - var7));
  686.          int var10 = (int)((double)this.ypositions[this.field_0] + var3 * (double)(this.height - var8));
  687.          this.paintBackground(this.bufferG);
  688.          this.bufferG.drawImage(this.frames[var6], this.xpositions[var6], this.ypositions[var6], this);
  689.          this.bufferG.drawImage(this.frames[this.field_0], var9, var10, var7, var8, this);
  690.          this.paintForeground(this.bufferG);
  691.  
  692.          try {
  693.             Thread.sleep((long)this.transitionrates[this.field_0]);
  694.          } catch (Exception var11) {
  695.          }
  696.  
  697.          ((Component)this).repaint();
  698.       }
  699.  
  700.    }
  701.  
  702.    public void squish(int var1, int var2) {
  703.       for(int var3 = 0; var3 < this.transitionsteps[this.field_0]; ++var3) {
  704.          int var4 = (this.field_0 - 1 + this.framecount) % this.framecount;
  705.          int var7;
  706.          int var8;
  707.          int var11;
  708.          int var12;
  709.          if (var1 == 0) {
  710.             var7 = var11 = this.width;
  711.             var8 = this.height * (this.transitionsteps[this.field_0] - var3 - 1) / this.transitionsteps[this.field_0];
  712.             var12 = this.height - var8;
  713.          } else {
  714.             var8 = var12 = this.height;
  715.             var7 = this.width * (this.transitionsteps[this.field_0] - var3 - 1) / this.transitionsteps[this.field_0];
  716.             var11 = this.width - var7;
  717.          }
  718.  
  719.          int var9 = var1 == -1 ? this.xpositions[this.field_0] + this.width - var11 : 0;
  720.          int var5 = var1 == 1 ? this.xpositions[var4] + this.width - var7 : 0;
  721.          int var10 = var2 == -1 ? this.ypositions[this.field_0] + this.height - var12 : 0;
  722.          int var6 = var2 == 1 ? this.ypositions[var4] + this.height - var8 : 0;
  723.          this.paintBackground(this.bufferG);
  724.          this.bufferG.drawImage(this.frames[var4], var5, var6, var7, var8, this);
  725.          this.bufferG.drawImage(this.frames[this.field_0], var9, var10, var11, var12, this);
  726.          this.paintForeground(this.bufferG);
  727.  
  728.          try {
  729.             Thread.sleep((long)this.transitionrates[this.field_0]);
  730.          } catch (Exception var13) {
  731.          }
  732.  
  733.          ((Component)this).repaint();
  734.       }
  735.  
  736.    }
  737.  
  738.    public void scroll(int var1, int var2) {
  739.       for(int var3 = 0; var3 < this.transitionsteps[this.field_0]; ++var3) {
  740.          int var4 = (this.field_0 - 1 + this.framecount) % this.framecount;
  741.          int var5 = this.xpositions[this.field_0] + var1 * (this.width * (var3 + 1) / this.transitionsteps[this.field_0] - this.width);
  742.          int var6 = this.ypositions[this.field_0] + var2 * (this.height * (var3 + 1) / this.transitionsteps[this.field_0] - this.height);
  743.          int var7 = this.xpositions[var4] + var1 * this.width * (var3 + 1) / this.transitionsteps[this.field_0];
  744.          int var8 = this.ypositions[var4] + var2 * this.height * (var3 + 1) / this.transitionsteps[this.field_0];
  745.          this.paintBackground(this.bufferG);
  746.          this.bufferG.drawImage(this.frames[var4], var7, var8, this);
  747.          this.bufferG.drawImage(this.frames[this.field_0], var5, var6, this);
  748.          this.paintForeground(this.bufferG);
  749.  
  750.          try {
  751.             Thread.sleep((long)this.transitionrates[this.field_0]);
  752.          } catch (Exception var9) {
  753.          }
  754.  
  755.          ((Component)this).repaint();
  756.       }
  757.  
  758.    }
  759.  
  760.    public void slideIn(int var1, int var2, int var3, int var4) {
  761.       for(int var5 = 0; var5 < this.transitionsteps[this.field_0]; ++var5) {
  762.          int var6 = (this.field_0 - 1 + this.framecount) % this.framecount;
  763.          int var7 = this.xpositions[this.field_0] + var1 + var3 * this.width * (var5 + 1) / this.transitionsteps[this.field_0];
  764.          int var8 = this.ypositions[this.field_0] + var2 + var4 * this.height * (var5 + 1) / this.transitionsteps[this.field_0];
  765.          this.paintBackground(this.bufferG);
  766.          this.bufferG.drawImage(this.frames[var6], this.xpositions[var6], this.ypositions[var6], this);
  767.          this.bufferG.drawImage(this.frames[this.field_0], var7, var8, this);
  768.          this.paintForeground(this.bufferG);
  769.  
  770.          try {
  771.             Thread.sleep((long)this.transitionrates[this.field_0]);
  772.          } catch (Exception var9) {
  773.          }
  774.  
  775.          ((Component)this).repaint();
  776.       }
  777.  
  778.    }
  779.  
  780.    public void slideOut(int var1, int var2) {
  781.       for(int var3 = 0; var3 < this.transitionsteps[this.field_0]; ++var3) {
  782.          int var4 = (this.field_0 - 1 + this.framecount) % this.framecount;
  783.          int var5 = this.xpositions[var4] + var1 * this.width * (var3 + 1) / this.transitionsteps[this.field_0];
  784.          int var6 = this.ypositions[var4] + var2 * this.height * (var3 + 1) / this.transitionsteps[this.field_0];
  785.          this.paintBackground(this.bufferG);
  786.          this.bufferG.drawImage(this.frames[this.field_0], this.xpositions[this.field_0], this.ypositions[this.field_0], this);
  787.          this.bufferG.drawImage(this.frames[var4], var5, var6, this);
  788.          this.paintForeground(this.bufferG);
  789.  
  790.          try {
  791.             Thread.sleep((long)this.transitionrates[this.field_0]);
  792.          } catch (Exception var7) {
  793.          }
  794.  
  795.          ((Component)this).repaint();
  796.       }
  797.  
  798.    }
  799.  
  800.    public void paintBackground(Graphics var1) {
  801.       var1.setColor(this.bgcolors[this.field_0]);
  802.       var1.fillRect(0, 0, this.width, this.height);
  803.       if (this.background != null) {
  804.          if (!this.field_1.checkID(-3)) {
  805.             try {
  806.                this.field_1.waitForID(-3);
  807.             } catch (InterruptedException var2) {
  808.             }
  809.          }
  810.  
  811.          var1.drawImage(this.background, 0, 0, this);
  812.       }
  813.  
  814.    }
  815.  
  816.    public void paintForeground(Graphics var1) {
  817.       if (this.foreground != null) {
  818.          if (!this.field_1.checkID(-2)) {
  819.             try {
  820.                this.field_1.waitForID(-2);
  821.             } catch (InterruptedException var3) {
  822.             }
  823.          }
  824.  
  825.          var1.drawImage(this.foreground, 0, 0, this);
  826.       }
  827.  
  828.       var1.setColor(this.bordercolors[this.field_0]);
  829.  
  830.       for(int var2 = 0; var2 < this.bordersizes[this.field_0]; ++var2) {
  831.          var1.drawRect(var2, var2, this.width - 2 * var2 - 1, this.height - 2 * var2 - 1);
  832.       }
  833.  
  834.    }
  835.  
  836.    public void setArrays() {
  837.       this.bgcolors = new Color[this.framecount];
  838.       this.bordercolors = new Color[this.framecount];
  839.       this.bordersizes = new int[this.framecount];
  840.       this.frames = new Image[this.framecount];
  841.       this.pauses = new int[this.framecount];
  842.       this.soundactivations = new String[this.framecount];
  843.       this.sounds = new AudioClip[this.framecount];
  844.       this.targets = new String[this.framecount];
  845.       this.transitions = new String[this.framecount];
  846.       this.transitionrates = new int[this.framecount];
  847.       this.transitionsteps = new int[this.framecount];
  848.       this.urls = new URL[this.framecount];
  849.       this.xpositions = new int[this.framecount];
  850.       this.ypositions = new int[this.framecount];
  851.    }
  852.  
  853.    public String extractParam(String var1) {
  854.       var1 = "*" + var1 + "=";
  855.       return this.onetag.indexOf(var1) != -1 ? this.onetag.substring(this.onetag.indexOf(var1) + var1.length(), this.onetag.indexOf("*", this.onetag.indexOf(var1) + 1)) : null;
  856.    }
  857.  
  858.    public String prePipe(String var1) {
  859.       return var1.substring(0, var1.indexOf("|")).trim();
  860.    }
  861.  
  862.    public String postPipe(String var1) {
  863.       return var1.substring(var1.indexOf("|") + 1).trim();
  864.    }
  865.  
  866.    public String preComma(String var1) {
  867.       return var1.substring(0, var1.indexOf(",")).trim();
  868.    }
  869.  
  870.    public String postComma(String var1) {
  871.       return var1.substring(var1.indexOf(",") + 1).trim();
  872.    }
  873.  
  874.    public void paint(Graphics var1) {
  875.       var1.drawImage(this.bufferI, 0, 0, this);
  876.    }
  877.  
  878.    public int rValue(String var1) {
  879.       return Integer.parseInt(var1.substring(0, var1.indexOf(",")));
  880.    }
  881.  
  882.    public int gValue(String var1) {
  883.       return Integer.parseInt(var1.substring(var1.indexOf(",") + 1, var1.lastIndexOf(",")));
  884.    }
  885.  
  886.    public int bValue(String var1) {
  887.       return Integer.parseInt(var1.substring(var1.lastIndexOf(",") + 1));
  888.    }
  889.  
  890.    public void update(Graphics var1) {
  891.       this.paint(var1);
  892.    }
  893.  
  894.    public void start() {
  895.       if (this.woohoo == null) {
  896.          this.woohoo = new Thread(this);
  897.          this.woohoo.start();
  898.       }
  899.  
  900.    }
  901.  
  902.    public void stop() {
  903.       this.woohoo.stop();
  904.       this.woohoo = null;
  905.    }
  906.  
  907.    public boolean mouseEnter(Event var1, int var2, int var3) {
  908.       if (this.pauses[this.field_0] == -2) {
  909.          this.woohoo.resume();
  910.       }
  911.  
  912.       if (this.urls[this.field_0] != null) {
  913.          ((Applet)this).showStatus("LINK TO: " + this.urls[this.field_0].toString());
  914.       }
  915.  
  916.       if (this.soundactivations[this.field_0].equals("enter") && this.sounds[this.field_0] != null) {
  917.          this.sounds[this.field_0].play();
  918.       }
  919.  
  920.       return true;
  921.    }
  922.  
  923.    public boolean mouseExit(Event var1, int var2, int var3) {
  924.       return true;
  925.    }
  926.  
  927.    public boolean mouseDown(Event var1, int var2, int var3) {
  928.       if (this.pauses[this.field_0] == -1) {
  929.          this.woohoo.resume();
  930.       }
  931.  
  932.       try {
  933.          if (this.targets[this.field_0] == null) {
  934.             ((Applet)this).getAppletContext().showDocument(this.urls[this.field_0]);
  935.          } else {
  936.             ((Applet)this).getAppletContext().showDocument(this.urls[this.field_0], this.targets[this.field_0]);
  937.          }
  938.       } catch (Exception var4) {
  939.       }
  940.  
  941.       if (this.soundactivations[this.field_0].equals("click") && this.sounds[this.field_0] != null) {
  942.          this.sounds[this.field_0].play();
  943.       }
  944.  
  945.       return true;
  946.    }
  947. }
  948.