/*
-- TERMINKALENDER --
Stellt Funktionen für den integrierten Terminkalender bereit.
*/

// *** VARIABLEN ***

// Das aktuelle Jahr
var currentYear = 1970;

// Der aktuelle Monat
var currentMonth = 1;

// Cache-Variable, um bereits geladene Tage nicht mehr vom Server abzurufen
var terminCache = new Array();

// Legt fest, ob die Terminbox bereits sichtbar ist
var terminVisible = false;


// *** FUNKTIONEN ***

// Lädt den angegeben Monat und zeigt dessen Tage an
// Parameter:
// -> year: Das Jahr, aus dem der Monat geladen werden soll
// -> month: Die Nummer des Monats; Januar ist 1, Dezember 12
function show_month(year, month)
{
	// Element abrufen
	var elem = document.getElementById("terminkalender");
	
	// Kalenderwert per SJAX-Request bestimmen
	var wert = SJAXRequest(URL_START + "ajax.php?action=get_month&year=" + year + "&month=" + month, "get_month");
	
	// Kalendermonat anzeigen
	elem.innerHTML = wert;
	
	// Aktuelle Position merken
	currentYear = year;
	currentMonth = month;
}

// Lädt die Termine eines einzelnen Tags und zeigt sie in einer kleinen Box neben dem Mauszeiger an
// Parameter:
// -> tagNr: Die Nummer des Tags im Monat (1-basiert)
// -> click: Legt fest, ob ein Klick stattfand oder nur die Box verschoben werden soll
// -> event: Das Ereignisobjekt des Aufrufs, um die Mausposition zu ermitteln
function show_day(tagNr, click, event)
{
	if(tagNr != 0 && click == 1 && terminVisible == false)
	{
		// Wert abrufen
		var wert = "";
		if(!terminCache[currentYear + "" + currentMonth + "" + tagNr])
		{
			wert = SJAXRequest(URL_START + "ajax.php?action=get_day&year=" + currentYear + "&month=" + currentMonth + "&day=" + tagNr, "get_day");
			
			// Cachen
			terminCache[currentYear + "" + currentMonth + "" + tagNr] = wert;
		}
		else
		{
			wert = terminCache[currentYear + "" + currentMonth + "" + tagNr];
		}
		
		// Element erstellen
		var elem = document.createElement("div");
		elem.className = "tagBox";
		elem.id = "terminTagBox";
		
		// Element an Terminkalender-DIV hängen
		document.getElementById("terminkalender").appendChild(elem);
		
		// Wert zuweisen
		elem.innerHTML = wert;
		
		// Box ausrichten
		var x = event.clientX - elem.offsetWidth - 5;
		var y = event.clientY + 20;
		elem.style.left = x + "px";
		elem.style.top = y + "px";
		
		// Aktuellen Termin merken
		terminVisible = tagNr;
	}
	else if(tagNr != 0 && click == 0 && terminVisible != false) // Box verschieben
	{
		// Box abrufen
		var elem = document.getElementById("terminTagBox");
		
		// Box ausrichten
		var x = event.clientX - elem.offsetWidth - 5;
		var y = event.clientY + 20;
		elem.style.left = x + "px";
		elem.style.top = y + "px";
	}
	else if(tagNr == 0 && terminVisible != false) // Verstecken
	{
		// Box abrufen
		var elem = document.getElementById("terminTagBox");
		
		// Box löschen
		elem.parentNode.removeChild(elem);
		
		// Terminvariable zurücksetzen
		terminVisible = false;
	}
}


// *** PROZEDURALER BEREICH ***

// Laden des aktuellen Monats
/*
var now = new Date();
show_month(now.getFullYear(), (now.getMonth() + 1));
*/
