import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class jiggleText extends Applet implements Runnable,MouseListener {

 char separated[];
 String s=null;
 final String PARAM_string="string";
 private Color messageColor;

 Thread jiggleThread=null;

 int x_coord=0;
 int y_coord=0;
 String num;
 int speed=35;
 int counter=0;

 boolean threadSuspended=false;

public void init()
{
  s=getParameter(PARAM_string);
  separated=new char[s.length()];
  s.getChars(0,s.length(),separated,0);
  resize(200,200);
  setFont(new Font("TimeRoman",Font.BOLD,36));

  this.addMouseListener(this);
}

public void start() {
 if (jiggleThread==null)
   jiggleThread=new Thread(this);

   jiggleThread.start();
}

public void stop()
{
  jiggleThread.suspend();
}

public void run() {
  while (jiggleThread !=null) {
   try{
	 Thread.sleep(300);
	 } catch(InterruptedException e) {}

   repaint();
  }
}

public void paint(Graphics g) {
  int red,green,blue;

  // New color
  red = (int ) (Math.random()*256);
  green = (int ) (Math.random()*256);
  blue = (int) (Math.random()*256); 
  messageColor = new Color(red,blue,green);
  g.setColor(messageColor);

  for (int i=0;i<s.length();i++)
  {
     x_coord=(int)(Math.random()*10+15*i);
     y_coord=(int)(Math.random()*10+36);
     g.drawChars(separated,i,1,x_coord,y_coord);
  }
}

public void mouseClicked(MouseEvent e) 
{
  if (threadSuspended) 
    jiggleThread.resume();
  else 
    jiggleThread.suspend();

  threadSuspended=!threadSuspended; 
}
public void mouseEntered(MouseEvent e) {} 
public void mouseExited(MouseEvent e) {} 
public void mousePressed(MouseEvent e) {} 
public void mouseReleased(MouseEvent e) {} 

}
