import java.util.*;
import org.htmlparser.*;
import org.htmlparser.tags.*;
import org.htmlparser.util.*;
import org.htmlparser.filters.*;

public class ImageSearcher extends Thread
{
  String searchTerm;
  String href, leftOrRight;
  boolean warning = false;
  TagNameFilter imgfilter;
  HasAttributeFilter altfilter;
  StoryPeek theApplet;
  
  ImageSearcher(StoryPeek papp, String sFROMKanji, String lr)
  {
    theApplet = papp;
    searchTerm = sFROMKanji;
    this.start();
    imgfilter = new TagNameFilter("IMG");
    altfilter = new HasAttributeFilter("ALT", sFROMKanji);
    leftOrRight = lr;
  }
  
  public void start()
  {
    super.start();
  }
  
  public void run()
  {   
        parseURL(searchTerm);    
  }
  
  public void parseURL(String s)
  {
      Parser parser;
      NodeList allnodes;

        href = "http://images.google.com/images?q="+URLUTF8Encoder.encode(s);
      
      System.out.println("searching "+href);
      
      try
      {
        DefaultParserFeedback feedback = new DefaultParserFeedback()
        {
          public void warning(String message) {
            System.out.println("=====> GOT WARNING: "+message);
            warning = true;
          }
        };

        parser = new Parser(href,feedback);
        if (warning) { System.out.println("WARNING!"); return;  }
        allnodes = parser.parse(null);
      }
      catch (ParserException e)
      {
        return;
      }
      catch (NullPointerException e)
      {
        System.out.println("Null pointer exception encountered during parse.");
        return;
      }
      catch (Exception e)
      {
        return;
      }
      
      
        NodeList imgnodes = allnodes.extractAllNodesThatMatch(imgfilter, true);
        
//        if (leftOrRight.equals("left"))
//        {
//          imgnodes = imgnodes.extractAllNodesThatMatch(altfilter, true);
//        }
        
        ArrayList nodesToRemove = new ArrayList();
       
        
        parseImages(imgnodes);
        
  }
      

      
  public void parseImages(NodeList imgnodes)
  {
    System.out.println("### NUM IMAGES: "+imgnodes.size());
    int tv=0;
    for (SimpleNodeIterator i = imgnodes.elements(); i.hasMoreNodes()&&tv<2;)
    {
        ImageTag imgtag = (ImageTag) i.nextNode();
        imgtag = (ImageTag) i.nextNode();
    //  String altatt = imgtag.getAttribute("ALT");
    //  System.out.println("==> SEARCHING IN ALT: "+altatt);

      String imgurl = imgtag.getImageURL();

        System.out.println("adding to the right: "+imgurl);
        theApplet.imgdrawerRight.addImage(imgurl);
      tv++;
    }
    
   
    
    
  }
}
