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

public class SIPBOffice extends Applet implements Runnable {
  Image office;
  Vector machines = new Vector();

  public void init(){
    String t;
    Machine m;
    String ps = getParameter("machines");
    try {
      office = getImage(new URL(getDocumentBase(), getParameter("office")));
    } catch (Exception e) { }
    StringTokenizer st = new StringTokenizer(ps, " ");
    while(st.hasMoreTokens()){
      t = st.nextToken();
      StringTokenizer st2 = new StringTokenizer(t, "/");
      String n = st2.nextToken();
      int x = Integer.parseInt(st2.nextToken());
      int y = Integer.parseInt(st2.nextToken());
      machines.addElement(m = new Machine(n, x, y, this));
      (new Thread(m)).start();
    }
  }
  public void start(){
  }
  public void run(){
  }
  public void stop(){
  }
  public void paint(Graphics g){
    g.drawImage(office, 0, 0, this);
    for(int i=0;i<machines.size();i++){
      ((Machine) machines.elementAt(i)).draw(g);
    }
  }
}

class Machine implements Runnable {
  String name;
  Finger fing;
  String user=null;
  int idle;
  int x, y;
  SIPBOffice so;

  Machine(String n, int xc, int yc, SIPBOffice so){
    name =n;
    x = xc;
    y=yc;
    fing = new Finger("@"+name);
    this.so = so;
  }

  public void run() {
    (new Thread(fing)).start();
    while(!fing.done){
       try {Thread.sleep(500); } catch (Exception e) {}
    }
    user = fing.loggedin;
    idle = fing.idletime;
    so.repaint();
  }

  public void draw(Graphics g){
    String s;
    if(fing.done){
      if(idle >=0  && idle < 100000){
	s = new String(user+" ("+idle+")");
      }
      else{
	s = new String("unused");
      }
      g.drawString(s, x, y);
    }
  }
}

