function initCalendar()
{
	//IE kanns mal wieder nicht...
	if ( navigator.userAgent.indexOf("MSIE") > -1 ) return;
	addEvent(document.getElementById("agtoggle"), "click", function()
															{
																toggleWrapperVisibility(document.getElementById("agwrapper")); 
																return false;
															}
	);
	document.getElementById("agtoggle").firstChild.nodeValue = "Agenda auf/-zuklappen";
	addEvent(document.getElementById("caltoggle"), "click", function() 
															{
																toggleWrapperVisibility(document.getElementById("calwrapper")); 
																return false;
															}
	);
	document.getElementById("caltoggle").firstChild.nodeValue = "Kalender auf/-zuklappen";
	
	//den Link für den Kalender erstellen, der die vergangengen Monate/Ereignisse aus- und einblendet
	var calA = document.createElement("a");
	calA.href="#cal";
	calA.id="toggleCalPast";
	calA.className="dontprinturl";
	calA.appendChild(document.createTextNode("vergangene Monate ein-/ausblenden"));
	//den Node finden, vor dem wir den Knoten einhängen
	var targetNode = document.getElementById("cal").nextSibling;
	while (targetNode.nodeType !== document.ELEMENT_NODE)
		targetNode = targetNode.nextSibling;
	document.getElementById("calwrapper").insertBefore(calA, targetNode);
	//den Event noch anhängen
	addEvent(document.getElementById("toggleCalPast"), "click", function()
																{
																	togglePastCalendarMonths();
																	return false;
																}
	);	
	//den Link für die Agenda erstellen, der die vergangenen Ereignisse aus- und einblendet
	var agA = document.createElement("a");
	agA.href="#ag";
	agA.id="toggleAgPast";
	agA.className="dontprinturl";
	agA.appendChild(document.createTextNode("vergangene Ereignisse ein-/ausblenden"));
	//den Node finden, vor dem wir den Knoten einhängen
	var targetNode2 = document.getElementById("ag").nextSibling;
	while (targetNode2.nodeType !== document.ELEMENT_NODE)
		targetNode2 = targetNode2.nextSibling;
	document.getElementById("agwrapper").insertBefore(agA, targetNode2);
	//den Event noch anhängen
	addEvent(document.getElementById("toggleAgPast"), "click", function()
																{
																	togglePastAgendas();
																	return false;
																}
	);
	
	//nun für jeden Link im Kalendar einen click-Event anhängen, sodass
	//sichergestellt ist, dass die Agenda-Ansicht aufgeklappt ist, wenn auf
	//die Links geklickt ist, da ansonsten das Linkziel nicht sichtbar wäre´
	//TODO: prüfen, ob der Termin, der im Kalendar geklickt wurde, in der Ver-
	//gangenheit liegt, und dann dementsprechend die vergangenen Einträge in der
	//Agenda aufklappen
	var calElems = document.getElementsByClassName("calendarlink");
	for ( var i = 0; i < calElems.length; i++ ) {
		addEvent(calElems[i], "click", function() 
										{
											if ( hasClass(document.getElementById("agwrapper"), "special_hidden") ) {
												toggleWrapperVisibility(document.getElementById("agwrapper"));
											}
										}
		);
	}
	//und nun noch per default die Vergangenheit ausblenden :)
	togglePastCalendarMonths();
	togglePastAgendas();
	//die beiden Views per default ausblenden
	//toggleWrapperVisibility(document.getElementById("agwrapper"));	
	//toggleWrapperVisibility(document.getElementById("calwrapper"));
}

function toggleWrapperVisibility(obj)
{
	if ( obj === null ) return;
	if ( hasClass(obj, "special_hidden") )
	{
		(removeClass(obj, "special_hidden"));
	}
	else
	{
		(addClass(obj, "special_hidden"));
	}
}

function togglePastCalendarMonths()
{
	var monthNames = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
	var thisMonth = new Date().getMonth();
	for ( var i = 0; i < thisMonth; i++ )
	{
		var monthObj = document.getElementById("special_cal_"+monthNames[i]);
		if ( hasClass(monthObj, "special_hidden") )
		{
			removeClass(monthObj, "special_hidden");
		}
		else
		{
			addClass(monthObj, "special_hidden");
		}
	}
}

function togglePastAgendas()
{
	var agObj = document.getElementById("agenda");
	for ( var i = 0; i < agObj.childNodes.length; i++ )
	{
		if ( (agObj.childNodes[i].nodeType === document.ELEMENT_NODE) && (agObj.childNodes[i].nodeName.toLowerCase() === "li") )
		{
			var liDate = new Date(parseInt(agObj.childNodes[i].id.substr(5,2),10),
								  (parseInt(agObj.childNodes[i].id.substr(3,2),10)-1),	// - 1, da die monate intern von 0 bis 11 gezählt werden!
								  parseInt(agObj.childNodes[i].id.substr(1,2),10));
			if ( liDate.getFullYear() < 2000 ) 
			{
				liDate.setFullYear(liDate.getFullYear()+100);
			}
			if ( dateIsBeforeToday(liDate) )
			{
				if ( hasClass(agObj.childNodes[i], "special_hidden") )
				{
					removeClass(agObj.childNodes[i], "special_hidden");
				}
				else
				{
					addClass(agObj.childNodes[i],"special_hidden");
				}
			}
		}
	}
}

function dateIsBeforeToday(dateObj)
{
	var today = new Date();
	if ( dateObj.getFullYear() < today.getFullYear() )
	{
		return true;
	}
	else if ( dateObj.getFullYear() === today.getFullYear() )
	{
		if ( dateObj.getMonth() < today.getMonth() )
		{
			return true;
		}
		else if ( dateObj.getMonth() === today.getMonth() )
		{			
			if ( dateObj.getDate() < today.getDate() )
			{
				return true;
			}
		}
	}
	return false;
}

addEvent(window, "load", initCalendar);

