import java.awt.*;
import java.net.*;
import java.applet.*;
import java.io.*;

public class OverlaySlide extends Applet implements Runnable {
	int xw = 0;
	Image logo, logo1, logo2;
	MediaTracker t;
	boolean s=true;
	int wid, speed, h, w;
	String p, overlay, img;

	public void init() {
		p = getParameter("wid");
		if(p == null) {
			wid=0;
		}
		else{
			wid = Integer.parseInt(p);
		}

		p = getParameter("speed");
		if(p == null) {
			speed=15;
		}
		else{
			speed = Integer.parseInt(p);
		}
		overlay = getParameter("overlay");
		if(overlay == null) { stop(); return; }
		img = getParameter("img");
		if(img == null) { stop(); return; }
			
		h = Integer.parseInt(getParameter("height"));
		w = Integer.parseInt(getParameter("width"));
		t = new MediaTracker(this);
		try {
			logo1 = getImage(new URL(getDocumentBase(), overlay));
			logo2 = getImage(new URL(getDocumentBase(), img));
		} catch (MalformedURLException e){ 
		}
		t.addImage(logo1, 1);
		t.addImage(logo2, 1);
		logo = logo2;
	}

	public void update(Graphics g){
		paint(g);
	}

	public void paint(Graphics g){
		if((t.statusID(1, false) & MediaTracker.COMPLETE) == 0){
			g.drawString("Loading Image...", 10,25);
			return;
		}
		if(s){
			g.drawImage(logo2, 0,0, w, h,this);
			s=false;
		}
		if(wid >0){
			g.clipRect(xw-25,0,25+wid, h);
			g.drawImage(logo2, 0,0, w,h,this);
			g.clipRect(xw,0,50+wid, 1000);
			g.drawImage(logo1, 0, 0, w,h,this);
		}
		else{
			g.clipRect(0,0,xw, h);
			g.drawImage(logo1, 0,0, w,h,this);
		}
	}
	public void start() {
		(new Thread(this)).start();
	}
	public void run() {

		try {
			t.waitForID(1);
		} catch (InterruptedException e) { }

		while(true){
			xw+=5;
			if(xw > w+50){
				xw=0;
				s=true;
			}
			repaint();
			try {
				Thread.currentThread().sleep((int) (1000/speed));
			} catch (InterruptedException e) { }
		}
	}

	public boolean handleEvent(Event evt){
		s=true;
		return super.handleEvent(evt);
	}
}

