import java.applet.*;
import java.awt.*;
import java.net.*;
import java.util.*;

public class Images extends Applet implements Runnable 
{
 int image_num, index, sleep, i;                
 Image[] image;                
 MediaTracker tracker;         
 Thread th;
 String imagename;
 boolean b = false; 

public void init()
{
 imagename = getParameter("imagename");
 image_num = Integer.parseInt(getParameter("image_num"));
 sleep = Integer.parseInt(getParameter("sleep"));
  
 tracker = new MediaTracker(this);

 image = new Image[image_num];

 for(i = 0; i < image_num; i++) 
 {
  image[i] = getImage(getDocumentBase(), imagename+i+getParameter("image"));
  tracker.addImage(image[i], i); 
 }
}
  
public void paint(Graphics g)
{
 g.drawImage(image[index], 0, 0, this);
}

public void update(Graphics g) { paint(g); }

public void start()
 {
  if (th == null) {
  th = new Thread(this);
  th.start(); }
 }

public void stop()
{
 th = null;
}

public void run() 
{
 Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
 int image_nums = image_num -1;

 for (i = 0; i < image_num; i++)
 {
  showStatus("Loading images: " + i + "/" + image_nums);
  try { tracker.waitForID(i); } catch (InterruptedException e) {}
 }
  showStatus("Loading images: done.");  

  while(true) 
   {
    Number();
    repaint();
    try { Thread.sleep(sleep); } catch (InterruptedException e) {}
   }
}

public int Number()
{
 if (!b)
 {
  index++;
  if (index >= image.length) b = true;
 }

 else { index--;
 if (index == 0) b = false; 
      }
 return index;
}
}
