// Copyright Andy Deck 2002, GNU Public License 2
// With the notable provision that any commercial use
// must be approved by the copyright holder.
import java.awt.*;
import java.awt.*;
import java.awt.image.PixelGrabber;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Random;

public class advent extends Module
    implements Runnable
{

    public advent()
    {
    }

    public void init(lexicon lexicon1, String s)
    {
        super.lex = lexicon1;
        if(!Data.ERROR)
            start();
    }

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

    public void stop()
    {
        t = null;
    }

    public void start()
    {
        t = new Thread(this, "advent");
        t.setPriority(3);
        t.start();
    }

    public void run()
    {
        int ai[] = new int[1024];
        Image image = null;
        int i = (new Random()).nextInt() % 182 + 1184;
        try
        {
            image = Toolkit.getDefaultToolkit().getImage(new URL("http://" + Data.host + "/shows/macadvent/gif_icons/" + i + ".gif"));
        }
        catch(MalformedURLException malformedurlexception) { }
        MediaTracker mediatracker = new MediaTracker(super.lex);
        mediatracker.addImage(image, 0);
        try
        {
            if(!mediatracker.waitForAll(20000L))
            {
                super.lex.repaint();
                return;
            }
            PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, 32, 32, ai, 0, 32);
            pixelgrabber.grabPixels();
        }
        catch(Exception exception)
        {
            System.out.println(exception);
        }
        super.first = false;
        i = 0;
        Graphics g = super.lex.img.getGraphics();
        if(g != null)
        {
            setRenderMode(g);
            int j = Module.WIDTH >> 5;
            int k = j - 1;
            int l = j - 3;
            int i1 = j - 7;
            for(int j1 = 0; j1 < Module.HEIGHT && !super.abort; j1 += j)
            {
                for(int k1 = 0; k1 < Module.WIDTH && !super.abort; k1 += j)
                    if(ai[i++] == -1)
                    {
                        g.drawRect(k1, j1, k, k);
                        g.drawOval(k1, j1, k, k);
                        g.drawRect(k1 + 1, j1 + 1, l, l);
                        g.drawOval(k1 + 1, j1 + 1, l, l);
                        g.drawOval(k1 + 3, j1 + 3, i1, i1);
                    } else
                    {
                        g.setColor(Color.white);
                        g.fillRect(k1, j1, j, j);
                        g.setColor(Color.black);
                    }

                repaint(0, j1, Module.WIDTH, j);
                try
                {
                    advent _tmp = this;
                    Thread.sleep(10L);
                }
                catch(InterruptedException interruptedexception) { }
            }

            g.dispose();
        }
    }

    public void paint(Graphics g)
    {
        g.drawImage(super.lex.img, 0, 0, super.lex);
        if(super.first && !Data.ERROR)
            Wait.hourGlass(g);
    }

    private volatile Thread t;
}
