
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Program2 extends Applet implements ActionListener, Runnable {

private myTimer mt1, mt2;
private Button b;
int visits = 0;
int flag = 0;
private Thread t = new Thread();

public void init() {
	mt1 = new myTimer();
	mt2 = new myTimer();
	t = null;
	mt2.myStart();
	b = new Button("Show tenths of a second");
	add(b);
	b.addActionListener(this);
	t = new Thread(this, "t");	
	t.start();
   
}

public void start() {
	visits++;
	//if(!mt1.IsAlive())
		mt1.myStart();
}

public void stop(){
	mt1.myStop();
}

public void run(){
	while(true)
	{	
		repaint();
		try{
			Thread.sleep(100);
			} catch (InterruptedException e){}
	}
}

public void paint(Graphics g){
	
	if (flag == 0)
	{
		g.drawString("Time spent at this page : " + 
			twoDigits(String.valueOf(mt1.getHour())) + ":" +
			twoDigits(String.valueOf(mt1.getMinute())) + ":" +
			twoDigits(String.valueOf(mt1.getSecond())), 50, 100);
		g.drawString("Number of Visits to this page : " + visits, 50, 200);
		g.drawString("Time since page was loaded : " + 
			twoDigits(String.valueOf(mt2.getHour())) + ":" +
			twoDigits(String.valueOf(mt2.getMinute())) + ":" +
			twoDigits(String.valueOf(mt2.getSecond())), 50, 300);

	}
	else
	{
		g.drawString("Time spent at this page : " + 
			twoDigits(String.valueOf(mt1.getHour())) + ":" +
			twoDigits(String.valueOf(mt1.getMinute())) + ":" +
			twoDigits(String.valueOf(mt1.getSecond())) + ":" +
			String.valueOf(mt1.getMsecond()), 50, 100);
		g.drawString("Number of Visits to this page : " + visits, 50, 200);
		g.drawString("Time since page was loaded : " + 
			twoDigits(String.valueOf(mt2.getHour())) + ":" +
			twoDigits(String.valueOf(mt2.getMinute())) + ":" +
			twoDigits(String.valueOf(mt2.getSecond())) + ":" +
			String.valueOf(mt2.getMsecond()), 50, 300);
	}
}


public void actionPerformed (ActionEvent e){
	if (flag == 0)
	{
		b.setLabel("Show seconds");
		flag = 1;
	}
	else
	{
		b.setLabel("Show tenths of a second");
		flag = 0;
	}

}



private String twoDigits(String s) {
    if (s.length() == 1) return "0" + s;
    else return s; 
  } 


}

// ******************************************
// ******************************************


class myTimer extends Thread implements Runnable{

private int hh, mm, ss, ms =0;
private Thread t;

public void run() {
  Thread current = Thread.currentThread();
    while ( t==current ) {
      try {
        t.sleep(100); }
      catch (InterruptedException e) { }
      ms ++;
	if ( ms == 10 )
	  {
		ms = 0;
	  	ss++;
	  }	
      if (ss == 60) 
        {
		ss = 0;
      	mm++;
	  }	
      if (mm == 60) 
	  {
          mm = 0;
          hh++;
	  }
	}  //end of while loop
  }  //end of run()
public boolean IsAlive(){
	boolean alive;
	alive = t.isAlive();
	return alive;
}
public int getHour(){
	return hh;
}
public int getMinute(){
	return mm;
}
public int getSecond(){
	return ss;
}
public int getMsecond(){
	return ms;
}

public void myStart(){
	t = new Thread(this);
	t.start();
}
public void myStop(){
	t = null;
}


}  //end of class
