//<APPLET code="p7.class" width=900 height=900></APPLET>
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.util.*;
import java.awt.event.*;


public class p7 extends Applet{

	Calendar cal;
	String y, m, d, w;
	int t_year, t_month, t_day;
	int year, month, day, week;
	int temp;

	public void init(){
		cal = Calendar.getInstance();
		t_year = cal.get(Calendar.YEAR);
		t_month = cal.get(Calendar.MONTH);
		t_day = cal.get(Calendar.DAY_OF_MONTH);
		getdate(t_year, t_month, t_day);
		addMouseListener(new MouseControl());
	}

	public void paint(Graphics g){
		g.setColor(Color.white);
		g.fillRect(0,0,900,1000);
		g.setFont(new Font("Times New Roman", Font.ITALIC, 18));
		g.setColor(Color.blue);
		g.drawString("Made by shinsoku", 685, 20);
		getdate(year, month, day);
		g.setFont(new Font("Times New Roman", Font.BOLD, 20));
		g.setColor(Color.green);
		g.drawString("Year "+ y + " Calender", 370, 20);
		
		month=0;
		int x_point=20, y_point=50;
		
		for(int i=1;i<=12;i++){
			if(x_point>900){x_point=20; y_point+=200;}
			paintinit(x_point, y_point, g);
			x_point += 300;
		}
		g.setFont(new Font("MS Gothic", Font.PLAIN, 20));
		g.setColor(Color.black);		
		g.drawString("Previous << [Left Click!]  [Right Click!] >> Next", 230, y_point+230);
		year--;
	}

	public class MouseControl extends MouseAdapter {
		public void mouseClicked(MouseEvent e) {
			int btn = e.getButton();
			if(btn==1){year--;}
			else if(btn==3){year++;}
			repaint();
		}
	}

	public void getdate(int year_, int month_, int day_){
		cal = Calendar.getInstance();
		cal.set(year_, month_, day_);
		year = cal.get(Calendar.YEAR);
		month = cal.get(Calendar.MONTH);
		day = cal.get(Calendar.DAY_OF_MONTH);
		week = cal.get(Calendar.DAY_OF_WEEK);
		
		y = Integer.toString(year);
		switch(month){
			case(0): m = "January"; break;
			case(1): m = "February"; break;
			case(2): m = "March"; break;
			case(3): m = "April"; break;
			case(4): m = "May"; break;
			case(5): m = "June"; break;
			case(6): m = "July"; break;
			case(7): m = "August"; break;
			case(8): m = "September"; break;
			case(9): m = "Octorber"; break;
			case(10): m = "November"; break;
			case(11): m = "December"; break;
			default: m = "Error!";
		}
		if(day/10==0)
			d = " " + Integer.toString(day);
		else
			d = Integer.toString(day);
	}
	
	
	void paintinit(int x_point, int y_point, Graphics g){
		String str;
		int xtemp = x_point, ytemp = y_point;

		getdate(year, month, day);
		g.setFont(new Font("Times New Roman", Font.ITALIC, 20));
		g.setColor(Color.blue);
		y_point += 10;
		g.drawString(m + "   " + y, x_point, y_point);
		y_point += 30;
		g.setFont(new Font("MS Gothic", Font.PLAIN, 12));
		g.setColor(Color.red);
		g.drawString("Sun",x_point,y_point);
		g.setColor(Color.black);
		g.drawString("Mon",x_point+40,y_point);
		g.drawString("Tue",x_point+80,y_point);
		g.drawString("Wed",x_point+120,y_point);
		g.drawString("Thu",x_point+160,y_point);
		g.drawString("Fri",x_point+200,y_point);
		g.setColor(Color.blue);
		g.drawString("Sat",x_point+240,y_point);

		y_point += 20;
		g.setFont(new Font("MS Gothic", Font.PLAIN, 15));
		temp = month;
		day = 1;
		getdate(year, month, day);
		for(int i=1; i<week; i++){
			x_point += 40;
		}

		while(month==temp){
			if(x_point > xtemp+240){
				y_point += 20;
				x_point = xtemp;
			}
			if(year==t_year && month==t_month && day==t_day){g.setColor(Color.green);}
			else if(week==1){g.setColor(Color.red);}
			else if(week==7){g.setColor(Color.blue);}
			else{g.setColor(Color.black);}
			g.drawString(d,x_point,y_point);
			x_point += 40;
			day++;
			getdate(year, month, day);
		}
	}

}
