////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function getMousePos(E){

  	var pos = new Object();
    
	with(E){
		pos.x = clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		pos.y = clientY + document.body.scrollTop  + document.documentElement.scrollTop;
	} // end with


   return(pos);

} // end function getMousePos

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function getMonthTable(Jahr, Monat, InputElement){
	
	var Months    = new Array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
	var WeekDays  = new Array("SO", "MO", "DI", "MI", "DO", "FR" ,"SA");
		
	with(new Date(Jahr, Monat, 1)){
		var Month       = getMonth();  //Monat numerisch, 0 indiziert
		var Day         = getDay();   //Wochentag des ersten Tages im Monat,  0 indiziert
	} // end with
	
	var DaysOfMonth = new Date(Jahr, Monat+1, 0).getDate();	
	var Calandar    = new Array(42);
	
	var index     = Day;
	var RealMonat = parseInt(Monat) + 1;
	var parameter = new Array(Jahr, RealMonat, 0, "'" + InputElement + "'");
	var onclick   = '';
	
	var styleclass;
	for(var i = 1; i <= DaysOfMonth; i++){
		styleclass = '';
		
		if(new Date(Jahr, Monat, i+1).getTime() >= new Date().getTime()){
			
			parameter[2] = i;
			onclick       = 'onClick="setDay(' + parameter.join(",") + ')"';
			styleclass    = 'clickable';

		} // end if 
		
		Calandar[index] = '<input class = "' + styleclass + '" ' + onclick + ' size="1" type="text" value="' + i + '" readonly/>';
		index++;
	
	}//end for
	
	Calandar[index] = '<input class = "calendar"  style="visibility: hidden; diplay:block;" size="1" type="text" value="" readonly/>';
	Calandar[41]    = '<input class = "calendar"  style="visibility: hidden; diplay:block;" size="1" type="text" value="" readonly/>';
	
	var rows = '';
	for (var i = 0; i < Calandar.length; i+=7){
  		
		rows+= '<tr class="calendar">';
		rows+=	'<td class="calendar_sunday" >';
  		rows+= 		Calandar.slice(i,i+7).join('</td><td class="calendar">');
		rows+= 	'</td>';
		rows+= '</tr>';
  
	} // end for

	var MonatPrev = (Monat == 0) ? 11        : Monat - 1;
	var JahrPrev  = (Monat == 0) ? Jahr - 1  : Jahr;
	
	var MonatNext = (Monat == 11) ? 0        : Monat + 1;
	var JahrNext  = (Monat == 11) ? Jahr + 1 : Jahr;
	
	var action = new Array("Next", "Prev");
	
	action["Next"] = '<a class="calendar"  onClick="setNewMonthTable(' + JahrNext + ', ' + MonatNext + ', \'' + InputElement +'\')">vor</a>';
	action["Prev"] = '<a class="calendar"  onClick="setNewMonthTable(' + JahrPrev + ', ' + MonatPrev + ', \'' + InputElement +'\')">zurück</a>';
		
	var table = '';
		table+= '<table class="calendar" border="0" cellpadding="2" cellspacing="2">';
		table+= '<tr>';
		table+= 	'<th class="calendar" colspan="2" align="left">' + action["Prev"] + '</th>';
		table+=		'<th class="calendar" colspan="3" align="center">' + Months[Month] +"<br />"+ Jahr+'</th>';
		table+=		'<th class="calendar" colspan="2" align="right">' + action["Next"] + '</th>';
		table+=	'</tr>';
		table+= '<tr class="calendar">';
		table+= 	'<td class="calendar_sunday" align="center">';
		table+= 		WeekDays.join('</td><td  align="center">');
		table+=	 	'</td>';
		table+=	'</tr>';
		table+= rows;
		table+= '<tr class="calendar">';
		table+= 	'<td class="calendar" colspan="7" align="right" >';
		table+= 		'<a class="calendar"  onClick="closeCalendar()">schliessen</a>';
		table+= 	'</td>';
		table+=	'</tr>';
		table+= '</table>';
	
	return(table);
	
} // end function 


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function setNewMonthTable(jahr, monat, InputElement){
	
	document.getElementById("calendar").innerHTML = getMonthTable(jahr, monat, InputElement);
		
} // end function

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function setDay(Jahr, Monat, Tag, InputElement){
	
	document.getElementsByName(String(InputElement))[0].value = new Array(Tag, Monat, Jahr).join(".");
	closeCalendar();
	
}// end function setDate

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function closeCalendar(){

	document.getElementById("calendar").innerHTML = "";	
	
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function openCalendar(Ereignis, InputElement){
  
	if (Ereignis){
		
		with(getMousePos(Ereignis)){
		
			document.getElementById("calendar").style.left = x + 0 + "px";
    		document.getElementById("calendar").style.top  = y + 0 + "px";
		
		} // end with
		
		var jetzt = new Date();
		setNewMonthTable(jetzt.getFullYear(), jetzt.getMonth(), InputElement);
		
	} // end if
	
} // end function 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

