    /*
     * ====================================================================
     *
     * The Apache Software License, Version 1.1
     *
     * Copyright (c) 1999 The Apache Software Foundation.  All rights
     * reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in
     *    the documentation and/or other materials provided with the
     *    distribution.
     *
     * 3. The end-user documentation included with the redistribution, if
     *    any, must include the following acknowlegement:
     *       "This product includes software developed by the
     *        Apache Software Foundation (http://www.apache.org/)."
     *    Alternately, this acknowlegement may appear in the software itself,
     *    if and wherever such third-party acknowlegements normally appear.
     *
     * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
     *    Foundation" must not be used to endorse or promote products derived
     *    from this software without prior written permission. For written
     *    permission, please contact apache@apache.org.
     *
     * 5. Products derived from this software may not be called "Apache"
     *    nor may "Apache" appear in their names without prior written
     *    permission of the Apache Group.
     *
     * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
     * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
     * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
     * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     * SUCH DAMAGE.
     * ====================================================================
     *
     * This software consists of voluntary contributions made by many
     * individuals on behalf of the Apache Software Foundation.  For more
     * information on the Apache Software Foundation, please see
     * <http://www.apache.org/>.
     *
     * [Additional notices, if required by prior licensing conditions]
     *
     */
    package cal;

    import java.beans.*;
    import javax.servlet.http.*;
    import javax.servlet.*;
    import java.util.Hashtable;

    public class TableBean {

      Hashtable table;
      JspCalendar JspCal;
      Entries entries;
      String date;
      String name = null;
      String email = null;
      boolean processError = false;

      public TableBean () {
        this.table = new Hashtable (10);
        this.JspCal = new JspCalendar ();
        this.date = JspCal.getCurrentDate ();
      }

      public void setName (String nm) {
        this.name = nm;
      }

      public String getName () {
        return this.name;
      }

      public void setEmail (String mail) {
        this.email = mail;
      }

      public String getEmail () {
        return this.email;
      }

      public String getDate () {
        return this.date;
      }

      public Entries getEntries () {
        return this.entries;
      }

      public void processRequest (HttpServletRequest request) {

        // Get the name and e-mail.
        this.processError = false;
        if (name == null || name.equals("")) setName(request.getParameter ("name"));
        if (email == null || email.equals("")) setEmail(request.getParameter ("email"));
        if (name == null || email == null ||
    		name.equals("") || email.equals("")) {
          this.processError = true;
          return;
        }

        // Get the date.
        String dateR = request.getParameter ("date");
        if (dateR == null) date = JspCal.getCurrentDate ();
        else if (dateR.equalsIgnoreCase("next")) date = JspCal.getNextDate ();
        else if (dateR.equalsIgnoreCase("prev")) date = JspCal.getPrevDate ();

        entries = (Entries) table.get (date);
        if (entries == null) {
          entries = new Entries ();
          table.put (date, entries);
        }

        // If time is provided add the event.
    	String time = request.getParameter("time");
        if (time != null) entries.processRequest (request, time);
      }

      public boolean getProcessError () {
        return this.processError;
      }
    }