    /*
     * ====================================================================
     *
     * 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.text.DateFormat;
    import java.util.*;

    public class JspCalendar {
        Calendar  calendar = null;
        Date currentDate;

        public JspCalendar() {
    	calendar = Calendar.getInstance();
    	Date trialTime = new Date();
    	calendar.setTime(trialTime);
        }

        public int getYear() {
    	return calendar.get(Calendar.YEAR);
        }

        public String getMonth() {
    	int m = getMonthInt();
    	String[] months = new String [] { "January", "February", "March",
    					"April", "May", "June",
    					"July", "August", "September",
    					"October", "November", "December" };
    	if (m > 12)
    	    return "Unknown to Man";

    	return months[m - 1];

        }

        public String getDay() {
    	int x = getDayOfWeek();
    	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",
    				      "Thursday", "Friday", "Saturday"};

    	if (x > 7)
    	    return "Unknown to Man";

    	return days[x - 1];

        }

        public int getMonthInt() {
    	return 1 + calendar.get(Calendar.MONTH);
        }

        public String getDate() {
    	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();
        }

        public String getCurrentDate() {
            Date dt = new Date ();
    	calendar.setTime (dt);
    	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

        }

        public String getNextDate() {
            calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);
    	return getDate ();
        }

        public String getPrevDate() {
            calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);
    	return getDate ();
        }

        public String getTime() {
    	return getHour() + ":" + getMinute() + ":" + getSecond();
        }

        public int getDayOfMonth() {
    	return calendar.get(Calendar.DAY_OF_MONTH);
        }

        public int getDayOfYear() {
    	return calendar.get(Calendar.DAY_OF_YEAR);
        }

        public int getWeekOfYear() {
    	return calendar.get(Calendar.WEEK_OF_YEAR);
        }

        public int getWeekOfMonth() {
    	return calendar.get(Calendar.WEEK_OF_MONTH);
        }

        public int getDayOfWeek() {
    	return calendar.get(Calendar.DAY_OF_WEEK);
        }

        public int getHour() {
    	return calendar.get(Calendar.HOUR_OF_DAY);
        }

        public int getMinute() {
    	return calendar.get(Calendar.MINUTE);
        }

        public int getSecond() {
    	return calendar.get(Calendar.SECOND);
        }

        public int getEra() {
    	return calendar.get(Calendar.ERA);
        }

        public String getUSTimeZone() {
    	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",
    				       "Mountain", "Central", "Eastern"};

    	return zones[10 + getZoneOffset()];
        }

        public int getZoneOffset() {
    	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);
        }

        public int getDSTOffset() {
    	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);
        }

        public int getAMPM() {
    	return calendar.get(Calendar.AM_PM);
        }
    }