import java.awt.*;
import java.applet.*;
import java.net.*;
import java.util.*;

public class ImageButton3 extends Applet
{
 String target, mail = new String(), button;
 int index;
 Color bgcolor;
 Image image1, image2, img;
 Im im;
 MediaTracker tracker;
 int i_x, i_y, i_w, i_h; 
 int[] ints;

 public void init()
 {
  img = getImage(getDocumentBase(), getParameter("imagename"));

  tracker = new MediaTracker(this);
  tracker.addImage(img, 2);

  
  ints = parseInt(getParameter("bgcolor"), ",");
  bgcolor = new Color(ints[0], ints[1], ints[2]);

  setBackground(bgcolor);

     
 }

int[] parseInt(String s, String sep) 
    {
	StringTokenizer st = new StringTokenizer(s, sep);
        int[] result = new int[st.countTokens()];

	for (int i=0; i<result.length; i++) {
            result[i] = Integer.parseInt(st.nextToken());
	}
        return result;
    }

public void paint(Graphics g) 
 {
  for (index = 0; (button = getParameter("button" + index)) != null; index++)
  {
  StringTokenizer st = new StringTokenizer(button, ",");
  i_x = Integer.parseInt(st.nextToken());
  i_y = Integer.parseInt(st.nextToken());
  i_w = Integer.parseInt(st.nextToken());
  i_h = Integer.parseInt(st.nextToken());

  image1 = getImage(getDocumentBase(), getParameter("image" + index + 0));
  image2 = getImage(getDocumentBase(), getParameter("image" + index + 1));
  mail = getParameter("url" + index); // button_url
  target = getParameter("url_target");
  
  tracker.addImage(image1, 0);
  tracker.addImage(image2, 1);

  im = new Im(image1, image2, mail, getAppletContext(), target);
  add (im);
  im.reshape(i_x, i_y, i_w, i_h);
  setLayout(new BorderLayout());

  try { tracker.waitForID(0); tracker.waitForID(1); tracker.waitForID(2); }
  catch (InterruptedException e) {}
  
    
  }
  g.drawImage(img, 0, 0, this);
 }


}

class Im extends Canvas
{
 Image image1, image2;
 String mail, target;
 int index;
 AppletContext ac;
 
 public Im(Image image10, Image image11, String mail1, AppletContext browser, 
           String target1)
 {
  image1 = image10;
  image2 = image11;
  mail = mail1;
  ac = browser;
  target = target1;
      
 }
 public void paint(Graphics g)
 {
  g.drawImage(image1, 0, 0, this);

 }

 public boolean mouseMove (Event evt, int x, int y)
  {  
     Graphics g = getGraphics();
     
     g.drawImage(image2, 0, 0, this);
     return true;
   }  
 public boolean mouseExit (Event evt, int x, int y)
  { 
   Graphics g = getGraphics();
   g.drawImage(image1, 0, 0, this);   
   return true;  
  }

public boolean mouseDown (Event evt, int x, int y)
  {
      try {
	URL url = new URL(mail);
	ac.showDocument(url, target);
	  }
	catch (MalformedURLException e) {}
  return true;
 }
}






