/**This Original Java Code is written by me
*You have to enter the month first and then the year later in the format mm/yyyy
*this Calendar works from 1900-2038
*.This program has some bugs.
* I will remove in my later versions.
* <applet code=Car.class width=640 height=550>
* </applet>
* You can modify this code and distribute among your friends
* Original Programmed by : A. LEVI.
* My e-mail address is levi57@hotmail.com * -still unemployed- */
import java.awt.*;
import java.util.*;
import java.applet.*;
public class Calendar extends Applet
{
int days[] = { 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };
String week[] = {"Sun","Mon","Tues","Wed","Thur","Fri","Sat"};
String month[] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
Date d;
TextField tf;
Button but;
date dt;
public void init()
{
setLayout(null);
setBackground(Color.white);
tf = new TextField();
but = new Button("Ok");
but.reshape(370,500,75,25);
tf.reshape(230,500,120,25);
add(tf); add(but);
d = new Date();
}
public boolean action(Event e , Object o)
{
if(o.equals("Ok"))
{
String str = tf.getText();
dt = new date();
if( dt.parseDate(str) )
{
d = new Date( (dt.yy-1900) ,(dt.mm-1),1);
repaint();
}
else
{
d = new Date();
repaint();
}
}
return true;
}
public void paint(Graphics g)
{
g.setColor(Color.green);
g.fillRect(50,30,550,30);
g.setColor(new Color(176,176,176));
for(int j=0;j<=360;j+=60)
for(int i=0;i<560;i+=80)
g.fillRect(50+i,80+j,70,50);
g.setColor(Color.black);
Font f = new Font("TimesRoman",Font.BOLD,20);
g.setFont(f);
g.drawString("Any Date (mm/yy):",50,520);
for(int i=0;i<560;i+=80)
g.drawString(week[i/80],70+i,110);
int m = d.getMonth();
Date nd = new Date(d.getYear(),d.getMonth(),1);
g.drawString(month[m],280,50);
int date = nd.getDay();
if( nd.getYear()%4==0 )
days[1] = 29;
int row=0; int col= date * 80;
for(int i=1;i<=days[m];i++)
{
if(col>480)
{
col = 0;
row+=60;
}
g.drawString(""+i,col+75,row+170);
if( i == d.getDate())
{
g.setColor(Color.red);
g.drawString(""+i,col+75,row+170);
}
col+=80;
g.setColor(Color.black);
}
}
}
class date
{
String mm_string,yy_string;
int yy;
int mm;
boolean parseDate(String s)
{
StringTokenizer st = new StringTokenizer(s,"/");
if( st.countTokens() != 2 )
{
return false;
}
else
{
mm_string = st.nextToken();
yy_string = st.nextToken();
try
{
mm = Integer.parseInt(mm_string);
yy = Integer.parseInt(yy_string);
}catch(NumberFormatException nfe)
{
return false;
}
if( mm > 12 || yy < 1900 )
{
return false;
}
}
return true;
}
}