package time;
import java.util.*;
import java.lang.*;
public class Time{

	private int day, hour, minute;

	private Time(int d, int h, int m){
		day=d;
		hour=h;
		minute=m;
	}

//3ICE: Nem így kellett:
//	public static final enum Day {
//		MONDAY, TUESDAY, WEDNESDAY,
//		THURSDAY, FRIDAY, SATURDAY,
//		SUNDAY}

	public static final int MONDAY=0;
	public static final int TUESDAY=1;
	public static final int WEDNESDAY=2;
	public static final int THURSDAY=3;
	public static final int FRIDAY=4;
	public static final int SATURDAY=5;
	public static final int SUNDAY=6;

	public static Time create(int d, int h, int m){
		if(d<0||d>6 || h<0||h>23 || m<0||m>59)return null;
		else return new Time(d,h,m);
	}

	public boolean isSame(Time that){
		return (this.day==that.day && this.hour==that.hour && this.minute==that.minute);
	}

	public boolean before(Time that){
		return this.day*1000+this.hour*100+this.minute < that.day*1000+that.hour*100+that.minute;
	}

	public boolean between(Time a, Time b){//3ICE: Használnom kellett volna a before-t...
		//UPDATE: Feltételezhetjük, hogy a<b minden esetben. Már mindegy, én megírtam mindkét irányba.
		return this.day*1000+this.hour*100+this.minute > a.day*1000+a.hour*100+a.minute && this.day*1000+this.hour*100+this.minute < b.day*1000+b.hour*100+b.minute ||
		this.day*1000+this.hour*100+this.minute < a.day*1000+a.hour*100+a.minute && this.day*1000+this.hour*100+this.minute > b.day*1000+b.hour*100+b.minute;
	}
	public String show(){
		String r="";
		switch(day){
			case 0:r+="MON";break;
			case 1:r+="TUE";break;
			case 2:r+="WED";break;
			case 3:r+="THU";break;
			case 4:r+="FRI";break;
			case 5:r+="SAT";break;
			case 6:r+="SUN";break;
		}
		r+=" ";
		//if(hour<10)r+="0";
		r+=hour;
		r+=":";
		r+=minute;
		if(minute==00)r+="0";
		return r;
	}
	public static Time parseTime(String s){
		Scanner sc=new Scanner(s);
		sc.useDelimiter(" ");
		String day;
		if(sc.hasNext())day=sc.next();
		else return null;
		int d=-1;
		switch(day){
			case "MON":d=0;break;
			case "TUE":d=1;break;
			case "WED":d=2;break;
			case "THU":d=3;break;
			case "FRI":d=4;break;
			case "SAT":d=5;break;
			case "SUN":d=6;break;
		}
		sc.useDelimiter(":");
		int h;
		if(sc.hasNext())h=Integer.parseInt(sc.next().trim());
		else return null;
		int m;
		if(sc.hasNext())m=Integer.parseInt(sc.next().trim());
		else return null;
		return create(d,h,m);
	}
}
