// Original written by Réal Gagnon ©1998-2000
// Slightly modified by Philip Banks 2000 and 2008.
import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.*;

public class VersionLoader extends Applet implements Runnable, AppletStub {
   String appletToLoad;
   Thread appletThread;
   String processed_vstring;
   String vstring;
   float version;

   public void init() {
		Float temp;

		setBackground(Color.white);

		//Get the version string, only interested in major and
		//first minor version numbers.
		vstring = System.getProperty("java.version");

		if (vstring.indexOf(".") != -1) {
			processed_vstring = vstring.substring(0,vstring.indexOf("."));
			vstring = vstring.substring(vstring.indexOf(".")+1);
			if (vstring.indexOf(".") != -1) {
				processed_vstring += "." + vstring.substring(0,vstring.indexOf("."));
			} else {
				processed_vstring += "." + vstring;
			}
		} else {
			processed_vstring = vstring;
		}

                String number_filtered_string;
                int i;
                number_filtered_string = "";
                for (i = 0; i < processed_vstring.length(); i++) {
                   switch (processed_vstring.charAt(i)) {
                   case '0' : number_filtered_string += "0";
                      break;
                   case '1' : number_filtered_string += "1";
                      break;
                   case '2' : number_filtered_string += "2";
                      break;
                   case '3' : number_filtered_string += "3";
                      break;
                   case '4' : number_filtered_string += "4";
                      break;
                   case '5' : number_filtered_string += "5";
                      break;
                   case '6' : number_filtered_string += "6";
                      break;
                   case '7' : number_filtered_string += "7";
                      break;
                   case '8' : number_filtered_string += "8";
                      break;
                   case '9' : number_filtered_string += "9";
                      break;
                   case '.' : number_filtered_string += ".";
                      break;
                   }
                }

                processed_vstring = number_filtered_string;

		try {
			// Convert the version string to a number and check it.

			temp = Float.valueOf(processed_vstring);
			version = temp.floatValue();
			if (version < 1.1) {
				appletToLoad = "SafeTag";
			} else {
				appletToLoad = "WebTag";
			}
		} catch (NumberFormatException e) {
			// If the conversion failed, assumed safe defaults.
			appletToLoad = "SafeTag";
		}
   }

   public void paint(Graphics g) {
     g.drawString("Loading for Java version " + processed_vstring, 30, 30);
     } 

   public void run() {
     try {
       Class appletClass = Class.forName(appletToLoad);
       Applet realApplet = (Applet)appletClass.newInstance();
       realApplet.setStub(this);
       setLayout( new GridLayout(1,0));
       add(realApplet);
       realApplet.init();
       realApplet.start();
       }
     catch (Exception e) {
       System.out.println( e );
       }
     validate();
     }

   public void start(){
     appletThread = new Thread(this);
     appletThread.start();
     }

   public void stop() {
     appletThread.stop();
     appletThread = null;
     }

   public void appletResize( int width, int height ){
     resize( width, height );
     }
 }


