function calendar()
{
	this.DatumAktuell=new Date();
	this.JahrAktuell=this.DatumAktuell.getFullYear();
	this.MonatAktuell=this.DatumAktuell.getMonth();
	this.Wochentage=new Array("So","Mo","Di","Mi","Do","Fr","Sa");
	this.Monatsnamen=new Array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni","Juli", "August", "September", "Oktober", "November", "Dezember");
	this.firstday=new Date(this.JahrAktuell, this.MonatAktuell, 1);
	this.dayspermonth = [31,28,31,30,31,30,31,31,30,31,30,31];
	this.createcalendar=function()
	{
		start=0;
		while(start<42)
		{
			document.getElementById('day_'+start).innerHTML='';
			start++;
		}
		momtag=this.firstday.getDay();
		tag=1;
		if(momtag==0){start=7;}
		if(momtag==1){start=1;}
		if(momtag==2){start=2;}
		if(momtag==3){start=3;}
		if(momtag==4){start=4;}
		if(momtag==5){start=5;}
		if(momtag==6){start=6;}
		jahr=new Date(this.firstday.getFullYear(), 0, 1);
		woche = Math.ceil((this.firstday.getTime() - jahr) / (7 * 24 * 60 * 60 * 1000));
		maxtage=this.dayspermonth[this.MonatAktuell]+1;
		weeks=1;
		while(tag<maxtage)
		{
			if(tag/7==Math.round(tag/7)){weeks++;}
			document.getElementById('day_'+start).innerHTML=tag;
			tag++;
			start++;
		}
		document.getElementById('currentmonth').innerHTML=this.Monatsnamen[this.MonatAktuell]+"<br>"+this.JahrAktuell;
	}
	
	this.nextMonth=function()
	{
		this.MonatAktuell++;
		if(this.MonatAktuell>11)
		{
			this.MonatAktuell=0;
			this.JahrAktuell++;
		}
		this.firstday=new Date(this.JahrAktuell, this.MonatAktuell, 1);
		this.createcalendar();
	}
	this.nextYear=function()
	{
		this.JahrAktuell++;
		this.firstday=new Date(this.JahrAktuell, this.MonatAktuell, 1);
		this.createcalendar();
	}
	this.lastMonth=function()
	{
		this.MonatAktuell--;
		if(this.MonatAktuell<0)
		{
			this.MonatAktuell=11;
			this.JahrAktuell--;
		}
		this.firstday=new Date(this.JahrAktuell, this.MonatAktuell, 1);
		this.createcalendar();
	}
	this.lastYear=function()
	{
		this.JahrAktuell--;
		this.firstday=new Date(this.JahrAktuell, this.MonatAktuell, 1);
		this.createcalendar();
	}
	
	this.daychosen=function(value,target)
	{
		if(value != "")
		{
			value=value+"."+(this.MonatAktuell+1)+"."+this.JahrAktuell;
			document.getElementById(target).value = value;
		}
		var cal = document.getElementById('cal');
		document.getElementById('cal').parentNode.removeChild(cal);
		document.getElementById('mask').style.display='none';
	}
	this.closecalendar=function()
	{
		var cal = document.getElementById('cal');
		if(!cal){return false;}
		document.getElementById('cal').parentNode.removeChild(cal);
		document.getElementById('mask').style.display='none';
	}
	
	this.createcalendargrid=function(el)
	{
		var id = el.id;
		grid="";
		grid+='<table width="100%"><tr>';
		grid+='<th onclick="core.app.calendar.lastYear();" class="cal_headline">&lt;&lt;</th>';
		grid+='<th onclick="core.app.calendar.lastMonth();" class="cal_headline">&lt;</th>';
		grid+='<th id="currentmonth" colspan="3" class="cal_weekday">&lt;</th>';
		grid+='<th onclick="core.app.calendar.nextMonth();" class="cal_headline">&gt;</th>';
		grid+='<th onclick="core.app.calendar.nextYear();" class="cal_headline">&gt;&gt;</th></tr><tr>';
		for(var x = 0;x<this.Wochentage.length;x++)
		{
			grid+='<th class="cal_weekday">'+this.Wochentage[x]+'</th>';
		}
		grid+='</tr>';
		var z=0;
		for(var x = 0;x<7;x++)
		{
			grid+='<tr>';
			for(var y = 0;y<7;y++)
			{
				grid+='<td onclick="core.app.calendar.daychosen(this.innerHTML,\''+id+'\');" id="day_'+z+'" class="'+(y==7?'cal_sunday':'cal_day')+'"></td>'
				z++;
			}
			grid+='</tr>';
		}
		grid+='</table>';
		return grid;
	}	
}
