package e4s.tutorial;

import e4s.html.*;
import e4s.servlet.*;
import e4s.util.E4Images;


/**
 * A very important chapter. The A-tag is fundamental in changing any content on the
 * user's clicks. It can be an outside branch (new A("http://www.yahoo.com"), or it
 * can involve a E4JavaScript that is provided by the servlet and declared as an
 * E4EventHandlerA or - in many cases - links direct back to your Java code with
 * the quite simple mechanism of the E4Method classes. A E4Method
 * is a declared variable, no value will be assigned. E4S analyzes your class on startup
 * and will automatically find the associated Java function, declared by the same
 * name within the same module. This is very fundamental to E4S programming, you might
 * like it or not, but on the end of the day your project development will be very much
 * faster relying on that simple mechanism because there is no overheady, the code can
 * be readden very easily and everything is on one place.
 *
 * {@tutorial Example_A}
 */
public class Example_A extends E4ModuleImplementation
{
   public static E4Method start = null;
   public static E4Method functionOne = null;
   public static E4Method functionTwo = null;
   
   
   public void start( HTML html )
   {
      A one_no_params = html.A(functionOne);
      one_no_params.print("Call functionOne, pass no parameters");
      html.BR();

      A one_with_params = html.A(functionOne);
      one_with_params.print("Call functionOne, pass some parameters");
      one_with_params.addParameter("TEMPERATURE",20);
      one_with_params.addParameter("WIND","South-East");
      html.BR();

      html.A(functionTwo).print("Call functionTwo, pass no parameters");
      html.BR();

      html.A("Are you sure?",functionTwo).print("Call functionTwo, ask before calling");
      html.BR();

      A two_ask_with_parameters = html.A("Are you sure?",functionTwo);
      two_ask_with_parameters.print("Call functionTwo, ask before calling");
      two_ask_with_parameters.addParameter("TEMPERATURE",13);
      two_ask_with_parameters.addParameter("WIND","North-East");
      html.BR();

      IMG iX = html.A(functionOne).IMG("images/tutorial/Example_A/butterfly01.jpg");
      iX.setAlternate("Call functionOne, no parameters, no question");
       
      A image_two_ask_with_parameters = html.A("Are you sure?",functionTwo);
      IMG iY = image_two_ask_with_parameters.IMG("images/tutorial/Example_A/butterfly02.jpg");
      iY.setAlternate("Call functionTwo, ask before calling");
      image_two_ask_with_parameters.addParameter("TEMPERATURE",17);
      image_two_ask_with_parameters.addParameter("WIND","South");
      html.P();
      
      A google = html.A("http://www.google.com");
      google.print("Google in a new window");
      google.openInNewWindow();
      html.BR();

      A ebay = html.A("http://www.ebay.com");
      ebay.print("EBay in a new window");
      ebay.openInNewWindow();
      html.BR();
   }
   
   
   public void functionOne( HTML html, E4CgiParams params )
   {
      html.FONT(FONT.ARIAL_larger).B().println("This is function One");
      html.P();
      
      params.toTable(html.TABLE( TABLE.E4S_DEFAULT_TABLE() ));
      html.P();

      html.A(start).I().print("[back]");
   }      
   
   public void functionTwo( HTML html, E4CgiParams params )
   {
      html.FONT(FONT.ARIAL_larger).B().println("This is function Two");
      html.P();
      
      params.toTable(html.TABLE( TABLE.E4S_DEFAULT_TABLE() ));
      html.P();
   
      html.A(start).I().print("[back]");
   }      
   
   
      
      
}