package kalender;
import java.util.*;
import java.text.*;
import java.io.*;

public class Bruger {
	private SimpleDateFormat månedFormat;
	private SimpleDateFormat dagugedagFormat;

	public void setLocale(Locale sproget) { 
		månedFormat = new SimpleDateFormat("MMMM yyyy",sproget); // f.x. 'maj 2004'
		dagugedagFormat = new SimpleDateFormat("dd EE",sproget); // f.x. '31 ma'
	}

	// tom konstruktør - ellers er det ikke en javabønne
	public Bruger() { setLocale(new Locale("da","DK")); }

	private boolean redigering;
	public void setRediger(boolean r) { redigering = r; }
	public boolean isRediger() { return redigering; }

	private GregorianCalendar dato = new GregorianCalendar();

	public void setMaaned(int m) {
		dato.set(Calendar.MONTH, m);
		dato.set(Calendar.DAY_OF_MONTH, 1); // første dag, så hele måneden ses
	}
	public int getMaaned() { return dato.get(Calendar.MONTH); }

	/** Giver aktuelle måned og år som en streng */
	public String getDatostr() { return månedFormat.format(dato.getTime()); }

	/** Egenkaben dagsprogram er et array af strenge, en for hver dag.
	 *  der kaldes videre i det fælles Kalender-objekt                   */
	public void setDagsprogram(String[] dagsprogram) {
		redigering = false;
		int start = Kalender.instans.beregnIndex(dato);
		for (int i=0; i<dagsprogram.length; i++)
			Kalender.instans.sætDagstekst(start+i,dagsprogram[i]);
	}

	/** Producerer HTML-kode der viser et dagsprogram */
	public void udskrivDagsprogram(Writer out) throws IOException {
		GregorianCalendar kal = (GregorianCalendar) dato.clone();
		int start = Kalender.instans.beregnIndex(kal);
		int antal = 1 + dato.getActualMaximum(Calendar.DAY_OF_MONTH)
		              - dato.get(Calendar.DAY_OF_MONTH);
		for (int i=0; i<antal; i++) {
			String dagugedag = dagugedagFormat.format(kal.getTime());
			out.write("<br>\n<code>");
			out.write(dagugedag);
			out.write("</code> ");
			if (!redigering) out.write(Kalender.instans.hentDagstekst(i+start));
			else out.write("<input type='text' size=30 name='dagsprogram' value='"
				+ Kalender.instans.hentDagstekst(i+start).replace('\'','\"') + "'>");
			kal.roll(Calendar.DAY_OF_MONTH,1);
		}
	}
}